/* ============================================================================== WordUp Graphics Toolkit Version 5.0 Demonstration Program 35 Loads an image using wloadblock/wloadpak/wloadcel/wloadbmp/wloadpcx and saves the same image back out using wsaveblock, wsavepak, wsavecel, wsavebmp, and wsavepcx. *** PROJECT *** This program requires the file WGT5_WC.LIB to be linked. *** DATA FILES *** You must have the following data files in your executable dir: SAMPLE.BLK, SAMPLE.PAL WATCOM C++ VERSION ============================================================================== */ #include #include #include block sample_image; /* Contains our sample image */ color pal[256]; short oldmode; short image_handle; /* File handle used for finding file sizes */ /* Note that all files store the same image data, and CEL, BMP, and PCX also store the palette. */ void main(void) { if ( !vgadetected () ) { printf("Error - VGA card required for any WGT program.\n"); exit(0); } printf ("WGT Example #35\n\n"); printf ("Several of WGT's image formats are demonstrated by loading and creating\n"); printf ("bitmaps dynamically. Image file sizes are reported so you can compare the\n"); printf ("the compression techniques. Press a key to end the program.\n"); printf ("\n\nPress any key to continue.\n"); getch (); oldmode = wgetmode (); vga256 (); wloadpalette("sample.pal", pal); /* Load the palette for the image formats that don't store one */ wsetpalette(0, 255, pal); wsavepalette ("output.pal", pal); /* Save the palette to a different file */ wtextcolor(1); sample_image = wloadblock ("sample.blk"); /* Load the image */ wputblock (0, 0, sample_image, 1); /* Display the image */ wgtprintf (0, 38, NULL, "BLK"); wsaveblock ("output.blk", sample_image); /* Save in BLK format */ wsavepak ("sample.pak", sample_image); /* Save into PAK format */ wfreeblock (sample_image); /* Free the image */ sample_image = wloadpak ("sample.pak"); wputblock (50, 0, sample_image, 1); wgtprintf (50, 38, NULL, "PAK"); wsavecel ("sample.cel", sample_image, pal); /* Save into CEL format */ wfreeblock (sample_image); sample_image = wloadcel ("sample.cel", pal); wputblock (100, 0, sample_image, 1); wgtprintf (100, 38, NULL, "CEL"); wsavebmp ("sample.bmp", sample_image, pal); /* Save into BMP format */ wfreeblock (sample_image); sample_image = wloadbmp ("sample.bmp", pal); wputblock (150, 0, sample_image, 1); wgtprintf (150, 38, NULL, "BMP"); wsavepcx ("sample.pcx", sample_image, pal); /* Save into PCX format */ wfreeblock (sample_image); sample_image = wloadpcx ("sample.pcx", pal); wputblock (200, 0, sample_image, 1); wgtprintf (200, 38, NULL, "PCX"); wfreeblock (sample_image); wgtprintf (0, 100, NULL, "File Sizes:"); image_handle = open ("sample.blk", O_RDONLY); wgtprintf (8, 108, NULL, "BLK - %lu", filelength (image_handle)); close (image_handle); image_handle = open ("sample.pak", O_RDONLY); wgtprintf (8, 116, NULL, "PAK - %lu", filelength (image_handle)); close (image_handle); unlink ("sample.pak"); image_handle = open ("sample.cel", O_RDONLY); wgtprintf (8, 124, NULL, "CEL - %lu", filelength (image_handle)); close (image_handle); unlink ("sample.cel"); image_handle = open ("sample.bmp", O_RDONLY); wgtprintf (8, 132, NULL, "BMP - %lu", filelength (image_handle)); close (image_handle); unlink ("sample.bmp"); image_handle = open ("sample.pcx", O_RDONLY); wgtprintf (8, 140, NULL, "PCX - %lu", filelength (image_handle)); close (image_handle); unlink ("sample.pcx"); unlink ("output.pal"); unlink ("output.blk"); getch (); wsetmode (oldmode); }