| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 | /* See LICENSE file for copyright and license details. */#define DRW_FONT_CACHE_SIZE 32typedef struct {	unsigned long pix;	XftColor rgb;} Clr;typedef struct {	Cursor cursor;} Cur;typedef struct {	Display *dpy;	int ascent;	int descent;	unsigned int h;	XftFont *xfont;	FcPattern *pattern;} Fnt;typedef struct {	Clr *fg;	Clr *bg;	Clr *border;} ClrScheme;typedef struct {	unsigned int w, h;	Display *dpy;	int screen;	Window root;	Drawable drawable;	GC gc;	ClrScheme *scheme;	size_t fontcount;	Fnt *fonts[DRW_FONT_CACHE_SIZE];} Drw;typedef struct {	unsigned int w;	unsigned int h;} Extnts;/* Drawable abstraction */Drw *drw_create(Display *dpy, int screen, Window win, unsigned int w, unsigned int h);void drw_resize(Drw *drw, unsigned int w, unsigned int h);void drw_free(Drw *drw);/* Fnt abstraction */Fnt *drw_font_create(Drw *drw, const char *fontname);void drw_load_fonts(Drw* drw, const char *fonts[], size_t fontcount);void drw_font_free(Fnt *font);void drw_font_getexts(Fnt *font, const char *text, unsigned int len, Extnts *extnts);unsigned int drw_font_getexts_width(Fnt *font, const char *text, unsigned int len);/* Colour abstraction */Clr *drw_clr_create(Drw *drw, const char *clrname);void drw_clr_free(Clr *clr);/* Cursor abstraction */Cur *drw_cur_create(Drw *drw, int shape);void drw_cur_free(Drw *drw, Cur *cursor);/* Drawing context manipulation */void drw_setfont(Drw *drw, Fnt *font);void drw_setscheme(Drw *drw, ClrScheme *scheme);/* Drawing functions */void drw_rect(Drw *drw, int x, int y, unsigned int w, unsigned int h, int filled, int empty, int invert);int drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, const char *text, int invert);/* Map functions */void drw_map(Drw *drw, Window win, int x, int y, unsigned int w, unsigned int h);
 |