X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcreaVtk%2FcreaVtkUnMosaicVectorVtkImageData.cpp;h=93faba51325d36df492f786bc2c5283684e52ddc;hb=3582c0f9b8380fde739856aa6a188da3262cf03b;hp=c3334e9d1ed5ce08ceca573cc8ec3e3ed862e734;hpb=215f2f66f351e645b81a2451e3318a8e07ea7c3e;p=creaVtk.git diff --git a/lib/creaVtk/creaVtkUnMosaicVectorVtkImageData.cpp b/lib/creaVtk/creaVtkUnMosaicVectorVtkImageData.cpp index c3334e9..93faba5 100644 --- a/lib/creaVtk/creaVtkUnMosaicVectorVtkImageData.cpp +++ b/lib/creaVtk/creaVtkUnMosaicVectorVtkImageData.cpp @@ -26,7 +26,10 @@ */ #include "creaVtkUnMosaicVectorVtkImageData.h" + +#define _USE_MATH_DEFINES // for C #include + creaVtkUnMosaicVectorVtkImageData::creaVtkUnMosaicVectorVtkImageData() { } @@ -39,60 +42,70 @@ std::vector creaVtkUnMosaicVectorVtkImageData::unMosaicVectorVtkI { std::vector nbImagesPerRow; std::vector nbImagesInMosaic; - - for(int i = 0; i < NbImagesInMosaicVector.size(); i++){ - nbImagesPerRow.push_back( ceil(sqrt(NbImagesInMosaicVector[i])) ); + double imagesInMosaic; + for(int i = 0; i < NbImagesInMosaicVector.size(); i++) + { + imagesInMosaic = NbImagesInMosaicVector[i]; + nbImagesPerRow.push_back( ceil(sqrt(imagesInMosaic)) ); nbImagesInMosaic.push_back(NbImagesInMosaicVector[i]); - } - - if(imageInput.size() != NbImagesInMosaicVector.size()){ - for(int j = NbImagesInMosaicVector.size(); j < imageInput.size(); j++) { - nbImagesPerRow.push_back( ceil(sqrt(NbImagesInMosaicVector[NbImagesInMosaicVector.size()-1])) ); + } // for i + if(imageInput.size() != NbImagesInMosaicVector.size()) + { + for(int j = NbImagesInMosaicVector.size(); j < imageInput.size(); j++) + { + imagesInMosaic = NbImagesInMosaicVector[NbImagesInMosaicVector.size()-1]; + nbImagesPerRow.push_back( ceil(sqrt(imagesInMosaic)) ); nbImagesInMosaic.push_back( NbImagesInMosaicVector[NbImagesInMosaicVector.size()-1] ); - } - } - + } // for j + } // for imageInput size if (nbImagesPerRow.size() == 0 || nbImagesInMosaic.size() == 0) - { + { std::cout << "VtkUnMosaicVectorVtkImageData ERROR: The number of Images by mosaic is not set " << std::endl; - } - + } // if nbImagesPerRow size std::vector imageIn = imageInput; - std::vector mImageOut; - for (int i = 0 ; i < (unsigned int)imageIn.size() ; i++) { - mImageOut.push_back( unMosaic(imageIn[i], nbImagesPerRow[i], nbImagesInMosaic[i]) ); - } - + for (int i = 0 ; i < (unsigned int)imageIn.size() ; i++) + { + mImageOut.push_back( unMosaic(imageIn[i], nbImagesPerRow[i], nbImagesInMosaic[i]) ); + } // for i return mImageOut; } +//------------------------------------------------------------------------------ vtkImageData * creaVtkUnMosaicVectorVtkImageData::unMosaic(vtkImageData *imageIn, int nbImagesPerRow, int numberOfImagesInMosaic) { - int inputdims[3]; - int outputdims[3]; - imageIn->GetDimensions (inputdims); - unsigned short *input = (unsigned short *)(imageIn->GetScalarPointer()); - imageIn->Update(); - - unsigned int div = (unsigned int)ceil(sqrt( (double)numberOfImagesInMosaic ) ); - outputdims[0] = inputdims[0] / div; - outputdims[1] = inputdims[1] / div; - outputdims[2] = numberOfImagesInMosaic; + int inputdims[3]; + int outputdims[3]; + imageIn->GetDimensions (inputdims); + unsigned short *input = (unsigned short *)(imageIn->GetScalarPointer()); +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 + imageIn->Update(); +#else + // .. +#endif + unsigned int div = (unsigned int)ceil(sqrt( (double)numberOfImagesInMosaic ) ); + outputdims[0] = inputdims[0] / div; + outputdims[1] = inputdims[1] / div; + outputdims[2] = numberOfImagesInMosaic; vtkImageData *vtkImageOut; vtkImageOut = vtkImageData::New(); vtkImageOut->SetDimensions( outputdims ); vtkImageOut->SetExtent(0,outputdims[0]-1,0,outputdims[1]-1,0,outputdims[2]-1); + +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 vtkImageOut->SetWholeExtent(0,outputdims[0]-1,0,outputdims[1]-1,0,outputdims[2]-1); vtkImageOut->SetNumberOfScalarComponents(1); //vtkImageOut->SetSpacing( blabla ); vtkImageOut->SetScalarType( VTK_UNSIGNED_SHORT ); vtkImageOut->AllocateScalars(); vtkImageOut->Update(); - +#else + vtkImageOut->AllocateScalars(VTK_UNSIGNED_SHORT,1); +#endif unsigned short *output =(unsigned short *)(vtkImageOut->GetScalarPointer()); - unsigned short *dest = output; int dimXImageElem = outputdims[0]; int dimYImageElem = outputdims[1]; @@ -109,18 +122,8 @@ vtkImageData * creaVtkUnMosaicVectorVtkImageData::unMosaic(vtkImageData *imageIn memcpy(dest, input+debImage, dimXImageElem*sizeof(unsigned short)); debImage += dimXImageElem*nbImagesPerRow; dest += dimXImageElem; - } - } + } // for j + } // for i return vtkImageOut; } -//--------------------------------------------- -//Method template -//--------------------------------------------- -/* -void creaVtkUnMosaicVectorVtkImageData::FunctionName(int& parameterA) -{ - parameterA = 2 * parameterA; - return; -} -*/