X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;f=drw.h;h=e3b8515235f682ccd9b3894a58b524f43c4f0319;hb=4ec3a673ff81275a9157d6801ea4a2b17031e5ba;hp=819da85dcda7fdadb940369bb91ffb56a33b4e33;hpb=f2544a331845ad80655c1f79c9dc61922fe3441c;p=dwm.git diff --git a/drw.h b/drw.h index 819da85..e3b8515 100644 --- a/drw.h +++ b/drw.h @@ -1,61 +1,74 @@ /* See LICENSE file for copyright and license details. */ +#define DRW_FONT_CACHE_SIZE 32 typedef struct { - unsigned long rgb; + unsigned long pix; + XftColor rgb; } Clr; typedef struct { + Cursor cursor; +} Cur; + +typedef struct { + Display *dpy; int ascent; int descent; unsigned int h; - XFontSet set; - XFontStruct *xfont; + 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 win; - Drawable drwable; + Window root; + Drawable drawable; GC gc; - Clr *fg; - Clr *bg; - Fnt *font; + ClrScheme *scheme; + size_t fontcount; + Fnt *fonts[DRW_FONT_CACHE_SIZE]; } Drw; typedef struct { unsigned int w; unsigned int h; - int xOff; - int yOff; } 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); +Drw *drw_create(Display *, int, Window, unsigned int, unsigned int); +void drw_resize(Drw *, unsigned int, unsigned int); +void drw_free(Drw *); /* Fnt abstraction */ -Fnt *drw_font_create(Drw *drw, const char *fontname); -void drw_font_free(Drw *drw, Fnt *font); +Fnt *drw_font_create(Drw *, const char *); +void drw_load_fonts(Drw *, const char *[], size_t); +void drw_font_free(Fnt *); +void drw_font_getexts(Fnt *, const char *, unsigned int, Extnts *); +unsigned int drw_font_getexts_width(Fnt *, const char *, unsigned int); -/* Clrour abstraction */ -Clr *drw_clr_create(Drw *drw, const char *clrname); -void drw_clr_free(Drw *drw, Clr *clr); +/* Colour abstraction */ +Clr *drw_clr_create(Drw *, const char *); +void drw_clr_free(Clr *); + +/* Cursor abstraction */ +Cur *drw_cur_create(Drw *, int); +void drw_cur_free(Drw *, Cur *); /* Drawing context manipulation */ -void drw_setfont(Drw *drw, Fnt *font); -void drw_setfg(Drw *drw, Clr *clr); -void drw_setbg(Drw *drw, Clr *clr); +void drw_setfont(Drw *, Fnt *); +void drw_setscheme(Drw *, ClrScheme *); /* Drawing functions */ -void drw_rect(Drw *drw, int x, int y, unsigned int w, unsigned int h, Bool filled, Bool empty, Bool invert); -void drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, const char *text, Bool invert); +void drw_rect(Drw *, int, int, unsigned int, unsigned int, int, int, int); +int drw_text(Drw *, int, int, unsigned int, unsigned int, const char *, int); /* Map functions */ -void drw_map(Drw *drw, int x, int y, unsigned int w, unsigned int h); - -/* Text functions */ -void drw_getexts(Drw *drw, const char *text, unsigned int len, Extnts *extnts); - +void drw_map(Drw *, Window, int, int, unsigned int, unsigned int);