| 
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -29,10 +29,9 @@ drawrect(DC *dc, int x, int y, unsigned int w, unsigned int h, Bool fill, unsign | 
															
														
														
													
														
															
																 | 
																 | 
																void | 
																 | 
																 | 
																void | 
															
														
														
													
														
															
																 | 
																 | 
																drawtext(DC *dc, const char *text, unsigned long col[ColLast]) { | 
																 | 
																 | 
																drawtext(DC *dc, const char *text, unsigned long col[ColLast]) { | 
															
														
														
													
														
															
																 | 
																 | 
																	char buf[256]; | 
																 | 
																 | 
																	char buf[256]; | 
															
														
														
													
														
															
																 | 
																 | 
																	size_t n, mn; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	size_t mn, n = strlen(text); | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																	/* shorten text if necessary */ | 
																 | 
																 | 
																	/* shorten text if necessary */ | 
															
														
														
													
														
															
																 | 
																 | 
																	n = strlen(text); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																	for(mn = MIN(n, sizeof buf); textnw(dc, text, mn) > dc->w - dc->font.height/2; mn--) | 
																 | 
																 | 
																	for(mn = MIN(n, sizeof buf); textnw(dc, text, mn) > dc->w - dc->font.height/2; mn--) | 
															
														
														
													
														
															
																 | 
																 | 
																		if(mn == 0) | 
																 | 
																 | 
																		if(mn == 0) | 
															
														
														
													
														
															
																 | 
																 | 
																			return; | 
																 | 
																 | 
																			return; | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																			
																		
																	
																 | 
																@ -46,10 +45,8 @@ drawtext(DC *dc, const char *text, unsigned long col[ColLast]) { | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																void | 
																 | 
																 | 
																void | 
															
														
														
													
														
															
																 | 
																 | 
																drawtextn(DC *dc, const char *text, size_t n, unsigned long col[ColLast]) { | 
																 | 
																 | 
																drawtextn(DC *dc, const char *text, size_t n, unsigned long col[ColLast]) { | 
															
														
														
													
														
															
																 | 
																 | 
																	int x, y; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																	x = dc->x + dc->font.height/2; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																	y = dc->y + dc->font.ascent+1; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	int x = dc->x + dc->font.height/2; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	int y = dc->y + dc->font.ascent+1; | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																	XSetForeground(dc->dpy, dc->gc, FG(dc, col)); | 
																 | 
																 | 
																	XSetForeground(dc->dpy, dc->gc, FG(dc, col)); | 
															
														
														
													
														
															
																 | 
																 | 
																	if(dc->font.set) | 
																 | 
																 | 
																	if(dc->font.set) | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																			
																		
																	
																 | 
																@ -64,7 +61,6 @@ void | 
															
														
														
													
														
															
																 | 
																 | 
																eprintf(const char *fmt, ...) { | 
																 | 
																 | 
																eprintf(const char *fmt, ...) { | 
															
														
														
													
														
															
																 | 
																 | 
																	va_list ap; | 
																 | 
																 | 
																	va_list ap; | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																	fprintf(stderr, "%s: ", progname); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																	va_start(ap, fmt); | 
																 | 
																 | 
																	va_start(ap, fmt); | 
															
														
														
													
														
															
																 | 
																 | 
																	vfprintf(stderr, fmt, ap); | 
																 | 
																 | 
																	vfprintf(stderr, fmt, ap); | 
															
														
														
													
														
															
																 | 
																 | 
																	va_end(ap); | 
																 | 
																 | 
																	va_end(ap); | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -104,7 +100,7 @@ initdc(void) { | 
															
														
														
													
														
															
																 | 
																 | 
																	DC *dc; | 
																 | 
																 | 
																	DC *dc; | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																	if(!setlocale(LC_CTYPE, "") || !XSupportsLocale()) | 
																 | 
																 | 
																	if(!setlocale(LC_CTYPE, "") || !XSupportsLocale()) | 
															
														
														
													
														
															
																 | 
																 | 
																		weprintf("no locale support\n"); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		fprintf(stderr, "no locale support\n"); | 
															
														
														
													
														
															
																 | 
																 | 
																	if(!(dc = calloc(1, sizeof *dc))) | 
																 | 
																 | 
																	if(!(dc = calloc(1, sizeof *dc))) | 
															
														
														
													
														
															
																 | 
																 | 
																		eprintf("cannot malloc %u bytes:", sizeof *dc); | 
																 | 
																 | 
																		eprintf("cannot malloc %u bytes:", sizeof *dc); | 
															
														
														
													
														
															
																 | 
																 | 
																	if(!(dc->dpy = XOpenDisplay(NULL))) | 
																 | 
																 | 
																	if(!(dc->dpy = XOpenDisplay(NULL))) | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																			
																		
																	
																 | 
																@ -119,7 +115,7 @@ void | 
															
														
														
													
														
															
																 | 
																 | 
																initfont(DC *dc, const char *fontstr) { | 
																 | 
																 | 
																initfont(DC *dc, const char *fontstr) { | 
															
														
														
													
														
															
																 | 
																 | 
																	if(!loadfont(dc, fontstr ? fontstr : DEFFONT)) { | 
																 | 
																 | 
																	if(!loadfont(dc, fontstr ? fontstr : DEFFONT)) { | 
															
														
														
													
														
															
																 | 
																 | 
																		if(fontstr != NULL) | 
																 | 
																 | 
																		if(fontstr != NULL) | 
															
														
														
													
														
															
																 | 
																 | 
																			weprintf("cannot load font '%s'\n", fontstr); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			fprintf(stderr, "cannot load font '%s'\n", fontstr); | 
															
														
														
													
														
															
																 | 
																 | 
																		if(fontstr == NULL || !loadfont(dc, DEFFONT)) | 
																 | 
																 | 
																		if(fontstr == NULL || !loadfont(dc, DEFFONT)) | 
															
														
														
													
														
															
																 | 
																 | 
																			eprintf("cannot load font '%s'\n", DEFFONT); | 
																 | 
																 | 
																			eprintf("cannot load font '%s'\n", DEFFONT); | 
															
														
														
													
														
															
																 | 
																 | 
																	} | 
																 | 
																 | 
																	} | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -184,13 +180,3 @@ int | 
															
														
														
													
														
															
																 | 
																 | 
																textw(DC *dc, const char *text) { | 
																 | 
																 | 
																textw(DC *dc, const char *text) { | 
															
														
														
													
														
															
																 | 
																 | 
																	return textnw(dc, text, strlen(text)) + dc->font.height; | 
																 | 
																 | 
																	return textnw(dc, text, strlen(text)) + dc->font.height; | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																void | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																weprintf(const char *fmt, ...) { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																	va_list ap; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																	fprintf(stderr, "%s: ", progname); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																	va_start(ap, fmt); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																	vfprintf(stderr, fmt, ap); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																	va_end(ap); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																 |