00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef __mitkDICOMReader_h
00012 #define __mitkDICOMReader_h
00013
00014 #include "mitkVolumeReader.h"
00015
00016
00017 typedef struct _slice
00018 {
00019 bool isColorByPxl;
00020 float location;
00021 void *value;
00022 mitkString *fileName;
00023 } SLICE;
00024
00025
00026 typedef struct _volumeinfo
00027 {
00028 int width;
00029 int height;
00030 int imageNum;
00031 int channelNum;
00032 int cellBytes;
00033 float spacingX;
00034 float spacingY;
00035 float spacingZ;
00036 float windowCenter;
00037 float windowWidth;
00038 bool isUnsigned;
00039 } VOLUMEINFO;
00040
00041
00042
00043
00044 class SliceList;
00045
00064 class MITK_COMMON_API mitkDICOMReader : public mitkVolumeReader
00065 {
00066 public:
00067 MITK_TYPE(mitkDICOMReader,mitkVolumeReader)
00068
00069 virtual void PrintSelf(ostream& os);
00070
00071 mitkDICOMReader();
00072
00073 protected:
00074 virtual ~mitkDICOMReader();
00075
00076
00077
00078 virtual bool Execute();
00079
00080
00081 void _clear();
00082
00083
00084 int _preProcess(VOLUMEINFO &info);
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098 int _writeToVolume(VOLUMEINFO &info);
00099
00100
00101 SliceList *m_Slices;
00102 float m_MinSpacingZ;
00103 float m_MaxSpacingZ;
00104 bool m_IsMultiFrame;
00105 bool m_NeedInsert;
00106
00107
00108
00109 private:
00110 mitkDICOMReader(const mitkDICOMReader&);
00111 void operator=(const mitkDICOMReader&);
00112
00113 };
00114
00115 #endif
00116