#include #include #include #include #include #include // #define NDEBUG #include "kiss.h" SDL_Surface *load_image(char *path, SDL_Surface *screen) { SDL_Surface *surface2 = NULL; SDL_Surface *surface = NULL; surface = IMG_LOAD(path); surface2 = SDL_CONVERTSURFACE(surface, screen->format, 0); error: SDL_FreeSurface(surface); return surface2; } #define LOAD_IMAGE(...) SDL_CHK(load_image, __VA_ARGS__) int main(void) { SDL_Window *window = NULL; SDL_Surface *screen = NULL; SDL_Surface *logo = NULL; int exit_status = EXIT_FAILURE; uint8_t colours[][3] = { { 0xFF, 0, 0 }, { 0, 0xFF, 0 }, { 0, 0, 0xFF }, { 0, 0, 0 } }; int i; int n; SDL_INIT(SDL_INIT_VIDEO); IMG_INIT(IMG_INIT_PNG); window = SDL_CREATEWINDOW("SDL Tutorial", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 0, 0, SDL_WINDOW_FULLSCREEN_DESKTOP); screen = SDL_GETWINDOWSURFACE(window); n = (int)NELEMS(colours); for (i=0; iformat, c[0], c[1], c[2])); SDL_UPDATEWINDOWSURFACE(window); SDL_Delay(100); } logo = LOAD_IMAGE("sdl/logo.png", screen); SDL_BLITSURFACE(logo, NULL, screen, NULL); SDL_UPDATEWINDOWSURFACE(window); SDL_Delay(500); exit_status = EXIT_SUCCESS; error: SDL_FreeSurface(logo); SDL_DestroyWindow(window); SDL_Quit(); exit(exit_status); }