summaryrefslogtreecommitdiffstats
path: root/WebCore/platform/graphics/qt/ImageQt.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/platform/graphics/qt/ImageQt.cpp')
-rw-r--r--WebCore/platform/graphics/qt/ImageQt.cpp16
1 files changed, 8 insertions, 8 deletions
diff --git a/WebCore/platform/graphics/qt/ImageQt.cpp b/WebCore/platform/graphics/qt/ImageQt.cpp
index 0d23738..af94f55 100644
--- a/WebCore/platform/graphics/qt/ImageQt.cpp
+++ b/WebCore/platform/graphics/qt/ImageQt.cpp
@@ -177,17 +177,17 @@ void BitmapImage::draw(GraphicsContext* ctxt, const FloatRect& dst,
IntSize selfSize = size();
- ctxt->save();
-
- // Set the compositing operation.
- ctxt->setCompositeOperation(op);
-
QPainter* painter(ctxt->platformContext());
+ QPainter::CompositionMode compositionMode = GraphicsContext::toQtCompositionMode(op);
+
if (!image->hasAlpha() && painter->compositionMode() == QPainter::CompositionMode_SourceOver)
- painter->setCompositionMode(QPainter::CompositionMode_Source);
+ compositionMode = QPainter::CompositionMode_Source;
+
+ QPainter::CompositionMode lastCompositionMode = painter->compositionMode();
+ painter->setCompositionMode(compositionMode);
- IntSize shadowSize;
+ FloatSize shadowSize;
float shadowBlur;
Color shadowColor;
if (ctxt->getShadow(shadowSize, shadowBlur, shadowColor)) {
@@ -208,7 +208,7 @@ void BitmapImage::draw(GraphicsContext* ctxt, const FloatRect& dst,
// http://www.meyerweb.com/eric/css/edge/complexspiral/demo.html
painter->drawPixmap(dst, *image, src);
- ctxt->restore();
+ painter->setCompositionMode(lastCompositionMode);
if (imageObserver())
imageObserver()->didDraw(this);