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; fn main () {} // #[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(); // } // }