Tutorial: saving and loading a bitmap ===================================== If you don't want to create a bitmap on-the-fly in your program, load it from a file with vg_bitmap_createfromfile(). This file may be in a VgaGames-bitmap-format, a PPM format or a Windows bmp. VgaGames-bitmap-format is recommended because of performance. To create a VgaGames-bitmap, - create a MS-Windows .bmp file - convert it into VgaGames-bitmap-format with the program vgag-bitmap or - create a graphic file in another format - convert it into a PPM-file with the netpbm-package - convert this PPM-file into VgaGames-bitmap-format with vgag-bitmap vgag-bitmap converts to and from - MS-Windows .bmp - PPM (netpbm) - VgaGames-bitmap-format Now to the tutorial: We want to create a bitmap with a sunnyboy, save it as a VgaGames-bitmap-format file, load and show it, then end the program. step 1 At first we have to initialize VgaGames and open a window or switch to graphical screen. ==>
int main(int argc, char ** argv) {
char * arg0; // for the name of the program
bitmap * sunboy; // for the created sunnyboy
/* initialize vgagames, always pass argv[0] */
if (vg_init_vgagames(argv[0],0,NULL) < 0) {exit(1);}
/* open window */
if ((arg0=strrchr(argv[0],'/'))==NULL) {arg0=argv[0];} else {arg0++;}
if (vg_window_open(arg0,0,0) < 0) {exit(1);}
|
/* create an orange sunnyboy */ sunboy=create_sunnyboy(vg_color_index(CL_ORANGE,100)); if (sunboy==NULL) { // error vg_window_close(); exit(1); } |
/* save sunnyboy as a file in VgaGames-bitmap-format,
we use directory share/ because it is writable
*/
vg_bitmap_save(sunboy,"share/sunnyboy.vga",VGAFORMAT_VGA);
|
/* now we want to load it */ vg_bitmap_free(sunboy); // at first free bitmap sunboy=vg_bitmap_createfromfile("share/sunnyboy.vga"); if (sunboy==NULL) { // error fprintf(stderr,"Bad luck - could not load sunnyboy.vga\n"); } |
/* give it out */
if (sunboy!=NULL) {
int x,y;
x=SC_WIDTH/2;
y=SC_HEIGHT/2;
vg_bitmap_copyto(NULL,x,y,sunboy,0,0,0,0,RGB_TRANS);
/* free bitmap (and remove it) */
vg_bitmap_free(sunboy);
unlink("share/sunnyboy.vga");
/* now flush window out to visible screen */
vg_window_flush();
/* wait 3 seconds */
sleep(3);
}
/* close window */
vg_window_close();
exit(0);
}
|