34 lines
964 B
D
34 lines
964 B
D
|
|
module patch.invert;
|
||
|
|
|
||
|
|
import st;
|
||
|
|
import x;
|
||
|
|
import config;
|
||
|
|
import patches;
|
||
|
|
import xft_types : XRenderColor, XftColor;
|
||
|
|
import deimos.X11.Xlib : Display, Visual;
|
||
|
|
import deimos.X11.X : Colormap;
|
||
|
|
|
||
|
|
static if (isPatchEnabled!"INVERT_PATCH") {
|
||
|
|
__gshared int invertcolors = 0;
|
||
|
|
|
||
|
|
extern(C) void invert(const(Arg)* dummy) {
|
||
|
|
invertcolors = !invertcolors;
|
||
|
|
redraw();
|
||
|
|
}
|
||
|
|
|
||
|
|
XftColor invertedcolor(XftColor* clr) {
|
||
|
|
XRenderColor rc;
|
||
|
|
XftColor inverted;
|
||
|
|
rc.red = ~clr.color.red;
|
||
|
|
rc.green = ~clr.color.green;
|
||
|
|
rc.blue = ~clr.color.blue;
|
||
|
|
rc.alpha = clr.color.alpha;
|
||
|
|
|
||
|
|
// Import external function defined in x.d
|
||
|
|
extern(C) int XftColorAllocValue(Display* dpy, Visual* visual, Colormap cmap,
|
||
|
|
const(XRenderColor)* color, XftColor* result);
|
||
|
|
|
||
|
|
XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &rc, &inverted);
|
||
|
|
return inverted;
|
||
|
|
}
|
||
|
|
}
|