[librsvg: 3/10] drawing_ctx: move offset fields out of render
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg: 3/10] drawing_ctx: move offset fields out of render
- Date: Mon, 14 May 2018 01:38:14 +0000 (UTC)
commit 1e6f3823ab06f36814cb79e91d283456e84bf06e
Author: Paolo Borelli <pborelli gnome org>
Date: Sun May 13 12:15:14 2018 +0200
drawing_ctx: move offset fields out of render
librsvg/rsvg-base.c | 13 +++++++------
librsvg/rsvg-cairo-draw.c | 7 ++++++-
librsvg/rsvg-cairo-render.c | 2 --
librsvg/rsvg-cairo-render.h | 2 --
librsvg/rsvg-private.h | 1 +
5 files changed, 14 insertions(+), 11 deletions(-)
---
diff --git a/librsvg/rsvg-base.c b/librsvg/rsvg-base.c
index 57e78325..f9b1356e 100644
--- a/librsvg/rsvg-base.c
+++ b/librsvg/rsvg-base.c
@@ -173,8 +173,9 @@ rsvg_drawing_ctx_new (cairo_t *cr, RsvgHandle *handle)
return NULL;
draw->render = render;
- render->offset_x = bbx0;
- render->offset_y = bby0;
+
+ draw->offset_x = bbx0;
+ draw->offset_y = bby0;
draw->state = NULL;
@@ -203,8 +204,8 @@ rsvg_drawing_ctx_new (cairo_t *cr, RsvgHandle *handle)
/* adjust transform so that the corner of the bounding box above is
* at (0,0) - we compensate for this in _set_rsvg_affine() in
* rsvg-cairo-render.c and a few other places */
- state_affine.x0 -= render->offset_x;
- state_affine.y0 -= render->offset_y;
+ state_affine.x0 -= draw->offset_x;
+ state_affine.y0 -= draw->offset_y;
rsvg_bbox_init (&draw->bbox, &state_affine);
rsvg_bbox_init (&draw->ink_bbox, &state_affine);
@@ -646,11 +647,11 @@ void
rsvg_drawing_ctx_get_offset (RsvgDrawingCtx *draw_ctx, double *x, double *y)
{
if (x != NULL) {
- *x = draw_ctx->render->offset_x;
+ *x = draw_ctx->offset_x;
}
if (y != NULL) {
- *y = draw_ctx->render->offset_y;
+ *y = draw_ctx->offset_y;
}
}
diff --git a/librsvg/rsvg-cairo-draw.c b/librsvg/rsvg-cairo-draw.c
index f4e6a907..5102a453 100644
--- a/librsvg/rsvg-cairo-draw.c
+++ b/librsvg/rsvg-cairo-draw.c
@@ -645,8 +645,9 @@ rsvg_cairo_get_surface_of_node (RsvgDrawingCtx *ctx,
{
cairo_surface_t *surface;
cairo_t *cr;
-
RsvgCairoRender *save_render = ctx->render;
+ double save_x = ctx->offset_x;
+ double save_y = ctx->offset_y;
RsvgCairoRender *render;
surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, width, height);
@@ -659,6 +660,8 @@ rsvg_cairo_get_surface_of_node (RsvgDrawingCtx *ctx,
render = rsvg_cairo_render_new (cr, width, height);
ctx->render = render;
+ ctx->offset_x = 0;
+ ctx->offset_y = 0;
rsvg_drawing_ctx_draw_node_from_stack (ctx, drawable, 0, FALSE);
@@ -666,6 +669,8 @@ rsvg_cairo_get_surface_of_node (RsvgDrawingCtx *ctx,
rsvg_cairo_render_free (ctx->render);
ctx->render = save_render;
+ ctx->offset_x = save_x;
+ ctx->offset_y = save_y;
return surface;
}
diff --git a/librsvg/rsvg-cairo-render.c b/librsvg/rsvg-cairo-render.c
index 16717461..a059261e 100644
--- a/librsvg/rsvg-cairo-render.c
+++ b/librsvg/rsvg-cairo-render.c
@@ -48,8 +48,6 @@ rsvg_cairo_render_new (cairo_t * cr, double width, double height)
cairo_render->width = width;
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;
diff --git a/librsvg/rsvg-cairo-render.h b/librsvg/rsvg-cairo-render.h
index 405b9293..d96f89cc 100644
--- a/librsvg/rsvg-cairo-render.h
+++ b/librsvg/rsvg-cairo-render.h
@@ -39,8 +39,6 @@ struct _RsvgCairoRender {
double height;
cairo_t *initial_cr;
- double offset_x;
- double offset_y;
GList *cr_stack;
GList *surfaces_stack;
diff --git a/librsvg/rsvg-private.h b/librsvg/rsvg-private.h
index 18f8cace..520b8105 100644
--- a/librsvg/rsvg-private.h
+++ b/librsvg/rsvg-private.h
@@ -192,6 +192,7 @@ struct RsvgDrawingCtx {
GSList *drawsub_stack;
GSList *acquired_nodes;
gboolean is_testing;
+ double offset_x, offset_y;
RsvgBbox bbox; /* Bounding box for path extents, without stroke width */
RsvgBbox ink_bbox; /* Bounding box for ink rectangle, with everything */
GList *bb_stack;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]