dirty redraw and SDL framebuffer example
[windtk] / src / wtimpl.h
1 #ifndef WTIMPL_H_
2 #define WTIMPL_H_
3
4 #include <stdlib.h>
5 #include "windtk.h"
6 #include "widget.h"
7
8 enum {
9         COL_FG,
10         COL_BG,
11         COL_BGHI,
12         COL_BGLO,
13         COL_FRM,
14         COL_FRMHI,
15         COL_FRMLO,
16         COL_FFRM,
17         COL_FFRMHI,
18         COL_FFRMLO,
19
20         NUM_COLORS
21 };
22
23 enum { FRM_OUT, FRM_IN, FRM_NOFILL = 0x8000 };
24 #define FRMSTYLE(x)     ((x) & 0xff)
25
26 #define MAX_UPD_RECTS   16
27
28 struct wt_context {
29         struct wt_graphics gfx;
30         struct wt_rect vp;
31         wt_widget *root;
32         struct wt_theme *theme;
33
34         int colors[NUM_COLORS];
35
36         wt_widget *focuswin;
37
38         struct wt_rect upd[MAX_UPD_RECTS];
39         int num_upd;
40 };
41
42 extern struct wt_context *wt_curctx_;
43 #define wt      wt_curctx_
44
45 extern void *(*wt_alloc)(size_t sz);
46 extern void (*wt_free)(void *p);
47
48 void *wt_zalloc(size_t sz);
49
50 void wt_gfx_color(int cidx);
51 void wt_gfx_fillrect(struct wt_rect *r);
52 void wt_gfx_frame(struct wt_rect *r, int style, int basecol);
53 void wt_gfx_line(int x0, int y0, int x1, int y1);
54
55 void calc_window_rect(struct wt_rect *r, wt_widget *w);
56
57 #endif  /* WTIMPL_H_ */