GLUI_Rollout *GLUI::add_rollout_to_panel(GLUI_Panel *panel,char *name,int open) { GLUI_Rollout *rollout; rollout = new GLUI_Rollout; if ( rollout ) { rollout->set_name( name ); rollout->user_id = -1; rollout->int_val = GLUI_PANEL_EMBOSSED; if ( NOT open ) { rollout->is_open = false; rollout->h = GLUI_DEFAULT_CONTROL_HEIGHT + 7; } add_control( panel, rollout ); return rollout; } else { return NULL; } }
void createInterface() { GLUI *glui = GLUI_Master.create_glui("RGBD Effects", 0, 1050, 100); //Effect Selection GLUI_Panel *effectSelectionPanel = glui->add_panel("Effect"); GLUI_RadioGroup *effectRadioGroup = glui->add_radiogroup_to_panel(effectSelectionPanel, &selectedEffect, -1, gluiCallback); glui->add_radiobutton_to_group(effectRadioGroup, "Maps"); glui->add_radiobutton_to_group(effectRadioGroup, "Fog"); glui->add_radiobutton_to_group(effectRadioGroup, "Depth of Field"); glui->add_radiobutton_to_group(effectRadioGroup, "Relighting"); glui->add_radiobutton_to_group(effectRadioGroup, "Cartoon Shading"); //Depth range glui->add_statictext(""); GLUI_Panel *depthRangePanel = glui->add_panel("Depth Range"); GLUI_Checkbox *adaptiveDepthRangeCheckBox = glui->add_checkbox_to_panel(depthRangePanel, "Adaptive ", &adaptiveDepthRange, -1, gluiCallback); GLUI_Spinner *nearPlaneSpinner = glui->add_spinner_to_panel(depthRangePanel, "Near Plane ", GLUI_SPINNER_FLOAT, &nearPlane, -1, gluiCallback); nearPlaneSpinner->set_float_limits(10, 2000); GLUI_Spinner *farPlaneSpinner = glui->add_spinner_to_panel(depthRangePanel, "Far Plane ", GLUI_SPINNER_FLOAT, &farPlane, -1, gluiCallback); farPlaneSpinner->set_float_limits(10, 2000); //View maps GLUI_Rollout *mapRollout = glui->add_rollout("Maps", 0); mapRollout->set_w(218); glui->add_statictext_to_panel(mapRollout, "")->set_w(200); GLUI_RadioGroup *mapRadioGroup = glui->add_radiogroup_to_panel(mapRollout, &mapEffect->selectedMap, -1, gluiCallback); glui->add_radiobutton_to_group(mapRadioGroup, "Colour"); glui->add_radiobutton_to_group(mapRadioGroup, "Depth"); glui->add_radiobutton_to_group(mapRadioGroup, "Normals"); GLUI_Panel* mapPreblurPanel = glui->add_panel_to_panel(mapRollout, "Pre-processing"); GLUI_RadioGroup *mapPreblurRadioGroup = glui->add_radiogroup_to_panel(mapPreblurPanel, &mapEffect->selectedPreFilter, -1, gluiCallback); glui->add_radiobutton_to_group(mapPreblurRadioGroup, "None"); glui->add_radiobutton_to_group(mapPreblurRadioGroup, "Blur"); glui->add_radiobutton_to_group(mapPreblurRadioGroup, "Bilateral"); GLUI_Spinner *mapPreblurPassesSpinner = glui->add_spinner_to_panel(mapPreblurPanel, "Filter Passes ", GLUI_SPINNER_INT, &mapEffect->preblurFilterPasses, -1, gluiCallback); mapPreblurPassesSpinner->set_int_limits(0, 10); GLUI_Spinner *mapPreblurKernelSizeSpinner = glui->add_spinner_to_panel(mapPreblurPanel, "Kernel Size ", GLUI_SPINNER_INT, &mapEffect->preblurKernelSize, -1, gluiCallback); mapPreblurKernelSizeSpinner->set_int_limits(1, 100); GLUI_Spinner *mapPreblurSigmaSpinner = glui->add_spinner_to_panel(mapPreblurPanel, "Sample Deviation ", GLUI_SPINNER_FLOAT, &mapEffect->preblurSigma, -1, gluiCallback); mapPreblurSigmaSpinner->set_float_limits(0.001, 0.15); //FOG GLUI_Rollout *fogRollout = glui->add_rollout("Fog", 0); fogRollout->set_w(218); glui->add_statictext_to_panel(fogRollout, "")->set_w(200); GLUI_Spinner *fogDensitySpinner = glui->add_spinner_to_panel(fogRollout, "Density ", GLUI_SPINNER_FLOAT, &fogEffect->fogDensity, -1, gluiCallback); fogDensitySpinner->set_float_limits(0.0, 20.0); GLUI_Spinner *fogAmountSpinner = glui->add_spinner_to_panel(fogRollout, "Amount ", GLUI_SPINNER_FLOAT, &fogEffect->fogAmount, -1, gluiCallback); fogAmountSpinner->set_float_limits(0.0, 1); glui->add_statictext_to_panel(fogRollout, ""); GLUI_Panel* fogPreblurPanel = glui->add_panel_to_panel(fogRollout, "Preblur"); GLUI_Spinner *fogPreblurPassesSpinner = glui->add_spinner_to_panel(fogPreblurPanel, "Filter Passes ", GLUI_SPINNER_INT, &fogEffect->preblurFilterPasses, -1, gluiCallback); fogPreblurPassesSpinner->set_int_limits(0, 10); GLUI_Spinner *fogPreblurKernelSizeSpinner = glui->add_spinner_to_panel(fogPreblurPanel, "Kernel Size ", GLUI_SPINNER_INT, &fogEffect->preblurKernelSize, -1, gluiCallback); fogPreblurKernelSizeSpinner->set_int_limits(1, 100); GLUI_Spinner *fogPreblurSigmaSpinner = glui->add_spinner_to_panel(fogPreblurPanel, "Sample Deviation ", GLUI_SPINNER_FLOAT, &fogEffect->preblurSigma, -1, gluiCallback); fogPreblurSigmaSpinner->set_float_limits(0.001, 0.15); glui->add_statictext_to_panel(fogRollout, ""); GLUI_Panel* fogColourPanel = glui->add_panel_to_panel(fogRollout, "Colour", GLUI_PANEL_EMBOSSED); GLUI_Spinner *fogColourRedSpinner = glui->add_spinner_to_panel(fogColourPanel, "Red ", GLUI_SPINNER_FLOAT, &fogEffect->fogColourRed, -1, gluiCallback); fogColourRedSpinner->set_float_limits(0.0, 1); GLUI_Spinner *fogColourGreenSpinner = glui->add_spinner_to_panel(fogColourPanel, "Green ", GLUI_SPINNER_FLOAT, &fogEffect->fogColourGreen, -1, gluiCallback); fogColourGreenSpinner->set_float_limits(0.0, 1); GLUI_Spinner *fogColourBlueSpinner = glui->add_spinner_to_panel(fogColourPanel, "Blue ", GLUI_SPINNER_FLOAT, &fogEffect->fogColourBlue, -1, gluiCallback); fogColourBlueSpinner->set_float_limits(0.0, 1); //DEPTH OF FIELD GLUI_Rollout *DOFRollout = glui->add_rollout("Depth of Field", 0); DOFRollout->set_w(218); glui->add_statictext_to_panel(DOFRollout, "")->set_w(200); GLUI_Spinner *distributionSigmaSpinner = glui->add_spinner_to_panel(DOFRollout, "Sample Deviation ", GLUI_SPINNER_FLOAT, &dofEffect->distributionSigma, -1, gluiCallback); distributionSigmaSpinner->set_float_limits(0.001, 0.15); GLUI_Spinner *sampleRadiusSpinner = glui->add_spinner_to_panel(DOFRollout, "Sample Radius ", GLUI_SPINNER_INT, &dofEffect->sampleRadius, -1, gluiCallback); sampleRadiusSpinner->set_int_limits(1, 40); GLUI_Spinner *lensDiameterSpinner = glui->add_spinner_to_panel(DOFRollout, "Aperture Size ", GLUI_SPINNER_FLOAT, &dofEffect->lensDiameter, -1, gluiCallback); lensDiameterSpinner->set_float_limits(0.001, 1); GLUI_Spinner *focalLengthSpinner = glui->add_spinner_to_panel(DOFRollout, "Focal Length ", GLUI_SPINNER_FLOAT, &dofEffect->focalLength, -1, gluiCallback); focalLengthSpinner->set_float_limits(0.001, 1); GLUI_Spinner *focalDepthSpinner = glui->add_spinner_to_panel(DOFRollout, "Focal Depth ", GLUI_SPINNER_FLOAT, &dofEffect->focalPlaneDepth, -1, gluiCallback); focalDepthSpinner->set_float_limits(0.0, 1); glui->add_statictext_to_panel(DOFRollout, ""); GLUI_Panel* DOFPreblurPanel = glui->add_panel_to_panel(DOFRollout, "Preblur"); GLUI_Spinner *DOFPreblurPassesSpinner = glui->add_spinner_to_panel(DOFPreblurPanel, "Filter Passes ", GLUI_SPINNER_INT, &dofEffect->preblurFilterPasses, -1, gluiCallback); DOFPreblurPassesSpinner->set_int_limits(0, 10); GLUI_Spinner *DOFPreblurKernelSizeSpinner = glui->add_spinner_to_panel(DOFPreblurPanel, "Kernel Size ", GLUI_SPINNER_INT, &dofEffect->preblurKernelSize, -1, gluiCallback); DOFPreblurKernelSizeSpinner->set_int_limits(1, 100); GLUI_Spinner *DOFPreblurSigmaSpinner = glui->add_spinner_to_panel(DOFPreblurPanel, "Sample Deviation ", GLUI_SPINNER_FLOAT, &dofEffect->preblurSigma, -1, gluiCallback); DOFPreblurSigmaSpinner->set_float_limits(0.001, 0.15); //Relighting GLUI_Rollout *relightingRollout = glui->add_rollout("Relighting", 0); relightingRollout->set_w(218); glui->add_statictext_to_panel(relightingRollout, "")->set_w(200); glui->add_rotation_to_panel(relightingRollout, "Light Direction", relightingEffect->lightDirection, -1, gluiCallback); GLUI_Panel* relightingPreblurPanel = glui->add_panel_to_panel(relightingRollout, "Pre-processing"); GLUI_RadioGroup *relightingPreblurRadioGroup = glui->add_radiogroup_to_panel(relightingPreblurPanel, &relightingEffect->selectedPreFilter, -1, gluiCallback); glui->add_radiobutton_to_group(relightingPreblurRadioGroup, "None"); glui->add_radiobutton_to_group(relightingPreblurRadioGroup, "Blur"); glui->add_radiobutton_to_group(relightingPreblurRadioGroup, "Bilateral"); GLUI_Spinner *relightingPreblurPassesSpinner = glui->add_spinner_to_panel(relightingPreblurPanel, "Filter Passes ", GLUI_SPINNER_INT, &relightingEffect->preblurFilterPasses, -1, gluiCallback); relightingPreblurPassesSpinner->set_int_limits(0, 10); GLUI_Spinner *relightingPreblurKernelSizeSpinner = glui->add_spinner_to_panel(relightingPreblurPanel, "Kernel Size ", GLUI_SPINNER_INT, &relightingEffect->preblurKernelSize, -1, gluiCallback); relightingPreblurKernelSizeSpinner->set_int_limits(1, 100); GLUI_Spinner *relightingPreblurSigmaSpinner = glui->add_spinner_to_panel(relightingPreblurPanel, "Sample Deviation ", GLUI_SPINNER_FLOAT, &relightingEffect->preblurSigma, -1, gluiCallback); relightingPreblurSigmaSpinner->set_float_limits(0.001, 0.15); GLUI_Rollout* materialRollout = glui->add_rollout_to_panel(relightingRollout, "Material", 0, GLUI_PANEL_EMBOSSED); GLUI_Panel* materialAmbientPanel = glui->add_panel_to_panel(materialRollout, "Ambient", GLUI_PANEL_EMBOSSED); GLUI_Spinner *materialAmbientRedSpinner = glui->add_spinner_to_panel(materialAmbientPanel, "Red ", GLUI_SPINNER_FLOAT, &relightingEffect->materialAmbient[0], -1, gluiCallback); materialAmbientRedSpinner->set_float_limits(0.0, 1); GLUI_Spinner *materialAmbientGreenSpinner = glui->add_spinner_to_panel(materialAmbientPanel, "Green ", GLUI_SPINNER_FLOAT, &relightingEffect->materialAmbient[1], -1, gluiCallback); materialAmbientGreenSpinner->set_float_limits(0.0, 1); GLUI_Spinner *materialAmbientBlueSpinner = glui->add_spinner_to_panel(materialAmbientPanel, "Blue ", GLUI_SPINNER_FLOAT, &relightingEffect->materialAmbient[2], -1, gluiCallback); materialAmbientBlueSpinner->set_float_limits(0.0, 1); GLUI_Panel* materialDiffusePanel = glui->add_panel_to_panel(materialRollout, "Diffuse", GLUI_PANEL_EMBOSSED); GLUI_Spinner *materialDiffuseRedSpinner = glui->add_spinner_to_panel(materialDiffusePanel, "Red ", GLUI_SPINNER_FLOAT, &relightingEffect->materialDiffuse[0], -1, gluiCallback); materialDiffuseRedSpinner->set_float_limits(0.0, 1); GLUI_Spinner *materialDiffuseGreenSpinner = glui->add_spinner_to_panel(materialDiffusePanel, "Green ", GLUI_SPINNER_FLOAT, &relightingEffect->materialDiffuse[1], -1, gluiCallback); materialDiffuseGreenSpinner->set_float_limits(0.0, 1); GLUI_Spinner *materialDiffuseBlueSpinner = glui->add_spinner_to_panel(materialDiffusePanel, "Blue ", GLUI_SPINNER_FLOAT, &relightingEffect->materialDiffuse[2], -1, gluiCallback); materialDiffuseBlueSpinner->set_float_limits(0.0, 1); GLUI_Panel* materialSpecularPanel = glui->add_panel_to_panel(materialRollout, "Specular", GLUI_PANEL_EMBOSSED); GLUI_Spinner *materialSpecularRedSpinner = glui->add_spinner_to_panel(materialSpecularPanel, "Red ", GLUI_SPINNER_FLOAT, &relightingEffect->materialSpecular[0], -1, gluiCallback); materialSpecularRedSpinner->set_float_limits(0.0, 1); GLUI_Spinner *materialSpecularGreenSpinner = glui->add_spinner_to_panel(materialSpecularPanel, "Green ", GLUI_SPINNER_FLOAT, &relightingEffect->materialSpecular[1], -1, gluiCallback); materialSpecularGreenSpinner->set_float_limits(0.0, 1); GLUI_Spinner *materialSpecularBlueSpinner = glui->add_spinner_to_panel(materialSpecularPanel, "Blue ", GLUI_SPINNER_FLOAT, &relightingEffect->materialSpecular[2], -1, gluiCallback); materialSpecularBlueSpinner->set_float_limits(0.0, 1); GLUI_Rollout* lightRollout = glui->add_rollout_to_panel(relightingRollout, "Light", 0, GLUI_PANEL_EMBOSSED); GLUI_Panel* lightAmbientPanel = glui->add_panel_to_panel(lightRollout, "Ambient", GLUI_PANEL_EMBOSSED); GLUI_Spinner *lightAmbientRedSpinner = glui->add_spinner_to_panel(lightAmbientPanel, "Red ", GLUI_SPINNER_FLOAT, &relightingEffect->lightAmbient[0], -1, gluiCallback); lightAmbientRedSpinner->set_float_limits(0.0, 1); GLUI_Spinner *lightAmbientGreenSpinner = glui->add_spinner_to_panel(lightAmbientPanel, "Green ", GLUI_SPINNER_FLOAT, &relightingEffect->lightAmbient[1], -1, gluiCallback); lightAmbientGreenSpinner->set_float_limits(0.0, 1); GLUI_Spinner *lightAmbientBlueSpinner = glui->add_spinner_to_panel(lightAmbientPanel, "Blue ", GLUI_SPINNER_FLOAT, &relightingEffect->lightAmbient[2], -1, gluiCallback); lightAmbientBlueSpinner->set_float_limits(0.0, 1); GLUI_Panel* lightDiffusePanel = glui->add_panel_to_panel(lightRollout, "Diffuse", GLUI_PANEL_EMBOSSED); GLUI_Spinner *lightDiffuseRedSpinner = glui->add_spinner_to_panel(lightDiffusePanel, "Red ", GLUI_SPINNER_FLOAT, &relightingEffect->lightDiffuse[0], -1, gluiCallback); lightDiffuseRedSpinner->set_float_limits(0.0, 1); GLUI_Spinner *lightDiffuseGreenSpinner = glui->add_spinner_to_panel(lightDiffusePanel, "Green ", GLUI_SPINNER_FLOAT, &relightingEffect->lightDiffuse[1], -1, gluiCallback); lightDiffuseGreenSpinner->set_float_limits(0.0, 1); GLUI_Spinner *lightDiffuseBlueSpinner = glui->add_spinner_to_panel(lightDiffusePanel, "Blue ", GLUI_SPINNER_FLOAT, &relightingEffect->lightDiffuse[2], -1, gluiCallback); lightDiffuseBlueSpinner->set_float_limits(0.0, 1); GLUI_Panel* lightSpecularPanel = glui->add_panel_to_panel(lightRollout, "Specular", GLUI_PANEL_EMBOSSED); GLUI_Spinner *lightSpecularRedSpinner = glui->add_spinner_to_panel(lightSpecularPanel, "Red ", GLUI_SPINNER_FLOAT, &relightingEffect->lightSpecular[0], -1, gluiCallback); lightSpecularRedSpinner->set_float_limits(0.0, 1); GLUI_Spinner *lightSpecularGreenSpinner = glui->add_spinner_to_panel(lightSpecularPanel, "Green ", GLUI_SPINNER_FLOAT, &relightingEffect->lightSpecular[1], -1, gluiCallback); lightSpecularGreenSpinner->set_float_limits(0.0, 1); GLUI_Spinner *lightSpecularBlueSpinner = glui->add_spinner_to_panel(lightSpecularPanel, "Blue ", GLUI_SPINNER_FLOAT, &relightingEffect->lightSpecular[2], -1, gluiCallback); lightSpecularBlueSpinner->set_float_limits(0.0, 1); glui->add_statictext_to_panel(relightingRollout, ""); GLUI_Spinner *specularPowerSpinner = glui->add_spinner_to_panel(relightingRollout, "Shininess ", GLUI_SPINNER_FLOAT, &relightingEffect->shininess, -1, gluiCallback); specularPowerSpinner->set_float_limits(0.0, 50); //CARTOON SHADING GLUI_Rollout *cartoonRollout = glui->add_rollout("Cartoon Shading", 0); cartoonRollout->set_w(218); glui->add_statictext_to_panel(cartoonRollout, "")->set_w(200); GLUI_Panel *filteringPanel = glui->add_panel_to_panel(cartoonRollout, "Filtering"); glui->add_statictext_to_panel(filteringPanel, ""); GLUI_RadioGroup *filteringMethodRadioGroup = glui->add_radiogroup_to_panel(filteringPanel, &cartoonEffect->filteringMethod, -1, gluiCallback); glui->add_radiobutton_to_group(filteringMethodRadioGroup, "None"); glui->add_radiobutton_to_group(filteringMethodRadioGroup, "Bilateral"); glui->add_radiobutton_to_group(filteringMethodRadioGroup, "Kuwahara"); glui->add_statictext_to_panel(filteringPanel, ""); glui->add_checkbox_to_panel(filteringPanel, "Quantize Colours", &cartoonEffect->quantize, -1, gluiCallback); //Bilateral. glui->add_statictext_to_panel(filteringPanel, ""); GLUI_Rollout* bilateralRollout = glui->add_rollout_to_panel(filteringPanel, "Bilateral", 0, GLUI_PANEL_EMBOSSED); GLUI_Spinner *bilateralFilterPassesSpinner = glui->add_spinner_to_panel(bilateralRollout, "Filter Passes ", GLUI_SPINNER_INT, &cartoonEffect->bilateralFilterPasses, -1, gluiCallback); bilateralFilterPassesSpinner->set_int_limits(1, 10); GLUI_Spinner *bilateralKernelSizeSpinner = glui->add_spinner_to_panel(bilateralRollout, "Kernel Size ", GLUI_SPINNER_INT, &cartoonEffect->bilateralKernelSize, -1, gluiCallback); bilateralKernelSizeSpinner->set_int_limits(1, 100); GLUI_Spinner *bilateralSigmaSpinner = glui->add_spinner_to_panel(bilateralRollout, "Sample Deviation ", GLUI_SPINNER_FLOAT, &cartoonEffect->bilateralSigma, -1, gluiCallback); bilateralSigmaSpinner->set_float_limits(0.001, 0.15); //Kuwahara. GLUI_Rollout* kuwaharaRollout = glui->add_rollout_to_panel(filteringPanel, "Kuwahara", 0, GLUI_PANEL_EMBOSSED); GLUI_Spinner *kuwaharaFilterPassesSpinner = glui->add_spinner_to_panel(kuwaharaRollout, "Filter Passes ", GLUI_SPINNER_INT, &cartoonEffect->kuwaharaFilterPasses, -1, gluiCallback); kuwaharaFilterPassesSpinner->set_int_limits(1, 10); GLUI_Spinner *kuwaharaKernelSizeSpinner = glui->add_spinner_to_panel(kuwaharaRollout, "Kernel Size ", GLUI_SPINNER_INT, &cartoonEffect->kuwaharaKernelSize, -1, gluiCallback); kuwaharaKernelSizeSpinner->set_int_limits(1, 100); //Edge glui->add_statictext_to_panel(cartoonRollout, ""); GLUI_Panel *edgeDetectionPanel = glui->add_panel_to_panel(cartoonRollout, "Edge Detection"); glui->add_statictext_to_panel(edgeDetectionPanel, ""); GLUI_RadioGroup *edgeMethodRadioGroup = glui->add_radiogroup_to_panel(edgeDetectionPanel, &cartoonEffect->edgeMethod, -1, gluiCallback); glui->add_radiobutton_to_group(edgeMethodRadioGroup, "None"); glui->add_radiobutton_to_group(edgeMethodRadioGroup, "Depth Discontinuity"); glui->add_radiobutton_to_group(edgeMethodRadioGroup, "Sobel Depth"); glui->add_radiobutton_to_group(edgeMethodRadioGroup, "Sobel Colour"); glui->add_statictext_to_panel(edgeDetectionPanel, ""); GLUI_Spinner *edgeThresholdSpinner = glui->add_spinner_to_panel(edgeDetectionPanel, "Threshold ", GLUI_SPINNER_FLOAT, &cartoonEffect->edgeThreshold, -1, gluiCallback); edgeThresholdSpinner->set_float_limits(0.0, 2.0); //glui->add_button("Quit", 0, (GLUI_Update_CB) exit); /** Tell GLUI window which other window to recognize as the main gfx window **/ glui->set_main_gfx_window(window); //GLUI_Master.set_glutIdleFunc(NULL); }
/** Sets up the GLUI window. */ void InitGlui() { //User Input Section GLUI_Panel *UserInput; GLUI_Rollout *UserInputRollout; //GLUI_Rollout * ReadInFileRollout; //Visualization Settings: GLUI_Panel *settings; //Transformation Settings: GLUI_Panel * transformationPanel; GLUI_Rollout * TransformationRollout; GLUI_Rotation *rotation; GLUI_Translation *trans, *scale; //Color Options Settings: GLUI_Rollout * ColorOptions; GLUI_Spinner * backgroundColorSpinnerR; GLUI_Spinner * backgroundColorSpinnerG; GLUI_Spinner * backgroundColorSpinnerB; GLUI_Spinner * boxColorSpinner; //Graphics Options Settings: GLUI_Panel * graphicsOptions; //Graphics Rollouts: GLUI_Panel * CustomSettings; GLUI_Rollout * ArrowSettings; GLUI_Rollout * AnimationSettings; GLUI_Rollout * IsosurfaceSettings; GLUI_Rollout * PointsSettings; GLUI_Rollout * StreamlineSettings; GLUI_Rollout * VectorBlobSettings; GLUI_Rollout * CuttingPlaneSettings; //ObjFileSettings: //GLUI_Panel * ObjFileSettings; //Arrow Settings: GLUI_Spinner * spinArrowLength; GLUI_Spinner * spinNumPoints; GLUI_Spinner * spinMinVector; GLUI_Spinner * spinMaxVector; //GLUI_Spinner * alphaVector; //Isosurface Settings GLUI_Spinner * spinIsoValue; GLUI_Spinner * spinNumContours; GLUI_Spinner * spinIsoResolution; //GLUI_Spinner * spinZPlaneVal; //Streamline Controls: GLUI_Spinner * spinNumStreamlines; //Probe Controls: //GLUI_Panel * probePanel; GLUI_Spinner * ProbeX; GLUI_Spinner * ProbeY; GLUI_Spinner * ProbeZ; //Vector Sheet Controls: //GLUI_Spinner * VectorBlobTime; GLUI_Spinner * VectorBlobXLoc; GLUI_Spinner * VectorBlobYLoc; GLUI_Spinner * VectorBlobZLoc; GLUI_Spinner * VectorBlobXVec; GLUI_Spinner * VectorBlobYVec; GLUI_Spinner * VectorBlobZVec; //Cutting Plane Controls: //GLUI_Spinner * VectorBlobTime; GLUI_Spinner * CuttingPlaneXLoc; GLUI_Spinner * CuttingPlaneYLoc; GLUI_Spinner * CuttingPlaneZLoc; GLUI_Spinner * CuttingPlaneXVec; GLUI_Spinner * CuttingPlaneYVec; GLUI_Spinner * CuttingPlaneZVec; GLUI_Spinner * Tolerence; GLUI_Spinner * ContDist; //dot point animation controls: GLUI_Spinner * dotPointColorSpinnerR; GLUI_Spinner * dotPointColorSpinnerG; //GLUI_Spinner * dotPointColorSpinnerB; //Strings for Sliders: //char tempstr[128]; //char xstr[128]; //char ystr[128]; //char zstr[128]; //char radstr[128]; //char gradstr[128]; //char vecstr[128]; // setup the glui window: glutInitWindowPosition(Framework::instance()->INIT_WINDOW_SIZE + 50, 0); TestGlui = GLUI_Master.create_glui((char *)Framework::instance()->GLUITITLE); TestGlui->add_statictext((char *)Framework::instance()->GLUITITLE); //Here is Where the User Defined UserInputRollout = TestGlui->add_rollout("User Input Options"); UserInput = TestGlui->add_panel_to_panel(UserInputRollout, "User Input Options"); TestGlui->add_checkbox_to_panel(UserInput, "Use Prism Space Definer", &Framework::instance()->usePrism); TestGlui->add_checkbox_to_panel(UserInput, "Use Point Grid", &Framework::instance()->useGrid); Framework::instance()->spaceEditText = TestGlui->add_edittext_to_panel(UserInput, "Space Definer Equation:", GLUI_EDITTEXT_TEXT, Framework::instance()->SpaceDefinerString); Framework::instance()->spaceEditText->set_w(400); Framework::instance()->vectorEditText = TestGlui->add_edittext_to_panel(UserInput,"Vector Definer Equation:", GLUI_EDITTEXT_TEXT, Framework::instance()->VectorDefinerString); Framework::instance()->vectorEditText->set_w(400); GLUI_Panel* buttons = TestGlui->add_panel_to_panel(UserInput, ""); TestGlui->add_column_to_panel(buttons, 0); TestGlui->add_button_to_panel(buttons, "Reset", 0, ((GLUI_Update_CB)MyButtons)); TestGlui->add_column_to_panel(buttons, 0); TestGlui->add_button_to_panel(buttons, "Render", 1, ((GLUI_Update_CB)MyButtons)); TestGlui->add_column_to_panel(buttons, 0); TestGlui->add_button_to_panel(buttons, "Get File", 3, ((GLUI_Update_CB)MyButtons)); //Visualization Settings: TestGlui->add_separator(); settings = TestGlui->add_panel("Visual Settings"); TestGlui->add_column_to_panel(settings, 0); TestGlui->add_checkbox_to_panel(settings, "Axes", &Framework::instance()->AxesOn); TestGlui->add_column_to_panel(settings, 0); TestGlui->add_checkbox_to_panel(settings, "Box", &Framework::instance()->BoxOn); TestGlui->add_column_to_panel(settings,0); TestGlui->add_checkbox_to_panel(settings, "Perspective", &Framework::instance()->WhichProjection); TestGlui->add_column_to_panel(settings, 0); TestGlui->add_checkbox_to_panel(settings, "Intensity Depth Cue", &Framework::instance()->DepthCueOn); //Transformation Settings: TransformationRollout = TestGlui->add_rollout("Transformation", 1); transformationPanel = TestGlui->add_panel_to_panel(TransformationRollout, "Object Transformation"); TestGlui->add_column_to_panel(transformationPanel, 0); rotation = TestGlui->add_rotation_to_panel(transformationPanel, "Rotation", (float *)Framework::instance()->RotMatrix); rotation->set_spin(1.0); rotation->reset(); TestGlui->add_column_to_panel(transformationPanel, 0); scale = TestGlui->add_translation_to_panel(transformationPanel, "Scale", GLUI_TRANSLATION_Y, &Framework::instance()->Scale2); scale->set_speed(0.005f); TestGlui->add_column_to_panel(transformationPanel, 0); trans = TestGlui->add_translation_to_panel(transformationPanel, "Trans XY", GLUI_TRANSLATION_XY, &Framework::instance()->TransXYZ[0]); trans->set_speed(0.05f); TestGlui->add_column_to_panel(transformationPanel, 0); trans = TestGlui->add_translation_to_panel(transformationPanel, "Trans Z", GLUI_TRANSLATION_Z, &Framework::instance()->TransXYZ[2]); trans->set_speed(0.05f); //Color Settings Rollout: TestGlui->add_separator(); ColorOptions = TestGlui->add_rollout("Color Settings", 0); TestGlui->add_checkbox_to_panel(ColorOptions, "Alternate Color Scheme", &Framework::instance()->ColorAlternate, 1, CheckboxCallback); TestGlui->add_separator(); backgroundColorSpinnerR = TestGlui->add_spinner_to_panel(ColorOptions, "Background Color R", GLUI_SPINNER_FLOAT, &Framework::instance()->backgroundColorR); backgroundColorSpinnerR->set_float_limits(0.0, 1.0); backgroundColorSpinnerR ->set_speed(0.05); backgroundColorSpinnerG = TestGlui->add_spinner_to_panel(ColorOptions, "Background Color G", GLUI_SPINNER_FLOAT, &Framework::instance()->backgroundColorG); backgroundColorSpinnerG->set_float_limits(0.0, 1.0); backgroundColorSpinnerG->set_speed(0.05); backgroundColorSpinnerB = TestGlui->add_spinner_to_panel(ColorOptions, "Background Color B", GLUI_SPINNER_FLOAT, &Framework::instance()->backgroundColorB); backgroundColorSpinnerB->set_float_limits(0.0, 1.0); backgroundColorSpinnerB->set_speed(0.05); boxColorSpinner = TestGlui->add_spinner_to_panel(ColorOptions, "Box And Axes Color", GLUI_SPINNER_FLOAT, &Framework::instance()->boxColor); boxColorSpinner->set_float_limits(0.0, 1.0); boxColorSpinner->set_speed(0.05); //Graphics Options Panel: graphicsOptions = TestGlui->add_panel("Grahics Options"); TestGlui->add_column_to_panel(graphicsOptions, 0); TestGlui->add_checkbox_to_panel(graphicsOptions, "Use Arrows", &Framework::instance()->useArrows); TestGlui->add_checkbox_to_panel(graphicsOptions, "Use Animation", &Framework::instance()->useAnimation); TestGlui->add_checkbox_to_panel(graphicsOptions, "Use CuttingPlane", &Framework::instance()->useCuttingPlane); TestGlui->add_column_to_panel(graphicsOptions, 0); TestGlui->add_checkbox_to_panel(graphicsOptions, "Use Isosurfaces", &Framework::instance()->useIsosurfaces); TestGlui->add_checkbox_to_panel(graphicsOptions, "Use Points", &Framework::instance()->usePoints); TestGlui->add_checkbox_to_panel(graphicsOptions, "Use Streamlines", &Framework::instance()->useStreamlines); TestGlui->add_column_to_panel(graphicsOptions, 0); TestGlui->add_checkbox_to_panel(graphicsOptions, "Use VectorBlob", &Framework::instance()->useVectorBlob, 1, SpinnerCallback); TestGlui->add_checkbox_to_panel(graphicsOptions, "Use VectorSheet", &Framework::instance()->useVectorSheet); CustomSettings = TestGlui->add_panel("", 0); ArrowSettings = TestGlui->add_rollout_to_panel(CustomSettings, "Arrow Settings", 0); ArrowSettings->set_w(200); AnimationSettings = TestGlui->add_rollout_to_panel(CustomSettings, "Animation Settings", 0); AnimationSettings->set_w(200); IsosurfaceSettings = TestGlui->add_rollout_to_panel(CustomSettings, "Isosurface Settings", 0); IsosurfaceSettings->set_w(200); PointsSettings = TestGlui->add_rollout_to_panel(CustomSettings, "Points Settings", 0); PointsSettings->set_w(200); StreamlineSettings = TestGlui->add_rollout_to_panel(CustomSettings, "Streamline Settings", 0); StreamlineSettings->set_w(200); VectorBlobSettings = TestGlui->add_rollout_to_panel(CustomSettings, "Vector Blob Settings", 0); VectorBlobSettings ->set_w(200); CuttingPlaneSettings = TestGlui->add_rollout_to_panel(CustomSettings, "Cutting Plane Settings", 0); CuttingPlaneSettings->set_w(200); //Arrow Settings: //TRadLowHigh[0] = VecTest[0]; //TRadLowHigh[1] = VecTest[1]; /* printf("Before Sliders are initialize, Value of RadLowHigh[0] is %f, RadLowHigh[1] is %f, VecTest[0] is %f, VecTest[1] is %f\n", TRadLowHigh[0], TRadLowHigh[1], VecTest[0], VecTest[1]); TRadSlider = TestGlui->add_slider_to_panel(ArrowSettings, true, GLUI_HSLIDER_FLOAT, VecTest, RADID, MySliders); TRadSlider->set_float_limits(TRADIUSMIN, TRADIUSMAX); TRadSlider->set_w(250); // good slider width sprintf(radstr, TRADIUSFORMAT, TRadLowHigh[0], TRadLowHigh[1]); TRadLabel = TestGlui->add_statictext_to_panel(ArrowSettings, radstr); printf("After Sliders are initialized, Value of RadLowHigh[0] is %f, RadLowHigh[1] is %f, VecTest[0] is %f, VecTest[1] is %f\n", TRadLowHigh[0], TRadLowHigh[1], VecTest[0], VecTest[1]); */ spinArrowLength = TestGlui->add_spinner_to_panel(ArrowSettings, "Arrow Size", GLUI_SPINNER_FLOAT, &Framework::instance()->ArrowLength); spinArrowLength ->set_float_limits(0.0, 15.0); spinArrowLength ->set_speed(0.1); Framework::instance()->spinVecMin = Framework::instance()->GetVectorMin(); Framework::instance()->spinVecMax = Framework::instance()->GetVectorMax(); spinMinVector = TestGlui->add_spinner_to_panel(ArrowSettings, "Vector Magnitude Min", GLUI_SPINNER_FLOAT, &Framework::instance()->spinVecMin); spinMinVector->set_float_limits(0.0, 1000.0); spinMinVector->set_speed(0.05); spinMaxVector = TestGlui->add_spinner_to_panel(ArrowSettings, "Vector Magnitude Max", GLUI_SPINNER_FLOAT, &Framework::instance()->spinVecMax); spinMaxVector->set_float_limits(0.0, 1000.0); spinMaxVector->set_speed(0.05); /* alphaVector = TestGlui->add_spinner_to_panel(ArrowSettings, "Arrow Alpha", GLUI_SPINNER_FLOAT, &Framework::instance()->vecAlphaVal); alphaVector->set_float_limits(0.0, 1.0); alphaVector->set_speed(0.05); */ //Streamline & Probe Settings: spinNumStreamlines = TestGlui->add_spinner_to_panel(StreamlineSettings, "Cubed Number of Streamlines", GLUI_SPINNER_INT, &Framework::instance()->NumStreamlines, 0, SpinnerCallback); spinNumStreamlines -> set_float_limits(1, 10); spinNumStreamlines -> set_speed(0.1); TestGlui->add_checkbox_to_panel(StreamlineSettings, "Use Probe", &Framework::instance()->useProbe); ProbeX = TestGlui->add_spinner_to_panel(StreamlineSettings, "XProbeValue", GLUI_SPINNER_FLOAT, &Framework::instance()->ProbeXVal); ProbeX->set_float_limits(-1.0, 1.0); ProbeX->set_speed(0.1); ProbeY = TestGlui->add_spinner_to_panel(StreamlineSettings, "YProbeValue", GLUI_SPINNER_FLOAT, &Framework::instance()->ProbeYVal); ProbeY->set_float_limits(-1.0, 1.0); ProbeY->set_speed(0.1); ProbeZ = TestGlui->add_spinner_to_panel(StreamlineSettings, "ZProbeValue", GLUI_SPINNER_FLOAT, &Framework::instance()->ProbeZVal); ProbeZ->set_float_limits(-1.0, 1.0); ProbeZ->set_speed(0.1); //Point Settings: TestGlui->add_checkbox_to_panel(PointsSettings, "Use Jitter", &Framework::instance()->useJitter); //Isosurface Settings: spinNumContours = TestGlui->add_spinner_to_panel(IsosurfaceSettings, "NumContours", GLUI_SPINNER_INT, &Framework::instance()->numContours, 3, SpinnerCallback); spinNumContours->set_int_limits(1, 30); spinNumContours->set_speed(0.5); float tempMin = Framework::instance()->GetVectorMin(); float tempMax = Framework::instance()->GetVectorMax(); printf("IsoMin is %f, IsoMax is %f\n", tempMin, tempMax); spinIsoValue = TestGlui->add_spinner_to_panel(IsosurfaceSettings, "IsoValue", GLUI_SPINNER_FLOAT, &Framework::instance()->IsosurfacesVal, 3, SpinnerCallback); spinIsoValue->set_float_limits(tempMin, tempMax); spinIsoValue->set_speed(0.5); spinIsoResolution = TestGlui->add_spinner_to_panel(IsosurfaceSettings, "IsoResolution", GLUI_SPINNER_INT, &Framework::instance()->IsoResolution, 3, SpinnerCallback); spinIsoResolution->set_int_limits(10, 100); spinIsoResolution->set_speed(0.1); //VectorBlob Settings: VectorBlobTime = TestGlui->add_spinner_to_panel(VectorBlobSettings, "Time Value", GLUI_SPINNER_INT, &Framework::instance()->VectorBlobTimeVal, 2, SpinnerCallback); VectorBlobTime->set_int_limits(0, 100); VectorBlobTime->set_speed(0.5); VectorBlobXLoc = TestGlui->add_spinner_to_panel(VectorBlobSettings, "XVectorBlobLocation", GLUI_SPINNER_FLOAT, &Framework::instance()->VectorBlobXLoc, 1, SpinnerCallback); VectorBlobXLoc->set_float_limits(-1.0, 1.0); VectorBlobXLoc->set_speed(0.2); VectorBlobYLoc = TestGlui->add_spinner_to_panel(VectorBlobSettings, "YVectorBlobLocation", GLUI_SPINNER_FLOAT, &Framework::instance()->VectorBlobYLoc, 1, SpinnerCallback); VectorBlobYLoc->set_float_limits(-1.0, 1.0); VectorBlobYLoc->set_speed(0.2); VectorBlobZLoc = TestGlui->add_spinner_to_panel(VectorBlobSettings, "ZVectorBlobLocation", GLUI_SPINNER_FLOAT, &Framework::instance()->VectorBlobZLoc, 1, SpinnerCallback); VectorBlobZLoc->set_float_limits(-1.0, 1.0); VectorBlobZLoc->set_speed(0.2); VectorBlobXVec = TestGlui->add_spinner_to_panel(VectorBlobSettings, "XVectorBlobVector", GLUI_SPINNER_FLOAT, &Framework::instance()->VectorBlobXVec, 1, SpinnerCallback); VectorBlobXVec->set_float_limits(-1.0, 1.0); VectorBlobXVec->set_speed(0.2); VectorBlobYVec = TestGlui->add_spinner_to_panel(VectorBlobSettings, "YVectorBlobVector", GLUI_SPINNER_FLOAT, &Framework::instance()->VectorBlobYVec, 1, SpinnerCallback); VectorBlobYVec->set_float_limits(-1.0, 1.0); VectorBlobYVec->set_speed(0.2); VectorBlobZVec = TestGlui->add_spinner_to_panel(VectorBlobSettings, "ZVectorBlobVector", GLUI_SPINNER_FLOAT, &Framework::instance()->VectorBlobZVec, 1, SpinnerCallback); VectorBlobZVec->set_float_limits(-1.0, 1.0); VectorBlobZVec->set_speed(0.2); //Cutting Plane Settings: CuttingPlaneXLoc = TestGlui->add_spinner_to_panel(CuttingPlaneSettings, "XCuttingPlaneLocation", GLUI_SPINNER_FLOAT, &Framework::instance()->CuttingPlaneXLoc); CuttingPlaneXLoc->set_float_limits(-1.0, 1.0); CuttingPlaneXLoc->set_speed(0.2); CuttingPlaneYLoc = TestGlui->add_spinner_to_panel(CuttingPlaneSettings, "YCuttingPlaneLocation", GLUI_SPINNER_FLOAT, &Framework::instance()->CuttingPlaneYLoc); CuttingPlaneYLoc->set_float_limits(-1.0, 1.0); CuttingPlaneYLoc->set_speed(0.2); CuttingPlaneZLoc = TestGlui->add_spinner_to_panel(CuttingPlaneSettings, "ZCuttingPlaneLocation", GLUI_SPINNER_FLOAT, &Framework::instance()->CuttingPlaneZLoc); CuttingPlaneZLoc->set_float_limits(-1.0, 1.0); CuttingPlaneZLoc->set_speed(0.2); CuttingPlaneXVec = TestGlui->add_spinner_to_panel(CuttingPlaneSettings, "XCuttingPlaneVector", GLUI_SPINNER_FLOAT, &Framework::instance()->CuttingPlaneXVec); CuttingPlaneXVec->set_float_limits(-1.0, 1.0); CuttingPlaneXVec->set_speed(0.2); CuttingPlaneYVec = TestGlui->add_spinner_to_panel(CuttingPlaneSettings, "YCuttingPlaneVector", GLUI_SPINNER_FLOAT, &Framework::instance()->CuttingPlaneYVec); CuttingPlaneYVec->set_float_limits(-1.0, 1.0); CuttingPlaneYVec->set_speed(0.2); CuttingPlaneZVec = TestGlui->add_spinner_to_panel(CuttingPlaneSettings, "ZCuttingPlaneVector", GLUI_SPINNER_FLOAT, &Framework::instance()->CuttingPlaneZVec); CuttingPlaneZVec->set_float_limits(-1.0, 1.0); CuttingPlaneZVec->set_speed(0.2); TestGlui->add_checkbox_to_panel(CuttingPlaneSettings, "Use Contour", &Framework::instance()->ContourOn,0, CheckboxCallback); TestGlui ->add_checkbox_to_panel(CuttingPlaneSettings, "Use MineCraft Setting", &Framework::instance()->MineCraftOn, 0, CheckboxCallback); Tolerence = TestGlui->add_spinner_to_panel(CuttingPlaneSettings, "Tolerence", GLUI_SPINNER_FLOAT, &Framework::instance()->Tolerence); Tolerence->set_float_limits(0., 5.0); Tolerence->set_speed(0.04); ContDist = TestGlui->add_spinner_to_panel(CuttingPlaneSettings, "Distance", GLUI_SPINNER_FLOAT, &Framework::instance()->ContDist); ContDist->set_float_limits(0., 5.0); ContDist->set_speed(0.04); //animation items spinNumPoints = TestGlui->add_spinner_to_panel(AnimationSettings, "Animation NumPoints", GLUI_SPINNER_INT, &Framework::instance()->NumPoints); spinNumPoints->set_int_limits(5, 1000); spinNumPoints->set_speed(0.5); TestGlui->add_checkbox_to_panel(AnimationSettings, "Color As Velocity", &Framework::instance()->colorAsVelocity); TestGlui->add_checkbox_to_panel(AnimationSettings, "TracePath", &Framework::instance()->traceDotPath);//for turning off and on trace path. dotPointColorSpinnerR = TestGlui->add_spinner_to_panel(AnimationSettings, "Dot Time Interval", GLUI_SPINNER_FLOAT, &Framework::instance()->timestep); dotPointColorSpinnerR->set_float_limits(0.0, 1.0); dotPointColorSpinnerR->set_speed(0.05); dotPointColorSpinnerG = TestGlui->add_spinner_to_panel(AnimationSettings, "Dot Sample Length", GLUI_SPINNER_FLOAT, &Framework::instance()->dotPointColorG); dotPointColorSpinnerG->set_float_limits(0.0, 100.0); dotPointColorSpinnerG->set_speed(1); //dotPointColorSpinnerB = TestGlui->add_spinner_to_panel(AnimationSettings, "Dot Color B", GLUI_SPINNER_FLOAT, &Framework::instance()->dotPointColorB); //dotPointColorSpinnerB->set_float_limits(0.0, 1.0); //dotPointColorSpinnerB->set_speed(0.05); //Final Setup for Glui - making it the main window TestGlui->set_main_gfx_window(Framework::instance()->MainWindow); // set the graphics window's idle function if needed: GLUI_Master.set_glutIdleFunc(NULL); }