X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=Example%2FexPresentationState.cxx;h=64e33e21a770cb042f446bd3085b309a4f631fbf;hb=d0f6827609a499057f4bad725522060590af3d82;hp=343deac8593837bd37b6ca6fe2b3328cfdbbc0bb;hpb=98ce3757591bf238566788a48c03a63bb56c8408;p=gdcm.git diff --git a/Example/exPresentationState.cxx b/Example/exPresentationState.cxx index 343deac8..64e33e21 100644 --- a/Example/exPresentationState.cxx +++ b/Example/exPresentationState.cxx @@ -4,8 +4,8 @@ Program: gdcm Module: $RCSfile: exPresentationState.cxx,v $ Language: C++ - Date: $Date: 2009/05/20 09:45:30 $ - Version: $Revision: 1.1 $ + Date: $Date: 2010/09/01 14:41:48 $ + Version: $Revision: 1.5 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -25,14 +25,15 @@ #include "gdcmSeqEntry.h" #include "gdcmSQItem.h" #include "gdcmDocEntrySet.h" -#include "gdcmSerieHelper.h" +//#include "gdcmSerieHelper.h" #include "gdcmDirList.h" #include "gdcmUtil.h" #include "gdcmArgMgr.h" - GDCM_NAME_SPACE::SeqEntry *CheckIfSequenceExists(GDCM_NAME_SPACE::File *fPR, uint16_t gr, uint16_t el); + GDCM_NAME_SPACE::SeqEntry *CheckIfSequenceExists(GDCM_NAME_SPACE::File *fPS, uint16_t gr, uint16_t el); GDCM_NAME_SPACE::SeqEntry *CheckIfSequenceExists(GDCM_NAME_SPACE::SQItem *si, uint16_t gr, uint16_t el); + bool dealWithCurrentFile(const char *PSName); bool dealWithTopLevelItem(GDCM_NAME_SPACE::SQItem* currentItem); bool dealWithEndLevelItem(GDCM_NAME_SPACE::SQItem* currentItem); void displaySeekResult(GDCM_NAME_SPACE::SeqEntry* currentItem, uint16_t g, uint16_t e); @@ -48,12 +49,16 @@ int main(int argc, char *argv[]) "usage: exPresentationState {filein=inputFileName|dirin=inputDirectoryName}", " [ { [noshadowseq] | [noshadow][noseq] } ] [debug] ", " filein : Name of the image file ", - " PRFile : Name of the PresentationState file : ", + " PSFile : Name of the PresentationState file : ", " noshadowseq: user doesn't want to load Private Sequences ", " noshadow : user doesn't want to load Private groups (odd number) ", " noseq : user doesn't want to load Sequences ", " verbose : developper wants to run the program in 'verbose mode' ", " debug : developper wants to run the program in 'debug mode' ", + " ", + " you can use it as : ", + " for i in `ls PS*`; do exPresentationState PSFile=$i; done ", + " just to see ... ", FINISH_USAGE // ----- Initialize Arguments Manager ------ @@ -73,7 +78,7 @@ int main(int argc, char *argv[]) bool verbose = am->ArgMgrDefined("verbose"); const char *fileName = am->ArgMgrGetString("filein"); - const char *PRName = am->ArgMgrGetString("PRfile"); + const char *PSName = am->ArgMgrGetString("PSfile"); /* if unused Param we give up */ if ( am->ArgMgrPrintUnusedLabels() ) @@ -85,63 +90,55 @@ int main(int argc, char *argv[]) delete am; // ------ we don't need Arguments Manager any longer ------ // ============================================================ -// Read the input image. +// Read the input file. // ============================================================ GDCM_NAME_SPACE::File *f = GDCM_NAME_SPACE::File::New( ); -/* - //f->SetLoadMode(GDCM_NAME_SPACE::LD_NOSEQ | GDCM_NAME_SPACE::LD_NOSHADOW); - f->SetFileName( fileName ); - f->SetMaxSizeLoadEntry(0xffff); - bool res = f->Load(); +// ================================================================================= - if( GDCM_NAME_SPACE::Debug::GetDebugFlag()) - { - std::cout << "---------------------------------------------" << std::endl; - f->Print(); - std::cout << "---------------------------------------------" << std::endl; - } - if (!res) { - std::cerr << "Sorry, " << fileName << " not a gdcm-readable " - << "DICOM / ACR File" - << std::endl; - f->Delete(); - return 1; - } - std::cout << " ... is readable " << std::endl; -*/ + bool resFile = dealWithCurrentFile(PSName); + std::cout << "\n\n" <SetFileName( PRName ); - fPR->SetMaxSizeLoadEntry(0xffff); - bool res2 = fPR->Load(); + GDCM_NAME_SPACE::File *fPS = GDCM_NAME_SPACE::File::New( ); + fPS->SetFileName( PSName ); + fPS->SetMaxSizeLoadEntry(0xffff); + bool res2 = fPS->Load(); if (!res2) { - std::cout << "Sorry, " << PRName << " not a gdcm-readable " + std::cout << "Sorry, " << PSName << " not a gdcm-readable " << "DICOM / ACR File" << std::endl; - f->Delete(); - return 1; + fPS->Delete(); + return false; } - std::cout << " ... is readable " << std::endl; GDCM_NAME_SPACE::SeqEntry *se; - - se = CheckIfSequenceExists( fPR, 0x0070, 0x0001); + se = CheckIfSequenceExists( fPS, 0x0070, 0x0001); //displaySeekResult(se, 0x0070, 0x0001); if (!se) { - std::cout << "Hopeless : " << std::hex << 0x0070 << "|" << 0x0001 << std::dec << " doesn't exist..." <GetFirstSQItem(); // Get the first 'ROI' + if (currentItem == NULL) + { + std::cout << "======== Deal With NOTHING! (Sequence 0070|0001 [Graphic Annotation Sequence] has NO item ?!?)" << std::endl; + } int i =0; while (currentItem != NULL) { @@ -156,29 +153,30 @@ int main(int argc, char *argv[]) } /* - bool res3 = TestPresentationState(f, fPR); + bool res3 = TestPresentationState(f, fPS); if (res3) { - std::cout << "[" << PRName << "] is a gdcm-readable PresentationState file" <Delete(); - - f->Delete(); - fPR->Delete(); -return 0; + std::cout << "\n\n" <GetSeqEntry(gr, el); + GDCM_NAME_SPACE::SeqEntry *se= fPS->GetSeqEntry(gr, el); return se; }