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