diff options
author | Bertram Felgenhauer <bertram.felgenhauer@googlemail.com> | 2008-01-19 16:47:05 +0000 |
---|---|---|
committer | Dom Lachowicz <doml@src.gnome.org> | 2008-01-19 16:47:05 +0000 |
commit | bf196bdcc3344b4d86a9ef17d37e4b5e66643c34 (patch) | |
tree | cae725b8cdfa17ede91ce02a1d7a6ce6014fcdff /rsvg-cairo-render.c | |
parent | d9378cff47a8408b6bad19f6f46acf12b1bb34d0 (diff) | |
download | librsvg-bf196bdcc3344b4d86a9ef17d37e4b5e66643c34.tar.gz |
Bug 500787 - translation gets ignored when rendering an svg with cairo in
2008-01-19 Bertram Felgenhauer <bertram.felgenhauer@googlemail.com>
* Bug 500787 - translation gets ignored when rendering an svg
with cairo in the context of a cairo_push_group()
svn path=/trunk/; revision=1139
Diffstat (limited to 'rsvg-cairo-render.c')
-rw-r--r-- | rsvg-cairo-render.c | 19 |
1 files changed, 3 insertions, 16 deletions
diff --git a/rsvg-cairo-render.c b/rsvg-cairo-render.c index b53c6bae..caa6cf43 100644 --- a/rsvg-cairo-render.c +++ b/rsvg-cairo-render.c @@ -65,6 +65,7 @@ rsvg_cairo_render_new (cairo_t * cr, double width, double height) cairo_render->height = height; cairo_render->offset_x = 0; cairo_render->offset_y = 0; + cairo_render->initial_cr = cr; cairo_render->cr = cr; cairo_render->cr_stack = NULL; cairo_render->bb_stack = NULL; @@ -176,8 +177,8 @@ rsvg_cairo_new_drawing_ctx (cairo_t * cr, RsvgHandle * handle) _rsvg_affine_multiply (state->affine, affine, state->affine); /* adjust transform so that the corner of the bounding box above is - * at (0,0) - we compensate for this in rsvg_handle_render_cairo_sub() - * below */ + * at (0,0) - we compensate for this in _set_rsvg_affine() in + * rsvg-cairo-render.c and a few other places */ state->affine[4] -= render->offset_x; state->affine[5] -= render->offset_y; @@ -203,9 +204,6 @@ rsvg_handle_render_cairo_sub (RsvgHandle * handle, cairo_t * cr, const char *id) { RsvgDrawingCtx *draw; RsvgNode *drawsub = NULL; - RsvgCairoRender *render; - cairo_surface_t *surface = cairo_get_target (cr); - double save_dx, save_dy; g_return_if_fail (handle != NULL); @@ -226,20 +224,9 @@ rsvg_handle_render_cairo_sub (RsvgHandle * handle, cairo_t * cr, const char *id) rsvg_state_push (draw); cairo_save (cr); - cairo_identity_matrix (cr); - - /* adjust the underlying surface's device offset such that the - * bounding box from rsvg_cairo_new_drawing_ctx is placed correctly */ - cairo_surface_get_device_offset (surface, &save_dx, &save_dy); - render = (RsvgCairoRender *) draw->render; - cairo_surface_set_device_offset (surface, - save_dx + render->offset_x, - save_dy + render->offset_y); rsvg_node_draw ((RsvgNode *) handle->priv->treebase, draw, 0); - cairo_surface_set_device_offset (surface, save_dx, save_dy); - cairo_restore (cr); rsvg_state_pop (draw); rsvg_drawing_ctx_free (draw); |