Align compile-time color options with X resource colors
Two colors are more than enough!
This commit is contained in:
		@@ -14,11 +14,8 @@ static const char * const BAR_FONT = "monospace:size=8";
 | 
				
			|||||||
/* colors:
 | 
					/* colors:
 | 
				
			||||||
 * (see X(7) section "COLOR NAMES" for valid values)
 | 
					 * (see X(7) section "COLOR NAMES" for valid values)
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
static const char * const WIN_BG_COLOR = "#555555";
 | 
					static const char * const BG_COLOR = "#555555";
 | 
				
			||||||
static const char * const WIN_FS_COLOR = "#000000";
 | 
					static const char * const FG_COLOR = "#EEEEEE";
 | 
				
			||||||
static const char * const SEL_COLOR    = "#EEEEEE";
 | 
					 | 
				
			||||||
static const char * const BAR_BG_COLOR = "#222222";
 | 
					 | 
				
			||||||
static const char * const BAR_FG_COLOR = "#EEEEEE";
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#ifdef _IMAGE_CONFIG
 | 
					#ifdef _IMAGE_CONFIG
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								image.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								image.c
									
									
									
									
									
								
							@@ -497,7 +497,7 @@ void img_render(img_t *img)
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
			imlib_image_put_back_data(data);
 | 
								imlib_image_put_back_data(data);
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			c = win->fullscreen ? win->fscol.pixel : win->bgcol.pixel;
 | 
								c = win->fullscreen ? win->black.pixel : win->bg.pixel;
 | 
				
			||||||
			imlib_context_set_color(c >> 16 & 0xFF, c >> 8 & 0xFF, c & 0xFF, 0xFF);
 | 
								imlib_context_set_color(c >> 16 & 0xFF, c >> 8 & 0xFF, c & 0xFF, 0xFF);
 | 
				
			||||||
			imlib_image_fill_rectangle(0, 0, dw, dh);
 | 
								imlib_image_fill_rectangle(0, 0, dw, dh);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										9
									
								
								sxiv.h
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								sxiv.h
									
									
									
									
									
								
							@@ -408,9 +408,10 @@ struct win {
 | 
				
			|||||||
	Window xwin;
 | 
						Window xwin;
 | 
				
			||||||
	win_env_t env;
 | 
						win_env_t env;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	XftColor bgcol;
 | 
						bool light; /* bg is lighter than fg */
 | 
				
			||||||
	XftColor fscol;
 | 
						XftColor bg;
 | 
				
			||||||
	XftColor selcol;
 | 
						XftColor fg;
 | 
				
			||||||
 | 
						XftColor black;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	int x;
 | 
						int x;
 | 
				
			||||||
	int y;
 | 
						int y;
 | 
				
			||||||
@@ -430,8 +431,6 @@ struct win {
 | 
				
			|||||||
		unsigned int h;
 | 
							unsigned int h;
 | 
				
			||||||
		win_bar_t l;
 | 
							win_bar_t l;
 | 
				
			||||||
		win_bar_t r;
 | 
							win_bar_t r;
 | 
				
			||||||
		XftColor bgcol;
 | 
					 | 
				
			||||||
		XftColor fgcol;
 | 
					 | 
				
			||||||
	} bar;
 | 
						} bar;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										8
									
								
								thumbs.c
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								thumbs.c
									
									
									
									
									
								
							@@ -468,14 +468,14 @@ void tns_mark(tns_t *tns, int n, bool mark)
 | 
				
			|||||||
	if (n >= 0 && n < *tns->cnt && tns->thumbs[n].im != NULL) {
 | 
						if (n >= 0 && n < *tns->cnt && tns->thumbs[n].im != NULL) {
 | 
				
			||||||
		win_t *win = tns->win;
 | 
							win_t *win = tns->win;
 | 
				
			||||||
		thumb_t *t = &tns->thumbs[n];
 | 
							thumb_t *t = &tns->thumbs[n];
 | 
				
			||||||
		unsigned long col = win->fullscreen ? win->fscol.pixel : win->bgcol.pixel;
 | 
							unsigned long col = win->fullscreen ? win->black.pixel : win->bg.pixel;
 | 
				
			||||||
		int x = t->x + t->w, y = t->y + t->h;
 | 
							int x = t->x + t->w, y = t->y + t->h;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		win_draw_rect(win, x - 1, y + 1, 1, tns->bw, true, 1, col);
 | 
							win_draw_rect(win, x - 1, y + 1, 1, tns->bw, true, 1, col);
 | 
				
			||||||
		win_draw_rect(win, x + 1, y - 1, tns->bw, 1, true, 1, col);
 | 
							win_draw_rect(win, x + 1, y - 1, tns->bw, 1, true, 1, col);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (mark)
 | 
							if (mark)
 | 
				
			||||||
			col = win->selcol.pixel;
 | 
								col = win->fullscreen && win->light ? win->bg.pixel : win->fg.pixel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		win_draw_rect(win, x, y, tns->bw + 2, tns->bw + 2, true, 1, col);
 | 
							win_draw_rect(win, x, y, tns->bw + 2, tns->bw + 2, true, 1, col);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -493,9 +493,9 @@ void tns_highlight(tns_t *tns, int n, bool hl)
 | 
				
			|||||||
		int oxy = (tns->bw + 1) / 2 + 1, owh = tns->bw + 2;
 | 
							int oxy = (tns->bw + 1) / 2 + 1, owh = tns->bw + 2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (hl)
 | 
							if (hl)
 | 
				
			||||||
			col = win->selcol.pixel;
 | 
								col = win->fullscreen && win->light ? win->bg.pixel : win->fg.pixel;
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
			col = win->fullscreen ? win->fscol.pixel : win->bgcol.pixel;
 | 
								col = win->fullscreen ? win->black.pixel : win->bg.pixel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		win_draw_rect(win, t->x - oxy, t->y - oxy, t->w + owh, t->h + owh,
 | 
							win_draw_rect(win, t->x - oxy, t->y - oxy, t->w + owh, t->h + owh,
 | 
				
			||||||
		              false, tns->bw, col);
 | 
							              false, tns->bw, col);
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										43
									
								
								window.c
									
									
									
									
									
								
							
							
						
						
									
										43
									
								
								window.c
									
									
									
									
									
								
							@@ -121,12 +121,18 @@ const char* win_res(Display *dpy, const char *name, const char *def)
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					unsigned int win_luminance(const XftColor *col)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return (col->color.red + col->color.green + col->color.blue) / 3;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define INIT_ATOM_(atom) \
 | 
					#define INIT_ATOM_(atom) \
 | 
				
			||||||
	atoms[ATOM_##atom] = XInternAtom(e->dpy, #atom, False);
 | 
						atoms[ATOM_##atom] = XInternAtom(e->dpy, #atom, False);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void win_init(win_t *win)
 | 
					void win_init(win_t *win)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	win_env_t *e;
 | 
						win_env_t *e;
 | 
				
			||||||
 | 
						const char *bg, *fg;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	memset(win, 0, sizeof(win_t));
 | 
						memset(win, 0, sizeof(win_t));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -146,15 +152,12 @@ void win_init(win_t *win)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	win_init_font(e, BAR_FONT);
 | 
						win_init_font(e, BAR_FONT);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	win_alloc_color(e, win_res(e->dpy, RES_CLASS ".background", WIN_BG_COLOR),
 | 
						bg = win_res(e->dpy, RES_CLASS ".background", BG_COLOR);
 | 
				
			||||||
	                &win->bgcol);
 | 
						fg = win_res(e->dpy, RES_CLASS ".foreground", FG_COLOR);
 | 
				
			||||||
	win_alloc_color(e, WIN_FS_COLOR, &win->fscol);
 | 
						win_alloc_color(e, bg, &win->bg);
 | 
				
			||||||
	win_alloc_color(e, win_res(e->dpy, RES_CLASS ".foreground", SEL_COLOR),
 | 
						win_alloc_color(e, fg, &win->fg);
 | 
				
			||||||
	                &win->selcol);
 | 
						win_alloc_color(e, "black", &win->black);
 | 
				
			||||||
	win_alloc_color(e, win_res(e->dpy, RES_CLASS ".foreground", BAR_BG_COLOR),
 | 
						win->light = win_luminance(&win->bg) > win_luminance(&win->fg);
 | 
				
			||||||
	                &win->bar.bgcol);
 | 
					 | 
				
			||||||
	win_alloc_color(e, win_res(e->dpy, RES_CLASS ".background", BAR_FG_COLOR),
 | 
					 | 
				
			||||||
	                &win->bar.fgcol);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	win->bar.l.size = BAR_L_LEN;
 | 
						win->bar.l.size = BAR_L_LEN;
 | 
				
			||||||
	win->bar.r.size = BAR_R_LEN;
 | 
						win->bar.r.size = BAR_R_LEN;
 | 
				
			||||||
@@ -294,7 +297,7 @@ void win_open(win_t *win)
 | 
				
			|||||||
	win->buf.h = e->scrh;
 | 
						win->buf.h = e->scrh;
 | 
				
			||||||
	win->buf.pm = XCreatePixmap(e->dpy, win->xwin,
 | 
						win->buf.pm = XCreatePixmap(e->dpy, win->xwin,
 | 
				
			||||||
	                            win->buf.w, win->buf.h, e->depth);
 | 
						                            win->buf.w, win->buf.h, e->depth);
 | 
				
			||||||
	XSetForeground(e->dpy, gc, fullscreen ? win->fscol.pixel : win->bgcol.pixel);
 | 
						XSetForeground(e->dpy, gc, fullscreen ? win->black.pixel : win->bg.pixel);
 | 
				
			||||||
	XFillRectangle(e->dpy, win->buf.pm, gc, 0, 0, win->buf.w, win->buf.h);
 | 
						XFillRectangle(e->dpy, win->buf.pm, gc, 0, 0, win->buf.w, win->buf.h);
 | 
				
			||||||
	XSetWindowBackgroundPixmap(e->dpy, win->xwin, win->buf.pm);
 | 
						XSetWindowBackgroundPixmap(e->dpy, win->xwin, win->buf.pm);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -386,14 +389,14 @@ void win_clear(win_t *win)
 | 
				
			|||||||
		win->buf.pm = XCreatePixmap(e->dpy, win->xwin,
 | 
							win->buf.pm = XCreatePixmap(e->dpy, win->xwin,
 | 
				
			||||||
		                            win->buf.w, win->buf.h, e->depth);
 | 
							                            win->buf.w, win->buf.h, e->depth);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	XSetForeground(e->dpy, gc, win->fullscreen ? win->fscol.pixel : win->bgcol.pixel);
 | 
						XSetForeground(e->dpy, gc, win->fullscreen ? win->black.pixel : win->bg.pixel);
 | 
				
			||||||
	XFillRectangle(e->dpy, win->buf.pm, gc, 0, 0, win->buf.w, win->buf.h);
 | 
						XFillRectangle(e->dpy, win->buf.pm, gc, 0, 0, win->buf.w, win->buf.h);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define TEXTWIDTH(win, text, len) \
 | 
					#define TEXTWIDTH(win, text, len) \
 | 
				
			||||||
	win_draw_text(win, NULL, NULL, 0, 0, text, len, 0)
 | 
						win_draw_text(win, NULL, NULL, 0, 0, text, len, 0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int win_draw_text(win_t *win, XftDraw *d, XftColor *color, int x, int y,
 | 
					int win_draw_text(win_t *win, XftDraw *d, const XftColor *color, int x, int y,
 | 
				
			||||||
                  char *text, int len, int w)
 | 
					                  char *text, int len, int w)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	int err, tw = 0;
 | 
						int err, tw = 0;
 | 
				
			||||||
@@ -432,6 +435,7 @@ void win_draw_bar(win_t *win)
 | 
				
			|||||||
	win_env_t *e;
 | 
						win_env_t *e;
 | 
				
			||||||
	win_bar_t *l, *r;
 | 
						win_bar_t *l, *r;
 | 
				
			||||||
	XftDraw *d;
 | 
						XftDraw *d;
 | 
				
			||||||
 | 
						const XftColor *bg, *fg;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ((l = &win->bar.l)->buf == NULL || (r = &win->bar.r)->buf == NULL)
 | 
						if ((l = &win->bar.l)->buf == NULL || (r = &win->bar.r)->buf == NULL)
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
@@ -442,23 +446,28 @@ void win_draw_bar(win_t *win)
 | 
				
			|||||||
	d = XftDrawCreate(e->dpy, win->buf.pm, DefaultVisual(e->dpy, e->scr),
 | 
						d = XftDrawCreate(e->dpy, win->buf.pm, DefaultVisual(e->dpy, e->scr),
 | 
				
			||||||
	                  DefaultColormap(e->dpy, e->scr));
 | 
						                  DefaultColormap(e->dpy, e->scr));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	XSetForeground(e->dpy, gc, win->bar.bgcol.pixel);
 | 
						if (win->fullscreen && !win->light)
 | 
				
			||||||
 | 
							bg = &win->bg, fg = &win->fg;
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							bg = &win->fg, fg = &win->bg;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						XSetForeground(e->dpy, gc, bg->pixel);
 | 
				
			||||||
	XFillRectangle(e->dpy, win->buf.pm, gc, 0, win->h, win->w, win->bar.h);
 | 
						XFillRectangle(e->dpy, win->buf.pm, gc, 0, win->h, win->w, win->bar.h);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	XSetForeground(e->dpy, gc, win->bar.fgcol.pixel);
 | 
						XSetForeground(e->dpy, gc, fg->pixel);
 | 
				
			||||||
	XSetBackground(e->dpy, gc, win->bar.bgcol.pixel);
 | 
						XSetBackground(e->dpy, gc, bg->pixel);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ((len = strlen(r->buf)) > 0) {
 | 
						if ((len = strlen(r->buf)) > 0) {
 | 
				
			||||||
		if ((tw = TEXTWIDTH(win, r->buf, len)) > w)
 | 
							if ((tw = TEXTWIDTH(win, r->buf, len)) > w)
 | 
				
			||||||
			return;
 | 
								return;
 | 
				
			||||||
		x = win->w - tw - H_TEXT_PAD;
 | 
							x = win->w - tw - H_TEXT_PAD;
 | 
				
			||||||
		w -= tw;
 | 
							w -= tw;
 | 
				
			||||||
		win_draw_text(win, d, &win->bar.fgcol, x, y, r->buf, len, tw);
 | 
							win_draw_text(win, d, fg, x, y, r->buf, len, tw);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if ((len = strlen(l->buf)) > 0) {
 | 
						if ((len = strlen(l->buf)) > 0) {
 | 
				
			||||||
		x = H_TEXT_PAD;
 | 
							x = H_TEXT_PAD;
 | 
				
			||||||
		w -= 2 * H_TEXT_PAD; /* gap between left and right parts */
 | 
							w -= 2 * H_TEXT_PAD; /* gap between left and right parts */
 | 
				
			||||||
		win_draw_text(win, d, &win->bar.fgcol, x, y, l->buf, len, w);
 | 
							win_draw_text(win, d, fg, x, y, l->buf, len, w);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	XftDrawDestroy(d);
 | 
						XftDrawDestroy(d);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user