[PATCH 4/6] matrix: Make the other *_rel_* routines non-relative internally
Bryce Harrington <[email protected]>
| Newsgroups | gmane.comp.lib.cairo |
|---|---|
| Message-ID | <[email protected]> |
From: Bryce Harrington <[email protected]> Signed-off-by: Bryce Harrington <[email protected]> --- src/cairo-default-context.c | 46 ++++++++++++++++++++++++++----------------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/src/cairo-default-context.c b/src/cairo-default-context.c index a751519..e4ceba4 100644 --- a/src/cairo-default-context.c +++ b/src/cairo-default-context.c @@ -792,8 +792,12 @@ _cairo_default_context_rel_move_to (void *abstract_cr, double dx, double dy) { cairo_default_context_t *cr = abstract_cr; cairo_fixed_t dx_fixed, dy_fixed; + double x, y; - _cairo_gstate_user_to_backend_distance (cr->gstate, &dx, &dy); + cairo_get_current_point ((cairo_t*)cr, &x, &y); + x += dx; + y += dy; + _cairo_gstate_user_to_backend (cr->gstate, &x, &y); dx_fixed = _cairo_fixed_from_double (dx); dy_fixed = _cairo_fixed_from_double (dy); @@ -808,7 +812,7 @@ _cairo_default_context_rel_line_to (void *abstract_cr, double dx, double dy) cairo_fixed_t x_fixed, y_fixed; double x, y; - cairo_get_current_point (cr, &x, &y); + cairo_get_current_point ((cairo_t*)cr, &x, &y); x += dx; y += dy; _cairo_gstate_user_to_backend (cr->gstate, &x, &y); @@ -827,27 +831,33 @@ _cairo_default_context_rel_curve_to (void *abstract_cr, double dx3, double dy3) { cairo_default_context_t *cr = abstract_cr; - cairo_fixed_t dx1_fixed, dy1_fixed; - cairo_fixed_t dx2_fixed, dy2_fixed; - cairo_fixed_t dx3_fixed, dy3_fixed; + cairo_fixed_t x1_fixed, y1_fixed; + cairo_fixed_t x2_fixed, y2_fixed; + cairo_fixed_t x3_fixed, y3_fixed; + double x, y; + + cairo_get_current_point ((cairo_t*)cr, &x, &y); + dx1 += x; dy1 += x; + dx2 += x; dy2 += x; + dx3 += x; dy3 += x; - _cairo_gstate_user_to_backend_distance (cr->gstate, &dx1, &dy1); - _cairo_gstate_user_to_backend_distance (cr->gstate, &dx2, &dy2); - _cairo_gstate_user_to_backend_distance (cr->gstate, &dx3, &dy3); + _cairo_gstate_user_to_backend (cr->gstate, &dx1, &dy1); + _cairo_gstate_user_to_backend (cr->gstate, &dx2, &dy2); + _cairo_gstate_user_to_backend (cr->gstate, &dx3, &dy3); - dx1_fixed = _cairo_fixed_from_double (dx1); - dy1_fixed = _cairo_fixed_from_double (dy1); + x1_fixed = _cairo_fixed_from_double (dx1); + y1_fixed = _cairo_fixed_from_double (dy1); - dx2_fixed = _cairo_fixed_from_double (dx2); - dy2_fixed = _cairo_fixed_from_double (dy2); + x2_fixed = _cairo_fixed_from_double (dx2); + y2_fixed = _cairo_fixed_from_double (dy2); - dx3_fixed = _cairo_fixed_from_double (dx3); - dy3_fixed = _cairo_fixed_from_double (dy3); + x3_fixed = _cairo_fixed_from_double (dx3); + y3_fixed = _cairo_fixed_from_double (dy3); - return _cairo_path_fixed_rel_curve_to (cr->path, - dx1_fixed, dy1_fixed, - dx2_fixed, dy2_fixed, - dx3_fixed, dy3_fixed); + return _cairo_path_fixed_curve_to (cr->path, + x1_fixed, y1_fixed, + x2_fixed, y2_fixed, + x3_fixed, y3_fixed); } static cairo_status_t -- 1.7.9.5 -- cairo mailing list [email protected] http://lists.cairographics.org/mailman/listinfo/cairo