X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=Example%2FTestFromScratch.cxx;h=e9760b86cc997558a3f98b031c05b72e0af57d64;hb=69b082c0e06ced34232a2856be41da0f47217032;hp=27fd2627474ddaba7bd1c81b3f73de4b2fb8c5ff;hpb=02899c034acb29e15219663f18bfee580fdfb266;p=gdcm.git diff --git a/Example/TestFromScratch.cxx b/Example/TestFromScratch.cxx index 27fd2627..e9760b86 100644 --- a/Example/TestFromScratch.cxx +++ b/Example/TestFromScratch.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: TestFromScratch.cxx,v $ Language: C++ - Date: $Date: 2004/12/10 15:50:04 $ - Version: $Revision: 1.1 $ + Date: $Date: 2005/01/14 11:28:28 $ + Version: $Revision: 1.8 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -19,6 +19,7 @@ #include "gdcmFile.h" #include "gdcmDictEntry.h" #include "gdcmDocEntry.h" +#include "gdcmBinEntry.h" #include "gdcmValEntry.h" #include "gdcmDebug.h" @@ -35,7 +36,8 @@ int main(int argc, char *argv[]) } // Doesn't seems to do anything: - dbg.SetDebug(-1); + gdcm::Debug::SetDebugOn(); + // Doesn't link properly: //gdcm::Debug::GetReference().SetDebug(1); @@ -52,39 +54,36 @@ int main(int argc, char *argv[]) // Hopefully default to something gdcm::Header *h2 = new gdcm::Header(); - const gdcm::TagDocEntryHT &nameHt = h1->GetTagHT(); - //const gdcm::TagDocEntryHT &nameHt = h2->GetTagHT(); seems to be empty ?? - for (gdcm::TagDocEntryHT::const_iterator tag = nameHt.begin(); tag != nameHt.end(); ++tag) + // Copy of the header content + h1->InitTraversal(); + gdcm::DocEntry* d = h1->GetNextEntry(); + while(d) { - //Copy string only: - if (tag->second->GetVR().find("SQ") == 0) - { - // skip DICOM SeQuence, otherwise following cast will crash - continue; - } - const std::string &name = tag->second->GetName(); - const std::string &value = ((gdcm::ValEntry*)(tag->second))->GetValue(); - if( name != "unkn" - && value.find( "gdcm::NotLoaded" ) != 0 - && value.find( "gdcm::Binary" ) != 0 - && value.find( "gdcm::Loaded" ) != 0 ) - { - //std::cout << name << "," << value << std::endl; - gdcm::DictEntry *dictEntry = h2->GetPubDict()->GetDictEntryByName(name); - h2->ReplaceOrCreateByNumber( value, dictEntry->GetGroup(), dictEntry->GetElement()); + if ( gdcm::ValEntry* v = dynamic_cast(d) ) + { + // Do not bother with field from private dict + if( v->GetName() != "gdcm::Unknown" ) + { + h2->ReplaceOrCreate( + v->GetValue(), + v->GetGroup(), + v->GetElement(), + v->GetVR() ); + } } - } + //else + // We skip pb of SQ recursive exploration + // We skip bin entries - h2->ReplaceOrCreateByNumber( imageData, dataSize, 0x7fe0, 0x0010, "PXL" ); + d = h1->GetNextEntry(); + } h2->Print( std::cout ); gdcm::File *f2 = new gdcm::File( h2 ); - - // SetImageData does not work because you need to have called - // somwhow ReplaceOrCreateByNumber before with the proper group/element f2->SetImageData(imageData, dataSize); - f2->WriteDcmExplVR( "output.dcm" ); + f2->SetWriteTypeToDcmExplVR(); + f2->Write( "output.dcm" ); delete f1; delete f2;