Program: gdcm
Module: $RCSfile: exPresentationState.cxx,v $
Language: C++
- Date: $Date: 2009/05/25 14:29:16 $
- Version: $Revision: 1.2 $
+ 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
#include "gdcmSeqEntry.h"
#include "gdcmSQItem.h"
#include "gdcmDocEntrySet.h"
-#include "gdcmSerieHelper.h"
+//#include "gdcmSerieHelper.h"
#include "gdcmDirList.h"
#include "gdcmUtil.h"
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);
" 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 ------
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" <<std::endl;
+ std::cout << "=====================================================[" << PSName << "]==" << resFile << std::endl;
+ return resFile;
+}
-// =================================================================================
+//----------------------------------------------------------------------------------------------------
+bool dealWithCurrentFile(const char *PSName)
+{
GDCM_NAME_SPACE::File *fPS = GDCM_NAME_SPACE::File::New( );
fPS->SetFileName( PSName );
std::cout << "Sorry, " << PSName << " not a gdcm-readable "
<< "DICOM / ACR File"
<< std::endl;
- f->Delete();
- return 1;
+ fPS->Delete();
+ return false;
}
GDCM_NAME_SPACE::SeqEntry *se;
//displaySeekResult(se, 0x0070, 0x0001);
if (!se)
{
- std::cout << "Hopeless : " << std::hex << 0x0070 << "|" << 0x0001 << std::dec << " doesn't exist..." <<std::endl;
- exit (0);
+ std::cout << "[" << PSName << "] : Hopeless (" << std::hex << 0x0070 << "|" << 0x0001 << std::dec << " doesn't exist...)" <<std::endl;
+ return false;
}
-
+ std::cout << "\n\n =========================================================================================" <<std::endl;
std::cout << "[" << PSName << "] is a gdcm-readable PresentationState file, "
- << "that (probabely?) holds one or more 'ROI' within [0070|0001] (Graphic Annotation Sequence)\n" <<std::endl;
+ << "that (probabely?) holds one or more 'ROI' within [0070|0001] (Graphic Annotation Sequence)" <<std::endl;
+ std::cout << " =========================================================================================\n\n" <<std::endl;
GDCM_NAME_SPACE::SQItem* currentItem = se->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)
{
std::cout << "Sorry, [" << PSName << "] is not a gdcm-readable PresentationState file" <<std::endl;
}
*/
-
-
- f->Delete();
+
fPS->Delete();
-return 0;
+
+ std::cout << "\n\n" <<std::endl;
+ return true;
}
//----------------------------------------------------------------------------------------------------
for(int i=0; tabElement[i]!=0x0000; i++)
{
se = CheckIfSequenceExists(currentItem, 0x0070, tabElement[i]);
- displaySeekResult(se, 0x0070, tabElement[i]);
+ //displaySeekResult(se, 0x0070, tabElement[i]);
if (se != 0)
{
res = true;
0070 0404 SQ 1 Referenced Spatial Registration Sequence
0070 0405 CS 1 Blending Position
------------------------------------------------------- */
-
+return true;
}