ITK  5.1.0
Insight Toolkit
itkMetaSceneConverter.h
Go to the documentation of this file.
1 /*=========================================================================
2  *
3  * Copyright NumFOCUS
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0.txt
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  *=========================================================================*/
18 #ifndef itkMetaSceneConverter_h
19 #define itkMetaSceneConverter_h
20 
21 #include "itkObject.h"
23 
24 #include "metaScene.h"
25 #include "itkMetaEvent.h"
26 #include "itkSpatialObject.h"
27 #include "itkMetaConverterBase.h"
28 
29 #include <string>
30 #include <map>
31 
32 namespace itk
33 {
45 template <unsigned int NDimensions = 3,
46  typename PixelType = unsigned char,
47  typename TMeshTraits = DefaultStaticMeshTraits<PixelType, NDimensions, NDimensions>>
48 class ITK_TEMPLATE_EXPORT MetaSceneConverter : public Object
49 {
50 public:
51 
54  using Superclass = Object;
57 
58  itkNewMacro(Self);
59 
61  itkTypeMacro(MetaSceneConverter, Object);
62 
66 
70  using ConverterMapType = std::map<std::string, MetaConverterPointer>;
71 
74  ReadMeta(const std::string & name);
75 
77  bool
78  WriteMeta(SpatialObjectType * soScene,
79  const std::string & fileName,
80  unsigned int depth = SpatialObjectType::MaximumDepth,
81  const std::string & spatialObjectTypeName = "");
82 
83  itkGetMacro(Event, MetaEvent *);
84  itkSetObjectMacro(Event, MetaEvent);
85 
87  itkSetMacro(BinaryPoints, bool);
88  itkGetMacro(BinaryPoints, bool);
90 
92  itkSetMacro(TransformPrecision, unsigned int);
93  itkGetMacro(TransformPrecision, unsigned int);
95 
97  itkSetMacro(WriteImagesInSeparateFile, bool);
98  itkGetConstMacro(WriteImagesInSeparateFile, bool);
100 
107  void
108  RegisterMetaConverter(const std::string & metaTypeName,
109  const std::string & spatialObjectTypeName,
110  MetaConverterBaseType * converter);
111 
112  MetaScene *
113  CreateMetaScene(SpatialObjectType * soScene,
114  unsigned int depth = SpatialObjectType::MaximumDepth,
115  const std::string & name = "");
116 
118  CreateSpatialObjectScene(MetaScene * mScene);
119 
120 protected:
122  ~MetaSceneConverter() override = default;
123 
124 private:
126 
127  using MetaObjectListType = std::list<MetaObject *>;
128 
129  template <typename TConverter>
130  MetaObject *
132  {
133  typename TConverter::Pointer converter = TConverter::New();
134  // needed just for Image & ImageMask
135  converter->SetWriteImagesInSeparateFile(this->m_WriteImagesInSeparateFile);
136  return converter->SpatialObjectToMetaObject(so);
137  }
138  template <typename TConverter>
139  SpatialObjectPointer
140  MetaObjectToSpatialObject(const MetaObject * mo)
141  {
142  typename TConverter::Pointer converter = TConverter::New();
143  return converter->MetaObjectToSpatialObject(mo);
144  }
145  void
146  SetTransform(MetaObject * obj, const TransformType * transform);
147 
148  void
149  SetTransform(SpatialObjectType * so, const MetaObject * meta);
150 
151  double m_Orientation[100];
152  double m_Position[10];
153  double m_CenterOfRotation[10];
154 
158  unsigned int m_TransformPrecision;
160 };
161 } // end namespace itk
162 
163 #ifndef ITK_MANUAL_INSTANTIATION
164 # include "itkMetaSceneConverter.hxx"
165 #endif
166 
167 #endif
itk::MetaSceneConverter::MetaObjectToSpatialObject
SpatialObjectPointer MetaObjectToSpatialObject(const MetaObject *mo)
Definition: itkMetaSceneConverter.h:140
itk::MetaSceneConverter::SpatialObjectPointer
typename SpatialObjectType::Pointer SpatialObjectPointer
Definition: itkMetaSceneConverter.h:65
itk::MetaSceneConverter::ConverterMapType
std::map< std::string, MetaConverterPointer > ConverterMapType
Definition: itkMetaSceneConverter.h:70
itkSpatialObject.h
itk::MetaSceneConverter::m_ConverterMap
ConverterMapType m_ConverterMap
Definition: itkMetaSceneConverter.h:159
itkMetaEvent.h
itk::SmartPointer< Self >
itk::AffineTransform
Definition: itkAffineTransform.h:101
itk::MetaSceneConverter::m_BinaryPoints
bool m_BinaryPoints
Definition: itkMetaSceneConverter.h:156
itk::MetaSceneConverter::m_Event
MetaEvent * m_Event
Definition: itkMetaSceneConverter.h:155
itk::MetaSceneConverter::MetaConverterPointer
typename MetaConverterBaseType::Pointer MetaConverterPointer
Definition: itkMetaSceneConverter.h:69
itk::MetaSceneConverter::MetaObjectListType
std::list< MetaObject * > MetaObjectListType
Definition: itkMetaSceneConverter.h:127
itk::LightObject
Light weight base class for most itk classes.
Definition: itkLightObject.h:59
itk::MetaEvent
Event abstract class.
Definition: itkMetaEvent.h:40
itk::SpatialObject
Implementation of the composite pattern.
Definition: itkSpatialObject.h:57
itk::MetaSceneConverter::m_WriteImagesInSeparateFile
bool m_WriteImagesInSeparateFile
Definition: itkMetaSceneConverter.h:157
itk::MetaSceneConverter::m_TransformPrecision
unsigned int m_TransformPrecision
Definition: itkMetaSceneConverter.h:158
itkObject.h
itk::MetaConverterBase< NDimensions >
itk
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
Definition: itkArray.h:26
itkDefaultStaticMeshTraits.h
itk::Object
Base class for most ITK classes.
Definition: itkObject.h:60
itk::MetaSceneConverter::TransformType
typename SpatialObjectType::TransformType TransformType
Definition: itkMetaSceneConverter.h:125
itk::MetaSceneConverter
Converts between MetaObject and SpaitalObject group.
Definition: itkMetaSceneConverter.h:48
itkMetaConverterBase.h
itk::MetaSceneConverter::SpatialObjectToMetaObject
MetaObject * SpatialObjectToMetaObject(SpatialObjectPointer &so)
Definition: itkMetaSceneConverter.h:131
fileName
std::string fileName
Definition: itkTestDriverInclude.h:118