diff options
author | Artur Artamonov <freeartman@wechall.net> | 2014-06-29 19:14:44 +0300 |
---|---|---|
committer | Artur Artamonov <freeartman@wechall.net> | 2014-06-29 19:14:44 +0300 |
commit | 8db5030a687b9a91ca39296edb6cd4728e5d71bf (patch) | |
tree | 15af5652df82d83f0513817a1702c4f95414874e /drw.h | |
download | dwm-fancy-8db5030a687b9a91ca39296edb6cd4728e5d71bf.tar.gz dwm-fancy-8db5030a687b9a91ca39296edb6cd4728e5d71bf.zip |
Initial commit
Diffstat (limited to 'drw.h')
-rw-r--r-- | drw.h | 94 |
1 files changed, 94 insertions, 0 deletions
@@ -0,0 +1,94 @@ +/* See LICENSE file for copyright and license details. */ + +#include "kconfig.h" + +#ifdef CONFIG_DWM_PANGO +#include <X11/Xft/Xft.h> +#include <pango/pango.h> +#include <pango/pangoxft.h> + +typedef struct { + XftColor norm[4]; + XftColor sel[4]; + XftDraw *drawable; +} Xft; +#endif + +typedef struct { + unsigned long rgb; +} Clr; + +typedef struct { + Cursor cursor; +} Cur; + +typedef struct { + int ascent; + int descent; + unsigned int h; +#ifdef CONFIG_DWM_PANGO + PangoLayout *layout; +#else + XFontSet set; + XFontStruct *xfont; +#endif +} Fnt; + +typedef struct { + Clr *fg; + Clr *bg; + Clr *border; +} ClrScheme; + +typedef struct { + unsigned int w, h; + Display *dpy; + int screen; + Window root; + Drawable drawable; + GC gc; + ClrScheme *scheme; +#ifdef CONFIG_DWM_PANGO + Xft xft; +#endif + Fnt *font; +} Drw; + +typedef struct { + unsigned int w; + unsigned int h; +} 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); + +/* Fnt abstraction */ +Fnt *drw_font_create(Display *dpy, const char *fontname); +void drw_font_free(Display *dpy, 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); + +/* Colour abstraction */ +#ifdef CONFIG_DWM_PANGO +Clr *drw_clr_create(Drw *drw, const char *clrname, XftColor *color); +#else +Clr *drw_clr_create(Drw *drw, const char *clrname); +#endif +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_setscheme(Drw *drw, ClrScheme *scheme); + +/* Drawing functions */ +void drw_rect(Drw *drw, int x, int y, unsigned int w, unsigned int h, int filled, int empty, int invert); +void 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, Window win, int x, int y, unsigned int w, unsigned int h); |