1 /*=========================================================================
4 Module: $RCSfile: gdcmDicomDirElement.cxx,v $
6 Date: $Date: 2005/01/07 19:20:38 $
7 Version: $Revision: 1.25 $
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 void FillDefaultDIRDict(DicomDirElement *dde);
30 //-----------------------------------------------------------------------------
31 // Constructor / Destructor
34 * \brief constructor : populates the chained lists
35 * from the file 'Dicts/DicomDir.dic'
37 DicomDirElement::DicomDirElement()
39 std::string filename = DictSet::BuildDictPath() + DICT_ELEM;
40 std::ifstream from(filename.c_str());
43 gdcmVerboseMacro( "DicomDirElement::DicomDirElement: can't open dictionary"
45 FillDefaultDIRDict( this );
56 from.getline(buff, 1024, ' ');
59 if( type == "metaElem" || type == "patientElem" ||
60 type == "studyElem" || type == "serieElem" ||
63 from >> std::hex >> elem.Group >> elem.Elem;
66 from.getline(buff, 1024, '"');
68 from.getline(buff, 1024, '"');
71 AddNewEntry(type, elem);
73 from.getline(buff, 1024, '\n');
80 * \ingroup DicomDirElement
81 * \brief canonical destructor
83 DicomDirElement::~DicomDirElement()
85 DicomDirMetaList.clear();
86 DicomDirPatientList.clear();
87 DicomDirStudyList.clear();
88 DicomDirSerieList.clear();
89 DicomDirImageList.clear();
92 //-----------------------------------------------------------------------------
95 * \ingroup DicomDirElement
97 * \todo add a 'Print Level' check
98 * @param os The output stream to be written to.
100 void DicomDirElement::Print(std::ostream &os)
102 std::ostringstream s;
103 std::list<Element>::iterator it;
104 //char greltag[10]; //group element tag
107 s << "Meta Elements :"<<std::endl;
108 for (it = DicomDirMetaList.begin(); it != DicomDirMetaList.end(); ++it)
110 greltag = Util::Format("%04x|%04x ",it->Group,it->Elem);
111 s << " (" << greltag << ") = " << it->Value << std::endl;
114 s << "Patient Elements :"<<std::endl;
115 for (it = DicomDirPatientList.begin(); it != DicomDirPatientList.end(); ++it)
117 greltag = Util::Format("%04x|%04x ",it->Group,it->Elem);
118 s << " (" << greltag << ") = " << it->Value << std::endl;
121 s << "Study Elements :"<<std::endl;
122 for (it = DicomDirStudyList.begin(); it != DicomDirStudyList.end(); ++it)
124 greltag = Util::Format("%04x|%04x ", it->Group, it->Elem);
125 s << " (" << greltag << ") = " << it->Value << std::endl;
128 s << "Serie Elements :"<<std::endl;
129 for (it = DicomDirSerieList.begin(); it != DicomDirSerieList.end(); ++it)
131 greltag = Util::Format("%04x|%04x ", it->Group, it->Elem);
132 s << " (" << greltag << ") = " << it->Value << std::endl;
135 s << "Image Elements :"<<std::endl;
136 for (it = DicomDirImageList.begin(); it != DicomDirImageList.end(); ++it)
138 greltag = Util::Format("%04x|%04x ", it->Group, it->Elem);
139 s << " (" << greltag << ") = " << it->Value << std::endl;
145 //-----------------------------------------------------------------------------
148 bool DicomDirElement::AddNewEntry(std::string const &type,
151 if( type == "metaElem" )
153 DicomDirMetaList.push_back(elem);
155 else if( type == "patientElem" )
157 DicomDirPatientList.push_back(elem);
159 else if( type == "studyElem" )
161 DicomDirStudyList.push_back(elem);
163 else if( type == "serieElem" )
165 DicomDirSerieList.push_back(elem);
167 else if( type == "imageElem" )
169 DicomDirImageList.push_back(elem);
177 //-----------------------------------------------------------------------------
180 //-----------------------------------------------------------------------------
183 //-----------------------------------------------------------------------------
185 } // end namespace gdcm