move around - flatter.
[profile/ivi/evas.git] / src / modules / engines / cairo_x11 / evas_x_main.c
1 #include <X11/Xlib.h>
2 #include "evas_common.h"
3 #include "evas_private.h"
4 #include "evas_engine.h"
5 #include "Evas_Engine_Cairo_X11.h"
6 #include "evas_cairo_common.h"
7
8 static Evas_Cairo_X11_Window *_evas_cairo_x11_window = NULL;
9
10 Evas_Cairo_X11_Window *
11 evas_engine_cairo_x11_window_new(Display *disp,
12                                  Window   win,
13                                  int      screen,
14                                  Visual  *vis,
15                                  Colormap cmap,
16                                  int      depth,
17                                  int      w,
18                                  int      h)
19 {
20    Evas_Cairo_X11_Window *cw;
21
22    cw = calloc(1, sizeof(Evas_Cairo_X11_Window));
23    if (!cw) return NULL;
24    cw->disp = disp;
25    cw->win = win;
26    cw->screen = screen;
27    cw->visual = vis;
28    cw->colormap = cmap;
29    cw->depth = depth;
30    cw->surface = cairo_xlib_surface_create(disp, win, vis, w, h);
31    return cw;
32 }
33
34 void
35 evas_engine_cairo_x11_window_free(Evas_Cairo_X11_Window *cw)
36 {
37    if (cw == _evas_cairo_x11_window) _evas_cairo_x11_window = NULL;
38    cairo_surface_destroy(cw->surface);
39    free(cw);
40 }
41
42 void
43 evas_engine_cairo_x11_window_use(Evas_Cairo_X11_Window *cw)
44 {
45    if (_evas_cairo_x11_window != cw)
46      {
47         _evas_cairo_x11_window = cw;
48      }
49 }
50
51 void
52 evas_engine_cairo_x11_window_size_set(Evas_Cairo_X11_Window *cw, int w, int h)
53 {
54    cairo_xlib_surface_set_size(cw->surface, w, h);
55 }