8 #include <xcb/xcb_image.h>
10 typedef struct _Outbuf Outbuf;
11 typedef struct _Outbuf_Region Outbuf_Region;
12 typedef struct _Xcb_Output_Buffer Xcb_Output_Buffer;
14 typedef enum _Outbuf_Depth Outbuf_Depth;
20 OUTBUF_DEPTH_RGB_16BPP_565_565_DITHERED,
21 OUTBUF_DEPTH_RGB_16BPP_555_555_DITHERED,
22 OUTBUF_DEPTH_RGB_16BPP_444_444_DITHERED,
23 OUTBUF_DEPTH_RGB_16BPP_565_444_DITHERED,
24 OUTBUF_DEPTH_RGB_32BPP_888_8888,
38 xcb_connection_t *conn;
42 xcb_visualtype_t *vis;
48 unsigned char swap : 1;
49 unsigned char bit_swap : 1;
55 /* 1 big buffer for updates - flush on idle_flush */
57 Evas_List *onebuf_regions;
59 /* a list of pending regions to write to the target */
60 Evas_List *pending_writes;
61 /* a list of previous frame pending regions to write to the target */
62 Evas_List *prev_pending_writes;
64 unsigned char mask_dither : 1;
65 unsigned char destination_alpha : 1;
66 unsigned char debug : 1;
67 unsigned char synced : 1;
73 Xcb_Output_Buffer *xcbob;
74 Xcb_Output_Buffer *mxcbob;
81 struct _Xcb_Output_Buffer
83 xcb_connection_t *connection;
85 xcb_shm_segment_info_t *shm_info;
96 void evas_software_xcb_x_init (void);
99 void evas_software_xcb_x_write_mask_line (Outbuf *buf,
100 Xcb_Output_Buffer *xcbob,
104 int evas_software_xcb_x_can_do_shm (xcb_connection_t *c,
105 xcb_screen_t *screen);
106 Xcb_Output_Buffer *evas_software_xcb_x_output_buffer_new (xcb_connection_t *c,
112 void evas_software_xcb_x_output_buffer_free (Xcb_Output_Buffer *xcbob,
114 void evas_software_xcb_x_output_buffer_paste (Xcb_Output_Buffer *xcbob,
120 DATA8 *evas_software_xcb_x_output_buffer_data (Xcb_Output_Buffer *xcbob,
121 int *bytes_per_line_ret);
122 int evas_software_xcb_x_output_buffer_depth (Xcb_Output_Buffer *xcbob);
123 int evas_software_xcb_x_output_buffer_byte_order(Xcb_Output_Buffer *xcbob);
124 int evas_software_xcb_x_output_buffer_bit_order (Xcb_Output_Buffer *xcbob);
128 void evas_software_xcb_x_color_init (void);
129 Convert_Pal *evas_software_xcb_x_color_allocate (xcb_connection_t *conn,
131 xcb_visualtype_t *vis,
132 Convert_Pal_Mode colors);
133 void evas_software_xcb_x_color_deallocate (xcb_connection_t *conn,
135 xcb_visualtype_t *vis,
139 void evas_software_xcb_outbuf_init (void);
140 void evas_software_xcb_outbuf_free (Outbuf *buf);
141 Outbuf *evas_software_xcb_outbuf_setup_x (int w,
145 xcb_connection_t *conn,
146 xcb_screen_t *screen,
148 xcb_visualtype_t *vis,
155 int destination_alpha);
156 RGBA_Image *evas_software_xcb_outbuf_new_region_for_update (Outbuf *buf,
165 void evas_software_xcb_outbuf_free_region_for_update (Outbuf *buf,
167 void evas_software_xcb_outbuf_flush (Outbuf *buf);
168 void evas_software_xcb_outbuf_idle_flush (Outbuf *buf);
169 void evas_software_xcb_outbuf_push_updated_region (Outbuf *buf,
175 void evas_software_xcb_outbuf_reconfigure (Outbuf *buf,
180 int evas_software_xcb_outbuf_get_width (Outbuf *buf);
181 int evas_software_xcb_outbuf_get_height (Outbuf *buf);
182 Outbuf_Depth evas_software_xcb_outbuf_get_depth (Outbuf *buf);
183 int evas_software_xcb_outbuf_get_rot (Outbuf *buf);
184 void evas_software_xcb_outbuf_drawable_set (Outbuf *buf, xcb_drawable_t draw);
185 void evas_software_xcb_outbuf_mask_set (Outbuf *buf, xcb_drawable_t mask);
186 void evas_software_xcb_outbuf_rotation_set (Outbuf *buf, int rot);
188 void evas_software_xcb_outbuf_debug_set (Outbuf *buf, int debug);
189 void evas_software_xcb_outbuf_debug_show (Outbuf *buf,
196 #endif /* EVAS_ENGINE_H */