Slicer  4.10
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
vtkSegment.h
Go to the documentation of this file.
1 /*==============================================================================
2 
3  Copyright (c) Laboratory for Percutaneous Surgery (PerkLab)
4  Queen's University, Kingston, ON, Canada. All Rights Reserved.
5 
6  See COPYRIGHT.txt
7  or http://www.slicer.org/copyright/copyright.txt for details.
8 
9  Unless required by applicable law or agreed to in writing, software
10  distributed under the License is distributed on an "AS IS" BASIS,
11  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  See the License for the specific language governing permissions and
13  limitations under the License.
14 
15  This file was originally developed by Csaba Pinter, PerkLab, Queen's University
16  and was supported through the Applied Cancer Research Unit program of Cancer Care
17  Ontario with funds provided by the Ontario Ministry of Health and Long-Term Care
18 
19 ==============================================================================*/
20 
21 #ifndef __vtkSegment_h
22 #define __vtkSegment_h
23 
24 // VTK includes
25 #include <vtkObject.h>
26 #include <vtkSmartPointer.h>
27 #include <vtkDataObject.h>
28 
29 // STD includes
30 #include <vector>
31 #include <map>
32 
33 // Segmentation includes
34 #include "vtkSegmentationCoreConfigure.h"
35 
45 class vtkSegmentationCore_EXPORT vtkSegment : public vtkObject
46 {
47  typedef std::map<std::string, vtkSmartPointer<vtkDataObject> > RepresentationMap;
48 
49 public:
50  static const double SEGMENT_COLOR_INVALID[3];
51 
52  static const char* GetTerminologyEntryTagName();
53 
54  static vtkSegment* New();
55  vtkTypeMacro(vtkSegment, vtkObject);
56  void PrintSelf(ostream& os, vtkIndent indent) VTK_OVERRIDE;
57 
59  virtual void ReadXMLAttributes(const char** atts);
60 
62  void WriteXML(ostream& of, int nIndent);
63 
65  virtual void DeepCopy(vtkSegment* source);
66 
68  virtual void DeepCopyMetadata(vtkSegment* source);
69 
72  virtual void GetBounds(double bounds[6]);
73 
78  vtkDataObject* GetRepresentation(std::string name);
79 
82  bool AddRepresentation(std::string type, vtkDataObject* representation);
83 
86  bool RemoveRepresentation(std::string name);
87 
91  void RemoveAllRepresentations(std::string exceptionRepresentationName="");
92 
94  void SetTag(std::string tag, std::string value);
96  void SetTag(std::string tag, int value);
97 
99  void RemoveTag(std::string tag);
100 
105  bool GetTag(std::string tag, std::string &value);
107  bool HasTag(std::string tag);
109  void GetTags(std::map<std::string,std::string> &tags);
110 
112  void GetContainedRepresentationNames(std::vector<std::string>& representationNames);
113 
114 public:
115  vtkGetStringMacro(Name);
116  vtkSetStringMacro(Name);
117 
118  vtkGetVector3Macro(Color, double);
119  vtkSetVector3Macro(Color, double);
120 
121  vtkGetMacro(NameAutoGenerated, bool);
122  vtkSetMacro(NameAutoGenerated, bool);
123  vtkBooleanMacro(NameAutoGenerated, bool);
124 
125  vtkGetMacro(ColorAutoGenerated, bool);
126  vtkSetMacro(ColorAutoGenerated, bool);
127  vtkBooleanMacro(ColorAutoGenerated, bool);
128 
129 protected:
130  vtkSegment();
131  ~vtkSegment();
132  void operator=(const vtkSegment&);
133 
134 protected:
136  RepresentationMap Representations;
137 
140  char* Name;
141 
145  double Color[3];
146 
148  std::map<std::string,std::string> Tags;
149 
154 };
155 
156 #endif // __vtkSegment_h
std::map< std::string, std::string > Tags
Tags (for grouping and selection)
Definition: vtkSegment.h:148
This class encapsulates a segment that is part of a segmentation.
Definition: vtkSegment.h:45
bool NameAutoGenerated
Flag indicating whether name was automatically generated. False after user manually overrides...
Definition: vtkSegment.h:151
RepresentationMap Representations
Stored representations. Map from type string to data object.
Definition: vtkSegment.h:136
bool ColorAutoGenerated
Flag indicating whether color was automatically generated. False after user manually overrides...
Definition: vtkSegment.h:153
char * Name
Definition: vtkSegment.h:140