diff options
author | Connor Lane Smith <cls@lubutu.com> | 2010-06-28 06:09:34 +0100 |
---|---|---|
committer | Connor Lane Smith <cls@lubutu.com> | 2010-06-28 06:09:34 +0100 |
commit | 18dcf738967a45208e880b72ce273afdd93ee6c7 (patch) | |
tree | 750ef101f905125871cd63e6734cbbae25f4cb44 /draw | |
parent | 9f3b0c6ea843340b87a045ea0afd2d1b33425eee (diff) |
extended libdraw
Diffstat (limited to 'draw')
-rw-r--r-- | draw/Makefile | 4 | ||||
-rw-r--r-- | draw/draw.h | 5 | ||||
-rw-r--r-- | draw/drawsquare.c | 19 | ||||
-rw-r--r-- | draw/drawtext.c | 6 |
4 files changed, 27 insertions, 7 deletions
diff --git a/draw/Makefile b/draw/Makefile index 1f72b61..4b39490 100644 --- a/draw/Makefile +++ b/draw/Makefile @@ -3,8 +3,8 @@ include ../config.mk -SRC = cleanupdraw.c setupdraw.c drawtext.c eprint.c getcolor.c initfont.c \ -textnw.c textw.c +SRC = cleanupdraw.c drawsquare.c drawtext.c eprint.c getcolor.c initfont.c \ +setupdraw.c textnw.c textw.c OBJ = ${SRC:.c=.o} all: libdraw.a diff --git a/draw/draw.h b/draw/draw.h index 4646a18..f282392 100644 --- a/draw/draw.h +++ b/draw/draw.h @@ -2,7 +2,7 @@ #include <X11/Xlib.h> /* enums */ -enum { ColFG, ColBG, ColLast }; +enum { ColBorder, ColFG, ColBG, ColLast }; /* typedefs */ typedef struct { @@ -21,7 +21,8 @@ typedef struct { /* forward declarations */ void cleanupdraw(DC *dc); -void drawtext(DC *dc, const char *text, unsigned long col[ColLast]); +void drawsquare(DC *dc, Bool filled, unsigned long col[ColLast], Bool invert); +void drawtext(DC *dc, const char *text, unsigned long col[ColLast], Bool invert); void eprint(const char *fmt, ...); unsigned long getcolor(DC *dc, const char *colstr); void initfont(DC *dc, const char *fontstr); diff --git a/draw/drawsquare.c b/draw/drawsquare.c new file mode 100644 index 0000000..8899043 --- /dev/null +++ b/draw/drawsquare.c @@ -0,0 +1,19 @@ +/* See LICENSE file for copyright and license details. */ +#include <X11/Xlib.h> +#include "draw.h" + +void +drawsquare(DC *dc, Bool filled, unsigned long col[ColLast], Bool invert) { + int n; + XRectangle r = { dc->x, dc->y, dc->w, dc->h }; + + XSetForeground(dc->dpy, dc->gc, col[invert ? ColBG : ColFG]); + n = ((dc->font.ascent + dc->font.descent + 2) / 4) + (filled ? 1 : 0); + r.width = r.height = n; + r.x = dc->x + 1; + r.y = dc->y + 1; + if(filled) + XFillRectangles(dc->dpy, dc->drawable, dc->gc, &r, 1); + else + XDrawRectangles(dc->dpy, dc->drawable, dc->gc, &r, 1); +} diff --git a/draw/drawtext.c b/draw/drawtext.c index cf7b015..d347b36 100644 --- a/draw/drawtext.c +++ b/draw/drawtext.c @@ -6,12 +6,12 @@ #define MIN(a, b) ((a) < (b) ? (a) : (b)) void -drawtext(DC *dc, const char *text, unsigned long col[ColLast]) { +drawtext(DC *dc, const char *text, unsigned long col[ColLast], Bool invert) { char buf[256]; int i, x, y, h, len, olen; XRectangle r = { dc->x, dc->y, dc->w, dc->h }; - XSetForeground(dc->dpy, dc->gc, col[ColBG]); + XSetForeground(dc->dpy, dc->gc, col[invert ? ColFG : ColBG]); XFillRectangles(dc->dpy, dc->drawable, dc->gc, &r, 1); if(!text) return; @@ -26,7 +26,7 @@ drawtext(DC *dc, const char *text, unsigned long col[ColLast]) { memcpy(buf, text, len); if(len < olen) for(i = len; i && i > len - 3; buf[--i] = '.'); - XSetForeground(dc->dpy, dc->gc, col[ColFG]); + XSetForeground(dc->dpy, dc->gc, col[invert ? ColBG : ColFG]); if(dc->font.set) XmbDrawString(dc->dpy, dc->drawable, dc->font.set, dc->gc, x, y, buf, len); else |