/* ============================================================================== WordUp Graphics Toolkit Version 5.0 Demonstration Program 32 Demonstrates the use of wwarp - press q to end program execution. *** PROJECT *** This program requires the file WGT5_WC.LIB to be linked. *** DATA FILES *** You must have the WGT1.PCX file in your executable dir. WATCOM C++ VERSION ============================================================================== */ #include #include void main(void) { short i, t, c, b; color pal[256]; block wgt1; short top[320]; short bot[320]; short oldmode; /* Store previous video mode */ if ( !vgadetected () ) { printf("Error - VGA card required for any WGT program.\n"); exit (0); } printf ("WGT Example #32\n\n"); printf ("A full-screen bitmap is warped into various shapes using WWARP.\n"); printf ("Press a key to warp the object into a new shape. Press Q to end.\n"); printf ("\n\nPress any key to continue.\n"); getch (); oldmode = wgetmode (); /* Gets the current mode */ vga256 (); /* Initialize graphics mode */ wgt1 = wloadpcx ("wgt1.pcx", pal); /* Load our image to play with */ wsetpalette (0, 255, pal); /* Set the palette */ wcls (0); /* Clear screen with black */ wclip (0, 0, 319, 199); /* Use full screen */ /* Note: wsline merely stores y coordinates of line in array. You may use several calls with various x ranges to make curved lines */ wsline (0, 199, 319, 0, top); /* Set array top for diagonal line */ wsline (0, 199, 319, 199, bot); /* Array bot is horizontal line */ wwarp (0, 319, top, bot, wgt1, NORMAL); /* Warp image between lines */ getch (); /* Wait for key */ /* squish it */ wcls (0); /* Clear screen */ wsline (0, 0, 319, 199, top); /* Set array top for diagonal line */ wsline (0, 199, 319, 0, bot); /* Array bot is horizontal line */ wwarp (0, 319, top, bot, wgt1, NORMAL); /* Warp image between lines */ getch (); /* Wait for key */ /* squish it */ wcls (0); /* Clear screen */ wsline (0, 100, 100, 0, top); /* Now create arrow shape */ wsline (101, 70, 218, 70, top); wsline (219, 0, 319, 100, top); wsline (0, 100, 100, 199, bot); wsline (101, 130, 218, 130, bot); wsline (219, 199, 319, 100, bot); wwarp (0, 319, top, bot, wgt1, NORMAL); /* Warp image using arrays */ getch (); /* Wait for keypress */ /* make a double arrow */ wcls (0); /* Clear screen with black */ do { b = rand () % 100; c = (rand () % 100) + 100; for (t = 0; t <= 319; t++) { i = rand () % 2; if (i == 0) b++; else b--; i = rand () % 2; if (i == 0) c++; else c--; if (b > 100) b = 100; if (b < 0) b = 0; if (c > 197) c = 197; if (c < 100) c = 100; top[t] = b; /* Create random wavy lines */ bot[t] = c; } wwarp (0, rand () % 320, top, bot, wgt1, XRAY); /* And warp image between them */ i = getch (); /* Wait for keypress */ } while (i != 'q'); /* End program if Q pressed */ wfreeblock (wgt1); /* Free memory from image */ wsetmode (oldmode); /* Restore initial video mode */ }