From 81d029405c57f208edb970eff49da666cbb71918 Mon Sep 17 00:00:00 2001 From: Alban Browaeys Date: Wed, 21 Jan 2015 12:01:45 +0100 Subject: [PATCH] pattern: allow for a floating one pixel rounded difference. That is if the difference between the origin and the end is bigger than .5 round up regardless of the coordinates. Round the difference of the floats instead of rounding the floats then diff them. --- src/cairo-pattern.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/cairo-pattern.c b/src/cairo-pattern.c index ac5d7af..562724d 100644 --- a/src/cairo-pattern.c +++ b/src/cairo-pattern.c @@ -3531,7 +3531,7 @@ _cairo_pattern_get_extents (const cairo_pattern_t *pattern, cairo_rectangle_int_t *extents) { double x1, y1, x2, y2; - int ix1, ix2, iy1, iy2; + double ix1, ix2, iy1, iy2; cairo_bool_t round_x = FALSE; cairo_bool_t round_y = FALSE; @@ -3725,12 +3725,12 @@ _cairo_pattern_get_extents (const cairo_pattern_t *pattern, if (x1 < CAIRO_RECT_INT_MIN) ix1 = CAIRO_RECT_INT_MIN; else - ix1 = _cairo_lround (x1); + ix1 = x1; if (x2 > CAIRO_RECT_INT_MAX) ix2 = CAIRO_RECT_INT_MAX; else - ix2 = _cairo_lround (x2); - extents->x = ix1; extents->width = ix2 - ix1; + ix2 = x2; + extents->x = ix1; extents->width = _cairo_lround(ix2 - ix1); if (!round_y) { y1 -= 0.5; @@ -3744,7 +3744,7 @@ _cairo_pattern_get_extents (const cairo_pattern_t *pattern, iy2 = CAIRO_RECT_INT_MAX; else iy2 = _cairo_lround (y2); - extents->y = iy1; extents->height = iy2 - iy1; + extents->y = iy1; extents->height = _cairo_lround(iy2 - iy1); return; -- 2.1.4