1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
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();
// }
// }
|