]> Creatis software - gdcm.git/blob - src/gdcmDicomDirSerie.h
add SetFlipY()
[gdcm.git] / src / gdcmDicomDirSerie.h
1 /*=========================================================================
2                                                                                 
3   Program:   gdcm
4   Module:    $RCSfile: gdcmDicomDirSerie.h,v $
5   Language:  C++
6   Date:      $Date: 2007/08/29 15:30:49 $
7   Version:   $Revision: 1.38 $
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_NAME_SPACE 
25 {
26 class DicomDirImage;
27 class DicomDirPrivate;
28
29 //-----------------------------------------------------------------------------
30 typedef std::list<DicomDirImage *> ListDicomDirImage;
31 typedef std::list<DicomDirPrivate *> ListDicomDirPrivate;
32 //-----------------------------------------------------------------------------
33 /**
34  * \brief   describes a SERIE  within a within a STUDY
35  * (DicomDirStudy) of a given DICOMDIR (DicomDir)
36  */
37 class GDCM_EXPORT DicomDirSerie : public DicomDirObject 
38 {
39    gdcmTypeMacro(DicomDirSerie);
40
41 public:
42 /// \brief Constructs a DicomDirSerie with a RefCounter
43    static DicomDirSerie *New(bool empty=false) {return new DicomDirSerie(empty);}
44
45    void Print( std::ostream &os = std::cout, std::string const &indent = "" );
46    void WriteContent( std::ofstream *fp, FileType t, bool insideMetaElements,
47                                                      bool insideSequence );
48
49    // 'Image' methods
50    DicomDirImage *NewImage();
51    /// Add a new gdcm::DicomDirImage to the Serie
52    void AddImage(DicomDirImage *obj) { Images.push_back(obj); }
53    void ClearImage();
54
55    DicomDirImage *GetFirstImage();
56    DicomDirImage *GetNextImage();
57    /// returns the number of Images currently held in the gdcm::DicomDirSerie
58    int            GetNumberOfImages() { return Images.size();}
59    
60    // 'Private' methods (For SIEMENS 'CSA non image')
61    DicomDirPrivate *NewPrivate();
62    /// Add a new gdcm::DicomDirPrivate to the Serie
63    void AddPrivate(DicomDirPrivate *obj) { Privates.push_back(obj); }
64    void ClearPrivate();
65
66    DicomDirPrivate *GetFirstPrivate();
67    DicomDirPrivate *GetNextPrivate();   
68    /// returns the number of 'Privates' currently held in the gdcm::DicomDirSerie
69    int             GetNumberOfPrivates() { return Privates.size();}   
70    
71    virtual void Copy(DocEntrySet *set);
72
73 protected:
74    DicomDirSerie(bool empty=false); 
75    ~DicomDirSerie();
76
77 private:
78    ///chained list of DicomDirImages (to be exploited recursively)
79    ListDicomDirImage Images;
80    /// iterator on the DicomDirImages of the current DicomDirSerie
81    ListDicomDirImage::iterator ItImage;
82
83    ///chained list of DicomDirPrivates (to be exploited recursively)
84    ListDicomDirPrivate Privates;
85    /// iterator on the DicomDirPrivates of the current DicomDirSerie
86    ListDicomDirPrivate::iterator ItPrivate;
87 /*
88 // for future use  (Full DICOMDIR):
89
90    /// chained list of DicomDirOverlays(single level)
91    ListDicomDirOverlay Overlays;
92    /// iterator on the DicomDirOverlays of the current DicomDirSerie
93    ListDicomDirOverlay::iterator ItOverlay;
94
95    /// chained list of DicomDirModalityLuts(single level)
96    ListDicomDirModalityLut ModalityLuts;
97    /// iterator on the DicomDirModalityLuts of the current DicomDirSerie
98    ListDicomDirModalityLut::iterator ItModalityLuts;
99
100    /// chained list of DicomDirCurves(single level)
101    ListDicomDirCurve Curves;
102    /// iterator on the DicomDirCurves of the current DicomDirSerie
103    ListDicomDirCurve::iterator ItCurves;
104
105    /// chained list of DicomDirStoredPrints(single level)
106    ListDicomDirStoredPrint StoredPrints;
107    /// iterator on the DicomDirStoredPrints of the current DicomDirSerie
108    ListDicomDirStoredPrint::iterator ItStoredPrints;
109
110    /// chained list of DicomDirRtDoses(single level)
111    ListDicomDirRtDose RtDoses;
112    /// iterator on the DicomDirRtDoses of the current DicomDirSerie
113    ListDicomDirRtDose::iterator ItRtDoses;
114
115    /// chained list of DicomDirRtStructureSets(single level)
116    ListDicomDirRtStructureSet RtStructureSets;
117    /// iterator on the DicomDirRtStructureSets of the current DicomDirSerie
118    ListDicomDirRtStructureSet::iterator ItRtStructureSets;
119
120    /// chained list of DicomDirRtPlans(single level)
121    ListDicomDirRtPlan RtPlans;
122    /// iterator on the DicomDirRtPlans of the current DicomDirSerie
123    ListDicomDirPlan::iterator ItRtPlans;
124
125    /// chained list of DicomDirRtTreatRecords(single level)
126    ListDicomDirRtTreatRecord RtTreatRecords;
127    /// iterator on the DicomDirRtTreatRecords of the current DicomDirSerie
128    ListDicomDirRtTreatRecord::iterator ItRtTreatRecords;
129
130    /// chained list of DicomDirPresentations(single level)
131    ListDicomDirPresentation Presentations;
132    /// iterator on the DicomDirPresentations of the current DicomDirSerie
133    ListDicomDirPresentation::iterator ItPresentations;
134
135    /// chained list of DicomDirWaveForms(single level)
136    ListDicomDirWaveForm WaveForms;
137    /// iterator on the DicomDirWaveForms of the current DicomDirSerie
138    ListDicomDirWaveForm::iterator ItWaveForms;
139
140    /// chained list of DicomDirSrDocuments(single level)
141    ListDicomDirSrDocument SrDocuments;
142    /// iterator on the DicomDirSrDocuments of the current DicomDirSerie
143    ListDicomDirSrDocument::iterator ItSrDocuments;
144
145    /// chained list of DicomDirKeyObjectDocs(single level)
146    ListDicomDirKeyObjectDoc KeyObjectDocs;
147    /// iterator on the DicomDirKeyObjectDocs of the current DicomDirSerie
148    ListDicomDirKeyObjectDoc::iterator ItKeyObjectDocs;
149
150    /// chained list of DicomDirSpectroscopys(single level)
151    ListDicomDirSpectroscopy Spectroscopys;
152    /// iterator on the DicomDirSpectroscopys of the current DicomDirSerie
153    ListDicomDirSpectroscopy::iterator ItSpectroscopys;
154
155    /// chained list of DicomDirRawDatas(single level)
156    ListDicomDirRawData RawDatas;
157    /// iterator on the DicomDirRawDatas of the current DicomDirSerie
158    ListDicomDirRawData::iterator ItRawDatas;
159
160    /// chained list of DicomDirRegistrations(single level)
161    ListDicomDirRegistration Registrations;
162    /// iterator on the DicomDirRegistrations of the current DicomDirSerie
163    ListDicomDirRegistration::iterator ItRegistrations;
164
165    /// chained list of DicomDirFiducials(single level)
166    ListDicomDirFiducial Fiducials;
167    /// iterator on the DicomDirFiducials of the current DicomDirSerie
168    ListDicomDirFiducial::iterator ItFiducials;
169 */
170
171 };
172 } // end namespace gdcm
173 //-----------------------------------------------------------------------------
174 #endif