1#![allow(non_upper_case_globals)]
2#![allow(non_camel_case_types)]
3#![allow(non_snake_case)]
4
5use libc::{c_char, c_int, c_long, c_uint, c_void};
6
7pub const BABL_MAJOR_VERSION: u32 = 0;
8pub const BABL_MINOR_VERSION: u32 = 1;
9pub const BABL_MICRO_VERSION: u32 = 73;
10pub const BABL_ALPHA_FLOOR: f64 = 0.0000152587890625;
11pub const BABL_ALPHA_FLOOR_F: f64 = 0.0000152587890625;
12
13pub const BablSpaceFlags_BABL_SPACE_FLAG_NONE: BablSpaceFlags = 0;
14pub const BablSpaceFlags_BABL_SPACE_FLAG_EQUALIZE: BablSpaceFlags = 1;
15
16pub type BablSpaceFlags = c_uint;
17
18pub const BablModelFlag_BABL_MODEL_FLAG_ALPHA: BablModelFlag = 2;
19pub const BablModelFlag_BABL_MODEL_FLAG_ASSOCIATED: BablModelFlag = 4;
20pub const BablModelFlag_BABL_MODEL_FLAG_INVERTED: BablModelFlag = 8;
21pub const BablModelFlag_BABL_MODEL_FLAG_LINEAR: BablModelFlag = 1024;
22pub const BablModelFlag_BABL_MODEL_FLAG_NONLINEAR: BablModelFlag = 2048;
23pub const BablModelFlag_BABL_MODEL_FLAG_PERCEPTUAL: BablModelFlag = 4096;
24pub const BablModelFlag_BABL_MODEL_FLAG_GRAY: BablModelFlag = 1048576;
25pub const BablModelFlag_BABL_MODEL_FLAG_RGB: BablModelFlag = 2097152;
26pub const BablModelFlag_BABL_MODEL_FLAG_CIE: BablModelFlag = 8388608;
27pub const BablModelFlag_BABL_MODEL_FLAG_CMYK: BablModelFlag = 16777216;
28
29pub type BablModelFlag = c_uint;
30
31pub const BablIccIntent_BABL_ICC_INTENT_PERCEPTUAL: BablIccIntent = 0;
32pub const BablIccIntent_BABL_ICC_INTENT_RELATIVE_COLORIMETRIC: BablIccIntent = 1;
33pub const BablIccIntent_BABL_ICC_INTENT_SATURATION: BablIccIntent = 2;
34pub const BablIccIntent_BABL_ICC_INTENT_ABSOLUTE_COLORIMETRIC: BablIccIntent = 3;
35pub const BablIccIntent_BABL_ICC_INTENT_PERFORMANCE: BablIccIntent = 32;
36pub type BablIccIntent = c_uint;
37
38#[repr(C)]
39#[derive(Copy, Clone)]
40pub struct _Babl {
41 _unused: [u8; 0],
42}
43pub type Babl = _Babl;
44
45pub type BablFuncLinear = Option<
46 unsafe extern "C" fn(
47 conversion: *const Babl,
48 src: *const c_char,
49 dst: *mut c_char,
50 n: c_long,
51 user_data: *mut c_void,
52 ),
53>;
54
55pub type BablFuncPlanar = Option<
56 unsafe extern "C" fn(
57 conversion: *const Babl,
58 src_bands: c_int,
59 src: *mut *const c_char,
60 src_pitch: *mut c_int,
61 dst_bands: c_int,
62 dst: *mut *mut c_char,
63 dst_pitch: *mut c_int,
64 n: c_long,
65 user_data: *mut c_void,
66 ),
67>;
68
69extern "C" {
70 pub fn babl_get_version(major: *mut c_int, minor: *mut c_int, micro: *mut c_int);
74 pub fn babl_init();
75 pub fn babl_exit();
76
77 pub fn babl_type(name: *const c_char) -> *const Babl;
78 pub fn babl_introspect(babl: *const Babl);
79
80 pub fn babl_sampling(horizontal: c_int, vertical: c_int) -> *const Babl;
81 pub fn babl_icc_get_key(
82 icc_data: *const c_char,
83 icc_length: c_int,
84 key: *const c_char,
85 language: *const c_char,
86 country: *const c_char,
87 ) -> *mut c_char;
88 pub fn babl_fish(
89 source_format: *const c_void,
90 destination_format: *const c_void,
91 ) -> *const Babl;
92 pub fn babl_fast_fish(
93 source_format: *const c_void,
94 destination_format: *const c_void,
95 performance: *const c_char,
96 ) -> *const Babl;
97 pub fn babl_process(
98 babl_fish: *const Babl,
99 source: *const c_void,
100 destination: *mut c_void,
101 n: c_long,
102 ) -> c_long;
103 pub fn babl_process_rows(
104 babl_fish: *const Babl,
105 source: *const c_void,
106 source_stride: c_int,
107 dest: *mut c_void,
108 dest_stride: c_int,
109 n: c_long,
110 rows: c_int,
111 ) -> c_long;
112 pub fn babl_get_name(babl: *const Babl) -> *const c_char;
113 pub fn babl_type_new(first_arg: *mut c_void, ...) -> *const Babl;
114 pub fn babl_new_palette(
115 name: *const c_char,
116 format_u8: *mut *const Babl,
117 format_u8_with_alpha: *mut *const Babl,
118 ) -> *const Babl;
119 pub fn babl_new_palette_with_space(
120 name: *const c_char,
121 space: *const Babl,
122 format_u8: *mut *const Babl,
123 format_u8_with_alpha: *mut *const Babl,
124 ) -> *const Babl;
125 pub fn babl_palette_set_palette(
126 babl: *const Babl,
127 format: *const Babl,
128 data: *mut c_void,
129 count: c_int,
130 );
131 pub fn babl_palette_reset(babl: *const Babl);
132 pub fn babl_set_user_data(babl: *const Babl, data: *mut c_void);
133 pub fn babl_get_user_data(babl: *const Babl) -> *mut c_void;
134
135 pub fn babl_conversion_new(first_arg: *const c_void, ...) -> *const Babl;
139 pub fn babl_conversion_get_source_space(conversion: *const Babl) -> *const Babl;
140 pub fn babl_conversion_get_destination_space(conversion: *const Babl) -> *const Babl;
141
142 pub fn babl_component_new(first_arg: *mut c_void, ...) -> *const Babl;
146 pub fn babl_component(name: *const c_char) -> *const Babl;
147
148 pub fn babl_model(name: *const c_char) -> *const Babl;
152 pub fn babl_model_with_space(name: *const c_char, space: *const Babl) -> *const Babl;
153 pub fn babl_model_new(first_arg: *mut c_void, ...) -> *const Babl;
154 pub fn babl_model_is(babl: *const Babl, model_name: *const c_char) -> c_int;
155 pub fn babl_get_model_flags(model: *const Babl) -> BablModelFlag;
156
157 pub fn babl_format_get_encoding(babl: *const Babl) -> *const c_char;
161 pub fn babl_format_is_palette(format: *const Babl) -> c_int;
162 pub fn babl_format_new(first_arg: *const c_void, ...) -> *const Babl;
163 pub fn babl_format_n(type_: *const Babl, components: c_int) -> *const Babl;
164 pub fn babl_format_is_format_n(format: *const Babl) -> c_int;
165 pub fn babl_format_get_n_components(format: *const Babl) -> c_int;
166 pub fn babl_format_get_type(format: *const Babl, component_index: c_int) -> *const Babl;
167 pub fn babl_format_has_alpha(format: *const Babl) -> c_int;
168 pub fn babl_format_get_bytes_per_pixel(format: *const Babl) -> c_int;
169 pub fn babl_format_get_model(format: *const Babl) -> *const Babl;
170 pub fn babl_format(encoding: *const c_char) -> *const Babl;
171 pub fn babl_format_with_space(encoding: *const c_char, space: *const Babl) -> *const Babl;
172 pub fn babl_format_exists(name: *const c_char) -> c_int;
173 pub fn babl_format_get_space(format: *const Babl) -> *const Babl;
174
175 pub fn babl_trc_gamma(gamma: f64) -> *const Babl;
179 pub fn babl_trc(name: *const c_char) -> *const Babl;
180
181 pub fn babl_space(name: *const c_char) -> *const Babl;
185 pub fn babl_space_from_icc(
186 icc_data: *const c_char,
187 icc_length: c_int,
188 intent: BablIccIntent,
189 error: *mut *const c_char,
190 ) -> *const Babl;
191 pub fn babl_icc_make_space(
193 icc_data: *const c_char,
194 icc_length: c_int,
195 intent: BablIccIntent,
196 error: *mut *const c_char,
197 ) -> *const Babl;
198 pub fn babl_space_from_chromaticities(
199 name: *const c_char,
200 wx: f64,
201 wy: f64,
202 rx: f64,
203 ry: f64,
204 gx: f64,
205 gy: f64,
206 bx: f64,
207 by: f64,
208 trc_red: *const Babl,
209 trc_green: *const Babl,
210 trc_blue: *const Babl,
211 flags: BablSpaceFlags,
212 ) -> *const Babl;
213 pub fn babl_space_with_trc(space: *const Babl, trc: *const Babl) -> *const Babl;
214 pub fn babl_space_get(
215 space: *const Babl,
216 xw: *mut f64,
217 yw: *mut f64,
218 xr: *mut f64,
219 yr: *mut f64,
220 xg: *mut f64,
221 yg: *mut f64,
222 xb: *mut f64,
223 yb: *mut f64,
224 red_trc: *mut *const Babl,
225 green_trc: *mut *const Babl,
226 blue_trc: *mut *const Babl,
227 );
228 pub fn babl_space_get_rgb_luminance(
229 space: *const Babl,
230 red_luminance: *mut f64,
231 green_luminance: *mut f64,
232 blue_luminance: *mut f64,
233 );
234 pub fn babl_space_get_gamma(space: *const Babl) -> f64;
235 pub fn babl_space_get_icc(babl: *const Babl, length: *mut c_int) -> *const c_char;
236 pub fn babl_space_from_rgbxyz_matrix(
237 name: *const c_char,
238 wx: f64,
239 wy: f64,
240 wz: f64,
241 rx: f64,
242 gx: f64,
243 bx: f64,
244 ry: f64,
245 gy: f64,
246 by: f64,
247 rz: f64,
248 gz: f64,
249 bz: f64,
250 trc_red: *const Babl,
251 trc_green: *const Babl,
252 trc_blue: *const Babl,
253 ) -> *const Babl;
254 pub fn babl_space_is_cmyk(space: *const Babl) -> c_int;
255 pub fn babl_space_is_gray(space: *const Babl) -> c_int;
256}