#include #include #include #include #include #include Window L; GC N; Display *K; XEvent O; XImage *Q; float w, x, y[7 << 16]; struct timeval S, U; int a, b, c, d = 92, e, f, g, h, i, j, k, l, m, n, o, p, *q[96], r[7 << 16], s[96], *t, *u = r, *v, P = 256, R[64], T, J = 12288; struct { int a, b, c, d, e; } A[9999], *B, *G, *H; unsigned char C, D[9999], *E = D, F[] = " .bmp"; FILE *I; #define Q(o,X,Y,C)B->b=b+32*o,B->c=c+32*X,B->d=Y,B->e=C,B++->a=l, #define D(o,X)(int)((X*(B->b-e)-o*(B->c-f))/(x*B->e-w*B->d)) int main (int X, char **Y) { for (j = J << 8, x = y[i], w = y[i + 32], B = A; k = D (x, w), B->b; k >> 8 ? 0 : (l = D (B->d, B->e), l > 0 && l < j) ? j = l, h = k, g = B->a : 0, B++); for (; X && (p = 1 | 3 * (o = (--X < 2 || 119 - 1[Y[1]] ? 320 : atoi (2[Y]))) / 4);) { for (e = f = J / 2, K = XOpenDisplay (0); m < o << 8; y[m] = sin ((m & 255) / 20.4 + asin ((m / P - o / 2) / 3.2 / o)), D[m & 511] = 10 + d * !(1 & (m >> 3 & m)), r[m++] = m / 18 << (16 & (m >> 6 ^ m))); for (N = XCreateGC (K, L = XCreateSimpleWindow (K, RootWindow (K, 0), 0, 0, o, p, 0, 0, 0), 0, 0), ((I = fopen (X ? Y[X] : "", "r")) ? fread (E + 1, 1, 1 << 15, I), fclose (I) : 0), B = G = A + J / 3; *++E; f = l == 32 ? e = b + 99, c + 99 : f) for (l = *E - 10, *F = *E, k = !l, b *= !k, c += P * k, b += P; l > 54 && l < 96 && (Q (0, 0, 1, 0) Q (8, 0, 0, 1) Q (8, 8, -1, 0) Q (0, 8, 0, -1) ! q[l] && (s[l] = 1, q[l] = u, I = fopen (F, "r"))); l = J) for (q[l] = ++u + 19, m = 2; n = (m++ % 3 ? n : 0 ** ++u) >> 8 | C << 16, *u = n, 0 < fread (&C, 1, 1, I) || (m /= J, s[l] = m ? m : 1) * fclose (I);); for (XMapWindow (K, L), XSelectInput (K, L, KeyPressMask | KeyReleaseMask), H = A; G->b; *H = *G++, H += !B->b) for (B = A + J / 3; B->b && !(B != G && B->b == G->b - 128 * (B->d - G->d) && B->c == G->c - 128 * (B->e - G->e)); B++); for (Q = XCreateImage (K, DefaultVisual (K, 0), DefaultDepth (K, 0), ZPixmap, 0, (char *) (v = malloc (4 * o * p)), o, p, 32, 0); d = (d + R[19] - R[17]) & 127, n = R[18] - R[20], n ? (i = o * 128 + d + (n < 0) * 64, main (0, Y) > 200) ? e += (int) (y[i] * 64), f += (int) (y[i + 32] * 64) : 1 : 1; XSync (K, 0), gettimeofday (&S, 0), m = T - S.tv_usec) { for (T -= (m > 0 && m < J * 4 ? U.tv_usec = m, select (0, 0, 0, 0, &U) : m) - 4 * J, a = a + 1 & -1 >> 1, m = 0; k = 1 + (int) (p * 512 / ((i = m * P + d, g = n = 0, main (0, Y)) * y[m * P + 32])), m < o; m++) for (t = g ? c = 64 * s[g], q[g] + h / 4 + 64 * (a / 3 % s[g]) : t; l = 32 - (17 << (k < 2)) * (2 * n - p) / k, n < p; v[m + o * n++] = l >> 6 ? 4477904 << (l < 0) : t[c * l]); for (XPutImage (K, L, N, Q, 0, 0, 0, 0, o, p); XPending (K); R[63 & XLookupKeysym (&O.xkey, 0 & XNextEvent (K, &O))] ^= O.type == KeyPress || O.type == KeyRelease); } } return j; }