home *** CD-ROM | disk | FTP | other *** search
- /*************************************/
- /* */
- /* AUoH Progressive Door Prize Lotto */
- /* */
- /* DISPLAY routines */
- /* */
- /* Michael D. Groshart - 16 Aug 89 */
- /* */
- /*************************************/
-
- #include <intuition/intuition.h>
- #include <functions.h>
-
- extern struct Window *win;
- extern struct RastPort *rp;
- extern struct ViewPort *vp;
-
- #define XOFFSET 96
-
- static long colreg = 2, rand();
-
- static long led[7][6][2] =
- {
- 32, 82, 26, 76, 26, 28, 32, 22, 39, 29, 39, 75,
- 34, 20, 40, 14, 88, 14, 94, 20, 87, 27, 41, 27,
- 96, 22, 102, 28, 102, 76, 96, 82, 89, 75, 89, 29,
- 94, 84, 87, 91, 41, 91, 34, 84, 41, 77, 87, 77,
- 32, 86, 39, 93, 39, 139, 32, 146, 26, 140, 26, 92,
- 34, 148, 41, 141, 87, 141, 94, 148, 88, 154, 40, 154,
- 96, 146, 89, 139, 89, 93, 96, 86, 102, 92, 102, 140
- };
-
- static long fill[7][2] =
- {
- 32, 81, 35, 20, 96, 23, 93, 84, 32, 87, 35, 148, 96, 145
- };
-
- static int digit[10][7] =
- {
- 1, 1, 1, 0, 1, 1, 1, /* 0 */
- 0, 0, 1, 0, 0, 0, 1, /* 1 */
- 0, 1, 1, 1, 1, 1, 0, /* 2 */
- 0, 1, 1, 1, 0, 1, 1, /* 3 */
- 1, 0, 1, 1, 0, 0, 1, /* 4 */
- 1, 1, 0, 1, 0, 1, 1, /* 5 */
- 1, 1, 0, 1, 1, 1, 1, /* 6 */
- 0, 1, 1, 0, 0, 0, 1, /* 7 */
- 1, 1, 1, 1, 1, 1, 1, /* 8 */
- 1, 1, 1, 1, 0, 1, 1 /* 9 */
- };
-
- init_digits()
- {
- register long color = 2;
- register int a,b,c;
-
- for (a = 0; a < 3; a++)
- {
- for (b = 0; b < 7; b++)
- {
- SetAPen(rp,color++);
- Move(rp,led[b][5][0],led[b][5][1]);
- for (c = 0; c < 6; c++)
- {
- Draw(rp,led[b][c][0],led[b][c][1]);
- led[b][c][0] += XOFFSET;
- }
- Flood(rp,1L,fill[b][0],fill[b][1]);
- fill[b][0] += XOFFSET;
- }
- }
- SetAPen(rp,25L); /* draw bottom text box */
- Move(rp, 6L,172L);
- Draw(rp,313L,172L);
- Draw(rp,313L,183L);
- Draw(rp, 6L,183L);
- Draw(rp, 6L,172L);
- }
-
- erase()
- {
- SetAPen(rp,0L);
- RectFill(rp,7L,173L,312L,182L);
- }
-
- flash()
- {
- SetRGB4(vp,colreg,rand(16L),rand(16L),rand(16L));
- if (++colreg == 23) colreg = 2;
- }
-
- char message[80];
-
- scroll(text)
- register char *text;
- {
- register struct IntuiMessage *im;
- register char *ptr = message;
- register int n;
-
- strcpy(message,text);
- strcat(message," ");
-
- SetAPen(rp,1L);
- while (!(im = (struct IntuiMessage *) GetMsg(win->UserPort)))
- {
- for (n = 0; n < 4; n++)
- {
- WaitTOF();
- ScrollRaster(rp,2L,0L,8L,174L,311L,181L);
- }
- Move(rp, 304L, 180L);
- Text(rp, ptr, 1L);
- if (*++ptr == '\0') ptr = message;
- }
- ReplyMsg(im);
- }
-
- display(num)
- int num;
- {
- register int i;
-
- for (i = 16; i >= 2; i -= 7)
- {
- set_led(i,num % 10);
- num /= 10;
- }
- }
-
- static set_led(pos,val)
- int pos,val;
- {
- register long n;
-
- for (n = 0; n < 7; n++)
- {
- if (digit[val][n])
- SetRGB4(vp,pos + n,15L,15L,0L);
- else
- SetRGB4(vp,pos + n,0L,0L,0L);
- }
- }
-