[librsvg] Rename and export rsvg_drawing_ctx_add_clipping_rect() to Rust
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg] Rename and export rsvg_drawing_ctx_add_clipping_rect() to Rust
- Date: Mon, 27 Feb 2017 22:52:06 +0000 (UTC)
commit 63b7e671f81edb532790d2c0642a6b0333a07172
Author: Federico Mena Quintero <federico gnome org>
Date: Mon Feb 27 12:46:29 2017 -0600
Rename and export rsvg_drawing_ctx_add_clipping_rect() to Rust
rsvg-base.c | 2 +-
rsvg-image.c | 2 +-
rsvg-marker.c | 10 +++++-----
rsvg-private.h | 2 +-
rsvg-structure.c | 6 +++---
rust/src/drawing_ctx.rs | 46 ++++++++++++++++++++++++++++++++++++++++++++++
6 files changed, 57 insertions(+), 11 deletions(-)
---
diff --git a/rsvg-base.c b/rsvg-base.c
index 8d8d9d3..fd24a10 100644
--- a/rsvg-base.c
+++ b/rsvg-base.c
@@ -2375,7 +2375,7 @@ rsvg_get_end_marker (RsvgDrawingCtx *ctx)
}
void
-rsvg_add_clipping_rect (RsvgDrawingCtx * ctx, double x, double y, double w, double h)
+rsvg_drawing_ctx_add_clipping_rect (RsvgDrawingCtx * ctx, double x, double y, double w, double h)
{
ctx->render->add_clipping_rect (ctx, x, y, w, h);
}
diff --git a/rsvg-image.c b/rsvg-image.c
index 6e65b23..c8a4297 100644
--- a/rsvg-image.c
+++ b/rsvg-image.c
@@ -147,7 +147,7 @@ rsvg_node_image_draw (RsvgNode *node, gpointer impl, RsvgDrawingCtx *ctx, int do
rsvg_push_discrete_layer (ctx);
if (!rsvg_current_state (ctx)->overflow && (aspect_ratio & RSVG_ASPECT_RATIO_SLICE)) {
- rsvg_add_clipping_rect (ctx, x, y, w, h);
+ rsvg_drawing_ctx_add_clipping_rect (ctx, x, y, w, h);
}
rsvg_aspect_ratio_compute (aspect_ratio,
diff --git a/rsvg-marker.c b/rsvg-marker.c
index 9747d09..0fd801b 100644
--- a/rsvg-marker.c
+++ b/rsvg-marker.c
@@ -194,12 +194,12 @@ rsvg_marker_render (const char * marker_name, gdouble xpos, gdouble ypos, gdoubl
if (!state->overflow) {
if (self->vbox.active)
- rsvg_add_clipping_rect (ctx, self->vbox.rect.x, self->vbox.rect.y,
- self->vbox.rect.width, self->vbox.rect.height);
+ rsvg_drawing_ctx_add_clipping_rect (ctx, self->vbox.rect.x, self->vbox.rect.y,
+ self->vbox.rect.width, self->vbox.rect.height);
else
- rsvg_add_clipping_rect (ctx, 0, 0,
- rsvg_length_normalize (&self->width, ctx),
- rsvg_length_normalize (&self->height, ctx));
+ rsvg_drawing_ctx_add_clipping_rect (ctx, 0, 0,
+ rsvg_length_normalize (&self->width, ctx),
+ rsvg_length_normalize (&self->height, ctx));
}
rsvg_node_foreach_child (node, draw_child, ctx);
diff --git a/rsvg-private.h b/rsvg-private.h
index 955fa2f..a6680c7 100644
--- a/rsvg-private.h
+++ b/rsvg-private.h
@@ -467,7 +467,7 @@ const char *rsvg_get_end_marker (RsvgDrawingCtx *ctx);
G_GNUC_INTERNAL
void rsvg_render_free (RsvgRender * render);
G_GNUC_INTERNAL
-void rsvg_add_clipping_rect (RsvgDrawingCtx * ctx, double x, double y, double w, double h);
+void rsvg_drawing_ctx_add_clipping_rect (RsvgDrawingCtx * ctx, double x, double y, double w, double h);
G_GNUC_INTERNAL
cairo_surface_t *rsvg_cairo_surface_from_pixbuf (const GdkPixbuf *pixbuf);
G_GNUC_INTERNAL
diff --git a/rsvg-structure.c b/rsvg-structure.c
index 6dfadcf..b09c746 100644
--- a/rsvg-structure.c
+++ b/rsvg-structure.c
@@ -196,7 +196,7 @@ rsvg_node_svg_draw (RsvgNode *node, gpointer impl, RsvgDrawingCtx *ctx, int domi
if (!state->overflow && parent) {
state->affine = affine_old;
- rsvg_add_clipping_rect (ctx, nx, ny, nw, nh);
+ rsvg_drawing_ctx_add_clipping_rect (ctx, nx, ny, nw, nh);
state->affine = affine_new;
}
@@ -373,8 +373,8 @@ rsvg_node_use_draw (RsvgNode *node, gpointer impl, RsvgDrawingCtx *ctx, int domi
rsvg_drawing_ctx_push_view_box (ctx, symbol->vbox.rect.width, symbol->vbox.rect.height);
rsvg_push_discrete_layer (ctx);
if (!state->overflow || (!state->has_overflow && rsvg_node_get_state (child)->overflow))
- rsvg_add_clipping_rect (ctx, symbol->vbox.rect.x, symbol->vbox.rect.y,
- symbol->vbox.rect.width, symbol->vbox.rect.height);
+ rsvg_drawing_ctx_add_clipping_rect (ctx, symbol->vbox.rect.x, symbol->vbox.rect.y,
+ symbol->vbox.rect.width, symbol->vbox.rect.height);
} else {
cairo_matrix_init_translate (&affine, x, y);
cairo_matrix_multiply (&state->affine, &affine, &state->affine);
diff --git a/rust/src/drawing_ctx.rs b/rust/src/drawing_ctx.rs
index f667de6..8208cb1 100644
--- a/rust/src/drawing_ctx.rs
+++ b/rust/src/drawing_ctx.rs
@@ -39,7 +39,18 @@ extern "C" {
fn rsvg_drawing_ctx_set_current_state_affine (draw_ctx: *const RsvgDrawingCtx,
affine: *const cairo::Matrix);
+ fn rsvg_drawing_ctx_add_clipping_rect (draw_ctx: *const RsvgDrawingCtx,
+ x: f64,
+ y: f64,
+ w: f64,
+ h: f64);
+
+ fn rsvg_current_state (draw_ctx: *const RsvgDrawingCtx) -> *mut RsvgState;
fn rsvg_state_new () -> *mut RsvgState;
+ fn rsvg_state_reinit (state: *mut RsvgState);
+ fn rsvg_state_reconstruct (state: *mut RsvgState, node: *const RsvgNode);
+ fn rsvg_state_is_overflow (state: *const RsvgState) -> bool;
+
fn rsvg_state_push (draw_ctx: *const RsvgDrawingCtx);
fn rsvg_state_pop (draw_ctx: *const RsvgDrawingCtx);
@@ -47,6 +58,9 @@ extern "C" {
state: *mut RsvgState,
dominate: libc::c_int);
+ fn rsvg_push_discrete_layer (draw_ctx: *const RsvgDrawingCtx);
+ fn rsvg_pop_discrete_layer (draw_ctx: *const RsvgDrawingCtx);
+
fn rsvg_render_path_builder (draw_ctx: *const RsvgDrawingCtx,
builder: *const RsvgPathBuilder);
@@ -106,6 +120,14 @@ pub fn state_reinherit_top (draw_ctx: *const RsvgDrawingCtx,
unsafe { rsvg_state_reinherit_top (draw_ctx, state, dominate); }
}
+pub fn push_discrete_layer (draw_ctx: *const RsvgDrawingCtx) {
+ unsafe { rsvg_push_discrete_layer (draw_ctx); }
+}
+
+pub fn pop_discrete_layer (draw_ctx: *const RsvgDrawingCtx) {
+ unsafe { rsvg_pop_discrete_layer (draw_ctx); }
+}
+
pub fn render_path_builder (draw_ctx: *const RsvgDrawingCtx,
builder: &RsvgPathBuilder) {
unsafe { rsvg_render_path_builder (draw_ctx, builder); }
@@ -141,10 +163,34 @@ pub fn set_current_state_affine (draw_ctx: *const RsvgDrawingCtx, affine: cairo:
}
}
+pub fn add_clipping_rect (draw_ctx: *const RsvgDrawingCtx,
+ x: f64,
+ y: f64,
+ w: f64,
+ h: f64) {
+ unsafe { rsvg_drawing_ctx_add_clipping_rect (draw_ctx, x, y, w, h); }
+}
+
+pub fn get_current_state (draw_ctx: *const RsvgDrawingCtx) -> *mut RsvgState {
+ unsafe { rsvg_current_state (draw_ctx) }
+}
+
pub fn state_new () -> *mut RsvgState {
unsafe { rsvg_state_new () }
}
+pub fn state_reinit (state: *mut RsvgState) {
+ unsafe { rsvg_state_reinit (state); }
+}
+
+pub fn state_reconstruct (state: *mut RsvgState, node: *const RsvgNode) {
+ unsafe { rsvg_state_reconstruct (state, node); }
+}
+
+pub fn state_is_overflow (state: *const RsvgState) -> bool {
+ unsafe { rsvg_state_is_overflow (state) }
+}
+
pub fn state_push (draw_ctx: *const RsvgDrawingCtx) {
unsafe {
rsvg_state_push (draw_ctx);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]