extended libdraw
							parent
							
								
									9f3b0c6ea8
								
							
						
					
					
						commit
						18dcf73896
					
				
							
								
								
									
										8
									
								
								dinput.c
								
								
								
								
							
							
						
						
									
										8
									
								
								dinput.c
								
								
								
								
							|  | @ -72,15 +72,15 @@ drawinput(void) | |||
| 	dc.y = 0; | ||||
| 	dc.w = mw; | ||||
| 	dc.h = mh; | ||||
| 	drawtext(&dc, NULL, normcol); | ||||
| 	drawtext(&dc, NULL, normcol, False); | ||||
| 	/* print prompt? */ | ||||
| 	if(prompt) { | ||||
| 		dc.w = promptw; | ||||
| 		drawtext(&dc, prompt, selcol); | ||||
| 		drawtext(&dc, prompt, selcol, False); | ||||
| 		dc.x += dc.w; | ||||
| 	} | ||||
| 	dc.w = mw - dc.x; | ||||
| 	drawtext(&dc, *text ? text : NULL, normcol); | ||||
| 	drawtext(&dc, *text ? text : NULL, normcol, False); | ||||
| 	drawcursor(); | ||||
| 	XCopyArea(dpy, dc.drawable, win, dc.gc, 0, 0, mw, mh, 0, 0); | ||||
| 	XFlush(dpy); | ||||
|  | @ -233,7 +233,7 @@ run(void) { | |||
| 
 | ||||
| 	/* main event loop */ | ||||
| 	while(running && !XNextEvent(dpy, &ev)) | ||||
| 		switch (ev.type) { | ||||
| 		switch(ev.type) { | ||||
| 		case KeyPress: | ||||
| 			kpress(&ev.xkey); | ||||
| 			break; | ||||
|  |  | |||
							
								
								
									
										18
									
								
								dmenu.c
								
								
								
								
							
							
						
						
									
										18
									
								
								dmenu.c
								
								
								
								
							|  | @ -161,18 +161,18 @@ drawmenu(void) { | |||
| 	dc.y = 0; | ||||
| 	dc.w = mw; | ||||
| 	dc.h = mh; | ||||
| 	drawtext(&dc, NULL, normcol); | ||||
| 	drawtext(&dc, NULL, normcol, False); | ||||
| 	/* print prompt? */ | ||||
| 	if(prompt) { | ||||
| 		dc.w = promptw; | ||||
| 		drawtext(&dc, prompt, selcol); | ||||
| 		drawtext(&dc, prompt, selcol, False); | ||||
| 		dc.x += dc.w; | ||||
| 	} | ||||
| 	dc.w = mw - dc.x; | ||||
| 	/* print command */ | ||||
| 	if(cmdw && item && lines == 0) | ||||
| 		dc.w = cmdw; | ||||
| 	drawtext(&dc, *text ? text : NULL, normcol); | ||||
| 	drawtext(&dc, *text ? text : NULL, normcol, False); | ||||
| 	if(curr) { | ||||
| 		if(lines > 0) | ||||
| 			drawmenuv(); | ||||
|  | @ -189,16 +189,16 @@ drawmenuh(void) { | |||
| 
 | ||||
| 	dc.x += cmdw; | ||||
| 	dc.w = spaceitem; | ||||
| 	drawtext(&dc, curr->left ? "<" : NULL, normcol); | ||||
| 	drawtext(&dc, curr->left ? "<" : NULL, normcol, False); | ||||
| 	dc.x += dc.w; | ||||
| 	for(i = curr; i != next; i = i->right) { | ||||
| 		dc.w = MIN(textw(&dc, i->text), mw / 3); | ||||
| 		drawtext(&dc, i->text, (sel == i) ? selcol : normcol); | ||||
| 		drawtext(&dc, i->text, (sel == i) ? selcol : normcol, False); | ||||
| 		dc.x += dc.w; | ||||
| 	} | ||||
| 	dc.w = spaceitem; | ||||
| 	dc.x = mw - dc.w; | ||||
| 	drawtext(&dc, next ? ">" : NULL, normcol); | ||||
| 	drawtext(&dc, next ? ">" : NULL, normcol, False); | ||||
| } | ||||
| 
 | ||||
| void | ||||
|  | @ -209,11 +209,11 @@ drawmenuv(void) { | |||
| 	dc.h = dc.font.height + 2; | ||||
| 	dc.y = dc.h; | ||||
| 	for(i = curr; i != next; i = i->right) { | ||||
| 		drawtext(&dc, i->text, (sel == i) ? selcol : normcol); | ||||
| 		drawtext(&dc, i->text, (sel == i) ? selcol : normcol, False); | ||||
| 		dc.y += dc.h; | ||||
| 	} | ||||
| 	dc.h = mh - dc.y; | ||||
| 	drawtext(&dc, NULL, normcol); | ||||
| 	drawtext(&dc, NULL, normcol, False); | ||||
| } | ||||
| 
 | ||||
| Bool | ||||
|  | @ -456,7 +456,7 @@ run(void) { | |||
| 
 | ||||
| 	/* main event loop */ | ||||
| 	while(running && !XNextEvent(dpy, &ev)) | ||||
| 		switch (ev.type) { | ||||
| 		switch(ev.type) { | ||||
| 		case KeyPress: | ||||
| 			kpress(&ev.xkey); | ||||
| 			break; | ||||
|  |  | |||
|  | @ -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 | ||||
|  |  | |||
|  | @ -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); | ||||
|  |  | |||
|  | @ -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); | ||||
| } | ||||
|  | @ -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 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue