all repos — dwm @ 5364697914fd4272fc1a6494b4fc522d2935427a

fork of suckless dynamic window manager

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);