From d991db980f97ff50930b71bdb8a7d9d7dbfd0cbf Mon Sep 17 00:00:00 2001 From: Sara Date: Sun, 24 Nov 2024 13:50:56 +0100 Subject: [PATCH] feat: added SDL2_image --- SConstruct | 4 +++- src/core/canvas_engine.cpp | 10 ++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/SConstruct b/SConstruct index 448d766..7d3f1be 100644 --- a/SConstruct +++ b/SConstruct @@ -18,6 +18,8 @@ env = Environment(CCFLAGS=[ '-Wall', '-Wpedantic', '-Wextra', '-Werror', '-O0', '-g3', '-Isrc', '-DPROJECTNAME=\\\"'+project+'\\\"' +], +LINKFLAGS=[ + '-lSDL2', '-lSDL2_image', '-lm', ]) -env.ParseConfig('sdl2-config --static-libs') env.Program(project, sources) diff --git a/src/core/canvas_engine.cpp b/src/core/canvas_engine.cpp index 563d29f..1355b64 100644 --- a/src/core/canvas_engine.cpp +++ b/src/core/canvas_engine.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include #include #include @@ -20,9 +21,15 @@ CanvasEngine::CanvasEngine() { SDL_LogError(SDL_LOG_CATEGORY_ERROR, "Failed to initialize SDL, SDL error: %s", SDL_GetError()); return; } + if(IMG_Init(IMG_INIT_PNG | IMG_INIT_JXL) == 0) { + SDL_LogError(SDL_LOG_CATEGORY_ERROR, "Failed to initialize SDL_image, error: %s", IMG_GetError()); + SDL_Quit(); + return; + } this->window = SDL_CreateWindow(PROJECTNAME, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1000, 800, SDL_WINDOW_FULLSCREEN); if(this->window == nullptr) { SDL_LogError(SDL_LOG_CATEGORY_ERROR, "Failed to create window, SDL error: %s", SDL_GetError()); + IMG_Quit(); SDL_Quit(); return; } @@ -30,10 +37,12 @@ CanvasEngine::CanvasEngine() { if(this->render == nullptr) { SDL_LogError(SDL_LOG_CATEGORY_ERROR, "Failed to initialize renderer, SDL error: %s", SDL_GetError()); SDL_DestroyWindow(this->window); + IMG_Quit(); SDL_Quit(); return; } this->stay_open = true; + SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "CANVAS: initialized"); } CanvasEngine::~CanvasEngine() { @@ -49,6 +58,7 @@ void CanvasEngine::run() { // start tracking time std::timespec_get(&this->startup_ts, TIME_UTC); this->frame_start_ts = this->last_frame_start_ts = this->startup_ts; + SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "CANVAS: starting"); // main application loop while(stay_open) { // track frame time