IGSTK
|
00001 /*========================================================================= 00002 00003 Program: Image Guided Surgery Software Toolkit 00004 Module: $RCSfile: igstkSpatialObjectReader.h,v $ 00005 Language: C++ 00006 Date: $Date: 2008-11-17 20:12:26 $ 00007 Version: $Revision: 1.17 $ 00008 00009 Copyright (c) ISC Insight Software Consortium. All rights reserved. 00010 See IGSTKCopyright.txt or http://www.igstk.org/copyright.htm for details. 00011 00012 This software is distributed WITHOUT ANY WARRANTY; without even 00013 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00014 PURPOSE. See the above copyright notices for more information. 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 /* Internal itkObjectFileReader */ 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&); //purposely not implemented 00116 void operator=(const Self&); //purposely not implemented 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 } // end namespace igstk 00156 00157 #ifndef IGSTK_MANUAL_INSTANTIATION 00158 #include "igstkSpatialObjectReader.txx" 00159 #endif 00160 00161 #endif // __igstkSpatialObjectReader_h