X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=Example%2FMakeDicomDir.cxx;h=2fc7051e17dea5693e1f34db09c39649bce0e4df;hb=81b83abc1f19db44870ea35907c5f6a102ba5c64;hp=9f9ac06b58da7e0deef42d9ae36af37d731b4a70;hpb=bbfa3cf89fc2ede7c43259e945f021044b56069f;p=gdcm.git diff --git a/Example/MakeDicomDir.cxx b/Example/MakeDicomDir.cxx index 9f9ac06b..2fc7051e 100644 --- a/Example/MakeDicomDir.cxx +++ b/Example/MakeDicomDir.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: MakeDicomDir.cxx,v $ Language: C++ - Date: $Date: 2005/02/02 14:26:30 $ - Version: $Revision: 1.1 $ + Date: $Date: 2006/01/26 15:52:42 $ + Version: $Revision: 1.20 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -19,55 +19,146 @@ #include "gdcmDicomDir.h" #include "gdcmDicomDirPatient.h" #include "gdcmDirList.h" +#include "gdcmDebug.h" +#include "gdcmArgMgr.h" #include -// --- -void StartMethod(void *toto) { - (void)toto; - std::cout<<"Start parsing"< 1) - dirName = argv[1]; - else - dirName = GDCM_DATA_ROOT; + // ----- Initialize Arguments Manager ------ + gdcm::ArgMgr *am = new gdcm::ArgMgr(argc, argv); + + if (argc == 1 || am->ArgMgrDefined("usage")) + { + am->ArgMgrUsage(usage); // Display 'usage' + delete am; + return 0; + } - dcmdir = new gdcm::DicomDir(dirName, true); // we ask for Directory parsing + const char *dirName; + dirName = am->ArgMgrGetString("dirName","."); - dcmdir->SetStartMethod(StartMethod, (void *) NULL); - dcmdir->SetEndMethod(EndMethod); + const char *name; + name = am->ArgMgrGetString("name","DICOMDIR"); - if ( !dcmdir->GetFirstEntry() ) + int loadMode = gdcm::LD_ALL; + if ( am->ArgMgrDefined("noshadowseq") ) + loadMode |= gdcm::LD_NOSHADOWSEQ; + else { - std::cout << "makeDicomDir: no patient list present. Exiting." + if ( am->ArgMgrDefined("noshadow") ) + loadMode |= gdcm::LD_NOSHADOW; + if ( am->ArgMgrDefined("noseq") ) + loadMode |= gdcm::LD_NOSEQ; + } + + if (am->ArgMgrDefined("debug")) + gdcm::Debug::DebugOn(); + + int check = am->ArgMgrDefined("check"); + + // if unused Param we give up + if ( am->ArgMgrPrintUnusedLabels() ) + { + am->ArgMgrUsage(usage); + delete am; + return 0; + } + + delete am; // we don't need Argument Manager any longer + + // ----- Begin Processing ----- + + gdcm::DicomDir *dcmdir; + + // we ask for Directory parsing + + dcmdir = gdcm::DicomDir::New( ); + + dcmdir->SetLoadMode(loadMode); + dcmdir->SetDirectoryName(dirName); + //dcmdir->SetParseDir(true); + dcmdir->Load(); + + if ( gdcm::Debug::GetDebugFlag() ) + std::cout << "======================= End Parsing Directory" << std::endl; + + // ----- Check the result + + if ( !dcmdir->GetFirstPatient() ) + { + std::cout << "makeDicomDir: no patient found. Exiting." << std::endl; + dcmdir->Delete(); return 1; } - dcmdir->WriteDicomDir("NewDICOMDIR"); - std::cout<Write(name); + dcmdir->Delete(); + + if (check) + { + if ( gdcm::Debug::GetDebugFlag() ) + std::cout << "======================= End Writting DICOMDIR" + << std::endl; + + // Read from disc the just written DicomDir + + gdcm::DicomDir *newDicomDir = gdcm::DicomDir::New(); + newDicomDir->SetFileName( name ); + newDicomDir->Load(); + if ( gdcm::Debug::GetDebugFlag() ) + std::cout << "======================= End Parsing DICOMDIR" + << std::endl; + if( !newDicomDir->IsReadable() ) + { + std::cout<<" Written DicomDir [" << name << "] " + <<" is not readable"<Delete(); + return 1; + } + + if( !newDicomDir->GetFirstPatient() ) + { + std::cout <<" Written DicomDir [" << name << "] " + <<" has no patient"<Delete(); + return(1); + } + std::cout<Delete(); + } return 0; }