mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-05-05 15:48:00 +02:00
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@osg.samsung.com>
This commit is contained in:
parent
b4a922f62d
commit
e7acf4b6dc
1 changed files with 5 additions and 5 deletions
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue