Program: gdcm
Module: $RCSfile: gdcmDicomDirElement.cxx,v $
Language: C++
- Date: $Date: 2005/06/24 10:55:58 $
- Version: $Revision: 1.38 $
+ Date: $Date: 2007/05/23 14:18:08 $
+ Version: $Revision: 1.45 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
#include <fstream>
#include <iostream>
-namespace gdcm
+namespace GDCM_NAME_SPACE
{
//-----------------------------------------------------------------------------
/// \brief auto generate function, to fill up the default elements for
else
{
char buff[1024];
+ char buff2[1024];
std::string strType;
- Element elem;
+ DicomElement elem;
DicomDirType type;
-
while (!from.eof())
{
from >> std::ws;
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;
+ if ( strType == "imageElem" )
+ type = DD_IMAGE;
else if ( strType == "serieElem" )
type = DD_SERIE;
- else if ( strType == "imageElem" )
- type = DD_IMAGE;
+ else if ( strType == "studyElem" )
+ type = DD_STUDY;
+ else if ( strType == "patientElem" )
+ type = DD_PATIENT;
+ else if ( strType == "metaElem" )
+ type = DD_META;
else
{
- gdcmWarningMacro("Unknown type found in the file : "
- <<filename.c_str());
+ gdcmWarningMacro("Unknown type (" << strType
+ << ") found in the file : "
+ << filename.c_str());
type = DD_UNKNOWN;
}
if ( type!=DD_UNKNOWN )
{
- from >> std::hex >> elem.Group >> elem.Elem;
+ from >> std::hex >> elem.Group >> elem.Elem;// >> elem.VR;
+ from.getline(buff2, 1024, '"');
+ from >> std::ws;
+ from.getline(buff2, 1024, '"');
+ elem.VR[0] = buff2[0];
+ elem.VR[1] = buff2[1];
+ // std::cout << "VR : [" << elem.VR[0] << elem.VR[1] << "]" << std::endl; // JPR
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');
* @param type Element type (DD_PATIENT, DD_STUDY, DD_SERIE, DD_IMAGE)
* @param elem elem
*/
-bool DicomDirElement::AddEntry(DicomDirType type, Element const &elem)
+bool DicomDirElement::AddEntry(DicomDirType type, DicomElement const &elem)
{
switch( type )
{
- case DD_META :
- DicomDirMetaList.push_back(elem);
+ case DD_IMAGE :
+ DicomDirImageList.push_back(elem);
break;
- case DD_PATIENT :
- DicomDirPatientList.push_back(elem);
+ case DD_SERIE :
+ DicomDirSerieList.push_back(elem);
break;
case DD_STUDY :
DicomDirStudyList.push_back(elem);
break;
- case DD_SERIE :
- DicomDirSerieList.push_back(elem);
+ case DD_PATIENT :
+ DicomDirPatientList.push_back(elem);
break;
- case DD_IMAGE :
- DicomDirImageList.push_back(elem);
+ case DD_META :
+ DicomDirMetaList.push_back(elem);
break;
default :
return false;
* @param type Element type (DD_PATIENT, DD_STUDY, DD_SERIE, DD_IMAGE)
* @param group Group number of the entry to be added
* @param elem Element number of the entry to be added
+ * @param vr Value Representation of the entry to be added
*/
void DicomDirElement::AddDicomDirElement(DicomDirType type,
- uint16_t group, uint16_t elem)
+ uint16_t group, uint16_t elem, VRKey vr)
{
- Element el;
+ DicomElement el;
el.Group = group;
el.Elem = elem;
+ el.VR = vr;
el.Value = "";
AddEntry(type, el);
}
+
//-----------------------------------------------------------------------------
// Protected
* \brief Print all
* @param os The output stream to be written to.
*/
-void DicomDirElement::Print(std::ostream &os)
+void DicomDirElement::Print(std::ostream &os,std::string const &)
{
std::ostringstream s;
- std::list<Element>::iterator it;
- //char greltag[10]; //group element tag
- std::string greltag;
+ std::list<DicomElement>::iterator it;
+ TagKey greltag;
s << "Meta Elements :"<<std::endl;
for (it = DicomDirMetaList.begin(); it != DicomDirMetaList.end(); ++it)