RTK  1.4.0
Reconstruction Toolkit
rtkThreeDCircularProjectionGeometryXMLFileReader.h
Go to the documentation of this file.
1 /*=========================================================================
2  *
3  * Copyright RTK Consortium
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 
19 #ifndef rtkThreeDCircularProjectionGeometryXMLFileReader_h
20 #define rtkThreeDCircularProjectionGeometryXMLFileReader_h
21 
22 #ifdef _MSC_VER
23 #pragma warning ( disable : 4786 )
24 #endif
25 
26 #include <itkXMLFile.h>
28 #include "RTKExport.h"
29 
30 namespace rtk
31 {
32 
44 class RTK_EXPORT ThreeDCircularProjectionGeometryXMLFileReader :
45  public itk::XMLReader< ThreeDCircularProjectionGeometry >
46 {
47 public:
49  typedef ThreeDCircularProjectionGeometryXMLFileReader Self;
51  typedef itk::SmartPointer<Self> Pointer;
52 
54  typedef ThreeDCircularProjectionGeometry GeometryType;
55  typedef GeometryType::Pointer GeometryPointer;
56 
58  static const unsigned int CurrentVersion = 3;
59 
61  itkTypeMacro(ThreeDCircularProjectionGeometryXMLFileReader, itk::XMLFileReader);
62 
64  itkNewMacro(Self);
65 
67  int CanReadFile(const char* name) ITK_OVERRIDE;
68 
70  itkGetModifiableObjectMacro(Geometry, GeometryType);
71 
72 protected:
73  ThreeDCircularProjectionGeometryXMLFileReader();
74  virtual ~ThreeDCircularProjectionGeometryXMLFileReader() ITK_OVERRIDE {}
75 
79  void StartElement(const char * name,const char **atts) ITK_OVERRIDE;
80 
81  void StartElement(const char * name);
82 
83  void EndElement(const char *name) ITK_OVERRIDE;
84 
85  void CharacterDataHandler(const char *inData, int inLength) ITK_OVERRIDE;
86 
87 private:
88  //purposely not implemented
89  ThreeDCircularProjectionGeometryXMLFileReader(const Self&);
90  void operator=(const Self&);
91 
92  GeometryPointer m_Geometry;
93 
94  std::string m_CurCharacterData;
95 
97  double m_InPlaneAngle;
98  double m_OutOfPlaneAngle;
99  double m_GantryAngle;
100  double m_SourceToIsocenterDistance;
101  double m_SourceOffsetX;
102  double m_SourceOffsetY;
103  double m_SourceToDetectorDistance;
104  double m_ProjectionOffsetX;
105  double m_ProjectionOffsetY;
106  double m_CollimationUInf;
107  double m_CollimationUSup;
108  double m_CollimationVInf;
109  double m_CollimationVSup;
110 
113 
itk::Matrix< double, TDimension, TDimension+1 > MatrixType
rtk::ThreeDCircularProjectionGeometry GeometryType
Definition: rtkTest.h:27