diff options
| -rw-r--r-- | st.c | 82 | 
1 files changed, 43 insertions, 39 deletions
| @@ -28,8 +28,12 @@  #include <X11/extensions/Xdbe.h>  #include <X11/Xft/Xft.h>  #include <fontconfig/fontconfig.h> +  #define Glyph Glyph_  #define Font Font_ +#define Draw XftDraw * +#define Colour XftColor +#define Colourmap Colormap  #if   defined(__linux)   #include <pty.h> @@ -198,14 +202,14 @@ typedef struct {  /* Purely graphic info */  typedef struct { -	Display* dpy; -	Colormap cmap; +	Display *dpy; +	Colourmap cmap;  	Window win;  	XdbeBackBuffer buf;  	Atom xembed, wmdeletewin;  	XIM xim;  	XIC xic; -	XftDraw *xft_draw; +	Draw draw;  	Visual *vis;  	int scr;  	bool isfixed; /* is fixed geometry? */ @@ -267,12 +271,12 @@ typedef struct {  	int descent;  	short lbearing;  	short rbearing; -	XftFont *xft_set; +	XftFont *set;  } Font;  /* Drawing Context */  typedef struct { -	XftColor xft_col[LEN(colorname) < 256 ? 256 : LEN(colorname)]; +	Colour col[LEN(colorname) < 256 ? 256 : LEN(colorname)];  	GC gc;  	Font font, bfont, ifont, ibfont;  } DC; @@ -2151,19 +2155,19 @@ xresize(int col, int row) {  	xw.tw = MAX(1, 2*borderpx + col * xw.cw);  	xw.th = MAX(1, 2*borderpx + row * xw.ch); -	XftDrawChange(xw.xft_draw, xw.buf); +	XftDrawChange(xw.draw, xw.buf);  }  void  xloadcols(void) {  	int i, r, g, b; -	XRenderColor xft_color = { .alpha = 0 }; +	XRenderColor color = { .alpha = 0 };  	/* load colors [0-15] colors 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.xft_col[i])) { +		if(!XftColorAllocName(xw.dpy, xw.vis, xw.cmap, colorname[i], &dc.col[i])) {  			die("Could not allocate color '%s'\n", colorname[i]);  		}  	} @@ -2172,10 +2176,10 @@ xloadcols(void) {  	for(i = 16, r = 0; r < 6; r++) {  		for(g = 0; g < 6; g++) {  			for(b = 0; b < 6; b++) { -				xft_color.red = r == 0 ? 0 : 0x3737 + 0x2828 * r; -				xft_color.green = g == 0 ? 0 : 0x3737 + 0x2828 * g; -				xft_color.blue = b == 0 ? 0 : 0x3737 + 0x2828 * b; -				if(!XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &xft_color, &dc.xft_col[i])) { +				color.red = r == 0 ? 0 : 0x3737 + 0x2828 * r; +				color.green = g == 0 ? 0 : 0x3737 + 0x2828 * g; +				color.blue = b == 0 ? 0 : 0x3737 + 0x2828 * b; +				if(!XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &color, &dc.col[i])) {  					die("Could not allocate color %d\n", i);  				}  				i++; @@ -2184,9 +2188,9 @@ xloadcols(void) {  	}  	for(r = 0; r < 24; r++, i++) { -		xft_color.red = xft_color.green = xft_color.blue = 0x0808 + 0x0a0a * r; -		if(!XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &xft_color, -					&dc.xft_col[i])) { +		color.red = color.green = color.blue = 0x0808 + 0x0a0a * r; +		if(!XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &color, +					&dc.col[i])) {  			die("Could not allocate color %d\n", i);  		}  	} @@ -2194,8 +2198,8 @@ xloadcols(void) {  void  xtermclear(int col1, int row1, int col2, int row2) { -	XftDrawRect(xw.xft_draw, -			&dc.xft_col[IS_SET(MODE_REVERSE) ? defaultfg : defaultbg], +	XftDrawRect(xw.draw, +			&dc.col[IS_SET(MODE_REVERSE) ? defaultfg : defaultbg],  			borderpx + col1 * xw.cw,  			borderpx + row1 * xw.ch,  			(col2-col1+1) * xw.cw, @@ -2207,8 +2211,8 @@ xtermclear(int col1, int row1, int col2, int row2) {   */  void  xclear(int x1, int y1, int x2, int y2) { -	XftDrawRect(xw.xft_draw, -			&dc.xft_col[IS_SET(MODE_REVERSE) ? defaultfg : defaultbg], +	XftDrawRect(xw.draw, +			&dc.col[IS_SET(MODE_REVERSE) ? defaultfg : defaultbg],  			x1, y1, x2-x1, y2-y1);  } @@ -2245,17 +2249,17 @@ xloadfont(Font *f, FcPattern *pattern) {  	match = XftFontMatch(xw.dpy, xw.scr, pattern, &result);  	if(!match)  		return 1; -	if(!(f->xft_set = XftFontOpenPattern(xw.dpy, match))) { +	if(!(f->set = XftFontOpenPattern(xw.dpy, match))) {  		FcPatternDestroy(match);  		return 1;  	} -	f->ascent = f->xft_set->ascent; -	f->descent = f->xft_set->descent; +	f->ascent = f->set->ascent; +	f->descent = f->set->descent;  	f->lbearing = 0; -	f->rbearing = f->xft_set->max_advance_width; +	f->rbearing = f->set->max_advance_width; -	f->height = f->xft_set->height; +	f->height = f->set->height;  	f->width = f->lbearing + f->rbearing;  	return 0; @@ -2365,8 +2369,8 @@ xinit(void) {  		xw.fy = 0;  	} -	attrs.background_pixel = dc.xft_col[defaultbg].pixel; -	attrs.border_pixel = dc.xft_col[defaultbg].pixel; +	attrs.background_pixel = dc.col[defaultbg].pixel; +	attrs.border_pixel = dc.col[defaultbg].pixel;  	attrs.bit_gravity = NorthWestGravity;  	attrs.event_mask = FocusChangeMask | KeyPressMask  		| ExposureMask | VisibilityChangeMask | StructureNotifyMask @@ -2387,7 +2391,7 @@ xinit(void) {  	xw.buf = XdbeAllocateBackBufferName(xw.dpy, xw.win, XdbeCopied);  	/* Xft rendering context */ -	xw.xft_draw = XftDrawCreate(xw.dpy, xw.buf, xw.vis, xw.cmap); +	xw.draw = XftDrawCreate(xw.dpy, xw.buf, xw.vis, xw.cmap);  	/* input methods */  	xw.xim = XOpenIM(xw.dpy, NULL, NULL, NULL); @@ -2420,20 +2424,20 @@ xdraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) {  	    width = charlen * xw.cw;  	Font *font = &dc.font;  	XGlyphInfo extents; -	XftColor *fg = &dc.xft_col[base.fg], *bg = &dc.xft_col[base.bg], +	Colour *fg = &dc.col[base.fg], *bg = &dc.col[base.bg],  		 *temp, revfg, revbg;  	XRenderColor colfg, colbg;  	if(base.mode & ATTR_BOLD) {  		if(BETWEEN(base.fg, 0, 7)) {  			/* basic system colors */ -			fg = &dc.xft_col[base.fg + 8]; +			fg = &dc.col[base.fg + 8];  		} else if(BETWEEN(base.fg, 16, 195)) {  			/* 256 colors */ -			fg = &dc.xft_col[base.fg + 36]; +			fg = &dc.col[base.fg + 36];  		} else if(BETWEEN(base.fg, 232, 251)) {  			/* greyscale */ -			fg = &dc.xft_col[base.fg + 4]; +			fg = &dc.col[base.fg + 4];  		}  		/*  		 * Those ranges will not be brightened: @@ -2450,8 +2454,8 @@ xdraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) {  		font = &dc.ibfont;  	if(IS_SET(MODE_REVERSE)) { -		if(fg == &dc.xft_col[defaultfg]) { -			fg = &dc.xft_col[defaultbg]; +		if(fg == &dc.col[defaultfg]) { +			fg = &dc.col[defaultbg];  		} else {  			colfg.red = ~fg->color.red;  			colfg.green = ~fg->color.green; @@ -2461,8 +2465,8 @@ xdraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) {  			fg = &revfg;  		} -		if(bg == &dc.xft_col[defaultbg]) { -			bg = &dc.xft_col[defaultfg]; +		if(bg == &dc.col[defaultbg]) { +			bg = &dc.col[defaultfg];  		} else {  			colbg.red = ~bg->color.red;  			colbg.green = ~bg->color.green; @@ -2476,7 +2480,7 @@ xdraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) {  	if(base.mode & ATTR_REVERSE)  		temp = fg, fg = bg, bg = temp; -	XftTextExtentsUtf8(xw.dpy, font->xft_set, (FcChar8 *)s, bytelen, +	XftTextExtentsUtf8(xw.dpy, font->set, (FcChar8 *)s, bytelen,  			&extents);  	width = extents.xOff; @@ -2494,12 +2498,12 @@ xdraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) {  	if(y == term.row-1)  		xclear(winx, winy + xw.ch, winx + width, xw.h); -	XftDrawRect(xw.xft_draw, bg, winx, winy, width, xw.ch); -	XftDrawStringUtf8(xw.xft_draw, fg, font->xft_set, winx, +	XftDrawRect(xw.draw, bg, winx, winy, width, xw.ch); +	XftDrawStringUtf8(xw.draw, fg, font->set, winx,  			winy + font->ascent, (FcChar8 *)s, bytelen);  	if(base.mode & ATTR_UNDERLINE) { -		XftDrawRect(xw.xft_draw, fg, winx, winy + font->ascent + 1, +		XftDrawRect(xw.draw, fg, winx, winy + font->ascent + 1,  				width, 1);  	}  } | 
