X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvBinaryImageOverlayActor.cxx;h=a30206f21dcd618c93727f87b705f3ec6c45ee44;hb=0bbf0c26e4e2b917143315bec9ce1c52a357a500;hp=efdb19124c4388d548277979554e8a39aee80e75;hpb=6789a2e30f7c951de93ebd0c0596e7168ec6e061;p=clitk.git diff --git a/vv/vvBinaryImageOverlayActor.cxx b/vv/vvBinaryImageOverlayActor.cxx index efdb191..a30206f 100644 --- a/vv/vvBinaryImageOverlayActor.cxx +++ b/vv/vvBinaryImageOverlayActor.cxx @@ -39,6 +39,9 @@ vvBinaryImageOverlayActor::vvBinaryImageOverlayActor() mImage = 0; mSlicer = 0; mColorLUT = vtkLookupTable::New(); + mForegroundValue = 1; + mBackgroundValue = 0; + m_modeBG = true; } //------------------------------------------------------------------------------ @@ -90,10 +93,31 @@ void vvBinaryImageOverlayActor::Initialize() // 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; iSetTableValue(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; iSetTableValue(i, 0, 0, 0, 0.0); + } + mColorLUT->SetTableValue(mForegroundValue, mColor[0], mColor[1], mColor[2], mAlpha); + } + mOverlayMapper->SetLookupTable(mColorLUT); vtkImageActor * mOverlayActor = vtkImageActor::New(); @@ -153,10 +177,19 @@ void vvBinaryImageOverlayActor::SetOpacity(double d) //------------------------------------------------------------------------------ -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; + } } //------------------------------------------------------------------------------