Listing 3. Drawing Large Amounts of Data to the Screen
#include <SDL/SDL.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
SDL_Surface *screen;
SDL_Surface *image;
SDL_Rect src,dest;
/* Initialization code, just like the
previous example's. */
/* Load the bitmap file. SDL_LoadBMP returns a
pointer to a
new surface containing the loaded image. */
image = SDL_LoadBMP("tux.bmp");
if (image == NULL) {
printf("Unable to load bitmap.\n");
return 1;
};
/* The SDL blitting function needs to know how
much data to copy. We provide this with
SDL_Rect structures, which define the
source and destination rectangles. The
areas should be the same; SDL does not
currently handle image stretching. */
src.x = 0; src.y = 0;
src.w = image->w; /* copy the entire image */
src.h = image->h;
dest.x = 0; dest.y = 0;
dest.w = image->w;
dest.h = image->h;
/* Draw the bitmap to the screen. We are using
a hicolor video mode, so we don't have to
worry about colormap silliness. It is not
necessary to lock surfaces before blitting;
SDL will handle that. */
SDL_BlitSurface(image,&src,screen,&dest);
/* Ask SDL to update the entire screen. */
SDL_UpdateRect(screen,0,0,0,0);
/* Pause for a few seconds as the viewer gasps
in awe. */
SDL_Delay(3000);
/* Free the memory that was allocated to the
bitmap. */
SDL_FreeSurface(image);
return 0;
}