X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=common%2FvvImage.cxx;h=cb73874aa2a3d815a158a62eca498f5f6380c6e8;hb=7d36da3788ca56673630491ce884c466c428171c;hp=1d718bce26d6fb5d24498d02bbe01e5f3bddf5dc;hpb=039781919d2f8aded60740ec0e1f283bc5d410bb;p=clitk.git diff --git a/common/vvImage.cxx b/common/vvImage.cxx index 1d718bc..cb73874 100644 --- a/common/vvImage.cxx +++ b/common/vvImage.cxx @@ -18,55 +18,76 @@ #ifndef VVIMAGE_CXX #define VVIMAGE_CXX #include "vvImage.h" -#include "vtkImageData.h" #include "clitkCommon.h" + +#include +#include + #include //-------------------------------------------------------------------- vvImage::vvImage() { - mVtkImages.resize(0); - mTimeSpacing = 1; - mTimeOrigin = 0; + Init(); +} +//-------------------------------------------------------------------- + + +//-------------------------------------------------------------------- +void vvImage::Init() { + mTimeSpacing = 1; + mTimeOrigin = 0; + if (CLITK_EXPERIMENTAL) + { + mVtkImageReslice = vtkSmartPointer::New(); + mVtkImageReslice->SetInterpolationModeToLinear(); + mVtkImageReslice->AutoCropOutputOn(); + } } //-------------------------------------------------------------------- //-------------------------------------------------------------------- vvImage::~vvImage() { - for (unsigned int i = 0; i < mVtkImages.size(); i++) { - if (mVtkImages[i] != NULL) - mVtkImages[i]->Delete(); - } + Reset(); } //-------------------------------------------------------------------- //-------------------------------------------------------------------- -void vvImage::SetImage(std::vector images) { - for (unsigned int i = 0; i < mVtkImages.size(); i++) { - if (mVtkImages[i] != NULL) - mVtkImages[i]->Delete(); - } - mVtkImages.resize(0); - for (unsigned int i = 0; i < images.size(); i++) { - mVtkImages.push_back(images[i]); - } +void vvImage::Reset() { + if (CLITK_EXPERIMENTAL) + { + for (unsigned int i = 0; i < mVtkImages.size(); i++) + mVtkImages[i] = (vtkImageData*)mVtkImageReslice->GetInput(i); + mVtkImageReslice->RemoveAllInputs(); + } + for (unsigned int i = 0; i < mVtkImages.size(); i++) + mVtkImages[i]->Delete(); + mVtkImages.resize(0); + Init(); } //-------------------------------------------------------------------- + //-------------------------------------------------------------------- -void vvImage::AddImage(vtkImageData* image) { - mVtkImages.push_back(image); +void vvImage::SetImage(std::vector< vtkImageData* > images) { + Reset(); + for (unsigned int i = 0; i < images.size(); i++) + AddImage(images[i]); } //-------------------------------------------------------------------- + //-------------------------------------------------------------------- -void vvImage::Init() { - for (unsigned int i = 0; i < mVtkImages.size(); i++) { - if (mVtkImages[i] != NULL) - mVtkImages[i]->Delete(); - } - mVtkImages.resize(0); +void vvImage::AddImage(vtkImageData* image) { + if (CLITK_EXPERIMENTAL) + { + mVtkImageReslice->SetInput(mVtkImages.size(), image); + mVtkImageReslice->Update(); + mVtkImages.push_back( mVtkImageReslice->GetOutput( mVtkImages.size() ) ); + } + else + mVtkImages.push_back(image); } //-------------------------------------------------------------------- @@ -251,4 +272,12 @@ bool vvImage::IsScalarTypeInteger(int t) { //-------------------------------------------------------------------- +//-------------------------------------------------------------------- +void vvImage::SetTransform(vtkAbstractTransform *transform) +{ + mVtkImageReslice->SetResliceTransform(transform); + mVtkImageReslice->Update(); +} +//-------------------------------------------------------------------- + #endif // VVIMAGE_CXX