LWXPanelID UnMultiply::XPanel() { static LWXPanelControl con[] = { {CH_UNMU, "Unmultiply", "iBoolean"}, {CH_UBGC, "Background Colour", "color"}, {CH_FL2A, "Flare 2 Alpha", "iBoolean"}, {CH_CALP, "Clip Alpha at Threshold", "iBoolean"}, {CH_CRGB, "Clip RGB at Threshold", "iBoolean"}, {CH_THRS, "Threshold", "float"}, 0 }; static LWXPanelDataDesc def[] = { {CH_UNMU, "Unmultiply", "integer"}, {CH_UBGC, "Background Colour", "color"}, {CH_FL2A, "Flare 2 Alpha", "iBoolean"}, {CH_CALP, "Clip Alpha at Threshold", "integer"}, {CH_CRGB, "Clip RGB at Threshold", "integer"}, {CH_THRS, "Threshold", "float"}, 0 }; // Hints static LWXPanelHint hint[] = { XpLABEL( 0, "Alphachannel tools " __DATE__), XpENABLE_(CH_CALP), XpH(CH_THRS), XpH(CH_CRGB), XpEND, XpENABLE_(CH_UNMU), XpH(CH_UBGC), XpEND, XpDIVADD(CH_UBGC), XpDIVADD(CH_FL2A), XpEND }; LWXPanelFuncs *pan_func = NULL; LWXPanelID pan = NULL; pan_func = ( LWXPanelFuncs * )(*global) (LWXPANELFUNCS_GLOBAL, GFUSE_TRANSIENT); pan = (*pan_func->create) (LWXP_VIEW, con); if (!pan) return NULL; (*pan_func->hint) (pan, 0, hint ); //(*pan_func->describe) (pan, def, lwpp::WrapXPanelImageFilter<UnMultiply>::XGet, lwpp::WrapXPanelImageFilter<UnMultiply>::XSet); (*pan_func->viewInst) (pan, this); (*pan_func->setData) (pan, 0, this); return pan; }
int MaterialMixer::Interface (int version, LWInterface *local, void *serverdata) { static LWXPanelControl ctrl[] = { {MDiff, "Diffuse Mode", "iPopChoice"}, {BDiff, "Diffuse Opacity", "percent-env"}, {MSpec, "Specular Mode", "iPopChoice"}, {BSpec, "Specular Opacity", "percent-env"}, {MRefl, "Reflection Mode", "iPopChoice"}, {BRefl, "Reflection Opacity", "percent-env"}, {MRefr, "Refraction Mode", "iPopChoice"}, {BRefr, "Refraction Opacity", "percent-env"}, {MTran, "Transparency Mode", "iPopChoice"}, {BTran, "Transparency Opacity", "percent-env"}, 0 }; static LWXPanelDataDesc desc[] = { {MDiff, "Diffuse Mode", "integer"}, {BDiff, "Diffuse Opacity", "float-env"}, {MSpec, "Specular Mode", "integer"}, {BSpec, "Specular Opacity", "float-env"}, {MRefl, "Reflection Mode", "integer"}, {BRefl, "Reflection Opacity", "float-env"}, {MRefr, "Refraction Mode", "integer"}, {BRefr, "Refraction Opacity", "float-env"}, {MTran, "Transparency Mode", "integer"}, {BTran, "Transparency Opacity", "float-env"}, }; static LWXPanelHint hints[] = { XpSTRLIST(MDiff, blendModeS), XpSTRLIST(MSpec, blendModeS), XpSTRLIST(MRefl, blendModeS), XpSTRLIST(MRefr, blendModeS), XpSTRLIST(MTran, blendModeS), XpDIVADD(BDiff), XpDIVADD(BSpec), XpDIVADD(BRefl), XpDIVADD(BRefr), XpEND, }; CreateViewXPanel (ctrl, desc, hints); local->panel = LW_XPanel.getID(); return AFUNC_OK; }
int get_user( LWXPanelFuncs *xpanf, double *size, double *center, char *surfname, char *vmapname ) { LWXPanelID panel; int ok = 0; enum { ID_SIZE = 0x8001, ID_CENTER, ID_SURFLIST, ID_VMAPNAME }; LWXPanelControl ctl[] = { { ID_SIZE, "Size", "distance3" }, { ID_CENTER, "Center", "distance3" }, { ID_SURFLIST, "Surface", "iPopChoice" }, { ID_VMAPNAME, "VMap Name", "string" }, { 0 } }; LWXPanelDataDesc cdata[] = { { ID_SIZE, "Size", "distance3" }, { ID_CENTER, "Center", "distance3" }, { ID_SURFLIST, "Surface", "integer" }, { ID_VMAPNAME, "VMap Name", "string" }, { 0 } }; LWXPanelHint hint[] = { XpLABEL( 0, "Box Tutorial Part 3" ), XpDIVADD( ID_SIZE ), XpDIVADD( ID_CENTER ), XpSTRLIST( ID_SURFLIST, surflist ), XpEND }; panel = xpanf->create( LWXP_FORM, ctl ); if ( !panel ) return 0; xpanf->describe( panel, cdata, NULL, NULL ); xpanf->hint( panel, 0, hint ); xpanf->formSet( panel, ID_SIZE, size ); xpanf->formSet( panel, ID_CENTER, center ); xpanf->formSet( panel, ID_SURFLIST, 0 ); xpanf->formSet( panel, ID_VMAPNAME, vmapname ); ok = xpanf->post( panel ); if ( ok ) { double *d; int *i; char *a; d = xpanf->formGet( panel, ID_SIZE ); size[ 0 ] = d[ 0 ]; size[ 1 ] = d[ 1 ]; size[ 2 ] = d[ 2 ]; d = xpanf->formGet( panel, ID_CENTER ); center[ 0 ] = d[ 0 ]; center[ 1 ] = d[ 1 ]; center[ 2 ] = d[ 2 ]; i = xpanf->formGet( panel, ID_SURFLIST ); strcpy( surfname, surflist[ *i ] ); a = xpanf->formGet( panel, ID_VMAPNAME ); strcpy( vmapname, a ); } xpanf->destroy( panel ); return ok; }
/* ====================================================================== Interface() ====================================================================== */ int hotdm::Interface( long version, LWInterface *local, void *serverData ) { UNUSED(version); UNUSED(serverData); static LWXPanelControl ctrl[] = { {ID_RESO, "Resolution", "iSliderText"}, {ID_GLSC, "Global Scale", "distance-env"}, {ID_WAVH, "Wave Height", "distance-env"}, {ID_SWAV, "Shortest Wave", "distance-env"}, {ID_DCHP, "Use Choppiness", "iBoolean"}, {ID_CHOP, "Choppiness", "distance-env"}, {ID_WSPD, "Wind Speed (m/s)", "float-env"}, {ID_WDIR, "Wind Direction (º)", "angle-env"}, {ID_WALG, "Wind Align", "float-env"}, {ID_DREF, "Damp Reflections", "float-env"}, {ID_ODEP, "Ocean Depth", "distance-env"}, {ID_SEED, "Seed", "integer"}, {ID_INTP, "Catmull-Rom Interpolation", "iBoolean"}, {ID_PRES, "Presets", "vPopCmd"}, /* This DOESNT work for displacement plugins, But left the code to see how other controls can be done */ // {ID_NORM, "Do Normals", "iBoolean"}, // {ID_JACB, "Jacobian", "iBoolean"}, { 0 } }; static LWXPanelDataDesc desc[] = { {ID_RESO, "Resolution", "integer"}, {ID_GLSC, "Global Scale", "distance-env"}, {ID_WAVH, "Wave Height", "distance-env"}, {ID_SWAV, "Shortest Wave", "distance-env"}, {ID_DCHP, "Use Choppiness", "integer"}, {ID_CHOP, "Choppiness", "distance-env"}, {ID_WSPD, "Wind Speed (m/s)", "float-env"}, {ID_WDIR, "Wind Direction (º)", "angle-env"}, {ID_WALG, "Wind Align", "float-env"}, {ID_DREF, "Damp Reflections", "float-env"}, {ID_ODEP, "Ocean Depth", "distance-env"}, {ID_SEED, "Seed", "integer"}, {ID_INTP, "Catmull-Rom Interpolation", "integer"}, {ID_PRES, "Presets", "integer"}, /* This DOESNT work for displacement plugins, But left the code to see how other controls can be done */ // {ID_NORM, "Do Normals", "integer"}, // {ID_JACB, "Jacobian", "integer"}, { 0 } }; static LWXPanelHint hints[] = { XpLABEL( 0, "HOT Ocean Toolkit" ), // Enable Use Choppiness and Chopinnes controls XpENABLE_(ID_DCHP),XpH(ID_CHOP),XpEND, /* This DOESNT work for displacement plugins, But left the code to see how other controls can be done */ // XpENABLE_MAP_(ID_DCHP, nrm_map), XpH(ID_NORM),XpEND, XpDIVADD( ID_GLSC ), //Separator after Global Scale XpDIVADD( ID_SWAV ), XpDIVADD( ID_CHOP ), XpDIVADD( ID_WALG ), XpDIVADD( ID_ODEP ), XpDIVADD( ID_INTP ), XpMIN( ID_RESO, 1 ), // Resolution XpMAX( ID_RESO, 12 ), XpSTEP( ID_RESO, 1 ), XpMIN( ID_GLSC, 0 ), // Global Scale XpMAX( ID_GLSC, 5000000 ), XpSTEP( ID_GLSC, 1 ), XpMIN( ID_WAVH, 0 ), // Wave Height XpMAX( ID_WAVH, 5000 ), XpSTEP( ID_WAVH, 1 ), XpMIN( ID_SWAV, 0 ), // Shortest Wave XpMAX( ID_SWAV, 500 ), XpSTEP( ID_SWAV, 1 ), XpMIN( ID_CHOP, 0 ), // Choppiness XpMAX( ID_CHOP, 50 ), XpSTEP( ID_CHOP, 1 ), XpMIN( ID_WSPD, 0 ), // Wind Speed XpMAX( ID_WSPD, 50000 ), XpSTEP( ID_WSPD, 1 ), XpMIN( ID_WALG, 0 ), // Wind Align XpMAX( ID_WALG, 10 ), XpSTEP( ID_WALG, 1 ), XpMIN( ID_DREF, 0 ), // Damp Reflections XpMAX( ID_DREF, 1 ), XpSTEP( ID_DREF, 1 ), XpMIN( ID_ODEP, 0 ), // Ocean Depth XpMAX( ID_ODEP, 50000 ), XpSTEP( ID_ODEP, 1 ), XpEND }; // end hint[] CreateViewXPanel (ctrl, desc, hints); Preset.Setup(LW_XPanel, ID_PRES); local->panel = LW_XPanel.getID(); return AFUNC_OK; }