Imlib2  1.11.1
Imlib2.h
Go to the documentation of this file.
1 #ifndef __IMLIB_API_H
2 #define __IMLIB_API_H 1
6 #define IMLIB2_VERSION_MAJOR 1
7 #define IMLIB2_VERSION_MINOR 11
8 #define IMLIB2_VERSION_MICRO 1
9 
10 #define IMLIB2_VERSION_(maj, min, mic) (10000 * (maj) + 100 * (min) + (mic))
11 #define IMLIB2_VERSION IMLIB2_VERSION_(IMLIB2_VERSION_MAJOR, IMLIB2_VERSION_MINOR, IMLIB2_VERSION_MICRO)
12 
13 #ifdef EAPI
14 #undef EAPI
15 #endif
16 #ifdef WIN32
17 #ifdef BUILDING_DLL
18 #define EAPI __declspec(dllexport)
19 #else
20 #define EAPI __declspec(dllimport)
21 #endif
22 #else
23 #ifdef __GNUC__
24 #if __GNUC__ >= 4
25 #define EAPI __attribute__ ((visibility("default")))
26 #else
27 #define EAPI
28 #endif
29 #else
30 #define EAPI
31 #endif
32 #endif
33 
34 #ifndef IMLIB2_DEPRECATED
35 #ifdef __GNUC__
36 #define IMLIB2_DEPRECATED __attribute__((deprecated))
37 #else
38 #define IMLIB2_DEPRECATED
39 #endif
40 #endif
41 
42 #include <stddef.h>
43 #include <stdint.h>
44 #ifndef X_DISPLAY_MISSING
45 #include <X11/Xlib.h>
46 #endif
47 
48 /* opaque data types */
49 typedef void *Imlib_Context;
50 typedef void *Imlib_Image;
51 typedef void *Imlib_Color_Modifier;
52 typedef void *Imlib_Updates;
53 typedef void *Imlib_Font;
54 typedef void *Imlib_Color_Range;
55 typedef void *Imlib_Filter;
56 typedef void *ImlibPolygon;
57 
58 /* blending operations */
59 typedef enum {
60  IMLIB_OP_COPY,
61  IMLIB_OP_ADD,
62  IMLIB_OP_SUBTRACT,
63  IMLIB_OP_RESHADE
64 } Imlib_Operation;
65 
66 typedef enum {
67  IMLIB_TEXT_TO_RIGHT = 0,
68  IMLIB_TEXT_TO_LEFT = 1,
69  IMLIB_TEXT_TO_DOWN = 2,
70  IMLIB_TEXT_TO_UP = 3,
71  IMLIB_TEXT_TO_ANGLE = 4
72 } Imlib_Text_Direction;
73 
74 #define IMLIB_ERR_INTERNAL -1 /* Internal error (should not happen) */
75 #define IMLIB_ERR_NO_LOADER -2 /* No loader for file format */
76 #define IMLIB_ERR_NO_SAVER -3 /* No saver for file format */
77 #define IMLIB_ERR_BAD_IMAGE -4 /* Invalid image file */
78 #define IMLIB_ERR_BAD_FRAME -5 /* Requested frame not in image */
79 
80 typedef struct {
81  int left, right, top, bottom;
82 } Imlib_Border;
83 
84 typedef struct {
85  int alpha, red, green, blue;
86 } Imlib_Color;
87 
88 /* Progressive loading callback */
89 typedef int (*Imlib_Progress_Function)(Imlib_Image im, char percent,
90  int update_x, int update_y,
91  int update_w, int update_h);
92 
93 /* Custom attached data destructor callback */
94 typedef void (*Imlib_Data_Destructor_Function)(Imlib_Image im,
95  void *data);
96 
97 /* Custom image data memory management function */
98 typedef void *(*Imlib_Image_Data_Memory_Function)(void *, size_t size);
99 
100 /* *INDENT-OFF* */
101 #ifdef __cplusplus
102 extern "C" {
103 #endif
104 /* *INDENT-ON* */
105 
107 EAPI int imlib_version(void);
108 
109 /*--------------------------------
110  * Context handling
111  */
112 
114 EAPI Imlib_Context imlib_context_new(void);
115 
117 EAPI void imlib_context_free(Imlib_Context context);
118 
120 EAPI void imlib_context_push(Imlib_Context context);
121 
123 EAPI void imlib_context_pop(void);
124 
126 EAPI Imlib_Context imlib_context_get(void);
127 
128 /*--------------------------------
129  * Context operations
130  */
131 
132 #ifndef X_DISPLAY_MISSING
146 EAPI void imlib_context_set_display(Display * display);
147 
153 EAPI Display *imlib_context_get_display(void);
154 
162 
171 EAPI void imlib_context_set_visual(Visual * visual);
172 
178 EAPI Visual *imlib_context_get_visual(void);
179 
189 EAPI void imlib_context_set_colormap(Colormap colormap);
190 
196 EAPI Colormap imlib_context_get_colormap(void);
197 
205 EAPI void imlib_context_set_drawable(Drawable drawable);
206 
212 EAPI Drawable imlib_context_get_drawable(void);
213 
222 EAPI void imlib_context_set_mask(Pixmap mask);
223 
229 EAPI Pixmap imlib_context_get_mask(void);
230 
241 EAPI void imlib_context_set_dither_mask(char dither_mask);
242 
249 
261  mask_alpha_threshold);
262 
269 
270 #endif /* X_DISPLAY_MISSING */
271 
283 EAPI void imlib_context_set_anti_alias(char anti_alias);
284 
291 
306 EAPI void imlib_context_set_dither(char dither);
307 
313 EAPI char imlib_context_get_dither(void);
314 
323 EAPI void imlib_context_set_blend(char blend);
324 
330 EAPI char imlib_context_get_blend(void);
331 
347 EAPI void imlib_context_set_color_modifier(Imlib_Color_Modifier
348  color_modifier);
349 
355 EAPI Imlib_Color_Modifier imlib_context_get_color_modifier(void);
356 
375 EAPI void imlib_context_set_operation(Imlib_Operation operation);
376 
382 EAPI Imlib_Operation imlib_context_get_operation(void);
383 
391 EAPI void imlib_context_set_font(Imlib_Font font);
392 
398 EAPI Imlib_Font imlib_context_get_font(void);
399 
412 EAPI void imlib_context_set_direction(Imlib_Text_Direction direction);
413 
419 EAPI Imlib_Text_Direction imlib_context_get_direction(void);
420 
430 EAPI void imlib_context_set_angle(double angle);
431 
439 EAPI double imlib_context_get_angle(void);
440 
454 EAPI void imlib_context_set_color(int red, int green, int blue,
455  int alpha);
456 
465 EAPI void imlib_context_get_color(int *red, int *green, int *blue,
466  int *alpha);
467 
480 EAPI void imlib_context_set_color_hsva(float hue, float saturation,
481  float value, int alpha);
482 
491 EAPI void imlib_context_get_color_hsva(float *hue, float *saturation,
492  float *value, int *alpha);
493 
506 EAPI void imlib_context_set_color_hlsa(float hue, float lightness,
507  float saturation, int alpha);
508 
517 EAPI void imlib_context_get_color_hlsa(float *hue, float *lightness,
518  float *saturation, int *alpha);
519 
531 EAPI void imlib_context_set_color_cmya(int cyan, int magenta,
532  int yellow, int alpha);
533 
542 EAPI void imlib_context_get_color_cmya(int *cyan, int *magenta,
543  int *yellow, int *alpha);
544 
552 EAPI Imlib_Color *imlib_context_get_imlib_color(void);
553 
559 EAPI void imlib_context_set_color_range(Imlib_Color_Range
560  color_range);
561 
567 EAPI Imlib_Color_Range imlib_context_get_color_range(void);
568 
575  (Imlib_Image_Data_Memory_Function memory_function);
576 
582 EAPI Imlib_Image_Data_Memory_Function
584 
593 EAPI void imlib_context_set_progress_function(Imlib_Progress_Function
594  progress_function);
595 
601 EAPI Imlib_Progress_Function imlib_context_get_progress_function(void);
602 
615  progress_granularity);
616 
623 
629 EAPI void imlib_context_set_image(Imlib_Image image);
630 
636 EAPI Imlib_Image imlib_context_get_image(void);
637 
646 EAPI void imlib_context_set_cliprect(int x, int y, int w, int h);
647 
656 EAPI void imlib_context_get_cliprect(int *x, int *y, int *w, int *h);
657 
665 EAPI int imlib_get_cache_used(void);
666 
674 EAPI int imlib_get_cache_size(void);
675 
687 EAPI void imlib_set_cache_size(int bytes);
688 
689 #ifndef X_DISPLAY_MISSING
697 EAPI int imlib_get_color_usage(void);
698 
706 EAPI void imlib_set_color_usage(int max);
707 
714 EAPI int imlib_get_visual_depth(Display * display, Visual * visual);
715 
727 EAPI Visual *imlib_get_best_visual(Display * display, int screen,
728  int *depth_return);
729 #endif /* X_DISPLAY_MISSING */
730 
739 EAPI void imlib_flush_loaders(void);
740 
752 EAPI int imlib_get_error(void);
753 
763 EAPI Imlib_Image imlib_load_image(const char *file);
764 
775 EAPI Imlib_Image imlib_load_image_immediately(const char *file);
776 
784 EAPI Imlib_Image imlib_load_image_without_cache(const char *file);
785 
794  *file);
795 
812 EAPI Imlib_Image imlib_load_image_with_errno_return(const char *file,
813  int *error_return);
814 
830 EAPI Imlib_Image imlib_load_image_fd(int fd, const char *file);
831 
845 EAPI Imlib_Image imlib_load_image_mem(const char *file,
846  const void *data, size_t size);
847 
851 EAPI void imlib_free_image(void);
852 
857 
858 /*--------------------------------
859  * Query/modify image parameters
860  */
861 
865 EAPI int imlib_image_get_width(void);
866 
870 EAPI int imlib_image_get_height(void);
871 
884 EAPI const char *imlib_image_get_filename(void);
885 
904 EAPI uint32_t *imlib_image_get_data(void);
905 
918 
926 EAPI void imlib_image_put_back_data(uint32_t * data);
927 
936 EAPI char imlib_image_has_alpha(void);
937 
950 
961 EAPI void imlib_image_get_border(Imlib_Border * border);
962 
968 EAPI void imlib_image_set_border(Imlib_Border * border);
969 
979 EAPI void imlib_image_set_format(const char *format);
980 
990 EAPI void imlib_image_set_irrelevant_format(char irrelevant);
991 
999 EAPI char *imlib_image_format(void);
1000 
1008 EAPI void imlib_image_set_has_alpha(char has_alpha);
1009 
1020 EAPI void imlib_image_query_pixel(int x, int y,
1021  Imlib_Color * color_return);
1022 
1033 EAPI void imlib_image_query_pixel_hsva(int x, int y,
1034  float *hue, float *saturation,
1035  float *value, int *alpha);
1036 
1047 EAPI void imlib_image_query_pixel_hlsa(int x, int y,
1048  float *hue, float *lightness,
1049  float *saturation, int *alpha);
1050 
1061 EAPI void imlib_image_query_pixel_cmya(int x, int y,
1062  int *cyan, int *magenta,
1063  int *yellow, int *alpha);
1064 
1065 /*--------------------------------
1066  * Rendering functions
1067  */
1068 
1069 #ifndef X_DISPLAY_MISSING
1080 EAPI void imlib_render_pixmaps_for_whole_image(Pixmap * pixmap_return,
1081  Pixmap * mask_return);
1082 
1098  pixmap_return,
1099  Pixmap *
1100  mask_return,
1101  int width,
1102  int height);
1103 
1112 EAPI void imlib_free_pixmap_and_mask(Pixmap pixmap);
1113 
1123 EAPI void imlib_render_image_on_drawable(int x, int y);
1124 
1138  int width,
1139  int height);
1140 
1159  int src_y,
1160  int src_width,
1161  int src_height,
1162  int dst_x,
1163  int dst_y,
1164  int dst_width,
1165  int dst_height);
1166 
1170 EAPI uint32_t imlib_render_get_pixel_color(void);
1171 
1172 #endif /* X_DISPLAY_MISSING */
1173 
1194 EAPI void imlib_blend_image_onto_image(Imlib_Image src_image,
1195  char merge_alpha,
1196  int src_x, int src_y,
1197  int src_width, int src_height,
1198  int dst_x, int dst_y,
1199  int dst_width, int dst_height);
1200 
1201 /*--------------------------------
1202  * Image creation functions
1203  */
1204 
1218 EAPI Imlib_Image imlib_create_image(int width, int height);
1219 
1227 EAPI Imlib_Image imlib_clone_image(void);
1228 
1242 EAPI Imlib_Image imlib_create_cropped_image(int x, int y, int width,
1243  int height);
1244 
1261 EAPI Imlib_Image imlib_create_cropped_scaled_image(int src_x, int src_y,
1262  int src_width,
1263  int src_height,
1264  int dst_width,
1265  int dst_height);
1266 
1287 EAPI Imlib_Image imlib_create_image_using_data(int width, int height,
1288  uint32_t * data);
1289 
1308  (int width, int height, uint32_t * data,
1309  Imlib_Image_Data_Memory_Function func);
1310 
1325 EAPI Imlib_Image imlib_create_image_using_copied_data(int width, int height,
1326  uint32_t * data);
1327 
1328 #ifndef X_DISPLAY_MISSING
1351 EAPI Imlib_Image imlib_create_image_from_drawable(Pixmap mask,
1352  int x, int y,
1353  int width, int height,
1354  char need_to_grab_x);
1355 
1369 EAPI Imlib_Image imlib_create_image_from_ximage(XImage * image,
1370  XImage * mask,
1371  int x, int y,
1372  int width, int height,
1373  char need_to_grab_x);
1374 
1402 EAPI Imlib_Image imlib_create_scaled_image_from_drawable(Pixmap mask,
1403  int src_x,
1404  int src_y,
1405  int src_width,
1406  int src_height,
1407  int dst_width,
1408  int dst_height,
1409  char need_to_grab_x,
1410  char get_mask_from_shape);
1411 
1436 EAPI char imlib_copy_drawable_to_image(Pixmap mask,
1437  int src_x, int src_y,
1438  int src_width, int src_height,
1439  int dst_x, int dst_y,
1440  char need_to_grab_x);
1441 
1448 
1455 
1468 
1475 
1482 
1494 EAPI void imlib_set_ximage_cache_size_max(int bytes);
1495 
1496 #endif /* X_DISPLAY_MISSING */
1497 
1498 /*--------------------------------
1499  * Updates - lists of rectangles for storing required update draws
1500  */
1501 
1511 EAPI Imlib_Updates imlib_updates_clone(Imlib_Updates updates);
1512 
1529 EAPI Imlib_Updates imlib_update_append_rect(Imlib_Updates updates,
1530  int x, int y, int w, int h);
1531 
1547 EAPI Imlib_Updates imlib_updates_merge(Imlib_Updates updates, int w, int h);
1548 
1562 EAPI Imlib_Updates imlib_updates_merge_for_rendering(Imlib_Updates updates,
1563  int w, int h);
1564 
1570 EAPI void imlib_updates_free(Imlib_Updates updates);
1571 
1579 EAPI Imlib_Updates imlib_updates_get_next(Imlib_Updates updates);
1580 
1590 EAPI void imlib_updates_get_coordinates(Imlib_Updates updates,
1591  int *x_return,
1592  int *y_return,
1593  int *width_return,
1594  int *height_return);
1595 
1605 EAPI void imlib_updates_set_coordinates(Imlib_Updates updates,
1606  int x, int y,
1607  int width, int height);
1608 
1609 #ifdef BUILD_X11
1621 EAPI void imlib_render_image_updates_on_drawable(Imlib_Updates
1622  updates,
1623  int x, int y);
1624 #endif
1625 
1634 EAPI Imlib_Updates imlib_updates_init(void);
1635 
1647 EAPI Imlib_Updates imlib_updates_append_updates(Imlib_Updates updates,
1648  Imlib_Updates
1649  appended_updates);
1650 
1651 /*--------------------------------
1652  * Image modification
1653  */
1654 
1659 
1664 
1672 
1683 EAPI void imlib_image_orientate(int orientation);
1684 
1693 EAPI void imlib_image_blur(int radius);
1694 
1702 EAPI void imlib_image_sharpen(int radius);
1703 
1711 
1719 
1727 EAPI void imlib_image_tile(void);
1728 
1740 EAPI void imlib_image_copy_alpha_to_image(Imlib_Image image_source,
1741  int x, int y);
1742 
1760  image_source,
1761  int src_x,
1762  int src_y,
1763  int src_width,
1764  int src_height,
1765  int dst_x,
1766  int dst_y);
1767 
1781 EAPI void imlib_image_scroll_rect(int x, int y, int width, int height,
1782  int delta_x, int delta_y);
1783 
1798 EAPI void imlib_image_copy_rect(int x, int y, int width, int height,
1799  int new_x, int new_y);
1800 
1801 /*--------------------------------
1802  * Fonts and text
1803  */
1804 
1818 EAPI Imlib_Font imlib_load_font(const char *font_name);
1819 
1823 EAPI void imlib_free_font(void);
1824 
1842 EAPI int imlib_insert_font_into_fallback_chain(Imlib_Font font,
1843  Imlib_Font
1844  fallback_font);
1845 
1854  fallback_font);
1855 
1857 EAPI Imlib_Font imlib_get_prev_font_in_fallback_chain(Imlib_Font fn);
1858 
1860 EAPI Imlib_Font imlib_get_next_font_in_fallback_chain(Imlib_Font fn);
1861 
1873 EAPI void imlib_text_draw(int x, int y, const char *text);
1874 
1894  const char *text,
1895  int *width_return,
1896  int *height_return,
1897  int *horizontal_advance_return,
1898  int *vertical_advance_return);
1899 
1910 EAPI void imlib_get_text_size(const char *text,
1911  int *width_return, int *height_return);
1912 
1926 EAPI void imlib_get_text_advance(const char *text,
1927  int *horizontal_advance_return,
1928  int *vertical_advance_return);
1929 
1940 EAPI int imlib_get_text_inset(const char *text);
1941 
1950 EAPI void imlib_add_path_to_font_path(const char *path);
1951 
1959 EAPI void imlib_remove_path_from_font_path(const char *path);
1960 
1975 EAPI char **imlib_list_font_path(int *number_return);
1976 
1997 EAPI int imlib_text_get_index_and_location(const char *text,
1998  int x, int y,
1999  int *char_x_return,
2000  int *char_y_return,
2001  int *char_width_return,
2002  int *char_height_return);
2003 
2017 EAPI void imlib_text_get_location_at_index(const char *text,
2018  int index,
2019  int *char_x_return,
2020  int *char_y_return,
2021  int *char_width_return,
2022  int *char_height_return);
2023 
2031 EAPI char **imlib_list_fonts(int *number_return);
2032 
2039 EAPI void imlib_free_font_list(char **font_list, int number);
2040 
2047 
2058 EAPI void imlib_set_font_cache_size(int bytes);
2059 
2063 EAPI void imlib_flush_font_cache(void);
2064 
2070 EAPI int imlib_get_font_ascent(void);
2071 
2077 EAPI int imlib_get_font_descent(void);
2078 
2085 
2092 
2093 /*--------------------------------
2094  * Color modifiers
2095  */
2096 
2105 EAPI Imlib_Color_Modifier imlib_create_color_modifier(void);
2106 
2111 
2123 EAPI void imlib_modify_color_modifier_gamma(double gamma_value);
2124 
2138  brightness_value);
2139 
2151  contrast_value);
2152 
2167 EAPI void imlib_set_color_modifier_tables(uint8_t * red_table,
2168  uint8_t * green_table,
2169  uint8_t * blue_table,
2170  uint8_t * alpha_table);
2171 
2184 EAPI void imlib_get_color_modifier_tables(uint8_t * red_table,
2185  uint8_t * green_table,
2186  uint8_t * blue_table,
2187  uint8_t * alpha_table);
2188 
2195 
2202 
2215  int width,
2216  int height);
2217 
2218 /*--------------------------------
2219  * Drawing on images
2220  */
2221 
2236 EAPI Imlib_Updates imlib_image_draw_pixel(int x, int y, char make_updates);
2237 
2254 EAPI Imlib_Updates imlib_image_draw_line(int x1, int y1, int x2, int y2,
2255  char make_updates);
2256 
2270 EAPI void imlib_image_draw_rectangle(int x, int y,
2271  int width, int height);
2272 
2285 EAPI void imlib_image_fill_rectangle(int x, int y,
2286  int width, int height);
2287 
2288 /*--------------------------------
2289  * Polygons
2290  */
2291 
2297 EAPI ImlibPolygon imlib_polygon_new(void);
2298 
2304 EAPI void imlib_polygon_free(ImlibPolygon poly);
2305 
2317 EAPI void imlib_polygon_add_point(ImlibPolygon poly, int x, int y);
2318 
2330 EAPI void imlib_image_draw_polygon(ImlibPolygon poly,
2331  unsigned char closed);
2332 
2341 EAPI void imlib_image_fill_polygon(ImlibPolygon poly);
2342 
2356 EAPI void imlib_polygon_get_bounds(ImlibPolygon poly,
2357  int *px1, int *py1,
2358  int *px2, int *py2);
2359 
2372 EAPI unsigned char imlib_polygon_contains_point(ImlibPolygon poly,
2373  int x, int y);
2374 
2375 /*--------------------------------
2376  * Ellipses
2377  */
2378 
2393 EAPI void imlib_image_draw_ellipse(int xc, int yc, int a, int b);
2394 
2410 EAPI void imlib_image_fill_ellipse(int xc, int yc, int a, int b);
2411 
2412 /*--------------------------------
2413  * Color ranges
2414  */
2415 
2421 EAPI Imlib_Color_Range imlib_create_color_range(void);
2422 
2426 EAPI void imlib_free_color_range(void);
2427 
2437 EAPI void imlib_add_color_to_color_range(int distance_away);
2438 
2454  int width,
2455  int height,
2456  double angle);
2457 
2475  int width,
2476  int height,
2477  double
2478  angle);
2479 
2480 /*--------------------------------
2481  * Image data attachment
2482  */
2483 
2497 EAPI void imlib_image_attach_data_value(const char *key,
2498  void *data, int value,
2499  Imlib_Data_Destructor_Function
2500  destructor_function);
2501 
2512 EAPI void *imlib_image_get_attached_data(const char *key);
2513 
2524 EAPI int imlib_image_get_attached_value(const char *key);
2525 
2534 EAPI void imlib_image_remove_attached_data_value(const char *key);
2535 
2546  *key);
2547 
2548 /*--------------------------------
2549  * Image saving
2550  */
2551 
2561 EAPI void imlib_save_image(const char *file);
2562 
2576 EAPI void imlib_save_image_with_errno_return(const char *file,
2577  int *error_return);
2578 
2592 EAPI void imlib_save_image_fd(int fd, const char *file);
2593 
2594 /*--------------------------------
2595  * Image rotation/skewing
2596  */
2597 
2607 EAPI Imlib_Image imlib_create_rotated_image(double angle);
2608 
2617 EAPI void imlib_rotate_image_from_buffer(double angle,
2618  Imlib_Image src_image);
2619 
2638  src_image,
2639  char merge_alpha,
2640  int src_x,
2641  int src_y,
2642  int src_width,
2643  int src_height,
2644  int dst_x,
2645  int dst_y,
2646  int angle_x,
2647  int angle_y);
2648 
2703  src_image,
2704  char merge_alpha,
2705  int src_x,
2706  int src_y,
2707  int src_width,
2708  int src_height,
2709  int dst_x,
2710  int dst_y,
2711  int h_angle_x,
2712  int h_angle_y,
2713  int v_angle_x,
2714  int v_angle_y);
2715 
2716 #ifndef X_DISPLAY_MISSING
2736  int src_y,
2737  int src_width,
2738  int src_height,
2739  int dst_x,
2740  int dst_y,
2741  int h_angle_x,
2742  int h_angle_y,
2743  int v_angle_x,
2744  int v_angle_y);
2745 
2762  int src_y,
2763  int src_width,
2764  int src_height,
2765  int dst_x,
2766  int dst_y,
2767  int angle_x,
2768  int angle_y);
2769 
2770 #endif /* X_DISPLAY_MISSING */
2771 
2772 /*--------------------------------
2773  * Image filters
2774  */
2775 
2779 EAPI void imlib_image_filter(void);
2780 
2784 EAPI Imlib_Filter imlib_create_filter(int initsize);
2785 
2793 EAPI void imlib_context_set_filter(Imlib_Filter filter);
2794 
2800 EAPI Imlib_Filter imlib_context_get_filter(void);
2801 
2805 EAPI void imlib_free_filter(void);
2806 
2807 EAPI void imlib_filter_set(int xoff, int yoff,
2808  int a, int r, int g, int b);
2809 EAPI void imlib_filter_set_alpha(int xoff, int yoff,
2810  int a, int r, int g, int b);
2811 EAPI void imlib_filter_set_red(int xoff, int yoff,
2812  int a, int r, int g, int b);
2813 EAPI void imlib_filter_set_green(int xoff, int yoff,
2814  int a, int r, int g, int b);
2815 EAPI void imlib_filter_set_blue(int xoff, int yoff,
2816  int a, int r, int g, int b);
2817 EAPI void imlib_filter_constants(int a, int r, int g, int b);
2818 EAPI void imlib_filter_divisors(int a, int r, int g, int b);
2819 
2820 EAPI void imlib_apply_filter(const char *script, ...);
2821 
2827 EAPI void imlib_image_clear(void);
2828 
2832 EAPI void imlib_image_clear_color(int r, int g, int b, int a);
2833 
2834 /*--------------------------------
2835  * Multiframe image loading
2836  */
2837 
2838 typedef struct {
2839  int frame_count; /* Number of frames in image */
2840  int frame_num; /* Current frame (1..frame_count) */
2841  int canvas_w, canvas_h; /* Canvas size */
2842  int frame_x, frame_y; /* Frame origin */
2843  int frame_w, frame_h; /* Frame size */
2844  int frame_flags; /* Frame info flags */
2845  int frame_delay; /* Frame delay (ms) */
2846  int loop_count; /* Number of animation loops */
2847 } Imlib_Frame_Info;
2848 
2849 /* frame info flags */
2850 #define IMLIB_IMAGE_ANIMATED (1 << 0) /* Frames are an animated sequence */
2851 #define IMLIB_FRAME_BLEND (1 << 1) /* Blend current onto previous frame */
2852 #define IMLIB_FRAME_DISPOSE_CLEAR (1 << 2) /* Clear before rendering next frame */
2853 #define IMLIB_FRAME_DISPOSE_PREV (1 << 3) /* Revert before rendering next frame */
2854 
2868 EAPI Imlib_Image imlib_load_image_frame(const char *file, int frame);
2869 
2886 EAPI Imlib_Image imlib_load_image_frame_mem(const char *file, int frame,
2887  const void *data, size_t size);
2888 
2894 EAPI void imlib_image_get_frame_info(Imlib_Frame_Info * info);
2895 
2906 EAPI const char *imlib_strerror(int err);
2907 
2908 /*--------------------------------
2909  * Deprecated functionality
2910  */
2911 
2912 /* Old data types, no longer used by imlib2, likely to be removed */
2913 #ifndef DATA64
2914 #define DATA64 uint64_t
2915 #define DATA32 uint32_t
2916 #define DATA16 uint16_t
2917 #define DATA8 uint8_t
2918 #endif
2919 
2920 /* *INDENT-OFF* */
2921 
2922 typedef enum {
2923  IMLIB_LOAD_ERROR_NONE,
2924  IMLIB_LOAD_ERROR_FILE_DOES_NOT_EXIST,
2925  IMLIB_LOAD_ERROR_FILE_IS_DIRECTORY,
2926  IMLIB_LOAD_ERROR_PERMISSION_DENIED_TO_READ,
2927  IMLIB_LOAD_ERROR_NO_LOADER_FOR_FILE_FORMAT,
2928  IMLIB_LOAD_ERROR_PATH_TOO_LONG,
2929  IMLIB_LOAD_ERROR_PATH_COMPONENT_NON_EXISTANT,
2930  IMLIB_LOAD_ERROR_PATH_COMPONENT_NOT_DIRECTORY,
2931  IMLIB_LOAD_ERROR_PATH_POINTS_OUTSIDE_ADDRESS_SPACE,
2932  IMLIB_LOAD_ERROR_TOO_MANY_SYMBOLIC_LINKS,
2933  IMLIB_LOAD_ERROR_OUT_OF_MEMORY,
2934  IMLIB_LOAD_ERROR_OUT_OF_FILE_DESCRIPTORS,
2935  IMLIB_LOAD_ERROR_PERMISSION_DENIED_TO_WRITE,
2936  IMLIB_LOAD_ERROR_OUT_OF_DISK_SPACE,
2937  IMLIB_LOAD_ERROR_UNKNOWN,
2938  IMLIB_LOAD_ERROR_IMAGE_READ,
2939  IMLIB_LOAD_ERROR_IMAGE_FRAME
2940 } Imlib_Load_Error;
2941 
2956 /* IMLIB2_DEPRECATED */
2957 EAPI Imlib_Image imlib_load_image_with_error_return(const char *file,
2958  Imlib_Load_Error *
2959  error_return);
2960 
2972 /* IMLIB2_DEPRECATED */
2973 EAPI void imlib_save_image_with_error_return(const char *file,
2974  Imlib_Load_Error *
2975  error_return);
2976 
2979 IMLIB2_DEPRECATED
2980 EAPI void imlib_image_set_irrelevant_border(char irrelevant);
2981 
2984 IMLIB2_DEPRECATED
2985 EAPI void imlib_image_set_irrelevant_alpha(char irrelevant);
2986 
2987 /* Encodings known to Imlib2 (so far) */
2988 typedef enum {
2989  IMLIB_TTF_ENCODING_ISO_8859_1,
2990  IMLIB_TTF_ENCODING_ISO_8859_2,
2991  IMLIB_TTF_ENCODING_ISO_8859_3,
2992  IMLIB_TTF_ENCODING_ISO_8859_4,
2993  IMLIB_TTF_ENCODING_ISO_8859_5
2994 } Imlib_TTF_Encoding;
2995 
2998 IMLIB2_DEPRECATED
2999 EAPI void imlib_context_set_TTF_encoding(Imlib_TTF_Encoding encoding);
3000 
3003 IMLIB2_DEPRECATED
3004 EAPI Imlib_TTF_Encoding imlib_context_get_TTF_encoding(void);
3005 
3006 #ifdef __cplusplus
3007 }
3008 #endif
3009 /* *INDENT-ON* */
3010 #endif
EAPI void imlib_image_query_pixel(int x, int y, Imlib_Color *color_return)
EAPI Imlib_Color_Modifier imlib_create_color_modifier(void)
EAPI void imlib_image_copy_alpha_to_image(Imlib_Image image_source, int x, int y)
IMLIB2_DEPRECATED EAPI Imlib_TTF_Encoding imlib_context_get_TTF_encoding(void)
EAPI void imlib_add_color_to_color_range(int distance_away)
EAPI void imlib_image_put_back_data(uint32_t *data)
EAPI void imlib_image_query_pixel_hlsa(int x, int y, float *hue, float *lightness, float *saturation, int *alpha)
EAPI void imlib_updates_get_coordinates(Imlib_Updates updates, int *x_return, int *y_return, int *width_return, int *height_return)
EAPI void imlib_image_tile(void)
EAPI Imlib_Image imlib_create_cropped_scaled_image(int src_x, int src_y, int src_width, int src_height, int dst_width, int dst_height)
EAPI void imlib_context_push(Imlib_Context context)
EAPI void imlib_image_query_pixel_hsva(int x, int y, float *hue, float *saturation, float *value, int *alpha)
EAPI void imlib_updates_set_coordinates(Imlib_Updates updates, int x, int y, int width, int height)
EAPI ImlibPolygon imlib_polygon_new(void)
EAPI int imlib_get_ximage_cache_count_used(void)
EAPI void imlib_context_set_cliprect(int x, int y, int w, int h)
EAPI Imlib_Operation imlib_context_get_operation(void)
EAPI void imlib_render_image_on_drawable(int x, int y)
EAPI Imlib_Updates imlib_updates_merge_for_rendering(Imlib_Updates updates, int w, int h)
EAPI void imlib_image_flip_horizontal(void)
EAPI void imlib_free_font(void)
EAPI void imlib_text_draw_with_return_metrics(int x, int y, const char *text, int *width_return, int *height_return, int *horizontal_advance_return, int *vertical_advance_return)
EAPI Imlib_Image imlib_load_image(const char *file)
EAPI void imlib_context_set_mask_alpha_threshold(int mask_alpha_threshold)
EAPI int imlib_get_maximum_font_descent(void)
EAPI void imlib_free_pixmap_and_mask(Pixmap pixmap)
EAPI uint32_t * imlib_image_get_data(void)
EAPI void imlib_image_set_border(Imlib_Border *border)
EAPI void imlib_context_set_color(int red, int green, int blue, int alpha)
EAPI void imlib_image_scroll_rect(int x, int y, int width, int height, int delta_x, int delta_y)
EAPI int imlib_get_error(void)
EAPI double imlib_context_get_angle(void)
EAPI Imlib_Updates imlib_update_append_rect(Imlib_Updates updates, int x, int y, int w, int h)
EAPI int imlib_get_color_usage(void)
EAPI Imlib_Image imlib_load_image_immediately(const char *file)
EAPI char imlib_image_has_alpha(void)
EAPI Visual * imlib_context_get_visual(void)
EAPI void imlib_context_set_mask(Pixmap mask)
EAPI void imlib_context_free(Imlib_Context context)
EAPI void imlib_image_flip_vertical(void)
EAPI void imlib_apply_color_modifier_to_rectangle(int x, int y, int width, int height)
EAPI void imlib_context_set_dither_mask(char dither_mask)
EAPI void imlib_image_draw_ellipse(int xc, int yc, int a, int b)
EAPI int imlib_get_ximage_cache_count_max(void)
EAPI Imlib_Image imlib_create_image_from_ximage(XImage *image, XImage *mask, int x, int y, int width, int height, char need_to_grab_x)
EAPI void imlib_flush_font_cache(void)
EAPI void imlib_modify_color_modifier_brightness(double brightness_value)
EAPI void imlib_save_image_with_error_return(const char *file, Imlib_Load_Error *error_return)
EAPI int imlib_get_font_cache_size(void)
EAPI void imlib_context_set_color_cmya(int cyan, int magenta, int yellow, int alpha)
EAPI Imlib_Color_Modifier imlib_context_get_color_modifier(void)
EAPI void imlib_image_clear_color(int r, int g, int b, int a)
EAPI void imlib_polygon_get_bounds(ImlibPolygon poly, int *px1, int *py1, int *px2, int *py2)
EAPI unsigned char imlib_polygon_contains_point(ImlibPolygon poly, int x, int y)
EAPI Imlib_Image imlib_create_image_using_data(int width, int height, uint32_t *data)
EAPI void imlib_free_image_and_decache(void)
EAPI uint32_t imlib_render_get_pixel_color(void)
EAPI uint32_t * imlib_image_get_data_for_reading_only(void)
EAPI char imlib_context_get_dither(void)
EAPI void imlib_image_fill_polygon(ImlibPolygon poly)
EAPI Display * imlib_context_get_display(void)
EAPI int imlib_get_ximage_cache_size_max(void)
EAPI Imlib_Image imlib_load_image_frame_mem(const char *file, int frame, const void *data, size_t size)
EAPI int imlib_image_get_attached_value(const char *key)
EAPI void imlib_context_get_color_hlsa(float *hue, float *lightness, float *saturation, int *alpha)
EAPI char imlib_context_get_blend(void)
EAPI void imlib_set_cache_size(int bytes)
EAPI void imlib_get_color_modifier_tables(uint8_t *red_table, uint8_t *green_table, uint8_t *blue_table, uint8_t *alpha_table)
EAPI void imlib_context_set_color_range(Imlib_Color_Range color_range)
EAPI Imlib_Context imlib_context_get(void)
EAPI void imlib_context_set_drawable(Drawable drawable)
EAPI int imlib_context_get_mask_alpha_threshold(void)
EAPI Imlib_Image imlib_create_image_using_data_and_memory_function(int width, int height, uint32_t *data, Imlib_Image_Data_Memory_Function func)
EAPI int imlib_get_ximage_cache_size_used(void)
EAPI void * imlib_image_get_attached_data(const char *key)
EAPI int imlib_text_get_index_and_location(const char *text, int x, int y, int *char_x_return, int *char_y_return, int *char_width_return, int *char_height_return)
EAPI Imlib_Image imlib_create_image_from_drawable(Pixmap mask, int x, int y, int width, int height, char need_to_grab_x)
EAPI void imlib_image_blur(int radius)
EAPI Imlib_Image imlib_load_image_mem(const char *file, const void *data, size_t size)
EAPI Imlib_Image imlib_load_image_immediately_without_cache(const char *file)
EAPI Imlib_Color_Range imlib_create_color_range(void)
EAPI Imlib_Progress_Function imlib_context_get_progress_function(void)
EAPI void imlib_apply_color_modifier(void)
EAPI Imlib_Updates imlib_image_draw_line(int x1, int y1, int x2, int y2, char make_updates)
EAPI void imlib_context_disconnect_display(void)
EAPI Imlib_Updates imlib_updates_append_updates(Imlib_Updates updates, Imlib_Updates appended_updates)
EAPI void imlib_remove_path_from_font_path(const char *path)
EAPI void imlib_render_image_part_on_drawable_at_size(int src_x, int src_y, int src_width, int src_height, int dst_x, int dst_y, int dst_width, int dst_height)
EAPI Imlib_Font imlib_get_prev_font_in_fallback_chain(Imlib_Font fn)
EAPI int imlib_get_text_inset(const char *text)
EAPI char ** imlib_list_font_path(int *number_return)
EAPI void imlib_context_set_progress_granularity(char progress_granularity)
EAPI Imlib_Updates imlib_updates_merge(Imlib_Updates updates, int w, int h)
EAPI Imlib_Image imlib_create_image_using_copied_data(int width, int height, uint32_t *data)
EAPI void imlib_image_draw_rectangle(int x, int y, int width, int height)
EAPI void imlib_context_set_operation(Imlib_Operation operation)
EAPI void imlib_get_text_size(const char *text, int *width_return, int *height_return)
EAPI void imlib_context_set_color_modifier(Imlib_Color_Modifier color_modifier)
EAPI void imlib_image_set_changes_on_disk(void)
EAPI void imlib_render_pixmaps_for_whole_image(Pixmap *pixmap_return, Pixmap *mask_return)
EAPI Imlib_Context imlib_context_new(void)
EAPI void imlib_context_get_color_cmya(int *cyan, int *magenta, int *yellow, int *alpha)
EAPI char imlib_context_get_anti_alias(void)
EAPI Imlib_Updates imlib_updates_clone(Imlib_Updates updates)
EAPI Imlib_Image imlib_load_image_without_cache(const char *file)
IMLIB2_DEPRECATED EAPI void imlib_context_set_TTF_encoding(Imlib_TTF_Encoding encoding)
EAPI Imlib_Updates imlib_updates_init(void)
EAPI Imlib_Filter imlib_context_get_filter(void)
EAPI void imlib_image_get_frame_info(Imlib_Frame_Info *info)
EAPI void imlib_flush_loaders(void)
EAPI void imlib_image_fill_color_range_rectangle(int x, int y, int width, int height, double angle)
EAPI int imlib_image_get_height(void)
EAPI void imlib_image_set_has_alpha(char has_alpha)
EAPI Imlib_Image imlib_create_rotated_image(double angle)
IMLIB2_DEPRECATED EAPI void imlib_image_set_irrelevant_border(char irrelevant)
EAPI Pixmap imlib_context_get_mask(void)
EAPI Drawable imlib_context_get_drawable(void)
EAPI void imlib_context_set_angle(double angle)
EAPI Imlib_Font imlib_context_get_font(void)
EAPI void imlib_context_set_blend(char blend)
EAPI void imlib_image_filter(void)
EAPI Visual * imlib_get_best_visual(Display *display, int screen, int *depth_return)
EAPI Imlib_Color_Range imlib_context_get_color_range(void)
EAPI void imlib_context_set_dither(char dither)
EAPI void imlib_set_ximage_cache_size_max(int bytes)
EAPI void imlib_context_get_cliprect(int *x, int *y, int *w, int *h)
EAPI void imlib_image_remove_attached_data_value(const char *key)
EAPI void imlib_image_tile_horizontal(void)
EAPI void imlib_free_image(void)
EAPI void imlib_context_set_progress_function(Imlib_Progress_Function progress_function)
EAPI Imlib_Font imlib_load_font(const char *font_name)
EAPI void imlib_image_copy_alpha_rectangle_to_image(Imlib_Image image_source, int src_x, int src_y, int src_width, int src_height, int dst_x, int dst_y)
EAPI Imlib_Image imlib_create_cropped_image(int x, int y, int width, int height)
EAPI void imlib_text_get_location_at_index(const char *text, int index, int *char_x_return, int *char_y_return, int *char_width_return, int *char_height_return)
EAPI Imlib_Image imlib_create_scaled_image_from_drawable(Pixmap mask, int src_x, int src_y, int src_width, int src_height, int dst_width, int dst_height, char need_to_grab_x, char get_mask_from_shape)
EAPI void imlib_context_pop(void)
EAPI void imlib_save_image_with_errno_return(const char *file, int *error_return)
EAPI void imlib_image_fill_ellipse(int xc, int yc, int a, int b)
EAPI void imlib_context_set_visual(Visual *visual)
EAPI void imlib_render_image_on_drawable_at_angle(int src_x, int src_y, int src_width, int src_height, int dst_x, int dst_y, int angle_x, int angle_y)
EAPI void imlib_free_font_list(char **font_list, int number)
EAPI void imlib_image_get_border(Imlib_Border *border)
EAPI void imlib_image_draw_polygon(ImlibPolygon poly, unsigned char closed)
EAPI Imlib_Image imlib_create_image(int width, int height)
EAPI int imlib_get_font_descent(void)
EAPI char imlib_context_get_dither_mask(void)
EAPI Imlib_Filter imlib_create_filter(int initsize)
EAPI void imlib_context_set_display(Display *display)
EAPI void imlib_context_set_color_hlsa(float hue, float lightness, float saturation, int alpha)
EAPI Imlib_Font imlib_get_next_font_in_fallback_chain(Imlib_Font fn)
EAPI void imlib_context_set_anti_alias(char anti_alias)
EAPI void imlib_context_set_filter(Imlib_Filter filter)
EAPI void imlib_image_tile_vertical(void)
EAPI Imlib_Color * imlib_context_get_imlib_color(void)
EAPI Colormap imlib_context_get_colormap(void)
EAPI int imlib_get_visual_depth(Display *display, Visual *visual)
EAPI void imlib_image_fill_hsva_color_range_rectangle(int x, int y, int width, int height, double angle)
EAPI Imlib_Updates imlib_updates_get_next(Imlib_Updates updates)
EAPI Imlib_Image imlib_load_image_with_errno_return(const char *file, int *error_return)
EAPI Imlib_Image imlib_context_get_image(void)
EAPI char imlib_copy_drawable_to_image(Pixmap mask, int src_x, int src_y, int src_width, int src_height, int dst_x, int dst_y, char need_to_grab_x)
EAPI void imlib_image_set_irrelevant_format(char irrelevant)
EAPI void imlib_context_set_colormap(Colormap colormap)
EAPI void imlib_image_flip_diagonal(void)
EAPI void imlib_set_font_cache_size(int bytes)
EAPI Imlib_Image imlib_clone_image(void)
EAPI void imlib_add_path_to_font_path(const char *path)
EAPI void imlib_image_orientate(int orientation)
EAPI void imlib_updates_free(Imlib_Updates updates)
EAPI void imlib_set_color_usage(int max)
EAPI void imlib_image_copy_rect(int x, int y, int width, int height, int new_x, int new_y)
EAPI void imlib_reset_color_modifier(void)
EAPI void imlib_render_image_on_drawable_at_size(int x, int y, int width, int height)
EAPI void imlib_polygon_add_point(ImlibPolygon poly, int x, int y)
EAPI Imlib_Image imlib_load_image_fd(int fd, const char *file)
EAPI void imlib_text_draw(int x, int y, const char *text)
EAPI Imlib_Updates imlib_image_draw_pixel(int x, int y, char make_updates)
EAPI void imlib_rotate_image_from_buffer(double angle, Imlib_Image src_image)
EAPI int imlib_get_font_ascent(void)
EAPI int imlib_insert_font_into_fallback_chain(Imlib_Font font, Imlib_Font fallback_font)
EAPI void imlib_context_set_direction(Imlib_Text_Direction direction)
EAPI void imlib_remove_font_from_fallback_chain(Imlib_Font fallback_font)
IMLIB2_DEPRECATED EAPI void imlib_image_set_irrelevant_alpha(char irrelevant)
EAPI void imlib_free_color_modifier(void)
EAPI void imlib_context_get_color_hsva(float *hue, float *saturation, float *value, int *alpha)
EAPI const char * imlib_image_get_filename(void)
EAPI void imlib_image_clear(void)
EAPI const char * imlib_strerror(int err)
EAPI char imlib_context_get_progress_granularity(void)
EAPI Imlib_Image imlib_load_image_frame(const char *file, int frame)
EAPI int imlib_get_cache_used(void)
EAPI void imlib_get_text_advance(const char *text, int *horizontal_advance_return, int *vertical_advance_return)
EAPI void imlib_free_filter(void)
EAPI int imlib_version(void)
EAPI void imlib_context_set_image_data_memory_function(Imlib_Image_Data_Memory_Function memory_function)
EAPI void imlib_save_image_fd(int fd, const char *file)
EAPI Imlib_Text_Direction imlib_context_get_direction(void)
EAPI void imlib_context_set_color_hsva(float hue, float saturation, float value, int alpha)
EAPI Imlib_Image_Data_Memory_Function imlib_context_get_image_data_memory_function(void)
EAPI void imlib_modify_color_modifier_gamma(double gamma_value)
EAPI void imlib_image_fill_rectangle(int x, int y, int width, int height)
EAPI void imlib_polygon_free(ImlibPolygon poly)
EAPI void imlib_context_set_font(Imlib_Font font)
EAPI void imlib_set_ximage_cache_count_max(int count)
EAPI void imlib_blend_image_onto_image_at_angle(Imlib_Image src_image, char merge_alpha, int src_x, int src_y, int src_width, int src_height, int dst_x, int dst_y, int angle_x, int angle_y)
EAPI int imlib_get_maximum_font_ascent(void)
EAPI char * imlib_image_format(void)
EAPI void imlib_image_attach_data_value(const char *key, void *data, int value, Imlib_Data_Destructor_Function destructor_function)
EAPI void imlib_render_pixmaps_for_whole_image_at_size(Pixmap *pixmap_return, Pixmap *mask_return, int width, int height)
EAPI int imlib_get_cache_size(void)
EAPI void imlib_context_set_image(Imlib_Image image)
EAPI void imlib_modify_color_modifier_contrast(double contrast_value)
EAPI void imlib_set_color_modifier_tables(uint8_t *red_table, uint8_t *green_table, uint8_t *blue_table, uint8_t *alpha_table)
EAPI void imlib_save_image(const char *file)
EAPI void imlib_image_set_format(const char *format)
EAPI void imlib_free_color_range(void)
EAPI void imlib_render_image_on_drawable_skewed(int src_x, int src_y, int src_width, int src_height, int dst_x, int dst_y, int h_angle_x, int h_angle_y, int v_angle_x, int v_angle_y)
EAPI void imlib_image_sharpen(int radius)
EAPI void imlib_context_get_color(int *red, int *green, int *blue, int *alpha)
EAPI void imlib_blend_image_onto_image(Imlib_Image src_image, char merge_alpha, int src_x, int src_y, int src_width, int src_height, int dst_x, int dst_y, int dst_width, int dst_height)
EAPI char ** imlib_list_fonts(int *number_return)
EAPI Imlib_Image imlib_load_image_with_error_return(const char *file, Imlib_Load_Error *error_return)
EAPI void imlib_blend_image_onto_image_skewed(Imlib_Image src_image, char merge_alpha, int src_x, int src_y, int src_width, int src_height, int dst_x, int dst_y, int h_angle_x, int h_angle_y, int v_angle_x, int v_angle_y)
EAPI int imlib_image_get_width(void)
EAPI void imlib_image_query_pixel_cmya(int x, int y, int *cyan, int *magenta, int *yellow, int *alpha)
EAPI void imlib_image_remove_and_free_attached_data_value(const char *key)