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
use std::ffi::c_void;
use crate::*;
#[no_mangle]
pub unsafe extern "C" fn bfr_create_surface(
loader: extern "C" fn(*const libc::c_char) -> *const c_void,
) -> *mut Renderer {
let renderer = Box::new(Renderer::new(|s| loader(s.as_ptr() as *const libc::c_char)));
Box::into_raw(renderer)
}
#[no_mangle]
pub unsafe extern "C" fn bfr_resize(renderer: *mut Renderer, width: i32, height: i32) {
(*renderer).resize(width, height);
}
#[no_mangle]
pub unsafe extern "C" fn bfr_destroy(renderer: *mut Renderer) {
(*renderer).clean();
libc::free(renderer as *mut libc::c_void);
}
#[no_mangle]
pub unsafe extern "C" fn bfr_flush(renderer: *mut Renderer) {
(*renderer).flush();
}
#[no_mangle]
pub unsafe extern "C" fn bfr_circle(renderer: *mut Renderer, x: f32, y: f32, r: f32, color: Color) {
(*renderer).circle(x, y, r, color);
}
#[no_mangle]
pub unsafe extern "C" fn bfr_color8(r: u8, g: u8, b: u8, a: u8) -> Color {
Color::from_8(r, g, b, a)
}
#[no_mangle]
pub unsafe extern "C" fn bfr_colorf(r: f32, g: f32, b: f32, a: f32) -> Color {
Color::from_f(r, g, b, a)
}
#[no_mangle]
pub unsafe extern "C" fn bfr_set_clear_color(renderer: *mut Renderer, color: Color) {
(*renderer).set_clear_color(color);
}
#[no_mangle]
pub unsafe extern "C" fn bfr_rect(
renderer: *mut Renderer,
x: f32,
y: f32,
width: f32,
height: f32,
angle: f32,
color: Color,
) {
(*renderer).rect(x, y, width, height, angle, color);
}
#[no_mangle]
pub unsafe extern "C" fn bfr_translate(renderer: *mut Renderer, x: f32, y: f32) {
(*renderer).translate(x, y);
}
#[no_mangle]
pub unsafe extern "C" fn bfr_scale(renderer: *mut Renderer, x: f32, y: f32) {
(*renderer).scale(x, y);
}
#[no_mangle]
pub unsafe extern "C" fn bfr_rotate(renderer: *mut Renderer, x: f32) {
(*renderer).rotate(x);
}
#[no_mangle]
pub unsafe extern "C" fn bfr_save(renderer: *mut Renderer) {
(*renderer).save();
}
#[no_mangle]
pub unsafe extern "C" fn bfr_restore(renderer: *mut Renderer) {
(*renderer).restore();
}
#[no_mangle]
pub unsafe extern "C" fn bfr_reset(renderer: *mut Renderer) {
(*renderer).reset();
}
#[no_mangle]
pub unsafe extern "C" fn bfr_polygon(renderer: *mut Renderer, x: f32, y: f32, r: f32, sides: u8, color: Color) {
(*renderer).polygon(x, y, r, sides, color);
}