63 lines
1.4 KiB
C
63 lines
1.4 KiB
C
/* Example of simple blitting with SD>. */
|
|
|
|
#include <SDL/SDL.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
int main()
|
|
{
|
|
SDL_Surface *screen;
|
|
SDL_Surface *image;
|
|
SDL_Rect src, dest;
|
|
|
|
/* init and check for errors*/
|
|
if (SDL_Init(SDL_INIT_VIDEO) != 0) {
|
|
printf("Unable to init SDL: %s\n", SDL_GetError());
|
|
return 1;
|
|
}
|
|
|
|
atexit(SDL_Quit);
|
|
|
|
/* 256x256 hicolor (16-bit) */
|
|
|
|
screen = SDL_SetVideoMode(512, 512, 32, 0); // finding BMPs is hard // Doesn't work anyway...
|
|
//I seem to remem ber having htis problem before
|
|
if (screen == NULL) {
|
|
printf("Setting video mode failed: %s\n", SDL_GetError());
|
|
return 1;
|
|
}
|
|
|
|
/* Load bitmap file. SDL_LoadBMP returns a pointer to a new surface containing
|
|
* the loaded image. */
|
|
image = SDL_LoadBMP("test-image.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
|
|
* shoul be the same; SDL does not currently handle image
|
|
* stretching. */
|
|
|
|
src.x = 0;
|
|
src.y = 0;
|
|
src.w = image->w; /* copy entire image */
|
|
src.h = image->h;
|
|
|
|
/* Draw the bitmap to the screen. It is not necessary to lock surfaces
|
|
* before blitting; SDL will handle that. */
|
|
|
|
SDL_BlitSurface(image, &src, screen, &dest);
|
|
|
|
SDL_Delay(3000);
|
|
|
|
/* Free memory allocated to the bitmap. */
|
|
SDL_FreeSurface(image);
|
|
|
|
return 0;
|
|
}
|
|
|
|
|