2007-04-23 Alp Toker <alp@atoker.com>
authorbdash <bdash@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 23 Apr 2007 15:32:07 +0000 (15:32 +0000)
committerbdash <bdash@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 23 Apr 2007 15:32:07 +0000 (15:32 +0000)
        Reviewed by Mark.

        Save and restore the context state when beginning and ending a transparency layer.

        * platform/graphics/cairo/GraphicsContextCairo.cpp:
        (WebCore::GraphicsContext::beginTransparencyLayer):
        (WebCore::GraphicsContext::endTransparencyLayer):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@21041 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog
WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp

index 9e0fa56..e7d485c 100644 (file)
@@ -2,6 +2,16 @@
 
         Reviewed by Mark.
 
+        Save and restore the context state when beginning and ending a transparency layer.
+
+        * platform/graphics/cairo/GraphicsContextCairo.cpp:
+        (WebCore::GraphicsContext::beginTransparencyLayer):
+        (WebCore::GraphicsContext::endTransparencyLayer):
+
+2007-04-23  Alp Toker  <alp@atoker.com>
+
+        Reviewed by Mark.
+
         Further implementation and checks. The opacity layer code is not so beautiful
         but gets the job done with fewer complications than maintaining our own stack.
 
index 702eddb..13d69fe 100644 (file)
@@ -577,6 +577,7 @@ void GraphicsContext::beginTransparencyLayer(float opacity)
     ASSERT(opacity >= 0 && opacity <= 1);
 
     cairo_t* context = m_data->context;
+    cairo_save(context);
     cairo_push_group(context);
     // We insert the opacity into a Cairo surface data slot.
     // Rather than passing a pointer, we store the opacity value directly.
@@ -597,6 +598,7 @@ void GraphicsContext::endTransparencyLayer()
 
     cairo_pop_group_to_source(context);
     cairo_paint_with_alpha(context, opacity);
+    cairo_restore(context);
 }
 
 void GraphicsContext::clearRect(const FloatRect&)