/* ============================================================================== WordUp Graphics Toolkit Version 5.0 Demonstration Program 5 Draws vertical lines of different colours, and rotates the colours until you hit a key. Note: Fast colour rotation with many colours causes 'snow' on slower computers. If this occurs, limit the number of colours you rotate at once. *** PROJECT *** This program requires the file WGT5_WC.LIB to be linked. *** DATA FILES *** NONE WATCOM C++ VERSION ============================================================================== */ #include void main(void) { short y; short oldmode; color palette[256]; if ( !vgadetected() ) { printf("Error - VGA card required for any WGT program.\n"); exit (0); } printf ("WGT Example #5\n\n"); printf ("This program will rotate the color palette in various index positions\n"); printf ("until you hit a key to end that set. There are 5 sets in this demo.\n"); printf ("\n\nPress any key to continue.\n"); getch (); oldmode = wgetmode (); vga256 (); for (y = 0; y < 64; y++) wsetrgb(y, y, y, y, palette); /* sets first 64 colours to grey */ for (y = 0; y < 64; y++) wsetrgb (y + 64, y, 0, 0, palette); /* next 64 to red */ for (y = 0; y < 64; y++) wsetrgb (y + 128, 0, y, 0, palette); /* green */ for (y = 0; y < 64; y++) wsetrgb (y + 192, 0, 0, y, palette); /* blue */ wsetpalette (0, 255, palette); /* and finally change them all at once */ for (y = 0; y < 200; y++) /* draw lines down the screen */ { wsetcolor (y); wline (0, y, 319, y); } while (!kbhit ()) { wretrace (); /* Reduces the amount of snow on slow computers */ wcolrotate (1, 200, 0, palette); wsetpalette (1, 200, palette); } getch (); /* Now rotate it the other way */ while (!kbhit ()) { wretrace (); wcolrotate (1, 200, 1, palette); wsetpalette (1, 200, palette); } getch (); /* Now rotate it in two directions at once. */ while (!kbhit ()) { wretrace (); wcolrotate (1, 100, 1, palette); wcolrotate (100, 200, 0, palette); wsetpalette (1, 200, palette); } getch (); /* Now the middle of the screen. */ while (!kbhit ()) { wretrace (); wcolrotate (66, 134, 1, palette); wsetpalette (66, 134, palette); } getch (); /* Now mix all the colours up by overlapping rotation areas! */ while (!kbhit ()) { wretrace (); wcolrotate (1, 200, 0, palette); wcolrotate (20, 180, 0, palette); wcolrotate (40, 160, 0, palette); wcolrotate (60, 120, 0, palette); wcolrotate (80, 100, 0, palette); wsetpalette (1, 200, palette); } getch (); wsetmode (oldmode); }