1 /*=========================================================================
4 Module: $RCSfile: gdcmDicomDirElement.cxx,v $
6 Date: $Date: 2004/10/12 04:35:44 $
7 Version: $Revision: 1.20 $
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.
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.
17 =========================================================================*/
19 #include "gdcmDicomDirElement.h"
21 #include "gdcmDebug.h"
22 #include "gdcmDictSet.h"
29 //-----------------------------------------------------------------------------
30 // Constructor / Destructor
33 * \brief constructor : populates the chained lists
34 * from the file 'Dicts/DicomDir.dic'
36 DicomDirElement::DicomDirElement()
38 std::string filename = DictSet::BuildDictPath() + std::string(DICT_ELEM);
39 std::ifstream from(filename.c_str());
40 dbg.Error(!from, "DicomDirElement::DicomDirElement: can't open dictionary",
50 from.getline(buff, 1024, ' ');
53 if( (type=="metaElem") || (type=="patientElem") ||
54 (type=="studyElem") || (type=="serieElem") ||
57 from >> std::hex >> elem.Group >> elem.Elem;
60 from.getline(buff, 1024, '"');
62 from.getline(buff, 1024, '"');
65 if( type == "metaElem" )
67 DicomDirMetaList.push_back(elem);
69 else if( type == "patientElem" )
71 DicomDirPatientList.push_back(elem);
73 else if( type == "studyElem" )
75 DicomDirStudyList.push_back(elem);
77 else if( type == "serieElem" )
79 DicomDirSerieList.push_back(elem);
81 else if( type == "imageElem" )
83 DicomDirImageList.push_back(elem);
86 from.getline(buff, 1024, '\n');
92 * \ingroup DicomDirElement
93 * \brief canonical destructor
95 DicomDirElement::~DicomDirElement()
97 DicomDirMetaList.clear();
98 DicomDirPatientList.clear();
99 DicomDirStudyList.clear();
100 DicomDirSerieList.clear();
101 DicomDirImageList.clear();
104 //-----------------------------------------------------------------------------
107 * \ingroup DicomDirElement
109 * \todo add a 'Print Level' check
110 * @param os The output stream to be written to.
112 void DicomDirElement::Print(std::ostream &os)
114 std::ostringstream s;
115 std::list<Element>::iterator it;
116 //char greltag[10]; //group element tag
119 s << "Meta Elements :"<<std::endl;
120 for (it = DicomDirMetaList.begin(); it != DicomDirMetaList.end(); ++it)
122 greltag = Util::Format("%04x|%04x ",it->Group,it->Elem);
123 s << " (" << greltag << ") = " << it->Value << std::endl;
126 s << "Patient Elements :"<<std::endl;
127 for (it = DicomDirPatientList.begin(); it != DicomDirPatientList.end(); ++it)
129 greltag = Util::Format("%04x|%04x ",it->Group,it->Elem);
130 s << " (" << greltag << ") = " << it->Value << std::endl;
133 s << "Study Elements :"<<std::endl;
134 for (it = DicomDirStudyList.begin(); it != DicomDirStudyList.end(); ++it)
136 greltag = Util::Format("%04x|%04x ", it->Group, it->Elem);
137 s << " (" << greltag << ") = " << it->Value << std::endl;
140 s << "Serie Elements :"<<std::endl;
141 for (it = DicomDirSerieList.begin(); it != DicomDirSerieList.end(); ++it)
143 greltag = Util::Format("%04x|%04x ", it->Group, it->Elem);
144 s << " (" << greltag << ") = " << it->Value << std::endl;
147 s << "Image Elements :"<<std::endl;
148 for (it = DicomDirImageList.begin(); it != DicomDirImageList.end(); ++it)
150 greltag = Util::Format("%04x|%04x ", it->Group, it->Elem);
151 s << " (" << greltag << ") = " << it->Value << std::endl;
157 //-----------------------------------------------------------------------------
160 //-----------------------------------------------------------------------------
163 //-----------------------------------------------------------------------------
166 //-----------------------------------------------------------------------------
168 } // end namespace gdcm