]> Creatis software - clitk.git/blobdiff - vv/vvToolCropImage.cxx
Debug RTStruct conversion with empty struc
[clitk.git] / vv / vvToolCropImage.cxx
index 19297d33332efd7d211d4f8a36d10eb5f3de3233..0fb3e5483287485931862aefe3c188db5179f28d 100644 (file)
@@ -102,7 +102,16 @@ void vvToolCropImage::closeEvent(QCloseEvent *event)
     for(int i=0; i<6; i++){
       mReducedExtent[i] = mInitialExtent[i];
     }
+    for(int i=0; i<mCurrentSlicerManager->GetNumberOfSlicers(); i++)
+      mCurrentSlicerManager->GetSlicer(i)->EnableReducedExtent(false);
     UpdateExtent();
+
+    mCurrentSlicerManager->GetImage()->GetTransform()[0]->SetMatrix(mConcatenedTransform);
+    for (int i=0; i<mCurrentSlicerManager->GetNumberOfSlicers(); 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; i<mExtentSize; i++) mReducedExtent[i] = mInitialExtent[i];
+  for(int i=0; i<mExtentSize; i++)
+    mReducedExtent[i] = mInitialExtent[i];
+  for(int i=0; i<mCurrentSlicerManager->GetNumberOfSlicers(); 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<vtkMatrix4x4>::New();
+  mConcatenedTransform->DeepCopy(slicer->GetSlicer(0)->GetConcatenatedTransform()->GetMatrix());
+  vtkSmartPointer<vtkMatrix4x4> matrix = vtkSmartPointer<vtkMatrix4x4>::New();
+  matrix->Identity();
+  mCurrentSlicerManager->GetImage()->GetTransform()[0]->SetMatrix(matrix);
+  for (int i=0; i<mCurrentSlicerManager->GetNumberOfSlicers(); 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,7 +215,7 @@ void vvToolCropImage::InputIsSelected(vvSlicerManager * slicer)
   }
 
 //   Set initial sliders values
-  int w_ext[6], imsize[3];
+  int w_ext[6], imsize[4];
   mCurrentSlicerManager->GetSlicer(0)->GetRegisterExtent(w_ext);
   for(int dim=0; dim<slicer->GetDimension() && dim<3; ++dim){
     imsize[dim] = w_ext[2*dim+1] - w_ext[2*dim] +1;
@@ -265,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; i<mExtentSize; i++) {
+  for(int i=0; i<6; i++) {
     mReducedExtent[i] = mInitialExtent[i];
   }
   
@@ -290,6 +314,8 @@ void vvToolCropImage::apply()
   // Retrieve result and display it
   vvImage::Pointer output = filter->GetOutputVVImage();
   
+  output->GetTransform()[0]->SetMatrix(mConcatenedTransform);
+
   AddImage(output,croppedImageName.str());
   
   // End