X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=packages%2Fgdcmvtk%2Fsrc%2FbbgdcmvtkGetInfoGdcmReader.cxx;h=29b2f7647ce6f0d842bcc8cbdca416bbe121cdef;hb=0589a26d1de5c18fed06165b035c0737bf1cf285;hp=7877be5bf9c37f6e977cf9d33e778827aad47080;hpb=01f005a9cbf863ec2169b1076409f0bcac233aad;p=bbtk.git diff --git a/packages/gdcmvtk/src/bbgdcmvtkGetInfoGdcmReader.cxx b/packages/gdcmvtk/src/bbgdcmvtkGetInfoGdcmReader.cxx index 7877be5..29b2f76 100644 --- a/packages/gdcmvtk/src/bbgdcmvtkGetInfoGdcmReader.cxx +++ b/packages/gdcmvtk/src/bbgdcmvtkGetInfoGdcmReader.cxx @@ -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 + #include + #include +#endif #include namespace bbgdcmvtk @@ -12,24 +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() { - + // Reset de reader, f + bbUserFinalizeProcessing(); + f = GDCM_NAME_SPACE::File::New(); f->SetFileName( bbGetInputIn() ); bool res = f->Load(); if ( !res ) { - f->Delete(); bbSetOutputOut(0); return; } - + // Get info from THE image file (only *one* as input) int i; 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 ); @@ -37,6 +48,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 ); @@ -44,7 +56,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); @@ -61,26 +75,98 @@ void GetInfoGdcmReader::Process() 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 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::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