iv.nanovega: some code cleanup; one new context property
[iv.d.git] / imlib2.d
blobf4a237dee5aab983cadd8865cf3e7ed56caeff83
1 /* Invisible Vector Library
2 * coded by Ketmar // Invisible Vector <ketmar@ketmar.no-ip.org>
3 * Understanding is not required. Only obedience.
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 // docs: https://docs.enlightenment.org/api/imlib2/html/imlib2_8c.html
19 // sample: https://docs.enlightenment.org/api/imlib2/html/
20 module iv.imlib2 /*is aliced*/;
21 pragma(lib, "Imlib2");
22 import iv.x11;
23 import iv.alice;
25 extern(C) nothrow @nogc:
27 # ifndef X_DISPLAY_MISSING
28 # include <X11/Xlib.h>
29 # endif
32 alias DATA64 = ulong;
33 alias DATA32 = uint;
34 alias DATA16 = ushort;
35 alias DATA8 = ubyte;
37 /* opaque data types */
38 //typedef Imlib_Context = void*;
39 alias Imlib_Context = void*;
40 //typedef Imlib_Image = void*;
41 alias Imlib_Image = void*;
42 //typedef Imlib_Color_Modifier = void*;
43 alias Imlib_Color_Modifier = void*;
44 //typedef Imlib_Updates = void*;
45 alias Imlib_Updates = void*;
46 //typedef Imlib_Font = void*;
47 alias Imlib_Font = void*;
48 //typedef Imlib_Color_Range = void*;
49 alias Imlib_Color_Range = void*;
50 //typedef Imlib_Filter = void*;
51 alias Imlib_Filter = void*;
52 alias Imlib_Border = _imlib_border;
53 alias Imlib_Color = _imlib_color;
54 //typedef ImlibPolygon = void*;
55 alias ImlibPolygon = void*;
57 /* blending operations */
58 enum /*_imlib_operation*/
60 IMLIB_OP_COPY,
61 IMLIB_OP_ADD,
62 IMLIB_OP_SUBTRACT,
63 IMLIB_OP_RESHADE
66 enum /*_imlib_text_direction*/
68 IMLIB_TEXT_TO_RIGHT = 0,
69 IMLIB_TEXT_TO_LEFT = 1,
70 IMLIB_TEXT_TO_DOWN = 2,
71 IMLIB_TEXT_TO_UP = 3,
72 IMLIB_TEXT_TO_ANGLE = 4
75 enum /*_imlib_load_error*/
77 IMLIB_LOAD_ERROR_NONE,
78 IMLIB_LOAD_ERROR_FILE_DOES_NOT_EXIST,
79 IMLIB_LOAD_ERROR_FILE_IS_DIRECTORY,
80 IMLIB_LOAD_ERROR_PERMISSION_DENIED_TO_READ,
81 IMLIB_LOAD_ERROR_NO_LOADER_FOR_FILE_FORMAT,
82 IMLIB_LOAD_ERROR_PATH_TOO_LONG,
83 IMLIB_LOAD_ERROR_PATH_COMPONENT_NON_EXISTANT,
84 IMLIB_LOAD_ERROR_PATH_COMPONENT_NOT_DIRECTORY,
85 IMLIB_LOAD_ERROR_PATH_POINTS_OUTSIDE_ADDRESS_SPACE,
86 IMLIB_LOAD_ERROR_TOO_MANY_SYMBOLIC_LINKS,
87 IMLIB_LOAD_ERROR_OUT_OF_MEMORY,
88 IMLIB_LOAD_ERROR_OUT_OF_FILE_DESCRIPTORS,
89 IMLIB_LOAD_ERROR_PERMISSION_DENIED_TO_WRITE,
90 IMLIB_LOAD_ERROR_OUT_OF_DISK_SPACE,
91 IMLIB_LOAD_ERROR_UNKNOWN
94 /* Encodings known to Imlib2 (so far) */
95 enum /*_imlib_TTF_encoding*/
97 IMLIB_TTF_ENCODING_ISO_8859_1,
98 IMLIB_TTF_ENCODING_ISO_8859_2,
99 IMLIB_TTF_ENCODING_ISO_8859_3,
100 IMLIB_TTF_ENCODING_ISO_8859_4,
101 IMLIB_TTF_ENCODING_ISO_8859_5
105 typedef enum _imlib_operation Imlib_Operation;
106 typedef enum _imlib_load_error Imlib_Load_Error;
107 typedef enum _imlib_load_error ImlibLoadError;
108 typedef enum _imlib_text_direction Imlib_Text_Direction;
109 typedef enum _imlib_TTF_encoding Imlib_TTF_Encoding;
111 alias Imlib_Operation = int;
112 alias Imlib_Load_Error = int;
113 alias ImlibLoadError = int;
114 alias Imlib_Text_Direction = int;
115 alias Imlib_TTF_Encoding = int;
117 struct _imlib_border
119 int left, right, top, bottom;
122 struct _imlib_color
124 int alpha, red, green, blue;
127 /* Progressive loading callbacks */
128 /*typedef*/alias Imlib_Progress_Function = int function (
129 Imlib_Image im, char percent,
130 int update_x, int update_y,
131 int update_w, int update_h);
132 //typedef Imlib_Data_Destructor_Function = void function (Imlib_Image im, void *data);
133 alias Imlib_Data_Destructor_Function = void function (Imlib_Image im, void *data);
135 /*EAPI*/ Imlib_Context imlib_context_new ();
136 /*EAPI*/ void imlib_context_free(Imlib_Context context);
138 /*EAPI*/ void imlib_context_push(Imlib_Context context);
139 /*EAPI*/ void imlib_context_pop();
140 /*EAPI*/ Imlib_Context imlib_context_get();
142 /* context setting */
143 //# ifndef X_DISPLAY_MISSING
144 /*EAPI*/ void imlib_context_set_display(Display * display);
145 /*EAPI*/ void imlib_context_disconnect_display();
146 /*EAPI*/ void imlib_context_set_visual(Visual * visual);
147 /*EAPI*/ void imlib_context_set_colormap(Colormap colormap);
148 /*EAPI*/ void imlib_context_set_drawable(Drawable drawable);
149 /*EAPI*/ void imlib_context_set_mask(Pixmap mask);
150 //# endif
151 /*EAPI*/ void imlib_context_set_dither_mask(char dither_mask);
152 /*EAPI*/ void imlib_context_set_mask_alpha_threshold(int mask_alpha_threshold);
153 /*EAPI*/ void imlib_context_set_anti_alias(char anti_alias);
154 /*EAPI*/ void imlib_context_set_dither(char dither);
155 /*EAPI*/ void imlib_context_set_blend(char blend);
156 /*EAPI*/ void imlib_context_set_color_modifier(Imlib_Color_Modifier color_modifier);
157 /*EAPI*/ void imlib_context_set_operation(Imlib_Operation operation);
158 /*EAPI*/ void imlib_context_set_font(Imlib_Font font);
159 /*EAPI*/ void imlib_context_set_direction(Imlib_Text_Direction direction);
160 /*EAPI*/ void imlib_context_set_angle(double angle);
161 /*EAPI*/ void imlib_context_set_color(int red, int green, int blue, int alpha);
162 /*EAPI*/ void imlib_context_set_color_hsva(float hue, float saturation, float value, int alpha);
163 /*EAPI*/ void imlib_context_set_color_hlsa(float hue, float lightness, float saturation, int alpha);
164 /*EAPI*/ void imlib_context_set_color_cmya(int cyan, int magenta, int yellow, int alpha);
165 /*EAPI*/ void imlib_context_set_color_range(Imlib_Color_Range color_range);
166 /*EAPI*/ void imlib_context_set_progress_function(Imlib_Progress_Function
167 progress_function);
168 /*EAPI*/ void imlib_context_set_progress_granularity(char progress_granularity);
169 /*EAPI*/ void imlib_context_set_image(Imlib_Image image);
170 /*EAPI*/ void imlib_context_set_cliprect(int x, int y, int w, int h);
171 /*EAPI*/ void imlib_context_set_TTF_encoding(Imlib_TTF_Encoding encoding);
173 /* context getting */
174 //# ifndef X_DISPLAY_MISSING
175 /*EAPI*/ Display *imlib_context_get_display();
176 /*EAPI*/ Visual *imlib_context_get_visual();
177 /*EAPI*/ Colormap imlib_context_get_colormap();
178 /*EAPI*/ Drawable imlib_context_get_drawable();
179 /*EAPI*/ Pixmap imlib_context_get_mask();
180 //# endif
181 /*EAPI*/ char imlib_context_get_dither_mask();
182 /*EAPI*/ char imlib_context_get_anti_alias();
183 /*EAPI*/ int imlib_context_get_mask_alpha_threshold();
184 /*EAPI*/ char imlib_context_get_dither();
185 /*EAPI*/ char imlib_context_get_blend();
186 /*EAPI*/ Imlib_Color_Modifier imlib_context_get_color_modifier();
187 /*EAPI*/ Imlib_Operation imlib_context_get_operation();
188 /*EAPI*/ Imlib_Font imlib_context_get_font();
189 /*EAPI*/ double imlib_context_get_angle();
190 /*EAPI*/ Imlib_Text_Direction imlib_context_get_direction();
191 /*EAPI*/ void imlib_context_get_color(int *red, int *green, int *blue, int *alpha);
192 /*EAPI*/ void imlib_context_get_color_hsva(float *hue, float *saturation, float *value, int *alpha);
193 /*EAPI*/ void imlib_context_get_color_hlsa(float *hue, float *lightness, float *saturation, int *alpha);
194 /*EAPI*/ void imlib_context_get_color_cmya(int *cyan, int *magenta, int *yellow, int *alpha);
195 /*EAPI*/ Imlib_Color *imlib_context_get_imlib_color();
196 /*EAPI*/ Imlib_Color_Range imlib_context_get_color_range();
197 /*EAPI*/ Imlib_Progress_Function imlib_context_get_progress_function();
198 /*EAPI*/ char imlib_context_get_progress_granularity();
199 /*EAPI*/ Imlib_Image imlib_context_get_image();
200 /*EAPI*/ void imlib_context_get_cliprect(int *x, int *y, int *w, int *h);
201 /*EAPI*/ Imlib_TTF_Encoding imlib_context_get_TTF_encoding();
203 /*EAPI*/ int imlib_get_cache_size();
204 /*EAPI*/ void imlib_set_cache_size(int bytes);
205 /*EAPI*/ int imlib_get_color_usage();
206 /*EAPI*/ void imlib_set_color_usage(int max);
207 /*EAPI*/ void imlib_flush_loaders();
208 //# ifndef X_DISPLAY_MISSING
209 /*EAPI*/ int imlib_get_visual_depth(Display * display, Visual * visual);
210 /*EAPI*/ Visual *imlib_get_best_visual(Display * display, int screen,
211 int *depth_return);
212 //# endif
214 /*EAPI*/ Imlib_Image imlib_load_image(const(char)* file);
215 /*EAPI*/ Imlib_Image imlib_load_image_immediately(const(char)* file);
216 /*EAPI*/ Imlib_Image imlib_load_image_without_cache(const(char)* file);
217 /*EAPI*/ Imlib_Image imlib_load_image_immediately_without_cache(const(char)* file);
218 /*EAPI*/ Imlib_Image imlib_load_image_with_error_return(const(char)* file,
219 Imlib_Load_Error *
220 error_return);
221 /*EAPI*/ void imlib_free_image();
222 /*EAPI*/ void imlib_free_image_and_decache();
224 /* query/modify image parameters */
225 /*EAPI*/ int imlib_image_get_width();
226 /*EAPI*/ int imlib_image_get_height();
227 /*EAPI*/ const(char)* imlib_image_get_filename();
228 /*EAPI*/ DATA32 *imlib_image_get_data(); // b, g, r, a
229 /*EAPI*/ const(DATA32) *imlib_image_get_data_for_reading_only();
230 /*EAPI*/ void imlib_image_put_back_data(DATA32 * data);
231 /*EAPI*/ char imlib_image_has_alpha();
232 /*EAPI*/ void imlib_image_set_changes_on_disk();
233 /*EAPI*/ void imlib_image_get_border(Imlib_Border * border);
234 /*EAPI*/ void imlib_image_set_border(Imlib_Border * border);
235 /*EAPI*/ void imlib_image_set_format(const(char)* format);
236 /*EAPI*/ void imlib_image_set_irrelevant_format(char irrelevant);
237 /*EAPI*/ void imlib_image_set_irrelevant_border(char irrelevant);
238 /*EAPI*/ void imlib_image_set_irrelevant_alpha(char irrelevant);
239 /*EAPI*/ char *imlib_image_format();
240 /*EAPI*/ void imlib_image_set_has_alpha(char has_alpha);
241 /*EAPI*/ void imlib_image_query_pixel(int x, int y, Imlib_Color * color_return);
242 /*EAPI*/ void imlib_image_query_pixel_hsva(int x, int y, float *hue, float *saturation, float *value, int *alpha);
243 /*EAPI*/ void imlib_image_query_pixel_hlsa(int x, int y, float *hue, float *lightness, float *saturation, int *alpha);
244 /*EAPI*/ void imlib_image_query_pixel_cmya(int x, int y, int *cyan, int *magenta, int *yellow, int *alpha);
246 /* rendering functions */
247 //# ifndef X_DISPLAY_MISSING
248 /*EAPI*/ void imlib_render_pixmaps_for_whole_image(Pixmap * pixmap_return,
249 Pixmap * mask_return);
250 /*EAPI*/ void imlib_render_pixmaps_for_whole_image_at_size(Pixmap * pixmap_return,
251 Pixmap * mask_return,
252 int width, int height);
253 /*EAPI*/ void imlib_free_pixmap_and_mask(Pixmap pixmap);
254 /*EAPI*/ void imlib_render_image_on_drawable(int x, int y);
255 /*EAPI*/ void imlib_render_image_on_drawable_at_size(int x, int y, int width,
256 int height);
257 /*EAPI*/ void imlib_render_image_part_on_drawable_at_size(int source_x,
258 int source_y,
259 int source_width,
260 int source_height, int x,
261 int y, int width,
262 int height);
263 /*EAPI*/ DATA32 imlib_render_get_pixel_color();
264 //# endif
265 /*EAPI*/ void imlib_blend_image_onto_image(Imlib_Image source_image,
266 char merge_alpha, int source_x,
267 int source_y, int source_width,
268 int source_height, int destination_x,
269 int destination_y, int destination_width,
270 int destination_height);
272 /* creation functions */
273 /*EAPI*/ Imlib_Image imlib_create_image(int width, int height);
274 /*EAPI*/ Imlib_Image imlib_create_image_using_data(int width, int height,
275 DATA32 * data);
276 /*EAPI*/ Imlib_Image imlib_create_image_using_copied_data(int width, int height,
277 DATA32 * data);
278 //# ifndef X_DISPLAY_MISSING
279 /*EAPI*/ Imlib_Image imlib_create_image_from_drawable(Pixmap mask, int x, int y,
280 int width, int height,
281 char need_to_grab_x);
282 /*EAPI*/ Imlib_Image imlib_create_image_from_ximage(XImage *image, XImage *mask, int x, int y,
283 int width, int height,
284 char need_to_grab_x);
285 /*EAPI*/ Imlib_Image imlib_create_scaled_image_from_drawable(Pixmap mask,
286 int source_x,
287 int source_y,
288 int source_width,
289 int source_height,
290 int destination_width,
291 int destination_height,
292 char need_to_grab_x,
293 char
294 get_mask_from_shape);
295 /*EAPI*/ char imlib_copy_drawable_to_image(Pixmap mask, int x, int y, int width,
296 int height, int destination_x,
297 int destination_y, char need_to_grab_x);
298 //# endif
299 /*EAPI*/ Imlib_Image imlib_clone_image();
300 /*EAPI*/ Imlib_Image imlib_create_cropped_image(int x, int y, int width,
301 int height);
302 /*EAPI*/ Imlib_Image imlib_create_cropped_scaled_image(int source_x, int source_y,
303 int source_width,
304 int source_height,
305 int destination_width,
306 int destination_height);
308 /* imlib updates. lists of rectangles for storing required update draws */
309 /*EAPI*/ Imlib_Updates imlib_updates_clone(Imlib_Updates updates);
310 /*EAPI*/ Imlib_Updates imlib_update_append_rect(Imlib_Updates updates, int x, int y,
311 int w, int h);
312 /*EAPI*/ Imlib_Updates imlib_updates_merge(Imlib_Updates updates, int w, int h);
313 /*EAPI*/ Imlib_Updates imlib_updates_merge_for_rendering(Imlib_Updates updates,
314 int w, int h);
315 /*EAPI*/ void imlib_updates_free(Imlib_Updates updates);
316 /*EAPI*/ Imlib_Updates imlib_updates_get_next(Imlib_Updates updates);
317 /*EAPI*/ void imlib_updates_get_coordinates(Imlib_Updates updates, int *x_return,
318 int *y_return, int *width_return,
319 int *height_return);
320 /*EAPI*/ void imlib_updates_set_coordinates(Imlib_Updates updates, int x, int y,
321 int width, int height);
322 /*EAPI*/ void imlib_render_image_updates_on_drawable(Imlib_Updates updates, int x,
323 int y);
324 /*EAPI*/ Imlib_Updates imlib_updates_init();
325 /*EAPI*/ Imlib_Updates imlib_updates_append_updates(Imlib_Updates updates,
326 Imlib_Updates appended_updates);
328 /* image modification */
329 /*EAPI*/ void imlib_image_flip_horizontal();
330 /*EAPI*/ void imlib_image_flip_vertical();
331 /*EAPI*/ void imlib_image_flip_diagonal();
332 /*EAPI*/ void imlib_image_orientate(int orientation);
333 /*EAPI*/ void imlib_image_blur(int radius);
334 /*EAPI*/ void imlib_image_sharpen(int radius);
335 /*EAPI*/ void imlib_image_tile_horizontal();
336 /*EAPI*/ void imlib_image_tile_vertical();
337 /*EAPI*/ void imlib_image_tile();
339 /* fonts and text */
340 /*EAPI*/ Imlib_Font imlib_load_font(const(char)* font_name);
341 /*EAPI*/ void imlib_free_font();
342 /* NB! The four functions below are deprecated. */
343 /*EAPI*/ int imlib_insert_font_into_fallback_chain(Imlib_Font font, Imlib_Font fallback_font);
344 /*EAPI*/ void imlib_remove_font_from_fallback_chain(Imlib_Font fallback_font);
345 /*EAPI*/ Imlib_Font imlib_get_prev_font_in_fallback_chain(Imlib_Font fn);
346 /*EAPI*/ Imlib_Font imlib_get_next_font_in_fallback_chain(Imlib_Font fn);
347 /* NB! The four functions above are deprecated. */
348 /*EAPI*/ void imlib_text_draw(int x, int y, const(char)* text);
349 /*EAPI*/ void imlib_text_draw_with_return_metrics(int x, int y, const(char)* text,
350 int *width_return,
351 int *height_return,
352 int *horizontal_advance_return,
353 int *vertical_advance_return);
354 /*EAPI*/ void imlib_get_text_size(const(char)* text, int *width_return,
355 int *height_return);
356 /*EAPI*/ void imlib_get_text_advance(const(char)* text,
357 int *horizontal_advance_return,
358 int *vertical_advance_return);
359 /*EAPI*/ int imlib_get_text_inset(const(char)* text);
360 /*EAPI*/ void imlib_add_path_to_font_path(const(char)* path);
361 /*EAPI*/ void imlib_remove_path_from_font_path(const(char)* path);
362 /*EAPI*/ char **imlib_list_font_path(int *number_return);
363 /*EAPI*/ int imlib_text_get_index_and_location(const(char)* text, int x, int y,
364 int *char_x_return,
365 int *char_y_return,
366 int *char_width_return,
367 int *char_height_return);
368 /*EAPI*/ void imlib_text_get_location_at_index(const(char)* text, int index,
369 int *char_x_return,
370 int *char_y_return,
371 int *char_width_return,
372 int *char_height_return);
373 /*EAPI*/ char **imlib_list_fonts(int *number_return);
374 /*EAPI*/ void imlib_free_font_list(char **font_list, int number);
375 /*EAPI*/ int imlib_get_font_cache_size();
376 /*EAPI*/ void imlib_set_font_cache_size(int bytes);
377 /*EAPI*/ void imlib_flush_font_cache();
378 /*EAPI*/ int imlib_get_font_ascent();
379 /*EAPI*/ int imlib_get_font_descent();
380 /*EAPI*/ int imlib_get_maximum_font_ascent();
381 /*EAPI*/ int imlib_get_maximum_font_descent();
383 /* color modifiers */
384 /*EAPI*/ Imlib_Color_Modifier imlib_create_color_modifier();
385 /*EAPI*/ void imlib_free_color_modifier();
386 /*EAPI*/ void imlib_modify_color_modifier_gamma(double gamma_value);
387 /*EAPI*/ void imlib_modify_color_modifier_brightness(double brightness_value);
388 /*EAPI*/ void imlib_modify_color_modifier_contrast(double contrast_value);
389 /*EAPI*/ void imlib_set_color_modifier_tables(DATA8 * red_table,
390 DATA8 * green_table,
391 DATA8 * blue_table,
392 DATA8 * alpha_table);
393 /*EAPI*/ void imlib_get_color_modifier_tables(DATA8 * red_table,
394 DATA8 * green_table,
395 DATA8 * blue_table,
396 DATA8 * alpha_table);
397 /*EAPI*/ void imlib_reset_color_modifier();
398 /*EAPI*/ void imlib_apply_color_modifier();
399 /*EAPI*/ void imlib_apply_color_modifier_to_rectangle(int x, int y, int width,
400 int height);
402 /* drawing on images */
403 /*EAPI*/ Imlib_Updates imlib_image_draw_pixel(int x, int y, char make_updates);
404 /*EAPI*/ Imlib_Updates imlib_image_draw_line(int x1, int y1, int x2, int y2,
405 char make_updates);
406 /*EAPI*/ void imlib_image_draw_rectangle(int x, int y, int width, int height);
407 /*EAPI*/ void imlib_image_fill_rectangle(int x, int y, int width, int height);
408 /*EAPI*/ void imlib_image_copy_alpha_to_image(Imlib_Image image_source, int x,
409 int y);
410 /*EAPI*/ void imlib_image_copy_alpha_rectangle_to_image(Imlib_Image image_source,
411 int x, int y, int width,
412 int height,
413 int destination_x,
414 int destination_y);
415 /*EAPI*/ void imlib_image_scroll_rect(int x, int y, int width, int height,
416 int delta_x, int delta_y);
417 /*EAPI*/ void imlib_image_copy_rect(int x, int y, int width, int height, int new_x,
418 int new_y);
420 /* polygons */
421 /*EAPI*/ ImlibPolygon imlib_polygon_new();
422 /*EAPI*/ void imlib_polygon_free(ImlibPolygon poly);
423 /*EAPI*/ void imlib_polygon_add_point(ImlibPolygon poly, int x, int y);
424 /*EAPI*/ void imlib_image_draw_polygon(ImlibPolygon poly, ubyte closed);
425 /*EAPI*/ void imlib_image_fill_polygon(ImlibPolygon poly);
426 /*EAPI*/ void imlib_polygon_get_bounds(ImlibPolygon poly, int *px1, int *py1,
427 int *px2, int *py2);
428 /*EAPI*/ ubyte imlib_polygon_contains_point(ImlibPolygon poly, int x, int y);
430 /* ellipses */
431 /*EAPI*/ void imlib_image_draw_ellipse(int xc, int yc, int a, int b);
432 /*EAPI*/ void imlib_image_fill_ellipse(int xc, int yc, int a, int b);
434 /* color ranges */
435 /*EAPI*/ Imlib_Color_Range imlib_create_color_range();
436 /*EAPI*/ void imlib_free_color_range();
437 /*EAPI*/ void imlib_add_color_to_color_range(int distance_away);
438 /*EAPI*/ void imlib_image_fill_color_range_rectangle(int x, int y, int width,
439 int height, double angle);
440 /*EAPI*/ void imlib_image_fill_hsva_color_range_rectangle(int x, int y, int width,
441 int height, double angle);
443 /* image data */
444 /*EAPI*/ void imlib_image_attach_data_value(const(char)* key, void *data, int value,
445 Imlib_Data_Destructor_Function
446 destructor_function);
447 /*EAPI*/ void *imlib_image_get_attached_data(const(char)* key);
448 /*EAPI*/ int imlib_image_get_attached_value(const(char)* key);
449 /*EAPI*/ void imlib_image_remove_attached_data_value(const(char)* key);
450 /*EAPI*/ void imlib_image_remove_and_free_attached_data_value(const(char)* key);
452 /* saving */
453 /*EAPI*/ void imlib_save_image(const(char)* filename);
454 /*EAPI*/ void imlib_save_image_with_error_return(const(char)* filename,
455 Imlib_Load_Error * error_return);
457 /* FIXME: */
458 /* need to add arbitrary rotation routines */
460 /* rotation/skewing */
461 /*EAPI*/ Imlib_Image imlib_create_rotated_image(double angle);
463 /* rotation from buffer to context (without copying)*/
464 /*EAPI*/ void imlib_rotate_image_from_buffer(double angle,
465 Imlib_Image source_image);
467 /*EAPI*/ void imlib_blend_image_onto_image_at_angle(Imlib_Image source_image,
468 char merge_alpha, int source_x,
469 int source_y, int source_width,
470 int source_height,
471 int destination_x,
472 int destination_y, int angle_x,
473 int angle_y);
474 /*EAPI*/ void imlib_blend_image_onto_image_skewed(Imlib_Image source_image,
475 char merge_alpha, int source_x,
476 int source_y, int source_width,
477 int source_height,
478 int destination_x,
479 int destination_y, int h_angle_x,
480 int h_angle_y, int v_angle_x,
481 int v_angle_y);
482 //# ifndef X_DISPLAY_MISSING
483 /*EAPI*/ void imlib_render_image_on_drawable_skewed(int source_x, int source_y,
484 int source_width,
485 int source_height,
486 int destination_x,
487 int destination_y,
488 int h_angle_x, int h_angle_y,
489 int v_angle_x, int v_angle_y);
490 /*EAPI*/ void imlib_render_image_on_drawable_at_angle(int source_x, int source_y,
491 int source_width,
492 int source_height,
493 int destination_x,
494 int destination_y,
495 int angle_x, int angle_y);
496 //# endif
498 /* image filters */
499 /*EAPI*/ void imlib_image_filter();
500 /*EAPI*/ Imlib_Filter imlib_create_filter(int initsize);
501 /*EAPI*/ void imlib_context_set_filter(Imlib_Filter filter);
502 /*EAPI*/ Imlib_Filter imlib_context_get_filter();
503 /*EAPI*/ void imlib_free_filter();
504 /*EAPI*/ void imlib_filter_set(int xoff, int yoff, int a, int r, int g, int b);
505 /*EAPI*/ void imlib_filter_set_alpha(int xoff, int yoff, int a, int r, int g,
506 int b);
507 /*EAPI*/ void imlib_filter_set_red(int xoff, int yoff, int a, int r, int g, int b);
508 /*EAPI*/ void imlib_filter_set_green(int xoff, int yoff, int a, int r, int g,
509 int b);
510 /*EAPI*/ void imlib_filter_set_blue(int xoff, int yoff, int a, int r, int g, int b);
511 /*EAPI*/ void imlib_filter_constants(int a, int r, int g, int b);
512 /*EAPI*/ void imlib_filter_divisors(int a, int r, int g, int b);
514 /*EAPI*/ void imlib_apply_filter(char *script, ...);
516 /*EAPI*/ void imlib_image_clear();
517 /*EAPI*/ void imlib_image_clear_color(int r, int g, int b, int a);