X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcreaVtk%2FcreaVtkUnMosaicVectorVtkImageData.cpp;h=2226f2d4b0b7bd0922235ba6d26579155ab6a06f;hb=82f0d43e64f8ba8098f0cd1c8759b436a40109bc;hp=2e7847c5c8141a423c6e897d74951750a262aafa;hpb=b5ae034170e154e060837d657257f22c422d4b21;p=creaVtk.git diff --git a/lib/creaVtk/creaVtkUnMosaicVectorVtkImageData.cpp b/lib/creaVtk/creaVtkUnMosaicVectorVtkImageData.cpp index 2e7847c..2226f2d 100644 --- a/lib/creaVtk/creaVtkUnMosaicVectorVtkImageData.cpp +++ b/lib/creaVtk/creaVtkUnMosaicVectorVtkImageData.cpp @@ -27,6 +27,9 @@ #include "creaVtkUnMosaicVectorVtkImageData.h" +#define _USE_MATH_DEFINES // for C +#include + creaVtkUnMosaicVectorVtkImageData::creaVtkUnMosaicVectorVtkImageData() { } @@ -35,21 +38,39 @@ creaVtkUnMosaicVectorVtkImageData::~creaVtkUnMosaicVectorVtkImageData() { } -std::vector creaVtkUnMosaicVectorVtkImageData::unMosaicVectorVtkImageData (int NbImagesPerRow, int NbImagesInMosaic, std::vector bbGetInputIn) +std::vector creaVtkUnMosaicVectorVtkImageData::unMosaicVectorVtkImageData (std::vector imageInput, std::vector NbImagesInMosaicVector) { - int nbImagesPerRow = NbImagesPerRow; - int nbImagesInMosaic = NbImagesInMosaic; + std::vector nbImagesPerRow; + std::vector nbImagesInMosaic; + 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 (nbImagesPerRow == 0 || nbImagesInMosaic == 0) + 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] ); + } + } + + if (nbImagesPerRow.size() == 0 || nbImagesInMosaic.size() == 0) { std::cout << "VtkUnMosaicVectorVtkImageData ERROR: The number of Images by mosaic is not set " << std::endl; } - std::vector imageIn = bbGetInputIn; + std::vector imageIn = imageInput; std::vector mImageOut; for (int i = 0 ; i < (unsigned int)imageIn.size() ; i++) { - mImageOut.push_back( unMosaic(imageIn[i], NbImagesPerRow, NbImagesInMosaic) ); + mImageOut.push_back( unMosaic(imageIn[i], nbImagesPerRow[i], nbImagesInMosaic[i]) ); } return mImageOut; @@ -61,7 +82,13 @@ vtkImageData * creaVtkUnMosaicVectorVtkImageData::unMosaic(vtkImageData *imageIn 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 + imageIn->Modified(); +#endif unsigned int div = (unsigned int)ceil(sqrt( (double)numberOfImagesInMosaic ) ); outputdims[0] = inputdims[0] / div; @@ -72,13 +99,20 @@ vtkImageData * creaVtkUnMosaicVectorVtkImageData::unMosaic(vtkImageData *imageIn 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;