Slicer  4.10
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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...