]> Creatis software - clitk.git/blobdiff - vv/vvSlicer.cxx
1/ some minor changes for compilation under windows / VC++ 2010 Express
[clitk.git] / vv / vvSlicer.cxx
index 924eb1d8161d096452e7849df145da07c17fa1d9..1ace5c2ee89bf3cfa6131f5c7a13263cc7fe0b52 100644 (file)
@@ -21,7 +21,6 @@
 #include "vvSlicerManagerCommand.h"
 #include "vvGlyphSource.h"
 #include "vvGlyph2D.h"
-#include "vvImageMapToWLColors.h"
 
 #include <vtkTextProperty.h>
 #include <vtkTextActor.h>
@@ -138,9 +137,6 @@ vvSlicer::vvSlicer()
   this->GetRenderer()->AddActor(legend);
   showFusionLegend = false;
 
-  this->WindowLevel->Delete();
-  this->WindowLevel = vvImageMapToWLColors::New();
-
   this->InstallPipeline();
 
   mLinkOverlayWindowLevel = true;
@@ -479,7 +475,7 @@ bool vvSlicer::GetActorVisibility(const std::string& actor_type, int overlay_ind
   else if (actor_type == "overlay") {
     vis = this->mOverlayActor->GetVisibility();
   }
-  else if (actor_type == "fusion") {
+  else if ( (actor_type == "fusion") || (actor_type == "fusionSequence") ){
     vis = this->mFusionActor->GetVisibility();
   }
   else if (actor_type == "contour")
@@ -501,7 +497,7 @@ void vvSlicer::SetActorVisibility(const std::string& actor_type, int overlay_ind
   else if (actor_type == "overlay") {
     this->mOverlayActor->SetVisibility(vis);
   }
-  else if (actor_type == "fusion") {
+  else if ( (actor_type == "fusion") || (actor_type == "fusionSequence") ){
     this->mFusionActor->SetVisibility(vis);
   }
   else if (actor_type == "contour")
@@ -645,7 +641,7 @@ void vvSlicer::RemoveActor(const std::string& actor_type, int overlay_index)
     mOverlayActor = NULL;
     mOverlayMapper = NULL;
   }
-  if (actor_type == "fusion") {
+  if ( (actor_type == "fusion") || (actor_type == "fusionSequence") ) {
     Renderer->RemoveActor(mFusionActor);
     mFusion = NULL;
     mFusionActor = NULL;
@@ -730,6 +726,7 @@ void vvSlicer::SetTSlice(int t)
     if (mVF->GetVTKImages().size() > (unsigned int)mCurrentTSlice)
       mVOIFilter->SetInput(mVF->GetVTKImages()[mCurrentTSlice]);
   }
+//also temporarilly disabled...
   if (mOverlay && mOverlayActor->GetVisibility()) {
     if (mOverlay->GetVTKImages().size() > (unsigned int)t) {
       mCurrentOverlayTSlice = t;
@@ -741,6 +738,32 @@ void vvSlicer::SetTSlice(int t)
       mConcatenatedOverlayTransform->Concatenate(mSlicingTransform);
     }
   }
+//temporarilly disabled for testing fusionSequence
+  //if (mFusion && mFusionActor->GetVisibility()) {
+  //  if (mFusion->GetVTKImages().size() > (unsigned int)t) {
+  //    mCurrentFusionTSlice = t;
+  //    mFusionReslice->SetInput( mFusion->GetVTKImages()[mCurrentFusionTSlice]);
+
+  //    // Update fusion transform
+  //    mConcatenatedFusionTransform->Identity();
+  //    mConcatenatedFusionTransform->Concatenate(mFusion->GetTransform()[mCurrentFusionTSlice]);
+  //    mConcatenatedFusionTransform->Concatenate(mSlicingTransform);
+  //  }
+  //}
+  if (mSurfaceCutActors.size() > 0)
+    for (std::vector<vvMeshActor*>::iterator i=mSurfaceCutActors.begin();
+         i!=mSurfaceCutActors.end(); i++)
+      (*i)->SetTimeSlice(mCurrentTSlice);
+  UpdateDisplayExtent();
+}
+//------------------------------------------------------------------------------
+
+
+//------------------------------------------------------------------------------
+void vvSlicer::SetFusionSequenceTSlice(int t)
+{
+//QMessageBox::information(NULL, "vvSlicer::SetFusionSequenceTSlice", "ENTER, t = " + QString::number(t) + ", currentFusionTSlice = " + QString::number(mCurrentFusionTSlice));
+  //fusionSequence data is stored behind standard fusion data...
   if (mFusion && mFusionActor->GetVisibility()) {
     if (mFusion->GetVTKImages().size() > (unsigned int)t) {
       mCurrentFusionTSlice = t;
@@ -752,10 +775,7 @@ void vvSlicer::SetTSlice(int t)
       mConcatenatedFusionTransform->Concatenate(mSlicingTransform);
     }
   }
-  if (mSurfaceCutActors.size() > 0)
-    for (std::vector<vvMeshActor*>::iterator i=mSurfaceCutActors.begin();
-         i!=mSurfaceCutActors.end(); i++)
-      (*i)->SetTimeSlice(mCurrentTSlice);
+
   UpdateDisplayExtent();
 }
 //------------------------------------------------------------------------------
@@ -774,8 +794,9 @@ int vvSlicer::GetMaxCurrentTSlice()
   int t = mCurrentTSlice;
   if(mOverlay)
     t = std::max(t, mCurrentOverlayTSlice);
-  if(mFusion)
-    t = std::max(t, mCurrentFusionTSlice);
+  //TODO temporarily desactivated...
+  //if(mFusion)
+  //  t = std::max(t, mCurrentFusionTSlice);
   return t;
 }
 //------------------------------------------------------------------------------
@@ -913,15 +934,15 @@ void vvSlicer::UpdateDisplayExtent()
     return;
   }
   input->UpdateInformation();
+  this->SetSlice( this->GetSlice() ); //SR: make sure the update let the slice in extents
 
   // Local copy of extent
   int w_ext[6];
   int* ext = GetExtent();
   copyExtent(ext, w_ext);
   // Set slice value
-  int s = this->Slice > ext[this->SliceOrientation*2+1] ? ext[this->SliceOrientation*2 + 1] : this->Slice;
-  w_ext[ this->SliceOrientation*2   ] = s;
-  w_ext[ this->SliceOrientation*2+1 ] = s;
+  w_ext[ this->SliceOrientation*2   ] = this->Slice;
+  w_ext[ this->SliceOrientation*2+1 ] = this->Slice;
   
   // Image actor
   this->ImageActor->SetDisplayExtent(w_ext);
@@ -1012,7 +1033,6 @@ void vvSlicer::UpdateDisplayExtent()
       }
     }
   }
-  
 }
 //----------------------------------------------------------------------------