summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drawinglayer/source/processor2d/vclhelperbufferdevice.cxx17
1 files changed, 17 insertions, 0 deletions
diff --git a/drawinglayer/source/processor2d/vclhelperbufferdevice.cxx b/drawinglayer/source/processor2d/vclhelperbufferdevice.cxx
index e94f5818d077..d1045cc821e4 100644
--- a/drawinglayer/source/processor2d/vclhelperbufferdevice.cxx
+++ b/drawinglayer/source/processor2d/vclhelperbufferdevice.cxx
@@ -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
{