]> Creatis software - gdcm.git/commitdiff
Deal with NOSHADOWSEQ option
authorjpr <jpr>
Tue, 5 Jul 2005 12:57:36 +0000 (12:57 +0000)
committerjpr <jpr>
Tue, 5 Jul 2005 12:57:36 +0000 (12:57 +0000)
Example/PrintFile.cxx

index b2eb2dec424c8eb2a6be387e06e9ad9a4d480c5a..b6fd6ce4fbaee82eb4db9f933cecce632bb8dbed 100644 (file)
@@ -3,8 +3,8 @@
   Program:   gdcm
   Module:    $RCSfile: PrintFile.cxx,v $
   Language:  C++
-  Date:      $Date: 2005/06/29 16:00:13 $
-  Version:   $Revision: 1.42 $
+  Date:      $Date: 2005/07/05 12:57:36 $
+  Version:   $Revision: 1.43 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
 #include <iostream>
 
 
-void ShowLutData(gdcm::File *e1);
+void ShowLutData(gdcm::File *f);
 
-void ShowLutData(gdcm::File *e1)
+void ShowLutData(gdcm::File *f)
 {
      // Nothing is written yet to get LUT Data user friendly
      // The following is to be moved into a PixelReadConvert method
      // Let here, waiting for a clever idea on the way to do it.
   
-      gdcm::SeqEntry *modLutSeq = e1->GetSeqEntry(0x0028,0x3000);
+      gdcm::SeqEntry *modLutSeq = f->GetSeqEntry(0x0028,0x3000);
       if ( modLutSeq !=0 )
       {
          gdcm::SQItem *sqi= modLutSeq->GetFirstSQItem();
@@ -71,7 +71,7 @@ void ShowLutData(gdcm::File *e1)
             gdcm::BinEntry *b = sqi->GetBinEntry(0x0028,0x3006); 
             if ( b != 0 )
             { 
-               int BitsAllocated = e1->GetBitsAllocated();
+               int BitsAllocated = f->GetBitsAllocated();
                if ( BitsAllocated <= 8 )
                { 
                   int mult;
@@ -123,18 +123,19 @@ int main(int argc, char *argv[])
    START_USAGE(usage)
    " \n PrintFile : \n",
    " Display the header of a ACR-NEMA/PAPYRUS/DICOM File",
-   " usage: PrintFile filein=fileName [level=n] [noshadow] [noseq] [debug] ",
+   " usage: PrintFile filein=fileName [level=n] [noshadowseq][noshadow][noseq][debug] ",
    "        level = 0,1,2 : depending on the amount of details user wants to see",
-   "        noshadow : user doesn't want to load Private groups (odd number)",
-   "        noseq    : user doesn't want to load Sequences ",
-   "        debug    : user wants to run the program in 'debug mode' ",
-   "        showlut  : user wants to display the Palette Color (as an int array)",
+   "        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 ",
+   "        debug      : user wants to run the program in 'debug mode' ",
+   "        showlut :user wants to display the Palette Color (as an int array)",
    FINISH_USAGE
 
    // Initialize Arguments Manager   
    gdcm::ArgMgr *am= new gdcm::ArgMgr(argc, argv);
   
-   if (argc == 1)
+   if (argc == 1 || am->ArgMgrDefined("usage") )
    {
       am->ArgMgrUsage(usage); // Display 'usage'
       delete am;
@@ -143,17 +144,16 @@ int main(int argc, char *argv[])
 
    char *fileName = am->ArgMgrWantString("filein",usage);
 
-   int loadMode;
+   int loadMode = 0x00000000;
    if ( am->ArgMgrDefined("noshadowseq") )
-      loadMode = NO_SHADOWSEQ;
-   else if ( am->ArgMgrDefined("noshadow") && am->ArgMgrDefined("noseq") )
-      loadMode = NO_SEQ | NO_SHADOW;  
-   else if ( am->ArgMgrDefined("noshadow") )
-      loadMode = NO_SHADOW;
-   else if ( am->ArgMgrDefined("noseq") )
-      loadMode = NO_SEQ;
-   else
-      loadMode = 0;
+      loadMode |= NO_SHADOWSEQ;
+   else 
+   {
+   if ( am->ArgMgrDefined("noshadow") )
+         loadMode |= NO_SHADOW;
+      if ( am->ArgMgrDefined("noseq") )
+         loadMode |= NO_SEQ;
+   }
 
    int level = am->ArgMgrGetInt("level", 2);
 
@@ -178,53 +178,53 @@ int main(int argc, char *argv[])
    // any kind of gdcm-Parsable *document* 
    // not only gdcm::File (as opposed to gdcm::DicomDir)
 
-   gdcm::File *e1 = new gdcm::File();
-   e1->SetLoadMode(loadMode);
+   gdcm::File *f = new gdcm::File();
+   f->SetLoadMode(loadMode);
 
-   bool res = e1->Load( fileName );
+   bool res = f->Load( fileName );
    if ( !res )
    {
-      delete e1;
+      delete f;
       return 0;
    }
 
-   gdcm::FileHelper *f1 = new gdcm::FileHelper(e1);
-   f1->SetPrintLevel( level );
+   gdcm::FileHelper *fh = new gdcm::FileHelper(f);
+   fh->SetPrintLevel( level );
 
-   f1->Print();   
+   fh->Print();   
 
    std::cout << "\n\n" << std::endl; 
 
    std::cout <<std::endl;
-   std::cout <<" dataSize    " << f1->GetImageDataSize()    << std::endl;
-   std::cout <<" dataSizeRaw " << f1->GetImageDataRawSize() << std::endl;
+   std::cout <<" dataSize    " << fh->GetImageDataSize()    << std::endl;
+   std::cout <<" dataSizeRaw " << fh->GetImageDataRawSize() << std::endl;
 
    int nX,nY,nZ,sPP,planarConfig;
    std::string pixelType;
-   nX=e1->GetXSize();
-   nY=e1->GetYSize();
-   nZ=e1->GetZSize();
+   nX=f->GetXSize();
+   nY=f->GetYSize();
+   nZ=f->GetZSize();
    std::cout << " DIMX=" << nX << " DIMY=" << nY << " DIMZ=" << nZ << std::endl;
 
-   pixelType    = e1->GetPixelType();
-   sPP          = e1->GetSamplesPerPixel();
-   planarConfig = e1->GetPlanarConfiguration();
+   pixelType    = f->GetPixelType();
+   sPP          = f->GetSamplesPerPixel();
+   planarConfig = f->GetPlanarConfiguration();
    
    std::cout << " pixelType= ["            << pixelType 
              << "] SamplesPerPixel= ["     << sPP
              << "] PlanarConfiguration= [" << planarConfig 
              << "] "<< std::endl 
              << " PhotometricInterpretation= [" 
-                                << e1->GetEntryValue(0x0028,0x0004)
+                                << f->GetEntryValue(0x0028,0x0004)
              << "] "<< std::endl;
 
-   int numberOfScalarComponents=e1->GetNumberOfScalarComponents();
+   int numberOfScalarComponents=f->GetNumberOfScalarComponents();
    std::cout << " NumberOfScalarComponents = " << numberOfScalarComponents 
              <<std::endl
-             << " LUT = " << (e1->HasLUT() ? "TRUE" : "FALSE")
+             << " LUT = " << (f->HasLUT() ? "TRUE" : "FALSE")
              << std::endl;
 
-   if ( e1->GetEntryValue(0x0002,0x0010) == gdcm::GDCM_NOTLOADED ) 
+   if ( f->GetEntryValue(0x0002,0x0010) == gdcm::GDCM_NOTLOADED ) 
    {
       std::cout << "Transfer Syntax not loaded. " << std::endl
                 << "Better you increase MAX_SIZE_LOAD_ELEMENT_VALUE"
@@ -232,15 +232,20 @@ int main(int argc, char *argv[])
       return 0;
    }
   
-   std::string transferSyntaxName = e1->GetTransferSyntaxName();
+   std::string transferSyntaxName = f->GetTransferSyntaxName();
    std::cout << " TransferSyntaxName= [" << transferSyntaxName << "]" 
              << std::endl;
-   std::cout << " SwapCode= " << e1->GetSwapCode() << std::endl;
+   std::cout << " SwapCode= " << f->GetSwapCode() << std::endl;
+
+   //std::cout << "\n\n" << std::endl; 
+   //std::cout << "X spacing " << f->GetXSpacing() << std::endl;
+   //std::cout << "Y spacing " << f->GetYSpacing() << std::endl;
+   //std::cout << "Z spacing " << f->GetZSpacing() << std::endl;
+
    // Display the LUT as an int array (for debugging purpose)
-   if ( e1->HasLUT() && showlut )
+   if ( f->HasLUT() && showlut )
    {
-      uint8_t* lutrgba = f1->GetLutRGBA();
+      uint8_t* lutrgba = fh->GetLutRGBA();
       if ( lutrgba == 0 )
       {
          std::cout << "Lut RGBA (Palette Color) not built " << std::endl;
@@ -248,7 +253,7 @@ int main(int argc, char *argv[])
         // Nothing is written yet to get LUT Data user friendly
         // The following is to be moved into a PixelRedaConvert method
   
-         gdcm::SeqEntry *modLutSeq = e1->GetSeqEntry(0x0028,0x3000);
+         gdcm::SeqEntry *modLutSeq = f->GetSeqEntry(0x0028,0x3000);
          if ( modLutSeq !=0 )
          {
             gdcm::SQItem *sqi= modLutSeq->GetFirstSQItem();
@@ -286,9 +291,9 @@ int main(int argc, char *argv[])
      }
       else
       {
-         if ( f1->GetLutItemSize() == 8 )
+         if ( fh->GetLutItemSize() == 8 )
          {
-            for (int i=0;i<f1->GetLutItemNumber();i++)
+            for (int i=0;i<fh->GetLutItemNumber();i++)
                std::cout << i << " : \t"
                          << (int)(lutrgba[i*4])   << " "
                          << (int)(lutrgba[i*4+1]) << " "
@@ -297,7 +302,7 @@ int main(int argc, char *argv[])
          else // LutItemSize assumed to be = 16
          {
             uint16_t* lutrgba16 = (uint16_t*)lutrgba;
-            for (int i=0;i<f1->GetLutItemNumber();i++)
+            for (int i=0;i<fh->GetLutItemNumber();i++)
                std::cout << i << " : \t"
                          << (int)(lutrgba16[i*4])   << " "
                          << (int)(lutrgba16[i*4+1]) << " "
@@ -308,15 +313,15 @@ int main(int argc, char *argv[])
    else if (showlut)
    {
       std::cout << "Try LUT Data "<< std::endl;
-      ShowLutData(e1);
+      ShowLutData(f);
    }
      
-   if (e1->IsReadable())
+   if (f->IsReadable())
       std::cout <<std::endl<<fileName<<" is Readable"<<std::endl;
    else
       std::cout <<std::endl<<fileName<<" is NOT Readable"<<std::endl;
    std::cout<<std::flush;
-   delete e1;
-   delete f1;
+   delete f;
+   delete fh;
    return 0;   
 }