diff --git a/bocm b/bocm index e2abc01..dcbf992 100755 Binary files a/bocm and b/bocm differ diff --git a/bocm.c b/bocm.c index 48aae5f..b4a16b5 100644 --- a/bocm.c +++ b/bocm.c @@ -1,69 +1,9 @@ #include -#include - -SDL_Window* window; -SDL_Renderer* renderer; -SDL_Surface* surface; -SDL_Texture* texture; -SDL_Event event; -const int screenWidth = 800; -const int screenHeight = 600; - -int throw_sdl_err(const char* fmt) -{ - SDL_LogError( - SDL_LOG_CATEGORY_APPLICATION, - fmt, - SDL_GetError() - ); - return 3; -} - -int initWindow(void){ - if (SDL_Init(SDL_INIT_VIDEO) < 0) { - return throw_sdl_err("Could not init the SDL: %s"); - } - if (SDL_CreateWindowAndRenderer(screenWidth, screenHeight, SDL_WINDOW_OPENGL, &window, &renderer)) { - return throw_sdl_err("Could not create new window and renderer: %s"); - } - return 0; -} - -int loadLogo(void){ - surface = SDL_LoadBMP("imgs/bocm.bmp"); - if (!surface) { - return throw_sdl_err("Could not load BMP image: %s"); - } - texture = SDL_CreateTextureFromSurface(renderer, surface); - if (!texture) { - return throw_sdl_err("Could not create new texture from surface: %s"); - } - SDL_FreeSurface(surface); // free a RGB surface - return 0; -} +#include "functions.c" int main(int argc, char** argv) { - initWindow(); loadLogo(); - - while (1) { - SDL_PollEvent(&event); - if (event.type == SDL_QUIT) { - break; - } // break the loop - - SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255); - SDL_RenderClear(renderer); - SDL_Rect rect = {10, 10, 100, 73}; - SDL_RenderCopy(renderer, texture, NULL, &rect); - SDL_RenderPresent(renderer); - } // window loop - - SDL_DestroyTexture(texture); - SDL_DestroyRenderer(renderer); - SDL_DestroyWindow(window); - - SDL_Quit(); - return 0; + windowLoop(); + destroy(); } diff --git a/functions.c b/functions.c new file mode 100644 index 0000000..6376031 --- /dev/null +++ b/functions.c @@ -0,0 +1,76 @@ +#include + +SDL_Window* window; +SDL_Renderer* renderer; +SDL_Surface* surface; +SDL_Texture* texture; +SDL_Event event; +const int screenWidth = 800; +const int screenHeight = 600; + +int throw_sdl_err(const char* fmt) +{ + SDL_LogError( + SDL_LOG_CATEGORY_APPLICATION, + fmt, + SDL_GetError() + ); + return 3; +} + +int initWindow(void){ + if (SDL_Init(SDL_INIT_VIDEO) < 0) { + return throw_sdl_err("Could not init the SDL: %s"); + } + if (SDL_CreateWindowAndRenderer(screenWidth, screenHeight, SDL_WINDOW_OPENGL, &window, &renderer)) { + return throw_sdl_err("Could not create new window and renderer: %s"); + } + return 0; +} + +int loadLogo(void){ + surface = SDL_LoadBMP("imgs/bocm.bmp"); + if (!surface) { + return throw_sdl_err("Could not load BMP image: %s"); + } + texture = SDL_CreateTextureFromSurface(renderer, surface); + if (!texture) { + return throw_sdl_err("Could not create new texture from surface: %s"); + } + SDL_FreeSurface(surface); + return 0; +} + +int loadBackgroundColor(void){ + SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255); + SDL_RenderClear(renderer); + return 0; +} + +int presentLogo(void){ + SDL_Rect rect = {10, 10, 100, 73}; + SDL_RenderCopy(renderer, texture, NULL, &rect); + SDL_RenderPresent(renderer); + return 0; +} + +int windowLoop(void){ + while (1) { + SDL_PollEvent(&event); + if (event.type == SDL_QUIT) { + break; + } + + loadBackgroundColor(); + presentLogo(); + } + return 0; +} + +int destroy(void){ + SDL_DestroyTexture(texture); + SDL_DestroyRenderer(renderer); + SDL_DestroyWindow(window); + SDL_Quit(); + return 0; +}