1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
|
#include "SDL.h"
#include <string>
#include <iostream>
//Attributes of the screen
const int SCREEN_WIDTH = 1000;
const int SCREEN_HEIGHT = 1000;
const int SCREEN_BPP = 32;
// The Images that will be used.
SDL_Surface *message = NULL;
SDL_Surface *background = NULL;
SDL_Surface *screen = NULL;
SDL_Surface *load_image(std::string filename)
{
// Temporary storage for the image that's loaded
SDL_Surface* loadedimage = NULL;
// The optimized image that will be used
SDL_Surface* optimizedimage = NULL;
// Load the image
loadedimage = SDL_LoadBMP(filename.c_str());
//if nothing went wrong in loading the image
if(loadedimage != NULL)
{
//Create an optimized image
optimizedimage = SDL_DisplayFormat(loadedimage);
// Free the old image
SDL_FreeSurface(loadedimage);
}
return optimizedimage;
}
void apply_surface(int x, int y, SDL_Surface* source,SDL_Surface* destination)
{
//Make a temporary rectangle to hold the offsets
SDL_Rect offset;
//Give the offsets to the rectangle
offset.x = x;
offset.y = y;
// Blit the surface
SDL_BlitSurface(source, NULL, destination, &offset);
}
int main(int argc, char* args[])
{
//Initialize all SDL subsystems
if(SDL_Init(SDL_INIT_EVERYTHING) == -1)
{
return 1;
}
// Setup the screen
screen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_SWSURFACE);
//If there was an error setting up the screen
if(screen = NULL)
{
return 1;
}
//Set the window caption
SDL_WM_SetCaption("Hello World", NULL);
//Load the images
message = load_image("gears2.bmp");
background = load_image("background.bmp");
//Apply the background to the screen
apply_surface(0,0, background, screen);
apply_surface(320,0, background, screen);
apply_surface(0,240, background, screen);
apply_surface(320,240, background, screen);
// Apply the message to the screen
apply_surface(180,140, message, screen);
// Update the screen
if(SDL_Flip(screen) == -1)
{
return 1;
}
// Wait 2 seconds
SDL_Delay(2000);
// Free the surfaces
SDL_FreeSurface(message);
SDL_FreeSurface(background);
//Quit
SDL_Quit();
// Return
return 0;
}
|