All pastes #907227 Raw Edit

Someone

public text v1 · immutable
·published 2008-02-17 11:57 UTC
rendered paste body
//g++ test.cpp -o test -lSDL -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT
#include <stdlib.h>
#include "SDL/SDL.h"

void ShowBMP(SDL_Surface *image, SDL_Surface *screen, int x, int y)
{
	SDL_Rect dest;

	/* Load the BMP file into a surface */

	/* Blit onto the screen surface.
	   The surfaces should not be locked at this point.
	 */
	dest.x = x;
	dest.y = y;
	dest.w = image->w;
	dest.h = image->h;
	SDL_BlitSurface(image, NULL, screen, &dest);

	/* Update the changed portion of the screen */
	SDL_UpdateRects(screen, 1, &dest);
}

main(int argc, char *argv[])
{
	if ( SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO) < 0 )
	{
		fprintf(stderr, "Unable to init SDL: %s\n", SDL_GetError());
		exit(1);
	}
	atexit(SDL_Quit);
	SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
	SDL_Surface *screen;

	screen = SDL_SetVideoMode(640, 480, 16, SDL_HWSURFACE | SDL_DOUBLEBUF);
	if ( screen == NULL ) {
		fprintf(stderr, "Unable to set 640x480 video: %s\n", SDL_GetError());
		exit(1);
	}
	
	SDL_Event event;
	int x = 0;
	int y = 0;
	int speedX = 10;
	int speedY = 10;
	SDL_Surface *image1;
	SDL_Surface *image2;
	image1 = SDL_LoadBMP("screen.bmp");
	image2 = SDL_LoadBMP("ayb.bmp");
	SDL_DisplayFormat(image1);
	SDL_DisplayFormat(image2);
	while( true )
	{
		SDL_Event event;
		SDL_PumpEvents();
		SDL_PollEvent(&event);
		if ( event.type == SDL_QUIT )
		{ 
				exit(0);
		}
		ShowBMP(image1, screen, 0,0);
		ShowBMP(image2, screen, x,y);
		SDL_Flip(screen);
		SDL_Delay(50);
		if ( x < 0 || x > 590) speedX = -speedX;
		if ( y < 0 || y > 430) speedY = -speedY;
		x += speedX;
		y += speedY;
	}
	exit(0);
}