Ever wonder why so many bright people are writing all those nifty
X GUI,
UI, drawing, and
graphics libraries? Why not just link against
-lX11 -lXext? Here's a partial
answer. I found it in
hacks/screenhack.h in
JWZ's amazing
xscreensaver distribution. The
screenhack files are supposed to make writing a simple
graphics hack bearable. But why does it have to be so hard?
/* Found in Don Hopkins' .plan file:
*
* The color situation is a total flying circus. The X approach to
* device independence is to treat everything like a MicroVax framebuffer
* on acid. A truely portable X application is required to act like the
* persistent customer in the Monty Python ``Cheese Shop'' sketch. Even
* the simplest applications must answer many difficult questions, like:
*
* WHAT IS YOUR DISPLAY?
* display = XOpenDisplay("unix:0");
* WHAT IS YOUR ROOT?
* root = RootWindow(display, DefaultScreen(display));
* AND WHAT IS YOUR WINDOW?
* win = XCreateSimpleWindow(display, root, 0, 0, 256, 256, 1,
* BlackPixel(display, DefaultScreen(display)),
* WhitePixel(display, DefaultScreen(display)))
* OH ALL RIGHT, YOU CAN GO ON.
*
* WHAT IS YOUR DISPLAY?
* display = XOpenDisplay("unix:0");
* WHAT IS YOUR COLORMAP?
* cmap = DefaultColormap(display, DefaultScreen(display));
* AND WHAT IS YOUR FAVORITE COLOR?
* favorite_color = 0; / * Black. * /
* / * Whoops! No, I mean: * /
* favorite_color = BlackPixel(display, DefaultScreen(display));
* / * AAAYYYYEEEEE!! (client dumps core & falls into the chasm) * /
*
* WHAT IS YOUR DISPLAY?
* display = XOpenDisplay("unix:0");
* WHAT IS YOUR VISUAL?
* struct XVisualInfo vinfo;
* if (XMatchVisualInfo(display, DefaultScreen(display),
* 8, PseudoColor, &vinfo) != 0)
* visual = vinfo.visual;
* AND WHAT IS THE NET SPEED VELOCITY OF AN XConfigureWindow REQUEST?
* / * Is that a SubStructureRedirectMask or a ResizeRedirectMask? * /
* WHAT?! HOW AM I SUPPOSED TO KNOW THAT?
* AAAAUUUGGGHHH!!!! (server dumps core & falls into the chasm)
*/
This is a literal quote from the source file, which is (presumably) a literal quote from the quoted plan file. I'm considering this inclusion "fair use"; I've no idea how else I could possibly include this.