]> Creatis software - bbtk.git/blobdiff - packages/gdcmvtk/src/bbgdcmvtkGetInfoGdcmReader.cxx
avoid warnings
[bbtk.git] / packages / gdcmvtk / src / bbgdcmvtkGetInfoGdcmReader.cxx
index 75b96f071237093ccdf1d91a3e1dd01256e0ebc1..29b2f7647ce6f0d842bcc8cbdca416bbe121cdef 100644 (file)
@@ -1,10 +1,17 @@
 #include "bbgdcmvtkGetInfoGdcmReader.h"
 #include "bbgdcmvtkPackage.h"
 
-#include "gdcmFile.h"
-#include "gdcmFileHelper.h"
-#include "vtkImageData.h"
-#include "vtkGdcmReader.h"
+#if defined USE_GDCM
+       #include "gdcmFile.h"
+       #include "gdcmFileHelper.h"
+       #include "vtkImageData.h"
+       #include "vtkGdcmReader.h"
+#endif
+#if defined USE_GDCM2
+       #include <gdcmReader.h>
+       #include <gdcmImageHelper.h>
+       #include <vtkGDCMImageReader.h>
+#endif
 #include <vtkIndent.h>
 
 namespace bbgdcmvtk
@@ -12,27 +19,28 @@ namespace bbgdcmvtk
 
 BBTK_ADD_BLACK_BOX_TO_PACKAGE(gdcmvtk,GetInfoGdcmReader)
 BBTK_BLACK_BOX_IMPLEMENTATION(GetInfoGdcmReader,bbtk::AtomicBlackBox);
+
+#if defined USE_GDCM
 void GetInfoGdcmReader::Process()
 {
-std::cout << "Entree ds GetInfoGdcmReader::Process()" << std::endl;
-    
+       // Reset de reader, f
+       bbUserFinalizeProcessing();
+       
    f = GDCM_NAME_SPACE::File::New();
    f->SetFileName( bbGetInputIn() );
    bool res = f->Load();  
    if ( !res )
    {
-std::cout << " f->Load() failed ..." << std::endl;
-      
       f->Delete();
       bbSetOutputOut(0);
       return;
    }
-std::cout << "apres f->Load()" << std::endl;
-
+ // Get info from THE image file (only *one* as input)
    int i;
    std::vector<double> v_iop;
    float iop[6];
    f->GetImageOrientationPatient(iop);
+   
    for(i=0; i< 6; i++)
       v_iop.push_back(iop[i]);
    bbSetOutputIOP(v_iop );
@@ -40,6 +48,7 @@ std::cout << "apres f->Load()" << std::endl;
    std::vector<double> v_ipp;
    float ipp[3];
    f->GetImagePositionPatient(ipp);
+   
    for(i=0; i< 3; i++)
       v_ipp.push_back(ipp[i]);
    bbSetOutputIPP(v_ipp );
@@ -47,7 +56,9 @@ std::cout << "apres f->Load()" << std::endl;
    std::vector<double> v_pixelspacing;
    v_pixelspacing.push_back(f->GetXSpacing());
    v_pixelspacing.push_back(f->GetYSpacing());
-   if (f->GetZSize() != 1) {
+   
+   if (f->GetZSize() != 1) 
+   {
       v_pixelspacing.push_back(f->GetZSpacing());
    }
    bbSetOutputPixelSpacing(v_pixelspacing);
@@ -64,26 +75,98 @@ std::cout << "apres f->Load()" << std::endl;
    reader->GetOutput()->PrintSelf(std::cout, indent);
    bbSetOutputOut( reader->GetOutput() );
 }
+#endif
 
-void GetInfoGdcmReader::bbUserConstructor()
+#if defined USE_GDCM2
+void GetInfoGdcmReader::Process()
 {
-std::cout << "entree ds GetInfoGdcmReader::bbUserConstructor()" << std::endl;
-    bbSetInputIn("");  
+       // Reset de reader, f
+       bbUserFinalizeProcessing();
+       gdcm::Reader *read = new gdcm::Reader();
+       read->SetFileName( bbGetInputIn().c_str());
+  
+       bool res = read->Read();  
+   if ( !res )
+   {
+      delete read;
+      bbSetOutputOut(0);
+      return;
+   }
+   
+ // Get info from THE image file (only *one* as input)
+   const gdcm::File &f = read->GetFile();
+   
+   // Image Orientation (Patient)
+   int i;
+   std::vector<double> v_iop;
+   const gdcm::DataElement &deIop = f.GetDataSet().GetDataElement(gdcm::Tag(0x0020, 0x0037));
+   std::stringstream ss;
+   deIop.GetValue().Print(ss);
+   gdcm::Element<gdcm::VR::DS,gdcm::VM::VM6> iop;
+   iop.Read( ss );
+   for(i=0; i< 6; i++)
+      v_iop.push_back((float)(iop[i]));
+   bbSetOutputIOP(v_iop );
+   // Image Position (Patient)
+   std::vector<double> v_ipp;
+   const gdcm::DataElement &deIpp = f.GetDataSet().GetDataElement(gdcm::Tag((0x0020,0x0032)));
+   deIpp.GetValue().Print(ss);
+   gdcm::Element<gdcm::VR::DS,gdcm::VM::VM3> ipp;
+   ipp.Read( ss );
+         for(i=0; i< 3; i++)
+               v_ipp.push_back((float)(ipp[i]));
+   bbSetOutputIPP(v_ipp );
+
+   std::vector<double> v_pixelspacing = gdcm::ImageHelper::GetSpacingValue(f);
+   bbSetOutputPixelSpacing(v_pixelspacing);
+   
+   //double interslice; ?? ==1 NO?
+    bbSetOutputInterSlice(v_pixelspacing[2]);
+   
+   reader = vtkGDCMImageReader::New();
+   reader->SetFileName( bbGetInputIn().c_str() );
+   reader->Update();
+   reader->GetOutput();
+   vtkIndent indent ;
+   reader->GetOutput()->PrintSelf(std::cout, indent);
+   bbSetOutputOut( reader->GetOutput() );
 }
+#endif
 
-void GetInfoGdcmReader::bbUserCopyConstructor(bbtk::BlackBox::Pointer)
+
+void GetInfoGdcmReader::bbUserSetDefaultValues()
 {
-  
+   reader=NULL;
+#if defined USE_GDCM
+   f=NULL;
+#endif
+   bbSetInputIn("");  
 }
-void GetInfoGdcmReader::bbUserDestructor()
+
+
+void GetInfoGdcmReader::bbUserInitializeProcessing()
+{
+}
+
+
+void GetInfoGdcmReader::bbUserFinalizeProcessing()
 {
-   if(reader)
+   if( reader )
+   {
       reader->Delete();
+      reader=NULL;
+   }
+#if defined USE_GDCM   
    if(f)
+   {
       f->Delete();
+      f=NULL;
+   }   
+#endif
 }
-
 }
+
 // EO namespace bbgdcmvtk