]> Creatis software - bbtk.git/blobdiff - packages/gdcmvtk/src/bbgdcmvtkGetInfoGdcmReader.cxx
Convert bbtk from GDCM to GDCM2 (cmakefiles and cxx files).
[bbtk.git] / packages / gdcmvtk / src / bbgdcmvtkGetInfoGdcmReader.cxx
index 2e0a07ecaab11a88fb017e2284c12cb8d8ee2e66..2c50c94c051b97e501d8e1083aaa8d15340e54d2 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,6 +19,8 @@ namespace bbgdcmvtk
 
 BBTK_ADD_BLACK_BOX_TO_PACKAGE(gdcmvtk,GetInfoGdcmReader)
 BBTK_BLACK_BOX_IMPLEMENTATION(GetInfoGdcmReader,bbtk::AtomicBlackBox);
+
+#if defined USE_GDCM
 void GetInfoGdcmReader::Process()
 {
        // Reset de reader, f
@@ -66,11 +75,70 @@ void GetInfoGdcmReader::Process()
    reader->GetOutput()->PrintSelf(std::cout, indent);
    bbSetOutputOut( reader->GetOutput() );
 }
+#endif
 
+#if defined USE_GDCM2
+void GetInfoGdcmReader::Process()
+{
+       // 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::bbUserSetDefaultValues()
 {
    reader=NULL;
+#if defined USE_GDCM
    f=NULL;
+#endif
    bbSetInputIn("");  
 }
 
@@ -79,7 +147,7 @@ void GetInfoGdcmReader::bbUserInitializeProcessing()
 }
        
        
-       
+
 void GetInfoGdcmReader::bbUserFinalizeProcessing()
 {
    if( reader )
@@ -87,14 +155,16 @@ void GetInfoGdcmReader::bbUserFinalizeProcessing()
       reader->Delete();
       reader=NULL;
    }
+#if defined USE_GDCM   
    if(f)
    {
       f->Delete();
       f=NULL;
    }   
+#endif
 }
-
 }
+
 // EO namespace bbgdcmvtk