URI: 
       starting with initial draw.h - dwm - dynamic window manager
  HTML git clone https://git.parazyd.org/dwm
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 87adcd263b1fc75f7eb3172dac55ca641fd7a96a
   DIR parent fd3c19bd550e346d515c8e124c7fa55599a1aa22
  HTML 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))