mirror of
https://github.com/libretro/RetroArch
synced 2025-02-06 09:40:06 +00:00
Enable localization of video rotation, orientation, aspect ratio options. (#14744)
This commit is contained in:
parent
f5133d8cc4
commit
02ba825c88
@ -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,
|
||||
|
@ -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();
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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
|
||||
|
@ -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,
|
||||
|
@ -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],
|
||||
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],
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
16
msg_hash.h
16
msg_hash.h
@ -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),
|
||||
|
Loading…
x
Reference in New Issue
Block a user