00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00023 #ifndef __vtkKWVolumePropertyWidget_h
00024 #define __vtkKWVolumePropertyWidget_h
00025
00026 #include "vtkKWCompositeWidget.h"
00027
00028 class vtkDataSet;
00029 class vtkKWCheckButton;
00030 class vtkKWColorTransferFunctionEditor;
00031 class vtkKWHSVColorSelector;
00032 class vtkKWHistogramSet;
00033 class vtkKWFrame;
00034 class vtkKWFrameWithLabel;
00035 class vtkKWMenuButtonWithLabel;
00036 class vtkKWScaleWithEntrySetWithLabel;
00037 class vtkKWMenuButton;
00038 class vtkKWPiecewiseFunctionEditor;
00039 class vtkKWScalarComponentSelectionWidget;
00040 class vtkKWScaleWithEntry;
00041 class vtkKWVolumeMaterialPropertyWidget;
00042 class vtkVolumeProperty;
00043
00044 class KWWIDGETS_EXPORT vtkKWVolumePropertyWidget : public vtkKWCompositeWidget
00045 {
00046 public:
00047 static vtkKWVolumePropertyWidget* New();
00048 void PrintSelf(ostream& os, vtkIndent indent);
00049 vtkTypeRevisionMacro(vtkKWVolumePropertyWidget,vtkKWCompositeWidget);
00050
00052 virtual void Create(vtkKWApplication *app);
00053
00055
00056 vtkGetObjectMacro(VolumeProperty, vtkVolumeProperty);
00057 virtual void SetVolumeProperty(vtkVolumeProperty*);
00059
00061
00063 vtkGetObjectMacro(DataSet, vtkDataSet);
00064 virtual void SetDataSet(vtkDataSet*);
00066
00068
00071 vtkGetObjectMacro(HistogramSet, vtkKWHistogramSet);
00072 virtual void SetHistogramSet(vtkKWHistogramSet*);
00074
00076
00077 virtual void SetSelectedComponent(int);
00078 vtkGetMacro(SelectedComponent, int);
00080
00082
00086 virtual void SetWindowLevel(float window, float level);
00087 virtual void SetInteractiveWindowLevel(float window, float level);
00088 virtual int IsInWindowLevelMode();
00090
00092
00095 vtkBooleanMacro(InteractiveApplyMode, int);
00096 vtkSetMacro(InteractiveApplyMode, int);
00097 vtkGetMacro(InteractiveApplyMode, int);
00099
00101
00102 vtkBooleanMacro(InteractiveApplyButtonVisibility, int);
00103 virtual void SetInteractiveApplyButtonVisibility(int);
00104 vtkGetMacro(InteractiveApplyButtonVisibility, int);
00106
00108
00109 vtkBooleanMacro(ScalarOpacityUnitDistanceVisibility, int);
00110 virtual void SetScalarOpacityUnitDistanceVisibility(int);
00111 vtkGetMacro(ScalarOpacityUnitDistanceVisibility, int);
00113
00115
00116 vtkBooleanMacro(HSVColorSelectorVisibility, int);
00117 virtual void SetHSVColorSelectorVisibility(int);
00118 vtkGetMacro(HSVColorSelectorVisibility, int);
00120
00122
00123 vtkBooleanMacro(ComponentSelectionVisibility, int);
00124 virtual void SetComponentSelectionVisibility(int);
00125 vtkGetMacro(ComponentSelectionVisibility, int);
00127
00129
00130 vtkBooleanMacro(InterpolationTypeVisibility, int);
00131 virtual void SetInterpolationTypeVisibility(int);
00132 vtkGetMacro(InterpolationTypeVisibility, int);
00134
00136
00138 vtkGetObjectMacro(BottomFrame, vtkKWFrame);
00140
00142
00143 vtkBooleanMacro(MaterialPropertyVisibility, int);
00144 virtual void SetMaterialPropertyVisibility(int);
00145 vtkGetMacro(MaterialPropertyVisibility, int);
00147
00149
00151 enum
00152 {
00153 MaterialPropertyPositionTop,
00154 MaterialPropertyPositionBottomFrame,
00155 MaterialPropertyPositionScalarOpacityUserFrame,
00156 MaterialPropertyPositionScalarColorUserFrame
00157 };
00158
00159 virtual void SetMaterialPropertyPosition(int);
00160 vtkGetMacro(MaterialPropertyPosition, int);
00161 virtual void SetMaterialPropertyPositionToTop()
00162 { this->SetMaterialPropertyPosition(
00163 vtkKWVolumePropertyWidget::MaterialPropertyPositionTop); };
00164 virtual void SetMaterialPropertyPositionToBottomFrame()
00165 { this->SetMaterialPropertyPosition(
00166 vtkKWVolumePropertyWidget::MaterialPropertyPositionBottomFrame); };
00167 virtual void SetMaterialPropertyPositionToScalarOpacityUserFrame()
00168 { this->SetMaterialPropertyPosition(
00169 vtkKWVolumePropertyWidget::MaterialPropertyPositionScalarOpacityUserFrame); };
00170 virtual void SetMaterialPropertyPositionToScalarColorUserFrame()
00171 { this->SetMaterialPropertyPosition(
00172 vtkKWVolumePropertyWidget::MaterialPropertyPositionScalarColorUserFrame); };
00174
00176
00177 vtkBooleanMacro(GradientOpacityFunctionVisibility, int);
00178 virtual void SetGradientOpacityFunctionVisibility(int);
00179 vtkGetMacro(GradientOpacityFunctionVisibility, int);
00181
00183
00184 vtkBooleanMacro(ComponentWeightsVisibility, int);
00185 virtual void SetComponentWeightsVisibility(int);
00186 vtkGetMacro(ComponentWeightsVisibility, int);
00188
00190
00194 vtkBooleanMacro(EnableShadingForAllComponents, int);
00195 virtual void SetEnableShadingForAllComponents(int);
00196 vtkGetMacro(EnableShadingForAllComponents, int);
00198
00200 virtual void Update();
00201
00203
00204 vtkSetMacro(DisableCommands, int);
00205 vtkGetMacro(DisableCommands, int);
00206 vtkBooleanMacro(DisableCommands, int);
00208
00210
00215 vtkBooleanMacro(UseScalarColorFunctionInScalarOpacityEditor, int);
00216 virtual void SetUseScalarColorFunctionInScalarOpacityEditor(int);
00217 vtkGetMacro(UseScalarColorFunctionInScalarOpacityEditor, int);
00219
00226 virtual void MergeScalarOpacityAndColorEditors();
00227
00229
00230 virtual void SetVolumePropertyChangedCommand(
00231 vtkObject* object,const char *method);
00232 virtual void SetVolumePropertyChangingCommand(
00233 vtkObject* object,const char *method);
00234 virtual void InvokeVolumePropertyChangedCommand();
00235 virtual void InvokeVolumePropertyChangingCommand();
00237
00239
00240 virtual void SelectedComponentCallback(int);
00241 virtual void InterpolationTypeCallback(int type);
00242 virtual void EnableShadingCallback();
00243 virtual void MaterialPropertyChangedCallback();
00244 virtual void MaterialPropertyChangingCallback();
00245 virtual void InteractiveApplyCallback();
00246 virtual void ScalarOpacityFunctionChangedCallback();
00247 virtual void ScalarOpacityFunctionChangingCallback();
00248 virtual void DoubleClickOnScalarOpacityPointCallback(int id);
00249 virtual void WindowLevelModeCallback();
00250 virtual void LockOpacityAndColorCallback();
00251 virtual void ScalarOpacityUnitDistanceChangedCallback();
00252 virtual void ScalarOpacityUnitDistanceChangingCallback();
00253 virtual void RGBTransferFunctionChangedCallback();
00254 virtual void RGBTransferFunctionChangingCallback();
00255 virtual void RGBTransferFunctionSelectionChangedCallback();
00256 virtual void EnableGradientOpacityCallback(int val);
00257 virtual void GradientOpacityFunctionChangedCallback();
00258 virtual void GradientOpacityFunctionChangingCallback();
00259 virtual void HSVColorSelectionChangedCallback(double h, double s, double v);
00260 virtual void HSVColorSelectionChangingCallback(double h, double s, double v);
00261 virtual void ComponentWeightChangedCallback(int index);
00262 virtual void ComponentWeightChangingCallback(int index);
00264
00266
00267 vtkGetObjectMacro(ScalarOpacityFunctionEditor, vtkKWPiecewiseFunctionEditor);
00268 vtkGetObjectMacro(ScalarColorFunctionEditor, vtkKWColorTransferFunctionEditor);
00269 vtkGetObjectMacro(GradientOpacityFunctionEditor, vtkKWPiecewiseFunctionEditor);
00270 vtkGetObjectMacro(ScalarOpacityUnitDistanceScale, vtkKWScaleWithEntry);
00271 vtkGetObjectMacro(HSVColorSelector, vtkKWHSVColorSelector);
00272 vtkGetObjectMacro(MaterialPropertyWidget, vtkKWVolumeMaterialPropertyWidget);
00274
00276 virtual void Pack();
00277
00284 virtual void UpdateEnableState();
00285
00286 protected:
00287 vtkKWVolumePropertyWidget();
00288 ~vtkKWVolumePropertyWidget();
00289
00290 vtkVolumeProperty *VolumeProperty;
00291 vtkDataSet *DataSet;
00292 vtkKWHistogramSet *HistogramSet;
00293
00294 int SelectedComponent;
00295 int DisableCommands;
00296 int EnableShadingForAllComponents;
00297 int MaterialPropertyPosition;
00298 int InteractiveApplyMode;
00299 int InteractiveApplyButtonVisibility;
00300 int ScalarOpacityUnitDistanceVisibility;
00301 int HSVColorSelectorVisibility;
00302 int ComponentSelectionVisibility;
00303 int InterpolationTypeVisibility;
00304 int MaterialPropertyVisibility;
00305 int GradientOpacityFunctionVisibility;
00306 int ComponentWeightsVisibility;
00307 int UseScalarColorFunctionInScalarOpacityEditor;
00308
00309
00310
00311 char *VolumePropertyChangedCommand;
00312 char *VolumePropertyChangingCommand;
00313
00314 virtual void InvokeCommand(const char *command);
00315
00316
00317
00318 vtkKWFrameWithLabel *EditorFrame;
00319 vtkKWHSVColorSelector *HSVColorSelector;
00320 vtkKWFrame *InnerLeftFrame;
00321 vtkKWScalarComponentSelectionWidget *ComponentSelectionWidget;
00322 vtkKWMenuButtonWithLabel *InterpolationTypeOptionMenu;
00323 vtkKWVolumeMaterialPropertyWidget *MaterialPropertyWidget;
00324 vtkKWCheckButton *EnableShadingCheckButton;
00325 vtkKWCheckButton *InteractiveApplyCheckButton;
00326 vtkKWPiecewiseFunctionEditor *ScalarOpacityFunctionEditor;
00327 vtkKWScaleWithEntry *ScalarOpacityUnitDistanceScale;
00328 vtkKWColorTransferFunctionEditor *ScalarColorFunctionEditor;
00329 vtkKWCheckButton *LockOpacityAndColorCheckButton;
00330 vtkKWPiecewiseFunctionEditor *GradientOpacityFunctionEditor;
00331 vtkKWMenuButton *EnableGradientOpacityOptionMenu;
00332 vtkKWScaleWithEntrySetWithLabel *ComponentWeightScaleSet;
00333 vtkKWFrame *BottomFrame;
00334
00335 int LockOpacityAndColor[VTK_MAX_VRCOMP];
00336 int WindowLevelMode[VTK_MAX_VRCOMP];
00337
00338
00339
00340 virtual int GetIndependentComponents();
00341
00342
00343
00344 virtual void UpdateHSVColorSelectorFromScalarColorFunctionEditor();
00345
00346
00347
00348
00349 virtual int GetNumberOfComponents();
00350 virtual int GetDataSetScalarRange(int comp, double range[2]);
00351 virtual int GetDataSetAdjustedScalarRange(int comp, double range[2]);
00352 virtual const char* GetDataSetScalarName();
00353 virtual int GetDataSetScalarOpacityUnitDistanceRangeAndResolution(
00354 double range[2], double *resolution);
00355
00356 private:
00357 vtkKWVolumePropertyWidget(const vtkKWVolumePropertyWidget&);
00358 void operator=(const vtkKWVolumePropertyWidget&);
00359 };
00360
00361 #endif