Slicer  5.0
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
vtkMRMLSegmentEditorNode.h
Go to the documentation of this file.
1 /*==============================================================================
2 
3  Program: 3D Slicer
4 
5  Copyright (c) Laboratory for Percutaneous Surgery (PerkLab)
6  Queen's University, Kingston, ON, Canada. All Rights Reserved.
7 
8  See COPYRIGHT.txt
9  or http://www.slicer.org/copyright/copyright.txt for details.
10 
11  Unless required by applicable law or agreed to in writing, software
12  distributed under the License is distributed on an "AS IS" BASIS,
13  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  See the License for the specific language governing permissions and
15  limitations under the License.
16 
17  This file was originally developed by Csaba Pinter, PerkLab, Queen's University
18  and was supported through the Applied Cancer Research Unit program of Cancer Care
19  Ontario with funds provided by the Ontario Ministry of Health and Long-Term Care
20 
21 ==============================================================================*/
22 
23 #ifndef __vtkMRMLSegmentEditorNode_h
24 #define __vtkMRMLSegmentEditorNode_h
25 
26 // MRML includes
27 #include <vtkMRMLNode.h>
29 
30 // Segmentations includes
31 #include "vtkSlicerSegmentationsModuleMRMLExport.h"
32 
33 #include "vtkOrientedImageData.h"
34 
35 class vtkMRMLScene;
37 
46 class VTK_SLICER_SEGMENTATIONS_MODULE_MRML_EXPORT vtkMRMLSegmentEditorNode : public vtkMRMLNode
47 {
48 public:
49  enum
50  {
54  EffectParameterModified = 62200
55  };
56 
57  enum
58  {
60  OverwriteAllSegments=0,
65  // Insert valid types above this line
66  Overwrite_Last
67  };
68 
69 public:
70  static vtkMRMLSegmentEditorNode *New();
72  void PrintSelf(ostream& os, vtkIndent indent) override;
73 
75  vtkMRMLNode* CreateNodeInstance() override;
76 
78  void ReadXMLAttributes( const char** atts) override;
79 
81  void WriteXML(ostream& of, int indent) override;
82 
84  void Copy(vtkMRMLNode *node) override;
85 
87  const char* GetNodeTagName() override { return "SegmentEditor"; }
88 
90  static int ConvertOverwriteModeFromString(const char* modeStr);
92  static const char* ConvertOverwriteModeToString(int mode);
94 
95 public:
96 
98  vtkMRMLScalarVolumeNode* GetMasterVolumeNode();
101  void SetAndObserveMasterVolumeNode(vtkMRMLScalarVolumeNode* node);
103 
105  vtkMRMLSegmentationNode* GetSegmentationNode();
107  void SetAndObserveSegmentationNode(vtkMRMLSegmentationNode* node);
109 
111  vtkGetStringMacro(SelectedSegmentID);
114  vtkSetStringMacro(SelectedSegmentID);
116 
118  vtkGetStringMacro(ActiveEffectName);
120  vtkSetStringMacro(ActiveEffectName);
122 
124  vtkSetMacro(MaskMode, int);
130  vtkGetMacro(MaskMode, int);
132 
134  vtkGetStringMacro(MaskSegmentID);
138  vtkSetStringMacro(MaskSegmentID);
140 
142  vtkBooleanMacro(MasterVolumeIntensityMask, bool);
144  vtkGetMacro(MasterVolumeIntensityMask, bool);
145  vtkSetMacro(MasterVolumeIntensityMask, bool);
147 
149  vtkSetVector2Macro(MasterVolumeIntensityMaskRange, double);
154  vtkGetVector2Macro(MasterVolumeIntensityMaskRange, double);
156 
158  vtkSetMacro(OverwriteMode, int);
161  vtkGetMacro(OverwriteMode, int);
163 
164 protected:
166  ~vtkMRMLSegmentEditorNode() override;
168  void operator=(const vtkMRMLSegmentEditorNode&);
169 
171  char* SelectedSegmentID{nullptr};
172 
174  char* ActiveEffectName{nullptr};
175 
177  char* MaskSegmentID{nullptr};
178 
179  int OverwriteMode{OverwriteAllSegments};
180 
181  bool MasterVolumeIntensityMask{false};
182  double MasterVolumeIntensityMaskRange[2];
183 };
184 
185 #endif // __vtkMRMLSegmentEditorNode_h
Areas added to selected segment will not be removed from any segments. (overlap with all other segmen...
Areas added to selected segment will be removed from all visible segments. (no overlap with visible...
virtual void ReadXMLAttributes(const char **atts)
void operator=(const vtkMRMLNode &)
virtual vtkMRMLNode * CreateNodeInstance()=0
Create instance of the default node. Like New only virtual.
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.
A set of MRML Nodes that supports serialization and undo/redo.
Definition: vtkMRMLScene.h:57
Parameter set node for the segment editor widget.
virtual void WriteXML(ostream &of, int indent)
void PrintSelf(ostream &os, vtkIndent indent) override
MRML node for representing a volume (image stack).
const char * GetNodeTagName() override
Get unique node XML tag name (like Volume, Model)
Abstract Superclass for all specific types of MRML nodes.
Definition: vtkMRMLNode.h:167
MRML node containing segmentationsSegmentation node stores a set of segments (also known as contours ...