Enable localization of video rotation, orientation, aspect ratio options. (#14744)

This commit is contained in:
zoltanvb 2022-12-19 21:36:06 +01:00 committed by GitHub
parent f5133d8cc4
commit 02ba825c88
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 139 additions and 28 deletions

View File

@ -75,6 +75,14 @@ enum rotation
ORIENTATION_END
};
enum video_rotation_type
{
VIDEO_ROTATION_NORMAL = 0,
VIDEO_ROTATION_90_DEG,
VIDEO_ROTATION_180_DEG,
VIDEO_ROTATION_270_DEG
};
enum autoswitch_refresh_rate
{
AUTOSWITCH_REFRESH_RATE_EXCLUSIVE_FULLSCREEN = 0,

View File

@ -185,6 +185,7 @@ static const gfx_ctx_driver_t *gfx_ctx_gl_drivers[] = {
NULL
};
/* Beware when changing this - it must match with enum aspect_ratio order */
struct aspect_ratio_elem aspectratio_lut[ASPECT_RATIO_END] = {
{ 4.0f / 3.0f , "4:3" },
{ 16.0f / 9.0f , "16:9" },
@ -206,11 +207,11 @@ struct aspect_ratio_elem aspectratio_lut[ASPECT_RATIO_END] = {
{ 19.0f / 14.0f, "19:14" },
{ 30.0f / 17.0f, "30:17" },
{ 32.0f / 9.0f , "32:9" },
{ 0.0f , "Config" },
{ 1.0f , "Square pixel" },
{ 1.0f , "Core provided" },
{ 0.0f , "Custom" },
{ 4.0f / 3.0f , "Full" }
{ 0.0f , "" }, /* config - initialized in video_driver_init_internal */
{ 1.0f , "" }, /* square pixel - initialized in video_driver_set_viewport_square_pixel */
{ 1.0f , "" }, /* core provided - initialized in video_driver_init_internal */
{ 0.0f , "" }, /* custom - initialized in video_driver_init_internal */
{ 4.0f / 3.0f , "" } /* full - initialized in video_driver_init_internal */
};
static void *video_null_init(const video_info_t *video,
@ -1621,7 +1622,8 @@ void video_driver_set_viewport_square_pixel(struct retro_game_geometry *geom)
snprintf(aspectratio_lut[ASPECT_RATIO_SQUARE].name,
sizeof(aspectratio_lut[ASPECT_RATIO_SQUARE].name),
"1:1 PAR (%u:%u DAR)", aspect_x, aspect_y);
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_SQUARE_PIXEL),
aspect_x, aspect_y);
aspectratio_lut[ASPECT_RATIO_SQUARE].value = (float)aspect_x / aspect_y;
}
@ -3294,6 +3296,19 @@ bool video_driver_init_internal(bool *video_is_threaded, bool verbosity_enabled)
scale = video_st->state_scale;
#endif
strlcpy(aspectratio_lut[ASPECT_RATIO_CONFIG].name,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_CONFIG),
sizeof(aspectratio_lut[ASPECT_RATIO_CONFIG].name));
strlcpy(aspectratio_lut[ASPECT_RATIO_CORE].name,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_CORE_PROVIDED),
sizeof(aspectratio_lut[ASPECT_RATIO_CORE].name));
strlcpy(aspectratio_lut[ASPECT_RATIO_CUSTOM].name,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_CUSTOM),
sizeof(aspectratio_lut[ASPECT_RATIO_CUSTOM].name));
strlcpy(aspectratio_lut[ASPECT_RATIO_FULL].name,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_FULL),
sizeof(aspectratio_lut[ASPECT_RATIO_FULL].name));
/* Update core-dependent aspect ratio values. */
video_driver_set_viewport_square_pixel(geom);
video_driver_set_viewport_core();

View File

@ -1946,6 +1946,26 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_VIDEO_ASPECT_RATIO,
"Floating point value for video aspect ratio (width / height)."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_CONFIG,
"Config"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_SQUARE_PIXEL,
"1:1 PAR (%u:%u DAR)"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_CORE_PROVIDED,
"Core provided"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_CUSTOM,
"Custom"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_FULL,
"Full"
)
#if defined(DINGUX)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_VIDEO_DINGUX_IPU_KEEP_ASPECT,
@ -2352,6 +2372,10 @@ MSG_HASH(
/* Settings > Audio > Mixer Settings > Mixer Stream */
MSG_HASH(
MENU_ENUM_LABEL_MIXER_STREAM,
"Mixer stream #%d: %s"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY,
"Play"
@ -8367,6 +8391,38 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_SELECT_FILE,
"Select File"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_VIDEO_ROTATION_NORMAL,
"Normal"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_VIDEO_ROTATION_90_DEG,
"90 deg"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_VIDEO_ROTATION_180_DEG,
"180 deg"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_VIDEO_ROTATION_270_DEG,
"270 deg"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_VIDEO_ORIENTATION_NORMAL,
"Normal"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_VIDEO_ORIENTATION_VERTICAL,
"90 deg"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_VIDEO_ORIENTATION_FLIPPED,
"180 deg"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_VIDEO_ORIENTATION_FLIPPED_ROTATED,
"270 deg"
)
/* Settings Options */

View File

@ -367,9 +367,7 @@ static int action_get_title_dropdown_item(
static int action_get_title_mixer_stream_actions(const char *path, const char *label, unsigned menu_type, char *s, size_t len)
{
unsigned offset = (menu_type - MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_BEGIN);
/* TODO/FIXME - Localize */
size_t _len = strlcpy(s, "Mixer Stream", len);
snprintf(s + _len, len - _len, " #%d: %s", offset + 1, audio_driver_mixer_get_stream_name(offset));
snprintf(s, len , msg_hash_to_str(MENU_ENUM_LABEL_MIXER_STREAM), offset + 1, audio_driver_mixer_get_stream_name(offset));
return 0;
}
#endif

View File

@ -6343,7 +6343,7 @@ unsigned menu_displaylist_build_list(
{
char msg[128];
char msg_lbl[128];
snprintf(msg, sizeof(msg), "Mixer Stream #%d :\n", i+1);
snprintf(msg, sizeof(msg), msg_hash_to_str(MENU_ENUM_LABEL_MIXER_STREAM), i+1, "\n");
snprintf(msg_lbl, sizeof(msg_lbl), "audio_mixer_stream_%d\n", i);
if (menu_entries_append(list, msg, msg_lbl,
MSG_UNKNOWN,

View File

@ -6383,16 +6383,25 @@ static void setting_get_string_representation_uint_video_rotation(rarch_setting_
{
if (setting)
{
char rotation_lut[4][32] =
switch (*setting->value.target.unsigned_integer)
{
"Normal",
"90 deg",
"180 deg",
"270 deg"
};
strlcpy(s, rotation_lut[*setting->value.target.unsigned_integer],
len);
case VIDEO_ROTATION_NORMAL:
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_ROTATION_NORMAL),
len);
break;
case VIDEO_ROTATION_90_DEG:
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_ROTATION_90_DEG),
len);
break;
case VIDEO_ROTATION_180_DEG:
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_ROTATION_180_DEG),
len);
break;
case VIDEO_ROTATION_270_DEG:
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_ROTATION_270_DEG),
len);
break;
}
}
}
@ -6401,16 +6410,25 @@ static void setting_get_string_representation_uint_screen_orientation(rarch_sett
{
if (setting)
{
char rotation_lut[4][32] =
switch (*setting->value.target.unsigned_integer)
{
"Normal",
"90 deg",
"180 deg",
"270 deg"
};
strlcpy(s, rotation_lut[*setting->value.target.unsigned_integer],
len);
case ORIENTATION_NORMAL:
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_ORIENTATION_NORMAL),
len);
break;
case ORIENTATION_VERTICAL:
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_ORIENTATION_VERTICAL),
len);
break;
case ORIENTATION_FLIPPED:
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_ORIENTATION_FLIPPED),
len);
break;
case ORIENTATION_FLIPPED_ROTATED:
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_ORIENTATION_FLIPPED_ROTATED),
len);
break;
}
}
}

View File

@ -544,6 +544,7 @@ enum msg_hash_enums
MENU_LABEL(VIDEO_STREAM_QUALITY),
MENU_LABEL(STREAMING_URL),
MENU_LABEL(UDP_STREAM_PORT),
MENU_LABEL(MIXER_STREAM),
MENU_LABEL(ADD_TO_MIXER),
MENU_LABEL(ADD_TO_MIXER_AND_PLAY),
MENU_LABEL(ADD_TO_MIXER_AND_COLLECTION),
@ -1186,7 +1187,17 @@ enum msg_hash_enums
MENU_LABEL(VIDEO_VIEWPORT_CUSTOM_WIDTH),
MENU_LABEL(VIDEO_VIEWPORT_CUSTOM_HEIGHT),
MENU_LABEL(VIDEO_GAMMA),
MENU_LABEL(VIDEO_ALLOW_ROTATE),
MENU_ENUM_LABEL_VALUE_VIDEO_ROTATION_NORMAL,
MENU_ENUM_LABEL_VALUE_VIDEO_ROTATION_90_DEG,
MENU_ENUM_LABEL_VALUE_VIDEO_ROTATION_180_DEG,
MENU_ENUM_LABEL_VALUE_VIDEO_ROTATION_270_DEG,
MENU_ENUM_LABEL_VALUE_VIDEO_ORIENTATION_NORMAL,
MENU_ENUM_LABEL_VALUE_VIDEO_ORIENTATION_VERTICAL,
MENU_ENUM_LABEL_VALUE_VIDEO_ORIENTATION_FLIPPED,
MENU_ENUM_LABEL_VALUE_VIDEO_ORIENTATION_FLIPPED_ROTATED,
MENU_LABEL(VIDEO_SHARED_CONTEXT),
MENU_LABEL(DRIVER_SWITCH_ENABLE),
MENU_LABEL(VIDEO_THREADED),
@ -2774,6 +2785,11 @@ enum msg_hash_enums
MENU_LABEL(VIDEO_FORCE_ASPECT),
MENU_LABEL(VIDEO_ASPECT_RATIO_AUTO),
MENU_LABEL(VIDEO_ASPECT_RATIO_INDEX),
MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_CONFIG,
MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_SQUARE_PIXEL,
MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_CORE_PROVIDED,
MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_CUSTOM,
MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_FULL,
#if defined(DINGUX)
MENU_LABEL(VIDEO_DINGUX_IPU_KEEP_ASPECT),
MENU_LABEL(VIDEO_DINGUX_IPU_FILTER_TYPE),