From d9bc8fb7965a8734d456eb1978a4eb33ca36b0d4 Mon Sep 17 00:00:00 2001 From: Nikos Chantziaras Date: Fri, 11 Mar 2022 16:51:41 +0200 Subject: [PATCH] Ozone: Add thumbnail scale option (#13620) * Ozone: Add thumbnail scale option * CHANGES.md: Add ozone thumbnail bar scaling option --- CHANGES.md | 1 + config.def.h | 1 + configuration.c | 3 +++ configuration.h | 1 + intl/msg_hash_lbl.h | 4 ++++ intl/msg_hash_us.h | 8 ++++++++ menu/cbs/menu_cbs_sublabel.c | 6 ++++++ menu/drivers/ozone.c | 16 +++++++++++++--- menu/menu_displaylist.c | 1 + menu/menu_setting.c | 15 +++++++++++++++ msg_hash.h | 1 + 11 files changed, 54 insertions(+), 3 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index fbf045a09d..95d34e981b 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -2,6 +2,7 @@ - IOS/IOS13+: Support a toolbar that allows toggling of onscreen keyboard and touch mouse - LOCALIZATION: Add Czech language support - HOTKEYS: Added hotkey for toggling sync to exact content framerate +- OZONE: The size of the thumbnail bar can now be changed though a new option (Settings->User interface->Appearance) up to double its normal size. # 1.10.1 - ANDROID: Add `HAVE_LANGEXTRA` back to makefile diff --git a/config.def.h b/config.def.h index 10dca321c4..fe7cd1a5a9 100644 --- a/config.def.h +++ b/config.def.h @@ -558,6 +558,7 @@ #define DEFAULT_OZONE_TRUNCATE_PLAYLIST_NAME true #define DEFAULT_OZONE_SORT_AFTER_TRUNCATE_PLAYLIST_NAME true #define DEFAULT_OZONE_SCROLL_CONTENT_METADATA false +#define DEFAULT_OZONE_THUMBNAIL_SCALE_FACTOR 1.0f #endif #define DEFAULT_SETTINGS_SHOW_DRIVERS true diff --git a/configuration.c b/configuration.c index d339523b57..b716dc1250 100644 --- a/configuration.c +++ b/configuration.c @@ -2071,6 +2071,9 @@ static struct config_float_setting *populate_settings_float( #if defined(HAVE_MATERIALUI) || defined(HAVE_XMB) || defined(HAVE_OZONE) SETTING_FLOAT("menu_screensaver_animation_speed", &settings->floats.menu_screensaver_animation_speed, true, DEFAULT_MENU_SCREENSAVER_ANIMATION_SPEED, false); #endif +#ifdef HAVE_OZONE + SETTING_FLOAT("ozone_thumbnail_scale_factor", &settings->floats.ozone_thumbnail_scale_factor, true, DEFAULT_OZONE_THUMBNAIL_SCALE_FACTOR, false); +#endif #endif SETTING_FLOAT("video_message_pos_x", &settings->floats.video_msg_pos_x, true, message_pos_offset_x, false); SETTING_FLOAT("video_message_pos_y", &settings->floats.video_msg_pos_y, true, message_pos_offset_y, false); diff --git a/configuration.h b/configuration.h index 5fbb7532d4..dab82a6951 100644 --- a/configuration.h +++ b/configuration.h @@ -369,6 +369,7 @@ typedef struct settings float menu_ticker_speed; float menu_rgui_particle_effect_speed; float menu_screensaver_animation_speed; + float ozone_thumbnail_scale_factor; float audio_max_timing_skew; float audio_volume; /* dB scale. */ diff --git a/intl/msg_hash_lbl.h b/intl/msg_hash_lbl.h index aec58b7642..24b9253501 100644 --- a/intl/msg_hash_lbl.h +++ b/intl/msg_hash_lbl.h @@ -1886,6 +1886,10 @@ MSG_HASH( MENU_ENUM_LABEL_OZONE_SCROLL_CONTENT_METADATA, "ozone_scroll_content_metadata" ) +MSG_HASH( + MENU_ENUM_LABEL_OZONE_THUMBNAIL_SCALE_FACTOR, + "ozone_menu_thumbnail_scale_factor" + ) MSG_HASH( MENU_ENUM_LABEL_MATERIALUI_MENU_COLOR_THEME, "materialui_menu_color_theme" diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index 419c765e04..6097941983 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -9564,6 +9564,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, "When enabled, each item of content metadata shown on the right sidebar of playlists (associated core, play time) will occupy a single line; strings exceeding the width of the sidebar will be displayed as scrolling ticker text. When disabled, each item of content metadata will be displayed statically, wrapped to occupy as many lines as required." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, + "Thumbnail Scale Factor" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, + "Scale the size of the thumbnail bar." + ) /* MaterialUI: Settings > User Interface > Appearance */ diff --git a/menu/cbs/menu_cbs_sublabel.c b/menu/cbs/menu_cbs_sublabel.c index e4dcdeb30a..dda80c46a9 100644 --- a/menu/cbs/menu_cbs_sublabel.c +++ b/menu/cbs/menu_cbs_sublabel.c @@ -762,6 +762,7 @@ DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_ozone_collapse_sidebar, DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_ozone_truncate_playlist_name, MENU_ENUM_SUBLABEL_OZONE_TRUNCATE_PLAYLIST_NAME) DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_ozone_sort_after_truncate_playlist_name, MENU_ENUM_SUBLABEL_OZONE_SORT_AFTER_TRUNCATE_PLAYLIST_NAME) DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_ozone_scroll_content_metadata, MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA) +DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_ozone_thumbnail_scale_factor, MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR) #endif DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_menu_thumbnail_upscale_threshold, MENU_ENUM_SUBLABEL_MENU_THUMBNAIL_UPSCALE_THRESHOLD) DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_timedate_enable, MENU_ENUM_SUBLABEL_TIMEDATE_ENABLE) @@ -2766,6 +2767,11 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_OZONE_SCROLL_CONTENT_METADATA: #ifdef HAVE_OZONE BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_ozone_scroll_content_metadata); +#endif + break; + case MENU_ENUM_LABEL_OZONE_THUMBNAIL_SCALE_FACTOR: +#ifdef HAVE_OZONE + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_ozone_thumbnail_scale_factor); #endif break; case MENU_ENUM_LABEL_MATERIALUI_MENU_COLOR_THEME: diff --git a/menu/drivers/ozone.c b/menu/drivers/ozone.c index 907f69d1ce..a794bac4f8 100644 --- a/menu/drivers/ozone.c +++ b/menu/drivers/ozone.c @@ -499,6 +499,7 @@ struct ozone_handle float dimensions_sidebar_width; /* animated field */ float sidebar_offset; float last_scale_factor; + float last_thumbnail_scale_factor; float pure_white[16]; struct @@ -7066,6 +7067,7 @@ static void *ozone_init(void **userdata, bool video_is_threaded) ozone->last_height = height; ozone->last_scale_factor = gfx_display_get_dpi_scale(p_disp, settings, width, height, false, false); + ozone->last_thumbnail_scale_factor = settings->floats.ozone_thumbnail_scale_factor; file_list_initialize(&ozone->selection_buf_old); @@ -7493,9 +7495,13 @@ static void ozone_set_layout( ozone->dimensions_sidebar_width = (float)ozone->dimensions.sidebar_width_normal; ozone->dimensions.thumbnail_bar_width = - ozone->dimensions.sidebar_width_normal - - ozone->dimensions.sidebar_entry_icon_size - - ozone->dimensions.sidebar_entry_icon_padding; + (ozone->dimensions.sidebar_width_normal - + ozone->dimensions.sidebar_entry_icon_size - + ozone->dimensions.sidebar_entry_icon_padding) * + ozone->last_thumbnail_scale_factor; + /* Prevent the thumbnail sidebar from growing too much and make the UI unusable. */ + if (ozone->dimensions.thumbnail_bar_width > ozone->last_width / 2.0f) + ozone->dimensions.thumbnail_bar_width = ozone->last_width / 2.0f; ozone->dimensions.cursor_size = CURSOR_SIZE * scale_factor; @@ -8146,6 +8152,7 @@ static void ozone_render(void *data, * disables optimisations and removes excess precision * (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=323#c87) */ volatile float scale_factor; + volatile float thumbnail_scale_factor; unsigned entries_end = (unsigned)menu_entries_get_size(); bool pointer_enabled = false; unsigned language = *msg_hash_get_uint(MSG_HASH_USER_LANGUAGE); @@ -8160,12 +8167,15 @@ static void ozone_render(void *data, * factor have changed */ scale_factor = gfx_display_get_dpi_scale(p_disp, settings, width, height, false, false); + thumbnail_scale_factor = settings->floats.ozone_thumbnail_scale_factor; if ((scale_factor != ozone->last_scale_factor) || + (thumbnail_scale_factor != ozone->last_thumbnail_scale_factor) || (width != ozone->last_width) || (height != ozone->last_height)) { ozone->last_scale_factor = scale_factor; + ozone->last_thumbnail_scale_factor = thumbnail_scale_factor; ozone->last_width = width; ozone->last_height = height; diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 422bc3f644..93088e7d98 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -9760,6 +9760,7 @@ unsigned menu_displaylist_build_list( {MENU_ENUM_LABEL_MATERIALUI_MENU_FOOTER_OPACITY, PARSE_ONLY_FLOAT, true}, {MENU_ENUM_LABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, PARSE_ONLY_BOOL, true}, {MENU_ENUM_LABEL_OZONE_MENU_COLOR_THEME, PARSE_ONLY_UINT, false}, + {MENU_ENUM_LABEL_OZONE_THUMBNAIL_SCALE_FACTOR, PARSE_ONLY_FLOAT, true}, {MENU_ENUM_LABEL_MENU_RGUI_INLINE_THUMBNAILS, PARSE_ONLY_BOOL, true}, {MENU_ENUM_LABEL_MATERIALUI_MENU_THUMBNAIL_VIEW_PORTRAIT, PARSE_ONLY_UINT, true}, {MENU_ENUM_LABEL_MATERIALUI_MENU_THUMBNAIL_VIEW_LANDSCAPE, PARSE_ONLY_UINT, true}, diff --git a/menu/menu_setting.c b/menu/menu_setting.c index deab6b10b7..a6b56774ba 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -17077,6 +17077,21 @@ static bool setting_append_list( general_write_handler, general_read_handler, SD_FLAG_NONE); + + CONFIG_FLOAT( + list, list_info, + &settings->floats.ozone_thumbnail_scale_factor, + MENU_ENUM_LABEL_OZONE_THUMBNAIL_SCALE_FACTOR, + MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, + DEFAULT_OZONE_THUMBNAIL_SCALE_FACTOR, + "%.2fx", + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + (*list)[list_info->index - 1].action_ok = &setting_action_ok_uint; + menu_settings_list_current_add_range(list, list_info, 1.0, 2.0, 0.05, true, true); } #endif diff --git a/msg_hash.h b/msg_hash.h index 6c57a576b2..887bfad32e 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -1268,6 +1268,7 @@ enum msg_hash_enums MENU_LABEL(OZONE_TRUNCATE_PLAYLIST_NAME), MENU_LABEL(OZONE_SORT_AFTER_TRUNCATE_PLAYLIST_NAME), MENU_LABEL(OZONE_SCROLL_CONTENT_METADATA), + MENU_LABEL(OZONE_THUMBNAIL_SCALE_FACTOR), MENU_LABEL(MATERIALUI_MENU_COLOR_THEME), MENU_LABEL(QUICK_MENU_OVERRIDE_OPTIONS), MENU_LABEL(SETTINGS_SHOW_DRIVERS),