[gtk+/wip/pango-shadow-cache: 8/8] xxx clip



commit ff58cd44cb1ca3ddfcbbb23355bd006f445972bc
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Wed Sep 3 10:23:01 2014 -0700

    xxx clip

 gtk/gtkcssshadowvalue.c |   14 ++++++--------
 1 files changed, 6 insertions(+), 8 deletions(-)
---
diff --git a/gtk/gtkcssshadowvalue.c b/gtk/gtkcssshadowvalue.c
index f8acb4a..d2a67b3 100644
--- a/gtk/gtkcssshadowvalue.c
+++ b/gtk/gtkcssshadowvalue.c
@@ -348,14 +348,7 @@ gtk_css_shadow_value_start_drawing (const GtkCssValue *shadow,
   cairo_surface_set_device_offset (surface, clip_radius - clip_rect.x, clip_radius - clip_rect.y);
   blur_cr = cairo_create (surface);
   cairo_set_user_data (blur_cr, &original_cr_key, cairo_reference (cr), (cairo_destroy_func_t) 
cairo_destroy);
-
-  if (cairo_has_current_point (cr))
-    {
-      double x, y;
-
-      cairo_get_current_point (cr, &x, &y);
-      cairo_move_to (blur_cr, x, y);
-    }
+  cairo_new_sub_path (blur_cr);
 
   return blur_cr;
 }
@@ -422,6 +415,7 @@ _gtk_css_shadow_value_paint_layout (const GtkCssValue *shadow,
                                     PangoLayout       *layout)
 {
   double x, y;
+  PangoRectangle ink_rect;
 
   g_return_if_fail (shadow->class == &GTK_CSS_VALUE_SHADOW);
 
@@ -431,6 +425,10 @@ _gtk_css_shadow_value_paint_layout (const GtkCssValue *shadow,
   cairo_translate (cr, x, y);
   cairo_new_sub_path (cr);
 
+  pango_layout_get_pixel_extents (layout, &ink_rect, NULL);
+  cairo_rectangle (cr, ink_rect.x, ink_rect.y, ink_rect.width, ink_rect.height);
+  cairo_clip (cr);
+
   cairo_translate (cr,
                    _gtk_css_number_value_get (shadow->hoffset, 0),
                    _gtk_css_number_value_get (shadow->voffset, 0));


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]