diff --git a/frontend/config.cpp b/frontend/config.cpp index b54fb22..025bbed 100644 --- a/frontend/config.cpp +++ b/frontend/config.cpp @@ -33,17 +33,6 @@ void Config::load(App *app) { LOG(LOGLEVEL_ERROR) << "Config - Couldn't load config file " << filename; } - - initialize(); - load_recents(app); - - app->set_dimensions({(float)_store.main_window_width, (float)_store.main_window_height}); - app->set_position({(float)_store.main_window_x_pos, (float)_store.main_window_y_pos}); - - app->gui()->_comlynx_visible = _store.comlynx_visisble; - app->gui()->_console_visible = _store.console_visible; - app->gui()->_sessionscontrol_visible = _store.sessionscontrol_visible; - Console::get_instance().set_log_level(_store.log_level); } void Config::save_recents(App *app) @@ -66,7 +55,22 @@ void Config::load_recents(App *app) } } -void Config::initialize() +void Config::initialize(App *app) +{ + load_recents(app); + + app->set_dimensions({(float)_store.main_window_width, (float)_store.main_window_height}); + app->set_position({(float)_store.main_window_x_pos, (float)_store.main_window_y_pos}); + + app->gui()->_comlynx_visible = _store.comlynx_visisble; + app->gui()->_console_visible = _store.console_visible; + app->gui()->_sessionscontrol_visible = _store.sessionscontrol_visible; + Console::get_instance().set_log_level(_store.log_level); + + update_ui_settings(); +} + +void Config::update_ui_settings() { apply_theme(); // apply_font(); // https://github.com/ocornut/imgui/pull/3761 @@ -471,7 +475,7 @@ void Config::apply_font(float scale) io.Fonts->Clear(); - int font_size = scale * 16; + int font_size = (store().ui_scale > 0 ? store().ui_scale : scale) * 16; ImFontConfig cfg; cfg.MergeMode = true; diff --git a/frontend/gui/app.cpp b/frontend/gui/app.cpp index 5d00172..d69676e 100644 --- a/frontend/gui/app.cpp +++ b/frontend/gui/app.cpp @@ -76,6 +76,8 @@ void App::close_session(std::string session_identifier) void App::initialize() { + Config::get_instance().load(this); + _gui = std::make_shared(); _gui->initialize(); _gui->sessions_control().set_app(shared_from_this()); @@ -90,7 +92,7 @@ void App::initialize() _renderer->setTitle(APP_NAME " " APP_VERSION); - Config::get_instance().load(this); + Config::get_instance().initialize(this); if (!sound_initialize()) { diff --git a/frontend/gui/settings.cpp b/frontend/gui/settings.cpp index 75b5ced..b65f101 100644 --- a/frontend/gui/settings.cpp +++ b/frontend/gui/settings.cpp @@ -15,7 +15,7 @@ Settings::~Settings() bool Settings::render() { - ImGui::AlignTextToFramePadding(); + ImGui::AlignTextToFramePadding(); if (ImGui::BeginTable("#settingstable", 2, ImGuiTableFlags_NoBordersInBody | ImGuiTableFlags_SizingStretchProp)) { @@ -34,6 +34,16 @@ bool Settings::render() Config::get_instance().store().theme = "light"; } + ImGui::TableNextColumn(); + ImGui::Text("UI Scale"); + + ImGui::TableNextColumn(); + float scale = Config::get_instance().store().ui_scale; + if (ImGui::SliderFloat("float", &scale, 0.0f, 10.0f, "%.1f")) + { + Config::get_instance().store().ui_scale = scale; + } + ImGui::TableNextColumn(); ImGui::Text("Lynx ROM"); diff --git a/frontend/include/config.h b/frontend/include/config.h index 194b794..a4d2524 100644 --- a/frontend/include/config.h +++ b/frontend/include/config.h @@ -156,6 +156,7 @@ struct ConfigStore std::string theme = "dark"; std::string last_rom_folder = "."; std::string lynx_rom_file = "./lynxboot.img"; + float ui_scale = 0; bool break_on_undocumented_opcode = false; int main_window_x_pos = 10, main_window_y_pos = 10; int main_window_width = 800, main_window_height = 600; @@ -176,6 +177,7 @@ struct ConfigStore archive(CEREAL_NVP(last_rom_folder)); archive(CEREAL_NVP(lynx_rom_file)); archive(CEREAL_NVP(break_on_undocumented_opcode)); + archive(CEREAL_NVP(ui_scale)); archive(CEREAL_NVP(main_window_x_pos)); archive(CEREAL_NVP(main_window_y_pos)); archive(CEREAL_NVP(main_window_width)); @@ -209,7 +211,8 @@ class Config void apply_font(float scale); void load_recents(App *app); void save_recents(App *app); - void initialize(); + void initialize(App *app); + void update_ui_settings(); void save_sessions(std::vector> sessions); void load_session(std::shared_ptr session); diff --git a/frontend/renderer/vk_renderer.cpp b/frontend/renderer/vk_renderer.cpp index 8499127..d66d9ac 100644 --- a/frontend/renderer/vk_renderer.cpp +++ b/frontend/renderer/vk_renderer.cpp @@ -14,7 +14,7 @@ static VKAPI_ATTR VkBool32 VKAPI_CALL debug_callback(VkDebugUtilsMessageSeverity } else if (messageSeverity & VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT) { - L_WARNING << messageType << ": " << pCallbackData->pMessage; + LOG(LOGLEVEL_WARN) << messageType << ": " << pCallbackData->pMessage; } else { @@ -731,8 +731,8 @@ void VulkanRenderer::render_ImGui(std::shared_ptr ui) if (ui->menu().settings().update_pending()) { - Config::get_instance().initialize(); ui->menu().settings().set_update_pending(false); + Config::get_instance().update_ui_settings(); } ImGui_ImplVulkan_NewFrame();