X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=packages%2Fgdcmvtk%2Fsrc%2FbbgdcmvtkGetInfoGdcmReader.cxx;h=6940e13c6335f9459b27559d86f06ea45ed8f0b7;hb=6adcfa9cb22b26df2122aa7bfef931a3bb847486;hp=42883f78e86c0c7b706eea4669dba5f2edabe899;hpb=b4f2f6f7aaea4344223882054b61faca214a1d99;p=bbtk.git diff --git a/packages/gdcmvtk/src/bbgdcmvtkGetInfoGdcmReader.cxx b/packages/gdcmvtk/src/bbgdcmvtkGetInfoGdcmReader.cxx index 42883f7..6940e13 100644 --- a/packages/gdcmvtk/src/bbgdcmvtkGetInfoGdcmReader.cxx +++ b/packages/gdcmvtk/src/bbgdcmvtkGetInfoGdcmReader.cxx @@ -1,10 +1,18 @@ #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 +// #include "vtkImageData.h" + #include + #include +#endif #include namespace bbgdcmvtk @@ -12,6 +20,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 @@ -31,6 +41,7 @@ void GetInfoGdcmReader::Process() std::vector v_iop; float iop[6]; f->GetImageOrientationPatient(iop); + for(i=0; i< 6; i++) v_iop.push_back(iop[i]); bbSetOutputIOP(v_iop ); @@ -38,6 +49,7 @@ void GetInfoGdcmReader::Process() std::vector v_ipp; float ipp[3]; f->GetImagePositionPatient(ipp); + for(i=0; i< 3; i++) v_ipp.push_back(ipp[i]); bbSetOutputIPP(v_ipp ); @@ -45,7 +57,9 @@ void GetInfoGdcmReader::Process() std::vector 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); @@ -62,34 +76,110 @@ 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 v_iop; + const gdcm::DataElement &deIop = f.GetDataSet().GetDataElement(gdcm::Tag(0x0020, 0x0037)); + std::stringstream ss; + deIop.GetValue().Print(ss); + gdcm::Element 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 v_ipp; + const gdcm::DataElement &deIpp = f.GetDataSet().GetDataElement(gdcm::Tag((0x0020,0x0032))); + deIpp.GetValue().Print(ss); + gdcm::Element ipp; + ipp.Read( ss ); + for(i=0; i< 3; i++) + v_ipp.push_back((float)(ipp[i])); + bbSetOutputIPP(v_ipp ); + + std::vector 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; - f=NULL; - bbSetInputIn(""); +#if defined USE_GDCM2 + read=NULL; +#endif +#if defined USE_GDCM + reader=NULL; + f=NULL; +#endif + bbSetInputIn(""); } + void GetInfoGdcmReader::bbUserInitializeProcessing() { } - - - + + void GetInfoGdcmReader::bbUserFinalizeProcessing() { - if(reader){ +#if defined USE_GDCM2 + if( reader ) + { reader->Delete(); - reader=NULL; - } - if(f){ + reader=NULL; + } +#endif + +#if defined USE_GDCM + if( reader ) + { + reader->Delete(); + reader=NULL; + } + + if(f) + { f->Delete(); - f=NULL; - } - + f=NULL; + } +#endif } - } + // EO namespace bbgdcmvtk