extern crate libc; extern crate glib; use std::ffi::CString; use std::ptr; use glib::translate::*; use glib::Value; #[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 main() { unsafe { let mut argc : i32 = 0; gegl_init(&mut argc as *mut i32, ptr::null_mut()); let graph = gegl_node_new(); let src = gegl_node_create_child( graph, CString::new("gegl:load").unwrap().as_ptr()); println!("{:?}", src); println!("Hello"); gegl_node_set_property( src, CString::new("path").unwrap().as_ptr(), // ptr::null_mut() Value::from("/tmp/test.jpg").to_glib_none().0 as *const libc::c_void); let sink = gegl_node_create_child( graph, CString::new("gegl:save").unwrap().as_ptr()); gegl_node_set_property( sink, CString::new("path").unwrap().as_ptr(), Value::from("/tmp/test-output.jpg").to_glib_none().0 as *const libc::c_void); gegl_node_link(src, sink); println!("Hello"); gegl_node_process(sink); g_object_unref(graph); gegl_exit(); } }