Slicer  4.10
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
vtkMRMLVolumePropertyNode.h
Go to the documentation of this file.
1 
6 #ifndef __vtkMRMLVolumePropertyNode_h
7 #define __vtkMRMLVolumePropertyNode_h
8 
9 // VolumeRendering includes
10 #include "vtkSlicerVolumeRenderingModuleMRMLExport.h"
11 
12 // MRML includes
13 #include "vtkMRMLStorableNode.h"
14 
15 // VTK includes
16 class vtkColorTransferFunction;
17 class vtkIntArray;
18 class vtkPiecewiseFunction;
19 class vtkVolumeProperty;
20 
21 // STD includes
22 #include <string>
23 #include <vector>
24 
27 class VTK_SLICER_VOLUMERENDERING_MODULE_MRML_EXPORT vtkMRMLVolumePropertyNode
28  : public vtkMRMLStorableNode
29 {
30 public:
31  enum
32  {
34  EffectiveRangeModified = 62300
35  };
36 
38  static vtkMRMLVolumePropertyNode *New();
40  void PrintSelf(ostream& os, vtkIndent indent) VTK_OVERRIDE;
41 
44  vtkGetObjectMacro(VolumeProperty, vtkVolumeProperty);
45 
49  void SetScalarOpacity(vtkPiecewiseFunction* newScalarOpacity, int component = 0);
53  vtkPiecewiseFunction* GetScalarOpacity(int component = 0);
54 
58  void SetGradientOpacity(vtkPiecewiseFunction* newGradientOpacity, int component = 0);
62  vtkPiecewiseFunction* GetGradientOpacity(int component = 0);
63 
67  void SetColor(vtkColorTransferFunction* newColorFunction, int component = 0);
71  vtkColorTransferFunction* GetColor(int component = 0);
72 
79  static std::string GetPiecewiseFunctionString(vtkPiecewiseFunction* function);
80 
87  static std::string GetColorTransferFunctionString(vtkColorTransferFunction* function);
88 
93  static void GetPiecewiseFunctionFromString(const std::string& str,
94  vtkPiecewiseFunction* result);
95 
100  static void GetColorTransferFunctionFromString(const std::string& str,
101  vtkColorTransferFunction* result);
102 
107  static inline void GetPiecewiseFunctionFromString(const char *str,
108  vtkPiecewiseFunction* result);
109 
115  static inline void GetColorTransferFunctionFromString(const char *str,
116  vtkColorTransferFunction* result);
117 
121  static double NextHigher(double value);
126  static double HigherAndUnique(double value, double & previousValue);
127 
129  void SetEffectiveRange(double min, double max);
130  void SetEffectiveRange(double range[2]);
132  vtkGetVector2Macro(EffectiveRange, double);
133 
136  bool CalculateEffectiveRange();
137 
138  //--------------------------------------------------------------------------
140  //--------------------------------------------------------------------------
141  virtual vtkMRMLNode* CreateNodeInstance() VTK_OVERRIDE;
142 
144  virtual void ReadXMLAttributes( const char** atts) VTK_OVERRIDE;
145 
147  virtual void WriteXML(ostream& of, int indent) VTK_OVERRIDE;
148 
150  virtual void Copy(vtkMRMLNode *node) VTK_OVERRIDE;
151 
154  void CopyParameterSet(vtkMRMLNode *node);
155 
157  virtual const char* GetNodeTagName() VTK_OVERRIDE {return "VolumeProperty";}
158 
160  virtual void ProcessMRMLEvents ( vtkObject *caller, unsigned long event, void *callData) VTK_OVERRIDE;
161 
163  virtual vtkMRMLStorageNode* CreateDefaultStorageNode() VTK_OVERRIDE;
164 
166  virtual bool GetModifiedSinceRead() VTK_OVERRIDE;
167 
168 protected:
171 
172  static int NodesFromString(const std::string& dataString, double* &data, int nodeSize);
173  static int DataFromString(const std::string& dataString, double* &data);
174  static std::string DataToString(double* data, int size);
175 
176  // Getter and setter functions for the storable attributes
177  // (protected because only the XML read/write methods need to use these)
178  int GetInterpolationType();
179  void SetInterpolationType(int);
180  int GetShade();
181  void SetShade(int);
182  double GetDiffuse();
183  void SetDiffuse(double);
184  double GetAmbient();
185  void SetAmbient(double);
186  double GetSpecular();
187  void SetSpecular(double);
188  double GetSpecularPower();
189  void SetSpecularPower(double);
190  std::string GetScalarOpacityAsString();
191  void SetScalarOpacityAsString(std::string);
192  std::string GetGradientOpacityAsString();
193  void SetGradientOpacityAsString(std::string);
194  std::string GetRGBTransferFunctionAsString();
195  void SetRGBTransferFunctionAsString(std::string);
196 
197 protected:
199  vtkIntArray* ObservedEvents;
200 
202  vtkVolumeProperty* VolumeProperty;
203 
207  double EffectiveRange[2];
208 
210  int DisabledModify;
211 
212 private:
214  vtkMRMLVolumePropertyNode(const vtkMRMLVolumePropertyNode&);//Not implemented
215  void operator=(const vtkMRMLVolumePropertyNode&);// Not implemented
216 
217 };
218 
219 //---------------------------------------------------------------------------
221 ::GetPiecewiseFunctionFromString(const char *str,
222  vtkPiecewiseFunction* result)
223 {
225  std::string(str), result);
226 }
227 
228 //---------------------------------------------------------------------------
231  vtkColorTransferFunction* result)
232 {
234  std::string (str), result);
235 }
236 
237 #endif
virtual vtkMRMLStorageNode * CreateDefaultStorageNode()
LRU Cache.
virtual void ProcessMRMLEvents(vtkObject *, unsigned long, void *) VTK_OVERRIDE
alternative method to propagate events generated in Storage nodes
virtual vtkMRMLNode * CreateNodeInstance() VTK_OVERRIDE=0
MRMLNode methods.
MRML node to represent a 3D surface model.
A superclass for other storage nodes.
static void GetPiecewiseFunctionFromString(const std::string &str, vtkPiecewiseFunction *result)
void PrintSelf(ostream &os, vtkIndent indent) VTK_OVERRIDE
static void GetColorTransferFunctionFromString(const std::string &str, vtkColorTransferFunction *result)
Abstract Superclass for all specific types of MRML nodes.
Definition: vtkMRMLNode.h:138
vtkMRMLVolumePropertyNode contains the transfer functions (scalar opacity, color and gradient opacity...