From cadb0f18a9d6819c28e3908aeee6d01276d7786c Mon Sep 17 00:00:00 2001 From: Daiki Ueno Date: Mon, 7 Mar 2011 16:51:01 +0900 Subject: [PATCH] Fix gradient drawing. --- eek/eek-renderer.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/eek/eek-renderer.c b/eek/eek-renderer.c index 744f67f4..dbdee50c 100644 --- a/eek/eek-renderer.c +++ b/eek/eek-renderer.c @@ -251,27 +251,30 @@ render_key_outline (EekRenderer *renderer, if (gradient) { cairo_pattern_t *pat; + gdouble cx, cy; switch (gradient->type) { case EEK_GRADIENT_VERTICAL: - pat = cairo_pattern_create_linear (bounds.width / 2 * priv->scale, + pat = cairo_pattern_create_linear (0.0, + 0.0, 0.0, - bounds.width / 2 * priv->scale, bounds.height * priv->scale); break; case EEK_GRADIENT_HORIZONTAL: pat = cairo_pattern_create_linear (0.0, - bounds.height / 2 * priv->scale, + 0.0, bounds.width * priv->scale, - bounds.height / 2 * priv->scale); + 0.0); break; case EEK_GRADIENT_RADIAL: - pat = cairo_pattern_create_radial (0.0, - 0.0, + cx = bounds.width / 2 * priv->scale; + cy = bounds.height / 2 * priv->scale; + pat = cairo_pattern_create_radial (cx, + cy, 0, - 0.0, - 0.0, - MIN(bounds.width, bounds.height) * priv->scale); + cx, + cy, + MIN(cx, cy)); break; default: g_assert_not_reached ();