Trying to use an xlib GXxor
Alan Corey
alan01346 at gmail.com
Mon Feb 6 01:18:41 UTC 2017
This probably isn't exactly the right list for this, but maybe
somebody lingering can answer. I'm trying to use xor to put a line on
the screen then erase it again when I want. With the XSetFunction()
to xor uncommented I get no line. If I comment it out I get a line,
but no erase. If I move it between the draws I get no erase.
xor (exclusive or) should set every bit where there's one and only one
of the inputs true. If you xor something to the screen twice the 2nd
time erases what you wrote the first time. Except I'm doing something
wrong or there's something I didn't consider.
/*
My first recreational X activity. Based on Tronche's tutorial.
*/
#include <X11/Xlib.h> // Every Xlib program must include this
#include <assert.h> // I include this to test return values the lazy way
#include <unistd.h> // So we got the profile for 10 seconds
#include <stdio.h>
#include <stdlib.h> // for exit
Display *dpy;
int blackcolor,whitecolor;
Window w;
GC gc;
XEvent e; // a struct
#define WWIDTH 320
#define WHEIGHT 240
int main(void) {
dpy = XOpenDisplay(NULL);
assert(dpy); // be sure we've got dpy
blackcolor = BlackPixel(dpy, DefaultScreen(dpy));
whitecolor = WhitePixel(dpy, DefaultScreen(dpy));
w = XCreateSimpleWindow(dpy,DefaultRootWindow(dpy),0,0,WWIDTH,WHEIGHT,0,\
blackcolor,whitecolor);
XSelectInput(dpy,w,StructureNotifyMask); // watch notifications
XMapWindow(dpy,w);
gc = XCreateGC(dpy,w,0,NULL);
XSetFunction(dpy,gc,GXxor); // sets xor mode
XSetForeground(dpy,gc,blackcolor);
// MapNotify wait loop, wait for a MapNotify event before drawing
// confirms that XMapWindow worked.
for (;;) {
XNextEvent(dpy,&e); // fetch an event
if (e.type == MapNotify) // done when we find one
break;
}
XDrawLine(dpy, w, gc, 10, 60, 180, 20); // draw a line
XFlush(dpy);
printf("after draw\n"); // to stdout
getchar(); // wait for keypress
XDrawLine(dpy, w, gc, 10, 60, 180, 20); // should erase it
XFlush(dpy); // sends request to server
printf("After erase\n");
getchar();
return 0;
}
--
-------------
No, I won't call it "climate change", do you have a "reality problem"? - AB1JX
Impeach Impeach Impeach Impeach Impeach Impeach Impeach Impeach
More information about the xorg
mailing list