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