// $Header: /cvs/public/gdcm/src/gdcmHeader.h,v 1.34 2003/07/07 10:26:14 regrain Exp $ #ifndef GDCMHEADERHELPER_H #define GDCMHEADERHELPER_H #include "gdcmHeader.h" #include "gdcmFile.h" #include #include enum ModalityType { Unknow, CR, CT, MR, NM, OT, US, XA }; /** This class is meant to *interprate* data given from gdcmHeader That is to say : * it will help other dev to link against there lib * return value instead of string * will be able to search for data at some other place * return *default value* which is not a gdcmHeader goal * ... */ class GDCM_EXPORT gdcmHeaderHelper : public gdcmHeader { public: gdcmHeaderHelper::gdcmHeaderHelper(); gdcmHeaderHelper::gdcmHeaderHelper(const char *filename, bool exception_on_error = false); gdcmHeaderHelper::~gdcmHeaderHelper() {}; int GetXSize(void); int GetYSize(void); int GetZSize(void); //Ces fonction releve de l'interpretation des données de gdcmHeader int GetPixelSize(void); std::string GetPixelType(void); float GetXSpacing(void); float GetYSpacing(void); float GetZSpacing(void); /** change GetXImagePosition -> GetXOrigin in order not to confused reader -# GetXOrigin can return default value (=0) if it was not ImagePosition -# Image Position is different in dicomV3 <> ACR NEMA -> better use generic name */ float GetXOrigin(void); float GetYOrigin(void); float GetZOrigin(void); int GetImageNumber(void); ModalityType GetModality(void); void GetImageOrientationPatient( float* iop ); }; /** This class should be used for a stack of 2D dicom images. For a multiframe dicom image better use directly gdcmHeaderHelper */ class GDCM_EXPORT gdcmSerieHeaderHelper { public: gdcmSerieHeaderHelper::gdcmSerieHeaderHelper() {}; gdcmSerieHeaderHelper::~gdcmSerieHeaderHelper(); void AddFileName(string filename); //should return bool or throw error ? void AddGdcmFile(gdcmHeaderHelper file); void SetDirectory(string dir); void OrderGdcmFileList(); //based on Jolinda's algorithm private: list CoherentGdcmFileList; }; #endif