]> Creatis software - gdcm.git/blobdiff - Example/exPresentationState.cxx
Synchronize (fix comments, misstyping, re ident, etc)
[gdcm.git] / Example / exPresentationState.cxx
index 49aab7341402f72c454e69015c207b3b8616325a..64e33e21a770cb042f446bd3085b309a4f631fbf 100644 (file)
@@ -4,8 +4,8 @@
   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
@@ -25,7 +25,7 @@
 #include "gdcmSeqEntry.h"
 #include "gdcmSQItem.h"
 #include "gdcmDocEntrySet.h"
-#include "gdcmSerieHelper.h"
+//#include "gdcmSerieHelper.h"
 #include "gdcmDirList.h"
 #include "gdcmUtil.h"
 
@@ -33,6 +33,7 @@
   
   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);
@@ -54,6 +55,10 @@ int main(int argc, char *argv[])
    "       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 ------
@@ -85,34 +90,22 @@ 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"  <<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 );
@@ -123,8 +116,8 @@ int main(int argc, char *argv[])
        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;
@@ -133,14 +126,19 @@ int main(int argc, char *argv[])
    //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)
    {
@@ -166,11 +164,11 @@ int main(int argc, char *argv[])
      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;
 }
 
 //----------------------------------------------------------------------------------------------------
@@ -197,7 +195,7 @@ bool dealWithTopLevelItem(GDCM_NAME_SPACE::SQItem* currentItem)
    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;
@@ -378,7 +376,7 @@ Relevant part of Dicom V3 Dict
 0070 0404 SQ 1 Referenced Spatial Registration Sequence
 0070 0405 CS 1 Blending Position
 ------------------------------------------------------- */
-
+return true;
 }