|
0
|
1 /* See LICENSE file for copyright and license details. */ |
|
|
2 |
|
|
3 typedef struct { |
|
|
4 Cursor cursor; |
|
|
5 } Cur; |
|
|
6 |
|
|
7 typedef struct Fnt { |
|
|
8 Display *dpy; |
|
|
9 unsigned int h; |
|
|
10 XftFont *xfont; |
|
|
11 FcPattern *pattern; |
|
|
12 struct Fnt *next; |
|
|
13 } Fnt; |
|
|
14 |
|
|
15 enum { ColFg, ColBg, ColBorder }; /* Clr scheme index */ |
|
|
16 typedef XftColor Clr; |
|
|
17 |
|
|
18 typedef struct { |
|
|
19 unsigned int w, h; |
|
|
20 Display *dpy; |
|
|
21 int screen; |
|
|
22 Window root; |
|
|
23 Drawable drawable; |
|
|
24 GC gc; |
|
|
25 Clr *scheme; |
|
|
26 Fnt *fonts; |
|
|
27 } Drw; |
|
|
28 |
|
|
29 /* Drawable abstraction */ |
|
|
30 Drw *drw_create(Display *dpy, int screen, Window win, unsigned int w, unsigned int h); |
|
|
31 void drw_resize(Drw *drw, unsigned int w, unsigned int h); |
|
|
32 void drw_free(Drw *drw); |
|
|
33 |
|
|
34 /* Fnt abstraction */ |
|
|
35 Fnt *drw_fontset_create(Drw* drw, const char *fonts[], size_t fontcount); |
|
|
36 void drw_fontset_free(Fnt* set); |
|
|
37 unsigned int drw_fontset_getwidth(Drw *drw, const char *text); |
|
|
38 unsigned int drw_fontset_getwidth_clamp(Drw *drw, const char *text, unsigned int n); |
|
|
39 void drw_font_getexts(Fnt *font, const char *text, unsigned int len, unsigned int *w, unsigned int *h); |
|
|
40 |
|
|
41 /* Colorscheme abstraction */ |
|
|
42 void drw_clr_create(Drw *drw, Clr *dest, const char *clrname); |
|
|
43 void drw_clr_free(Drw *drw, Clr *c); |
|
|
44 Clr *drw_scm_create(Drw *drw, const char *clrnames[], size_t clrcount); |
|
|
45 void drw_scm_free(Drw *drw, Clr *scm, size_t clrcount); |
|
|
46 |
|
|
47 /* Cursor abstraction */ |
|
|
48 Cur *drw_cur_create(Drw *drw, int shape); |
|
|
49 void drw_cur_free(Drw *drw, Cur *cursor); |
|
|
50 |
|
|
51 /* Drawing context manipulation */ |
|
|
52 void drw_setfontset(Drw *drw, Fnt *set); |
|
|
53 void drw_setscheme(Drw *drw, Clr *scm); |
|
|
54 |
|
|
55 /* Drawing functions */ |
|
|
56 void drw_rect(Drw *drw, int x, int y, unsigned int w, unsigned int h, int filled, int invert); |
|
|
57 int drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lpad, const char *text, int invert); |
|
|
58 |
|
|
59 /* Map functions */ |
|
|
60 void drw_map(Drw *drw, Window win, int x, int y, unsigned int w, unsigned int h); |