00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00026 #ifndef __vtkKWVolumePropertyWidget_h
00027 #define __vtkKWVolumePropertyWidget_h
00028
00029 #include "vtkKWCompositeWidget.h"
00030
00031 class vtkDataSet;
00032 class vtkKWCheckButton;
00033 class vtkKWColorTransferFunctionEditor;
00034 class vtkKWHSVColorSelector;
00035 class vtkKWHistogramSet;
00036 class vtkKWFrame;
00037 class vtkKWFrameWithLabel;
00038 class vtkKWMenuButtonWithLabel;
00039 class vtkKWScaleWithEntrySetWithLabel;
00040 class vtkKWMenuButton;
00041 class vtkKWPiecewiseFunctionEditor;
00042 class vtkKWScalarComponentSelectionWidget;
00043 class vtkKWScaleWithEntry;
00044 class vtkKWVolumeMaterialPropertyWidget;
00045 class vtkVolumeProperty;
00046
00047 class KWWidgets_EXPORT vtkKWVolumePropertyWidget : public vtkKWCompositeWidget
00048 {
00049
00050 public:
00051 static vtkKWVolumePropertyWidget* New();
00052 void PrintSelf(ostream& os, vtkIndent indent);
00053 vtkTypeRevisionMacro(vtkKWVolumePropertyWidget,vtkKWCompositeWidget);
00054
00056
00057 vtkGetObjectMacro(VolumeProperty, vtkVolumeProperty);
00058 virtual void SetVolumeProperty(vtkVolumeProperty*);
00060
00062
00064 vtkGetObjectMacro(DataSet, vtkDataSet);
00065 virtual void SetDataSet(vtkDataSet*);
00067
00069
00072 vtkGetObjectMacro(HistogramSet, vtkKWHistogramSet);
00073 virtual void SetHistogramSet(vtkKWHistogramSet*);
00075
00077
00078 virtual void SetSelectedComponent(int);
00079 vtkGetMacro(SelectedComponent, int);
00081
00083
00087 virtual void SetWindowLevel(double window, double level);
00088 virtual void SetInteractiveWindowLevel(double window, double level);
00089 virtual int IsInWindowLevelMode();
00091
00093
00096 vtkBooleanMacro(InteractiveApplyMode, int);
00097 vtkSetMacro(InteractiveApplyMode, int);
00098 vtkGetMacro(InteractiveApplyMode, int);
00100
00102
00103 vtkBooleanMacro(InteractiveApplyButtonVisibility, int);
00104 virtual void SetInteractiveApplyButtonVisibility(int);
00105 vtkGetMacro(InteractiveApplyButtonVisibility, int);
00107
00109
00110 vtkBooleanMacro(ScalarOpacityUnitDistanceVisibility, int);
00111 virtual void SetScalarOpacityUnitDistanceVisibility(int);
00112 vtkGetMacro(ScalarOpacityUnitDistanceVisibility, int);
00114
00116
00117 vtkBooleanMacro(HSVColorSelectorVisibility, int);
00118 virtual void SetHSVColorSelectorVisibility(int);
00119 vtkGetMacro(HSVColorSelectorVisibility, int);
00121
00123
00124 vtkBooleanMacro(ComponentSelectionVisibility, int);
00125 virtual void SetComponentSelectionVisibility(int);
00126 vtkGetMacro(ComponentSelectionVisibility, int);
00128
00130
00131 vtkBooleanMacro(InterpolationTypeVisibility, int);
00132 virtual void SetInterpolationTypeVisibility(int);
00133 vtkGetMacro(InterpolationTypeVisibility, int);
00135
00137
00139 vtkGetObjectMacro(BottomFrame, vtkKWFrame);
00141
00143
00144 vtkGetObjectMacro(EditorFrame, vtkKWFrameWithLabel);
00146
00148
00149 vtkBooleanMacro(MaterialPropertyVisibility, int);
00150 virtual void SetMaterialPropertyVisibility(int);
00151 vtkGetMacro(MaterialPropertyVisibility, int);
00153
00155
00157 enum
00158 {
00159 MaterialPropertyPositionTop,
00160 MaterialPropertyPositionBottomFrame,
00161 MaterialPropertyPositionScalarOpacityUserFrame,
00162 MaterialPropertyPositionScalarColorUserFrame
00163 };
00164
00165 virtual void SetMaterialPropertyPosition(int);
00166 vtkGetMacro(MaterialPropertyPosition, int);
00167 virtual void SetMaterialPropertyPositionToTop();
00168 virtual void SetMaterialPropertyPositionToBottomFrame();
00169 virtual void SetMaterialPropertyPositionToScalarOpacityUserFrame();
00170 virtual void SetMaterialPropertyPositionToScalarColorUserFrame();
00172
00174
00175 vtkBooleanMacro(GradientOpacityFunctionVisibility, int);
00176 virtual void SetGradientOpacityFunctionVisibility(int);
00177 vtkGetMacro(GradientOpacityFunctionVisibility, int);
00179
00181
00182 vtkBooleanMacro(ComponentWeightsVisibility, int);
00183 virtual void SetComponentWeightsVisibility(int);
00184 vtkGetMacro(ComponentWeightsVisibility, int);
00186
00188
00192 vtkBooleanMacro(EnableShadingForAllComponents, int);
00193 virtual void SetEnableShadingForAllComponents(int);
00194 vtkGetMacro(EnableShadingForAllComponents, int);
00196
00198 virtual void Update();
00199
00201
00206 vtkBooleanMacro(UseScalarColorFunctionInScalarOpacityEditor, int);
00207 virtual void SetUseScalarColorFunctionInScalarOpacityEditor(int);
00208 vtkGetMacro(UseScalarColorFunctionInScalarOpacityEditor, int);
00210
00216 virtual void MergeScalarOpacityAndColorEditors();
00217
00219
00239 virtual void SetVolumePropertyChangedCommand(
00240 vtkObject *object,const char *method);
00241 virtual void SetVolumePropertyChangingCommand(
00242 vtkObject *object,const char *method);
00244
00246
00247 vtkSetMacro(DisableCommands, int);
00248 vtkGetMacro(DisableCommands, int);
00249 vtkBooleanMacro(DisableCommands, int);
00251
00253
00259 enum
00260 {
00261 WholeRangeComputationMethodData = 1,
00262 WholeRangeComputationMethodFunctionPoints = 2,
00263 WholeRangeComputationMethodDataAndFunctionPoints = 3
00264 };
00265
00266 virtual void SetWholeRangeComputationMethod(int);
00267 vtkGetMacro(WholeRangeComputationMethod, int);
00268 virtual void SetWholeRangeComputationMethodToData();
00269 virtual void SetWholeRangeComputationMethodToFunctionPoints();
00270 virtual void SetWholeRangeComputationMethodToDataAndFunctionPoints();
00272
00274
00275 vtkGetObjectMacro(ScalarOpacityFunctionEditor, vtkKWPiecewiseFunctionEditor);
00276 vtkGetObjectMacro(ScalarColorFunctionEditor, vtkKWColorTransferFunctionEditor);
00277 vtkGetObjectMacro(GradientOpacityFunctionEditor, vtkKWPiecewiseFunctionEditor);
00278 vtkGetObjectMacro(ScalarOpacityUnitDistanceScale, vtkKWScaleWithEntry);
00279 vtkGetObjectMacro(HSVColorSelector, vtkKWHSVColorSelector);
00280 vtkGetObjectMacro(MaterialPropertyWidget, vtkKWVolumeMaterialPropertyWidget);
00282
00284 virtual void Pack();
00285
00292 virtual void UpdateEnableState();
00293
00295
00296 virtual void SelectedComponentCallback(int);
00297 virtual void InterpolationTypeCallback(int type);
00298 virtual void EnableShadingCallback(int state);
00299 virtual void MaterialPropertyChangedCallback();
00300 virtual void MaterialPropertyChangingCallback();
00301 virtual void InteractiveApplyCallback(int state);
00302 virtual void ScalarOpacityFunctionChangedCallback();
00303 virtual void ScalarOpacityFunctionChangingCallback();
00304 virtual void DoubleClickOnScalarOpacityPointCallback(int id);
00305 virtual void WindowLevelModeCallback(int mode);
00306 virtual void LockOpacityAndColorCallback(int state);
00307 virtual void ScalarOpacityUnitDistanceChangedCallback(double value);
00308 virtual void ScalarOpacityUnitDistanceChangingCallback(double value);
00309 virtual void RGBTransferFunctionChangedCallback();
00310 virtual void RGBTransferFunctionChangingCallback();
00311 virtual void RGBTransferFunctionSelectionChangedCallback();
00312 virtual void EnableGradientOpacityCallback(int val);
00313 virtual void GradientOpacityFunctionChangedCallback();
00314 virtual void GradientOpacityFunctionChangingCallback();
00315 virtual void HSVColorSelectionChangedCallback(double h, double s, double v);
00316 virtual void HSVColorSelectionChangingCallback(double h, double s, double v);
00317 virtual void ComponentWeightChangedCallback(int index, double value);
00318 virtual void ComponentWeightChangingCallback(int index, double value);
00320
00321
00322
00323 protected:
00324 vtkKWVolumePropertyWidget();
00325 ~vtkKWVolumePropertyWidget();
00326
00328 virtual void CreateWidget();
00329
00330 vtkVolumeProperty *VolumeProperty;
00331 vtkDataSet *DataSet;
00332 vtkKWHistogramSet *HistogramSet;
00333
00334 int SelectedComponent;
00335 int DisableCommands;
00336 int EnableShadingForAllComponents;
00337 int MaterialPropertyPosition;
00338 int WholeRangeComputationMethod;
00339 int InteractiveApplyMode;
00340 int InteractiveApplyButtonVisibility;
00341 int ScalarOpacityUnitDistanceVisibility;
00342 int HSVColorSelectorVisibility;
00343 int ComponentSelectionVisibility;
00344 int InterpolationTypeVisibility;
00345 int MaterialPropertyVisibility;
00346 int GradientOpacityFunctionVisibility;
00347 int ComponentWeightsVisibility;
00348 int UseScalarColorFunctionInScalarOpacityEditor;
00349
00350
00351
00352 char *VolumePropertyChangedCommand;
00353 char *VolumePropertyChangingCommand;
00354
00355 virtual void InvokeObjectMethodCommand(const char *command);
00356 virtual void InvokeVolumePropertyChangedCommand();
00357 virtual void InvokeVolumePropertyChangingCommand();
00358
00359
00360
00361 vtkKWFrameWithLabel *EditorFrame;
00362 vtkKWHSVColorSelector *HSVColorSelector;
00363 vtkKWFrame *InnerLeftFrame;
00364 vtkKWScalarComponentSelectionWidget *ComponentSelectionWidget;
00365 vtkKWMenuButtonWithLabel *InterpolationTypeOptionMenu;
00366 vtkKWVolumeMaterialPropertyWidget *MaterialPropertyWidget;
00367 vtkKWCheckButton *EnableShadingCheckButton;
00368 vtkKWCheckButton *InteractiveApplyCheckButton;
00369 vtkKWPiecewiseFunctionEditor *ScalarOpacityFunctionEditor;
00370 vtkKWScaleWithEntry *ScalarOpacityUnitDistanceScale;
00371 vtkKWColorTransferFunctionEditor *ScalarColorFunctionEditor;
00372 vtkKWCheckButton *LockOpacityAndColorCheckButton;
00373 vtkKWPiecewiseFunctionEditor *GradientOpacityFunctionEditor;
00374 vtkKWMenuButton *EnableGradientOpacityOptionMenu;
00375 vtkKWScaleWithEntrySetWithLabel *ComponentWeightScaleSet;
00376 vtkKWFrame *BottomFrame;
00377
00378 int LockOpacityAndColor[VTK_MAX_VRCOMP];
00379 int WindowLevelMode[VTK_MAX_VRCOMP];
00380
00381
00382
00383 virtual int GetIndependentComponents();
00384
00385
00386
00387 virtual void UpdateHSVColorSelectorFromScalarColorFunctionEditor();
00388
00389
00390
00391
00392 virtual int GetNumberOfComponents();
00393 virtual int GetDataSetScalarRange(int comp, double range[2]);
00394 virtual int GetDataSetAdjustedScalarRange(int comp, double range[2]);
00395 virtual const char* GetDataSetScalarName();
00396 virtual int GetDataSetScalarOpacityUnitDistanceRangeAndResolution(
00397 double range[2], double *resolution);
00398
00399
00400
00401 private:
00402 vtkKWVolumePropertyWidget(const vtkKWVolumePropertyWidget&);
00403 void operator=(const vtkKWVolumePropertyWidget&);
00404 };
00405
00406 #endif
00407