Xinqi Bao's Git

finished libsl/drw integration
[dwm.git] / drw.h
1 /* See LICENSE file for copyright and license details. */
2
3 typedef struct {
4 unsigned long rgb;
5 } Clr;
6
7 typedef struct {
8 Cursor cursor;
9 } Cur;
10
11 typedef struct {
12 int ascent;
13 int descent;
14 unsigned int h;
15 XFontSet set;
16 XFontStruct *xfont;
17 } Fnt;
18
19 typedef struct {
20 Clr *fg;
21 Clr *bg;
22 Clr *border;
23 } Theme;
24
25 typedef struct {
26 unsigned int w, h;
27 Display *dpy;
28 int screen;
29 Window root;
30 Drawable drawable;
31 GC gc;
32 Theme *theme;
33 Fnt *font;
34 } Drw;
35
36 typedef struct {
37 unsigned int w;
38 unsigned int h;
39 } Extnts;
40
41 /* Drawable abstraction */
42 Drw *drw_create(Display *dpy, int screen, Window win, unsigned int w, unsigned int h);
43 void drw_resize(Drw *drw, unsigned int w, unsigned int h);
44 void drw_free(Drw *drw);
45
46 /* Fnt abstraction */
47 Fnt *drw_font_create(Display *dpy, const char *fontname);
48 void drw_font_free(Display *dpy, Fnt *font);
49 void drw_font_getexts(Fnt *font, const char *text, unsigned int len, Extnts *extnts);
50 unsigned int drw_font_getexts_width(Fnt *font, const char *text, unsigned int len);
51
52 /* Colour abstraction */
53 Clr *drw_clr_create(Drw *drw, const char *clrname);
54 void drw_clr_free(Clr *clr);
55
56 /* Cursor abstraction */
57 Cur *drw_cur_create(Drw *drw, int shape);
58 void drw_cur_free(Drw *drw, Cur *cursor);
59
60 /* Drawing context manipulation */
61 void drw_setfont(Drw *drw, Fnt *font);
62 void drw_settheme(Drw *drw, Theme *theme);
63
64 /* Drawing functions */
65 void drw_rect(Drw *drw, int x, int y, unsigned int w, unsigned int h, int filled, int empty, int invert);
66 void drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, const char *text, int invert);
67
68 /* Map functions */
69 void drw_map(Drw *drw, Window win, int x, int y, unsigned int w, unsigned int h);