From 812a71677d57cd80f806bdeed83d30c64f5483f6 Mon Sep 17 00:00:00 2001 From: "Guilherme M. Miranda" Date: Mon, 2 Feb 2026 11:54:27 -0300 Subject: [PATCH 01/13] initial dependency work --- .gitmodules | 6 ++++++ CMakeLists.txt | 25 +++++++++++++++++++++++++ library/SDL | 1 + library/imgui | 1 + 4 files changed, 33 insertions(+) create mode 100644 .gitmodules create mode 160000 library/SDL create mode 160000 library/imgui diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..1fd5823 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "library/SDL"] + path = library/SDL + url = https://github.com/libsdl-org/SDL.git +[submodule "library/imgui"] + path = library/imgui + url = https://github.com/ocornut/imgui.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 1af2432..6f53e19 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -51,6 +51,26 @@ if(SAN_COUNT GREATER 0) endif() endif() +# SDL3 +add_subdirectory(library/SDL) + +# Dear ImGui +add_library(imgui STATIC + library/imgui/imgui.cpp + library/imgui/imgui_draw.cpp + library/imgui/imgui_tables.cpp + library/imgui/imgui_widgets.cpp + library/imgui/backends/imgui_impl_sdl3.cpp + library/imgui/backends/imgui_impl_sdlrenderer3.cpp +) + +target_include_directories(imgui PUBLIC + library/imgui + library/imgui/backends +) + +target_link_libraries(imgui PUBLIC SDL3::SDL3) + add_executable(elfbsp src/elfbsp.cpp src/level.cpp @@ -82,6 +102,11 @@ target_compile_options(elfbsp PRIVATE $<$:-Wold-style-cast> ) +target_link_libraries(elfbsp PRIVATE + SDL3::SDL3 + imgui +) + if(ENABLE_WERROR) target_compile_options(elfbsp PRIVATE -Werror) endif() diff --git a/library/SDL b/library/SDL new file mode 160000 index 0000000..a962f40 --- /dev/null +++ b/library/SDL @@ -0,0 +1 @@ +Subproject commit a962f40bbba175e9716557a25d5d7965f134a3d3 diff --git a/library/imgui b/library/imgui new file mode 160000 index 0000000..3912b3d --- /dev/null +++ b/library/imgui @@ -0,0 +1 @@ +Subproject commit 3912b3d9a9c1b3f17431aebafd86d2f40ee6e59c From f0e70ee44b833dd4ddd9d76ff94932c5eae2c49c Mon Sep 17 00:00:00 2001 From: "Guilherme M. Miranda" Date: Tue, 3 Feb 2026 14:46:23 -0300 Subject: [PATCH 02/13] moved gui to separate file --- CMakeLists.txt | 2 +- src/core.hpp | 11 ++-- src/elfbsp.cpp | 17 ++++- src/view.cpp | 169 +++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 191 insertions(+), 8 deletions(-) create mode 100644 src/view.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 6f53e19..6ae8c62 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -66,7 +66,6 @@ add_library(imgui STATIC target_include_directories(imgui PUBLIC library/imgui - library/imgui/backends ) target_link_libraries(imgui PUBLIC SDL3::SDL3) @@ -77,6 +76,7 @@ add_executable(elfbsp src/node.cpp src/misc.cpp src/parse.cpp + src/view.cpp src/wad.cpp ) diff --git a/src/core.hpp b/src/core.hpp index f54cfcc..eeb5c8c 100644 --- a/src/core.hpp +++ b/src/core.hpp @@ -26,14 +26,15 @@ #include #include -constexpr auto PROJECT_COMPANY = "Guilherme Miranda, et al"; -constexpr auto PROJECT_COPYRIGHT = "Copyright (C) 1994-2026"; constexpr auto PROJECT_LICENSE = "GNU General Public License, version 2"; constexpr auto PROJECT_NAME = "ELFBSP"; constexpr auto PROJECT_VERSION = "v1.1"; -constexpr auto PROJECT_STRING = "ELFBSP v1.1"; - +constexpr auto PROJECT_APPID = "io.github."; +constexpr auto PROJECT_COMPANY = "elf-alchemist"; +constexpr auto PROJECT_COPYRIGHT = "Copyright (C) 1994-2026 - Guilherme Miranda, et al"; +constexpr auto PROJECT_URL = "https://github.com/elf-alchemist/elfbsp"; +constexpr auto PROJECT_TYPE = "application"; /* * Standard headers */ @@ -1432,3 +1433,5 @@ build_result_e BuildLevel(size_t lev_idx, const char *filename); void WriteAnalysis(const char *filename); void AnalysisPushLine(size_t level_index, bool is_fast, double split_cost, size_t segs, size_t subsecs, size_t nodes, int32_t left_size, int32_t right_size); + +void EnterGUI(void); diff --git a/src/elfbsp.cpp b/src/elfbsp.cpp index 52d51c3..8e0dddf 100644 --- a/src/elfbsp.cpp +++ b/src/elfbsp.cpp @@ -21,16 +21,17 @@ // //------------------------------------------------------------------------------ -#include "core.hpp" - #include #include #include #include #include +#include "core.hpp" + static bool opt_help = false; static bool opt_version = false; +static bool opt_view = false; static std::string opt_output; @@ -574,6 +575,10 @@ int32_t ParseLongArgument(const char *name, const int32_t argc, const char *argv { opt_version = true; } + else if (strcmp(name, "--view") == 0) + { + opt_view = true; + } else if (strcmp(name, "--analysis") == 0) { config.analysis = true; @@ -738,9 +743,15 @@ int32_t main(const int32_t argc, const char *argv[]) { ParseCommandLine(argc, argv); + if (opt_view) + { + EnterGUI(); + return 0; + } + if (opt_version) { - PrintLine(LOG_NORMAL, PROJECT_STRING); + PrintLine(LOG_NORMAL, "%s %s", PROJECT_NAME, PROJECT_VERSION); return 0; } diff --git a/src/view.cpp b/src/view.cpp new file mode 100644 index 0000000..6e54bd5 --- /dev/null +++ b/src/view.cpp @@ -0,0 +1,169 @@ + + +#include "SDL3/SDL_dialog.h" +#include "SDL3/SDL_init.h" +#include "SDL3/SDL_log.h" +#include "SDL3/SDL_render.h" +#include "SDL3/SDL_video.h" + +#include "backends/imgui_impl_sdl3.h" +#include "backends/imgui_impl_sdlrenderer3.h" +#include "imgui.h" + +#include "core.hpp" + +//------------------------------------------------------------------------------ + +struct RenderContext_t +{ + SDL_Window *window = nullptr; + SDL_Renderer *renderer = nullptr; + ImGuiIO *io = nullptr; +} RenderContext; + +//------------------------------------------------------------------------------ + +static void SystemInit(RenderContext_t &ctx) +{ + SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_NAME_STRING, PROJECT_NAME); + SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_VERSION_STRING, PROJECT_VERSION); + SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_IDENTIFIER_STRING, PROJECT_APPID); + SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_CREATOR_STRING, PROJECT_COMPANY); + SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_COPYRIGHT_STRING, PROJECT_COPYRIGHT); + SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_URL_STRING, PROJECT_URL); + SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_TYPE_STRING, PROJECT_TYPE); + + if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_EVENTS) == 0) + { + PrintLine(LOG_WARN, "SDL_Init failed: %s", SDL_GetError()); + exit(4); + } + + ctx.window = SDL_CreateWindow(nullptr, 1280, 720, SDL_WINDOW_RESIZABLE); + if (!ctx.window) + { + PrintLine(LOG_WARN, "SDL_CreateWindow failed: %s", SDL_GetError()); + SDL_Quit(); + exit(4); + } + + ctx.renderer = SDL_CreateRenderer(ctx.window, nullptr); + if (!ctx.renderer) + { + PrintLine(LOG_WARN, "SDL_CreateRenderer failed: %s", SDL_GetError()); + SDL_DestroyWindow(ctx.window); + SDL_Quit(); + exit(4); + } + + IMGUI_CHECKVERSION(); + ImGui::CreateContext(); + + ctx.io = &ImGui::GetIO(); + ctx.io->ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; + + ImGui::StyleColorsDark(); + + ImGui_ImplSDL3_InitForSDLRenderer(ctx.window, ctx.renderer); + ImGui_ImplSDLRenderer3_Init(ctx.renderer); +} + +static void SystemShutdown(RenderContext_t &ctx) +{ + ImGui_ImplSDLRenderer3_Shutdown(); + ImGui_ImplSDL3_Shutdown(); + ImGui::DestroyContext(); + + SDL_DestroyRenderer(ctx.renderer); + SDL_DestroyWindow(ctx.window); + SDL_Quit(); +} + +//------------------------------------------------------------------------------ + +constexpr void WadFileDialog(RenderContext_t &ctx) +{ + constexpr SDL_DialogFileFilter wad_filter[] = { + {"Doom WAD File", "wad"}, + }; + + auto WadFileDialogCallback = [](void *, const char *const *filelist, int) -> void + { + if (!filelist) + { + SDL_Log("An error ocurred: %s", SDL_GetError()); + return; + } + + if (!*filelist) + { + SDL_Log("Dialog canceled."); + return; + } + + for (int i = 0; filelist[i] != NULL; i++) + { + SDL_Log("Selected file: %s", filelist[i]); + } + }; + + SDL_ShowOpenFileDialog(WadFileDialogCallback, nullptr, ctx.window, wad_filter, SDL_arraysize(wad_filter), nullptr, false); +} + +//------------------------------------------------------------------------------ + +static auto WelcomeDialog = [](RenderContext_t &ctx) -> void +{ + ImGui::Begin("Welcome to ELFBSP"); + ImGui::Text("FPS: %.1f", ctx.io->Framerate); + if (ImGui::Button("Open WAD..")) + { + WadFileDialog(ctx); + } + ImGui::End(); +}; + +static void SystemLoop(RenderContext_t &ctx) +{ + SDL_Event event; + bool running = true; + + auto EventPoller = [&](void) -> void + { + while (SDL_PollEvent(&event)) + { + ImGui_ImplSDL3_ProcessEvent(&event); + if (event.type == SDL_EVENT_QUIT) + { + running = false; + } + } + }; + + while (running) + { + EventPoller(); + + // Frame + ImGui_ImplSDLRenderer3_NewFrame(); + ImGui_ImplSDL3_NewFrame(); + ImGui::NewFrame(); + + // UI + WelcomeDialog(ctx); + + // Render + ImGui::Render(); + SDL_SetRenderDrawColor(ctx.renderer, 20, 20, 20, 255); + SDL_RenderClear(ctx.renderer); + ImGui_ImplSDLRenderer3_RenderDrawData(ImGui::GetDrawData(), ctx.renderer); + SDL_RenderPresent(ctx.renderer); + } +} + +void EnterGUI(void) +{ + SystemInit(RenderContext); + SystemLoop(RenderContext); + SystemShutdown(RenderContext); +} From 55d8772268a3b8cb0319c661a812bf34db74ec6b Mon Sep 17 00:00:00 2001 From: "Guilherme M. Miranda" Date: Thu, 5 Feb 2026 16:27:03 -0300 Subject: [PATCH 03/13] lotsa work done --- .gitignore | 3 + CMakeLists.txt | 1 + src/view.cpp | 225 +++++++++++++++++++++++++++++++++++++++++++------ 3 files changed, 203 insertions(+), 26 deletions(-) diff --git a/.gitignore b/.gitignore index e70c28f..ad2d6ab 100644 --- a/.gitignore +++ b/.gitignore @@ -100,3 +100,6 @@ build/ .cache/ *.bak *.wad + +library/SDL/* +library/imgui/* diff --git a/CMakeLists.txt b/CMakeLists.txt index 6ae8c62..30a4486 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -57,6 +57,7 @@ add_subdirectory(library/SDL) # Dear ImGui add_library(imgui STATIC library/imgui/imgui.cpp + library/imgui/imgui_demo.cpp library/imgui/imgui_draw.cpp library/imgui/imgui_tables.cpp library/imgui/imgui_widgets.cpp diff --git a/src/view.cpp b/src/view.cpp index 6e54bd5..361ed4e 100644 --- a/src/view.cpp +++ b/src/view.cpp @@ -1,6 +1,8 @@ +#include #include "SDL3/SDL_dialog.h" +#include "SDL3/SDL_events.h" #include "SDL3/SDL_init.h" #include "SDL3/SDL_log.h" #include "SDL3/SDL_render.h" @@ -12,18 +14,44 @@ #include "core.hpp" +namespace fs = std::filesystem; + //------------------------------------------------------------------------------ -struct RenderContext_t +enum Job { + IDLE, + BUSY, + SUCCESS, + ERROR, +}; + +//------------------------------------------------------------------------------ + +struct ViewContext_t +{ + // General context data SDL_Window *window = nullptr; SDL_Renderer *renderer = nullptr; ImGuiIO *io = nullptr; -} RenderContext; + + // User requests + std::string wad_path_from_dialog = ""; + bool build_all_levels = false; + + // Loaded data + std::string wad_path = ""; + std::string wad_name = ""; + size_t wad_levels = 0; + Job wad_build_state = Job::IDLE; + + // Abort + bool active = true; +} ViewContext; //------------------------------------------------------------------------------ -static void SystemInit(RenderContext_t &ctx) +static void SystemInit(ViewContext_t &ctx) { SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_NAME_STRING, PROJECT_NAME); SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_VERSION_STRING, PROJECT_VERSION); @@ -33,13 +61,13 @@ static void SystemInit(RenderContext_t &ctx) SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_URL_STRING, PROJECT_URL); SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_TYPE_STRING, PROJECT_TYPE); - if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_EVENTS) == 0) + if (!SDL_Init(SDL_INIT_VIDEO | SDL_INIT_EVENTS)) { PrintLine(LOG_WARN, "SDL_Init failed: %s", SDL_GetError()); exit(4); } - ctx.window = SDL_CreateWindow(nullptr, 1280, 720, SDL_WINDOW_RESIZABLE); + ctx.window = SDL_CreateWindow(PROJECT_NAME, 1280, 720, SDL_WINDOW_RESIZABLE); if (!ctx.window) { PrintLine(LOG_WARN, "SDL_CreateWindow failed: %s", SDL_GetError()); @@ -47,7 +75,12 @@ static void SystemInit(RenderContext_t &ctx) exit(4); } - ctx.renderer = SDL_CreateRenderer(ctx.window, nullptr); + SDL_PropertiesID render_props = SDL_CreateProperties(); + SDL_SetPointerProperty(render_props, SDL_PROP_RENDERER_CREATE_WINDOW_POINTER, ctx.window); + SDL_SetNumberProperty(render_props, SDL_PROP_RENDERER_CREATE_PRESENT_VSYNC_NUMBER, 1); + ctx.renderer = SDL_CreateRendererWithProperties(render_props); + SDL_DestroyProperties(render_props); + if (!ctx.renderer) { PrintLine(LOG_WARN, "SDL_CreateRenderer failed: %s", SDL_GetError()); @@ -68,8 +101,10 @@ static void SystemInit(RenderContext_t &ctx) ImGui_ImplSDLRenderer3_Init(ctx.renderer); } -static void SystemShutdown(RenderContext_t &ctx) +static void SystemShutdown(ViewContext_t &ctx) { + CloseWad(); + ImGui_ImplSDLRenderer3_Shutdown(); ImGui_ImplSDL3_Shutdown(); ImGui::DestroyContext(); @@ -81,13 +116,13 @@ static void SystemShutdown(RenderContext_t &ctx) //------------------------------------------------------------------------------ -constexpr void WadFileDialog(RenderContext_t &ctx) +void WadFileDialog(ViewContext_t &ctx) { - constexpr SDL_DialogFileFilter wad_filter[] = { + const SDL_DialogFileFilter wad_filter[] = { {"Doom WAD File", "wad"}, }; - auto WadFileDialogCallback = [](void *, const char *const *filelist, int) -> void + auto WadFileDialogCallback = [](void *userdata, const char *const *filelist, int) -> void { if (!filelist) { @@ -104,45 +139,183 @@ constexpr void WadFileDialog(RenderContext_t &ctx) for (int i = 0; filelist[i] != NULL; i++) { SDL_Log("Selected file: %s", filelist[i]); + auto *ctx = static_cast(userdata); + ctx->wad_path_from_dialog = filelist[i]; } }; - SDL_ShowOpenFileDialog(WadFileDialogCallback, nullptr, ctx.window, wad_filter, SDL_arraysize(wad_filter), nullptr, false); + SDL_ShowOpenFileDialog(WadFileDialogCallback, &ctx, ctx.window, wad_filter, SDL_arraysize(wad_filter), nullptr, false); } //------------------------------------------------------------------------------ -static auto WelcomeDialog = [](RenderContext_t &ctx) -> void +static int SDLCALL BuildAllLevels(void *data) { - ImGui::Begin("Welcome to ELFBSP"); + ViewContext_t *ctx = static_cast(data); + + // loop over each level in the wad + for (size_t n = 0; n < ctx->wad_levels; n++) + { + BuildLevel(n, ctx->wad_path.c_str()); + } + + ctx->wad_build_state = Job::SUCCESS; + return 0; +}; + +//------------------------------------------------------------------------------ + +void ProcessEvents(ViewContext_t &ctx) +{ + // Load selected WAD + if (!ctx.wad_path_from_dialog.empty()) + { + ctx.wad_path = ctx.wad_path_from_dialog; + ctx.wad_path_from_dialog.clear(); + + auto wad_fs_path = fs::path(ctx.wad_path); + ctx.wad_name = wad_fs_path.filename().string(); + + OpenWad(ctx.wad_path.c_str()); + ctx.wad_levels = LevelsInWad(); + } + + // Build all levels form selected WAD + if (ctx.build_all_levels) + { + ctx.build_all_levels = false; + if (ctx.wad_build_state != Job::BUSY) + { + ctx.wad_build_state = Job::BUSY; + SDL_CreateThreadRuntime(BuildAllLevels, "BuildAllLevels", &ctx, nullptr, nullptr); + } + } +} + +//------------------------------------------------------------------------------ + +static auto MainDialog = [](ViewContext_t &ctx) -> void +{ + ImGui::SetNextWindowSizeConstraints(ImVec2(200, -1), ImVec2(800, -1)); + ImGui::Begin("ELFBSP", &ctx.active, ImGuiWindowFlags_MenuBar | ImGuiWindowFlags_AlwaysAutoResize); ImGui::Text("FPS: %.1f", ctx.io->Framerate); - if (ImGui::Button("Open WAD..")) + + if (ImGui::BeginMenuBar()) { - WadFileDialog(ctx); + if (ImGui::BeginMenu("File")) + { + if (ImGui::MenuItem("Open..", "Ctrl+O")) + { + WadFileDialog(ctx); + } + if (ImGui::MenuItem("Close", "Ctrl+W")) + { + ctx.active = false; + } + ImGui::EndMenu(); + } + ImGui::EndMenuBar(); + } + + if (!ctx.wad_path.empty()) + { + ImGui::Text("Loaded: %s", ctx.wad_name.c_str()); + ImGui::Text("Level count: %zu", ctx.wad_levels); + switch (ctx.wad_build_state) + { + case Job::IDLE: + ImGui::Text("Job status: Idle."); + break; + case Job::BUSY: + ImGui::Text("Job status: Building..."); + break; + case Job::SUCCESS: + ImGui::Text("Job status: Done."); + break; + case Job::ERROR: + ImGui::Text("Job status: Error."); + break; + } + if (ImGui::Button("Build All Levels")) + { + ctx.build_all_levels = true; + } } + ImGui::End(); }; -static void SystemLoop(RenderContext_t &ctx) +//------------------------------------------------------------------------------ + +void HandleKeyboardInput(ViewContext_t &ctx, SDL_Event &event) { - SDL_Event event; - bool running = true; + switch (event.type) + { + case SDL_EVENT_KEY_DOWN: + { + bool ctrl_pressed = false; + if constexpr (MACOS) + { + ctrl_pressed = (event.key.mod & SDL_KMOD_GUI) != 0; + } + else + { + ctrl_pressed = (event.key.mod & SDL_KMOD_CTRL) != 0; + } - auto EventPoller = [&](void) -> void + switch (event.key.key) + { + case SDLK_O: + if (ctrl_pressed) + { + WadFileDialog(ctx); + } + break; + case SDLK_W: + if (ctrl_pressed) + { + ctx.active = false; + } + break; + } + } + break; + + default: + break; + } +} + +static void SystemLoop(ViewContext_t &ctx) +{ + auto EventPoller = [](ViewContext_t &ctx) -> void { + SDL_Event event; + SDL_zero(event); while (SDL_PollEvent(&event)) { ImGui_ImplSDL3_ProcessEvent(&event); + if (event.type == SDL_EVENT_QUIT) { - running = false; + ctx.active = false; + return; } + + if (ImGui::GetIO().WantCaptureKeyboard) + { + // continue; + } + + HandleKeyboardInput(ctx, event); } }; - while (running) + while (ctx.active) { - EventPoller(); + // Pre-process + EventPoller(ctx); + ProcessEvents(ctx); // Frame ImGui_ImplSDLRenderer3_NewFrame(); @@ -150,7 +323,7 @@ static void SystemLoop(RenderContext_t &ctx) ImGui::NewFrame(); // UI - WelcomeDialog(ctx); + MainDialog(ctx); // Render ImGui::Render(); @@ -163,7 +336,7 @@ static void SystemLoop(RenderContext_t &ctx) void EnterGUI(void) { - SystemInit(RenderContext); - SystemLoop(RenderContext); - SystemShutdown(RenderContext); + SystemInit(ViewContext); + SystemLoop(ViewContext); + SystemShutdown(ViewContext); } From 41e6a6c0e9817ae56b5371625a88ebaa5de81e99 Mon Sep 17 00:00:00 2001 From: "Guilherme M. Miranda" Date: Fri, 6 Feb 2026 21:08:01 -0300 Subject: [PATCH 04/13] dummy commit --- CMakeLists.txt | 2 + src/core.hpp | 24 ++---------- src/elfbsp.cpp | 24 ++++++++++++ src/local.hpp | 2 + src/view.cpp | 100 ++++++++++++++++++++++++++++++++++++++++++++++--- 5 files changed, 125 insertions(+), 27 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 30a4486..8efe6a2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -72,8 +72,10 @@ target_include_directories(imgui PUBLIC target_link_libraries(imgui PUBLIC SDL3::SDL3) add_executable(elfbsp + src/core.hpp src/elfbsp.cpp src/level.cpp + src/local.hpp src/node.cpp src/misc.cpp src/parse.cpp diff --git a/src/core.hpp b/src/core.hpp index eeb5c8c..006031f 100644 --- a/src/core.hpp +++ b/src/core.hpp @@ -280,27 +280,9 @@ inline int32_t PRINTF_ATTR(2, 0) M_vsnprintf(char *buf, const char *s, va_list a // // show a message // -inline void PRINTF_ATTR(2, 3) PrintLine(const log_level_t level, const char *fmt, ...) -{ - FILE *const stream = (level == LOG_NORMAL) ? stdout : stderr; - char buffer[MSG_BUFFER_LENGTH]; - - va_list arg_ptr; - - va_start(arg_ptr, fmt); - M_vsnprintf(buffer, fmt, arg_ptr); - va_end(arg_ptr); - - buffer[MSG_BUFFER_LENGTH - 1] = '\0'; - - fprintf(stream, "%s\n", buffer); - fflush(stream); - - if (level == LOG_ERROR) - { - exit(3); - } -} +extern void PRINTF_ATTR(2, 3) (*PrintLine)(const log_level_t level, const char *fmt, ...); +extern void PRINTF_ATTR(2, 3) PrintLineGUI(const log_level_t level, const char *fmt, ...); +extern void PRINTF_ATTR(2, 3) PrintLineCLI(const log_level_t level, const char *fmt, ...); // // Assertion macros diff --git a/src/elfbsp.cpp b/src/elfbsp.cpp index 8e0dddf..48c492c 100644 --- a/src/elfbsp.cpp +++ b/src/elfbsp.cpp @@ -29,6 +29,30 @@ #include "core.hpp" +void PRINTF_ATTR(2, 3) PrintLineCLI(const log_level_t level, const char *fmt, ...) +{ + FILE *const stream = (level == LOG_NORMAL) ? stdout : stderr; + char buffer[MSG_BUFFER_LENGTH]; + + va_list arg_ptr; + + va_start(arg_ptr, fmt); + M_vsnprintf(buffer, fmt, arg_ptr); + va_end(arg_ptr); + + buffer[MSG_BUFFER_LENGTH - 1] = '\0'; + + fprintf(stream, "%s\n", buffer); + fflush(stream); + + if (level == LOG_ERROR) + { + exit(3); + } +} + +void PRINTF_ATTR(2, 3) (*PrintLine)(const log_level_t level, const char *fmt, ...) = PrintLineCLI; + static bool opt_help = false; static bool opt_version = false; static bool opt_view = false; diff --git a/src/local.hpp b/src/local.hpp index 2b65216..2ed59e3 100644 --- a/src/local.hpp +++ b/src/local.hpp @@ -555,3 +555,5 @@ void NormaliseBspTree(void); // vertices to integer coordinates (for example, removing segs whose // rounded coordinates degenerate to the same point). void RoundOffBspTree(void); + +extern size_t lev_current_idx; diff --git a/src/view.cpp b/src/view.cpp index 361ed4e..bb120a0 100644 --- a/src/view.cpp +++ b/src/view.cpp @@ -4,7 +4,6 @@ #include "SDL3/SDL_dialog.h" #include "SDL3/SDL_events.h" #include "SDL3/SDL_init.h" -#include "SDL3/SDL_log.h" #include "SDL3/SDL_render.h" #include "SDL3/SDL_video.h" @@ -13,6 +12,7 @@ #include "imgui.h" #include "core.hpp" +#include "local.hpp" namespace fs = std::filesystem; @@ -44,6 +44,8 @@ struct ViewContext_t std::string wad_name = ""; size_t wad_levels = 0; Job wad_build_state = Job::IDLE; + ImGuiTextBuffer logger; + bool scroll_to_bottom = true; // Abort bool active = true; @@ -51,6 +53,24 @@ struct ViewContext_t //------------------------------------------------------------------------------ +void PRINTF_ATTR(2, 3) PrintLineGUI(const log_level_t level, const char *fmt, ...) +{ + char buffer[MSG_BUFFER_LENGTH]; + + va_list arg_ptr; + + va_start(arg_ptr, fmt); + M_vsnprintf(buffer, fmt, arg_ptr); + va_end(arg_ptr); + + buffer[MSG_BUFFER_LENGTH - 1] = '\0'; + + ViewContext.logger.appendf("%s\n", buffer); + ViewContext.scroll_to_bottom = true; // Signal the UI to scroll +} + +//------------------------------------------------------------------------------ + static void SystemInit(ViewContext_t &ctx) { SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_NAME_STRING, PROJECT_NAME); @@ -99,10 +119,14 @@ static void SystemInit(ViewContext_t &ctx) ImGui_ImplSDL3_InitForSDLRenderer(ctx.window, ctx.renderer); ImGui_ImplSDLRenderer3_Init(ctx.renderer); + + PrintLine = PrintLineGUI; } static void SystemShutdown(ViewContext_t &ctx) { + PrintLine = PrintLineCLI; + CloseWad(); ImGui_ImplSDLRenderer3_Shutdown(); @@ -126,19 +150,19 @@ void WadFileDialog(ViewContext_t &ctx) { if (!filelist) { - SDL_Log("An error ocurred: %s", SDL_GetError()); + PrintLine(LOG_WARN, "An error ocurred: %s", SDL_GetError()); return; } if (!*filelist) { - SDL_Log("Dialog canceled."); + PrintLine(LOG_WARN, "Dialog canceled."); return; } for (int i = 0; filelist[i] != NULL; i++) { - SDL_Log("Selected file: %s", filelist[i]); + PrintLine(LOG_NORMAL, "Selected file: %s", filelist[i]); auto *ctx = static_cast(userdata); ctx->wad_path_from_dialog = filelist[i]; } @@ -194,7 +218,7 @@ void ProcessEvents(ViewContext_t &ctx) //------------------------------------------------------------------------------ -static auto MainDialog = [](ViewContext_t &ctx) -> void +static auto MainWindow = [](ViewContext_t &ctx) -> void { ImGui::SetNextWindowSizeConstraints(ImVec2(200, -1), ImVec2(800, -1)); ImGui::Begin("ELFBSP", &ctx.active, ImGuiWindowFlags_MenuBar | ImGuiWindowFlags_AlwaysAutoResize); @@ -245,6 +269,68 @@ static auto MainDialog = [](ViewContext_t &ctx) -> void ImGui::End(); }; +static auto WadWindow = [](ViewContext_t &ctx) -> void +{ + // GOD THIS SUCKS I NEED CONTEXT STRUCTS + if (ctx.wad_levels == 0 && lev_current_idx >= 0) + { + return; + } + ImGui::Begin("Currently loaded", &ctx.active, ImGuiWindowFlags_AlwaysAutoResize); + + ImGui::Text("Level: %s", GetLevelName(lev_current_idx)); + + ImGui::Text("Vertices: %zu", lev_vertices.size()); + ImGui::Text("Lines: %zu", lev_linedefs.size()); + ImGui::Text("Sides: %zu", lev_sidedefs.size()); + ImGui::Text("Sectors: %zu", lev_sectors.size()); + ImGui::Text("Things: %zu", lev_things.size()); + + ImGui::Text("Walltips: %zu", lev_walltips.size()); + + ImGui::Text("Nodes: %zu", lev_nodes.size()); + ImGui::Text("Subsectors: %zu", lev_subsecs.size()); + ImGui::Text("Segments: %zu", lev_segs.size()); + + ImGui::End(); +}; + +static auto ConfigWindow = [](ViewContext_t &ctx) -> void +{ + ImGui::Begin("Settings and debug logging", nullptr, ImGuiWindowFlags_AlwaysAutoResize); + if (ImGui::BeginTable("ConfigWindow", 2, ImGuiTableFlags_BordersInnerV)) + { + ImGui::TableNextColumn(); + + ImGui::InputDouble("Segment split cost", &config.split_cost, 1.0, 1.0, "%.0f"); + ImGui::Checkbox("Use faster node-picking algorithm", &config.fast); + ImGui::Checkbox("Make backup of loaded WAD", &config.backup); + ImGui::Checkbox("Analisys mode", &config.analysis); + ImGui::Checkbox("Verbose logging", &config.verbose); + + ImGui::TableNextColumn(); + + ImGui::CheckboxFlags("BLOCKMAP generation", &config.debug, DEBUG_BLOCKMAP); + ImGui::CheckboxFlags("REJECT generation", &config.debug, DEBUG_REJECT); + ImGui::CheckboxFlags("Map data loading", &config.debug, DEBUG_LOAD); + ImGui::CheckboxFlags("BSP lump writing", &config.debug, DEBUG_BSP); + ImGui::CheckboxFlags("Walltips calculation", &config.debug, DEBUG_WALLTIPS); + ImGui::CheckboxFlags("PolyObjs marking", &config.debug, DEBUG_POLYOBJ); + ImGui::CheckboxFlags("Vertices overlapping", &config.debug, DEBUG_OVERLAPS); + ImGui::CheckboxFlags("Node-picking steps", &config.debug, DEBUG_PICKNODE); + ImGui::CheckboxFlags("Segment splitting", &config.debug, DEBUG_SPLIT); + ImGui::CheckboxFlags("Cut list and minisegs", &config.debug, DEBUG_CUTLIST); + ImGui::CheckboxFlags("Node builder", &config.debug, DEBUG_BUILDER); + ImGui::CheckboxFlags("Cloackwise segment sorting", &config.debug, DEBUG_SORTER); + ImGui::CheckboxFlags("Subsector generation", &config.debug, DEBUG_SUBSEC); + ImGui::CheckboxFlags("WAD loading", &config.debug, DEBUG_WAD); + + ImGui::EndTable(); + } + + ImGui::End(); +}; + //------------------------------------------------------------------------------ void HandleKeyboardInput(ViewContext_t &ctx, SDL_Event &event) @@ -323,7 +409,9 @@ static void SystemLoop(ViewContext_t &ctx) ImGui::NewFrame(); // UI - MainDialog(ctx); + MainWindow(ctx); + WadWindow(ctx); + ConfigWindow(ctx); // Render ImGui::Render(); From 3c6b70c9624ef60b945edc53dbf03166428cc501 Mon Sep 17 00:00:00 2001 From: "Guilherme M. Miranda" Date: Fri, 13 Feb 2026 19:06:53 -0300 Subject: [PATCH 05/13] remove old analysis code --- Manifest.toml | 1560 ---------------------------------- Project.toml | 3 - scripts/BSP_SplitCostPlot.jl | 139 --- 3 files changed, 1702 deletions(-) delete mode 100644 Manifest.toml delete mode 100644 Project.toml delete mode 100644 scripts/BSP_SplitCostPlot.jl diff --git a/Manifest.toml b/Manifest.toml deleted file mode 100644 index 7b44559..0000000 --- a/Manifest.toml +++ /dev/null @@ -1,1560 +0,0 @@ -# This file is machine-generated - editing it directly is not advised - -julia_version = "1.12.4" -manifest_format = "2.0" -project_hash = "32c494615a4b60557e5120a3e50ed6b22f00c0bc" - -[[deps.AbstractFFTs]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "d92ad398961a3ed262d8bf04a1a2b8340f915fef" -uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c" -version = "1.5.0" - - [deps.AbstractFFTs.extensions] - AbstractFFTsChainRulesCoreExt = "ChainRulesCore" - AbstractFFTsTestExt = "Test" - - [deps.AbstractFFTs.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.AbstractTrees]] -git-tree-sha1 = "2d9c9a55f9c93e8887ad391fbae72f8ef55e1177" -uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" -version = "0.4.5" - -[[deps.Adapt]] -deps = ["LinearAlgebra", "Requires"] -git-tree-sha1 = "7e35fca2bdfba44d797c53dfe63a51fabf39bfc0" -uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" -version = "4.4.0" -weakdeps = ["SparseArrays", "StaticArrays"] - - [deps.Adapt.extensions] - AdaptSparseArraysExt = "SparseArrays" - AdaptStaticArraysExt = "StaticArrays" - -[[deps.AdaptivePredicates]] -git-tree-sha1 = "7e651ea8d262d2d74ce75fdf47c4d63c07dba7a6" -uuid = "35492f91-a3bd-45ad-95db-fcad7dcfedb7" -version = "1.2.0" - -[[deps.AliasTables]] -deps = ["PtrArrays", "Random"] -git-tree-sha1 = "9876e1e164b144ca45e9e3198d0b689cadfed9ff" -uuid = "66dad0bd-aa9a-41b7-9441-69ab47430ed8" -version = "1.1.3" - -[[deps.Animations]] -deps = ["Colors"] -git-tree-sha1 = "e092fa223bf66a3c41f9c022bd074d916dc303e7" -uuid = "27a7e980-b3e6-11e9-2bcd-0b925532e340" -version = "0.4.2" - -[[deps.ArgTools]] -uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -version = "1.1.2" - -[[deps.Artifacts]] -uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" -version = "1.11.0" - -[[deps.Automa]] -deps = ["PrecompileTools", "SIMD", "TranscodingStreams"] -git-tree-sha1 = "a8f503e8e1a5f583fbef15a8440c8c7e32185df2" -uuid = "67c07d97-cdcb-5c2c-af73-a7f9c32a568b" -version = "1.1.0" - -[[deps.AxisAlgorithms]] -deps = ["LinearAlgebra", "Random", "SparseArrays", "WoodburyMatrices"] -git-tree-sha1 = "01b8ccb13d68535d73d2b0c23e39bd23155fb712" -uuid = "13072b0f-2c55-5437-9ae7-d433b7a33950" -version = "1.1.0" - -[[deps.AxisArrays]] -deps = ["Dates", "IntervalSets", "IterTools", "RangeArrays"] -git-tree-sha1 = "4126b08903b777c88edf1754288144a0492c05ad" -uuid = "39de3d68-74b9-583c-8d2d-e117c070f3a9" -version = "0.4.8" - -[[deps.Base64]] -uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" -version = "1.11.0" - -[[deps.BaseDirs]] -git-tree-sha1 = "bca794632b8a9bbe159d56bf9e31c422671b35e0" -uuid = "18cc8868-cbac-4acf-b575-c8ff214dc66f" -version = "1.3.2" - -[[deps.Bzip2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1b96ea4a01afe0ea4090c5c8039690672dd13f2e" -uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" -version = "1.0.9+0" - -[[deps.CEnum]] -git-tree-sha1 = "389ad5c84de1ae7cf0e28e381131c98ea87d54fc" -uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" -version = "0.5.0" - -[[deps.CRC32c]] -uuid = "8bf52ea8-c179-5cab-976a-9e18b702a9bc" -version = "1.11.0" - -[[deps.CRlibm]] -deps = ["CRlibm_jll"] -git-tree-sha1 = "66188d9d103b92b6cd705214242e27f5737a1e5e" -uuid = "96374032-68de-5a5b-8d9e-752f78720389" -version = "1.0.2" - -[[deps.CRlibm_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "e329286945d0cfc04456972ea732551869af1cfc" -uuid = "4e9b3aee-d8a1-5a3d-ad8b-7d824db253f0" -version = "1.0.1+0" - -[[deps.CSV]] -deps = ["CodecZlib", "Dates", "FilePathsBase", "InlineStrings", "Mmap", "Parsers", "PooledArrays", "PrecompileTools", "SentinelArrays", "Tables", "Unicode", "WeakRefStrings", "WorkerUtilities"] -git-tree-sha1 = "deddd8725e5e1cc49ee205a1964256043720a6c3" -uuid = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" -version = "0.10.15" - -[[deps.Cairo_jll]] -deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] -git-tree-sha1 = "fde3bf89aead2e723284a8ff9cdf5b551ed700e8" -uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" -version = "1.18.5+0" - -[[deps.ChainRulesCore]] -deps = ["Compat", "LinearAlgebra"] -git-tree-sha1 = "e4c6a16e77171a5f5e25e9646617ab1c276c5607" -uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" -version = "1.26.0" -weakdeps = ["SparseArrays"] - - [deps.ChainRulesCore.extensions] - ChainRulesCoreSparseArraysExt = "SparseArrays" - -[[deps.CodecZlib]] -deps = ["TranscodingStreams", "Zlib_jll"] -git-tree-sha1 = "962834c22b66e32aa10f7611c08c8ca4e20749a9" -uuid = "944b1d66-785c-5afd-91f1-9de20f533193" -version = "0.7.8" - -[[deps.ColorBrewer]] -deps = ["Colors", "JSON"] -git-tree-sha1 = "07da79661b919001e6863b81fc572497daa58349" -uuid = "a2cac450-b92f-5266-8821-25eda20663c8" -version = "0.4.2" - -[[deps.ColorSchemes]] -deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"] -git-tree-sha1 = "b0fd3f56fa442f81e0a47815c92245acfaaa4e34" -uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" -version = "3.31.0" - -[[deps.ColorTypes]] -deps = ["FixedPointNumbers", "Random"] -git-tree-sha1 = "67e11ee83a43eb71ddc950302c53bf33f0690dfe" -uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" -version = "0.12.1" -weakdeps = ["StyledStrings"] - - [deps.ColorTypes.extensions] - StyledStringsExt = "StyledStrings" - -[[deps.ColorVectorSpace]] -deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"] -git-tree-sha1 = "8b3b6f87ce8f65a2b4f857528fd8d70086cd72b1" -uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" -version = "0.11.0" -weakdeps = ["SpecialFunctions"] - - [deps.ColorVectorSpace.extensions] - SpecialFunctionsExt = "SpecialFunctions" - -[[deps.Colors]] -deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] -git-tree-sha1 = "37ea44092930b1811e666c3bc38065d7d87fcc74" -uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" -version = "0.13.1" - -[[deps.Compat]] -deps = ["TOML", "UUIDs"] -git-tree-sha1 = "9d8a54ce4b17aa5bdce0ea5c34bc5e7c340d16ad" -uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "4.18.1" -weakdeps = ["Dates", "LinearAlgebra"] - - [deps.Compat.extensions] - CompatLinearAlgebraExt = "LinearAlgebra" - -[[deps.CompilerSupportLibraries_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" -version = "1.3.0+1" - -[[deps.ComputePipeline]] -deps = ["Observables", "Preferences"] -git-tree-sha1 = "76dab592fa553e378f9dd8adea16fe2591aa3daa" -uuid = "95dc2771-c249-4cd0-9c9f-1f3b4330693c" -version = "0.1.6" - -[[deps.ConstructionBase]] -git-tree-sha1 = "b4b092499347b18a015186eae3042f72267106cb" -uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" -version = "1.6.0" -weakdeps = ["IntervalSets", "LinearAlgebra", "StaticArrays"] - - [deps.ConstructionBase.extensions] - ConstructionBaseIntervalSetsExt = "IntervalSets" - ConstructionBaseLinearAlgebraExt = "LinearAlgebra" - ConstructionBaseStaticArraysExt = "StaticArrays" - -[[deps.Contour]] -git-tree-sha1 = "439e35b0b36e2e5881738abc8857bd92ad6ff9a8" -uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" -version = "0.6.3" - -[[deps.DataAPI]] -git-tree-sha1 = "abe83f3a2f1b857aac70ef8b269080af17764bbe" -uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" -version = "1.16.0" - -[[deps.DataStructures]] -deps = ["OrderedCollections"] -git-tree-sha1 = "e357641bb3e0638d353c4b29ea0e40ea644066a6" -uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.19.3" - -[[deps.DataValueInterfaces]] -git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" -uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" -version = "1.0.0" - -[[deps.Dates]] -deps = ["Printf"] -uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" -version = "1.11.0" - -[[deps.DelaunayTriangulation]] -deps = ["AdaptivePredicates", "EnumX", "ExactPredicates", "Random"] -git-tree-sha1 = "c55f5a9fd67bdbc8e089b5a3111fe4292986a8e8" -uuid = "927a84f5-c5f4-47a5-9785-b46e178433df" -version = "1.6.6" - -[[deps.Distributed]] -deps = ["Random", "Serialization", "Sockets"] -uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" -version = "1.11.0" - -[[deps.Distributions]] -deps = ["AliasTables", "FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"] -git-tree-sha1 = "fbcc7610f6d8348428f722ecbe0e6cfe22e672c6" -uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" -version = "0.25.123" - - [deps.Distributions.extensions] - DistributionsChainRulesCoreExt = "ChainRulesCore" - DistributionsDensityInterfaceExt = "DensityInterface" - DistributionsTestExt = "Test" - - [deps.Distributions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - DensityInterface = "b429d917-457f-4dbc-8f4c-0cc954292b1d" - Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.DocStringExtensions]] -git-tree-sha1 = "7442a5dfe1ebb773c29cc2962a8980f47221d76c" -uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" -version = "0.9.5" - -[[deps.Downloads]] -deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] -uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" -version = "1.7.0" - -[[deps.EarCut_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "e3290f2d49e661fbd94046d7e3726ffcb2d41053" -uuid = "5ae413db-bbd1-5e63-b57d-d24a61df00f5" -version = "2.2.4+0" - -[[deps.EnumX]] -git-tree-sha1 = "7bebc8aad6ee6217c78c5ddcf7ed289d65d0263e" -uuid = "4e289a0a-7415-4d19-859d-a7e5c4648b56" -version = "1.0.6" - -[[deps.ExactPredicates]] -deps = ["IntervalArithmetic", "Random", "StaticArrays"] -git-tree-sha1 = "83231673ea4d3d6008ac74dc5079e77ab2209d8f" -uuid = "429591f6-91af-11e9-00e2-59fbe8cec110" -version = "2.2.9" - -[[deps.Expat_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "27af30de8b5445644e8ffe3bcb0d72049c089cf1" -uuid = "2e619515-83b5-522b-bb60-26c02a35a201" -version = "2.7.3+0" - -[[deps.Extents]] -git-tree-sha1 = "b309b36a9e02fe7be71270dd8c0fd873625332b4" -uuid = "411431e0-e8b7-467b-b5e0-f676ba4f2910" -version = "0.1.6" - -[[deps.FFMPEG_jll]] -deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] -git-tree-sha1 = "01ba9d15e9eae375dc1eb9589df76b3572acd3f2" -uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" -version = "8.0.1+0" - -[[deps.FFTA]] -deps = ["AbstractFFTs", "DocStringExtensions", "LinearAlgebra", "MuladdMacro", "Primes", "Random", "Reexport"] -git-tree-sha1 = "65e55303b72f4a567a51b174dd2c47496efeb95a" -uuid = "b86e33f2-c0db-4aa1-a6e0-ab43e668529e" -version = "0.3.1" - -[[deps.FileIO]] -deps = ["Pkg", "Requires", "UUIDs"] -git-tree-sha1 = "d60eb76f37d7e5a40cc2e7c36974d864b82dc802" -uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" -version = "1.17.1" - - [deps.FileIO.extensions] - HTTPExt = "HTTP" - - [deps.FileIO.weakdeps] - HTTP = "cd3eb016-35fb-5094-929b-558a96fad6f3" - -[[deps.FilePaths]] -deps = ["FilePathsBase", "MacroTools", "Reexport"] -git-tree-sha1 = "a1b2fbfe98503f15b665ed45b3d149e5d8895e4c" -uuid = "8fc22ac5-c921-52a6-82fd-178b2807b824" -version = "0.9.0" - - [deps.FilePaths.extensions] - FilePathsGlobExt = "Glob" - FilePathsURIParserExt = "URIParser" - FilePathsURIsExt = "URIs" - - [deps.FilePaths.weakdeps] - Glob = "c27321d9-0574-5035-807b-f59d2c89b15c" - URIParser = "30578b45-9adc-5946-b283-645ec420af67" - URIs = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" - -[[deps.FilePathsBase]] -deps = ["Compat", "Dates"] -git-tree-sha1 = "3bab2c5aa25e7840a4b065805c0cdfc01f3068d2" -uuid = "48062228-2e41-5def-b9a4-89aafe57970f" -version = "0.9.24" - - [deps.FilePathsBase.extensions] - FilePathsBaseMmapExt = "Mmap" - FilePathsBaseTestExt = "Test" - - [deps.FilePathsBase.weakdeps] - Mmap = "a63ad114-7e13-5084-954f-fe012c677804" - Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.FileWatching]] -uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" -version = "1.11.0" - -[[deps.FillArrays]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "2f979084d1e13948a3352cf64a25df6bd3b4dca3" -uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" -version = "1.16.0" -weakdeps = ["PDMats", "SparseArrays", "StaticArrays", "Statistics"] - - [deps.FillArrays.extensions] - FillArraysPDMatsExt = "PDMats" - FillArraysSparseArraysExt = "SparseArrays" - FillArraysStaticArraysExt = "StaticArrays" - FillArraysStatisticsExt = "Statistics" - -[[deps.FixedPointNumbers]] -deps = ["Statistics"] -git-tree-sha1 = "05882d6995ae5c12bb5f36dd2ed3f61c98cbb172" -uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" -version = "0.8.5" - -[[deps.Fontconfig_jll]] -deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Zlib_jll"] -git-tree-sha1 = "f85dac9a96a01087df6e3a749840015a0ca3817d" -uuid = "a3f928ae-7b40-5064-980b-68af3947d34b" -version = "2.17.1+0" - -[[deps.Format]] -git-tree-sha1 = "9c68794ef81b08086aeb32eeaf33531668d5f5fc" -uuid = "1fa38f19-a742-5d3f-a2b9-30dd87b9d5f8" -version = "1.3.7" - -[[deps.FreeType]] -deps = ["CEnum", "FreeType2_jll"] -git-tree-sha1 = "907369da0f8e80728ab49c1c7e09327bf0d6d999" -uuid = "b38be410-82b0-50bf-ab77-7b57e271db43" -version = "4.1.1" - -[[deps.FreeType2_jll]] -deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "2c5512e11c791d1baed2049c5652441b28fc6a31" -uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" -version = "2.13.4+0" - -[[deps.FreeTypeAbstraction]] -deps = ["BaseDirs", "ColorVectorSpace", "Colors", "FreeType", "GeometryBasics", "Mmap"] -git-tree-sha1 = "4ebb930ef4a43817991ba35db6317a05e59abd11" -uuid = "663a7486-cb36-511b-a19d-713bb74d65c9" -version = "0.10.8" - -[[deps.FriBidi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "7a214fdac5ed5f59a22c2d9a885a16da1c74bbc7" -uuid = "559328eb-81f9-559d-9380-de523a88c83c" -version = "1.0.17+0" - -[[deps.Future]] -deps = ["Random"] -uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" -version = "1.11.0" - -[[deps.GeometryBasics]] -deps = ["EarCut_jll", "Extents", "IterTools", "LinearAlgebra", "PrecompileTools", "Random", "StaticArrays"] -git-tree-sha1 = "1f5a80f4ed9f5a4aada88fc2db456e637676414b" -uuid = "5c1252a2-5f33-56bf-86c9-59e7332b4326" -version = "0.5.10" - - [deps.GeometryBasics.extensions] - GeometryBasicsGeoInterfaceExt = "GeoInterface" - - [deps.GeometryBasics.weakdeps] - GeoInterface = "cf35fbd7-0cd7-5166-be24-54bfbe79505f" - -[[deps.GettextRuntime_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll"] -git-tree-sha1 = "45288942190db7c5f760f59c04495064eedf9340" -uuid = "b0724c58-0f36-5564-988d-3bb0596ebc4a" -version = "0.22.4+0" - -[[deps.Giflib_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "6570366d757b50fabae9f4315ad74d2e40c0560a" -uuid = "59f7168a-df46-5410-90c8-f2779963d0ec" -version = "5.2.3+0" - -[[deps.Glib_jll]] -deps = ["Artifacts", "GettextRuntime_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"] -git-tree-sha1 = "6b4d2dc81736fe3980ff0e8879a9fc7c33c44ddf" -uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" -version = "2.86.2+0" - -[[deps.Graphite2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "8a6dbda1fd736d60cc477d99f2e7a042acfa46e8" -uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" -version = "1.3.15+0" - -[[deps.GridLayoutBase]] -deps = ["GeometryBasics", "InteractiveUtils", "Observables"] -git-tree-sha1 = "93d5c27c8de51687a2c70ec0716e6e76f298416f" -uuid = "3955a311-db13-416c-9275-1d80ed98e5e9" -version = "0.11.2" - -[[deps.Grisu]] -git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2" -uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe" -version = "1.0.2" - -[[deps.HarfBuzz_jll]] -deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll"] -git-tree-sha1 = "f923f9a774fcf3f5cb761bfa43aeadd689714813" -uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566" -version = "8.5.1+0" - -[[deps.HypergeometricFunctions]] -deps = ["LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] -git-tree-sha1 = "68c173f4f449de5b438ee67ed0c9c748dc31a2ec" -uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" -version = "0.3.28" - -[[deps.ImageAxes]] -deps = ["AxisArrays", "ImageBase", "ImageCore", "Reexport", "SimpleTraits"] -git-tree-sha1 = "e12629406c6c4442539436581041d372d69c55ba" -uuid = "2803e5a7-5153-5ecf-9a86-9b4c37f5f5ac" -version = "0.6.12" - -[[deps.ImageBase]] -deps = ["ImageCore", "Reexport"] -git-tree-sha1 = "eb49b82c172811fd2c86759fa0553a2221feb909" -uuid = "c817782e-172a-44cc-b673-b171935fbb9e" -version = "0.1.7" - -[[deps.ImageCore]] -deps = ["ColorVectorSpace", "Colors", "FixedPointNumbers", "MappedArrays", "MosaicViews", "OffsetArrays", "PaddedViews", "PrecompileTools", "Reexport"] -git-tree-sha1 = "8c193230235bbcee22c8066b0374f63b5683c2d3" -uuid = "a09fc81d-aa75-5fe9-8630-4744c3626534" -version = "0.10.5" - -[[deps.ImageIO]] -deps = ["FileIO", "IndirectArrays", "JpegTurbo", "LazyModules", "Netpbm", "OpenEXR", "PNGFiles", "QOI", "Sixel", "TiffImages", "UUIDs", "WebP"] -git-tree-sha1 = "696144904b76e1ca433b886b4e7edd067d76cbf7" -uuid = "82e4d734-157c-48bb-816b-45c225c6df19" -version = "0.6.9" - -[[deps.ImageMetadata]] -deps = ["AxisArrays", "ImageAxes", "ImageBase", "ImageCore"] -git-tree-sha1 = "2a81c3897be6fbcde0802a0ebe6796d0562f63ec" -uuid = "bc367c6b-8a6b-528e-b4bd-a4b897500b49" -version = "0.9.10" - -[[deps.Imath_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "dcc8d0cd653e55213df9b75ebc6fe4a8d3254c65" -uuid = "905a6f67-0a94-5f89-b386-d35d92009cd1" -version = "3.2.2+0" - -[[deps.IndirectArrays]] -git-tree-sha1 = "012e604e1c7458645cb8b436f8fba789a51b257f" -uuid = "9b13fd28-a010-5f03-acff-a1bbcff69959" -version = "1.0.0" - -[[deps.Inflate]] -git-tree-sha1 = "d1b1b796e47d94588b3757fe84fbf65a5ec4a80d" -uuid = "d25df0c9-e2be-5dd7-82c8-3ad0b3e990b9" -version = "0.1.5" - -[[deps.InlineStrings]] -git-tree-sha1 = "8f3d257792a522b4601c24a577954b0a8cd7334d" -uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48" -version = "1.4.5" - - [deps.InlineStrings.extensions] - ArrowTypesExt = "ArrowTypes" - ParsersExt = "Parsers" - - [deps.InlineStrings.weakdeps] - ArrowTypes = "31f734f8-188a-4ce0-8406-c8a06bd891cd" - Parsers = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" - -[[deps.IntegerMathUtils]] -git-tree-sha1 = "4c1acff2dc6b6967e7e750633c50bc3b8d83e617" -uuid = "18e54dd8-cb9d-406c-a71d-865a43cbb235" -version = "0.1.3" - -[[deps.InteractiveUtils]] -deps = ["Markdown"] -uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" -version = "1.11.0" - -[[deps.Interpolations]] -deps = ["Adapt", "AxisAlgorithms", "ChainRulesCore", "LinearAlgebra", "OffsetArrays", "Random", "Ratios", "SharedArrays", "SparseArrays", "StaticArrays", "WoodburyMatrices"] -git-tree-sha1 = "65d505fa4c0d7072990d659ef3fc086eb6da8208" -uuid = "a98d9a8b-a2ab-59e6-89dd-64a1c18fca59" -version = "0.16.2" - - [deps.Interpolations.extensions] - InterpolationsForwardDiffExt = "ForwardDiff" - InterpolationsUnitfulExt = "Unitful" - - [deps.Interpolations.weakdeps] - ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" - Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" - -[[deps.IntervalArithmetic]] -deps = ["CRlibm", "MacroTools", "OpenBLASConsistentFPCSR_jll", "Printf", "Random", "RoundingEmulator"] -git-tree-sha1 = "02b61501dbe6da3b927cc25dacd7ce32390ee970" -uuid = "d1acc4aa-44c8-5952-acd4-ba5d80a2a253" -version = "1.0.2" - - [deps.IntervalArithmetic.extensions] - IntervalArithmeticArblibExt = "Arblib" - IntervalArithmeticDiffRulesExt = "DiffRules" - IntervalArithmeticForwardDiffExt = "ForwardDiff" - IntervalArithmeticIntervalSetsExt = "IntervalSets" - IntervalArithmeticLinearAlgebraExt = "LinearAlgebra" - IntervalArithmeticRecipesBaseExt = "RecipesBase" - IntervalArithmeticSparseArraysExt = "SparseArrays" - - [deps.IntervalArithmetic.weakdeps] - Arblib = "fb37089c-8514-4489-9461-98f9c8763369" - DiffRules = "b552c78f-8df3-52c6-915a-8e097449b14b" - ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" - IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" - LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" - RecipesBase = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" - SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" - -[[deps.IntervalSets]] -git-tree-sha1 = "d966f85b3b7a8e49d034d27a189e9a4874b4391a" -uuid = "8197267c-284f-5f27-9208-e0e47529a953" -version = "0.7.13" - - [deps.IntervalSets.extensions] - IntervalSetsRandomExt = "Random" - IntervalSetsRecipesBaseExt = "RecipesBase" - IntervalSetsStatisticsExt = "Statistics" - - [deps.IntervalSets.weakdeps] - Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" - RecipesBase = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" - Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" - -[[deps.InverseFunctions]] -git-tree-sha1 = "a779299d77cd080bf77b97535acecd73e1c5e5cb" -uuid = "3587e190-3f89-42d0-90ee-14403ec27112" -version = "0.1.17" - - [deps.InverseFunctions.extensions] - InverseFunctionsDatesExt = "Dates" - InverseFunctionsTestExt = "Test" - - [deps.InverseFunctions.weakdeps] - Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" - Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.IrrationalConstants]] -git-tree-sha1 = "b2d91fe939cae05960e760110b328288867b5758" -uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" -version = "0.2.6" - -[[deps.Isoband]] -deps = ["isoband_jll"] -git-tree-sha1 = "f9b6d97355599074dc867318950adaa6f9946137" -uuid = "f1662d9f-8043-43de-a69a-05efc1cc6ff4" -version = "0.1.1" - -[[deps.IterTools]] -git-tree-sha1 = "42d5f897009e7ff2cf88db414a389e5ed1bdd023" -uuid = "c8e1da08-722c-5040-9ed9-7db0dc04731e" -version = "1.10.0" - -[[deps.IteratorInterfaceExtensions]] -git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" -uuid = "82899510-4779-5014-852e-03e436cf321d" -version = "1.0.0" - -[[deps.JLLWrappers]] -deps = ["Artifacts", "Preferences"] -git-tree-sha1 = "0533e564aae234aff59ab625543145446d8b6ec2" -uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" -version = "1.7.1" - -[[deps.JSON]] -deps = ["Dates", "Logging", "Parsers", "PrecompileTools", "StructUtils", "UUIDs", "Unicode"] -git-tree-sha1 = "b3ad4a0255688dcb895a52fafbaae3023b588a90" -uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" -version = "1.4.0" - - [deps.JSON.extensions] - JSONArrowExt = ["ArrowTypes"] - - [deps.JSON.weakdeps] - ArrowTypes = "31f734f8-188a-4ce0-8406-c8a06bd891cd" - -[[deps.JpegTurbo]] -deps = ["CEnum", "FileIO", "ImageCore", "JpegTurbo_jll", "TOML"] -git-tree-sha1 = "9496de8fb52c224a2e3f9ff403947674517317d9" -uuid = "b835a17e-a41a-41e7-81f0-2f016b05efe0" -version = "0.1.6" - -[[deps.JpegTurbo_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "b6893345fd6658c8e475d40155789f4860ac3b21" -uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" -version = "3.1.4+0" - -[[deps.JuliaSyntaxHighlighting]] -deps = ["StyledStrings"] -uuid = "ac6e5ff7-fb65-4e79-a425-ec3bc9c03011" -version = "1.12.0" - -[[deps.KernelDensity]] -deps = ["Distributions", "DocStringExtensions", "FFTA", "Interpolations", "StatsBase"] -git-tree-sha1 = "4260cfc991b8885bf747801fb60dd4503250e478" -uuid = "5ab0869b-81aa-558d-bb23-cbf5423bbe9b" -version = "0.6.11" - -[[deps.LAME_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "059aabebaa7c82ccb853dd4a0ee9d17796f7e1bc" -uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d" -version = "3.100.3+0" - -[[deps.LERC_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "aaafe88dccbd957a8d82f7d05be9b69172e0cee3" -uuid = "88015f11-f218-50d7-93a8-a6af411a945d" -version = "4.0.1+0" - -[[deps.LLVMOpenMP_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "eb62a3deb62fc6d8822c0c4bef73e4412419c5d8" -uuid = "1d63c593-3942-5779-bab2-d838dc0a180e" -version = "18.1.8+0" - -[[deps.LZO_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1c602b1127f4751facb671441ca72715cc95938a" -uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac" -version = "2.10.3+0" - -[[deps.LaTeXStrings]] -git-tree-sha1 = "dda21b8cbd6a6c40d9d02a73230f9d70fed6918c" -uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" -version = "1.4.0" - -[[deps.LazyModules]] -git-tree-sha1 = "a560dd966b386ac9ae60bdd3a3d3a326062d3c3e" -uuid = "8cdb02fc-e678-4876-92c5-9defec4f444e" -version = "0.3.1" - -[[deps.LibCURL]] -deps = ["LibCURL_jll", "MozillaCACerts_jll"] -uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" -version = "0.6.4" - -[[deps.LibCURL_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "OpenSSL_jll", "Zlib_jll", "nghttp2_jll"] -uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "8.15.0+0" - -[[deps.LibGit2]] -deps = ["LibGit2_jll", "NetworkOptions", "Printf", "SHA"] -uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" -version = "1.11.0" - -[[deps.LibGit2_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "OpenSSL_jll"] -uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" -version = "1.9.0+0" - -[[deps.LibSSH2_jll]] -deps = ["Artifacts", "Libdl", "OpenSSL_jll"] -uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -version = "1.11.3+1" - -[[deps.Libdl]] -uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" -version = "1.11.0" - -[[deps.Libffi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "c8da7e6a91781c41a863611c7e966098d783c57a" -uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490" -version = "3.4.7+0" - -[[deps.Libglvnd_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll", "Xorg_libXext_jll"] -git-tree-sha1 = "d36c21b9e7c172a44a10484125024495e2625ac0" -uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29" -version = "1.7.1+1" - -[[deps.Libiconv_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "be484f5c92fad0bd8acfef35fe017900b0b73809" -uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" -version = "1.18.0+0" - -[[deps.Libmount_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "3acf07f130a76f87c041cfb2ff7d7284ca67b072" -uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" -version = "2.41.2+0" - -[[deps.Libtiff_jll]] -deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"] -git-tree-sha1 = "f04133fe05eff1667d2054c53d59f9122383fe05" -uuid = "89763e89-9b03-5906-acba-b20f662cd828" -version = "4.7.2+0" - -[[deps.Libuuid_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "2a7a12fc0a4e7fb773450d17975322aa77142106" -uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" -version = "2.41.2+0" - -[[deps.LinearAlgebra]] -deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] -uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" -version = "1.12.0" - -[[deps.LogExpFunctions]] -deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] -git-tree-sha1 = "13ca9e2586b89836fd20cccf56e57e2b9ae7f38f" -uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" -version = "0.3.29" - - [deps.LogExpFunctions.extensions] - LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" - LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" - LogExpFunctionsInverseFunctionsExt = "InverseFunctions" - - [deps.LogExpFunctions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.Logging]] -uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" -version = "1.11.0" - -[[deps.MacroTools]] -git-tree-sha1 = "1e0228a030642014fe5cfe68c2c0a818f9e3f522" -uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" -version = "0.5.16" - -[[deps.Makie]] -deps = ["Animations", "Base64", "CRC32c", "ColorBrewer", "ColorSchemes", "ColorTypes", "Colors", "ComputePipeline", "Contour", "Dates", "DelaunayTriangulation", "Distributions", "DocStringExtensions", "Downloads", "FFMPEG_jll", "FileIO", "FilePaths", "FixedPointNumbers", "Format", "FreeType", "FreeTypeAbstraction", "GeometryBasics", "GridLayoutBase", "ImageBase", "ImageIO", "InteractiveUtils", "Interpolations", "IntervalSets", "InverseFunctions", "Isoband", "KernelDensity", "LaTeXStrings", "LinearAlgebra", "MacroTools", "Markdown", "MathTeXEngine", "Observables", "OffsetArrays", "PNGFiles", "Packing", "Pkg", "PlotUtils", "PolygonOps", "PrecompileTools", "Printf", "REPL", "Random", "RelocatableFolders", "Scratch", "ShaderAbstractions", "Showoff", "SignedDistanceFields", "SparseArrays", "Statistics", "StatsBase", "StatsFuns", "StructArrays", "TriplotBase", "UnicodeFun", "Unitful"] -git-tree-sha1 = "d1b974f376c24dad02c873e951c5cd4e351cd7c2" -uuid = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" -version = "0.24.8" - - [deps.Makie.extensions] - MakieDynamicQuantitiesExt = "DynamicQuantities" - - [deps.Makie.weakdeps] - DynamicQuantities = "06fc5a27-2a28-4c7c-a15d-362465fb6821" - -[[deps.MappedArrays]] -git-tree-sha1 = "0ee4497a4e80dbd29c058fcee6493f5219556f40" -uuid = "dbb5928d-eab1-5f90-85c2-b9b0edb7c900" -version = "0.4.3" - -[[deps.Markdown]] -deps = ["Base64", "JuliaSyntaxHighlighting", "StyledStrings"] -uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" -version = "1.11.0" - -[[deps.MathTeXEngine]] -deps = ["AbstractTrees", "Automa", "DataStructures", "FreeTypeAbstraction", "GeometryBasics", "LaTeXStrings", "REPL", "RelocatableFolders", "UnicodeFun"] -git-tree-sha1 = "7eb8cdaa6f0e8081616367c10b31b9d9b34bb02a" -uuid = "0a4f8689-d25c-4efe-a92b-7142dfc1aa53" -version = "0.6.7" - -[[deps.Missings]] -deps = ["DataAPI"] -git-tree-sha1 = "ec4f7fbeab05d7747bdf98eb74d130a2a2ed298d" -uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" -version = "1.2.0" - -[[deps.Mmap]] -uuid = "a63ad114-7e13-5084-954f-fe012c677804" -version = "1.11.0" - -[[deps.MosaicViews]] -deps = ["MappedArrays", "OffsetArrays", "PaddedViews", "StackViews"] -git-tree-sha1 = "7b86a5d4d70a9f5cdf2dacb3cbe6d251d1a61dbe" -uuid = "e94cdb99-869f-56ef-bcf0-1ae2bcbe0389" -version = "0.3.4" - -[[deps.MozillaCACerts_jll]] -uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2025.11.4" - -[[deps.MuladdMacro]] -git-tree-sha1 = "cac9cc5499c25554cba55cd3c30543cff5ca4fab" -uuid = "46d2c3a1-f734-5fdb-9937-b9b9aeba4221" -version = "0.2.4" - -[[deps.Netpbm]] -deps = ["FileIO", "ImageCore", "ImageMetadata"] -git-tree-sha1 = "d92b107dbb887293622df7697a2223f9f8176fcd" -uuid = "f09324ee-3d7c-5217-9330-fc30815ba969" -version = "1.1.1" - -[[deps.NetworkOptions]] -uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" -version = "1.3.0" - -[[deps.Observables]] -git-tree-sha1 = "7438a59546cf62428fc9d1bc94729146d37a7225" -uuid = "510215fc-4207-5dde-b226-833fc4488ee2" -version = "0.5.5" - -[[deps.OffsetArrays]] -git-tree-sha1 = "117432e406b5c023f665fa73dc26e79ec3630151" -uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" -version = "1.17.0" -weakdeps = ["Adapt"] - - [deps.OffsetArrays.extensions] - OffsetArraysAdaptExt = "Adapt" - -[[deps.Ogg_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "b6aa4566bb7ae78498a5e68943863fa8b5231b59" -uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051" -version = "1.3.6+0" - -[[deps.OpenBLASConsistentFPCSR_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl"] -git-tree-sha1 = "f2b3b9e52a5eb6a3434c8cca67ad2dde011194f4" -uuid = "6cdc7f73-28fd-5e50-80fb-958a8875b1af" -version = "0.3.30+0" - -[[deps.OpenBLAS_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] -uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -version = "0.3.29+0" - -[[deps.OpenEXR]] -deps = ["Colors", "FileIO", "OpenEXR_jll"] -git-tree-sha1 = "97db9e07fe2091882c765380ef58ec553074e9c7" -uuid = "52e1d378-f018-4a11-a4be-720524705ac7" -version = "0.3.3" - -[[deps.OpenEXR_jll]] -deps = ["Artifacts", "Imath_jll", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "df9b7c88c2e7a2e77146223c526bf9e236d5f450" -uuid = "18a262bb-aa17-5467-a713-aee519bc75cb" -version = "3.4.4+0" - -[[deps.OpenLibm_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "05823500-19ac-5b8b-9628-191a04bc5112" -version = "0.8.7+0" - -[[deps.OpenSSL_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "3.5.4+0" - -[[deps.OpenSpecFun_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1346c9208249809840c91b26703912dff463d335" -uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" -version = "0.5.6+0" - -[[deps.Opus_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "39a11854f0cba27aa41efaedf43c77c5daa6be51" -uuid = "91d4177d-7536-5919-b921-800302f37372" -version = "1.6.0+0" - -[[deps.OrderedCollections]] -git-tree-sha1 = "05868e21324cede2207c6f0f466b4bfef6d5e7ee" -uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -version = "1.8.1" - -[[deps.PCRE2_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" -version = "10.44.0+1" - -[[deps.PDMats]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "e4cff168707d441cd6bf3ff7e4832bdf34278e4a" -uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" -version = "0.11.37" -weakdeps = ["StatsBase"] - - [deps.PDMats.extensions] - StatsBaseExt = "StatsBase" - -[[deps.PNGFiles]] -deps = ["Base64", "CEnum", "ImageCore", "IndirectArrays", "OffsetArrays", "libpng_jll"] -git-tree-sha1 = "cf181f0b1e6a18dfeb0ee8acc4a9d1672499626c" -uuid = "f57f5aa1-a3ce-4bc8-8ab9-96f992907883" -version = "0.4.4" - -[[deps.Packing]] -deps = ["GeometryBasics"] -git-tree-sha1 = "bc5bf2ea3d5351edf285a06b0016788a121ce92c" -uuid = "19eb6ba3-879d-56ad-ad62-d5c202156566" -version = "0.5.1" - -[[deps.PaddedViews]] -deps = ["OffsetArrays"] -git-tree-sha1 = "0fac6313486baae819364c52b4f483450a9d793f" -uuid = "5432bcbf-9aad-5242-b902-cca2824c8663" -version = "0.5.12" - -[[deps.Parsers]] -deps = ["Dates", "PrecompileTools", "UUIDs"] -git-tree-sha1 = "7d2f8f21da5db6a806faf7b9b292296da42b2810" -uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "2.8.3" - -[[deps.Pixman_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "Libdl"] -git-tree-sha1 = "db76b1ecd5e9715f3d043cec13b2ec93ce015d53" -uuid = "30392449-352a-5448-841d-b1acce4e97dc" -version = "0.44.2+0" - -[[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "Random", "SHA", "TOML", "Tar", "UUIDs", "p7zip_jll"] -uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.12.1" -weakdeps = ["REPL"] - - [deps.Pkg.extensions] - REPLExt = "REPL" - -[[deps.PkgVersion]] -deps = ["Pkg"] -git-tree-sha1 = "f9501cc0430a26bc3d156ae1b5b0c1b47af4d6da" -uuid = "eebad327-c553-4316-9ea0-9fa01ccd7688" -version = "0.3.3" - -[[deps.PlotUtils]] -deps = ["ColorSchemes", "Colors", "Dates", "PrecompileTools", "Printf", "Random", "Reexport", "StableRNGs", "Statistics"] -git-tree-sha1 = "26ca162858917496748aad52bb5d3be4d26a228a" -uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" -version = "1.4.4" - -[[deps.PolygonOps]] -git-tree-sha1 = "77b3d3605fc1cd0b42d95eba87dfcd2bf67d5ff6" -uuid = "647866c9-e3ac-4575-94e7-e3d426903924" -version = "0.1.2" - -[[deps.PooledArrays]] -deps = ["DataAPI", "Future"] -git-tree-sha1 = "36d8b4b899628fb92c2749eb488d884a926614d3" -uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720" -version = "1.4.3" - -[[deps.PrecompileTools]] -deps = ["Preferences"] -git-tree-sha1 = "07a921781cab75691315adc645096ed5e370cb77" -uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" -version = "1.3.3" - -[[deps.Preferences]] -deps = ["TOML"] -git-tree-sha1 = "522f093a29b31a93e34eaea17ba055d850edea28" -uuid = "21216c6a-2e73-6563-6e65-726566657250" -version = "1.5.1" - -[[deps.Primes]] -deps = ["IntegerMathUtils"] -git-tree-sha1 = "25cdd1d20cd005b52fc12cb6be3f75faaf59bb9b" -uuid = "27ebfcd6-29c5-5fa9-bf4b-fb8fc14df3ae" -version = "0.5.7" - -[[deps.Printf]] -deps = ["Unicode"] -uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" -version = "1.11.0" - -[[deps.ProgressMeter]] -deps = ["Distributed", "Printf"] -git-tree-sha1 = "fbb92c6c56b34e1a2c4c36058f68f332bec840e7" -uuid = "92933f4c-e287-5a05-a399-4b506db050ca" -version = "1.11.0" - -[[deps.PtrArrays]] -git-tree-sha1 = "1d36ef11a9aaf1e8b74dacc6a731dd1de8fd493d" -uuid = "43287f4e-b6f4-7ad1-bb20-aadabca52c3d" -version = "1.3.0" - -[[deps.QOI]] -deps = ["ColorTypes", "FileIO", "FixedPointNumbers"] -git-tree-sha1 = "472daaa816895cb7aee81658d4e7aec901fa1106" -uuid = "4b34888f-f399-49d4-9bb3-47ed5cae4e65" -version = "1.0.2" - -[[deps.QuadGK]] -deps = ["DataStructures", "LinearAlgebra"] -git-tree-sha1 = "9da16da70037ba9d701192e27befedefb91ec284" -uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" -version = "2.11.2" - - [deps.QuadGK.extensions] - QuadGKEnzymeExt = "Enzyme" - - [deps.QuadGK.weakdeps] - Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" - -[[deps.REPL]] -deps = ["InteractiveUtils", "JuliaSyntaxHighlighting", "Markdown", "Sockets", "StyledStrings", "Unicode"] -uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" -version = "1.11.0" - -[[deps.Random]] -deps = ["SHA"] -uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" -version = "1.11.0" - -[[deps.RangeArrays]] -git-tree-sha1 = "b9039e93773ddcfc828f12aadf7115b4b4d225f5" -uuid = "b3c3ace0-ae52-54e7-9d0b-2c1406fd6b9d" -version = "0.3.2" - -[[deps.Ratios]] -deps = ["Requires"] -git-tree-sha1 = "1342a47bf3260ee108163042310d26f2be5ec90b" -uuid = "c84ed2f1-dad5-54f0-aa8e-dbefe2724439" -version = "0.4.5" -weakdeps = ["FixedPointNumbers"] - - [deps.Ratios.extensions] - RatiosFixedPointNumbersExt = "FixedPointNumbers" - -[[deps.Reexport]] -git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" -uuid = "189a3867-3050-52da-a836-e630ba90ab69" -version = "1.2.2" - -[[deps.RelocatableFolders]] -deps = ["SHA", "Scratch"] -git-tree-sha1 = "ffdaf70d81cf6ff22c2b6e733c900c3321cab864" -uuid = "05181044-ff0b-4ac5-8273-598c1e38db00" -version = "1.0.1" - -[[deps.Requires]] -deps = ["UUIDs"] -git-tree-sha1 = "62389eeff14780bfe55195b7204c0d8738436d64" -uuid = "ae029012-a4dd-5104-9daa-d747884805df" -version = "1.3.1" - -[[deps.Rmath]] -deps = ["Random", "Rmath_jll"] -git-tree-sha1 = "5b3d50eb374cea306873b371d3f8d3915a018f0b" -uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" -version = "0.9.0" - -[[deps.Rmath_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "58cdd8fb2201a6267e1db87ff148dd6c1dbd8ad8" -uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" -version = "0.5.1+0" - -[[deps.RoundingEmulator]] -git-tree-sha1 = "40b9edad2e5287e05bd413a38f61a8ff55b9557b" -uuid = "5eaf0fd0-dfba-4ccb-bf02-d820a40db705" -version = "0.2.1" - -[[deps.SHA]] -uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" -version = "0.7.0" - -[[deps.SIMD]] -deps = ["PrecompileTools"] -git-tree-sha1 = "e24dc23107d426a096d3eae6c165b921e74c18e4" -uuid = "fdea26ae-647d-5447-a871-4b548cad5224" -version = "3.7.2" - -[[deps.Scratch]] -deps = ["Dates"] -git-tree-sha1 = "9b81b8393e50b7d4e6d0a9f14e192294d3b7c109" -uuid = "6c6a2e73-6563-6170-7368-637461726353" -version = "1.3.0" - -[[deps.SentinelArrays]] -deps = ["Dates", "Random"] -git-tree-sha1 = "ebe7e59b37c400f694f52b58c93d26201387da70" -uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" -version = "1.4.9" - -[[deps.Serialization]] -uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" -version = "1.11.0" - -[[deps.ShaderAbstractions]] -deps = ["ColorTypes", "FixedPointNumbers", "GeometryBasics", "LinearAlgebra", "Observables", "StaticArrays"] -git-tree-sha1 = "818554664a2e01fc3784becb2eb3a82326a604b6" -uuid = "65257c39-d410-5151-9873-9b3e5be5013e" -version = "0.5.0" - -[[deps.SharedArrays]] -deps = ["Distributed", "Mmap", "Random", "Serialization"] -uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" -version = "1.11.0" - -[[deps.Showoff]] -deps = ["Dates", "Grisu"] -git-tree-sha1 = "91eddf657aca81df9ae6ceb20b959ae5653ad1de" -uuid = "992d4aef-0814-514b-bc4d-f2e9a6c4116f" -version = "1.0.3" - -[[deps.SignedDistanceFields]] -deps = ["Statistics"] -git-tree-sha1 = "3949ad92e1c9d2ff0cd4a1317d5ecbba682f4b92" -uuid = "73760f76-fbc4-59ce-8f25-708e95d2df96" -version = "0.4.1" - -[[deps.SimpleTraits]] -deps = ["InteractiveUtils", "MacroTools"] -git-tree-sha1 = "be8eeac05ec97d379347584fa9fe2f5f76795bcb" -uuid = "699a6c99-e7fa-54fc-8d76-47d257e15c1d" -version = "0.9.5" - -[[deps.Sixel]] -deps = ["Dates", "FileIO", "ImageCore", "IndirectArrays", "OffsetArrays", "REPL", "libsixel_jll"] -git-tree-sha1 = "0494aed9501e7fb65daba895fb7fd57cc38bc743" -uuid = "45858cf5-a6b0-47a3-bbea-62219f50df47" -version = "0.1.5" - -[[deps.Sockets]] -uuid = "6462fe0b-24de-5631-8697-dd941f90decc" -version = "1.11.0" - -[[deps.SortingAlgorithms]] -deps = ["DataStructures"] -git-tree-sha1 = "64d974c2e6fdf07f8155b5b2ca2ffa9069b608d9" -uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" -version = "1.2.2" - -[[deps.SparseArrays]] -deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] -uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" -version = "1.12.0" - -[[deps.SpecialFunctions]] -deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] -git-tree-sha1 = "f2685b435df2613e25fc10ad8c26dddb8640f547" -uuid = "276daf66-3868-5448-9aa4-cd146d93841b" -version = "2.6.1" -weakdeps = ["ChainRulesCore"] - - [deps.SpecialFunctions.extensions] - SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" - -[[deps.StableRNGs]] -deps = ["Random"] -git-tree-sha1 = "4f96c596b8c8258cc7d3b19797854d368f243ddc" -uuid = "860ef19b-820b-49d6-a774-d7a799459cd3" -version = "1.0.4" - -[[deps.StackViews]] -deps = ["OffsetArrays"] -git-tree-sha1 = "be1cf4eb0ac528d96f5115b4ed80c26a8d8ae621" -uuid = "cae243ae-269e-4f55-b966-ac2d0dc13c15" -version = "0.1.2" - -[[deps.StaticArrays]] -deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] -git-tree-sha1 = "eee1b9ad8b29ef0d936e3ec9838c7ec089620308" -uuid = "90137ffa-7385-5640-81b9-e52037218182" -version = "1.9.16" -weakdeps = ["ChainRulesCore", "Statistics"] - - [deps.StaticArrays.extensions] - StaticArraysChainRulesCoreExt = "ChainRulesCore" - StaticArraysStatisticsExt = "Statistics" - -[[deps.StaticArraysCore]] -git-tree-sha1 = "6ab403037779dae8c514bad259f32a447262455a" -uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" -version = "1.4.4" - -[[deps.Statistics]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "ae3bb1eb3bba077cd276bc5cfc337cc65c3075c0" -uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -version = "1.11.1" -weakdeps = ["SparseArrays"] - - [deps.Statistics.extensions] - SparseArraysExt = ["SparseArrays"] - -[[deps.StatsAPI]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "178ed29fd5b2a2cfc3bd31c13375ae925623ff36" -uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" -version = "1.8.0" - -[[deps.StatsBase]] -deps = ["AliasTables", "DataAPI", "DataStructures", "IrrationalConstants", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] -git-tree-sha1 = "aceda6f4e598d331548e04cc6b2124a6148138e3" -uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" -version = "0.34.10" - -[[deps.StatsFuns]] -deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] -git-tree-sha1 = "91f091a8716a6bb38417a6e6f274602a19aaa685" -uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" -version = "1.5.2" -weakdeps = ["ChainRulesCore", "InverseFunctions"] - - [deps.StatsFuns.extensions] - StatsFunsChainRulesCoreExt = "ChainRulesCore" - StatsFunsInverseFunctionsExt = "InverseFunctions" - -[[deps.StructArrays]] -deps = ["ConstructionBase", "DataAPI", "Tables"] -git-tree-sha1 = "a2c37d815bf00575332b7bd0389f771cb7987214" -uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" -version = "0.7.2" - - [deps.StructArrays.extensions] - StructArraysAdaptExt = "Adapt" - StructArraysGPUArraysCoreExt = ["GPUArraysCore", "KernelAbstractions"] - StructArraysLinearAlgebraExt = "LinearAlgebra" - StructArraysSparseArraysExt = "SparseArrays" - StructArraysStaticArraysExt = "StaticArrays" - - [deps.StructArrays.weakdeps] - Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" - GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" - KernelAbstractions = "63c18a36-062a-441e-b654-da1e3ab1ce7c" - LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" - SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - -[[deps.StructUtils]] -deps = ["Dates", "UUIDs"] -git-tree-sha1 = "9297459be9e338e546f5c4bedb59b3b5674da7f1" -uuid = "ec057cc2-7a8d-4b58-b3b3-92acb9f63b42" -version = "2.6.2" - - [deps.StructUtils.extensions] - StructUtilsMeasurementsExt = ["Measurements"] - StructUtilsTablesExt = ["Tables"] - - [deps.StructUtils.weakdeps] - Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" - Tables = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" - -[[deps.StyledStrings]] -uuid = "f489334b-da3d-4c2e-b8f0-e476e12c162b" -version = "1.11.0" - -[[deps.SuiteSparse]] -deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] -uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" - -[[deps.SuiteSparse_jll]] -deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] -uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "7.8.3+2" - -[[deps.TOML]] -deps = ["Dates"] -uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" -version = "1.0.3" - -[[deps.TableTraits]] -deps = ["IteratorInterfaceExtensions"] -git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" -uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" -version = "1.0.1" - -[[deps.Tables]] -deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "OrderedCollections", "TableTraits"] -git-tree-sha1 = "f2c1efbc8f3a609aadf318094f8fc5204bdaf344" -uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" -version = "1.12.1" - -[[deps.Tar]] -deps = ["ArgTools", "SHA"] -uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" -version = "1.10.0" - -[[deps.TensorCore]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6" -uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50" -version = "0.1.1" - -[[deps.TiffImages]] -deps = ["ColorTypes", "DataStructures", "DocStringExtensions", "FileIO", "FixedPointNumbers", "IndirectArrays", "Inflate", "Mmap", "OffsetArrays", "PkgVersion", "PrecompileTools", "ProgressMeter", "SIMD", "UUIDs"] -git-tree-sha1 = "98b9352a24cb6a2066f9ababcc6802de9aed8ad8" -uuid = "731e570b-9d59-4bfa-96dc-6df516fadf69" -version = "0.11.6" - -[[deps.TranscodingStreams]] -git-tree-sha1 = "0c45878dcfdcfa8480052b6ab162cdd138781742" -uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" -version = "0.11.3" - -[[deps.TriplotBase]] -git-tree-sha1 = "4d4ed7f294cda19382ff7de4c137d24d16adc89b" -uuid = "981d1d27-644d-49a2-9326-4793e63143c3" -version = "0.1.0" - -[[deps.UUIDs]] -deps = ["Random", "SHA"] -uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" -version = "1.11.0" - -[[deps.Unicode]] -uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" -version = "1.11.0" - -[[deps.UnicodeFun]] -deps = ["REPL"] -git-tree-sha1 = "53915e50200959667e78a92a418594b428dffddf" -uuid = "1cfade01-22cf-5700-b092-accc4b62d6e1" -version = "0.4.1" - -[[deps.Unitful]] -deps = ["Dates", "LinearAlgebra", "Random"] -git-tree-sha1 = "c25751629f5baaa27fef307f96536db62e1d754e" -uuid = "1986cc42-f94f-5a68-af5c-568840ba703d" -version = "1.27.0" - - [deps.Unitful.extensions] - ConstructionBaseUnitfulExt = "ConstructionBase" - ForwardDiffExt = "ForwardDiff" - InverseFunctionsUnitfulExt = "InverseFunctions" - LatexifyExt = ["Latexify", "LaTeXStrings"] - NaNMathExt = "NaNMath" - PrintfExt = "Printf" - - [deps.Unitful.weakdeps] - ConstructionBase = "187b0558-2788-49d3-abe0-74a17ed4e7c9" - ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - LaTeXStrings = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" - Latexify = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" - NaNMath = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" - Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7" - -[[deps.WeakRefStrings]] -deps = ["DataAPI", "InlineStrings", "Parsers"] -git-tree-sha1 = "b1be2855ed9ed8eac54e5caff2afcdb442d52c23" -uuid = "ea10d353-3f73-51f8-a26c-33c1cb351aa5" -version = "1.4.2" - -[[deps.WebP]] -deps = ["CEnum", "ColorTypes", "FileIO", "FixedPointNumbers", "ImageCore", "libwebp_jll"] -git-tree-sha1 = "aa1ca3c47f119fbdae8770c29820e5e6119b83f2" -uuid = "e3aaa7dc-3e4b-44e0-be63-ffb868ccd7c1" -version = "0.1.3" - -[[deps.WoodburyMatrices]] -deps = ["LinearAlgebra", "SparseArrays"] -git-tree-sha1 = "248a7031b3da79a127f14e5dc5f417e26f9f6db7" -uuid = "efce3f68-66dc-5838-9240-27a6d6f5f9b6" -version = "1.1.0" - -[[deps.WorkerUtilities]] -git-tree-sha1 = "cd1659ba0d57b71a464a29e64dbc67cfe83d54e7" -uuid = "76eceee3-57b5-4d4a-8e66-0e911cebbf60" -version = "1.6.1" - -[[deps.XZ_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "9cce64c0fdd1960b597ba7ecda2950b5ed957438" -uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800" -version = "5.8.2+0" - -[[deps.Xorg_libX11_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] -git-tree-sha1 = "b5899b25d17bf1889d25906fb9deed5da0c15b3b" -uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" -version = "1.8.12+0" - -[[deps.Xorg_libXau_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "aa1261ebbac3ccc8d16558ae6799524c450ed16b" -uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" -version = "1.0.13+0" - -[[deps.Xorg_libXdmcp_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "52858d64353db33a56e13c341d7bf44cd0d7b309" -uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" -version = "1.1.6+0" - -[[deps.Xorg_libXext_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] -git-tree-sha1 = "a4c0ee07ad36bf8bbce1c3bb52d21fb1e0b987fb" -uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" -version = "1.3.7+0" - -[[deps.Xorg_libXrender_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] -git-tree-sha1 = "7ed9347888fac59a618302ee38216dd0379c480d" -uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" -version = "0.9.12+0" - -[[deps.Xorg_libxcb_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libXau_jll", "Xorg_libXdmcp_jll"] -git-tree-sha1 = "bfcaf7ec088eaba362093393fe11aa141fa15422" -uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" -version = "1.17.1+0" - -[[deps.Xorg_xtrans_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "a63799ff68005991f9d9491b6e95bd3478d783cb" -uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" -version = "1.6.0+0" - -[[deps.Zlib_jll]] -deps = ["Libdl"] -uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.3.1+2" - -[[deps.Zstd_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "446b23e73536f84e8037f5dce465e92275f6a308" -uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" -version = "1.5.7+1" - -[[deps.isoband_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "51b5eeb3f98367157a7a12a1fb0aa5328946c03c" -uuid = "9a68df92-36a6-505f-a73e-abb412b6bfb4" -version = "0.2.3+0" - -[[deps.libaom_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "371cc681c00a3ccc3fbc5c0fb91f58ba9bec1ecf" -uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b" -version = "3.13.1+0" - -[[deps.libass_jll]] -deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "125eedcb0a4a0bba65b657251ce1d27c8714e9d6" -uuid = "0ac62f75-1d6f-5e53-bd7c-93b484bb37c0" -version = "0.17.4+0" - -[[deps.libblastrampoline_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -version = "5.15.0+0" - -[[deps.libfdk_aac_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "646634dd19587a56ee2f1199563ec056c5f228df" -uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280" -version = "2.0.4+0" - -[[deps.libpng_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "6ab498eaf50e0495f89e7a5b582816e2efb95f64" -uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" -version = "1.6.54+0" - -[[deps.libsixel_jll]] -deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "Libdl", "libpng_jll"] -git-tree-sha1 = "c1733e347283df07689d71d61e14be986e49e47a" -uuid = "075b6546-f08a-558a-be8f-8157d0f608a5" -version = "1.10.5+0" - -[[deps.libvorbis_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll"] -git-tree-sha1 = "11e1772e7f3cc987e9d3de991dd4f6b2602663a5" -uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a" -version = "1.3.8+0" - -[[deps.libwebp_jll]] -deps = ["Artifacts", "Giflib_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libglvnd_jll", "Libtiff_jll", "libpng_jll"] -git-tree-sha1 = "4e4282c4d846e11dce56d74fa8040130b7a95cb3" -uuid = "c5f90fcd-3b7e-5836-afba-fc50a0988cb2" -version = "1.6.0+0" - -[[deps.nghttp2_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.64.0+1" - -[[deps.p7zip_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] -uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" -version = "17.7.0+0" - -[[deps.x264_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "14cc7083fc6dff3cc44f2bc435ee96d06ed79aa7" -uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a" -version = "10164.0.1+0" - -[[deps.x265_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "e7b67590c14d487e734dcb925924c5dc43ec85f3" -uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76" -version = "4.1.0+0" diff --git a/Project.toml b/Project.toml deleted file mode 100644 index 42eafc1..0000000 --- a/Project.toml +++ /dev/null @@ -1,3 +0,0 @@ -[deps] -CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" -Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" diff --git a/scripts/BSP_SplitCostPlot.jl b/scripts/BSP_SplitCostPlot.jl deleted file mode 100644 index 99e8380..0000000 --- a/scripts/BSP_SplitCostPlot.jl +++ /dev/null @@ -1,139 +0,0 @@ -using CSV -using Tables -using Makie -using CairoMakie -using Base.Filesystem - -println("[Init] Starting up") - -struct DataVisBSP - map_name::String - is_fast::Bool - split_cost::Int64 - num_segs::Int64 - num_subsecs::Int64 - num_nodes::Int64 - size_left::Int64 - size_right::Int64 -end - -file_path = ARGS[1] - -out_dir = dirname(file_path) -stem = splitext(basename(file_path))[1] - -println("[CSV] Reading table") -csv_file = CSV.File(file_path) -rows = Tables.rowtable(csv_file) - -println("[CSV] Loading BSP stats") -bsp_vis = DataVisBSP[] -for row in rows - push!(bsp_vis, - DataVisBSP( - row.map_name, - row.is_fast, - row.split_cost, - row.num_segs, - row.num_subsecs, - row.num_nodes, - row.size_left, - row.size_right - ) - ) -end - -levels = Dict{Tuple{String,Bool},Vector{DataVisBSP}}() - -println("[CSV] Setting up internal data format") -for row in bsp_vis - key = (row.map_name, row.is_fast) - push!(get!(levels, key, DataVisBSP[]), row) -end - -maps = Dict{String,Dict{Bool,Vector{DataVisBSP}}}() - -for ((map, is_fast), data) in levels - by_mode = get!(maps, map, Dict{Bool,Vector{DataVisBSP}}()) - by_mode[is_fast] = data -end - -ytick_int = xs -> string.(round.(Int, xs)) - -for (map, modes) in maps - println("[Figure] Setting up $(map) of $(stem)") - - fig = Figure(size=(250 .* (4, 3))) - xt = 0:4:64 - - ax = Axis(fig[1, 1], xticks=xt, ytickformat=ytick_int, ylabel="Nodes") - ax2 = Axis(fig[2, 1], xticks=xt, ytickformat=ytick_int, ylabel="Subsectors") - ax3 = Axis(fig[3, 1], xticks=xt, ytickformat=ytick_int, ylabel="Segments", xlabel="Cost factor of splitting segments") - - ax4 = Axis(fig[2, 2], xticks=xt, ytickformat=ytick_int, ylabel="Tree depth left", yaxisposition=:right) - ax5 = Axis(fig[3, 2], xticks=xt, ytickformat=ytick_int, ylabel="Tree depth right", yaxisposition=:right, xlabel="Cost factor of splitting segments") - - linkxaxes!(ax, ax2, ax3) - linkxaxes!(ax4, ax5) - - # Start ploting - data_normal = modes[false] - data_fast = modes[true] - x = 1:length(data_normal) - - y_nodes = getfield.(data_normal, :num_nodes) - y_subsecs = getfield.(data_normal, :num_subsecs) - y_segs = getfield.(data_normal, :num_segs) - y_size_left = getfield.(data_normal, :size_left) - y_size_right = getfield.(data_normal, :size_right) - - y_nodes_fast = getfield.(data_fast, :num_nodes) - y_subsecs_fast = getfield.(data_fast, :num_subsecs) - y_segs_fast = getfield.(data_fast, :num_segs) - y_size_left_fast = getfield.(data_fast, :size_left) - y_size_right_fast = getfield.(data_fast, :size_right) - - lines!(ax, x, y_nodes; color=:dodgerblue, linestyle=:solid, alpha=0.50) - scatter!(ax, x, y_nodes; color=:dodgerblue, marker=:circle) - lines!(ax, x, y_nodes_fast; color=:dodgerblue, linestyle=:dash, alpha=0.50) - scatter!(ax, x, y_nodes_fast; color=:dodgerblue, marker=:utriangle) - - lines!(ax2, x, y_subsecs; color=:seagreen, linestyle=:solid, alpha=0.50) - scatter!(ax2, x, y_subsecs; color=:seagreen, marker=:circle) - lines!(ax2, x, y_subsecs_fast; color=:seagreen, linestyle=:dash, alpha=0.50) - scatter!(ax2, x, y_subsecs_fast; color=:seagreen, marker=:utriangle) - - lines!(ax3, x, y_segs; color=:firebrick, linestyle=:solid, alpha=0.50) - scatter!(ax3, x, y_segs; color=:firebrick, marker=:circle) - lines!(ax3, x, y_segs_fast; color=:firebrick, linestyle=:dash, alpha=0.50) - scatter!(ax3, x, y_segs_fast; color=:firebrick, marker=:utriangle) - - lines!(ax4, x, y_size_left; color=:purple, linestyle=:solid, alpha=0.50) - scatter!(ax4, x, y_size_left; color=:purple, marker=:circle) - lines!(ax4, x, y_size_left_fast; color=:purple, linestyle=:dash, alpha=0.50) - scatter!(ax4, x, y_size_left_fast; color=:purple, marker=:utriangle) - - lines!(ax5, x, y_size_right; color=:darkgoldenrod, linestyle=:solid, alpha=0.50) - scatter!(ax5, x, y_size_right; color=:darkgoldenrod, marker=:circle) - lines!(ax5, x, y_size_right_fast; color=:darkgoldenrod, linestyle=:dash, alpha=0.50) - scatter!(ax5, x, y_size_right_fast; color=:darkgoldenrod, marker=:utriangle) - - # End ploting - build_normal = [ - LineElement(color=:black, linestyle=:solid, alpha=0.50), - MarkerElement(color=:black, marker=:circle, strokecolor=:black) - ] - - build_fast = [ - LineElement(color=:black, linestyle=:dash, alpha=0.50), - MarkerElement(color=:black, marker=:utriangle, strokecolor=:black) - ] - - Legend(fig[1, 2], [build_normal, build_fast], ["Normal build", "Fast build"]) - Label(fig[0, :], "ELFBSP Segment Split Cost Analysis - $(stem) $(map)", justification=:center, font=:bold, fontsize=20) - - colsize!(fig.layout, 1, Relative(0.50)) - colsize!(fig.layout, 2, Relative(0.50)) - - save(joinpath(out_dir, "$(stem) $(map).png"), fig) -end From 47c2d504775a7ad0bac145e7f1cfc052ece11c17 Mon Sep 17 00:00:00 2001 From: "Guilherme M. Miranda" Date: Wed, 4 Mar 2026 23:31:39 -0300 Subject: [PATCH 06/13] updated deps --- library/SDL | 2 +- library/imgui | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/library/SDL b/library/SDL index a962f40..683181b 160000 --- a/library/SDL +++ b/library/SDL @@ -1 +1 @@ -Subproject commit a962f40bbba175e9716557a25d5d7965f134a3d3 +Subproject commit 683181b47cfabd293e3ea409f838915b8297a4fd diff --git a/library/imgui b/library/imgui index 3912b3d..2a1b69f 160000 --- a/library/imgui +++ b/library/imgui @@ -1 +1 @@ -Subproject commit 3912b3d9a9c1b3f17431aebafd86d2f40ee6e59c +Subproject commit 2a1b69f05748ad909f03acf4533447cac1331611 From a0793284c24ffe435001a08432bd735622a9baff Mon Sep 17 00:00:00 2001 From: "Guilherme M. Miranda" Date: Wed, 4 Mar 2026 23:43:50 -0300 Subject: [PATCH 07/13] use consistent casing --- .gitmodules | 4 ++-- library/{SDL => sdl} | 0 2 files changed, 2 insertions(+), 2 deletions(-) rename library/{SDL => sdl} (100%) diff --git a/.gitmodules b/.gitmodules index 1fd5823..bf84768 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,5 +1,5 @@ -[submodule "library/SDL"] - path = library/SDL +[submodule "library/sdl"] + path = library/sdl url = https://github.com/libsdl-org/SDL.git [submodule "library/imgui"] path = library/imgui diff --git a/library/SDL b/library/sdl similarity index 100% rename from library/SDL rename to library/sdl From 51a7c131cd74e3e28cb88e17abc87177cfaf419b Mon Sep 17 00:00:00 2001 From: "Guilherme M. Miranda" Date: Wed, 4 Mar 2026 23:46:09 -0300 Subject: [PATCH 08/13] save some CI time --- CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 05d06b9..1ae00b5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -53,6 +53,8 @@ if(SAN_COUNT GREATER 0) endif() # SDL3 +set(SDL_TEST OFF CACHE BOOL "" FORCE) +set(SDL_INSTALL OFF CACHE BOOL "" FORCE) add_subdirectory(library/SDL) # Dear ImGui From 573eae078b729a680c5d6412f02f402c681cf2c9 Mon Sep 17 00:00:00 2001 From: "Guilherme M. Miranda" Date: Wed, 4 Mar 2026 23:52:51 -0300 Subject: [PATCH 09/13] retooled the build system --- .github/workflows/main.yml | 19 +++++++++++++------ CMakeLists.txt | 16 ++++------------ 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 9dc5a11..de7eb30 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -32,17 +32,19 @@ jobs: install: | sudo apt-get update sudo apt-get install -y \ - clang \ - lld \ - libc++-dev \ - libc++abi-dev \ - ninja-build + clang lld libc++-dev libc++abi-dev ninja-build \ + libasound2-dev libpulse-dev libaudio-dev \ + libx11-dev libxcursor-dev libxext-dev libxi-dev \ + libxinerama-dev libxrand-dev libxss-dev \ + libwayland-dev libxkbcommon-dev libdrm-dev libgbm-dev configure: | -G Ninja \ -DCMAKE_C_COMPILER=clang \ -DCMAKE_CXX_COMPILER=clang++ \ -DCMAKE_LINKER=lld \ -DCMAKE_CXX_FLAGS="-stdlib=libc++" \ + -DSDL_STATIC=ON \ + -DSDL_SHARED=OFF -DCMAKE_EXE_LINKER_FLAGS="-Wl,--gc-sections" - name: MacOS Universal @@ -57,7 +59,9 @@ jobs: -G Ninja \ -DCMAKE_C_COMPILER=clang \ -DCMAKE_CXX_COMPILER=clang++ \ - -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" + -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" \ + -DSDL_STATIC=ON \ + -DSDL_SHARED=OFF - name: Windows MinGW x86_64 os: windows-latest @@ -80,6 +84,8 @@ jobs: -DCMAKE_C_COMPILER=clang \ -DCMAKE_CXX_COMPILER=clang++ \ -DCMAKE_LINKER=lld \ + -DSDL_STATIC=ON \ + -DSDL_SHARED=OFF \ -DCMAKE_EXE_LINKER_FLAGS="-static -Wl,--gc-sections" \ -DCMAKE_SHARED_LINKER_FLAGS="-static" @@ -94,6 +100,7 @@ jobs: - uses: actions/checkout@v4 with: fetch-depth: 0 # Required so we can move and push tags + submodules: recursive - name: Install dependencies run: ${{ matrix.config.install }} diff --git a/CMakeLists.txt b/CMakeLists.txt index 1ae00b5..8788285 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -55,6 +55,8 @@ endif() # SDL3 set(SDL_TEST OFF CACHE BOOL "" FORCE) set(SDL_INSTALL OFF CACHE BOOL "" FORCE) +set(SDL_STATIC ON CACHE BOOL "" FORCE) +set(SDL_SHARED OFF CACHE BOOL "" FORCE) add_subdirectory(library/SDL) # Dear ImGui @@ -70,6 +72,7 @@ add_library(imgui STATIC target_include_directories(imgui PUBLIC library/imgui + library/imgui/backends ) target_link_libraries(imgui PUBLIC SDL3::SDL3) @@ -155,18 +158,7 @@ set(CPACK_GENERATOR ZIP) if(WIN32) install(FILES LICENSE.txt DESTINATION .) install(FILES elfbsp.cfg DESTINATION .) - if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.21 AND NOT VCPKG_TOOLCHAIN) - install( - TARGETS elfbsp - RUNTIME_DEPENDENCIES - PRE_EXCLUDE_REGEXES "api-ms-" "ext-ms-" - POST_EXCLUDE_REGEXES ".*system32/.*\\.dll" - DIRECTORIES $ $ENV{PATH} - RUNTIME DESTINATION . - ) - else() - install(TARGETS elfbsp RUNTIME DESTINATION .) - endif() + install(TARGETS elfbsp RUNTIME DESTINATION .) else() include(GNUInstallDirs) install(FILES LICENSE.txt DESTINATION "share/doc/${PROJECT_NAME}") From c1f6bc198d8b125e1cc52c0820fe1b7b7668aa4c Mon Sep 17 00:00:00 2001 From: "Guilherme M. Miranda" Date: Wed, 4 Mar 2026 23:59:59 -0300 Subject: [PATCH 10/13] try fix linux package management --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index de7eb30..fdab632 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -35,7 +35,7 @@ jobs: clang lld libc++-dev libc++abi-dev ninja-build \ libasound2-dev libpulse-dev libaudio-dev \ libx11-dev libxcursor-dev libxext-dev libxi-dev \ - libxinerama-dev libxrand-dev libxss-dev \ + libxinerama-dev libxrandr-dev libxss-dev \ libwayland-dev libxkbcommon-dev libdrm-dev libgbm-dev configure: | -G Ninja \ From aa1b2fbf53314640db74b50de12b6db52edbf427 Mon Sep 17 00:00:00 2001 From: "Guilherme M. Miranda" Date: Thu, 5 Mar 2026 00:01:59 -0300 Subject: [PATCH 11/13] casing --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8788285..2e3bc26 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -57,7 +57,7 @@ set(SDL_TEST OFF CACHE BOOL "" FORCE) set(SDL_INSTALL OFF CACHE BOOL "" FORCE) set(SDL_STATIC ON CACHE BOOL "" FORCE) set(SDL_SHARED OFF CACHE BOOL "" FORCE) -add_subdirectory(library/SDL) +add_subdirectory(library/sdl) # Dear ImGui add_library(imgui STATIC From d034341835c4f8ffde04ff0de2658fc4c2cf659b Mon Sep 17 00:00:00 2001 From: "Guilherme M. Miranda" Date: Thu, 5 Mar 2026 00:08:25 -0300 Subject: [PATCH 12/13] updated linux dependencies from sdl docs --- .github/workflows/main.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index fdab632..006c59a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -33,10 +33,12 @@ jobs: sudo apt-get update sudo apt-get install -y \ clang lld libc++-dev libc++abi-dev ninja-build \ - libasound2-dev libpulse-dev libaudio-dev \ - libx11-dev libxcursor-dev libxext-dev libxi-dev \ - libxinerama-dev libxrandr-dev libxss-dev \ - libwayland-dev libxkbcommon-dev libdrm-dev libgbm-dev + gnome-desktop-testing libasound2-dev libpulse-dev \ + libaudio-dev libfribidi-dev libjack-dev libsndio-dev libx11-dev libxext-dev \ + libxrandr-dev libxcursor-dev libxfixes-dev libxi-dev libxss-dev libxtst-dev \ + libxkbcommon-dev libdrm-dev libgbm-dev libgl1-mesa-dev libgles2-mesa-dev \ + libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev libudev-dev libthai-dev \ + libpipewire-0.3-dev libwayland-dev libdecor-0-dev liburing-dev configure: | -G Ninja \ -DCMAKE_C_COMPILER=clang \ From 7298cafa2f079b92a317ab5131606d266bde237c Mon Sep 17 00:00:00 2001 From: "Guilherme M. Miranda" Date: Thu, 5 Mar 2026 00:12:36 -0300 Subject: [PATCH 13/13] typo --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 006c59a..61dae57 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -46,7 +46,7 @@ jobs: -DCMAKE_LINKER=lld \ -DCMAKE_CXX_FLAGS="-stdlib=libc++" \ -DSDL_STATIC=ON \ - -DSDL_SHARED=OFF + -DSDL_SHARED=OFF \ -DCMAKE_EXE_LINKER_FLAGS="-Wl,--gc-sections" - name: MacOS Universal