1 #include <stdio.h>
2 #include <ctype.h>
3 #include <X11/Xlib.h>
4 #include <math.h>
5 #include <sys/socket.h>
6 #include <sys/time.h>
7 #include "struct.h"
8 
9 #define TITLESIZE (7*X_PIECE_SIZE)
10 
11 #ifndef FD_SET
12 
13 #define MAXSELFD	64
14 typedef long	fd_mask;
15 #define NFDBITS	(sizeof(fd_mask) * NBBY)	/* bits per mask (power of 2!)*/
16 #define NFDSHIFT 5				/* Shift based on above */
17 #ifndef howmany
18 #define	howmany(x, y)	(((x)+((y)-1))/(y))
19 #endif howmany
20 
21 #define	NBBY	8		/* number of bits in a byte */
22 
23 
24 #define	FD_SETSIZE	64
25 
26 
27 #define	FD_SET(n, p)	((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS)))
28 #define	FD_CLR(n, p)	((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS)))
29 #define	FD_ISSET(n, p)	((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS)))
30 #define FD_ZERO(p)	bzero((char *)(p), sizeof(*(p)))
31 
32 #endif
33 
34 extern Display *dpy, *odpy, *currdpy;
35 extern Window win, owin, currwin;
36 extern GC gc, ogc, currgc;
37 extern int xsize, ysize, obstacle_color, scr, oscr;
38 extern int botmode;
39 extern Pixmap bamp, obamp, currbamp;
40 extern int xwin,ywin;
41 extern Pixmap mapw, mapb, omapw, omapb, wblock, bblock, owblock, obblock;
42 extern int oldw, oldb;
43 extern Cursor upc, downc, oupc, odownc;
44 extern Bool perfection;
45 
46 int waitferkey();
47 
readbitmaps()48 readbitmaps()
49 {
50   unsigned int x, y, xh, yh;
51   Pixmap curs, cmask, loader;
52   XColor fg,bg,garbage;
53 
54   XSync(dpy, True);
55   XReadBitmapFile(dpy, win, WHITESTONE, &x, &y, &loader, &xh, &yh);
56   mapw = XCreatePixmap(dpy, win, x, y, DefaultDepth(dpy,scr));
57   XCopyPlane(dpy, loader, mapw, gc, 0, 0, x, y, 0, 0, 1);
58   XFreePixmap(dpy, loader);
59   XReadBitmapFile(dpy, win, BLACKSTONE, &x, &y, &loader, &xh, &yh);
60   mapb = XCreatePixmap(dpy, win, x, y, DefaultDepth(dpy,scr));
61   XCopyPlane(dpy, loader, mapb, gc, 0, 0, x, y, 0, 0, 1);
62   XFreePixmap(dpy, loader);
63   XReadBitmapFile(dpy, win, BLACKBLOCK, &x, &y, &loader, &xh, &yh);
64   bblock = XCreatePixmap(dpy, win, x, y, DefaultDepth(dpy,scr));
65   XCopyPlane(dpy, loader, bblock, gc, 0, 0, x, y, 0, 0, 1);
66   XFreePixmap(dpy, loader);
67   XReadBitmapFile(dpy, win, WHITEBLOCK, &x, &y, &loader, &xh, &yh);
68   wblock = XCreatePixmap(dpy, win, x, y, DefaultDepth(dpy,scr));
69   XCopyPlane(dpy, loader, wblock, gc, 0, 0, x, y, 0, 0, 1);
70   XFreePixmap(dpy, loader);
71 
72   fg.pixel = WhitePixel(dpy,scr);
73   bg.pixel = BlackPixel(dpy,scr);
74   XQueryColor(dpy, DefaultColormap(dpy,scr), &fg);
75   XQueryColor(dpy, DefaultColormap(dpy,scr), &bg);
76   XAllocNamedColor(dpy, DefaultColormap(dpy,scr), "lime green", &fg, &garbage);
77   XAllocNamedColor(dpy, DefaultColormap(dpy,scr), "magenta", &bg, &garbage);
78 
79   XReadBitmapFile(dpy, win, UPCURSOR, &x, &y, &curs, &xh, &yh);
80   XReadBitmapFile(dpy, win, UPMASK, &x, &y, &cmask, &xh, &yh);
81 
82   upc = XCreatePixmapCursor(dpy, curs, cmask, &fg, &bg, xh, yh);
83   XFreePixmap(dpy,curs);
84   XFreePixmap(dpy,cmask);
85 
86   XReadBitmapFile(dpy, win, DOWNCURSOR, &x, &y, &curs, &xh, &yh);
87   XReadBitmapFile(dpy, win, DOWNMASK, &x, &y, &cmask, &xh, &yh);
88   downc = XCreatePixmapCursor(dpy, curs, cmask, &fg, &bg, xh, yh);
89   XFreePixmap(dpy,curs);
90   XFreePixmap(dpy,cmask);
91   XDefineCursor(dpy,win,upc);
92   if (botmode) {
93 	XSync(odpy, True);
94   	fg.pixel = WhitePixel(odpy,oscr);
95   	bg.pixel = BlackPixel(odpy,oscr);
96   	XQueryColor(odpy, DefaultColormap(odpy,oscr), &fg);
97   	XQueryColor(odpy, DefaultColormap(odpy,oscr), &bg);
98     XAllocNamedColor(odpy, DefaultColormap(odpy,oscr), "lime green", &fg, &garbage);
99     XAllocNamedColor(odpy, DefaultColormap(odpy,oscr), "magenta", &bg, &garbage);
100 	XReadBitmapFile(odpy, owin, BLACKSTONE, &x, &y, &loader, &x, &y);
101   	omapb = XCreatePixmap(odpy, owin, x, y, DefaultDepth(odpy,oscr));
102   	XCopyPlane(odpy, loader, omapb, ogc, 0, 0, x, y, 0, 0, 1);
103   	XFreePixmap(odpy, loader);
104 	XReadBitmapFile(odpy, owin, WHITESTONE, &x, &y, &loader, &x, &y);
105   	omapw = XCreatePixmap(odpy, owin, x, y, DefaultDepth(odpy,oscr));
106   	XCopyPlane(odpy, loader, omapw, ogc, 0, 0, x, y, 0, 0, 1);
107   	XFreePixmap(odpy, loader);
108   	XReadBitmapFile(odpy, owin, BLACKBLOCK, &x, &y, &loader, &x, &y);
109   	obblock = XCreatePixmap(odpy, owin, x, y, DefaultDepth(odpy,oscr));
110   	XCopyPlane(odpy, loader, obblock, ogc, 0, 0, x, y, 0, 0, 1);
111   	XFreePixmap(odpy, loader);
112   	XReadBitmapFile(odpy, owin, WHITEBLOCK, &x, &y, &loader, &x, &y);
113   	owblock = XCreatePixmap(odpy, owin, x, y, DefaultDepth(odpy,oscr));
114   	XCopyPlane(odpy, loader, owblock, ogc, 0, 0, x, y, 0, 0, 1);
115   	XFreePixmap(odpy, loader);
116 
117   	XReadBitmapFile(odpy, owin, UPCURSOR, &x, &y, &curs, &xh, &yh);
118         XReadBitmapFile(odpy, owin, UPMASK, &x, &y, &cmask, &x, &y);
119   	oupc = XCreatePixmapCursor(odpy, curs, cmask, &fg, &bg, xh, yh);
120   	XFreePixmap(odpy,curs);
121         XFreePixmap(odpy,cmask);
122   	XReadBitmapFile(odpy, owin, DOWNCURSOR, &x, &y, &curs, &xh, &yh);
123         XReadBitmapFile(odpy, owin, DOWNMASK, &x, &y, &cmask, &x, &y);
124   	odownc = XCreatePixmapCursor(odpy, curs, cmask, &fg, &bg, xh, yh);
125 	XFreePixmap(odpy,curs);
126         XFreePixmap(odpy,cmask);
127  	XDefineCursor(odpy,owin,oupc);
128 	XFlush(odpy);
129   }
130 }
131 
show_title()132 show_title()
133 {
134   Pixmap title, otitle, loader;
135   int ax, ay, x, y, hx, hy;
136 
137   XReadBitmapFile(dpy, win, TITLE, &x, &y, &loader, &hx, &hy);
138   title = XCreatePixmap(dpy, win, x, y, DefaultDepth(dpy,scr));
139   XCopyPlane(dpy, loader, title, gc, 0, 0, x, y, 0, 0, 1);
140   XFreePixmap(dpy, loader);
141   if (botmode)
142     XReadBitmapFile(odpy, owin, TITLE, &x, &y, &otitle, &hx, &hy);
143   ax = ((return_x_size()*X_PIECE_SIZE)-x) / 2;
144   ay = ax;
145   XCopyArea(dpy, title, win, gc, 0,0, x, y, ax, ay);
146   if (botmode)
147     XCopyArea(odpy, otitle, owin, ogc, 0,0, x, y, ax, ay);
148   show_scores(dpy, win, gc, oldw, oldb);
149   if (botmode)
150     show_scores(odpy, owin, ogc, oldw, oldb);
151 }
152 
153 
154 
155 
156 
157 
158 
159 
160 
161 
162 
163 
164 
165 
166 
167 
168 
169