From e8dc3859fee38f30707bf5e77fa7dca0a2e05453 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Sun, 18 May 2025 01:23:42 +0200 Subject: Improve quality of screenshot and settings icons, especially for smaller resolutions --- TODO | 4 ++++ images/screenshot.png | Bin 7276 -> 2020 bytes images/settings_extra_small.png | Bin 0 -> 959 bytes include/Theme.hpp | 1 + src/Overlay.cpp | 6 +++--- src/Theme.cpp | 5 ++++- 6 files changed, 12 insertions(+), 4 deletions(-) create mode 100644 images/settings_extra_small.png diff --git a/TODO b/TODO index 1f29cfd..cadc1d0 100644 --- a/TODO +++ b/TODO @@ -189,3 +189,7 @@ Make it possible to change controller hotkeys. Also read from /dev/input/eventN Add option to copy screenshot to clipboard. Does it work properly on Wayland compositors? Maybe need to wait until the application becomes Wayland native instead of XWayland. Show message that replay/streaming has to be restarted if recording settings are changed while replay/streaming is ongoing. + +Support vector graphics. Maybe support svg, rendering it to a texture for better performance. + +Support freetype for text rendering. Maybe load freetype as runtime (with dlopen) and use that when available and fallback to stb_freetype if not available. diff --git a/images/screenshot.png b/images/screenshot.png index e4e7dc7..d67acf6 100644 Binary files a/images/screenshot.png and b/images/screenshot.png differ diff --git a/images/settings_extra_small.png b/images/settings_extra_small.png new file mode 100644 index 0000000..71770fe Binary files /dev/null and b/images/settings_extra_small.png differ diff --git a/include/Theme.hpp b/include/Theme.hpp index 249ad3d..1390182 100644 --- a/include/Theme.hpp +++ b/include/Theme.hpp @@ -28,6 +28,7 @@ namespace gsr { mgl::Texture combobox_arrow_texture; mgl::Texture settings_texture; mgl::Texture settings_small_texture; + mgl::Texture settings_extra_small_texture; mgl::Texture folder_texture; mgl::Texture up_arrow_texture; mgl::Texture replay_button_texture; diff --git a/src/Overlay.cpp b/src/Overlay.cpp index 7ed0fee..80dcaad 100644 --- a/src/Overlay.cpp +++ b/src/Overlay.cpp @@ -1090,7 +1090,7 @@ namespace gsr { button->set_item_icon("save", &get_theme().save_texture); button->set_item_icon("save_1_min", &get_theme().save_texture); button->set_item_icon("save_10_min", &get_theme().save_texture); - button->set_item_icon("settings", &get_theme().settings_small_texture); + button->set_item_icon("settings", &get_theme().settings_extra_small_texture); button->on_click = [this](const std::string &id) { if(id == "settings") { auto replay_settings_page = std::make_unique(SettingsPage::Type::REPLAY, &gsr_info, config, &page_stack); @@ -1124,7 +1124,7 @@ namespace gsr { button->add_item("Settings", "settings"); button->set_item_icon("start", &get_theme().play_texture); button->set_item_icon("pause", &get_theme().pause_texture); - button->set_item_icon("settings", &get_theme().settings_small_texture); + button->set_item_icon("settings", &get_theme().settings_extra_small_texture); button->on_click = [this](const std::string &id) { if(id == "settings") { auto record_settings_page = std::make_unique(SettingsPage::Type::RECORD, &gsr_info, config, &page_stack); @@ -1149,7 +1149,7 @@ namespace gsr { button->add_item("Start", "start", config.streaming_config.start_stop_hotkey.to_string(false, false)); button->add_item("Settings", "settings"); button->set_item_icon("start", &get_theme().play_texture); - button->set_item_icon("settings", &get_theme().settings_small_texture); + button->set_item_icon("settings", &get_theme().settings_extra_small_texture); button->on_click = [this](const std::string &id) { if(id == "settings") { auto stream_settings_page = std::make_unique(SettingsPage::Type::STREAM, &gsr_info, config, &page_stack); diff --git a/src/Theme.cpp b/src/Theme.cpp index 6c384e3..a20c4da 100644 --- a/src/Theme.cpp +++ b/src/Theme.cpp @@ -69,7 +69,10 @@ namespace gsr { if(!theme->settings_texture.load_from_file((resources_path + "images/settings.png").c_str())) goto error; - if(!theme->settings_small_texture.load_from_file((resources_path + "images/settings_small.png").c_str())) + if(!theme->settings_small_texture.load_from_file((resources_path + "images/settings_small.png").c_str(), mgl::Texture::LoadOptions{false, false, MGL_TEXTURE_SCALE_LINEAR_MIPMAP})) + goto error; + + if(!theme->settings_extra_small_texture.load_from_file((resources_path + "images/settings_extra_small.png").c_str(), mgl::Texture::LoadOptions{false, false, MGL_TEXTURE_SCALE_LINEAR_MIPMAP})) goto error; if(!theme->folder_texture.load_from_file((resources_path + "images/folder.png").c_str())) -- cgit v1.2.3-70-g09d2