Ozone: Add thumbnail scale option (#13620)

* Ozone: Add thumbnail scale option

* CHANGES.md: Add ozone thumbnail bar scaling option
This commit is contained in:
Nikos Chantziaras 2022-03-11 16:51:41 +02:00 committed by GitHub
parent b4d9d6c5fc
commit d9bc8fb796
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 54 additions and 3 deletions

View file

@ -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

View file

@ -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

View file

@ -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);

View file

@ -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. */

View file

@ -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"

View file

@ -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 */

View file

@ -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:

View file

@ -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;

View file

@ -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},

View file

@ -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

View file

@ -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),