]> Creatis software - clitk.git/blobdiff - vv/vvROIActor.cxx
- contours show/hide
[clitk.git] / vv / vvROIActor.cxx
index 77dc56a7a1a0afc4fb5968d6bfa1575827eeafcf..abf3eb6ca2e8cb4388316a5ce04bef4bc55530dc 100644 (file)
@@ -1,7 +1,7 @@
 /*=========================================================================
   Program:   vv                     http://www.creatis.insa-lyon.fr/rio/vv
 
-  Authors belong to: 
+  Authors belong to:
   - University of LYON              http://www.universite-lyon.fr/
   - Léon Bérard cancer center       http://oncora1.lyon.fnclcc.fr
   - CREATIS CNRS laboratory         http://www.creatis.insa-lyon.fr
 #include <vtkProperty.h>
 
 //------------------------------------------------------------------------------
-vvROIActor::vvROIActor() {
+vvROIActor::vvROIActor()
+{
   mImageContour.clear();
   mOverlayActors.clear();
   mIsVisible = true;
   mOpacity = 0.7;
+  mIsSelected = false;
 }
 //------------------------------------------------------------------------------
 
 
 //------------------------------------------------------------------------------
-vvROIActor::~vvROIActor() {
+vvROIActor::~vvROIActor()
+{
 }
 //------------------------------------------------------------------------------
 
 
 //------------------------------------------------------------------------------
-void vvROIActor::SetROI(const clitk::DicomRT_ROI * s) {
+void vvROIActor::SetROI(clitk::DicomRT_ROI * s)
+{
   mROI = s;
 }
 //------------------------------------------------------------------------------
 
 
 //------------------------------------------------------------------------------
-void vvROIActor::SetSlicerManager(vvSlicerManager * s) {
+void vvROIActor::SetSlicerManager(vvSlicerManager * s)
+{
   mSlicerManager = s;
 }
 //------------------------------------------------------------------------------
 
 
 //------------------------------------------------------------------------------
-void vvROIActor::SetVisible(bool b) {
+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();
+    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();
 }
@@ -77,37 +82,40 @@ void vvROIActor::SetVisible(bool b) {
 
 
 //------------------------------------------------------------------------------
-bool vvROIActor::IsVisible() {
+bool vvROIActor::IsVisible()
+{
   return mIsVisible;
 }
 //------------------------------------------------------------------------------
 
 
 //------------------------------------------------------------------------------
-void vvROIActor::Initialize() {
+void vvROIActor::Initialize()
+{
   if (mROI->GetImage()) {
     mImageContour.clear();
     mOverlayActors.clear();
-    for(int i=0;i<mSlicerManager->NumberOfSlicers(); i++) {
+    for(int i=0; i<mSlicerManager->NumberOfSlicers(); i++) {
       mImageContour.push_back(new vvImageContour);
       mImageContour[i]->setSlicer(mSlicerManager->GetSlicer(i));
       mImageContour[i]->setImage(mROI->GetImage());
-      //      mImageContour[i]->setColor(1.0, 0.0, 0.0);
-      mImageContour[i]->setColor(mROI->GetDisplayColor()[0], 
-                                mROI->GetDisplayColor()[1], 
-                                mROI->GetDisplayColor()[2]);
-      mImageContour[i]->setPreserveMemoryModeEnabled(false);        
-      
+      //mImageContour[i]->setColor(1.0, 0.0, 0.0);
+      mImageContour[i]->setColor(1.0-mROI->GetDisplayColor()[0],
+                                 1.0-mROI->GetDisplayColor()[1],
+                                 1.0-mROI->GetDisplayColor()[2]);
+      mImageContour[i]->setPreserveMemoryModeEnabled(true);
+      mImageContour[i]->setSlicer(mSlicerManager->GetSlicer(i));
+
       mOverlayActors.push_back(new vvBinaryImageOverlayActor);
-      mOverlayActors[i]->setImage(mROI->GetImage(), mROI->GetBackgroundValueLabelImage());
-      mOverlayActors[i]->setColor(mROI->GetDisplayColor()[0], 
-                                 mROI->GetDisplayColor()[1], 
-                                 mROI->GetDisplayColor()[2]);
+      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();
+      mOverlayActors[i]->SetSlicer(mSlicerManager->GetSlicer(i));
+      mOverlayActors[i]->Initialize();
     }
-    
+
     connect(mSlicerManager,SIGNAL(UpdateSlice(int,int)),this,SLOT(UpdateSlice(int, int)));
     //connect(mSlicerManager,SIGNAL(UpdateTSlice(int,int)),this,SLOT(UpdateSlice(int, int)));
     connect(mSlicerManager, SIGNAL(AVerticalSliderHasChanged(int, int)), SLOT(UpdateSlice(int, int)));
@@ -117,7 +125,8 @@ void vvROIActor::Initialize() {
 
 
 //------------------------------------------------------------------------------
-void vvROIActor::Update() {
+void vvROIActor::Update()
+{
   for(int i=0; i<mSlicerManager->NumberOfSlicers(); i++) {
     UpdateSlice(i, mSlicerManager->GetSlicer(i)->GetSlice());
   }
@@ -126,9 +135,10 @@ void vvROIActor::Update() {
 
 
 //------------------------------------------------------------------------------
-void vvROIActor::UpdateSlice(int slicer, int slices) {
+void vvROIActor::UpdateSlice(int slicer, int slices)
+{
   if (!mROI->GetImage())  return;
-  
+
   if (!mIsVisible) return;
 
   if (!mSlicerManager) {
@@ -136,35 +146,82 @@ void vvROIActor::UpdateSlice(int slicer, int slices) {
     exit(0);
   }
 
-  // CONTOUR HERE 
-  // mImageContour[slicer]->update(1.0); 
+  // CONTOUR HERE
+  DD("vvROIActor::UpdateSlice");
+  DD(mROI->GetName());
+  DD(mIsSelected);
+  DD(mROI->GetBackgroundValueLabelImage());
+  if (mIsSelected) {
+    mImageContour[slicer]->update(1.0);//mROI->GetBackgroundValueLabelImage());
+    //    mImageContour[slicer]->showActors();
+  }
 
   // Refresh overlays
-  mOverlayActors[slicer]->update(slicer, slices);
+  mOverlayActors[slicer]->UpdateSlice(slicer, slices);
 
   // Do not used the following line : TOO SLOW.
-  // mSlicerManager->GetSlicer(slicer)->GetRenderWindow()->Render(); 
+  // mSlicerManager->GetSlicer(slicer)->GetRenderWindow()->Render();
 }
 //------------------------------------------------------------------------------
 
 
 //------------------------------------------------------------------------------
-void vvROIActor::SetOpacity(double d) {
-  if (d == mOpacity) return;
-  mOpacity = d; 
-  DD(mOpacity);
+// void vvROIActor::UpdateOpacity(double d) {
+//   if (d == mOpacity) return;
+//   mOpacity = d;
+//   for(unsigned int i=0; i<mOverlayActors.size(); i++) {
+//     mOverlayActors[i]->SetOpacity(d);
+//     mOverlayActors[i]->UpdateColor();
+//   }
+//   mSlicerManager->Render();
+// }
+//------------------------------------------------------------------------------
+
+
+//------------------------------------------------------------------------------
+void vvROIActor::SetOpacity(double d)
+{
+  mOpacity = d;
+}
+//------------------------------------------------------------------------------
+
+
+//------------------------------------------------------------------------------
+void vvROIActor::UpdateColor()
+{
   for(unsigned int i=0; i<mOverlayActors.size(); i++) {
-    DD(i);
-    mOverlayActors[i]->SetOpacity(d);
+    mOverlayActors[i]->SetOpacity(mOpacity);
+    mOverlayActors[i]->SetColor(mROI->GetDisplayColor()[0],
+                                mROI->GetDisplayColor()[1],
+                                mROI->GetDisplayColor()[2]);
+    mOverlayActors[i]->UpdateColor();
   }
-  DD("end vvROIActor::SetOpacity");
 }
 //------------------------------------------------------------------------------
 
 
 //------------------------------------------------------------------------------
-double vvROIActor::GetOpacity() {
+double vvROIActor::GetOpacity()
+{
   return mOpacity;
 }
 //------------------------------------------------------------------------------
 
+
+//------------------------------------------------------------------------------
+void vvROIActor::SetSelected(bool b)
+{
+  mIsSelected = b;
+  if (b) {
+    for(int i=0; i<mSlicerManager->NumberOfSlicers(); i++) {
+      mImageContour[i]->SetLineWidth(3.0);
+      mImageContour[i]->showActors();
+    }
+  } else {
+    for(int i=0; i<mSlicerManager->NumberOfSlicers(); i++) {
+      mImageContour[i]->hideActors();
+    }
+  }
+}
+//------------------------------------------------------------------------------
+