10 #define COLOR_BACK COLOR_BLACK
11 #define COLOR_FORE COLOR_WHITE
14 /*****************************************************************************/
16 /*****************************************************************************/
20 static const unsigned char SinusTable[] = {
21 0x64,0x63,0x61,0x5F,0x5D,0x5B,0x59,0x57,0x55,0x54,
22 0x52,0x50,0x4E,0x4C,0x4A,0x49,0x47,0x45,0x43,0x42,
23 0x40,0x3E,0x3C,0x3B,0x39,0x38,0x36,0x34,0x33,0x31,
24 0x30,0x2E,0x2D,0x2B,0x2A,0x28,0x27,0x26,0x24,0x23,
25 0x22,0x20,0x1F,0x1E,0x1D,0x1C,0x1B,0x1A,0x19,0x18,
26 0x17,0x16,0x15,0x14,0x13,0x12,0x12,0x11,0x10,0x10,
27 0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0C,0x0B,0x0B,
28 0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,
29 0x0B,0x0B,0x0B,0x0C,0x0C,0x0C,0x0D,0x0D,0x0E,0x0E,
30 0x0F,0x10,0x10,0x11,0x12,0x12,0x13,0x14,0x15,0x16,
31 0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,
32 0x22,0x23,0x24,0x26,0x27,0x28,0x2A,0x2B,0x2D,0x2E,
33 0x30,0x31,0x33,0x34,0x36,0x38,0x39,0x3B,0x3C,0x3E,
34 0x40,0x42,0x43,0x45,0x47,0x49,0x4A,0x4C,0x4E,0x50,
35 0x52,0x54,0x55,0x57,0x59,0x5B,0x5D,0x5F,0x61,0x63,
36 0x64,0x65,0x67,0x69,0x6B,0x6D,0x6F,0x71,0x73,0x74,
37 0x76,0x78,0x7A,0x7C,0x7E,0x7F,0x81,0x83,0x85,0x86,
38 0x88,0x8A,0x8C,0x8D,0x8F,0x91,0x92,0x94,0x95,0x97,
39 0x98,0x9A,0x9B,0x9D,0x9E,0xA0,0xA1,0xA2,0xA4,0xA5,
40 0xA6,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,
41 0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB6,0xB7,0xB8,0xB8,
42 0xB9,0xBA,0xBA,0xBB,0xBB,0xBC,0xBC,0xBC,0xBD,0xBD,
43 0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,
44 0xBD,0xBD,0xBD,0xBC,0xBC,0xBC,0xBB,0xBB,0xBA,0xBA,
45 0xB9,0xB8,0xB8,0xB7,0xB6,0xB6,0xB5,0xB4,0xB3,0xB2,
46 0xB1,0xB0,0xAF,0xAE,0xAD,0xAC,0xAB,0xAA,0xA9,0xA8,
47 0xA6,0xA5,0xA4,0xA2,0xA1,0xA0,0x9E,0x9D,0x9B,0x9A,
48 0x98,0x97,0x95,0x94,0x92,0x91,0x8F,0x8D,0x8C,0x8A,
49 0x88,0x86,0x85,0x83,0x81,0x7F,0x7E,0x7C,0x7A,0x78,
50 0x76,0x74,0x73,0x71,0x6F,0x6D,0x6B,0x69,0x67,0x65
61 /*****************************************************************************/
63 /*****************************************************************************/
67 static void CheckError (const char* S)
69 unsigned char Error = tgi_geterror ();
70 if (Error != TGI_ERR_OK) {
71 printf ("%s: %d\n", S, Error);
78 static void DoWarning (void)
79 /* Warn the user that the TGI driver is needed for this program */
81 printf ("Warning: This program needs the TGI\n"
82 "driver on disk! Press 'y' if you have\n"
83 "it - any other key exits.\n");
84 if (tolower (cgetc ()) != 'y') {
87 printf ("Ok. Please wait patiently...\n");
92 static void DoCircles (void)
94 static const unsigned char Palette[2] = { COLOR_WHITE, COLOR_ORANGE };
96 unsigned char Color = COLOR_FORE;
97 unsigned X = MaxX / 2;
98 unsigned Y = MaxY / 2;
100 tgi_setpalette (Palette);
102 tgi_setcolor (COLOR_FORE);
103 tgi_line (0, 0, MaxX, MaxY);
104 tgi_line (0, MaxY, MaxX, 0);
105 tgi_setcolor (Color);
106 for (I = 10; I < 240; I += 10) {
107 tgi_circle (X, Y, I);
109 Color = Color == COLOR_FORE ? COLOR_BACK : COLOR_FORE;
118 static void DoCheckerboard (void)
120 static const unsigned char Palette[2] = { COLOR_WHITE, COLOR_BLACK };
124 tgi_setpalette (Palette);
127 for (Y = 0; Y <= MaxY; Y += 10) {
128 for (X = 0; X <= MaxX; X += 10) {
129 tgi_setcolor (Color);
130 tgi_bar (X, Y, X+9, Y+9);
131 Color = Color == COLOR_FORE ? COLOR_BACK : COLOR_FORE;
138 Color = Color == COLOR_FORE ? COLOR_BACK : COLOR_FORE;
140 Color = Color == COLOR_FORE ? COLOR_BACK : COLOR_FORE;
146 static void DoDiagram (void)
148 static const unsigned char Palette[2] = { COLOR_WHITE, COLOR_BLACK };
151 tgi_setpalette (Palette);
152 tgi_setcolor (COLOR_FORE);
153 tgi_line (10, 10, 10, MaxY-10);
154 tgi_lineto (MaxX-10, MaxY-10);
155 tgi_line (8, 12, 10, 10);
157 tgi_line (MaxX-12, MaxY-12, MaxX-10, MaxY-10);
158 tgi_lineto (MaxX-12, MaxY-8);
159 for (I = 0, X = 10; X < MaxX-10; ++X) {
160 tgi_setpixel (X, SinusTable[I]);
161 if (++I >= sizeof (SinusTable)) {
172 static void DoLines (void)
174 static const unsigned char Palette[2] = { COLOR_WHITE, COLOR_BLACK };
177 tgi_setpalette (Palette);
178 tgi_setcolor (COLOR_FORE);
180 for (X = 0; X <= MaxY; X += 10) {
181 tgi_line (0, 0, MaxY, X);
182 tgi_line (0, 0, X, MaxY);
183 tgi_line (MaxY, MaxY, 0, MaxY-X);
184 tgi_line (MaxY, MaxY, MaxY-X, 0);
195 unsigned char Border;
197 /* Warn the user that the tgi driver is needed */
200 /* Load and initialize the driver */
201 tgi_load_driver (tgi_stddrv);
202 CheckError ("tgi_load_driver");
204 CheckError ("tgi_init");
206 /* Get stuff from the driver */
207 MaxX = tgi_getmaxx ();
208 MaxY = tgi_getmaxy ();
210 /* Set the palette, set the border color */
211 Border = bordercolor (COLOR_BLACK);
213 /* Do graphics stuff */
219 /* Unload the driver */
222 /* Reset the border */
223 (void) bordercolor (Border);