[librsvg/rustification] Wrap some more RsvgDrawingCtx functions in Rust
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg/rustification] Wrap some more RsvgDrawingCtx functions in Rust
- Date: Thu, 1 Dec 2016 03:19:37 +0000 (UTC)
commit efb58406c1cfb38218583c500c0c5c063308e683
Author: Federico Mena Quintero <federico gnome org>
Date: Wed Nov 30 18:08:50 2016 -0600
Wrap some more RsvgDrawingCtx functions in Rust
rsvg-cairo-draw.h | 1 +
rust/src/bbox.rs | 6 +++---
rust/src/drawing_ctx.rs | 35 +++++++++++++++++++++++++++++++++++
3 files changed, 39 insertions(+), 3 deletions(-)
---
diff --git a/rsvg-cairo-draw.h b/rsvg-cairo-draw.h
index 286f0c5..aff07c6 100644
--- a/rsvg-cairo-draw.h
+++ b/rsvg-cairo-draw.h
@@ -37,6 +37,7 @@ PangoContext *rsvg_cairo_create_pango_context (RsvgDrawingCtx *ctx);
G_GNUC_INTERNAL
void rsvg_cairo_render_pango_layout (RsvgDrawingCtx *ctx, PangoLayout *layout,
double x, double y);
+
G_GNUC_INTERNAL
void rsvg_cairo_render_path_builder (RsvgDrawingCtx *ctx,
RsvgPathBuilder *builder);
diff --git a/rust/src/bbox.rs b/rust/src/bbox.rs
index 9e34596..a2ed3da 100644
--- a/rust/src/bbox.rs
+++ b/rust/src/bbox.rs
@@ -5,9 +5,9 @@ use self::cairo::MatrixTrait;
/* Keep this in sync with ../../rsvg-private.h:RsvgBbox */
#[repr(C)]
pub struct RsvgBbox {
- rect: cairo::Rectangle,
- affine: cairo::Matrix,
- virgin: bool
+ pub rect: cairo::Rectangle,
+ pub affine: cairo::Matrix,
+ pub virgin: bool
}
#[no_mangle]
diff --git a/rust/src/drawing_ctx.rs b/rust/src/drawing_ctx.rs
index 01da0b0..0eba6fc 100644
--- a/rust/src/drawing_ctx.rs
+++ b/rust/src/drawing_ctx.rs
@@ -1,5 +1,10 @@
+extern crate glib;
+extern crate cairo;
+extern crate cairo_sys;
extern crate libc;
+use self::glib::translate::*;
+
use state::RsvgState;
use path_builder::RsvgPathBuilder;
@@ -16,12 +21,20 @@ extern "C" {
out_x: *mut f64,
out_y: *mut f64);
+ fn rsvg_drawing_ctx_push_view_box (draw_ctx: *const RsvgDrawingCtx,
+ width: f64,
+ height: f64);
+
+ fn rsvg_drawing_ctx_pop_view_box (draw_ctx: *const RsvgDrawingCtx);
+
fn rsvg_state_reinherit_top (draw_ctx: *const RsvgDrawingCtx,
state: *mut RsvgState,
dominate: libc::c_int);
fn rsvg_render_path_builder (draw_ctx: *const RsvgDrawingCtx,
builder: *const RsvgPathBuilder);
+
+ fn rsvg_cairo_get_cairo_context (draw_ctx: *const RsvgDrawingCtx) -> *mut cairo_sys::cairo_t;
}
pub fn get_dpi (draw_ctx: *const RsvgDrawingCtx) -> (f64, f64) {
@@ -47,6 +60,17 @@ pub fn get_view_box_size (draw_ctx: *const RsvgDrawingCtx) -> (f64, f64) {
(w, h)
}
+pub fn push_view_box (draw_ctx: *const RsvgDrawingCtx,
+ width: f64,
+ height: f64)
+{
+ unsafe { rsvg_drawing_ctx_push_view_box (draw_ctx, width, height); }
+}
+
+pub fn pop_view_box (draw_ctx: *const RsvgDrawingCtx) {
+ unsafe { rsvg_drawing_ctx_pop_view_box (draw_ctx); }
+}
+
pub fn state_reinherit_top (draw_ctx: *const RsvgDrawingCtx,
state: *mut RsvgState,
dominate: i32) {
@@ -58,3 +82,14 @@ pub fn render_path_builder (draw_ctx: *const RsvgDrawingCtx,
{
unsafe { rsvg_render_path_builder (draw_ctx, builder); }
}
+
+pub fn get_cairo_context (draw_ctx: *const RsvgDrawingCtx) -> cairo::Context
+{
+ unsafe {
+ let raw_cr = rsvg_cairo_get_cairo_context (draw_ctx);
+
+ let cr = cairo::Context::from_glib_none (raw_cr);
+
+ cr
+ }
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]