]> Creatis software - gdcm.git/blob - src/gdcmDicomDirSerie.h
eecc374ae82ed599e0d9d436c62bee6533767816
[gdcm.git] / src / gdcmDicomDirSerie.h
1 /*=========================================================================
2                                                                                 
3   Program:   gdcm
4   Module:    $RCSfile: gdcmDicomDirSerie.h,v $
5   Language:  C++
6   Date:      $Date: 2005/11/21 09:46:25 $
7   Version:   $Revision: 1.31 $
8                                                                                 
9   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
10   l'Image). All rights reserved. See Doc/License.txt or
11   http://www.creatis.insa-lyon.fr/Public/Gdcm/License.html for details.
12                                                                                 
13      This software is distributed WITHOUT ANY WARRANTY; without even
14      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15      PURPOSE.  See the above copyright notices for more information.
16                                                                                 
17 =========================================================================*/
18
19 #ifndef GDCMDICOMDIRSERIE_H
20 #define GDCMDICOMDIRSERIE_H
21
22 #include "gdcmDicomDirObject.h"
23
24 namespace gdcm 
25 {
26 class DicomDirImage;
27 //-----------------------------------------------------------------------------
28 typedef std::list<DicomDirImage *> ListDicomDirImage;
29
30 //-----------------------------------------------------------------------------
31 /**
32  * \brief   describes a SERIE  within a within a STUDY
33  * (DicomDirStudy) of a given DICOMDIR (DicomDir)
34  */
35 class GDCM_EXPORT DicomDirSerie : public DicomDirObject 
36 {
37    gdcmTypeMacro(DicomDirSerie);
38
39 public:
40 /// \brief Constructs a DicomDirSerie with a RefCounter
41    static DicomDirSerie *New(bool empty=false) {return new DicomDirSerie(empty);}
42
43    void Print( std::ostream &os = std::cout, std::string const &indent = "" );
44    void WriteContent( std::ofstream *fp, FileType t );
45
46    // Image methods
47    DicomDirImage *NewImage();
48    /// Add a new gdcm::DicomDirImage to the Serie
49    void AddImage(DicomDirImage *obj) { Images.push_back(obj); }
50    void ClearImage();
51
52    DicomDirImage *GetFirstImage();
53    DicomDirImage *GetNextImage();
54
55 protected:
56    DicomDirSerie(bool empty=false); 
57    ~DicomDirSerie();
58
59 private:
60    ///chained list of DicomDirImages (to be exploited recursively)
61    ListDicomDirImage Images;
62    /// iterator on the DicomDirImages of the current DicomDirSerie
63    ListDicomDirImage::iterator ItImage;
64
65 /*
66 // for future use :
67
68    /// chained list of DicomDirOverlays(single level)
69    ListDicomDirOverlay Overlays;
70    /// iterator on the DicomDirOverlays of the current DicomDirSerie
71    ListDicomDirOverlay::iterator ItOverlay;
72
73    /// chained list of DicomDirModalityLuts(single level)
74    ListDicomDirModalityLut ModalityLuts;
75    /// iterator on the DicomDirModalityLuts of the current DicomDirSerie
76    ListDicomDirModalityLut::iterator ItModalityLut;
77
78    /// chained list of DicomDirModalityLuts(single level)
79    ListDicomDirModalityLut ModalityLuts;
80    /// iterator on the DicomDirModalityLuts of the current DicomDirSerie
81    ListDicomDirModalityLut::iterator ItModalityLuts;
82
83    /// chained list of DicomDirCurves(single level)
84    ListDicomDirCurve Curves;
85    /// iterator on the DicomDirCurves of the current DicomDirSerie
86    ListDicomDirCurve::iterator ItCurves;
87
88    /// chained list of DicomDirStoredPrints(single level)
89    ListDicomDirStoredPrint StoredPrints;
90    /// iterator on the DicomDirStoredPrints of the current DicomDirSerie
91    ListDicomDirStoredPrint::iterator ItStoredPrints;
92
93    /// chained list of DicomDirRtDoses(single level)
94    ListDicomDirRtDose RtDoses;
95    /// iterator on the DicomDirRtDoses of the current DicomDirSerie
96    ListDicomDirRtDose::iterator ItRtDoses;
97
98    /// chained list of DicomDirRtStructureSets(single level)
99    ListDicomDirRtStructureSet RtStructureSets;
100    /// iterator on the DicomDirRtStructureSets of the current DicomDirSerie
101    ListDicomDirRtStructureSet::iterator ItRtStructureSets;
102
103    /// chained list of DicomDirRtPlans(single level)
104    ListDicomDirRtPlan RtPlans;
105    /// iterator on the DicomDirRtPlans of the current DicomDirSerie
106    ListDicomDirPlan::iterator ItRtPlans;
107
108    /// chained list of DicomDirRtTreatRecords(single level)
109    ListDicomDirRtTreatRecord RtTreatRecords;
110    /// iterator on the DicomDirRtTreatRecords of the current DicomDirSerie
111    ListDicomDirRtTreatRecord::iterator ItRtTreatRecords;
112
113    /// chained list of DicomDirPresentations(single level)
114    ListDicomDirPresentation Presentations;
115    /// iterator on the DicomDirPresentations of the current DicomDirSerie
116    ListDicomDirPresentation::iterator ItPresentations;
117
118    /// chained list of DicomDirWaveForms(single level)
119    ListDicomDirWaveForm WaveForms;
120    /// iterator on the DicomDirWaveForms of the current DicomDirSerie
121    ListDicomDirWaveForm::iterator ItWaveForms;
122
123    /// chained list of DicomDirSrDocuments(single level)
124    ListDicomDirSrDocument SrDocuments;
125    /// iterator on the DicomDirSrDocuments of the current DicomDirSerie
126    ListDicomDirSrDocument::iterator ItSrDocuments;
127
128    /// chained list of DicomDirKeyObjectDocs(single level)
129    ListDicomDirKeyObjectDoc KeyObjectDocs;
130    /// iterator on the DicomDirKeyObjectDocs of the current DicomDirSerie
131    ListDicomDirKeyObjectDoc::iterator ItKeyObjectDocs;
132
133    /// chained list of DicomDirSpectroscopys(single level)
134    ListDicomDirSpectroscopy Spectroscopys;
135    /// iterator on the DicomDirSpectroscopys of the current DicomDirSerie
136    ListDicomDirSpectroscopy::iterator ItSpectroscopys;
137
138    /// chained list of DicomDirRawDatas(single level)
139    ListDicomDirRawData RawDatas;
140    /// iterator on the DicomDirRawDatas of the current DicomDirSerie
141    ListDicomDirRawData::iterator ItRawDatas;
142
143    /// chained list of DicomDirRegistrations(single level)
144    ListDicomDirRegistration Registrations;
145    /// iterator on the DicomDirRegistrations of the current DicomDirSerie
146    ListDicomDirRegistration::iterator ItRegistrations;
147
148    /// chained list of DicomDirFiducials(single level)
149    ListDicomDirFiducial Fiducials;
150    /// iterator on the DicomDirFiducials of the current DicomDirSerie
151    ListDicomDirFiducial::iterator ItFiducials;
152 */
153
154 };
155 } // end namespace gdcm
156 //-----------------------------------------------------------------------------
157 #endif