Slicer  5.2
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) 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  vtkMRMLNode* CreateNodeInstance() override;
142 
144  void ReadXMLAttributes( const char** atts) override;
145 
147  void WriteXML(ostream& of, int indent) override;
148 
152 
155  void CopyParameterSet(vtkMRMLNode *node);
156 
158  const char* GetNodeTagName() override {return "VolumeProperty";}
159 
161  void ProcessMRMLEvents ( vtkObject *caller, unsigned long event, void *callData) override;
162 
165 
167  bool GetModifiedSinceRead() override;
168 
169 protected:
171  ~vtkMRMLVolumePropertyNode() override;
172 
173  static int NodesFromString(const std::string& dataString, double* &data, int nodeSize);
174  static int DataFromString(const std::string& dataString, double* &data);
175  static std::string DataToString(double* data, int size);
176 
177  // Getter and setter functions for the storable attributes
178  // (protected because only the XML read/write methods need to use these)
179  int GetInterpolationType();
180  void SetInterpolationType(int);
181  int GetShade();
182  void SetShade(int);
183  double GetDiffuse();
184  void SetDiffuse(double);
185  double GetAmbient();
186  void SetAmbient(double);
187  double GetSpecular();
188  void SetSpecular(double);
189  double GetSpecularPower();
190  void SetSpecularPower(double);
191  std::string GetScalarOpacityAsString();
192  void SetScalarOpacityAsString(std::string);
193  std::string GetGradientOpacityAsString();
194  void SetGradientOpacityAsString(std::string);
195  std::string GetRGBTransferFunctionAsString();
196  void SetRGBTransferFunctionAsString(std::string);
197 
198 protected:
200  vtkIntArray* ObservedEvents;
201 
203  vtkVolumeProperty* VolumeProperty{nullptr};
204 
208  double EffectiveRange[2]{0.0,-1.0};
209 
211  int DisabledModify{0};
212 
213 private:
216  void operator=(const vtkMRMLVolumePropertyNode&) = delete;
217 
218 };
219 
220 //---------------------------------------------------------------------------
223  vtkPiecewiseFunction* result)
224 {
226  std::string(str), result);
227 }
228 
229 //---------------------------------------------------------------------------
232  vtkColorTransferFunction* result)
233 {
235  std::string (str), result);
236 }
237 
238 #endif
virtual vtkMRMLStorageNode * CreateDefaultStorageNode()
const char * GetNodeTagName() override
Get node XML tag name (like Volume, Model)
void ReadXMLAttributes(const char **atts) override
Read node attributes from XML file
virtual bool GetModifiedSinceRead()
vtkMRMLNode * CreateNodeInstance() override=0
MRMLNode methods.
MRML node to represent a 3D surface model.
vtkIntArray * ObservedEvents
Events observed on the transfer functions.
A superclass for other storage nodes.
void ProcessMRMLEvents(vtkObject *, unsigned long, void *) override
alternative method to propagate events generated in Storage nodes
static void GetPiecewiseFunctionFromString(const std::string &str, vtkPiecewiseFunction *result)
vtkMRMLCopyContentMacro(vtkMRMLStorableNode)
static void GetColorTransferFunctionFromString(const std::string &str, vtkColorTransferFunction *result)
Abstract Superclass for all specific types of MRML nodes.
Definition: vtkMRMLNode.h:167
void operator=(const vtkMRMLStorableNode &)
vtkMRMLVolumePropertyNode contains the transfer functions (scalar opacity, color and gradient opacity...
void WriteXML(ostream &of, int indent) override
Write this node&#39;s information to a MRML file in XML format.
void PrintSelf(ostream &os, vtkIndent indent) override