From 908d40a0e7b8f59a2a9492493db16c1055901a11 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Tue, 16 Oct 2007 22:42:00 +0000 Subject: Stern X11 version --- stern.c | 48 +++++++++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/stern.c b/stern.c index e104fc3..8f235e3 100644 --- a/stern.c +++ b/stern.c @@ -17,8 +17,8 @@ void DrawObject(int); void MainLoop(void); #define Usleep 10000 -#define Width 800 -#define Height 600 +#define Width 400 +#define Height 400 #define Pi 3.1415926 #define SECOND @@ -91,6 +91,7 @@ GC gc; int main(void) { + XEvent event; int screen; int black, white; int r = 0; @@ -101,35 +102,40 @@ int main(void) white = WhitePixel(display, screen); win = XCreateSimpleWindow(display, DefaultRootWindow(display), 0, 0, Width, Height, 0, black, white); - XMapWindow(display, win); + + XSelectInput(display, win, StructureNotifyMask + | ExposureMask | KeyPressMask); + gc = XCreateGC(display, win, 0, NULL); - XSetForeground(display, gc, black); XSetBackground(display, gc, white); - XSetLineAttributes(display, gc, 2, LineSolid, CapButt, JoinBevel); XSetFillStyle(display, gc, FillSolid); - XSelectInput(display, win, StructureNotifyMask); - for (;;) { - XEvent event; - XNextEvent(display, &event); - if (event.type == MapNotify) - break; - } + XMapWindow(display, win); for (;;) { - if (r >= 360) - r = 0; - - XClearWindow(display, win); - DrawObject(++r); - XFlush(display); + if (XPending(display) == 0) { + XClearWindow(display, win); + if (r >= 360) + r = 0; + DrawObject(++r); + } else + XNextEvent(display, &event); + + switch (event.type) { + case Expose: + break; + case MapNotify: + break; + case KeyPress: + XCloseDisplay(display); + exit(0); + } usleep(Usleep); - } - XCloseDisplay(display); + } return 0; } @@ -173,5 +179,5 @@ Calc3D(int *w, int *x, int *y) *x = 2 * X * (Y + D) / D + Width / 2; *y = 2 * Z * (Y + D) / D + Height / 2; - return Y < 0 ? 1 : 0; + return Y < 0; } -- cgit v1.2.3