X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=packages%2Fgdcmvtk%2Fsrc%2FbbgdcmvtkGetXCoherentInfoGdcmReader.cxx;h=c1d16ba58fb15afc84ccce9badb0f3705362fa51;hb=42286a16f16c8af07589bbbe30c157770b73bbb2;hp=dd8e57a87b8bdd3eaf86387f8b98fad4b8308e03;hpb=cfad95b6e08e6e53846ffcda7fbc5932065f2c47;p=bbtk.git diff --git a/packages/gdcmvtk/src/bbgdcmvtkGetXCoherentInfoGdcmReader.cxx b/packages/gdcmvtk/src/bbgdcmvtkGetXCoherentInfoGdcmReader.cxx index dd8e57a..c1d16ba 100644 --- a/packages/gdcmvtk/src/bbgdcmvtkGetXCoherentInfoGdcmReader.cxx +++ b/packages/gdcmvtk/src/bbgdcmvtkGetXCoherentInfoGdcmReader.cxx @@ -1,3 +1,4 @@ +/* # --------------------------------------------------------------------- # # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image @@ -47,19 +48,64 @@ namespace bbgdcmvtk BBTK_ADD_BLACK_BOX_TO_PACKAGE(gdcmvtk,GetXCoherentInfoGdcmReader) BBTK_BLACK_BOX_IMPLEMENTATION(GetXCoherentInfoGdcmReader,bbtk::AtomicBlackBox); + + +vtkImageData* GetXCoherentInfoGdcmReader::CreateDefaultImage() +{ + int i; + int sizeX, sizeY, sizeZ; + sizeX = 200; + sizeY = sizeX; + sizeZ = 1; + vtkImageData *newImage = vtkImageData::New(); + newImage->Initialize(); + newImage->SetSpacing( 1,1,1 ); + newImage->SetDimensions( sizeX,sizeY,sizeZ ); + newImage->SetExtent(0, sizeX-1,0,sizeY-1,0,sizeZ-1 ); + +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 + newImage->SetWholeExtent(0, sizeX-1,0,sizeY-1,0,sizeZ-1 ); + newImage->SetScalarTypeToUnsignedChar(); + newImage->SetNumberOfScalarComponents(1); + newImage->AllocateScalars(); + newImage->Update(); +#else + newImage->AllocateScalars(VTK_UNSIGNED_CHAR,1); +#endif + + memset ( (void*)newImage->GetScalarPointer(), 0, sizeX*sizeY*1 ); + for (i=0; iSetScalarComponentFromDouble(i,i,0, 0, 255 ); + newImage->SetScalarComponentFromDouble(i,sizeY-1-i,0, 0, 255 ); + } // for i + return newImage; +} + + #if defined USE_GDCM void GetXCoherentInfoGdcmReader::Process() { + // Read the *first* image file (a SET of file names is given as input) f = GDCM_NAME_SPACE::File::New(); - f->SetFileName( bbGetInputIn()[0] ); + + if ( bbGetInputIn().size()!=0 ) + { + f->SetFileName( bbGetInputIn()[0] ); + } else { + f->SetFileName( "" ); + } // if + bool res = f->Load(); if ( !res ) { - f->Delete(); - bbSetOutputOut(0); - return; - } + printf("EED GetXCoherentInfoGdcmReader::Process resultImage NULL\n"); + f->Delete(); + bbSetOutputOut( CreateDefaultImage() ); + return; + } // if res // Get info from the first image file int i; std::vector v_iop; @@ -67,7 +113,9 @@ void GetXCoherentInfoGdcmReader::Process() f->GetImageOrientationPatient(iop); for(i=0; i< 6; i++) + { v_iop.push_back(iop[i]); + } // for i bbSetOutputIOP(v_iop ); std::vector v_ipp; @@ -75,7 +123,9 @@ void GetXCoherentInfoGdcmReader::Process() f->GetImagePositionPatient(ipp); for(i=0; i< 3; i++) + { v_ipp.push_back(ipp[i]); + } // for i bbSetOutputIPP(v_ipp ); // Add *all the files* to the SerieHelper @@ -87,7 +137,8 @@ void GetXCoherentInfoGdcmReader::Process() ++it) { sh->AddFileName(*it); - } + } //for vector + GDCM_NAME_SPACE::FileList::const_iterator it; GDCM_NAME_SPACE::FileList *l; @@ -96,10 +147,10 @@ void GetXCoherentInfoGdcmReader::Process() l = sh->GetFirstSingleSerieUIDFileSet(); int nbFiles; - double zspacing = 0.; - nbFiles = l->size() ; + double zspacing = 0.; + nbFiles = l->size() ; sh->OrderFileList(l); // this one should compute the *actual* Z Spacing! - zspacing = sh->GetZSpacing(); + zspacing = sh->GetZSpacing(); std::vector v_pixelspacing; v_pixelspacing.push_back( f->GetXSpacing() ); v_pixelspacing.push_back( f->GetYSpacing() ); @@ -108,23 +159,20 @@ void GetXCoherentInfoGdcmReader::Process() // v_pixelspacing.push_back(f->GetZSpacing()); // } bbSetOutputPixelSpacing(v_pixelspacing); - if (reader!=NULL) { reader->Delete(); - reader=NULL; + reader = NULL; } reader = vtkGdcmReader::New(); - //EED 21 mars 2012 FLIP probleme ..PLOP.. reader->SetFlipY(false); - - //reader->SetFileName( bbGetInputIn().c_str() ); reader->SetCoherentFileList(l); reader->Update(); reader->GetOutput(); +printf("EED GetXCoherentInfoGdcmReader::Process \n"); bbSetOutputOut( reader->GetOutput() ); } #endif @@ -135,16 +183,18 @@ void GetXCoherentInfoGdcmReader::Process() { // Read the *first* image file (a SET of file names is given as input) gdcm::Reader *read = new gdcm::Reader(); - reader->SetFileName( bbGetInputIn()[0].c_str()); + reader->SetFileName( bbGetInputIn()[0].c_str() ); bool res = read->Read(); - if ( !res ) - { - delete read; - bbSetOutputOut(0); - return; - } + if ( !res ) + { + delete read; + bbSetOutputOut(NULL); + return; + } + + // Get info from the first image file const gdcm::File &f = read->GetFile(); int i; @@ -155,7 +205,9 @@ void GetXCoherentInfoGdcmReader::Process() gdcm::Element iop; iop.Read( ss ); for(i=0; i< 6; i++) - v_iop.push_back((float)(iop[i])); + { + v_iop.push_back((float)(iop[i])); + } bbSetOutputIOP(v_iop ); std::vector v_ipp; @@ -163,8 +215,10 @@ void GetXCoherentInfoGdcmReader::Process() deIpp.GetValue().Print(ss); gdcm::Element ipp; ipp.Read( ss ); - for(i=0; i< 3; i++) + for(i=0; i< 3; i++) + { v_ipp.push_back((float)(ipp[i])); + } // for 3 bbSetOutputIPP(v_ipp ); // Add *all the files* to the IPPsorter @@ -202,7 +256,6 @@ void GetXCoherentInfoGdcmReader::Process() } reader->SetFileNames(files); reader->Update(); - reader->GetOutput(); bbSetOutputOut( reader->GetOutput() ); } #endif @@ -225,11 +278,17 @@ void GetXCoherentInfoGdcmReader::bbUserInitializeProcessing() void GetXCoherentInfoGdcmReader::bbUserFinalizeProcessing() { if(reader) + { reader->Delete(); + } // if reader if(f) + { f->Delete(); + } // if f if(sh) + { sh->Delete(); + } // if sh } #endif @@ -237,7 +296,9 @@ void GetXCoherentInfoGdcmReader::bbUserFinalizeProcessing() void GetXCoherentInfoGdcmReader::bbUserFinalizeProcessing() { if(reader) + { reader->Delete(); + } } #endif