00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef __igstkSpatialObjectReader_h
00019 #define __igstkSpatialObjectReader_h
00020
00021 #include "igstkMacros.h"
00022
00023 #include "itkSpatialObjectReader.h"
00024 #include "igstkObject.h"
00025 #include "igstkStateMachine.h"
00026 #include "igstkEvents.h"
00027 #include "itkDefaultDynamicMeshTraits.h"
00028
00029 namespace igstk
00030 {
00031
00049 template <unsigned int TDimension = 3,
00050 typename TPixelType = unsigned char>
00051 class SpatialObjectReader : public Object
00052 {
00053
00054 public:
00055
00057 igstkStandardTemplatedClassTraitsMacro( SpatialObjectReader, Object )
00058
00059 public:
00060
00061 itkStaticConstMacro(ObjectDimension, unsigned int, TDimension);
00062
00064 typedef TPixelType PixelType;
00065 typedef ::itk::DefaultDynamicMeshTraits< TPixelType ,
00066 TDimension,
00067 TDimension> MeshTraitsType;
00068
00069 typedef ::itk::SpatialObjectReader< TDimension,
00070 TPixelType,
00071 MeshTraitsType > SpatialObjectReaderType;
00072
00073 typedef ::itk::SpatialObject<TDimension> SpatialObjectType;
00074 typedef ::itk::GroupSpatialObject<TDimension> GroupSpatialObjectType;
00075
00077 typedef std::string FileNameType;
00078
00080 void RequestSetFileName( const FileNameType & filename );
00081
00083 void RequestReadObject();
00084
00089 void RequestGetOutput();
00090
00091 igstkEventMacro( ObjectReaderEvent, IGSTKEvent );
00092 igstkEventMacro( ObjectReadingErrorEvent, IGSTKErrorEvent );
00093 igstkEventMacro( ObjectReadingSuccessEvent, ObjectReaderEvent );
00094 igstkEventMacro( ObjectInvalidRequestErrorEvent, ObjectReadingErrorEvent );
00095
00096 protected:
00097
00098 SpatialObjectReader( void );
00099 virtual ~SpatialObjectReader( void );
00100
00102 void PrintSelf( std::ostream& os, ::itk::Indent indent ) const;
00103
00104
00105 typename SpatialObjectReaderType::Pointer m_SpatialObjectReader;
00106 std::string m_FileNameToBeSet;
00107 std::string m_FileName;
00108
00109 virtual void AttemptReadObjectProcessing();
00110
00111 virtual void ReportObjectProcessing();
00112
00113 private:
00114
00115 SpatialObjectReader(const Self&);
00116 void operator=(const Self&);
00117
00119 igstkDeclareStateMacro( Idle );
00120 igstkDeclareStateMacro( ObjectFileNameRead );
00121 igstkDeclareStateMacro( ObjectRead );
00122 igstkDeclareStateMacro( ObjectAttemptingRead );
00123
00125 igstkDeclareInputMacro( ReadObjectRequest );
00126 igstkDeclareInputMacro( ObjectFileNameValid );
00127 igstkDeclareInputMacro( ObjectFileNameIsEmpty );
00128 igstkDeclareInputMacro( ObjectFileNameIsDirectory );
00129 igstkDeclareInputMacro( ObjectFileNameDoesNotExist );
00130 igstkDeclareInputMacro( GetOutput );
00131
00133 igstkDeclareInputMacro( ObjectReadingError );
00134 igstkDeclareInputMacro( ObjectReadingSuccess );
00135
00137 void SetFileNameProcessing();
00138
00142 void ReportInvalidRequestProcessing();
00143
00146 void ReportObjectReadingErrorProcessing();
00147
00150 void ReportObjectReadingSuccessProcessing();
00151
00152
00153 };
00154
00155 }
00156
00157 #ifndef IGSTK_MANUAL_INSTANTIATION
00158 #include "igstkSpatialObjectReader.txx"
00159 #endif
00160
00161 #endif // __igstkSpatialObjectReader_h