# st

Unnamed repository; edit this file 'description' to name the repository.

| Log | Files | Refs | README | LICENSE

    commit 3544e354b2dcdfcced1a2f4aeedb4d479abd543c
    parent cf890e5bf06a65a35fe195aa1ef8ae3e1eb55f51
    Author: FRIGN <dev@frign.de>
    Date:   Thu, 22 May 2014 15:00:33 +0200

    Fix colour-model and simplify xloadcols()

    Signed-off-by: Christoph Lohmann <20h@r-36.net>

    Diffstat:
    Mst.c | 56++++++++++++++++++++------------------------------------

    1 file changed, 20 insertions(+), 36 deletions(-)
    diff --git a/st.c b/st.c
    @@ -340,7 +340,7 @@ typedef struct {

     /* Drawing Context */
     typedef struct {
    -	Colour col[LEN(colorname) < 256 ? 256 : LEN(colorname)];
    +	Colour col[MAX(LEN(colorname), 256)];
     	Font font, bfont, ifont, ibfont;
     	GC gc;
     } DC;
    @@ -2715,7 +2715,7 @@ sixd_to_16bit(int x) {

     void
     xloadcols(void) {
    -	int i, r, g, b;
    +	int i;
     	XRenderColor color = { .alpha = 0xffff };
     	static bool loaded;
     	Colour *cp;
    @@ -2725,7 +2725,7 @@ xloadcols(void) {
     			XftColorFree(xw.dpy, xw.vis, xw.cmap, cp);
     	}

    -	/* load colors [0-15] colors and [256-LEN(colorname)[ (config.h) */
    +	/* load colours [0-15] and [256-LEN(colorname)] (config.h) */
     	for(i = 0; i < LEN(colorname); i++) {
     		if(!colorname[i])
     			continue;
    @@ -2734,27 +2734,20 @@ xloadcols(void) {
     		}
     	}

    -	/* load colors [16-255] ; same colors as xterm */
    -	for(i = 16, r = 0; r < 6; r++) {
    -		for(g = 0; g < 6; g++) {
    -			for(b = 0; b < 6; b++) {
    -				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, &dc.col[i])) {
    -					die("Could not allocate color %d\n", i);
    -				}
    -				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);
     	}
    -
    -	for(r = 0; r < 24; r++, i++) {
    -		color.red = color.green = color.blue = 0x0808 + 0x0a0a * r;
    -		if(!XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &color,
    -					&dc.col[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);
    -		}
     	}
     	loaded = true;
     }
    @@ -3149,22 +3142,13 @@ xdraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) {
     	}

     	if(base.mode & ATTR_BOLD) {
    -		if(BETWEEN(base.fg, 0, 7)) {
    -			/* basic system colors */
    -			fg = &dc.col[base.fg + 8];
    -		} else if(BETWEEN(base.fg, 16, 195)) {
    -			/* 256 colors */
    -			fg = &dc.col[base.fg + 36];
    -		} else if(BETWEEN(base.fg, 232, 251)) {
    -			/* greyscale */
    -			fg = &dc.col[base.fg + 4];
    -		}
     		/*
    -		 * Those ranges will not be brightened:
    -		 *    8 - 15 – bright system colors
    -		 *    196 - 231 – highest 256 color cube
    -		 *    252 - 255 – brightest colors in greyscale
    +		 * change basic system colours [0-7]
    +		 * to bright system colours [8-15]
     		 */
    +		if(BETWEEN(base.fg, 0, 7))
    +			fg = &dc.col[base.fg + 8];
    +
     		font = &dc.bfont;
     		frcflags = FRC_BOLD;
     	}