X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmDicomDirElement.cxx;h=66665db6476f68e3f32eac05dbd24fd609bbf2b6;hb=7350639601914cd8ab02bfb0d6668c5bf56ce2f4;hp=d4831c9b062bf084b01075c34842c9d5c9191671;hpb=c9dd24ae7aab3c9f32af740ebfce6dfb47bd855f;p=gdcm.git diff --git a/src/gdcmDicomDirElement.cxx b/src/gdcmDicomDirElement.cxx index d4831c9b..66665db6 100644 --- a/src/gdcmDicomDirElement.cxx +++ b/src/gdcmDicomDirElement.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmDicomDirElement.cxx,v $ Language: C++ - Date: $Date: 2004/10/10 00:42:54 $ - Version: $Revision: 1.19 $ + Date: $Date: 2005/02/01 10:29:54 $ + Version: $Revision: 1.33 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -24,73 +24,79 @@ #include #include +namespace gdcm +{ //----------------------------------------------------------------------------- -// Constructor / Destructor +void FillDefaultDIRDict(DicomDirElement *dde); +//----------------------------------------------------------------------------- +// Constructor / Destructor /** * \brief constructor : populates the chained lists * from the file 'Dicts/DicomDir.dic' */ -gdcmDicomDirElement::gdcmDicomDirElement() +DicomDirElement::DicomDirElement() { - std::string filename = gdcmDictSet::BuildDictPath() + std::string(DICT_ELEM); + std::string filename = DictSet::BuildDictPath() + DICT_ELEM; std::ifstream from(filename.c_str()); - dbg.Error(!from, "gdcmDicomDirElement::gdcmDicomDirElement: can't open dictionary", - filename.c_str()); - - char buff[1024]; - std::string type; - gdcmElement elem; - - while (!from.eof()) + if(!from) { - from >> std::ws; - from.getline(buff, 1024, ' '); - type = buff; + gdcmVerboseMacro( "Can't open DicomDirElement dictionary" + << filename.c_str()); + FillDefaultDIRDict( this ); + } + else + { + char buff[1024]; + std::string strType; + Element elem; + DicomDirType type; - if( (type=="metaElem") || (type=="patientElem") || - (type=="studyElem") || (type=="serieElem") || - (type=="imageElem") ) + while (!from.eof()) { - from >> std::hex >> elem.Group >> elem.Elem; - from >> std::ws; - from.getline(buff, 1024, '"'); - from >> std::ws; - from.getline(buff, 1024, '"'); - elem.Value = buff; - - if( type == "metaElem" ) + from.getline(buff, 1024, ' '); + strType = buff; + + if( strType == "metaElem" ) + type = DD_META; + else if( strType == "patientElem" ) + type = DD_PATIENT; + else if( strType == "studyElem" ) + type = DD_STUDY; + else if( strType == "serieElem" ) + type = DD_SERIE; + else if( strType == "imageElem" ) + type = DD_IMAGE; + else { - DicomDirMetaList.push_back(elem); + gdcmVerboseMacro("Unknown type found in the file : " + <> std::hex >> elem.Group >> elem.Elem; + + from >> std::ws; + from.getline(buff, 1024, '"'); + from >> std::ws; + from.getline(buff, 1024, '"'); + elem.Value = buff; + + AddEntry(type, elem); } + from.getline(buff, 1024, '\n'); } - from.getline(buff, 1024, '\n'); + from.close(); } - from.close(); } /** - * \ingroup gdcmDicomDirElement * \brief canonical destructor */ -gdcmDicomDirElement::~gdcmDicomDirElement() +DicomDirElement::~DicomDirElement() { DicomDirMetaList.clear(); DicomDirPatientList.clear(); @@ -99,53 +105,89 @@ gdcmDicomDirElement::~gdcmDicomDirElement() DicomDirImageList.clear(); } +//----------------------------------------------------------------------------- +// Public +/** + * \brief Add an entry + * @param type type + * @param elem elem + */ +bool DicomDirElement::AddEntry(DicomDirType type, Element const &elem) +{ + switch( type ) + { + case DD_META : + DicomDirMetaList.push_back(elem); + break; + case DD_PATIENT : + DicomDirPatientList.push_back(elem); + break; + case DD_STUDY : + DicomDirStudyList.push_back(elem); + break; + case DD_SERIE : + DicomDirSerieList.push_back(elem); + break; + case DD_IMAGE : + DicomDirImageList.push_back(elem); + break; + default : + return false; + } + return true; +} + +//----------------------------------------------------------------------------- +// Protected + +//----------------------------------------------------------------------------- +// Private + //----------------------------------------------------------------------------- // Print /** - * \ingroup gdcmDicomDirElement * \brief Print all - * \todo add a 'Print Level' check * @param os The output stream to be written to. */ -void gdcmDicomDirElement::Print(std::ostream &os) +void DicomDirElement::Print(std::ostream &os) { std::ostringstream s; - std::list::iterator it; + std::list::iterator it; //char greltag[10]; //group element tag std::string greltag; s << "Meta Elements :"<Group,it->Elem); + greltag = Util::Format("%04x|%04x ",it->Group,it->Elem); s << " (" << greltag << ") = " << it->Value << std::endl; } s << "Patient Elements :"<Group,it->Elem); + greltag = Util::Format("%04x|%04x ",it->Group,it->Elem); s << " (" << greltag << ") = " << it->Value << std::endl; } s << "Study Elements :"<Group, it->Elem); + greltag = Util::Format("%04x|%04x ", it->Group, it->Elem); s << " (" << greltag << ") = " << it->Value << std::endl; } s << "Serie Elements :"<Group, it->Elem); + greltag = Util::Format("%04x|%04x ", it->Group, it->Elem); s << " (" << greltag << ") = " << it->Value << std::endl; } s << "Image Elements :"<Group, it->Elem); + greltag = Util::Format("%04x|%04x ", it->Group, it->Elem); s << " (" << greltag << ") = " << it->Value << std::endl; } @@ -153,12 +195,4 @@ void gdcmDicomDirElement::Print(std::ostream &os) } //----------------------------------------------------------------------------- -// Public - -//----------------------------------------------------------------------------- -// Protected - -//----------------------------------------------------------------------------- -// Private - -//----------------------------------------------------------------------------- +} // end namespace gdcm