|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T d
Length: 9770 (0x262a) Types: TextFile Names: »draw.c«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987 └─⟦this⟧ »EUUGD18/X/Xtetris/draw.c«
#include "defs.h" draw_shadow(shape_no, xpos, ypos, rot, col) int shape_no, xpos, ypos, rot, col; { int y1; int x1, x2, x3, x4; int t0, t1, t2, t3; int xsize; t0 = shape[shape_no].table[0][rot]; /* Bit map of 1st Row */ t1 = shape[shape_no].table[1][rot]; /* Bit map of 2nd Row */ t2 = shape[shape_no].table[2][rot]; /* Bit map of 3rd Row */ t3 = shape[shape_no].table[3][rot]; /* Bit map of 4th Row */ x1 = xpos * UNIT; /* Position of 1st column of block grid */ x2 = x1 + UNIT; /* Position of 2nd column of block grid */ x3 = x2 + UNIT; /* Position of 3rd column of block grid */ x4 = x3 + UNIT; /* Position of 4th column of block grid */ y1 = UHEIGHT * UNIT + SHADOW_OFFSET / 2; xsize = UWIDTH * UNIT; XSetFunction(XtDisplay(toplevel), gc, GXclear); XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, 0, y1, xsize, UNIT); XFlush(XtDisplay(toplevel)); if (col == WHITE) XSetFunction(XtDisplay(toplevel), gc, GXclear); else XSetFunction(XtDisplay(toplevel), gc, GXcopy); if (t0 & 8 || t1 & 8 || t2 & 8 || t3 & 8) XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, x1, y1, UNIT, UNIT); if (t0 & 4 || t1 & 4 || t2 & 4 || t3 & 4) XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, x2, y1, UNIT, UNIT); if (t0 & 2 || t1 & 2 || t2 & 2 || t3 & 2) XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, x3, y1, UNIT, UNIT); if (t0 & 1 || t1 & 1 || t2 & 1 || t3 & 1) XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, x4, y1, UNIT, UNIT); XFlush(XtDisplay(toplevel)); } show_next() { int y, y1, xsize; y = UHEIGHT * UNIT + SHADOW_HEIGHT; xsize = UNIT * UWIDTH; XSetFunction(XtDisplay(toplevel), gc, GXclear); XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, 0, y + UNIT, xsize, NEXT_HEIGHT - UNIT); XSetFunction(XtDisplay(toplevel), gc, GXcopy); XDrawString(XtDisplay(toplevel), XtWindow(canvas), gc, 5, y + UNIT, "Next block", 10); y1 = y / UNIT + 1; print_shape(next_no, 5, y1, next_rot, shape[next_no].color); XFlush(XtDisplay(toplevel)); } print_shape(shape_no, x, y, rot, col) int shape_no, x, y, rot, col; { int x1, x2, x3, x4, y1; int t0, t1, t2, t3; t0 = shape[shape_no].table[0][rot]; /* Bit map of 1st Row */ t1 = shape[shape_no].table[1][rot]; /* Bit map of 2nd Row */ t2 = shape[shape_no].table[2][rot]; /* Bit map of 3rd Row */ t3 = shape[shape_no].table[3][rot]; /* Bit map of 4th Row */ x1 = x * UNIT; /* Position of 1st column of block grid */ x2 = x1 + UNIT; /* Position of 2nd column of block grid */ x3 = x2 + UNIT; /* Position of 3rd column of block grid */ x4 = x3 + UNIT; /* Position of 4th column of block grid */ y1 = y * UNIT; /* Position of 1st row of block grid */ if (col == WHITE) XSetFunction(XtDisplay(toplevel), gc, GXclear); else XSetFunction(XtDisplay(toplevel), gc, GXcopy); if (y > -1) { if (t0 & 8) XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, x1, y1, UNIT, UNIT); if (t0 & 4) XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, x2, y1, UNIT, UNIT); if (t0 & 2) XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, x3, y1, UNIT, UNIT); if (t0 & 1) XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, x4, y1, UNIT, UNIT); } y1 += UNIT; /* Position of next row */ if (y > -2) { if (t1 & 8) XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, x1, y1, UNIT, UNIT); if (t1 & 4) XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, x2, y1, UNIT, UNIT); if (t1 & 2) XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, x3, y1, UNIT, UNIT); if (t1 & 1) XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, x4, y1, UNIT, UNIT); } y1 += UNIT; /* Position of next row */ if (y > -3) { if (t2 & 8) XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, x1, y1, UNIT, UNIT); if (t2 & 4) XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, x2, y1, UNIT, UNIT); if (t2 & 2) XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, x3, y1, UNIT, UNIT); if (t2 & 1) XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, x4, y1, UNIT, UNIT); } y1 += UNIT; /* Position of next row */ if (y > -4) { if (t3 & 8) XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, x1, y1, UNIT, UNIT); if (t3 & 4) XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, x2, y1, UNIT, UNIT); if (t3 & 2) XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, x3, y1, UNIT, UNIT); if (t3 & 1) XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, x4, y1, UNIT, UNIT); } XSetFillStyle(XtDisplay(toplevel), gc, FillTiled); y1 = y * UNIT; /* Position of 1st row of block grid */ if (y > -1) { if (t0 & 8) XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, x1 +1, y1 +1, UNIT -2, UNIT -2); if (t0 & 4) XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, x2 +1, y1 +1, UNIT -2, UNIT -2); if (t0 & 2) XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, x3 +1, y1 +1, UNIT -2, UNIT -2); if (t0 & 1) XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, x4 +1, y1 +1, UNIT -2, UNIT -2); } y1 += UNIT; /* Position of next row */ if (y > -2) { if (t1 & 8) XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, x1 +1, y1 +1, UNIT -2, UNIT -2); if (t1 & 4) XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, x2 +1, y1 +1, UNIT -2, UNIT -2); if (t1 & 2) XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, x3 +1, y1 +1, UNIT -2, UNIT -2); if (t1 & 1) XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, x4 +1, y1 +1, UNIT -2, UNIT -2); } y1 += UNIT; /* Position of next row */ if (y > -3) { if (t2 & 8) XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, x1 +1, y1 +1, UNIT -2, UNIT -2); if (t2 & 4) XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, x2 +1, y1 +1, UNIT -2, UNIT -2); if (t2 & 2) XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, x3 +1, y1 +1, UNIT -2, UNIT -2); if (t2 & 1) XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, x4 +1, y1 +1, UNIT -2, UNIT -2); } y1 += UNIT; /* Position of next row */ if (y > -4) { if (t3 & 8) XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, x1 +1, y1 +1, UNIT -2, UNIT -2); if (t3 & 4) XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, x2 +1, y1 +1, UNIT -2, UNIT -2); if (t3 & 2) XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, x3 +1, y1 +1, UNIT -2, UNIT -2); if (t3 & 1) XFillRectangle(XtDisplay(toplevel), XtWindow(canvas), gc, x4 +1, y1 +1, UNIT -2, UNIT -2); } XSetFillStyle(XtDisplay(toplevel), gc, FillSolid); XFlush(XtDisplay(toplevel)); }