"Fix" for some SmartArt rendering artefacts on iOS

Exactly why this change works (to the extent that it does) is unclear
to me. Whether it could possibly be used across all platforms and not
for iOS is also unclear.

Change-Id: I6dcf5982d51e5715b657dbf263a88776bbf55f4d
This commit is contained in:
Tor Lillqvist 2014-04-11 13:10:13 +03:00
parent b78caf9645
commit c03986e084

View File

@ -332,9 +332,26 @@ namespace drawinglayer
}
else if(0.0 != fTrans)
{
#ifndef IOS
// For some reason using this "normal" code path on
// iOS with tiled rendering causes horrible artefacts:
// The mask ends up being drawn too, ending up looking
// as translucent milky rectangles covering the
// SmartArt (which is what this typically (?) ends up
// being used for) ... Why this doesn't cause any
// artefacts on OS X, which uses largely the very same
// code in vcl/quartz, I don't know.
sal_uInt8 nMaskValue((sal_uInt8)basegfx::fround(fTrans * 255.0));
const AlphaMask aAlphaMask(aSizePixel, &nMaskValue);
mrOutDev.DrawBitmapEx(maDestPixel.TopLeft(), BitmapEx(aContent, aAlphaMask));
#else
// Not sure at all why this works, but it does. The
// result is not beautiful (jaggies), but better than
// blocking out rectangles of the image.
Bitmap aMask(aContent);
aMask.Convert(BMP_CONVERSION_8BIT_GREYS);
mrOutDev.DrawBitmapEx(maDestPixel.TopLeft(), BitmapEx(aContent, aMask));
#endif
}
else
{