Slicer 5.8
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
Loading...
Searching...
No Matches
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
44class vtkSegmentationCore_EXPORT vtkSegment : public vtkObject
45{
46 typedef std::map<std::string, vtkSmartPointer<vtkDataObject> > RepresentationMap;
47
48public:
49
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) 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
114public:
117 vtkGetStringMacro(Name);
118 vtkSetStringMacro(Name);
119
123 vtkGetVector3Macro(Color, double);
124 vtkSetVector3Macro(Color, double);
125
127 vtkGetMacro(NameAutoGenerated, bool);
128 vtkSetMacro(NameAutoGenerated, bool);
129 vtkBooleanMacro(NameAutoGenerated, bool);
130
132 vtkGetMacro(ColorAutoGenerated, bool);
133 vtkSetMacro(ColorAutoGenerated, bool);
134 vtkBooleanMacro(ColorAutoGenerated, bool);
135
137 vtkGetMacro(LabelValue, int);
138 vtkSetMacro(LabelValue, int);
139
140protected:
142 ~vtkSegment() override;
143
144protected:
146 RepresentationMap Representations;
147 char* Name;
148 double Color[3];
150 std::map<std::string,std::string> Tags;
154
155private:
156 vtkSegment(const vtkSegment&) = delete;
157 void operator=(const vtkSegment&) = delete;
158};
159
160#endif
This class encapsulates a segment that is part of a segmentation.
Definition vtkSegment.h:45
virtual void DeepCopyMetadata(vtkSegment *source)
Deep copy metadata (i.e., all data but representations) one segment into another.
~vtkSegment() override
void RemoveAllRepresentations(std::string exceptionRepresentationName="")
virtual void GetBounds(double bounds[6])
bool GetTag(std::string tag, std::string &value)
vtkDataObject * GetRepresentation(std::string name)
void PrintSelf(ostream &os, vtkIndent indent) override
bool AddRepresentation(std::string type, vtkDataObject *representation)
bool HasTag(std::string tag)
Determine if a tag is present.
bool RemoveRepresentation(std::string name)
bool NameAutoGenerated
Definition vtkSegment.h:151
void SetTag(std::string tag, std::string value)
Set/add tag.
std::map< std::string, std::string > Tags
Tags (for grouping and selection)
Definition vtkSegment.h:150
void SetTag(std::string tag, int value)
Set/add integer tag.
static const char * GetTerminologyEntryTagName()
virtual void ReadXMLAttributes(const char **atts)
Set attributes from name/value pairs.
void GetTags(std::map< std::string, std::string > &tags)
Get tags.
static vtkSegment * New()
void RemoveTag(std::string tag)
Remove tag.
RepresentationMap Representations
Stored representations. Map from type string to data object.
Definition vtkSegment.h:146
bool ColorAutoGenerated
Definition vtkSegment.h:152
void GetContainedRepresentationNames(std::vector< std::string > &representationNames)
Get representation names present in this segment in an output string vector.
virtual void DeepCopy(vtkSegment *source)
Deep copy one segment into another.
void WriteXML(ostream &of, int nIndent)
Write this object's information to a MRML file in XML format.
char * Name
Definition vtkSegment.h:147