102 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
int
 | 
						|
width_statuscolors(Bar *bar, BarArg *a)
 | 
						|
{
 | 
						|
	#if BAR_STATUSCMD_PATCH
 | 
						|
	return textw_wosc(rawstext);
 | 
						|
	#else
 | 
						|
	return textw_wosc(stext);
 | 
						|
	#endif // BAR_STATUSCMD_PATCH
 | 
						|
}
 | 
						|
 | 
						|
#if BAR_EXTRASTATUS_PATCH
 | 
						|
int
 | 
						|
width_statuscolors_es(Bar *bar, BarArg *a)
 | 
						|
{
 | 
						|
	#if BAR_STATUSCMD_PATCH
 | 
						|
	return textw_wosc(rawestext);
 | 
						|
	#else
 | 
						|
	return textw_wosc(estext);
 | 
						|
	#endif // BAR_STATUSCMD_PATCH
 | 
						|
}
 | 
						|
#endif // BAR_EXTRASTATUS_PATCH
 | 
						|
 | 
						|
int
 | 
						|
draw_statuscolors(Bar *bar, BarArg *a)
 | 
						|
{
 | 
						|
	#if BAR_STATUSCMD_PATCH
 | 
						|
	return draw_wosc(bar, a, rawstext);
 | 
						|
	#else
 | 
						|
	return draw_wosc(bar, a, stext);
 | 
						|
	#endif // BAR_STATUSCMD_PATCH
 | 
						|
}
 | 
						|
 | 
						|
#if BAR_EXTRASTATUS_PATCH
 | 
						|
int
 | 
						|
draw_statuscolors_es(Bar *bar, BarArg *a)
 | 
						|
{
 | 
						|
	#if BAR_STATUSCMD_PATCH
 | 
						|
	return draw_wosc(bar, a, rawestext);
 | 
						|
	#else
 | 
						|
	return draw_wosc(bar, a, estext);
 | 
						|
	#endif // BAR_STATUSCMD_PATCH
 | 
						|
}
 | 
						|
#endif // BAR_EXTRASTATUS_PATCH
 | 
						|
 | 
						|
#if !BAR_STATUSCMD_PATCH
 | 
						|
int
 | 
						|
click_statuscolors(Bar *bar, Arg *arg, BarArg *a)
 | 
						|
{
 | 
						|
	return ClkStatusText;
 | 
						|
}
 | 
						|
#endif // BAR_STATUSCMD_PATCH
 | 
						|
 | 
						|
int
 | 
						|
textw_wosc(char *s)
 | 
						|
{
 | 
						|
	char *ts = s;
 | 
						|
	char *tp = s;
 | 
						|
	int sw = 0;
 | 
						|
	char ctmp;
 | 
						|
	while (1) {
 | 
						|
		if ((unsigned int)*ts > LENGTH(colors)) {
 | 
						|
			ts++;
 | 
						|
			continue;
 | 
						|
		}
 | 
						|
		ctmp = *ts;
 | 
						|
		*ts = '\0';
 | 
						|
		sw += drw_fontset_getwidth(drw, tp, True);
 | 
						|
		*ts = ctmp;
 | 
						|
		if (ctmp == '\0')
 | 
						|
			break;
 | 
						|
		tp = ++ts;
 | 
						|
	}
 | 
						|
 | 
						|
	return sw;
 | 
						|
}
 | 
						|
 | 
						|
int
 | 
						|
draw_wosc(Bar *bar, BarArg *a, char *s)
 | 
						|
{
 | 
						|
	char *ts = s;
 | 
						|
	char *tp = s;
 | 
						|
	int tx = 0;
 | 
						|
	char ctmp;
 | 
						|
 | 
						|
	while (1) {
 | 
						|
		if ((unsigned int)*ts > LENGTH(colors)) {
 | 
						|
			ts++;
 | 
						|
			continue;
 | 
						|
		}
 | 
						|
		ctmp = *ts;
 | 
						|
		*ts = '\0';
 | 
						|
		drw_text(drw, a->x + tx, a->y, a->w - tx, a->h, 0, tp, 0, True);
 | 
						|
		tx += TEXTW(tp) - lrpad;
 | 
						|
		if (ctmp == '\0')
 | 
						|
			break;
 | 
						|
		drw_setscheme(drw, scheme[(unsigned int)(ctmp-1)]);
 | 
						|
		*ts = ctmp;
 | 
						|
		tp = ++ts;
 | 
						|
	}
 | 
						|
 | 
						|
	return 1;
 | 
						|
} |