]> Creatis software - gdcm.git/blobdiff - vtk/vtkWriteDicomExtended.cxx
As requested, one serie per image
[gdcm.git] / vtk / vtkWriteDicomExtended.cxx
index 5d36725dc6ffb4f317e88c459d8298e2833c218c..e03c8f15cf4ecb154397a49f307a8dd631500cc4 100755 (executable)
 #endif
 
 #include "gdcmArgMgr.h" // for Argument Manager functions
+#include "gdcmFile.h"
 
 //----------------------------------------------------------------------------
 int main(int argc, char *argv[])
 {
    START_USAGE(usage)
    " \n vtkWriteDicomExtended : \n",
-   " Reads a DICOM file and re writes it according to user's requierements.   ",
+   " Reads a DICOM file and re writes it according to user's requirements.    ",
    "                                                                          ",
    " usage: vtkWriteDicomExtended filein=dicom file to read                   ",
    "                           [filecontent = ] [2D]                          ",
@@ -42,7 +43,7 @@ int main(int argc, char *argv[])
    
    
     // Initialize Arguments Manager   
-   gdcm::ArgMgr *am= new gdcm::ArgMgr(argc, argv);
+   GDCM_NAME_SPACE::ArgMgr *am= new GDCM_NAME_SPACE::ArgMgr(argc, argv);
   
    if (argc == 1 || am->ArgMgrDefined("usage") )
    {
@@ -51,26 +52,26 @@ int main(int argc, char *argv[])
       return 0;
    }
    
-   int loadMode = gdcm::LD_ALL;
+   int loadMode = GDCM_NAME_SPACE::LD_ALL;
    if ( am->ArgMgrDefined("noshadowseq") )
-      loadMode |= gdcm::LD_NOSHADOWSEQ;
+      loadMode |= GDCM_NAME_SPACE::LD_NOSHADOWSEQ;
    else 
    {
       if ( am->ArgMgrDefined("noshadow") )
-         loadMode |= gdcm::LD_NOSHADOW;
+         loadMode |= GDCM_NAME_SPACE::LD_NOSHADOW;
       if ( am->ArgMgrDefined("noseq") )
-         loadMode |= gdcm::LD_NOSEQ;
+         loadMode |= GDCM_NAME_SPACE::LD_NOSEQ;
    }
    
    int filecontent =  am->ArgMgrGetInt("filecontent", 1);
    
    char *filein = am->ArgMgrWantString("filein",usage);
-   char *fileout = am->ArgMgrWantString("fileout",usage);
+   char *fileout = (char *)(am->ArgMgrGetString("fileout","fileout"));
    
    if (am->ArgMgrDefined("debug"))
-      gdcm::Debug::DebugOn();
+      GDCM_NAME_SPACE::Debug::DebugOn();
       
-   bool deuxD = am->ArgMgrDefined("2D");
+   int deuxD = am->ArgMgrDefined("2D");
 
    /* if unused Param we give up */
    if ( am->ArgMgrPrintUnusedLabels() )
@@ -80,11 +81,19 @@ int main(int argc, char *argv[])
       return 0;
    }
    
-// ------------------------------------------------------------           
+// ------------------------------------------------------------  
+   std::vector<GDCM_NAME_SPACE::File* > cfl;
+         
+   GDCM_NAME_SPACE::File *f = GDCM_NAME_SPACE::File::New();
+   f->SetFileName(filein);
+   f->Load();
+   cfl.push_back(f);
   
    vtkGdcmReader *reader = vtkGdcmReader::New();
    reader->AllowLookupTableOff();
-   reader->SetFileName( argv[1] );
+   //reader->SetFileName( filein );
+   // in order not to parse twice the input file.
+   reader->SetCoherentFileList(&cfl);
    reader->Update();
 
    vtkImageData *output;
@@ -123,31 +132,38 @@ int main(int argc, char *argv[])
  
       case 2:
          writer->SetContentTypeToFilteredImage();
+         writer->SetGdcmFile( f );
          fileName = fileName + "_FilteredImage.dcm";
          break;
  
       case 3:
          writer->SetContentTypeToUserCreatedImage();
-         fileName = fileName + "_FilteredImage.dcm";
+         writer->SetGdcmFile( f );
+         fileName = fileName + "_UserCreatedImage.dcm";
          break;
  
       case 4:
          writer->SetContentTypeToUserCreatedImage();
+         writer->SetGdcmFile( f ); 
          fileName = fileName + "_UnmodifiedPixelsImage.dcm";
          break; 
    }
    
-   fileName += ".dcm";
+/// \todo : fix stupid generated image names (later : JPRx)
 
-   // For 3D
-   writer->SetFileDimensionality(3);
-   writer->SetFileName(fileName.c_str());
    if(deuxD)
    {
          writer->SetFileDimensionality(2);
          writer->SetFilePrefix(fileout);
          writer->SetFilePattern("%s%d.dcm");
    }
+   else
+   {
+      fileName += ".dcm";
+      // For 3D
+      writer->SetFileDimensionality(3);
+      writer->SetFileName(fileName.c_str());   
+   }
 
    writer->SetInput(output);
    writer->Write();