diff options
Diffstat (limited to 'WebCore/platform/graphics/qt/ImageQt.cpp')
-rw-r--r-- | WebCore/platform/graphics/qt/ImageQt.cpp | 16 |
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); |