00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __igstkImageReader_h
00018 #define __igstkImageReader_h
00019
00020 #include "igstkMacros.h"
00021 #include "igstkStateMachine.h"
00022 #include "igstkObject.h"
00023
00024 #include "itkImageSpatialObject.h"
00025
00026 namespace igstk
00027 {
00028
00029 namespace Friends
00030 {
00031
00043 class ImageReaderToImageSpatialObject
00044 {
00045 public:
00046
00047 template < class TReader, class TImageSpatialObject >
00048 static void
00049 ConnectImage( const TReader * reader,
00050 TImageSpatialObject * imageSpatialObject )
00051 {
00052 imageSpatialObject->RequestSetImage( reader->GetITKImage() );
00053 }
00054
00055 };
00056
00057 }
00058
00059
00060
00071 template < class TImageSpatialObject >
00072 class ImageReader : public Object
00073 {
00074
00075 public:
00076
00078 igstkStandardTemplatedAbstractClassTraitsMacro( ImageReader, Object )
00079
00080 public:
00081
00083 typedef TImageSpatialObject ImageSpatialObjectType;
00084
00087 igstkFriendClassMacro( igstk::Friends::ImageReaderToImageSpatialObject );
00088
00089 protected:
00090
00091 ImageReader();
00092 ~ImageReader();
00093
00095 void PrintSelf( std::ostream& os, ::itk::Indent indent ) const;
00096
00098 void ConnectImage();
00099
00102 typedef typename ImageSpatialObjectType::ImageType ImageType;
00103 typedef typename ImageType::ConstPointer ImagePointer;
00104 typedef typename ImageType::RegionType ImageRegionType;
00105
00106 typename ImageSpatialObjectType::Pointer m_ImageSpatialObject;
00107
00108 private:
00109
00112 ImageReader(const Self&);
00113 void operator=(const Self&);
00114
00115
00116 virtual const ImageType * GetITKImage() const = 0;
00117
00118 };
00119
00120 }
00121
00122 #ifndef IGSTK_MANUAL_INSTANTIATION
00123 #include "igstkImageReader.txx"
00124 #endif
00125
00126 #endif // __igstkImageReader_h