8 #include <xcb/render.h>
9 #include <xcb/xcb_image.h>
11 typedef struct _Xcb_Image_Info Xcb_Image_Info;
12 typedef struct _Xcb_Image_Image Xcb_Image_Image;
13 typedef struct _Xcb_Render_Surface Xcb_Render_Surface;
15 struct _Xcb_Image_Info
17 xcb_connection_t *conn;
24 unsigned char can_do_shm;
25 xcb_render_pictforminfo_t *fmt32;
26 xcb_render_pictforminfo_t *fmt24;
27 xcb_render_pictforminfo_t *fmt8;
28 xcb_render_pictforminfo_t *fmt4;
29 xcb_render_pictforminfo_t *fmt1;
34 Xcb_Render_Surface *mul;
38 struct _Xcb_Image_Image
40 Xcb_Image_Info *xcbinf;
42 xcb_shm_segment_info_t *shm_info;
48 unsigned char available : 1;
51 struct _Xcb_Render_Surface
53 Xcb_Image_Info *xcbinf;
57 xcb_render_pictforminfo_t *fmt;
59 xcb_render_picture_t pic;
60 unsigned char alpha : 1;
61 unsigned char allocated : 1;
62 unsigned char bordered : 1;
65 /* ximage support calls (ximage vs xshmimage, cache etc.) */
66 Xcb_Image_Info *_xr_image_info_get(xcb_connection_t *conn, xcb_drawable_t draw, xcb_visualid_t vis);
67 void _xr_image_info_free(Xcb_Image_Info *xcbinf);
68 void _xr_image_info_pool_flush(Xcb_Image_Info *xcbinf, int max_num, int max_mem);
69 Xcb_Image_Image *_xr_image_new(Xcb_Image_Info *xcbinf, int w, int h, int depth);
70 void _xr_image_free(Xcb_Image_Image *xim);
71 void _xr_image_put(Xcb_Image_Image *xim, xcb_drawable_t draw, int x, int y, int w, int h);
73 /* xrender support calls */
74 Xcb_Render_Surface *_xr_render_surface_new(Xcb_Image_Info *xcbinf, int w, int h, xcb_render_pictforminfo_t *fmt, int alpha);
75 Xcb_Render_Surface *_xr_render_surface_adopt(Xcb_Image_Info *xcbinf, xcb_drawable_t draw, int w, int h, int alpha);
76 Xcb_Render_Surface *_xr_render_surface_format_adopt(Xcb_Image_Info *xcbinf, xcb_drawable_t draw, int w, int h, xcb_render_pictforminfo_t *fmt, int alpha);
77 void _xr_render_surface_free(Xcb_Render_Surface *rs);
78 void _xr_render_surface_repeat_set(Xcb_Render_Surface *rs, int repeat);
79 void _xr_render_surface_solid_rectangle_set(Xcb_Render_Surface *rs, int r, int g, int b, int a, int x, int y, int w, int h);
80 void _xr_render_surface_argb_pixels_fill(Xcb_Render_Surface *rs, int sw, int sh, void *pixels, int x, int y, int w, int h);
81 void _xr_render_surface_rgb_pixels_fill(Xcb_Render_Surface *rs, int sw, int sh, void *pixels, int x, int y, int w, int h);
82 void _xr_render_surface_clips_set(Xcb_Render_Surface *rs, RGBA_Draw_Context *dc, int rx, int ry, int rw, int rh);
83 void _xr_render_surface_composite(Xcb_Render_Surface *srs, Xcb_Render_Surface *drs, RGBA_Draw_Context *dc, int sx, int sy, int sw, int sh, int x, int y, int w, int h, int smooth);
84 void _xr_render_surface_copy(Xcb_Render_Surface *srs, Xcb_Render_Surface *drs, int sx, int sy, int x, int y, int w, int h);
85 void _xr_render_surface_rectangle_draw(Xcb_Render_Surface *rs, RGBA_Draw_Context *dc, int x, int y, int w, int h);
86 void _xr_render_surface_line_draw(Xcb_Render_Surface *rs, RGBA_Draw_Context *dc, int x1, int y1, int x2, int y2);
87 void _xre_poly_draw(Xcb_Render_Surface *rs, RGBA_Draw_Context *dc, RGBA_Polygon_Point *points);
90 typedef struct _XR_Image XR_Image;
94 Xcb_Image_Info *xcbinf;
101 Xcb_Render_Surface *surface;
106 RGBA_Image_Loadopts load_opts;
107 unsigned char alpha : 1;
108 unsigned char dirty : 1;
109 unsigned char free_data : 1;
112 XR_Image *_xre_image_load(Xcb_Image_Info *xcbinf, const char *file, const char *key, Evas_Image_Load_Opts *lo);
113 XR_Image *_xre_image_new_from_data(Xcb_Image_Info *xcbinf, int w, int h, void *data);
114 XR_Image *_xre_image_new_from_copied_data(Xcb_Image_Info *xcbinf, int w, int h, void *data);
115 XR_Image *_xre_image_new(Xcb_Image_Info *xcbinf, int w, int h);
116 void _xre_image_resize(XR_Image *im, int w, int h);
117 void _xre_image_free(XR_Image *im);
118 void _xre_image_region_dirty(XR_Image *im, int x, int y, int w, int h);
119 void _xre_image_dirty(XR_Image *im);
120 XR_Image *_xre_image_copy(XR_Image *im);
121 void *_xre_image_data_get(XR_Image *im);
122 XR_Image *_xre_image_data_find(void *data);
123 void _xre_image_data_put(XR_Image *im, void *data);
124 void _xre_image_alpha_set(XR_Image *im, int alpha);
125 int _xre_image_alpha_get(XR_Image *im);
126 void _xre_image_border_set(XR_Image *im, int l, int r, int t, int b);
127 void _xre_image_border_get(XR_Image *im, int *l, int *r, int *t, int *b);
128 void _xre_image_surface_gen(XR_Image *im);
129 void _xre_image_cache_set(int size);
130 int _xre_image_cache_get(void);
132 typedef struct _XR_Font_Surface XR_Font_Surface;
134 struct _XR_Font_Surface
136 Xcb_Image_Info *xcbinf;
141 xcb_render_picture_t pic;
144 XR_Font_Surface *_xre_font_surface_new (Xcb_Image_Info *xcbinf,
145 RGBA_Font_Glyph *fg);
147 void _xre_font_surface_free (XR_Font_Surface *fs);
149 void _xre_font_surface_draw (Xcb_Image_Info *xcbinf,
151 RGBA_Draw_Context *dc,
156 typedef struct _XR_Gradient XR_Gradient;
160 Xcb_Image_Info *xcbinf;
161 Xcb_Render_Surface *surface;
163 unsigned char changed;
168 XR_Gradient *_xre_gradient_new(Xcb_Image_Info *xcbinf);
169 void _xre_gradient_free(XR_Gradient *gr);
170 void _xre_gradient_color_stop_add(XR_Gradient *gr, int r, int g, int b, int a, int delta);
171 void _xre_gradient_alpha_stop_add(XR_Gradient *gr, int a, int delta);
172 void _xre_gradient_color_data_set(XR_Gradient *gr, void *map, int len, int has_alpha);
173 void _xre_gradient_alpha_data_set(XR_Gradient *gr, void *alpha_map, int len);
174 void _xre_gradient_clear(XR_Gradient *gr);
175 void _xre_gradient_fill_set(XR_Gradient *gr, int x, int y, int w, int h);
176 void _xre_gradient_fill_angle_set(XR_Gradient *gr, double angle);
177 void _xre_gradient_fill_spread_set(XR_Gradient *gr, int spread);
178 void _xre_gradient_angle_set(XR_Gradient *gr, double angle);
179 void _xre_gradient_offset_set(XR_Gradient *gr, float offset);
180 void _xre_gradient_direction_set(XR_Gradient *gr, int direction);
181 void _xre_gradient_type_set(XR_Gradient *gr, char *name, char *params);
182 void _xre_gradient_draw(Xcb_Render_Surface *rs, RGBA_Draw_Context *dc, XR_Gradient *gr, int x, int y, int w, int h);