17 #ifndef __igstkDICOMImageReader_h
18 #define __igstkDICOMImageReader_h
24 #include "itkImageSeriesReader.h"
25 #include "itkEventObject.h"
26 #include "itkGDCMImageIO.h"
27 #include "itkGDCMSeriesFileNames.h"
33 #define igstkUnsafeGetMacro(name,type) \
34 virtual const type & Get##name () const \
36 igstkLogMacro( CRITICAL, \
37 "igstk::DICOMImageReader::Get" #name " unsafe method called...\n"); \
38 return this->m_##name; \
47 igstkEventMacro( DICOMImageReaderErrorEvent, IGSTKErrorWithStringEvent );
49 DICOMImageReaderErrorEvent );
53 DICOMImageReaderErrorEvent );
55 DICOMImageReaderErrorEvent );
57 DICOMImageReaderErrorEvent );
59 DICOMImageReaderErrorEvent );
63 DICOMImageReaderErrorEvent );
67 DICOMImageReaderErrorEvent );
84 template <
class TImageSpatialObject>
98 typedef std::string DirectoryNameType;
101 void RequestSetDirectory(
const DirectoryNameType & directory );
160 TImageSpatialObject);
184 void PrintSelf( std::ostream& os, itk::Indent indent )
const;
195 void operator=(
const Self&);
198 DirectoryNameType m_ImageDirectoryName;
199 DirectoryNameType m_ImageDirectoryNameToBeSet;
202 igstkDeclareStateMacro( Idle );
203 igstkDeclareStateMacro( ImageDirectoryNameRead );
204 igstkDeclareStateMacro( AttemptingToReadImage );
205 igstkDeclareStateMacro( ImageSeriesFileNamesGenerated );
206 igstkDeclareStateMacro( ImageRead );
209 igstkDeclareInputMacro( ReadImage );
210 igstkDeclareInputMacro( ImageDirectoryNameValid );
211 igstkDeclareInputMacro( ImageReadingSuccess );
212 igstkDeclareInputMacro( ImageSeriesFileNamesGeneratingSuccess );
213 igstkDeclareInputMacro( ResetReader );
214 igstkDeclareInputMacro( GetImage );
217 igstkDeclareInputMacro( ImageReadingError );
218 igstkDeclareInputMacro( ImageDirectoryNameIsEmpty );
219 igstkDeclareInputMacro( ImageDirectoryNameDoesNotExist );
220 igstkDeclareInputMacro( ImageDirectoryNameIsNotDirectory );
221 igstkDeclareInputMacro( ImageDirectoryNameDoesNotHaveEnoughFiles );
222 igstkDeclareInputMacro( ImageSeriesFileNamesGeneratingError );
232 igstkDeclareInputMacro( GetModalityInformation );
233 igstkDeclareInputMacro( GetPatientNameInformation );
236 void SetDirectoryNameProcessing();
240 void ReadDirectoryFileNamesProcessing();
243 void AttemptReadImageProcessing();
247 void ReportInvalidRequestProcessing();
250 void ReportImageDirectoryEmptyErrorProcessing();
253 void ReportImageDirectoryDoesNotExistErrorProcessing();
257 void ReportImageDirectoryDoesNotHaveEnoughFilesErrorProcessing();
261 void ReportImageSeriesFileNamesGeneratingErrorProcessing();
265 void ReportImageSeriesFileNamesGeneratingSuccessProcessing();
268 void ReportImageReadingErrorProcessing();
271 void ReportImageReadingSuccessProcessing();
274 void ReportImageProcessing();
277 void ResetReaderProcessing();
281 void ReportImageDirectoryIsNotDirectoryErrorProcessing();
285 void GetModalityInformationProcessing();
289 void GetPatientNameInformationProcessing();
292 bool m_FileSuccessfullyRead;
301 std::string m_ImageReadingErrorInformation;
306 #ifndef IGSTK_MANUAL_INSTANTIATION
307 #include "igstkDICOMImageReader.txx"
310 #endif // __igstkDICOMImageReader_h