From 63e65d1743264dfa26d2aba615d71978e65784e8 Mon Sep 17 00:00:00 2001 From: Noel Grandin Date: Wed, 30 May 2018 11:11:21 +0200 Subject: dont use GetMask in GeoTexSvxBitmapEx part of the process of making Bitmap's internals be private to vcl Change-Id: I3784c14be1572d4df64b9cbdb5adcebdd1b274fd Reviewed-on: https://gerrit.libreoffice.org/55050 Tested-by: Jenkins Reviewed-by: Michael Meeks Tested-by: Michael Meeks --- drawinglayer/source/texture/texture3d.cxx | 100 ++++++------------------------ 1 file changed, 18 insertions(+), 82 deletions(-) (limited to 'drawinglayer') diff --git a/drawinglayer/source/texture/texture3d.cxx b/drawinglayer/source/texture/texture3d.cxx index 0dac447ccf50..0573c3e4b3f5 100644 --- a/drawinglayer/source/texture/texture3d.cxx +++ b/drawinglayer/source/texture/texture3d.cxx @@ -64,39 +64,22 @@ namespace drawinglayer const BitmapEx& rBitmapEx, const basegfx::B2DRange& rRange) : maBitmapEx(rBitmapEx), - maTransparence(), maTopLeft(rRange.getMinimum()), maSize(rRange.getRange()), mfMulX(0.0), mfMulY(0.0), - mbIsAlpha(false), - mbIsTransparent(maBitmapEx.IsTransparent()) + mbIsAlpha(false) { - // #121194# Todo: use alpha channel, too (for 3d) - maBitmap = maBitmapEx.GetBitmap(); - - if(mbIsTransparent) + if(maBitmapEx.IsTransparent()) { if(maBitmapEx.IsAlpha()) { mbIsAlpha = true; - maTransparence = rBitmapEx.GetAlpha().GetBitmap(); - } - else - { - maTransparence = rBitmapEx.GetMask(); } - - mpReadTransparence = Bitmap::ScopedReadAccess(maTransparence); } - mpReadBitmap = Bitmap::ScopedReadAccess(maBitmap); - SAL_WARN_IF(!mpReadBitmap, "drawinglayer", "GeoTexSvxBitmapEx: Got no read access to Bitmap"); - if (mpReadBitmap) - { - mfMulX = static_cast(mpReadBitmap->Width()) / maSize.getX(); - mfMulY = static_cast(mpReadBitmap->Height()) / maSize.getY(); - } + mfMulX = static_cast(maBitmapEx.GetSizePixel().Width()) / maSize.getX(); + mfMulY = static_cast(maBitmapEx.GetSizePixel().Height()) / maSize.getY(); if(maSize.getX() <= 1.0) { @@ -113,60 +96,20 @@ namespace drawinglayer { } - sal_uInt8 GeoTexSvxBitmapEx::impGetTransparence(sal_Int32 rX, sal_Int32 rY) const + sal_uInt8 GeoTexSvxBitmapEx::impGetTransparence(sal_Int32 nX, sal_Int32 nY) const { - switch(maBitmapEx.GetTransparentType()) - { - case TransparentType::NONE: - { - break; - } - case TransparentType::Color: - { - const BitmapColor aBitmapColor(mpReadBitmap->GetColor(rY, rX)); - - if(maBitmapEx.GetTransparentColor() == aBitmapColor.GetColor()) - { - return 255; - } - - break; - } - case TransparentType::Bitmap: - { - OSL_ENSURE(mpReadTransparence, "OOps, transparence type Bitmap, but no read access created in the constructor (?)"); - const BitmapColor aBitmapColor(mpReadTransparence->GetPixel(rY, rX)); - - if(mbIsAlpha) - { - return aBitmapColor.GetIndex(); - } - else - { - if(0x00 != aBitmapColor.GetIndex()) - { - return 255; - } - } - break; - } - } - - return 0; + return maBitmapEx.GetTransparency(nX, nY); } bool GeoTexSvxBitmapEx::impIsValid(const basegfx::B2DPoint& rUV, sal_Int32& rX, sal_Int32& rY) const { - if(mpReadBitmap) - { - rX = static_cast((rUV.getX() - maTopLeft.getX()) * mfMulX); + rX = static_cast((rUV.getX() - maTopLeft.getX()) * mfMulX); - if(rX >= 0 && rX < mpReadBitmap->Width()) - { - rY = static_cast((rUV.getY() - maTopLeft.getY()) * mfMulY); + if(rX >= 0 && rX < maBitmapEx.GetSizePixel().Width()) + { + rY = static_cast((rUV.getY() - maTopLeft.getY()) * mfMulY); - return (rY >= 0 && rY < mpReadBitmap->Height()); - } + return (rY >= 0 && rY < maBitmapEx.GetSizePixel().Height()); } return false; @@ -179,7 +122,7 @@ namespace drawinglayer if(impIsValid(rUV, nX, nY)) { const double fConvertColor(1.0 / 255.0); - const BitmapColor aBMCol(mpReadBitmap->GetColor(nY, nX)); + const ::Color aBMCol(maBitmapEx.GetPixelColor(nX, nY)); const basegfx::BColor aBSource( static_cast(aBMCol.GetRed()) * fConvertColor, static_cast(aBMCol.GetGreen()) * fConvertColor, @@ -187,10 +130,10 @@ namespace drawinglayer rBColor = aBSource; - if(mbIsTransparent) + if(maBitmapEx.IsTransparent()) { // when we have a transparence, make use of it - const sal_uInt8 aLuminance(impGetTransparence(nX, nY)); + const sal_uInt8 aLuminance = aBMCol.GetTransparency(); rfOpacity = (static_cast(0xff - aLuminance) * (1.0 / 255.0)); } @@ -211,7 +154,7 @@ namespace drawinglayer if(impIsValid(rUV, nX, nY)) { - if(mbIsTransparent) + if(maBitmapEx.IsTransparent()) { // this texture has an alpha part, use it const sal_uInt8 aLuminance(impGetTransparence(nX, nY)); @@ -222,8 +165,7 @@ namespace drawinglayer else { // this texture is a color bitmap used as transparence map - const BitmapColor aBMCol(mpReadBitmap->GetColor(nY, nX)); - const Color aColor(aBMCol.GetRed(), aBMCol.GetGreen(), aBMCol.GetBlue()); + const ::Color aColor(maBitmapEx.GetPixelColor(nY, nX)); rfOpacity = (static_cast(0xff - aColor.GetLuminance()) * (1.0 / 255.0)); } @@ -296,18 +238,12 @@ namespace drawinglayer void GeoTexSvxBitmapExTiled::modifyBColor(const basegfx::B2DPoint& rUV, basegfx::BColor& rBColor, double& rfOpacity) const { - if(mpReadBitmap) - { - GeoTexSvxBitmapEx::modifyBColor(impGetCorrected(rUV), rBColor, rfOpacity); - } + GeoTexSvxBitmapEx::modifyBColor(impGetCorrected(rUV), rBColor, rfOpacity); } void GeoTexSvxBitmapExTiled::modifyOpacity(const basegfx::B2DPoint& rUV, double& rfOpacity) const { - if(mpReadBitmap) - { - GeoTexSvxBitmapEx::modifyOpacity(impGetCorrected(rUV), rfOpacity); - } + GeoTexSvxBitmapEx::modifyOpacity(impGetCorrected(rUV), rfOpacity); } } // end of namespace texture } // end of namespace drawinglayer -- cgit