diff options
Diffstat (limited to 'patches/st-alpha-0.8.1.diff')
-rw-r--r-- | patches/st-alpha-0.8.1.diff | 183 |
1 files changed, 0 insertions, 183 deletions
diff --git a/patches/st-alpha-0.8.1.diff b/patches/st-alpha-0.8.1.diff deleted file mode 100644 index 9dd26c3..0000000 --- a/patches/st-alpha-0.8.1.diff +++ /dev/null @@ -1,183 +0,0 @@ -diff --git a/config.def.h b/config.def.h -index feec7e2..e373018 100644 ---- a/config.def.h -+++ b/config.def.h -@@ -82,6 +82,9 @@ char *termname = "st-256color"; - */ - unsigned int tabspaces = 8; - -+/* bg opacity */ -+unsigned int alpha = 0xcd; -+ - /* Terminal colors (16 first used in escape sequence) */ - static const char *colorname[] = { - /* 8 normal colors */ -diff --git a/config.mk b/config.mk -index 039c42c..3b00d7e 100644 ---- a/config.mk -+++ b/config.mk -@@ -14,7 +14,7 @@ X11LIB = /usr/X11R6/lib - INCS = -I$(X11INC) \ - `pkg-config --cflags fontconfig` \ - `pkg-config --cflags freetype2` --LIBS = -L$(X11LIB) -lm -lrt -lX11 -lutil -lXft \ -+LIBS = -L${X11LIB} -lm -lrt -lX11 -lutil -lXft -lXrender \ - `pkg-config --libs fontconfig` \ - `pkg-config --libs freetype2` - -diff --git a/st.h b/st.h -index cdd25ae..850c5f0 100644 ---- a/st.h -+++ b/st.h -@@ -134,6 +134,7 @@ extern char *worddelimiters; - extern int allowaltscreen; - extern char *termname; - extern unsigned int tabspaces; -+extern unsigned int alpha; - extern unsigned int defaultfg; - extern unsigned int defaultbg; - extern MouseKey mkeys[]; -diff --git a/win.h b/win.h -index 31f327d..d277477 100644 ---- a/win.h -+++ b/win.h -@@ -23,6 +23,10 @@ enum win_mode { - |MODE_MOUSEMANY, - }; - -+/* alpha */ -+#define OPAQUE 0Xff -+#define USE_ARGB (alpha != OPAQUE && opt_embed == NULL) -+ - void xbell(void); - void xclipcopy(void); - void xdrawcursor(int, int, Glyph, int, int, Glyph); -diff --git a/x.c b/x.c -index f4a6be7..840d2fa 100644 ---- a/x.c -+++ b/x.c -@@ -99,6 +99,7 @@ typedef struct { - XSetWindowAttributes attrs; - int scr; - int isfixed; /* is fixed geometry? */ -+ int depth; /* bit depth */ - int l, t; /* left and top offset */ - int gm; /* geometry mask */ - } XWindow; -@@ -698,7 +699,7 @@ xresize(int col, int row) - - XFreePixmap(xw.dpy, xw.buf); - xw.buf = XCreatePixmap(xw.dpy, xw.win, win.w, win.h, -- DefaultDepth(xw.dpy, xw.scr)); -+ xw.depth); - XftDrawChange(xw.draw, xw.buf); - xclear(0, 0, win.w, win.h); - -@@ -758,6 +759,13 @@ xloadcols(void) - else - die("Could not allocate color %d\n", i); - } -+ -+ /* set alpha value of bg color */ -+ if (USE_ARGB) { -+ dc.col[defaultbg].color.alpha = (0xffff * alpha) / OPAQUE; -+ dc.col[defaultbg].pixel &= 0x00111111; -+ dc.col[defaultbg].pixel |= alpha << 24; -+ } - loaded = 1; - } - -@@ -779,6 +787,17 @@ xsetcolorname(int x, const char *name) - return 0; - } - -+void -+xtermclear(int col1, int row1, int col2, int row2) -+{ -+ XftDrawRect(xw.draw, -+ &dc.col[IS_SET(MODE_REVERSE) ? defaultfg : defaultbg], -+ borderpx + col1 * win.cw, -+ borderpx + row1 * win.ch, -+ (col2-col1+1) * win.cw, -+ (row2-row1+1) * win.ch); -+} -+ - /* - * Absolute coordinates. - */ -@@ -1018,7 +1037,40 @@ xinit(int cols, int rows) - if (!(xw.dpy = XOpenDisplay(NULL))) - die("Can't open display\n"); - xw.scr = XDefaultScreen(xw.dpy); -- xw.vis = XDefaultVisual(xw.dpy, xw.scr); -+ xw.depth = (USE_ARGB) ? 32: XDefaultDepth(xw.dpy, xw.scr); -+ if (!USE_ARGB) -+ xw.vis = XDefaultVisual(xw.dpy, xw.scr); -+ else { -+ XVisualInfo *vis; -+ XRenderPictFormat *fmt; -+ int nvi; -+ int i; -+ -+ XVisualInfo tpl = { -+ .screen = xw.scr, -+ .depth = 32, -+ .class = TrueColor -+ }; -+ -+ vis = XGetVisualInfo(xw.dpy, -+ VisualScreenMask | VisualDepthMask | VisualClassMask, -+ &tpl, &nvi); -+ xw.vis = NULL; -+ for (i = 0; i < nvi; i++) { -+ fmt = XRenderFindVisualFormat(xw.dpy, vis[i].visual); -+ if (fmt->type == PictTypeDirect && fmt->direct.alphaMask) { -+ xw.vis = vis[i].visual; -+ break; -+ } -+ } -+ -+ XFree(vis); -+ -+ if (!xw.vis) { -+ fprintf(stderr, "Couldn't find ARGB visual.\n"); -+ exit(1); -+ } -+ } - - /* font */ - if (!FcInit()) -@@ -1028,7 +1080,11 @@ xinit(int cols, int rows) - xloadfonts(usedfont, 0); - - /* colors */ -- xw.cmap = XDefaultColormap(xw.dpy, xw.scr); -+ if (!USE_ARGB) -+ xw.cmap = XDefaultColormap(xw.dpy, xw.scr); -+ else -+ xw.cmap = XCreateColormap(xw.dpy, XRootWindow(xw.dpy, xw.scr), -+ xw.vis, None); - xloadcols(); - - /* adjust fixed window geometry */ -@@ -1051,16 +1107,15 @@ xinit(int cols, int rows) - if (!(opt_embed && (parent = strtol(opt_embed, NULL, 0)))) - parent = XRootWindow(xw.dpy, xw.scr); - xw.win = XCreateWindow(xw.dpy, parent, xw.l, xw.t, -- win.w, win.h, 0, XDefaultDepth(xw.dpy, xw.scr), InputOutput, -+ win.w, win.h, 0, xw.depth, InputOutput, - xw.vis, CWBackPixel | CWBorderPixel | CWBitGravity - | CWEventMask | CWColormap, &xw.attrs); - - memset(&gcvalues, 0, sizeof(gcvalues)); - gcvalues.graphics_exposures = False; -- dc.gc = XCreateGC(xw.dpy, parent, GCGraphicsExposures, -- &gcvalues); -- xw.buf = XCreatePixmap(xw.dpy, xw.win, win.w, win.h, -- DefaultDepth(xw.dpy, xw.scr)); -+ xw.buf = XCreatePixmap(xw.dpy, xw.win, win.w, win.h, xw.depth); -+ dc.gc = XCreateGC(xw.dpy, (USE_ARGB) ? xw.buf: parent, -+ GCGraphicsExposures, &gcvalues); - XSetForeground(xw.dpy, dc.gc, dc.col[defaultbg].pixel); - XFillRectangle(xw.dpy, xw.buf, dc.gc, 0, 0, win.w, win.h); - |