IGSTK
/tmp/buildd/igstk-4.4.0/Source/igstkSpatialObjectReader.h
Go to the documentation of this file.
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