#include <vtkImageActor.h>
#include <vtkCamera.h>
#include <vtkRenderer.h>
+//#include <vtkRenderWindow.h>
#include <vtkMarchingSquares.h>
#include <vtkImageClip.h>
#include <vtkImageData.h>
vvROIActor::vvROIActor() {
mImageContour.clear();
mOverlayActors.clear();
+ mIsVisible = true;
+ mOpacity = 0.7;
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
+//------------------------------------------------------------------------------
+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));
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();
}
//------------------------------------------------------------------------------
void vvROIActor::Update() {
- DD("vvROIActor::Update");
for(int i=0; i<mSlicerManager->NumberOfSlicers(); i++) {
UpdateSlice(i, mSlicerManager->GetSlicer(i)->GetSlice());
}
//------------------------------------------------------------------------------
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;
// 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;
+}
+//------------------------------------------------------------------------------
+