Authors belong to:
- University of LYON http://www.universite-lyon.fr/
- - Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr
+ - Léon Bérard cancer center http://www.centreleonberard.fr
- CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr
This software is distributed WITHOUT ANY WARRANTY; without even
- BSD See included LICENSE.txt file
- CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
- ======================================================================-====*/
+ ===========================================================================**/
// 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;
+ mDepth = 1.0;
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
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(mDepth, mIsVisible);
Update(); // No Render
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
-void vvROIActor::Initialize() {
+void vvROIActor::Initialize(double depth, bool IsVisible) {
if (mROI->GetImage()) {
mImageContour.clear();
mOverlayActors.clear();
- for(int i=0; i<mSlicerManager->NumberOfSlicers(); i++) {
- mImageContour.push_back(new vvImageContour);
+ mDepth = depth;
+ 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];
mImageContour[i]->SetColor(mContourColor[0], mContourColor[1], mContourColor[2]);
mImageContour[i]->SetLineWidth(mContourWidth);
mImageContour[i]->SetPreserveMemoryModeEnabled(true);
+ mImageContour[i]->SetDepth(mDepth);
+ //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);
+ mOverlayActors[i]->SetDepth(mDepth);
}
connect(mSlicerManager,SIGNAL(UpdateSlice(int,int)),this,SLOT(UpdateSlice(int, int)));
//------------------------------------------------------------------------------
-void vvROIActor::Update()
+void vvROIActor::SetDepth(double d)
+{
+ mDepth = d;
+ for(int i=0; i<mSlicerManager->GetNumberOfSlicers(); i++) {
+ mOverlayActors[i]->SetDepth(d);
+ mImageContour[i]->SetDepth(d);
+ }
+ Update(true);
+}
+//------------------------------------------------------------------------------
+
+
+//------------------------------------------------------------------------------
+void vvROIActor::Update(bool force)
{
- for(int i=0; i<mSlicerManager->NumberOfSlicers(); i++) {
- UpdateSlice(i, mSlicerManager->GetSlicer(i)->GetSlice());
+ for(int i=0; i<mSlicerManager->GetNumberOfSlicers(); i++) {
+ UpdateSlice(i, mSlicerManager->GetSlicer(i)->GetSlice(), force);
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
-void vvROIActor::UpdateSlice(int slicer, int slices)
+void vvROIActor::UpdateSlice(int slicer, int slices, bool force)
{
if (!mROI->GetImage()) return;
if ((!mIsVisible) && (!mIsContourVisible)) return;
}
// Refresh overlays
- mOverlayActors[slicer]->UpdateSlice(slicer, slices);
+ mOverlayActors[slicer]->UpdateSlice(slicer, slices, force);
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
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();
}
}