drw.h (3301B)
1 /* See LICENSE file for copyright and license details. */ 2 3 #if PANGO_PATCH 4 #include <pango/pango.h> 5 #include <pango/pangoxft.h> 6 #endif // PANGO_PATCH 7 8 typedef struct { 9 Cursor cursor; 10 } Cur; 11 12 typedef struct Fnt { 13 Display *dpy; 14 unsigned int h; 15 #if PANGO_PATCH 16 PangoLayout *layout; 17 #else 18 XftFont *xfont; 19 FcPattern *pattern; 20 struct Fnt *next; 21 #endif // PANGO_PATCH 22 } Fnt; 23 24 enum { ColFg, ColBg }; /* Clr scheme index */ 25 typedef XftColor Clr; 26 27 typedef struct { 28 unsigned int w, h; 29 Display *dpy; 30 int screen; 31 Window root; 32 #if ALPHA_PATCH 33 Visual *visual; 34 unsigned int depth; 35 Colormap cmap; 36 #endif // ALPHA_PATCH 37 Drawable drawable; 38 GC gc; 39 Clr *scheme; 40 #if PANGO_PATCH 41 Fnt *font; 42 #else 43 Fnt *fonts; 44 #endif // PANGO_PATCH 45 } Drw; 46 47 /* Drawable abstraction */ 48 #if ALPHA_PATCH 49 Drw *drw_create(Display *dpy, int screen, Window win, unsigned int w, unsigned int h, Visual *visual, unsigned int depth, Colormap cmap); 50 #else 51 Drw *drw_create(Display *dpy, int screen, Window win, unsigned int w, unsigned int h); 52 #endif // ALPHA_PATCH 53 void drw_resize(Drw *drw, unsigned int w, unsigned int h); 54 void drw_free(Drw *drw); 55 56 /* Fnt abstraction */ 57 #if PANGO_PATCH 58 Fnt *drw_font_create(Drw* drw, const char *font); 59 void drw_font_free(Fnt* set); 60 unsigned int drw_font_getwidth(Drw *drw, const char *text, Bool markup); 61 unsigned int drw_fontset_getwidth_clamp(Drw *drw, const char *text, unsigned int n); 62 void drw_font_getexts(Fnt *font, const char *text, unsigned int len, unsigned int *w, unsigned int *h, Bool markup); 63 #else 64 Fnt *drw_fontset_create(Drw* drw, const char *fonts[], size_t fontcount); 65 void drw_fontset_free(Fnt* set); 66 unsigned int drw_fontset_getwidth(Drw *drw, const char *text); 67 unsigned int drw_fontset_getwidth_clamp(Drw *drw, const char *text, unsigned int n); 68 void drw_font_getexts(Fnt *font, const char *text, unsigned int len, unsigned int *w, unsigned int *h); 69 #endif // PANGO_PATCH 70 71 #if HIGHLIGHT_PATCH 72 int utf8len(const char *c); 73 #endif // HIGHLIGHT_PATCH 74 75 /* Colorscheme abstraction */ 76 #if ALPHA_PATCH 77 void drw_clr_create(Drw *drw, Clr *dest, const char *clrname, unsigned int alpha); 78 Clr *drw_scm_create(Drw *drw, const char *clrnames[], const unsigned int alphas[], size_t clrcount); 79 #else 80 void drw_clr_create(Drw *drw, Clr *dest, const char *clrname); 81 Clr *drw_scm_create(Drw *drw, const char *clrnames[], size_t clrcount); 82 #endif // ALPHA_PATCH 83 void drw_clr_free(Drw *drw, Clr *c); 84 void drw_scm_free(Drw *drw, Clr *scm, size_t clrcount); 85 86 /* Cursor abstraction */ 87 Cur *drw_cur_create(Drw *drw, int shape); 88 void drw_cur_free(Drw *drw, Cur *cursor); 89 90 /* Drawing context manipulation */ 91 #if !PANGO_PATCH 92 void drw_setfontset(Drw *drw, Fnt *set); 93 #endif // PANGO_PATCH 94 void drw_setscheme(Drw *drw, Clr *scm); 95 96 /* Drawing functions */ 97 void drw_rect(Drw *drw, int x, int y, unsigned int w, unsigned int h, int filled, int invert); 98 #if PANGO_PATCH 99 int drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lpad, const char *text, int invert, Bool markup); 100 #else 101 int drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lpad, const char *text, int invert); 102 #endif // PANGO_PATCH 103 104 /* Map functions */ 105 void drw_map(Drw *drw, Window win, int x, int y, unsigned int w, unsigned int h); 106 107 #if SCROLL_PATCH 108 #include "patch/scroll.h" 109 #endif