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 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146
|
// Headers
#include "SDL/SDL.h"
#include <string>
// Setup screen
const int SCREEN_WIDTH = 800;
const int SCREEN_HEIGHT = 600;
const int SCREEN_BPP = 32;
// Create surfaces
SDL_Surface *image = NULL;
SDL_Surface *screen = NULL;
// Event structure
SDL_Event event;
// Image Loading Function
SDL_Surface *load_image(std::string filename)
{
// Image that's loaded
SDL_Surface* loadedImage = NULL;
SDL_Surface* optimizedImage = NULL;
// Load image
loadedImage = SDL_LoadBMP(filename.c_str());
// If image loaded
if(loadedImage != NULL)
{
// Optimized Image
optimizedImage = SDL_DisplayFormat(loadedImage);
// Free old image
SDL_FreeSurface(loadedImage);
}
// Return optimized image
return optimizedImage;
}
void apply_surface(int x, int y, SDL_Surface* source, SDL_Surface* destination)
{
// Temp rectangle to hold offsets
SDL_Rect offset;
// Apply offsets
offset.x = x;
offset.y = y;
// Blit surface
SDL_BlitSurface(source, NULL, destination, &offset);
}
bool init()
{
// Initialize all SDL subsystems
if(SDL_Init(SDL_INIT_EVERYTHING) == -1)
{
return false;
}
// Setup screen
screen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_SWSURFACE);
// Check for screen errors
if(screen == NULL)
{
return false;
}
// Set Window Caption
SDL_WM_SetCaption("SDL Event Testing", NULL);
// Return function
return true;
}
bool load_files()
{
// Load Image
image = load_image("x.bmp");
if(image == NULL)
{
return false;
}
// Return function
return true;
}
void clean_up()
{
// Free Images
SDL_FreeSurface(image);
// Quit SDL
SDL_Quit();
}
int main(int argc, char* args[])
{
// Make program wait for quit
bool quit = false;
// Initialize
if(init() == false)
{
return 1;
}
// Load files
if(load_files() == false)
{
return 1;
}
// Apply Surfaces
apply_surface(0, 0, image, screen);
// Update screen
if(SDL_Flip(screen) == -1){
return 1;
}
// While user hasn't quit
while(quit == false)
{
// While there's an event
while(SDL_PollEvent(&event))
{
if(event.type == SDL_Quit)
{
// Quit program
quit = true;
}
}
}
// Clean up
clean_up();
// Return
return 0;
}
|