-#define COLOR_BACK COLOR_BLACK
-#define COLOR_FORE COLOR_WHITE
+#ifndef DYN_DRV
+# define DYN_DRV 1
+#endif
+
+#define COLOR_BACK TGI_COLOR_BLACK
+#define COLOR_FORE TGI_COLOR_WHITE
/*****************************************************************************/
-/* Data */
+/* Data */
/*****************************************************************************/
/* Driver stuff */
static unsigned MaxX;
static unsigned MaxY;
+static unsigned AspectRatio;
/*****************************************************************************/
-/* Code */
+/* Code */
/*****************************************************************************/
unsigned char Error = tgi_geterror ();
if (Error != TGI_ERR_OK) {
printf ("%s: %d\n", S, Error);
+ if (doesclrscrafterexit ()) {
+ cgetc ();
+ }
exit (EXIT_FAILURE);
}
}
+#if DYN_DRV
static void DoWarning (void)
-/* Warn the user that the TGI driver is needed for this program */
+/* Warn the user that the dynamic TGI driver is needed for this program */
{
printf ("Warning: This program needs the TGI\n"
"driver on disk! Press 'y' if you have\n"
if (tolower (cgetc ()) != 'y') {
exit (EXIT_SUCCESS);
}
- printf ("Ok. Please wait patiently...\n");
+ printf ("OK. Please wait patiently...\n");
}
+#endif
static void DoCircles (void)
{
- static const unsigned char Palette[2] = { COLOR_WHITE, COLOR_ORANGE };
+ static const unsigned char Palette[2] = { TGI_COLOR_WHITE, TGI_COLOR_ORANGE };
unsigned char I;
unsigned char Color = COLOR_FORE;
unsigned X = MaxX / 2;
tgi_line (0, MaxY, MaxX, 0);
tgi_setcolor (Color);
for (I = 10; I < 240; I += 10) {
- tgi_circle (X, Y, I);
+ tgi_ellipse (X, Y, I, tgi_imulround (I, AspectRatio));
}
- Color = Color == COLOR_FORE ? COLOR_BACK : COLOR_FORE;
+ Color = Color == COLOR_FORE ? COLOR_BACK : COLOR_FORE;
}
cgetc ();
static void DoCheckerboard (void)
{
- static const unsigned char Palette[2] = { COLOR_WHITE, COLOR_BLACK };
+ static const unsigned char Palette[2] = { TGI_COLOR_WHITE, TGI_COLOR_BLACK };
unsigned X, Y;
unsigned char Color;
for (X = 0; X <= MaxX; X += 10) {
tgi_setcolor (Color);
tgi_bar (X, Y, X+9, Y+9);
- Color = Color == COLOR_FORE ? COLOR_BACK : COLOR_FORE;
+ Color = Color == COLOR_FORE ? COLOR_BACK : COLOR_FORE;
if (kbhit ()) {
cgetc ();
tgi_clear ();
return;
}
}
- Color = Color == COLOR_FORE ? COLOR_BACK : COLOR_FORE;
+ Color = Color == COLOR_FORE ? COLOR_BACK : COLOR_FORE;
}
- Color = Color == COLOR_FORE ? COLOR_BACK : COLOR_FORE;
+ Color = Color == COLOR_FORE ? COLOR_BACK : COLOR_FORE;
}
}
static void DoDiagram (void)
{
- static const unsigned char Palette[2] = { COLOR_WHITE, COLOR_BLACK };
+ static const unsigned char Palette[2] = { TGI_COLOR_WHITE, TGI_COLOR_BLACK };
int XOrigin, YOrigin;
int Amp;
int X, Y;
static void DoLines (void)
{
- static const unsigned char Palette[2] = { COLOR_WHITE, COLOR_BLACK };
+ static const unsigned char Palette[2] = { TGI_COLOR_WHITE, TGI_COLOR_BLACK };
unsigned X;
tgi_setpalette (Palette);
tgi_setcolor (COLOR_FORE);
- for (X = 0; X <= MaxY; X += 10) {
- tgi_line (0, 0, MaxY, X);
- tgi_line (0, 0, X, MaxY);
- tgi_line (MaxY, MaxY, 0, MaxY-X);
- tgi_line (MaxY, MaxY, MaxY-X, 0);
+ for (X = 0; X <= MaxY; X += 10) {
+ tgi_line (0, 0, MaxY, X);
+ tgi_line (0, 0, X, MaxY);
+ tgi_line (MaxY, MaxY, 0, MaxY-X);
+ tgi_line (MaxY, MaxY, MaxY-X, 0);
}
cgetc ();
{
unsigned char Border;
+#if DYN_DRV
/* Warn the user that the tgi driver is needed */
DoWarning ();
/* Load and initialize the driver */
tgi_load_driver (tgi_stddrv);
CheckError ("tgi_load_driver");
+#else
+ /* Install the driver */
+ tgi_install (tgi_static_stddrv);
+ CheckError ("tgi_install");
+#endif
+
tgi_init ();
CheckError ("tgi_init");
tgi_clear ();
/* Get stuff from the driver */
MaxX = tgi_getmaxx ();
MaxY = tgi_getmaxy ();
+ AspectRatio = tgi_getaspectratio ();
/* Set the palette, set the border color */
Border = bordercolor (COLOR_BLACK);
DoDiagram ();
DoLines ();
+#if DYN_DRV
/* Unload the driver */
tgi_unload ();
+#else
+ /* Uninstall the driver */
+ tgi_uninstall ();
+#endif
/* Reset the border */
(void) bordercolor (Border);