X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvToolCropImage.cxx;h=0fb3e5483287485931862aefe3c188db5179f28d;hb=8a3497690d4e39e99b6d5e50cb324449041ea08d;hp=539e30ef9ea892727b49348220e9e9e8c2333eae;hpb=3a823a03d4a2217e41e4dd3b05a8ea825bb762a5;p=clitk.git diff --git a/vv/vvToolCropImage.cxx b/vv/vvToolCropImage.cxx index 539e30e..0fb3e54 100644 --- a/vv/vvToolCropImage.cxx +++ b/vv/vvToolCropImage.cxx @@ -99,10 +99,19 @@ void vvToolCropImage::closeEvent(QCloseEvent *event) { if(mCurrentSlicerManager){ // Reset extends - for(int i=0; iGetNumberOfSlicers(); i++) + mCurrentSlicerManager->GetSlicer(i)->EnableReducedExtent(false); UpdateExtent(); + + mCurrentSlicerManager->GetImage()->GetTransform()[0]->SetMatrix(mConcatenedTransform); + for (int i=0; iGetNumberOfSlicers(); i++) { + mCurrentSlicerManager->GetSlicer(i)->ResetCamera(); + mCurrentSlicerManager->GetSlicer(i)->Render(); + mCurrentSlicerManager->UpdateLinkedNavigation( mCurrentSlicerManager->GetSlicer(i) ); + } } vvToolWidgetBase::closeEvent(event); } @@ -120,7 +129,10 @@ bool vvToolCropImage::close() //------------------------------------------------------------------------------ void vvToolCropImage::reject() { - for(int i=0; iGetNumberOfSlicers(); i++) + mCurrentSlicerManager->GetSlicer(i)->EnableReducedExtent(false); UpdateExtent(); return vvToolWidgetBase::reject(); } @@ -157,6 +169,18 @@ void vvToolCropImage::UpdateExtent() //------------------------------------------------------------------------------ void vvToolCropImage::InputIsSelected(vvSlicerManager * slicer) { + //Save the current transformation + mConcatenedTransform = vtkSmartPointer::New(); + mConcatenedTransform->DeepCopy(slicer->GetSlicer(0)->GetConcatenatedTransform()->GetMatrix()); + vtkSmartPointer matrix = vtkSmartPointer::New(); + matrix->Identity(); + mCurrentSlicerManager->GetImage()->GetTransform()[0]->SetMatrix(matrix); + for (int i=0; iGetNumberOfSlicers(); i++) { + mCurrentSlicerManager->GetSlicer(i)->ResetCamera(); + mCurrentSlicerManager->GetSlicer(i)->Render(); + mCurrentSlicerManager->UpdateLinkedNavigation( mCurrentSlicerManager->GetSlicer(i) ); + } + // Change interface according to number of dimension mExtentSize = 2*slicer->GetDimension(); if (slicer->GetDimension()<4) { @@ -191,8 +215,10 @@ void vvToolCropImage::InputIsSelected(vvSlicerManager * slicer) } // Set initial sliders values - std::vector imsize = mCurrentSlicerManager->GetImage()->GetSize(); + int w_ext[6], imsize[4]; + mCurrentSlicerManager->GetSlicer(0)->GetRegisterExtent(w_ext); for(int dim=0; dimGetDimension() && dim<3; ++dim){ + imsize[dim] = w_ext[2*dim+1] - w_ext[2*dim] +1; mSliders[dim*2]->setMaximum(imsize[dim]-1); mSliders[dim*2+1]->setMaximum(imsize[dim]-1); mSliders[dim*2+1]->setValue(imsize[dim]-1); @@ -263,7 +289,7 @@ void vvToolCropImage::apply() } // We MUST reset initial extend to input image before using the // filter to retrieve the correct image size - for(int i=0; iGetOutputVVImage(); + output->GetTransform()[0]->SetMatrix(mConcatenedTransform); + AddImage(output,croppedImageName.str()); // End