]> Creatis software - gdcm.git/blob - src/gdcmHeaderHelper.h
* src/gdcmHeaderHelper.[h cxx]: added new class that provide an
[gdcm.git] / src / gdcmHeaderHelper.h
1 // $Header: /cvs/public/gdcm/src/Attic/gdcmHeaderHelper.h,v 1.1 2003/09/08 16:37:47 malaterre Exp $
2
3 #ifndef GDCMHEADERHELPER_H
4 #define GDCMHEADERHELPER_H
5
6 #include "gdcmHeader.h"
7 #include <list>
8 #include <string>
9 #include <vector>
10
11    enum ModalityType {
12       Unknow,
13       CR,
14       CT,
15       MR,
16       NM,
17       OT,
18       US,
19       XA };
20       
21 /**
22   This class is meant to *interprate* data given from gdcmHeader
23   That is to say :
24    * it will help other dev to link against there lib
25    * return value instead of string
26    * will be able to search for data at some other place
27    * return *default value* which is not a gdcmHeader goal
28    * ...
29 */
30 class GDCM_EXPORT gdcmHeaderHelper : public gdcmHeader {
31
32 public:
33
34    gdcmHeaderHelper::gdcmHeaderHelper();
35    gdcmHeaderHelper::gdcmHeaderHelper(const char *filename, bool exception_on_error = false);
36
37     //Ces fonction releve de l'interpretation des donnĂ©es de gdcmHeader
38    int GetPixelSize();
39    std::string GetPixelType();
40    
41    float GetXSpacing();
42    float GetYSpacing();
43    float GetZSpacing();
44    
45    std::string GetStudyUID();
46    std::string GetSeriesUID();
47    std::string GetClassUID();
48    std::string GetInstanceUID();
49    
50     /**
51     change GetXImagePosition -> GetXOrigin in order not to confused reader
52       -# GetXOrigin can return default value (=0) if it was not ImagePosition
53       -# Image Position is different in dicomV3 <> ACR NEMA -> better use generic
54       name
55     */
56    float GetXOrigin();
57    float GetYOrigin();
58    float GetZOrigin();
59    
60    int GetImageNumber();
61    ModalityType GetModality();
62    
63    void GetImageOrientationPatient( float* iop );
64
65 };
66
67 /**
68 This class should be used for a stack of 2D dicom images.
69 For a multiframe dicom image better use directly gdcmHeaderHelper
70 */
71 class GDCM_EXPORT gdcmSerieHeaderHelper {
72
73 public:
74     gdcmSerieHeaderHelper::gdcmSerieHeaderHelper() {};
75     gdcmSerieHeaderHelper::~gdcmSerieHeaderHelper();
76
77    void AddFileName(std::string filename); //should return bool or throw error ?
78    void AddGdcmFile(gdcmHeaderHelper *file);
79    void SetDirectory(std::string dir);
80    void OrderGdcmFileList();
81    
82    gdcmHeaderHelper *GetGdcmHeader()
83    {
84       //Assume all element in the list have the same global infos
85       return CoherentGdcmFileList.front();
86    }
87    
88    std::list<gdcmHeaderHelper*>& GetGdcmFileList();
89
90 private:
91    bool ImagePositionPatientOrdering();
92    bool ImageNumberOrdering();
93    bool FileNameOrdering();
94    
95    std::list<gdcmHeaderHelper*> CoherentGdcmFileList;
96
97 };
98
99 #endif