summaryrefslogtreecommitdiff
path: root/rsvg-rs/src/handle.rs
diff options
context:
space:
mode:
Diffstat (limited to 'rsvg-rs/src/handle.rs')
-rw-r--r--rsvg-rs/src/handle.rs16
1 files changed, 16 insertions, 0 deletions
diff --git a/rsvg-rs/src/handle.rs b/rsvg-rs/src/handle.rs
new file mode 100644
index 00000000..0e02e472
--- /dev/null
+++ b/rsvg-rs/src/handle.rs
@@ -0,0 +1,16 @@
+use ffi;
+use std::ptr;
+
+use glib::Error;
+use glib::translate::*;
+use auto::Handle;
+
+impl Handle {
+ pub fn new_from_str(data: &str) -> Result<Handle, Error> {
+ unsafe {
+ let mut error = ptr::null_mut();
+ let handle = ffi::rsvg_handle_new_from_data(data.as_ptr() as *mut _, data.len() as _, &mut error);
+ if error.is_null() { Ok(from_glib_full(handle)) } else { Err(from_glib_full(error)) }
+ }
+ }
+} \ No newline at end of file