]> Creatis software - gdcm.git/blob - src/gdcmDicomDirSerie.h
* Add the Copy method in all datas
[gdcm.git] / src / gdcmDicomDirSerie.h
1 /*=========================================================================
2                                                                                 
3   Program:   gdcm
4   Module:    $RCSfile: gdcmDicomDirSerie.h,v $
5   Language:  C++
6   Date:      $Date: 2005/11/29 12:48:46 $
7   Version:   $Revision: 1.32 $
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    virtual void Copy(DocEntrySet *set);
56
57 protected:
58    DicomDirSerie(bool empty=false); 
59    ~DicomDirSerie();
60
61 private:
62    ///chained list of DicomDirImages (to be exploited recursively)
63    ListDicomDirImage Images;
64    /// iterator on the DicomDirImages of the current DicomDirSerie
65    ListDicomDirImage::iterator ItImage;
66
67 /*
68 // for future use :
69
70    /// chained list of DicomDirOverlays(single level)
71    ListDicomDirOverlay Overlays;
72    /// iterator on the DicomDirOverlays of the current DicomDirSerie
73    ListDicomDirOverlay::iterator ItOverlay;
74
75    /// chained list of DicomDirModalityLuts(single level)
76    ListDicomDirModalityLut ModalityLuts;
77    /// iterator on the DicomDirModalityLuts of the current DicomDirSerie
78    ListDicomDirModalityLut::iterator ItModalityLut;
79
80    /// chained list of DicomDirModalityLuts(single level)
81    ListDicomDirModalityLut ModalityLuts;
82    /// iterator on the DicomDirModalityLuts of the current DicomDirSerie
83    ListDicomDirModalityLut::iterator ItModalityLuts;
84
85    /// chained list of DicomDirCurves(single level)
86    ListDicomDirCurve Curves;
87    /// iterator on the DicomDirCurves of the current DicomDirSerie
88    ListDicomDirCurve::iterator ItCurves;
89
90    /// chained list of DicomDirStoredPrints(single level)
91    ListDicomDirStoredPrint StoredPrints;
92    /// iterator on the DicomDirStoredPrints of the current DicomDirSerie
93    ListDicomDirStoredPrint::iterator ItStoredPrints;
94
95    /// chained list of DicomDirRtDoses(single level)
96    ListDicomDirRtDose RtDoses;
97    /// iterator on the DicomDirRtDoses of the current DicomDirSerie
98    ListDicomDirRtDose::iterator ItRtDoses;
99
100    /// chained list of DicomDirRtStructureSets(single level)
101    ListDicomDirRtStructureSet RtStructureSets;
102    /// iterator on the DicomDirRtStructureSets of the current DicomDirSerie
103    ListDicomDirRtStructureSet::iterator ItRtStructureSets;
104
105    /// chained list of DicomDirRtPlans(single level)
106    ListDicomDirRtPlan RtPlans;
107    /// iterator on the DicomDirRtPlans of the current DicomDirSerie
108    ListDicomDirPlan::iterator ItRtPlans;
109
110    /// chained list of DicomDirRtTreatRecords(single level)
111    ListDicomDirRtTreatRecord RtTreatRecords;
112    /// iterator on the DicomDirRtTreatRecords of the current DicomDirSerie
113    ListDicomDirRtTreatRecord::iterator ItRtTreatRecords;
114
115    /// chained list of DicomDirPresentations(single level)
116    ListDicomDirPresentation Presentations;
117    /// iterator on the DicomDirPresentations of the current DicomDirSerie
118    ListDicomDirPresentation::iterator ItPresentations;
119
120    /// chained list of DicomDirWaveForms(single level)
121    ListDicomDirWaveForm WaveForms;
122    /// iterator on the DicomDirWaveForms of the current DicomDirSerie
123    ListDicomDirWaveForm::iterator ItWaveForms;
124
125    /// chained list of DicomDirSrDocuments(single level)
126    ListDicomDirSrDocument SrDocuments;
127    /// iterator on the DicomDirSrDocuments of the current DicomDirSerie
128    ListDicomDirSrDocument::iterator ItSrDocuments;
129
130    /// chained list of DicomDirKeyObjectDocs(single level)
131    ListDicomDirKeyObjectDoc KeyObjectDocs;
132    /// iterator on the DicomDirKeyObjectDocs of the current DicomDirSerie
133    ListDicomDirKeyObjectDoc::iterator ItKeyObjectDocs;
134
135    /// chained list of DicomDirSpectroscopys(single level)
136    ListDicomDirSpectroscopy Spectroscopys;
137    /// iterator on the DicomDirSpectroscopys of the current DicomDirSerie
138    ListDicomDirSpectroscopy::iterator ItSpectroscopys;
139
140    /// chained list of DicomDirRawDatas(single level)
141    ListDicomDirRawData RawDatas;
142    /// iterator on the DicomDirRawDatas of the current DicomDirSerie
143    ListDicomDirRawData::iterator ItRawDatas;
144
145    /// chained list of DicomDirRegistrations(single level)
146    ListDicomDirRegistration Registrations;
147    /// iterator on the DicomDirRegistrations of the current DicomDirSerie
148    ListDicomDirRegistration::iterator ItRegistrations;
149
150    /// chained list of DicomDirFiducials(single level)
151    ListDicomDirFiducial Fiducials;
152    /// iterator on the DicomDirFiducials of the current DicomDirSerie
153    ListDicomDirFiducial::iterator ItFiducials;
154 */
155
156 };
157 } // end namespace gdcm
158 //-----------------------------------------------------------------------------
159 #endif