starting with initial draw.h - dwm - dynamic window manager (HTM) git clone https://git.parazyd.org/dwm (DIR) Log (DIR) Files (DIR) Refs (DIR) README (DIR) LICENSE --- (DIR) commit 87adcd263b1fc75f7eb3172dac55ca641fd7a96a (DIR) parent fd3c19bd550e346d515c8e124c7fa55599a1aa22 (HTM) Author: anselm@garbe.us <unknown> Date: Sat, 17 Nov 2012 19:01:22 +0100 starting with initial draw.h Diffstat: A draw.h | 76 +++++++++++++++++++++++++++++++ M dwm.c | 2 ++ 2 files changed, 78 insertions(+), 0 deletions(-) --- (DIR) diff --git a/draw.h b/draw.h @@ -0,0 +1,76 @@ +/* See LICENSE file for copyright and license details. */ + +/* X11 types - begin */ +struct _XDraw { + unsigned int w, h; + Display *dpy; + Drawable drawable; + GC gc; +}; +typedef struct _XDraw Draw; + +struct _XCol { + unsigned long rgb; +}; +typedef struct _XCol Col; + +struct _XFont { + int ascent; + int descent; + unsigned int h, w; + XFontSet set; + XFontStruct *xfont; +}; +typedef struct _XFont Fnt; +/* X11 types - end */ + +typedef struct { + Draw *draw; + Col *fg; + Col *bg; + Fnt *font; + Bool fill; +} DDC; + +typedef struct { + unsigned int w; + unsigned int h; + int x; + int y; + int xOff; + int yOff; +} TextExtents; + +/* Drawable abstraction */ +Draw *draw_create(Display *dpy, Window win, unsigned int w, unsigned int h); +void draw_resize(Draw *draw, unsigned int w, unsigned int h); +void draw_free(Draw *draw); + +/* Drawing context abstraction */ +DDC *dc_create(Draw *draw); +void dc_free(DDC *dc); + +/* 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 dc_setfont(DDC *dc, Fnt *font); +void dc_setfg(DDC *dc, Col col); +void dc_setbg(DDC *dc, Col col); +void dc_setfill(DDC *dc, Bool fill); + +/* Drawing functions */ +void dc_drawrect(DDC *dc, int x, int y, unsigned int w, unsigned int h); +void dc_drawtext(DDC *dc, int x, int y, const char *text); + +/* Map functions */ +void dc_map(DDC *dc, int x, int y, unsigned int w, unsigned int h); + +/* Text functions */ +void dc_getextents(DDC *dc, const char *text, TextExtents *extents); + (DIR) diff --git a/dwm.c b/dwm.c @@ -43,6 +43,8 @@ #include <X11/extensions/Xinerama.h> #endif /* XINERAMA */ +#include "draw.h" + /* macros */ #define BUTTONMASK (ButtonPressMask|ButtonReleaseMask) #define CLEANMASK(mask) (mask & ~(numlockmask|LockMask) & (ShiftMask|ControlMask|Mod1Mask|Mod2Mask|Mod3Mask|Mod4Mask|Mod5Mask))