mImage = 0;
mSlicer = 0;
mColorLUT = vtkLookupTable::New();
+ mForegroundValue = 1;
+ mBackgroundValue = 0;
+ m_modeBG = true;
}
//------------------------------------------------------------------------------
// how many intensity ?
vtkImageMapToRGBA * mOverlayMapper = vtkImageMapToRGBA::New();
mOverlayMapper->SetInput(mImage->GetVTKImages()[0]); // DS TODO : to change if it is 4D !!!
- mColorLUT->SetRange(0,1);
- mColorLUT->SetNumberOfTableValues(2);
- mColorLUT->SetTableValue(mBackgroundValue, 0, 0, 0, 0.0); // BG
- mColorLUT->SetTableValue(1, mColor[0], mColor[1], mColor[2], mAlpha); // FG
+
+ // DD("change to nb of intensity");
+ double range[2];
+ mImage->GetVTKImages()[0]->GetScalarRange(range);
+ // DD(range[0]);
+// DD(range[1]);
+ int n = range[1]-range[0]+1;
+ mColorLUT->SetRange(range[0],range[1]);
+ mColorLUT->SetNumberOfTableValues(n);
+
+ // Mode BG -> all is color except BG
+ if (m_modeBG) {
+ for(int i=0; i<n; i++) {
+ mColorLUT->SetTableValue(i, mColor[0], mColor[1], mColor[2], mAlpha);
+ }
+ mColorLUT->SetTableValue(mBackgroundValue, 0, 0, 0, 0.0);
+ }
+ else {
+ // Mode FG -> all is BG, except FG which is color
+ for(int i=0; i<n; i++) {
+ mColorLUT->SetTableValue(i, 0, 0, 0, 0.0);
+ }
+ mColorLUT->SetTableValue(mForegroundValue, mColor[0], mColor[1], mColor[2], mAlpha);
+ }
+
mOverlayMapper->SetLookupTable(mColorLUT);
vtkImageActor * mOverlayActor = vtkImageActor::New();
//------------------------------------------------------------------------------
-void vvBinaryImageOverlayActor::SetImage(vvImage::Pointer image, double bg)
+void vvBinaryImageOverlayActor::SetImage(vvImage::Pointer image, double bg, bool modeBG)
{
+ // DD("vvBinaryImageOverlayActor::SetImage");
+ //DD(modeBG);
mImage = image;
- mBackgroundValue = bg;
+ if (modeBG) {
+ mBackgroundValue = bg;
+ m_modeBG = true;
+ }
+ else {
+ mForegroundValue = bg;
+ m_modeBG = false;
+ }
}
//------------------------------------------------------------------------------
for(unsigned int i=0; i<mImageActorList.size(); i++) {
mImageActorList[i]->VisibilityOff();
}
- mSlicer->Render();
+ // Caller MUST call Render
+ // mSlicer->Render();
}
//------------------------------------------------------------------------------
mImageActorList[mTSlice]->VisibilityOn();
UpdateSlice(0, mSlice);
//}
- mSlicer->Render();
+ // Caller MUST call Render
+ //mSlicer->Render();
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void vvBinaryImageOverlayActor::ComputeExtent(int orientation,
- int slice,
- int * inExtent,
- int * outExtent)
+ int slice,
+ int * inExtent,
+ int * outExtent)
{
// std::cout << "InExtent = " << inExtent[0] << " " << inExtent[1] << " " << inExtent[2] << " "
// << inExtent[3] << " " << inExtent[4] << " " << inExtent[5] << std::endl;
//------------------------------------------------------------------------------
void vvBinaryImageOverlayActor::SetDisplayExtentAndCameraPosition(int orientation,
- int slice,
- int * extent,
- vtkImageActor * actor,
- double position)
+ int slice,
+ int * extent,
+ vtkImageActor * actor,
+ double position)
{
- actor->SetDisplayExtent(extent);
-
// Set position
if (orientation == vtkImageViewer2::SLICE_ORIENTATION_XY) {
if (mSlicer->GetRenderer()->GetActiveCamera()->GetPosition()[2] > slice)
else
actor->SetPosition(-position,0, 0);
}
-
+ actor->SetDisplayExtent(extent);
}
//------------------------------------------------------------------------------
-
-
-