[librsvg: 9/10] drawing_ctx: move push/pop_discrete_layer to rust
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg: 9/10] drawing_ctx: move push/pop_discrete_layer to rust
- Date: Mon, 14 May 2018 01:38:45 +0000 (UTC)
commit f84c08f7f53343e2b2f49072632be531f28d6a26
Author: Paolo Borelli <pborelli gnome org>
Date: Sun May 13 16:13:02 2018 +0200
drawing_ctx: move push/pop_discrete_layer to rust
librsvg/rsvg-drawing-ctx.c | 26 ++++----------------------
librsvg/rsvg-drawing-ctx.h | 4 ++--
rsvg_internals/src/drawing_ctx.rs | 26 ++++++++++++++------------
3 files changed, 20 insertions(+), 36 deletions(-)
---
diff --git a/librsvg/rsvg-drawing-ctx.c b/librsvg/rsvg-drawing-ctx.c
index f7356f2c..52e7867b 100644
--- a/librsvg/rsvg-drawing-ctx.c
+++ b/librsvg/rsvg-drawing-ctx.c
@@ -469,8 +469,8 @@ push_bounding_box (RsvgDrawingCtx *ctx)
rsvg_bbox_init (&ctx->ink_bbox, &affine);
}
-static void
-rsvg_drawing_ctx_push_render_stack (RsvgDrawingCtx * ctx)
+void
+rsvg_drawing_ctx_push_render_stack (RsvgDrawingCtx *ctx)
{
RsvgState *state;
char *clip_path;
@@ -567,8 +567,8 @@ pop_bounding_box (RsvgDrawingCtx *ctx)
ctx->ink_bb_stack = g_list_delete_link (ctx->ink_bb_stack, ctx->ink_bb_stack);
}
-static void
-rsvg_drawing_ctx_pop_render_stack (RsvgDrawingCtx * ctx)
+void
+rsvg_drawing_ctx_pop_render_stack (RsvgDrawingCtx *ctx)
{
RsvgState *state;
char *clip_path;
@@ -673,24 +673,6 @@ rsvg_drawing_ctx_pop_render_stack (RsvgDrawingCtx * ctx)
}
}
-void
-rsvg_drawing_ctx_push_discrete_layer (RsvgDrawingCtx *ctx, gboolean clipping)
-{
- if (!clipping) {
- cairo_save (ctx->cr);
- rsvg_drawing_ctx_push_render_stack (ctx);
- }
-}
-
-void
-rsvg_drawing_ctx_pop_discrete_layer (RsvgDrawingCtx *ctx, gboolean clipping)
-{
- if (!clipping) {
- rsvg_drawing_ctx_pop_render_stack (ctx);
- cairo_restore (ctx->cr);
- }
-}
-
/*
* rsvg_drawing_ctx_acquire_node:
* @ctx: The drawing context in use
diff --git a/librsvg/rsvg-drawing-ctx.h b/librsvg/rsvg-drawing-ctx.h
index c9735df6..58285965 100644
--- a/librsvg/rsvg-drawing-ctx.h
+++ b/librsvg/rsvg-drawing-ctx.h
@@ -123,9 +123,9 @@ G_GNUC_INTERNAL
PangoContext *rsvg_drawing_ctx_get_pango_context (RsvgDrawingCtx *ctx);
G_GNUC_INTERNAL
-void rsvg_drawing_ctx_push_discrete_layer (RsvgDrawingCtx *ctx, gboolean clipping);
+void rsvg_drawing_ctx_push_render_stack (RsvgDrawingCtx *ctx);
G_GNUC_INTERNAL
-void rsvg_drawing_ctx_pop_discrete_layer (RsvgDrawingCtx *ctx, gboolean clipping);
+void rsvg_drawing_ctx_pop_render_stack (RsvgDrawingCtx *ctx);
G_GNUC_INTERNAL
cairo_surface_t *rsvg_drawing_ctx_get_surface_of_node (RsvgDrawingCtx *ctx,
diff --git a/rsvg_internals/src/drawing_ctx.rs b/rsvg_internals/src/drawing_ctx.rs
index f266a0dd..c30fd7ef 100644
--- a/rsvg_internals/src/drawing_ctx.rs
+++ b/rsvg_internals/src/drawing_ctx.rs
@@ -83,14 +83,8 @@ extern "C" {
draw_ctx: *const RsvgDrawingCtx,
) -> *mut pango_sys::PangoContext;
- fn rsvg_drawing_ctx_push_discrete_layer(
- draw_ctx: *const RsvgDrawingCtx,
- clipping: glib_sys::gboolean
- );
- fn rsvg_drawing_ctx_pop_discrete_layer(
- draw_ctx: *const RsvgDrawingCtx,
- clipping: glib_sys::gboolean
- );
+ fn rsvg_drawing_ctx_push_render_stack(draw_ctx: *const RsvgDrawingCtx);
+ fn rsvg_drawing_ctx_pop_render_stack(draw_ctx: *const RsvgDrawingCtx);
}
pub fn get_cairo_context(draw_ctx: *const RsvgDrawingCtx) -> cairo::Context {
@@ -260,14 +254,22 @@ pub fn state_reinherit_top(draw_ctx: *const RsvgDrawingCtx, state: &State, domin
}
pub fn push_discrete_layer(draw_ctx: *const RsvgDrawingCtx, clipping: bool) {
- unsafe {
- rsvg_drawing_ctx_push_discrete_layer(draw_ctx, clipping.to_glib());
+ if !clipping {
+ get_cairo_context(draw_ctx).save();
+
+ unsafe {
+ rsvg_drawing_ctx_push_render_stack(draw_ctx);
+ }
}
}
pub fn pop_discrete_layer(draw_ctx: *const RsvgDrawingCtx, clipping: bool) {
- unsafe {
- rsvg_drawing_ctx_pop_discrete_layer(draw_ctx, clipping.to_glib());
+ if !clipping {
+ unsafe {
+ rsvg_drawing_ctx_pop_render_stack(draw_ctx);
+ }
+
+ get_cairo_context(draw_ctx).restore();
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]