IGSTK
igstkSpatialObjectReader.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Image Guided Surgery Software Toolkit
4  Module: $RCSfile: igstkSpatialObjectReader.h,v $
5  Language: C++
6  Date: $Date: 2008-11-17 20:12:26 $
7  Version: $Revision: 1.17 $
8 
9  Copyright (c) ISC Insight Software Consortium. All rights reserved.
10  See IGSTKCopyright.txt or http://www.igstk.org/copyright.htm for details.
11 
12  This software is distributed WITHOUT ANY WARRANTY; without even
13  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
14  PURPOSE. See the above copyright notices for more information.
15 
16 =========================================================================*/
17 
18 #ifndef __igstkSpatialObjectReader_h
19 #define __igstkSpatialObjectReader_h
20 
21 #include "igstkMacros.h"
22 
23 #include "itkSpatialObjectReader.h"
24 #include "igstkObject.h"
25 #include "igstkStateMachine.h"
26 #include "igstkEvents.h"
27 #include "itkDefaultDynamicMeshTraits.h"
28 
29 namespace igstk
30 {
31 
49 template <unsigned int TDimension = 3,
50  typename TPixelType = unsigned char>
52 {
53 
54 public:
55 
58 
59 public:
60 
61  itkStaticConstMacro(ObjectDimension, unsigned int, TDimension);
62 
64  typedef TPixelType PixelType;
65  typedef ::itk::DefaultDynamicMeshTraits< TPixelType ,
66  TDimension,
67  TDimension> MeshTraitsType;
68 
69  typedef ::itk::SpatialObjectReader< TDimension,
70  TPixelType,
71  MeshTraitsType > SpatialObjectReaderType;
72 
73  typedef ::itk::SpatialObject<TDimension> SpatialObjectType;
74  typedef ::itk::GroupSpatialObject<TDimension> GroupSpatialObjectType;
75 
77  typedef std::string FileNameType;
78 
80  void RequestSetFileName( const FileNameType & filename );
81 
83  void RequestReadObject();
84 
89  void RequestGetOutput();
90 
91  igstkEventMacro( ObjectReaderEvent, IGSTKEvent );
92  igstkEventMacro( ObjectReadingErrorEvent, IGSTKErrorEvent );
93  igstkEventMacro( ObjectReadingSuccessEvent, ObjectReaderEvent );
94  igstkEventMacro( ObjectInvalidRequestErrorEvent, ObjectReadingErrorEvent );
95 
96 protected:
97 
98  SpatialObjectReader( void );
99  virtual ~SpatialObjectReader( void );
100 
102  void PrintSelf( std::ostream& os, ::itk::Indent indent ) const;
103 
104  /* Internal itkObjectFileReader */
105  typename SpatialObjectReaderType::Pointer m_SpatialObjectReader;
106  std::string m_FileNameToBeSet;
107  std::string m_FileName;
108 
109  virtual void AttemptReadObjectProcessing();
110 
111  virtual void ReportObjectProcessing();
112 
113 private:
114 
115  SpatialObjectReader(const Self&); //purposely not implemented
116  void operator=(const Self&); //purposely not implemented
117 
119  igstkDeclareStateMacro( Idle );
120  igstkDeclareStateMacro( ObjectFileNameRead );
121  igstkDeclareStateMacro( ObjectRead );
122  igstkDeclareStateMacro( ObjectAttemptingRead );
123 
125  igstkDeclareInputMacro( ReadObjectRequest );
126  igstkDeclareInputMacro( ObjectFileNameValid );
127  igstkDeclareInputMacro( ObjectFileNameIsEmpty );
128  igstkDeclareInputMacro( ObjectFileNameIsDirectory );
129  igstkDeclareInputMacro( ObjectFileNameDoesNotExist );
130  igstkDeclareInputMacro( GetOutput );
131 
133  igstkDeclareInputMacro( ObjectReadingError );
134  igstkDeclareInputMacro( ObjectReadingSuccess );
135 
137  void SetFileNameProcessing();
138 
142  void ReportInvalidRequestProcessing();
143 
146  void ReportObjectReadingErrorProcessing();
147 
150  void ReportObjectReadingSuccessProcessing();
151 
152 
153 };
154 
155 } // end namespace igstk
156 
157 #ifndef IGSTK_MANUAL_INSTANTIATION
158 #include "igstkSpatialObjectReader.txx"
159 #endif
160 
161 #endif // __igstkSpatialObjectReader_h