]> Creatis software - clitk.git/blobdiff - vv/vvROIActor.cxx
Remove reslice from vvImage. The transform is kept but it's up to the user to use...
[clitk.git] / vv / vvROIActor.cxx
index 382edf9f788452d88d7ac2f39cc5b5fcaa4ce422..93bf44f497505e653958961c0d94d105ee9cf0b1 100644 (file)
@@ -18,9 +18,7 @@
 
 // vv
 #include "vvROIActor.h"
-#include "vvImageContour.h"
 #include "vvSlicerManager.h"
-#include "vvBinaryImageOverlayActor.h"
 
 // vtk
 #include <vtkImageActor.h>
 //------------------------------------------------------------------------------
 vvROIActor::vvROIActor()
 {
-  mImageContour.clear();
-  mOverlayActors.clear();
   mIsVisible = true;
   mIsContourVisible = false;
   mOpacity = 0.7;
   mIsSelected = false;
   mContourWidth = 1;
   mContourColor.resize(3);
+  m_modeBG = true;
 }
 //------------------------------------------------------------------------------
 
@@ -79,15 +76,9 @@ void vvROIActor::SetSlicerManager(vvSlicerManager * s) {
 //------------------------------------------------------------------------------
 void vvROIActor::UpdateImage()
 {
-  for(unsigned int i= 0; i<mOverlayActors.size(); i++) {
-    mOverlayActors[i]->HideActors();
-    delete mOverlayActors[i];
-  }
-  for(unsigned int i= 0; i<mImageContour.size(); i++) {
-    mImageContour[i]->HideActors();
-    delete mImageContour[i];
-  }
-  Initialize();
+  mOverlayActors.clear();
+  mImageContour.clear();
+  Initialize(mIsVisible);
   Update(); // No Render
 }
 //------------------------------------------------------------------------------
@@ -142,12 +133,13 @@ bool vvROIActor::IsContourVisible() {
 
 
 //------------------------------------------------------------------------------
-void vvROIActor::Initialize() {
+void vvROIActor::Initialize(bool IsVisible) {
   if (mROI->GetImage()) {
     mImageContour.clear();
     mOverlayActors.clear();
-    for(int i=0; i<mSlicerManager->NumberOfSlicers(); i++) {
-      mImageContour.push_back(new vvImageContour);
+    for(int i=0; i<mSlicerManager->GetNumberOfSlicers(); i++) {
+
+      mImageContour.push_back(vvImageContour::New());
       mImageContour[i]->SetSlicer(mSlicerManager->GetSlicer(i));
       mImageContour[i]->SetImage(mROI->GetImage());
       mContourColor[0] = mROI->GetDisplayColor()[0];
@@ -156,17 +148,27 @@ void vvROIActor::Initialize() {
       mImageContour[i]->SetColor(mContourColor[0], mContourColor[1], mContourColor[2]);
       mImageContour[i]->SetLineWidth(mContourWidth);
       mImageContour[i]->SetPreserveMemoryModeEnabled(true);
+      //mImageContour[i]->SetPreserveMemoryModeEnabled(false); // SEG FAULT !!!
       mImageContour[i]->SetSlicer(mSlicerManager->GetSlicer(i));
       mImageContour[i]->HideActors();
       
-      mOverlayActors.push_back(new vvBinaryImageOverlayActor);
-      mOverlayActors[i]->SetImage(mROI->GetImage(), mROI->GetBackgroundValueLabelImage());
+      mOverlayActors.push_back(vvBinaryImageOverlayActor::New());
+
+      // BG or FG
+      if (m_modeBG) {
+       mOverlayActors[i]->SetImage(mROI->GetImage(), mROI->GetBackgroundValueLabelImage());
+      }
+      else {
+       mOverlayActors[i]->SetImage(mROI->GetImage(), mROI->GetForegroundValueLabelImage(), false);
+      }
+
+
       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();
+      mOverlayActors[i]->Initialize(IsVisible);
     }
 
     connect(mSlicerManager,SIGNAL(UpdateSlice(int,int)),this,SLOT(UpdateSlice(int, int)));
@@ -180,7 +182,7 @@ void vvROIActor::Initialize() {
 //------------------------------------------------------------------------------
 void vvROIActor::Update()
 {
-  for(int i=0; i<mSlicerManager->NumberOfSlicers(); i++) {
+  for(int i=0; i<mSlicerManager->GetNumberOfSlicers(); i++) {
     UpdateSlice(i, mSlicerManager->GetSlicer(i)->GetSlice());
   }
 }
@@ -261,15 +263,14 @@ double vvROIActor::GetOpacity()
 //------------------------------------------------------------------------------
 void vvROIActor::SetSelected(bool b)
 {
-  DD(" Not used yet");
   mIsSelected = b;
   if (b) {
-    for(int i=0; i<mSlicerManager->NumberOfSlicers(); i++) {
+    for(int i=0; i<mSlicerManager->GetNumberOfSlicers(); i++) {
       mImageContour[i]->SetLineWidth(3.0);
       mImageContour[i]->ShowActors();
     }
   } else {
-    for(int i=0; i<mSlicerManager->NumberOfSlicers(); i++) {
+    for(int i=0; i<mSlicerManager->GetNumberOfSlicers(); i++) {
       mImageContour[i]->HideActors();
     }
   }