summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKjetil Orbekk <kjetil.orbekk@gmail.com>2016-08-05 00:14:08 -0400
committerKjetil Orbekk <kjetil.orbekk@gmail.com>2016-08-05 00:14:08 -0400
commit81a59e29ff0290f9f148243345279c6642751045 (patch)
treef0a73845aa48ddeff2fae4dcde342ab671bd6129
parent50c0bd4ba7f3f76384da6a299e73d90360dea408 (diff)
Create GEGL node.
-rw-r--r--Cargo.toml1
-rw-r--r--src/main.rs26
2 files changed, 26 insertions, 1 deletions
diff --git a/Cargo.toml b/Cargo.toml
index 2d66556..87e126f 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -5,3 +5,4 @@ authors = ["Kjetil Orbekk <kjetil.orbekk@gmail.com>"]
[dependencies]
libc = "*"
+glib = "*"
diff --git a/src/main.rs b/src/main.rs
index d119473..0802061 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,14 +1,38 @@
extern crate libc;
+extern crate glib;
+use std::ffi::CString;
use std::ptr;
+use glib::prelude::*;
+use glib::translate::*;
+use glib::{TypedValue, Value};
#[link(name="gegl-0.3")]
extern {
-fn gegl_init(argc: *mut i32, argv: *mut *mut libc::c_char);
+ 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 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);
+ println!("Hello");
}
}