]> Creatis software - gdcm.git/blob - src/gdcmDicomDirSerie.h
* Some classes inherit now from gdcm::RefCounter
[gdcm.git] / src / gdcmDicomDirSerie.h
1 /*=========================================================================
2                                                                                 
3   Program:   gdcm
4   Module:    $RCSfile: gdcmDicomDirSerie.h,v $
5   Language:  C++
6   Date:      $Date: 2005/10/25 14:52:33 $
7   Version:   $Revision: 1.30 $
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    static DicomDirSerie *New(bool empty=false) {return new DicomDirSerie(empty);}
41
42    void Print( std::ostream &os = std::cout, std::string const &indent = "" );
43    void WriteContent( std::ofstream *fp, FileType t );
44
45    // Image methods
46    DicomDirImage *NewImage();
47    /// Add a new gdcm::DicomDirImage to the Serie
48    void AddImage(DicomDirImage *obj) { Images.push_back(obj); }
49    void ClearImage();
50
51    DicomDirImage *GetFirstImage();
52    DicomDirImage *GetNextImage();
53
54 protected:
55    DicomDirSerie(bool empty=false); 
56    ~DicomDirSerie();
57
58 private:
59    ///chained list of DicomDirImages (to be exploited recursively)
60    ListDicomDirImage Images;
61    /// iterator on the DicomDirImages of the current DicomDirSerie
62    ListDicomDirImage::iterator ItImage;
63
64 /*
65 // for future use :
66
67    /// chained list of DicomDirOverlays(single level)
68    ListDicomDirOverlay Overlays;
69    /// iterator on the DicomDirOverlays of the current DicomDirSerie
70    ListDicomDirOverlay::iterator ItOverlay;
71
72    /// chained list of DicomDirModalityLuts(single level)
73    ListDicomDirModalityLut ModalityLuts;
74    /// iterator on the DicomDirModalityLuts of the current DicomDirSerie
75    ListDicomDirModalityLut::iterator ItModalityLut;
76
77    /// chained list of DicomDirModalityLuts(single level)
78    ListDicomDirModalityLut ModalityLuts;
79    /// iterator on the DicomDirModalityLuts of the current DicomDirSerie
80    ListDicomDirModalityLut::iterator ItModalityLuts;
81
82    /// chained list of DicomDirCurves(single level)
83    ListDicomDirCurve Curves;
84    /// iterator on the DicomDirCurves of the current DicomDirSerie
85    ListDicomDirCurve::iterator ItCurves;
86
87    /// chained list of DicomDirStoredPrints(single level)
88    ListDicomDirStoredPrint StoredPrints;
89    /// iterator on the DicomDirStoredPrints of the current DicomDirSerie
90    ListDicomDirStoredPrint::iterator ItStoredPrints;
91
92    /// chained list of DicomDirRtDoses(single level)
93    ListDicomDirRtDose RtDoses;
94    /// iterator on the DicomDirRtDoses of the current DicomDirSerie
95    ListDicomDirRtDose::iterator ItRtDoses;
96
97    /// chained list of DicomDirRtStructureSets(single level)
98    ListDicomDirRtStructureSet RtStructureSets;
99    /// iterator on the DicomDirRtStructureSets of the current DicomDirSerie
100    ListDicomDirRtStructureSet::iterator ItRtStructureSets;
101
102    /// chained list of DicomDirRtPlans(single level)
103    ListDicomDirRtPlan RtPlans;
104    /// iterator on the DicomDirRtPlans of the current DicomDirSerie
105    ListDicomDirPlan::iterator ItRtPlans;
106
107    /// chained list of DicomDirRtTreatRecords(single level)
108    ListDicomDirRtTreatRecord RtTreatRecords;
109    /// iterator on the DicomDirRtTreatRecords of the current DicomDirSerie
110    ListDicomDirRtTreatRecord::iterator ItRtTreatRecords;
111
112    /// chained list of DicomDirPresentations(single level)
113    ListDicomDirPresentation Presentations;
114    /// iterator on the DicomDirPresentations of the current DicomDirSerie
115    ListDicomDirPresentation::iterator ItPresentations;
116
117    /// chained list of DicomDirWaveForms(single level)
118    ListDicomDirWaveForm WaveForms;
119    /// iterator on the DicomDirWaveForms of the current DicomDirSerie
120    ListDicomDirWaveForm::iterator ItWaveForms;
121
122    /// chained list of DicomDirSrDocuments(single level)
123    ListDicomDirSrDocument SrDocuments;
124    /// iterator on the DicomDirSrDocuments of the current DicomDirSerie
125    ListDicomDirSrDocument::iterator ItSrDocuments;
126
127    /// chained list of DicomDirKeyObjectDocs(single level)
128    ListDicomDirKeyObjectDoc KeyObjectDocs;
129    /// iterator on the DicomDirKeyObjectDocs of the current DicomDirSerie
130    ListDicomDirKeyObjectDoc::iterator ItKeyObjectDocs;
131
132    /// chained list of DicomDirSpectroscopys(single level)
133    ListDicomDirSpectroscopy Spectroscopys;
134    /// iterator on the DicomDirSpectroscopys of the current DicomDirSerie
135    ListDicomDirSpectroscopy::iterator ItSpectroscopys;
136
137    /// chained list of DicomDirRawDatas(single level)
138    ListDicomDirRawData RawDatas;
139    /// iterator on the DicomDirRawDatas of the current DicomDirSerie
140    ListDicomDirRawData::iterator ItRawDatas;
141
142    /// chained list of DicomDirRegistrations(single level)
143    ListDicomDirRegistration Registrations;
144    /// iterator on the DicomDirRegistrations of the current DicomDirSerie
145    ListDicomDirRegistration::iterator ItRegistrations;
146
147    /// chained list of DicomDirFiducials(single level)
148    ListDicomDirFiducial Fiducials;
149    /// iterator on the DicomDirFiducials of the current DicomDirSerie
150    ListDicomDirFiducial::iterator ItFiducials;
151 */
152
153 };
154 } // end namespace gdcm
155 //-----------------------------------------------------------------------------
156 #endif