--- st.c | 75 +++++++++++++++++++++++++------------------------------------------- 1 file changed, 27 insertions(+), 48 deletions(-) diff --git a/st.c b/st.c index 6424b54..b1efeaf 100644 --- a/st.c +++ b/st.c _AT_@ -2716,71 +2716,50 @@ sixd_to_16bit(int x) { void xloadcols(void) { int i; - XRenderColor color = { .alpha = 0xffff }; static bool loaded; Colour *cp; - if(loaded) { - for (cp = dc.col; cp < dc.col + LEN(dc.col); ++cp) + if(loaded) + for(cp = dc.col; cp < dc.col + LEN(dc.col); ++cp) XftColorFree(xw.dpy, xw.vis, xw.cmap, cp); - } - /* load colours [0-15] and [256-LEN(colorname)] (config.h) */ - for(i = 0; i < LEN(colorname); i++) { - if(!colorname[i]) - continue; - if(!XftColorAllocName(xw.dpy, xw.vis, xw.cmap, colorname[i], &dc.col[i])) { - die("Could not allocate color '%s'\n", colorname[i]); - } - } - - /* load colours [16-231] ; same colours as xterm */ - for(i = 16; i < 6*6*6+16; i++) { - color.red = sixd_to_16bit( ((i-16)/36)%6 ); - color.green = sixd_to_16bit( ((i-16)/6) %6 ); - color.blue = sixd_to_16bit( ((i-16)/1) %6 ); - if(!XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &color, &dc.col[i])) - die("Could not allocate color %d\n", i); - } - - /* load colours [232-255] ; grayscale */ - for(; i < 256; i++) { - color.red = color.green = color.blue = 0x0808 + 0x0a0a * (i-(6*6*6+16)); - if(!XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &color, &dc.col[i])) - die("Could not allocate color %d\n", i); - } + for(i = 0; i < LEN(colorname); i++) + if(!xsetcolorname(i, NULL)) + fprintf(stderr, "erresc: invalid color %s\n", colorname[i]); loaded = true; } -int -xsetcolorname(int x, const char *name) { +inline int +xsetcolorname(const int x, const char *name) { XRenderColor color = { .alpha = 0xffff }; - Colour colour; + if(!BETWEEN(x, 0, LEN(colorname))) - return -1; + return -1; /* invalid index */ + if(!name) { - if(BETWEEN(x, 16, 16 + 215)) { - int r = (x - 16) / 36, g = ((x - 16) % 36) / 6, b = (x - 16) % 6; - color.red = sixd_to_16bit(r); - color.green = sixd_to_16bit(g); - color.blue = sixd_to_16bit(b); - if(!XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &color, &colour)) - return 0; /* something went wrong */ - dc.col[x] = colour; + if(BETWEEN(x, 16, 6*6*6+16-1)) { + /* 256 colour [16-231] ; same colours as xterm */ + color.red = sixd_to_16bit( ((x-16)/36)%6 ); + color.green = sixd_to_16bit( ((x-16)/6) %6 ); + color.blue = sixd_to_16bit( ((x-16)/1) %6 ); + if (!XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &color, &dc.col[x])) + die("Could not allocate color %d\n", x); return 1; - } else if(BETWEEN(x, 16 + 216, 255)) { - color.red = color.green = color.blue = 0x0808 + 0x0a0a * (x - (16 + 216)); - if(!XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &color, &colour)) - return 0; /* something went wrong */ - dc.col[x] = colour; + } else if(BETWEEN(x, 6*6*6+16, 255)) { + /* grayscale [232-255] */ + color.red = color.green = color.blue = 0x0808 + 0x0a0a * (x-(6*6*6+16)); + if (!XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &color, &dc.col[x])) + die("Could not allocate color %d\n", x); return 1; } else { + /* system colours [0-15, 256-LEN(colorname)] */ + if (!colorname[x]) + return -1; name = colorname[x]; } } - if(!XftColorAllocName(xw.dpy, xw.vis, xw.cmap, name, &colour)) - return 0; - dc.col[x] = colour; + if(!XftColorAllocName(xw.dpy, xw.vis, xw.cmap, name, &dc.col[x])) + return 0; /* invalid name */ return 1; } -- 1.8.3.2 --Multipart=_Mon__26_May_2014_16_36_42_+0200_mym8VRxE4WGadp6Y--Received on Mon Sep 17 2001 - 00:00:00 CEST
This archive was generated by hypermail 2.3.0 : Mon May 26 2014 - 16:48:06 CEST