Slicer  5.0
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
vtkMRMLScalarVolumeDisplayNode.h
Go to the documentation of this file.
1 /*=auto=========================================================================
2 
3  Portions (c) Copyright 2005 Brigham and Women's Hospital (BWH) All Rights Reserved.
4 
5  See COPYRIGHT.txt
6  or http://www.slicer.org/copyright/copyright.txt for details.
7 
8  Program: 3D Slicer
9  Module: $RCSfile: vtkMRMLScalarVolumeDisplayNode.h,v $
10  Date: $Date: 2006/03/19 17:12:29 $
11  Version: $Revision: 1.3 $
12 
13 =========================================================================auto=*/
14 
15 #ifndef __vtkMRMLScalarVolumeDisplayNode_h
16 #define __vtkMRMLScalarVolumeDisplayNode_h
17 
18 // MRML includes
20 
21 // VTK includes
22 class vtkImageAlgorithm;
23 class vtkImageAppendComponents;
24 class vtkImageHistogramStatistics;
25 class vtkImageCast;
26 class vtkImageLogic;
27 class vtkImageMapToColors;
28 class vtkImageMapToWindowLevelColors;
29 class vtkImageStencil;
30 class vtkImageThreshold;
31 class vtkImageExtractComponents;
32 class vtkImageMathematics;
33 
34 // STD includes
35 #include <vector>
36 
41 {
42  public:
43  static vtkMRMLScalarVolumeDisplayNode *New();
45  void PrintSelf(ostream& os, vtkIndent indent) override;
46 
47  vtkMRMLNode* CreateNodeInstance() override;
48 
51  void ReadXMLAttributes( const char** atts) override;
52 
55  void WriteXML(ostream& of, int indent) override;
56 
59  void Copy(vtkMRMLNode *node) override;
60 
63  const char* GetNodeTagName() override {return "VolumeDisplay";}
64 
65 
66  //--------------------------------------------------------------------------
68  //--------------------------------------------------------------------------
69 
72  vtkGetMacro(WindowLevelLocked, bool);
73  vtkSetMacro(WindowLevelLocked, bool);
74 
77  vtkBooleanMacro(AutoWindowLevel, int);
78  vtkGetMacro(AutoWindowLevel, int);
79  vtkSetMacro(AutoWindowLevel, int);
80 
83  double GetWindow();
84  virtual void SetWindow(double);
85 
88  double GetLevel();
89  virtual void SetLevel(double);
90 
93  virtual void SetWindowLevel(double window, double level);
96  void SetWindowLevelMinMax(double min, double max);
97 
99  double GetWindowLevelMin();
101  double GetWindowLevelMax();
102 
105  vtkBooleanMacro(ApplyThreshold, int);
106  vtkGetMacro(ApplyThreshold, int);
107  virtual void SetApplyThreshold(int);
108 
111  vtkBooleanMacro(AutoThreshold, int);
112  vtkGetMacro(AutoThreshold, int);
113  vtkSetMacro(AutoThreshold, int);
114 
118  virtual double GetLowerThreshold();
119  virtual void SetLowerThreshold(double lower);
120 
124  virtual double GetUpperThreshold();
125  virtual void SetUpperThreshold(double upper);
126 
127  virtual void SetThreshold(double lower, double upper);
128 
131  vtkGetMacro(Interpolate, int);
132  vtkSetMacro(Interpolate, int);
133  vtkBooleanMacro(Interpolate, int);
134 
135  void SetDefaultColorMap() override;
136 
139  void ProcessMRMLEvents ( vtkObject * /*caller*/,
140  unsigned long /*event*/,
141  void * /*callData*/ ) override;
142 
144  void SetInputImageDataConnection(vtkAlgorithmOutput *imageDataConnection) override;
145 
147  vtkAlgorithmOutput* GetInputImageDataConnection() override;
148 
150  vtkAlgorithmOutput* GetOutputImageDataConnection() override;
151 
154  void SetBackgroundImageStencilDataConnection(vtkAlgorithmOutput *imageDataConnection) override;
155  vtkAlgorithmOutput* GetBackgroundImageStencilDataConnection() override;
156 
159  void AddWindowLevelPresetFromString(const char *preset);
162  void AddWindowLevelPreset(double window, double level);
163 
166  void ResetWindowLevelPresets();
167 
170  void SetWindowLevelFromPreset(int p);
171 
174  int GetNumberOfWindowLevelPresets();
175 
178  double GetWindowPreset(int p);
179  double GetLevelPreset(int p);
180 
186  virtual void GetDisplayScalarRange(double range[2]);
187 
188 protected:
190  ~vtkMRMLScalarVolumeDisplayNode() override;
193 
194  void SetColorNodeInternal(vtkMRMLColorNode* newColorNode) override;
195  void UpdateLookupTable(vtkMRMLColorNode* newColorNode);
196  void CalculateAutoLevels();
197 
200  vtkImageData* GetScalarImageData();
201  virtual vtkAlgorithmOutput* GetScalarImageDataConnection();
202 
203  void SetInputToImageDataPipeline(vtkAlgorithmOutput *imageDataConnection) override;
204 
210  {
211  public:
212  double Window;
213  double Level;
214  WindowLevelPreset() { this->Window = 0.0; this->Level = 0.0; };
215  };
216  //double Window;
217  //double Level;
218  //double UpperThreshold;
219  //double LowerThreshold;
220 
221 
228 
229  vtkImageLogic *AlphaLogic;
230  vtkImageMapToColors *MapToColors;
231  vtkImageThreshold *Threshold;
232  vtkImageAppendComponents *AppendComponents;
233  vtkImageMapToWindowLevelColors *MapToWindowLevelColors;
234  vtkImageExtractComponents *ExtractRGB;
235  vtkImageExtractComponents *ExtractAlpha;
236  vtkImageStencil *MultiplyAlpha;
237 
240  std::vector<WindowLevelPreset> WindowLevelPresets;
241 
244  vtkImageHistogramStatistics *HistogramStatistics;
246 };
247 
248 #endif
virtual void SetInputImageDataConnection(vtkAlgorithmOutput *imageDataConnection)
MRML node for representing a volume display attributes.
void PrintSelf(ostream &os, vtkIndent indent) override
const char * GetNodeTagName() override
Get node XML tag name (like Volume, Model)
virtual void SetDefaultColorMap()
set gray colormap or override in subclass
virtual vtkMRMLNode * CreateNodeInstance()=0
Create instance of the default node. Like New only virtual.
virtual void SetColorNodeInternal(vtkMRMLColorNode *newColorNode)
virtual void Copy(vtkMRMLNode *node)
Copy node contents from another node of the same type. Does not copy node ID and Scene. Performs deep copy - an independent copy is created from all data, including bulk data.
vtkImageMapToWindowLevelColors * MapToWindowLevelColors
std::vector< WindowLevelPreset > WindowLevelPresets
window level presets
virtual void SetBackgroundImageStencilDataConnection(vtkAlgorithmOutput *imageDataConnection)
void WriteXML(ostream &of, int indent) override
Write this node&#39;s information to a MRML file in XML format.
Abstract MRML node to represent color information.
void ProcessMRMLEvents(vtkObject *, unsigned long, void *) override
alternative method to propagate events generated in Display nodes
virtual void SetInputToImageDataPipeline(vtkAlgorithmOutput *imageDataConnection)
void operator=(const vtkMRMLVolumeDisplayNode &)
virtual vtkAlgorithmOutput * GetOutputImageDataConnection()
Abstract Superclass for all specific types of MRML nodes.
Definition: vtkMRMLNode.h:167
virtual vtkAlgorithmOutput * GetBackgroundImageStencilDataConnection()
void ReadXMLAttributes(const char **atts) override
Read node attributes from XML file
MRML node for representing a volume display attributes.
vtkImageHistogramStatistics * HistogramStatistics
Used internally in CalculateScalarAutoLevels and CalculateStatisticsAutoLevels
virtual vtkAlgorithmOutput * GetInputImageDataConnection()