summaryrefslogtreecommitdiff
path: root/drw.h
diff options
context:
space:
mode:
authorzavok <an2qzavok@gmail.com>2015-11-23 17:08:20 +0300
committerzavok <an2qzavok@gmail.com>2015-11-23 17:08:20 +0300
commit51da5915b03d9b06936ac32f47287beb73d96973 (patch)
treead7a5eca744666befa37adb779e4fb2daccc3627 /drw.h
This is a "barely works" version of spine, I hope it works, at least barely.
Diffstat (limited to 'drw.h')
-rw-r--r--drw.h74
1 files changed, 74 insertions, 0 deletions
diff --git a/drw.h b/drw.h
new file mode 100644
index 0000000..536171b
--- /dev/null
+++ b/drw.h
@@ -0,0 +1,74 @@
+/* See LICENSE file for copyright and license details. */
+#define DRW_FONT_CACHE_SIZE 32
+
+typedef struct {
+ unsigned long pix;
+ XftColor rgb;
+} Clr;
+
+typedef struct {
+ Cursor cursor;
+} Cur;
+
+typedef struct {
+ Display *dpy;
+ int ascent;
+ int descent;
+ unsigned int h;
+ XftFont *xfont;
+ FcPattern *pattern;
+} 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;
+ size_t fontcount;
+ Fnt *fonts[DRW_FONT_CACHE_SIZE];
+} 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(Drw *drw, const char *fontname);
+void drw_load_fonts(Drw* drw, const char *fonts[], size_t fontcount);
+void drw_font_free(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 */
+Clr *drw_clr_create(Drw *drw, const char *clrname);
+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);
+int 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);