summaryrefslogtreecommitdiff
path: root/gtk/gtkcssshadowvalue.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2014-02-03 15:56:59 +0100
committerBenjamin Otte <otte@redhat.com>2014-02-03 21:38:16 +0100
commite9fb8ad1f7606deb4ae35773351e67281d56aa9f (patch)
tree5d86ac77d3a641058860b015365b0962fda9306b /gtk/gtkcssshadowvalue.c
parent43baa213b254a9457eca0ff6aec46b8678fab2ea (diff)
downloadgtk+-e9fb8ad1f7606deb4ae35773351e67281d56aa9f.tar.gz
css: Fix computation of pixels occupied by blur radius
These computations were done randomly in lots of places and more often than not, they were also wrong. This function was copied (with docs) from Firefox: http://lxr.mozilla.org/mozilla-central/source/gfx/2d/Blur.cpp https://bugzilla.gnome.org/show_bug.cgi?id=723159
Diffstat (limited to 'gtk/gtkcssshadowvalue.c')
-rw-r--r--gtk/gtkcssshadowvalue.c8
1 files changed, 2 insertions, 6 deletions
diff --git a/gtk/gtkcssshadowvalue.c b/gtk/gtkcssshadowvalue.c
index cdfd852612..6dcd2dd798 100644
--- a/gtk/gtkcssshadowvalue.c
+++ b/gtk/gtkcssshadowvalue.c
@@ -31,10 +31,6 @@
#include <math.h>
-/* The blur of _gtk_cairo_blur_surface only approximately ends at radius,
- so we add an extra pixel to make the clips less dramatic */
-#define CLIP_RADIUS_EXTRA 4
-
struct _GtkCssValue {
GTK_CSS_VALUE_BASE
guint inset :1;
@@ -327,7 +323,7 @@ gtk_css_shadow_value_start_drawing (const GtkCssValue *shadow,
gdk_cairo_get_clip_rectangle (cr, &clip_rect);
- clip_radius = radius + CLIP_RADIUS_EXTRA;
+ clip_radius = _gtk_cairo_blur_compute_pixels (radius);
/* Create a larger surface to center the blur. */
surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
@@ -534,7 +530,7 @@ _gtk_css_shadow_value_paint_box (const GtkCssValue *shadow,
spread = _gtk_css_number_value_get (shadow->spread, 0);
radius = _gtk_css_number_value_get (shadow->radius, 0);
- clip_radius = radius + CLIP_RADIUS_EXTRA;
+ clip_radius = _gtk_cairo_blur_compute_pixels (radius);
x = _gtk_css_number_value_get (shadow->hoffset, 0);
y = _gtk_css_number_value_get (shadow->voffset, 0);