X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvToolCropImage.cxx;h=0fb3e5483287485931862aefe3c188db5179f28d;hb=3679ae18afeecb43cc9deab389723e69a64c5daf;hp=41bb0ce7fc6304c0b01700101a5a1931c69d3c90;hpb=dacff874d9d3cc4cf26429dc677832d221b963c3;p=clitk.git diff --git a/vv/vvToolCropImage.cxx b/vv/vvToolCropImage.cxx index 41bb0ce..0fb3e54 100644 --- a/vv/vvToolCropImage.cxx +++ b/vv/vvToolCropImage.cxx @@ -33,6 +33,9 @@ #include // vtk +#include +#include +#include #include #include #include @@ -55,12 +58,6 @@ vvToolCropImage::vvToolCropImage(vvMainWindowBase * parent, Qt::WindowFlags f): // GUI Initialization Ui_vvToolCropImage::setupUi(mToolWidget); - // mTLabel2->setHidden(false); - // tminSlider->setHidden(false); - // tmaxSlider->setHidden(false); - // spin_tmin->setHidden(false); - // spin_tmax->setHidden(false); - // mLabelTimeCropping->setHidden(false); mTLabel1->setHidden(true); mTLabel2->setHidden(true); tminSlider->setHidden(true); @@ -80,6 +77,10 @@ vvToolCropImage::vvToolCropImage(vvMainWindowBase * parent, Qt::WindowFlags f): mSliders[zmax]=zmaxSlider; mSliders[tmin]=tminSlider; mSliders[tmax]=tmaxSlider; + + // Record initial extend + mReducedExtent = new int[6]; + mInitialExtent = new int[6]; } //------------------------------------------------------------------------------ @@ -87,7 +88,8 @@ vvToolCropImage::vvToolCropImage(vvMainWindowBase * parent, Qt::WindowFlags f): //------------------------------------------------------------------------------ vvToolCropImage::~vvToolCropImage() { - + delete [] mReducedExtent; + delete [] mInitialExtent; } //------------------------------------------------------------------------------ @@ -96,11 +98,22 @@ vvToolCropImage::~vvToolCropImage() 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) ); + } } - event->accept(); + vvToolWidgetBase::closeEvent(event); } //------------------------------------------------------------------------------ @@ -116,7 +129,10 @@ bool vvToolCropImage::close() //------------------------------------------------------------------------------ void vvToolCropImage::reject() { - for(int i=0; iGetNumberOfSlicers(); i++) + mCurrentSlicerManager->GetSlicer(i)->EnableReducedExtent(false); UpdateExtent(); return vvToolWidgetBase::reject(); } @@ -153,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) { @@ -172,19 +200,25 @@ void vvToolCropImage::InputIsSelected(vvSlicerManager * slicer) spin_zmin->setHidden(true); spin_zmax->setHidden(true); } - - // Record initial extend - mReducedExtent = new int[mExtentSize]; - mInitialExtent = new int[mExtentSize]; - mReducedExtent = mCurrentSlicerManager->GetImage()->GetFirstVTKImageData()->GetWholeExtent(); - for(int i=0; iGetFirstVTKImageData()->GetWholeExtent(); +#else + int *a = mCurrentImage->GetFirstVTKImageData()->GetInformation()->Get(vtkDataObject::DATA_EXTENT()); +#endif + for(int i=0; i<6; i++){ + mInitialExtent[i] = a[i]; + mReducedExtent[i] = a[i]; + } for(int i=0; iGetNumberOfSlicers(); i++) { mCurrentSlicerManager->GetSlicer(i)->EnableReducedExtent(true); + mCurrentSlicerManager->GetSlicer(i)->SetReducedExtent(mInitialExtent); } - // Set initial sliders values - std::vector imsize = mCurrentSlicerManager->GetImage()->GetSize(); +// Set initial sliders values + 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); @@ -215,14 +249,6 @@ void vvToolCropImage::InputIsSelected(vvSlicerManager * slicer) signalMapper->setMapping(mSliders[i], i); connect(mSliders[i], SIGNAL(valueChanged(int)), signalMapper, SLOT(map())); } - - - - - // connect(mCurrentSlicerManager,SIGNAL(UpdateSlice(int,int)),this,SLOT(UpdateExtent())); - //connect(mCurrentSlicerManager,SIGNAL(UpdateTSlice(int,int)),this,SLOT(UpdateExtent())); - - // connect(mIntensitySlider, SIGNAL(valueChanged(double)), this, SLOT(autoCropValueChanged(double))); UpdateExtent(); } //------------------------------------------------------------------------------ @@ -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; iGetSlicer(0)->GetFileName() << ".mhd"; // Retrieve result and display it vvImage::Pointer output = filter->GetOutputVVImage(); + + output->GetTransform()[0]->SetMatrix(mConcatenedTransform); + AddImage(output,croppedImageName.str()); + // End QApplication::restoreOverrideCursor(); + delete [] mArgsInfo.boundingBox_arg; close(); } //------------------------------------------------------------------------------