diff --git a/bocm b/bocm index 75c2b6f..bc445ec 100755 Binary files a/bocm and b/bocm differ diff --git a/bocm.c b/bocm.c index b1d60c3..aaabfbe 100644 --- a/bocm.c +++ b/bocm.c @@ -4,36 +4,61 @@ const int screenWidth = 800; const int screenHeight = 600; -int main(void) { - SDL_Window *window; - SDL_Renderer *render; - SDL_Event event; - SDL_Init(SDL_INIT_VIDEO); - - window = SDL_CreateWindow("BOCM",100,100,screenWidth,screenHeight,SDL_WINDOW_OPENGL); - render = SDL_CreateRenderer(window, -1, 0); - SDL_SetRenderDrawColor(render, 255, 0, 0, 255); - SDL_RenderClear(render); - SDL_RenderPresent(render); - - - - bool q = false; - - while (!q) { - SDL_WaitEvent(&event); - switch (event.type) { - case SDL_QUIT: - q = true; - break; - case SDL_KEYDOWN: - switch (event.key.keysym.sym) { - case SDLK_ESCAPE: - q = true; - break; - } - } +int throw_sdl_err(const char* fmt) +{ + SDL_LogError( + SDL_LOG_CATEGORY_APPLICATION, + fmt, + SDL_GetError() + ); + return 3; +} + +int main(int argc, char** argv) { + + SDL_Window* window; + SDL_Renderer* renderer; + SDL_Surface* surface; + SDL_Texture* texture; + SDL_Event event; + + 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"); + } + + 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 + + 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; } diff --git a/imgs/bocm.bmp b/imgs/bocm.bmp index 4fbec1e..dbeb69e 100644 Binary files a/imgs/bocm.bmp and b/imgs/bocm.bmp differ