]> Creatis software - clitk.git/blobdiff - vv/vvROIActor.cxx
- add other types/dim (warning still bugs ! do not use)
[clitk.git] / vv / vvROIActor.cxx
index f4db30b67d6111a1c2286734d5400c4c4a120cdf..77dc56a7a1a0afc4fb5968d6bfa1575827eeafcf 100644 (file)
@@ -23,6 +23,7 @@
 #include <vtkImageActor.h>
 #include <vtkCamera.h>
 #include <vtkRenderer.h>
+//#include <vtkRenderWindow.h>
 #include <vtkMarchingSquares.h>
 #include <vtkImageClip.h>
 #include <vtkImageData.h>
@@ -33,6 +34,8 @@
 vvROIActor::vvROIActor() {
   mImageContour.clear();
   mOverlayActors.clear();
+  mIsVisible = true;
+  mOpacity = 0.7;
 }
 //------------------------------------------------------------------------------
 
@@ -57,12 +60,34 @@ void vvROIActor::SetSlicerManager(vvSlicerManager * s) {
 //------------------------------------------------------------------------------
 
 
+//------------------------------------------------------------------------------
+void vvROIActor::SetVisible(bool b) {
+  mIsVisible = b;
+  if (!b) { // remove actor
+    for(unsigned int i= 0; i<mOverlayActors.size(); i++) 
+      mOverlayActors[i]->hideActors();
+  }
+  else {
+    for(unsigned int i= 0; i<mOverlayActors.size(); i++) 
+      mOverlayActors[i]->showActors();
+  }
+  Update();
+}
+//------------------------------------------------------------------------------
+
+
+//------------------------------------------------------------------------------
+bool vvROIActor::IsVisible() {
+  return mIsVisible;
+}
+//------------------------------------------------------------------------------
+
+
 //------------------------------------------------------------------------------
 void vvROIActor::Initialize() {
   if (mROI->GetImage()) {
     mImageContour.clear();
     mOverlayActors.clear();
-    DD(mSlicerManager->NumberOfSlicers());
     for(int i=0;i<mSlicerManager->NumberOfSlicers(); i++) {
       mImageContour.push_back(new vvImageContour);
       mImageContour[i]->setSlicer(mSlicerManager->GetSlicer(i));
@@ -74,10 +99,11 @@ void vvROIActor::Initialize() {
       mImageContour[i]->setPreserveMemoryModeEnabled(false);        
       
       mOverlayActors.push_back(new vvBinaryImageOverlayActor);
-      mOverlayActors[i]->setImage(mROI->GetImage());
+      mOverlayActors[i]->setImage(mROI->GetImage(), mROI->GetBackgroundValueLabelImage());
       mOverlayActors[i]->setColor(mROI->GetDisplayColor()[0], 
                                  mROI->GetDisplayColor()[1], 
                                  mROI->GetDisplayColor()[2]);
+      mOverlayActors[i]->SetOpacity(mOpacity);
       mOverlayActors[i]->setSlicer(mSlicerManager->GetSlicer(i));
       mOverlayActors[i]->initialize();
     }
@@ -92,7 +118,6 @@ void vvROIActor::Initialize() {
 
 //------------------------------------------------------------------------------
 void vvROIActor::Update() {
-  DD("vvROIActor::Update");
   for(int i=0; i<mSlicerManager->NumberOfSlicers(); i++) {
     UpdateSlice(i, mSlicerManager->GetSlicer(i)->GetSlice());
   }
@@ -102,10 +127,9 @@ void vvROIActor::Update() {
 
 //------------------------------------------------------------------------------
 void vvROIActor::UpdateSlice(int slicer, int slices) {
-  // DD("UpdateSlice");
-  // DD(slicer);
-  // DD(slices);
-   if (!mROI->GetImage())  return;
+  if (!mROI->GetImage())  return;
+  
+  if (!mIsVisible) return;
 
   if (!mSlicerManager) {
     std::cerr << "Error. No mSlicerManager ?" << std::endl;
@@ -115,10 +139,32 @@ void vvROIActor::UpdateSlice(int slicer, int slices) {
   // CONTOUR HERE 
   // mImageContour[slicer]->update(1.0); 
 
-
+  // Refresh overlays
   mOverlayActors[slicer]->update(slicer, slices);
 
-  // TOO SLOW !!!!!
-  //  mSlicerManager->GetSlicer(slicer)->Render(); 
+  // Do not used the following line : TOO SLOW.
+  // mSlicerManager->GetSlicer(slicer)->GetRenderWindow()->Render(); 
 }
 //------------------------------------------------------------------------------
+
+
+//------------------------------------------------------------------------------
+void vvROIActor::SetOpacity(double d) {
+  if (d == mOpacity) return;
+  mOpacity = d; 
+  DD(mOpacity);
+  for(unsigned int i=0; i<mOverlayActors.size(); i++) {
+    DD(i);
+    mOverlayActors[i]->SetOpacity(d);
+  }
+  DD("end vvROIActor::SetOpacity");
+}
+//------------------------------------------------------------------------------
+
+
+//------------------------------------------------------------------------------
+double vvROIActor::GetOpacity() {
+  return mOpacity;
+}
+//------------------------------------------------------------------------------
+