Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

GUI/Widgets/vtkKWVolumePropertyWidget.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Module:    $RCSfile: vtkKWVolumePropertyWidget.h,v $
00004 
00005   Copyright (c) Kitware, Inc.
00006   All rights reserved.
00007   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00008 
00009      This software is distributed WITHOUT ANY WARRANTY; without even
00010      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00011      PURPOSE.  See the above copyright notice for more information.
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   //ETX
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   // Commands
00310 
00311   char  *VolumePropertyChangedCommand;
00312   char  *VolumePropertyChangingCommand;
00313 
00314   virtual void InvokeCommand(const char *command);
00315   
00316   // GUI
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   // Are the components independent of each other?
00339 
00340   virtual int GetIndependentComponents();
00341   
00342   // Update HSV selector
00343 
00344   virtual void UpdateHSVColorSelectorFromScalarColorFunctionEditor();
00345 
00346   // This methods will be overriden in subclasses so that something
00347   // different than the DataSet ivar will be used to compute the
00348   // corresponding items
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&); // Not implemented
00358   void operator=(const vtkKWVolumePropertyWidget&); // Not implemented
00359 };
00360 
00361 #endif

Generated on Tue May 30 12:31:45 2006 for ParaView by doxygen 1.3.5