From 795cc4e4921f94e0f759935bfc931e25ae12c865 Mon Sep 17 00:00:00 2001 From: Frederic Cervenansky Date: Mon, 26 Apr 2010 11:57:44 +0000 Subject: [PATCH] Dicom Dump with gdcm2 --- src/creaImageIODicomImageReader2.cpp | 2 +- src/creaImageIODicomScanner.cpp | 13 +-------- src/creaImageIOWxDumpPanel.cpp | 41 ++++++++++++++++++++-------- 3 files changed, 32 insertions(+), 24 deletions(-) diff --git a/src/creaImageIODicomImageReader2.cpp b/src/creaImageIODicomImageReader2.cpp index c736e16..7361034 100644 --- a/src/creaImageIODicomImageReader2.cpp +++ b/src/creaImageIODicomImageReader2.cpp @@ -131,7 +131,7 @@ namespace creaImageIO tree::AttributeDescriptor::GetDicomGroupElementFromKey(i->first,gr,el); if ( ( gr!=0 ) && ( el!=0 ) ) { - gdcm::DataElement de( gdcm::Tag(gr,el) ); + std::string val = GetStringValueFromTag(reader.GetFile().GetDataSet().GetDataElement(gdcm::Tag(gr,el))); i->second = irclean(val); } diff --git a/src/creaImageIODicomScanner.cpp b/src/creaImageIODicomScanner.cpp index 43706c1..88fe948 100644 --- a/src/creaImageIODicomScanner.cpp +++ b/src/creaImageIODicomScanner.cpp @@ -133,20 +133,9 @@ void DicomImageScanner::ReadAttributes(const std::string& filename, gdcm::Scanner::TagToValue::const_iterator it = mapping.begin(); std::map::iterator i; - int j= 0; - - for (;it != mapping.end(); ++it) - { - /*std::stringstream val; - val << "D"; - val << std::hex << it->first.GetGroup() ; - val << "_";; - val << std::hex << it->first.GetElement(); - var >> key*/ - char key[12] ; - + { char key[12] ; sprintf(key,"D%04x_%04x", it->first.GetGroup(), it->first.GetElement()); attr[key] = irclean(it->second); } diff --git a/src/creaImageIOWxDumpPanel.cpp b/src/creaImageIOWxDumpPanel.cpp index 843db48..05b2da9 100644 --- a/src/creaImageIOWxDumpPanel.cpp +++ b/src/creaImageIOWxDumpPanel.cpp @@ -8,6 +8,14 @@ #include "gdcmDocument.h" #include "gdcmFileHelper.h" #endif + +#if defined(USE_GDCM2) +#include "gdcmGlobal.h" +#include "gdcmFile.h" +#include "gdcmDictPrinter.h" +#include "gdcmPrinter.h" +#include "gdcmReader.h" +#endif #include "icons/save.xpm" namespace creaImageIO @@ -36,9 +44,12 @@ namespace creaImageIO void WxDumpPanel::Print() { std::stringstream os; + std::string result = ""; if ( !filename.empty()) // ====== Deal with a single file ====== { - /* GDCM_NAME_SPACE::File *f = GDCM_NAME_SPACE::File::New(); + +#if defined(USE_GDCM) + GDCM_NAME_SPACE::File *f = GDCM_NAME_SPACE::File::New(); f->SetLoadMode(GDCM_NAME_SPACE::LD_ALL); f->SetFileName( filename ); f->SetMaxSizeLoadEntry(0xffff); @@ -47,22 +58,30 @@ namespace creaImageIO f->SetLoadMode(GDCM_NAME_SPACE::LD_NOSEQ |GDCM_NAME_SPACE::LD_NOSHADOW); fh->SetPrintLevel( 0 ); fh->Print(os); - std::string result; + std::string line; while(std::getline(os, line)) { result +=clean(line.c_str()); result += "\n"; } - DumpText->SetValue(crea::std2wx(result)); - - std::string pixelType =f->GetPixelType(); - int nX,nY,nZ,nT,sPP,planarConfig; - - nX=f->GetXSize(); - nY=f->GetYSize(); - nZ=f->GetZSize(); - nT=f->GetTSize();*/ + + +#endif +#if defined(USE_GDCM2) + gdcm::Reader reader; + reader.SetFileName( filename.c_str() ); + if (reader.Read()) + { + gdcm::Printer printer; + printer.SetFile ( reader.GetFile() ); + printer.SetColor( 0 ); + printer.Print( os ); + result = os.str(); + } +#endif + DumpText->SetValue(crea::std2wx(result)); + } } -- 2.45.1