summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs200
1 files changed, 90 insertions, 110 deletions
diff --git a/src/main.rs b/src/main.rs
index 27f3bc6..6bbf8b5 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -2,120 +2,100 @@ extern crate libc;
extern crate glib;
extern crate gobject_sys as gobject_ffi;
extern crate glib_sys as glib_ffi;
+extern crate phed;
+#[allow(unused_imports)]
+use phed::gegl_ffi::*;
+#[allow(unused_imports)]
use std::ffi::CString;
+#[allow(unused_imports)]
use std::ptr;
+#[allow(unused_imports)]
use glib::translate::*;
+#[allow(unused_imports)]
use glib::Value;
+#[allow(unused_imports)]
use gobject_ffi::G_TYPE_POINTER;
-#[derive(Debug)]
-pub struct GeglBuffer(*mut libc::c_void);
+fn main () {}
-#[repr(C)]
-#[derive(Debug)]
-struct GeglRectangle {
- x: i32,
- y: i32,
- width: i32,
- height: i32,
-}
-
-impl GeglBuffer {
- pub fn new() -> GeglBuffer {
- GeglBuffer(ptr::null_mut())
- // let mut bounds = GeglRectangle{x: 0, y: 0, width: 32, height: 32};
- // GeglBuffer(unsafe {
- // gegl_buffer_new(&mut bounds as *mut _ as *mut libc::c_void,
- // ptr::null_mut()) })
- }
-
- pub fn get_value(&self) -> Value {
- unsafe {
- let mut ret = Value::uninitialized();
- gobject_ffi::g_value_init(ret.to_glib_none_mut().0, G_TYPE_POINTER);
- gobject_ffi::g_value_set_pointer(ret.to_glib_none_mut().0,
- self.0 as *mut libc::c_void);
- ret
- }
- }
-
- pub fn get_value_ptr(&mut self) -> Value {
- unsafe {
- let mut ret = Value::uninitialized();
- gobject_ffi::g_value_init(ret.to_glib_none_mut().0, G_TYPE_POINTER);
- gobject_ffi::g_value_set_pointer(ret.to_glib_none_mut().0,
- &mut self.0 as *mut _ as *mut libc::c_void);
- ret
- }
- }
-}
-
-impl Drop for GeglBuffer {
- fn drop(&mut self) {
- println!("Dropping geglbuffer: {:?}", self.0);
- unsafe { g_object_unref(self.0); }
- println!("Dropped");
- }
-}
-
-#[link(name="gegl-0.3")]
-extern {
- fn gegl_init(argc: *mut i32, argv: *mut *mut libc::c_char);
- fn gegl_node_new() -> *mut libc::c_void;
- fn gegl_node_create_child(parent: *mut libc::c_void,
- operation: *const libc::c_char)
- -> *mut libc::c_void;
- fn gegl_node_set_property(node: *mut libc::c_void,
- property_name: *const libc::c_char,
- value: *const libc::c_void);
- fn gegl_node_link(source: *mut libc::c_void,
- sink: *mut libc::c_void);
- fn gegl_node_process(node: *mut libc::c_void);
- fn g_object_unref(node: *mut libc::c_void);
- fn gegl_exit();
- fn gegl_buffer_new(extent: *mut libc::c_void, format: *mut libc::c_void)
- -> *mut libc::c_void;
- fn gegl_buffer_get_extent(buffer: *const libc::c_void) ->
- *const GeglRectangle;
-}
-
-fn main() {
- let mut graph : *mut libc::c_void;
- unsafe {
- let mut argc : i32 = 0;
- gegl_init(&mut argc as *mut i32, ptr::null_mut());
- graph = gegl_node_new();
- let src = gegl_node_create_child(
- graph, CString::new("gegl:load").unwrap().as_ptr());
- gegl_node_set_property(
- src,
- CString::new("path").unwrap().as_ptr(),
- Value::from("/tmp/test.jpg").to_glib_none().0
- as *const libc::c_void);
- let sink = gegl_node_create_child(graph,
- CString::new("gegl:buffer-sink")
- .unwrap().as_ptr());
- let mut buffer = GeglBuffer::new();
- println!("before set property: {:?}", buffer);
- gegl_node_set_property(
- sink,
- CString::new("buffer").unwrap().as_ptr(),
- buffer.get_value_ptr().to_glib_none().0 as *mut libc::c_void);
-
- println!("before processing: {:?}", buffer);
- gegl_node_link(src, sink);
- gegl_node_process(sink);
-
- println!("before extent: {:?}", buffer);
- let extent = gegl_buffer_get_extent(buffer.0
- as *mut libc::c_void);
- println!("after extent: {:?}", buffer);
- println!("height: {:?}", (*extent).height);
-
- println!("got here");
- }
- unsafe {
- g_object_unref(graph);
- gegl_exit();
- }
-}
+// #[derive(Debug)]
+// pub struct GeglBuffer(*mut libc::c_void);
+//
+// impl GeglBuffer {
+// pub fn new() -> GeglBuffer {
+// GeglBuffer(ptr::null_mut())
+// // let mut bounds = GeglRectangle{x: 0, y: 0, width: 32, height: 32};
+// // GeglBuffer(unsafe {
+// // gegl_buffer_new(&mut bounds as *mut _ as *mut libc::c_void,
+// // ptr::null_mut()) })
+// }
+//
+// pub fn get_value(&self) -> Value {
+// unsafe {
+// let mut ret = Value::uninitialized();
+// gobject_ffi::g_value_init(ret.to_glib_none_mut().0, G_TYPE_POINTER);
+// gobject_ffi::g_value_set_pointer(ret.to_glib_none_mut().0,
+// self.0 as *mut libc::c_void);
+// ret
+// }
+// }
+//
+// pub fn get_value_ptr(&mut self) -> Value {
+// unsafe {
+// let mut ret = Value::uninitialized();
+// gobject_ffi::g_value_init(ret.to_glib_none_mut().0, G_TYPE_POINTER);
+// gobject_ffi::g_value_set_pointer(ret.to_glib_none_mut().0,
+// &mut self.0 as *mut _ as *mut libc::c_void);
+// ret
+// }
+// }
+// }
+//
+// impl Drop for GeglBuffer {
+// fn drop(&mut self) {
+// println!("Dropping geglbuffer: {:?}", self.0);
+// unsafe { g_object_unref(self.0); }
+// println!("Dropped");
+// }
+// }
+//
+// fn main() {
+// let mut graph : *mut libc::c_void;
+// unsafe {
+// let mut argc : i32 = 0;
+// gegl_init(&mut argc as *mut i32, ptr::null_mut());
+// graph = gegl_node_new();
+// let src = gegl_node_create_child(
+// graph, CString::new("gegl:load").unwrap().as_ptr());
+// gegl_node_set_property(
+// src,
+// CString::new("path").unwrap().as_ptr(),
+// Value::from("/tmp/test.jpg").to_glib_none().0
+// as *const libc::c_void);
+// let sink = gegl_node_create_child(graph,
+// CString::new("gegl:buffer-sink")
+// .unwrap().as_ptr());
+// let mut buffer = GeglBuffer::new();
+// println!("before set property: {:?}", buffer);
+// gegl_node_set_property(
+// sink,
+// CString::new("buffer").unwrap().as_ptr(),
+// buffer.get_value_ptr().to_glib_none().0 as *mut libc::c_void);
+//
+// println!("before processing: {:?}", buffer);
+// gegl_node_link(src, sink);
+// gegl_node_process(sink);
+//
+// println!("before extent: {:?}", buffer);
+// let extent = gegl_buffer_get_extent(buffer.0
+// as *mut libc::c_void);
+// println!("after extent: {:?}", buffer);
+// println!("height: {:?}", (*extent).height);
+//
+// println!("got here");
+// }
+// unsafe {
+// g_object_unref(graph);
+// gegl_exit();
+// }
+// }