[cairo-commit] src/cairo-pattern.c

Bryce Harrington bryce at kemper.freedesktop.org
Thu Jun 18 16:08:08 PDT 2015


 src/cairo-pattern.c |   10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

New commits:
commit e7acf4b6dc6666c2a2c54fb08e9ad6f01a1d415f
Author: Alban Browaeys <prahal at yahoo.com>
Date:   Wed Jan 21 12:01:45 2015 +0100

    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.
    
    Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=84396
    
    Reviewed-by: Bryce Harrington <bryce at osg.samsung.com>

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;
 


More information about the cairo-commit mailing list