6600c5d5dd70e7a07cbfe19f3350f977dc5e4490
[platform/upstream/efl.git] / src / modules / evas / engines / software_x11 / Evas_Engine_Software_X11.h
1 #ifndef _EVAS_ENGINE_SOFTWARE_X11_H
2 # define _EVAS_ENGINE_SOFTWARE_X11_H
3
4 typedef enum
5 {
6    EVAS_ENGINE_INFO_SOFTWARE_X11_BACKEND_XLIB,
7    EVAS_ENGINE_INFO_SOFTWARE_X11_BACKEND_XCB
8 } Evas_Engine_Info_Software_X11_Backend;
9
10 typedef struct _Evas_Engine_Info_Software_X11 Evas_Engine_Info_Software_X11;
11
12 struct _Evas_Engine_Info_Software_X11
13 {
14    /* PRIVATE - don't mess with this baby or evas will poke its tongue out */
15    /* at you and make nasty noises */
16    Evas_Engine_Info magic;
17
18    /* engine specific data & parameters it needs to set up */
19    struct 
20      {
21         Evas_Engine_Info_Software_X11_Backend backend;
22
23         void *connection, *screen;
24         unsigned int drawable, mask;
25         void *visual;
26         unsigned int colormap;
27         int depth, rotation;
28
29         Eina_Bool alloc_grayscale : 1;
30         Eina_Bool debug : 1;
31         Eina_Bool shape_dither : 1;
32         Eina_Bool destination_alpha : 1;
33         Eina_Bool track_mask_changes : 1;
34
35         int alloc_colors_max;
36      } info;
37
38    /* engine specific function calls to query stuff about the destination */
39    struct 
40      {
41         void *(*best_visual_get) (int backend, void *connection, int screen);
42         unsigned int (*best_colormap_get) (int backend, void *connection, int screen);
43         int (*best_depth_get) (int backend, void *connection, int screen);
44         void (*region_push_hook)(Evas *e, int x, int y, int w, int h, const void *pixels);
45      } func;
46
47    unsigned char mask_changed : 1;
48
49    /* non-blocking or blocking mode */
50    Evas_Engine_Render_Mode render_mode;
51 };
52
53 #endif