/* See LICENSE file for copyright and license details. */ #define FG(dc, col) ((col)[(dc)->invert ? ColBG : ColFG]) #define BG(dc, col) ((col)[(dc)->invert ? ColFG : ColBG]) enum { ColBG, ColFG, ColBorder, ColLast }; typedef struct { int x, y, w, h; Bool invert; Display *dpy; GC gc; Pixmap canvas; struct { int ascent; int descent; int height; XFontSet set; XFontStruct *xfont; } font; } DC; /* draw context */ void drawrect(DC *dc, int x, int y, unsigned int w, unsigned int h, Bool fill, unsigned long color); void drawtext(DC *dc, const char *text, unsigned long col[ColLast]); void drawtextn(DC *dc, const char *text, size_t n, unsigned long col[ColLast]); void eprintf(const char *fmt, ...); void freedc(DC *dc); unsigned long getcolor(DC *dc, const char *colstr); DC *initdc(void); void initfont(DC *dc, const char *fontstr); void mapdc(DC *dc, Window win, unsigned int w, unsigned int h); void resizedc(DC *dc, unsigned int w, unsigned int h); int textnw(DC *dc, const char *text, size_t len); int textw(DC *dc, const char *text);