X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=samples%2Ftgidemo.c;h=1d76fee2e3974d6815e6f2fb60542127d6e7bef2;hb=60e40c854cc6d7d8d181a66714b8f7b8bfb58e0e;hp=92121c9d93f074ef5cda3b7df3e5878e470c44ea;hpb=7b8fbb31da4d349b889ff4a736858267947d3866;p=cc65 diff --git a/samples/tgidemo.c b/samples/tgidemo.c index 92121c9d9..1d76fee2e 100644 --- a/samples/tgidemo.c +++ b/samples/tgidemo.c @@ -8,12 +8,16 @@ -#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 */ /*****************************************************************************/ @@ -21,11 +25,12 @@ /* Driver stuff */ static unsigned MaxX; static unsigned MaxY; +static unsigned AspectRatio; /*****************************************************************************/ -/* Code */ +/* Code */ /*****************************************************************************/ @@ -35,14 +40,18 @@ static void CheckError (const char* S) 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" @@ -50,14 +59,15 @@ static void DoWarning (void) 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; @@ -70,9 +80,9 @@ static void DoCircles (void) 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 (); @@ -83,7 +93,7 @@ static void DoCircles (void) 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; @@ -94,16 +104,16 @@ static void DoCheckerboard (void) 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; } } @@ -111,7 +121,7 @@ static void DoCheckerboard (void) 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; @@ -141,7 +151,7 @@ static void DoDiagram (void) /* Calculate the next points */ X = (int) (((long) (MaxX - 19) * I) / 360); - Y = (int) (((long) Amp * -cc65_sin (I)) / 256); + Y = (int) (((long) Amp * -sin (I)) / 256); /* Draw the line */ tgi_lineto (XOrigin + X, YOrigin + Y); @@ -155,17 +165,17 @@ static void DoDiagram (void) 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 (); @@ -178,18 +188,27 @@ int main (void) { 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); @@ -200,8 +219,13 @@ int main (void) DoDiagram (); DoLines (); +#if DYN_DRV /* Unload the driver */ tgi_unload (); +#else + /* Uninstall the driver */ + tgi_uninstall (); +#endif /* Reset the border */ (void) bordercolor (Border);