2 //-----------------------------------------------------------------------------
6 #include "gdcmHeader.h"
7 #include "gdcmCommon.h"
8 #include "gdcmDicomDirPatient.h"
9 #include "gdcmDicomDirMeta.h"
10 #include "gdcmDicomDirElement.h"
15 //-----------------------------------------------------------------------------
16 typedef std::list<gdcmDicomDirPatient *> ListDicomDirPatient;
17 typedef std::vector<gdcmHeader *> ListHeader;
19 typedef GDCM_EXPORT void(gdcmMethod)(void * = NULL);
20 //-----------------------------------------------------------------------------
22 * \defgroup gdcmDicomDir
23 * \brief gdcmDicomDir defines an object representing a DICOMDIR in memory.
26 class GDCM_EXPORT gdcmDicomDir: public gdcmParser
29 // gdcmDicomDir(ListTag *l,
30 // bool exception_on_error = false);
31 gdcmDicomDir(const char *FileName,
32 bool parseDir = false,
33 bool exception_on_error = false);
37 void SetPrintLevel(int level) { printLevel = level; };
38 virtual void Print(std::ostream &os = std::cout);
40 // Informations contained in the parser
41 virtual bool IsReadable(void);
42 inline gdcmDicomDirMeta *GetDicomDirMeta() {return metaElems;};
43 inline ListDicomDirPatient &GetDicomDirPatients() {return patients;};
46 void ParseDirectory(void);
48 void SetStartMethod(gdcmMethod *,void * =NULL,gdcmMethod * =NULL);
49 void SetStartMethodArgDelete(gdcmMethod *);
50 void SetProgressMethod(gdcmMethod *,void * =NULL,gdcmMethod * =NULL);
51 void SetProgressMethodArgDelete(gdcmMethod *);
52 void SetEndMethod(gdcmMethod *,void * =NULL,gdcmMethod * =NULL);
53 void SetEndMethodArgDelete(gdcmMethod *);
55 inline float GetProgress(void) {return(progress);};
57 inline void AbortProgress(void) {abort=true;};
58 inline bool IsAborted(void) {return(abort);};
61 bool Write(std::string fileName);
68 GDCM_DICOMDIR_PATIENT,
75 void NewDicomDir(std::string path);
76 std::string GetPath(void);
78 void CallStartMethod(void);
79 void CallProgressMethod(void);
80 void CallEndMethod(void);
83 void CreateDicomDir(void);
84 void AddObjectToEnd(gdcmDicomDirType type,
85 ListTag::iterator begin,ListTag::iterator end);
86 void AddDicomDirMetaToEnd (ListTag::iterator begin,ListTag::iterator end);
87 void AddDicomDirPatientToEnd(ListTag::iterator begin,ListTag::iterator end);
88 void AddDicomDirStudyToEnd (ListTag::iterator begin,ListTag::iterator end);
89 void AddDicomDirSerieToEnd (ListTag::iterator begin,ListTag::iterator end);
90 void AddDicomDirImageToEnd (ListTag::iterator begin,ListTag::iterator end);
92 void SetElements(std::string &path,ListHeader &list);
93 void SetElement (std::string &path,gdcmDicomDirType type,gdcmHeader *header);
95 void UpdateDirectoryRecordSequenceLength(void);
97 static bool HeaderLessThan(gdcmHeader *header1,gdcmHeader *header2);
99 gdcmDicomDirMeta *metaElems;
100 ListDicomDirPatient patients;
102 gdcmMethod *startMethod;
103 gdcmMethod *progressMethod;
104 gdcmMethod *endMethod;
105 gdcmMethod *startMethodArgDelete;
106 gdcmMethod *progressMethodArgDelete;
107 gdcmMethod *endMethodArgDelete;
116 //-----------------------------------------------------------------------------