00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef __igstkSpatialObject_h
00019 #define __igstkSpatialObject_h
00020
00021 #include "igstkLogger.h"
00022 #include "itkSpatialObject.h"
00023
00024 #include "igstkMacros.h"
00025 #include "igstkObject.h"
00026 #include "igstkStateMachine.h"
00027 #include "igstkEvents.h"
00028
00029 #include "igstkCoordinateSystemInterfaceMacros.h"
00030
00031 namespace igstk
00032 {
00033
00034
00057 class SpatialObject : public Object
00058 {
00059
00060 public:
00061
00063 igstkStandardClassTraitsMacro( SpatialObject, Object )
00064
00065 public:
00066
00067
00068
00070 typedef itk::SpatialObject<3> SpatialObjectType;
00071
00072 protected:
00073
00078 SpatialObject( void );
00079
00082 ~SpatialObject( void );
00083
00086 void RequestSetInternalSpatialObject( SpatialObjectType * object );
00087
00089 virtual void PrintSelf( std::ostream& os, itk::Indent indent ) const;
00090
00093 SpatialObjectType * GetInternalSpatialObject() const;
00094
00095 private:
00096
00098 SpatialObjectType::Pointer m_SpatialObject;
00099 SpatialObjectType::Pointer m_SpatialObjectToBeSet;
00100
00101
00103 igstkDeclareInputMacro( InternalSpatialObjectNull );
00104 igstkDeclareInputMacro( InternalSpatialObjectValid );
00105
00107 igstkDeclareStateMacro( Initial );
00108 igstkDeclareStateMacro( Ready );
00109
00111 void SetInternalSpatialObjectProcessing();
00112
00115 void ReportSpatialObjectNullProcessing();
00116
00119 igstkCoordinateSystemClassInterfaceMacro();
00120
00121 };
00122
00125 igstkLoadedObjectEventMacro(
00126 SpatialObjectModifiedEvent, IGSTKEvent, SpatialObject );
00127
00132 igstkEventMacro( SpatialObjectNotAvailableEvent, IGSTKErrorEvent );
00133
00134 }
00135
00136 #endif // __igstkSpatialObject_h