/* ============================================================================== WordUp Graphics Toolkit Version 5.0 Demonstration Program 24 Display special effects using wwipe command. *** PROJECT *** This program requires the file WGT5_WC.LIB to be linked. *** DATA FILES *** Make sure that you have WGT2.PCX in your executable directory. WATCOM C++ VERSION ============================================================================== */ #include #include #include void main(void) { block screen1, screen2; /* Two virtual screens */ color palette[256]; /* Our palette */ short i, j; /* Loop counters */ short oldmode; /* Stores initial video mode */ if ( !vgadetected () ) { printf("Error - VGA card required for any WGT program.\n"); exit (0); } printf ("WGT Example #24\n\n"); printf ("The WWIPE command is used to show several different screen wipes.\n"); printf ("Using WRETRACE keeps the speed constant on all computers. Try removing\n"); printf ("all retraces to obtain maximum speed and notice the difference.\n"); printf ("A keypress advances to the next wipe at each point.\n"); printf ("\n\nPress any key to continue.\n"); getch (); oldmode = wgetmode (); /* Preserve initial video mode */ vga256 (); /* Initialize graphics mode */ screen1 = wloadpcx ("wgt2.pcx", palette); /* Load image file from disk */ wtextcolor (15); /* Use index 15 for text */ /* Note: This text will be on our second screen - used for wipes */ wouttextxy (0, 0, NULL, "SCREEN BUFFER #2"); wouttextxy (0, 50, NULL, "This screen is one of our 2 screens"); wouttextxy (0, 58, NULL, "used to perform the wipe effect."); wouttextxy (46, 100, NULL, "Press a key to perform wipe"); screen2 = wnewblock (0, 0, 319, 199); /* Allocate memory for screen2 */ wnormscreen (); /* Make sure we're drawing on default screen */ wsetpalette (0, 255, palette); /* Now use the palette */ getch (); /* Get a keypress */ for (i = 0; i < 200; i++) { wwipe (0, 0, 319, i, screen1); /* Wipe screen down from right */ wwipe (319, 199, 0, 199 - i, screen1); /* Wipe screen up from left */ wretrace (); } getch (); /* Now wipe on the black screen using horizontal lines meeting at middle */ for (i = 0; i < 100; i++) { wwipe (0, i, 319, i, screen2); wwipe (0, 199 - i, 319, 199 - i, screen2); wretrace (); } getch (); /* Now perform a "circular" wipe, by going around the screen from center */ for (i = 0; i < 320; i++) { wwipe (159, 99, i, 0, screen1); wretrace (); } for (i = 0; i < 200; i++) { wwipe (159, 99, 319, i, screen1); wretrace (); } for (i = 319; i >= 0; i--) { wwipe (159, 99, i, 199, screen1); wretrace (); } for (i = 199; i >= 0; i--) { wwipe (159, 99, 0, i, screen1); wretrace (); } getch (); /* Clear with black screen by wiping top to bottom */ for (i = 0; i < 200; i++) { wwipe (0, i, 319, i, screen2); wretrace (); } getch (); wfreeblock (screen1); /* Remember to free that memory */ wfreeblock (screen2); wsetmode (oldmode); /* Restore initial video mode */ }