]> Creatis software - clitk.git/blobdiff - vv/vvImageContour.cxx
- ggo is now used by the filter
[clitk.git] / vv / vvImageContour.cxx
index 63df2cb784c3dcc9aa66d7a56cf81d9597f0530a..7318640f78d287209c4533c20605786ea33391f3 100644 (file)
@@ -3,8 +3,8 @@
   Program:   vv
   Module:    $RCSfile: vvImageContour.cxx,v $
   Language:  C++
-  Date:      $Date: 2010/02/07 12:00:59 $
-  Version:   $Revision: 1.2 $
+  Date:      $Date: 2010/03/05 10:32:33 $
+  Version:   $Revision: 1.5 $
   Author :   David Sarrut (david.sarrut@creatis.insa-lyon.fr)
 
   Copyright (C) 2010
 #include "vvImageContour.h"
 #include <vtkImageActor.h>
 #include <vtkCamera.h>
+#include <vtkRenderer.h>
 #include <vtkMarchingSquares.h>
 #include <vtkImageClip.h>
 #include <vtkImageData.h>
+#include <vtkPolyDataMapper.h>
+#include <vtkProperty.h>
 
 //------------------------------------------------------------------------------
 vvImageContour::vvImageContour() {
@@ -57,7 +60,6 @@ void vvImageContour::setSlicer(vvSlicer * slicer) {
   mSlicer = slicer;  
 
   for (unsigned int numImage = 0; numImage < mSlicer->GetImage()->GetVTKImages().size(); numImage++) {
-    // DD(numImage);
     vtkImageClip * mClipper = vtkImageClip::New();
     vtkMarchingSquares * mSquares = vtkMarchingSquares::New();
     vtkPolyDataMapper * mSquaresMapper = vtkPolyDataMapper::New();
@@ -76,17 +78,52 @@ void vvImageContour::setSlicer(vvSlicer * slicer) {
     mSquaresActorList.push_back(mSquaresActor);
     mSquaresList.push_back(mSquares);
     mClipperList.push_back(mClipper);
+  }
+}
+//------------------------------------------------------------------------------
 
+
+//------------------------------------------------------------------------------
+void vvImageContour::setColor(double r, double g, double b) {
+  for(unsigned int i=0; i<mSquaresActorList.size(); i++) {
+    mSquaresActorList[i]->GetProperty()->SetColor(r,g,b);
   }
-  //mSquares->Update();
 }
 //------------------------------------------------------------------------------
 
 
 //------------------------------------------------------------------------------
-void vvImageContour::update(int value) {
+void vvImageContour::hideActors() {
+  if (!mSlicer) return;
   mSlice = mSlicer->GetSlice();
+  for(unsigned int i=0; i<mSquaresActorList.size(); i++) {
+    mSquaresActorList[i]->VisibilityOff();
+  }
+}
+//------------------------------------------------------------------------------
 
+  
+//------------------------------------------------------------------------------
+void vvImageContour::showActors() {
+  if (!mSlicer) return;
+  mSlice = mSlicer->GetSlice();
+  mTSlice = mSlicer->GetTSlice();
+  //  for(unsigned int i=0; i<mSquaresActorList.size(); i++) {
+  mSquaresActorList[mTSlice]->VisibilityOn();
+  update(mValue);
+  //}
+}
+//------------------------------------------------------------------------------
+
+  
+//------------------------------------------------------------------------------
+void vvImageContour::update(double value) {
+  mValue= value;
+  if (!mSlicer) return;
+
+  // how to not update if not visible ?
+
+  mSlice = mSlicer->GetSlice();
   // Only change actor visibility if tslice change
   if (mTSlice != mSlicer->GetTSlice()) {
     if (mTSlice != -1) 
@@ -118,36 +155,30 @@ void vvImageContour::update(int value) {
       if (mSlicer->GetRenderer()->GetActiveCamera()->GetPosition()[0] > mSlice)
         {
          mSquaresActor->SetPosition(1,0,0);
-         // mSquaresActor2->SetPosition(1,0,0);
         }
       else
         {
          mSquaresActor->SetPosition(-1,0,0);
-         // mSquaresActor2->SetPosition(-1,0,0);
         }
       break;
     case 2:
       if (mSlicer->GetRenderer()->GetActiveCamera()->GetPosition()[1] > mSlice)
         {
          mSquaresActor->SetPosition(0,1,0);
-          //   mSquaresActor2->SetPosition(0,1,0);
         }
       else
         {
          mSquaresActor->SetPosition(0,-1,0);
-         // mSquaresActor2->SetPosition(0,-1,0);
         }
       break;
     case 4:
       if (mSlicer->GetRenderer()->GetActiveCamera()->GetPosition()[2] > mSlice)
         {
          mSquaresActor->SetPosition(0,0,1);
-         // mSquaresActor2->SetPosition(0,0,1);
         }
       else
         {
          mSquaresActor->SetPosition(0,0,-1);
-         // mSquaresActor2->SetPosition(0,0,-1);
         }
       break;
     }