X-Git-Url: https://jasonwoof.com/gitweb/?p=dwm.git;a=blobdiff_plain;f=draw.h;h=d1a2f37bbfe9817726eeb5f6dd263cdfb947159b;hp=710087f4de0ab24bcae6c2a33fe6c78f36087bfe;hb=c0ba635c50dc53f06e4fc96392415b3d19b25826;hpb=39677ec76616fe4165ef92afb14db2bef2488e30 diff --git a/draw.h b/draw.h index 710087f..d1a2f37 100644 --- a/draw.h +++ b/draw.h @@ -1,35 +1,69 @@ -/* - * (C)opyright MMVI Anselm R. Garbe - * See LICENSE file for license details. - */ +/* See LICENSE file for copyright and license details. */ -#include -#include - -typedef struct Brush Brush; -typedef struct Fnt Fnt; +struct _XCol { + unsigned long rgb; +}; +typedef struct _XCol Col; -struct Fnt { - XFontStruct *xfont; - XFontSet set; +struct _XFont { int ascent; int descent; - int height; + unsigned int h, w; + XFontSet set; + XFontStruct *xfont; }; +typedef struct _XFont Fnt; +/* X11 types - end */ -struct Brush { - GC gc; +typedef struct { + unsigned int w; + unsigned int h; + int x; + int y; + int xOff; + int yOff; +} TextExtents; + + +/* X11 types - begin */ +typedef struct _XDraw Draw; +struct _XDraw { + unsigned int w, h; + Display *dpy; + int screen; + Window win; Drawable drawable; - XRectangle rect; - Fnt font; - unsigned long bg; - unsigned long fg; - unsigned long border; + GC gc; + Col *fg; + Col *bg; + Fnt *font; }; -extern void draw(Display *dpy, Brush *b, Bool border, const char *text); -extern void loadcolors(Display *dpy, int screen, Brush *b, - const char *bg, const char *fg, const char *bo); -extern void loadfont(Display *dpy, Fnt *font, const char *fontstr); -extern unsigned int textwidth_l(Fnt *font, char *text, unsigned int len); -extern unsigned int textwidth(Fnt *font, char *text); +/* Drawable abstraction */ +Draw *draw_create(Display *dpy, int screen, Window win, unsigned int w, unsigned int h); +void draw_resize(Draw *draw, unsigned int w, unsigned int h); +void draw_free(Draw *draw); + +/* Fnt abstraction */ +Fnt *font_create(const char *fontname); +void font_free(Fnt *font); + +/* Colour abstraction */ +Col *col_create(const char *colname); +void col_free(Col *col); + +/* Drawing context manipulation */ +void draw_setfont(Draw *draw, Fnt *font); +void draw_setfg(Draw *draw, Col *col); +void draw_setbg(Draw *draw, Col *col); + +/* Drawing functions */ +void draw_rect(Draw *draw, int x, int y, unsigned int w, unsigned int h); +void draw_text(Draw *draw, int x, int y, const char *text); + +/* Map functions */ +void draw_map(Draw *draw, int x, int y, unsigned int w, unsigned int h); + +/* Text functions */ +void draw_getextents(Draw *draw, const char *text, TextExtents *extents); +