00001 /*========================================================================= 00002 00003 Program: gdcm 00004 Module: $RCSfile: gdcmDicomDirSerie.h,v $ 00005 Language: C++ 00006 Date: $Date: 2007/08/22 16:14:03 $ 00007 Version: $Revision: 1.37 $ 00008 00009 Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de 00010 l'Image). All rights reserved. See Doc/License.txt or 00011 http://www.creatis.insa-lyon.fr/Public/Gdcm/License.html for details. 00012 00013 This software is distributed WITHOUT ANY WARRANTY; without even 00014 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00015 PURPOSE. See the above copyright notices for more information. 00016 00017 =========================================================================*/ 00018 00019 #ifndef _GDCMDICOMDIRSERIE_H_ 00020 #define _GDCMDICOMDIRSERIE_H_ 00021 00022 #include "gdcmDicomDirObject.h" 00023 00024 namespace GDCM_NAME_SPACE 00025 { 00026 class DicomDirImage; 00027 class DicomDirPrivate; 00028 00029 //----------------------------------------------------------------------------- 00030 typedef std::list<DicomDirImage *> ListDicomDirImage; 00031 typedef std::list<DicomDirPrivate *> ListDicomDirPrivate; 00032 //----------------------------------------------------------------------------- 00037 class GDCM_EXPORT DicomDirSerie : public DicomDirObject 00038 { 00039 gdcmTypeMacro(DicomDirSerie); 00040 00041 public: 00043 static DicomDirSerie *New(bool empty=false) {return new DicomDirSerie(empty);} 00044 00045 void Print( std::ostream &os = std::cout, std::string const &indent = "" ); 00046 void WriteContent( std::ofstream *fp, FileType t, bool insideMetaElements ); 00047 00048 // 'Image' methods 00049 DicomDirImage *NewImage(); 00051 void AddImage(DicomDirImage *obj) { Images.push_back(obj); } 00052 void ClearImage(); 00053 00054 DicomDirImage *GetFirstImage(); 00055 DicomDirImage *GetNextImage(); 00057 int GetNumberOfImages() { return Images.size();} 00058 00059 // 'Private' methods (For SIEMENS 'CSA non image') 00060 DicomDirPrivate *NewPrivate(); 00062 void AddPrivate(DicomDirPrivate *obj) { Privates.push_back(obj); } 00063 void ClearPrivate(); 00064 00065 DicomDirPrivate *GetFirstPrivate(); 00066 DicomDirPrivate *GetNextPrivate(); 00068 int GetNumberOfPrivates() { return Privates.size();} 00069 00070 virtual void Copy(DocEntrySet *set); 00071 00072 protected: 00073 DicomDirSerie(bool empty=false); 00074 ~DicomDirSerie(); 00075 00076 private: 00078 ListDicomDirImage Images; 00080 ListDicomDirImage::iterator ItImage; 00081 00083 ListDicomDirPrivate Privates; 00085 ListDicomDirPrivate::iterator ItPrivate; 00086 /* 00087 // for future use (Full DICOMDIR): 00088 00090 ListDicomDirOverlay Overlays; 00092 ListDicomDirOverlay::iterator ItOverlay; 00093 00095 ListDicomDirModalityLut ModalityLuts; 00097 ListDicomDirModalityLut::iterator ItModalityLuts; 00098 00100 ListDicomDirCurve Curves; 00102 ListDicomDirCurve::iterator ItCurves; 00103 00105 ListDicomDirStoredPrint StoredPrints; 00107 ListDicomDirStoredPrint::iterator ItStoredPrints; 00108 00110 ListDicomDirRtDose RtDoses; 00112 ListDicomDirRtDose::iterator ItRtDoses; 00113 00115 ListDicomDirRtStructureSet RtStructureSets; 00117 ListDicomDirRtStructureSet::iterator ItRtStructureSets; 00118 00120 ListDicomDirRtPlan RtPlans; 00122 ListDicomDirPlan::iterator ItRtPlans; 00123 00125 ListDicomDirRtTreatRecord RtTreatRecords; 00127 ListDicomDirRtTreatRecord::iterator ItRtTreatRecords; 00128 00130 ListDicomDirPresentation Presentations; 00132 ListDicomDirPresentation::iterator ItPresentations; 00133 00135 ListDicomDirWaveForm WaveForms; 00137 ListDicomDirWaveForm::iterator ItWaveForms; 00138 00140 ListDicomDirSrDocument SrDocuments; 00142 ListDicomDirSrDocument::iterator ItSrDocuments; 00143 00145 ListDicomDirKeyObjectDoc KeyObjectDocs; 00147 ListDicomDirKeyObjectDoc::iterator ItKeyObjectDocs; 00148 00150 ListDicomDirSpectroscopy Spectroscopys; 00152 ListDicomDirSpectroscopy::iterator ItSpectroscopys; 00153 00155 ListDicomDirRawData RawDatas; 00157 ListDicomDirRawData::iterator ItRawDatas; 00158 00160 ListDicomDirRegistration Registrations; 00162 ListDicomDirRegistration::iterator ItRegistrations; 00163 00165 ListDicomDirFiducial Fiducials; 00167 ListDicomDirFiducial::iterator ItFiducials; 00168 */ 00169 00170 }; 00171 } // end namespace gdcm 00172 //----------------------------------------------------------------------------- 00173 #endif