X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;f=drw.h;h=536171b958b939b06c9bbf9008806ffb2a8d205a;hb=14343e69cc596b847f71f1e825d3019ab1a29aa8;hp=819da85dcda7fdadb940369bb91ffb56a33b4e33;hpb=f2544a331845ad80655c1f79c9dc61922fe3441c;p=dwm.git diff --git a/drw.h b/drw.h index 819da85..536171b 100644 --- a/drw.h +++ b/drw.h @@ -1,34 +1,45 @@ /* 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 */ @@ -38,24 +49,26 @@ void drw_free(Drw *drw); /* Fnt abstraction */ Fnt *drw_font_create(Drw *drw, const char *fontname); -void drw_font_free(Drw *drw, Fnt *font); +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); -/* Clrour abstraction */ +/* Colour abstraction */ Clr *drw_clr_create(Drw *drw, const char *clrname); -void drw_clr_free(Drw *drw, Clr *clr); +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_setfg(Drw *drw, Clr *clr); -void drw_setbg(Drw *drw, Clr *clr); +void drw_setscheme(Drw *drw, ClrScheme *scheme); /* 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 *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, 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 *drw, Window win, int x, int y, unsigned int w, unsigned int h);