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
|
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
|
enum autoswitch_refresh_rate
|
||||||
{
|
{
|
||||||
AUTOSWITCH_REFRESH_RATE_EXCLUSIVE_FULLSCREEN = 0,
|
AUTOSWITCH_REFRESH_RATE_EXCLUSIVE_FULLSCREEN = 0,
|
||||||
|
@ -185,6 +185,7 @@ static const gfx_ctx_driver_t *gfx_ctx_gl_drivers[] = {
|
|||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Beware when changing this - it must match with enum aspect_ratio order */
|
||||||
struct aspect_ratio_elem aspectratio_lut[ASPECT_RATIO_END] = {
|
struct aspect_ratio_elem aspectratio_lut[ASPECT_RATIO_END] = {
|
||||||
{ 4.0f / 3.0f , "4:3" },
|
{ 4.0f / 3.0f , "4:3" },
|
||||||
{ 16.0f / 9.0f , "16:9" },
|
{ 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" },
|
{ 19.0f / 14.0f, "19:14" },
|
||||||
{ 30.0f / 17.0f, "30:17" },
|
{ 30.0f / 17.0f, "30:17" },
|
||||||
{ 32.0f / 9.0f , "32:9" },
|
{ 32.0f / 9.0f , "32:9" },
|
||||||
{ 0.0f , "Config" },
|
{ 0.0f , "" }, /* config - initialized in video_driver_init_internal */
|
||||||
{ 1.0f , "Square pixel" },
|
{ 1.0f , "" }, /* square pixel - initialized in video_driver_set_viewport_square_pixel */
|
||||||
{ 1.0f , "Core provided" },
|
{ 1.0f , "" }, /* core provided - initialized in video_driver_init_internal */
|
||||||
{ 0.0f , "Custom" },
|
{ 0.0f , "" }, /* custom - initialized in video_driver_init_internal */
|
||||||
{ 4.0f / 3.0f , "Full" }
|
{ 4.0f / 3.0f , "" } /* full - initialized in video_driver_init_internal */
|
||||||
};
|
};
|
||||||
|
|
||||||
static void *video_null_init(const video_info_t *video,
|
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,
|
snprintf(aspectratio_lut[ASPECT_RATIO_SQUARE].name,
|
||||||
sizeof(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;
|
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;
|
scale = video_st->state_scale;
|
||||||
#endif
|
#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. */
|
/* Update core-dependent aspect ratio values. */
|
||||||
video_driver_set_viewport_square_pixel(geom);
|
video_driver_set_viewport_square_pixel(geom);
|
||||||
video_driver_set_viewport_core();
|
video_driver_set_viewport_core();
|
||||||
|
@ -1946,6 +1946,26 @@ MSG_HASH(
|
|||||||
MENU_ENUM_SUBLABEL_VIDEO_ASPECT_RATIO,
|
MENU_ENUM_SUBLABEL_VIDEO_ASPECT_RATIO,
|
||||||
"Floating point value for video aspect ratio (width / height)."
|
"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)
|
#if defined(DINGUX)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_DINGUX_IPU_KEEP_ASPECT,
|
MENU_ENUM_LABEL_VALUE_VIDEO_DINGUX_IPU_KEEP_ASPECT,
|
||||||
@ -2352,6 +2372,10 @@ MSG_HASH(
|
|||||||
|
|
||||||
/* Settings > Audio > Mixer Settings > Mixer Stream */
|
/* Settings > Audio > Mixer Settings > Mixer Stream */
|
||||||
|
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_MIXER_STREAM,
|
||||||
|
"Mixer stream #%d: %s"
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY,
|
MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY,
|
||||||
"Play"
|
"Play"
|
||||||
@ -8367,6 +8391,38 @@ MSG_HASH(
|
|||||||
MENU_ENUM_LABEL_VALUE_SELECT_FILE,
|
MENU_ENUM_LABEL_VALUE_SELECT_FILE,
|
||||||
"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 */
|
/* 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)
|
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);
|
unsigned offset = (menu_type - MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_BEGIN);
|
||||||
/* TODO/FIXME - Localize */
|
snprintf(s, len , msg_hash_to_str(MENU_ENUM_LABEL_MIXER_STREAM), offset + 1, audio_driver_mixer_get_stream_name(offset));
|
||||||
size_t _len = strlcpy(s, "Mixer Stream", len);
|
|
||||||
snprintf(s + _len, len - _len, " #%d: %s", offset + 1, audio_driver_mixer_get_stream_name(offset));
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -6343,7 +6343,7 @@ unsigned menu_displaylist_build_list(
|
|||||||
{
|
{
|
||||||
char msg[128];
|
char msg[128];
|
||||||
char msg_lbl[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);
|
snprintf(msg_lbl, sizeof(msg_lbl), "audio_mixer_stream_%d\n", i);
|
||||||
if (menu_entries_append(list, msg, msg_lbl,
|
if (menu_entries_append(list, msg, msg_lbl,
|
||||||
MSG_UNKNOWN,
|
MSG_UNKNOWN,
|
||||||
|
@ -6383,16 +6383,25 @@ static void setting_get_string_representation_uint_video_rotation(rarch_setting_
|
|||||||
{
|
{
|
||||||
if (setting)
|
if (setting)
|
||||||
{
|
{
|
||||||
char rotation_lut[4][32] =
|
switch (*setting->value.target.unsigned_integer)
|
||||||
{
|
{
|
||||||
"Normal",
|
case VIDEO_ROTATION_NORMAL:
|
||||||
"90 deg",
|
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_ROTATION_NORMAL),
|
||||||
"180 deg",
|
len);
|
||||||
"270 deg"
|
break;
|
||||||
};
|
case VIDEO_ROTATION_90_DEG:
|
||||||
|
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_ROTATION_90_DEG),
|
||||||
strlcpy(s, rotation_lut[*setting->value.target.unsigned_integer],
|
len);
|
||||||
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)
|
if (setting)
|
||||||
{
|
{
|
||||||
char rotation_lut[4][32] =
|
switch (*setting->value.target.unsigned_integer)
|
||||||
{
|
{
|
||||||
"Normal",
|
case ORIENTATION_NORMAL:
|
||||||
"90 deg",
|
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_ORIENTATION_NORMAL),
|
||||||
"180 deg",
|
len);
|
||||||
"270 deg"
|
break;
|
||||||
};
|
case ORIENTATION_VERTICAL:
|
||||||
|
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_ORIENTATION_VERTICAL),
|
||||||
strlcpy(s, rotation_lut[*setting->value.target.unsigned_integer],
|
len);
|
||||||
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(VIDEO_STREAM_QUALITY),
|
||||||
MENU_LABEL(STREAMING_URL),
|
MENU_LABEL(STREAMING_URL),
|
||||||
MENU_LABEL(UDP_STREAM_PORT),
|
MENU_LABEL(UDP_STREAM_PORT),
|
||||||
|
MENU_LABEL(MIXER_STREAM),
|
||||||
MENU_LABEL(ADD_TO_MIXER),
|
MENU_LABEL(ADD_TO_MIXER),
|
||||||
MENU_LABEL(ADD_TO_MIXER_AND_PLAY),
|
MENU_LABEL(ADD_TO_MIXER_AND_PLAY),
|
||||||
MENU_LABEL(ADD_TO_MIXER_AND_COLLECTION),
|
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_WIDTH),
|
||||||
MENU_LABEL(VIDEO_VIEWPORT_CUSTOM_HEIGHT),
|
MENU_LABEL(VIDEO_VIEWPORT_CUSTOM_HEIGHT),
|
||||||
MENU_LABEL(VIDEO_GAMMA),
|
MENU_LABEL(VIDEO_GAMMA),
|
||||||
|
|
||||||
MENU_LABEL(VIDEO_ALLOW_ROTATE),
|
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(VIDEO_SHARED_CONTEXT),
|
||||||
MENU_LABEL(DRIVER_SWITCH_ENABLE),
|
MENU_LABEL(DRIVER_SWITCH_ENABLE),
|
||||||
MENU_LABEL(VIDEO_THREADED),
|
MENU_LABEL(VIDEO_THREADED),
|
||||||
@ -2774,6 +2785,11 @@ enum msg_hash_enums
|
|||||||
MENU_LABEL(VIDEO_FORCE_ASPECT),
|
MENU_LABEL(VIDEO_FORCE_ASPECT),
|
||||||
MENU_LABEL(VIDEO_ASPECT_RATIO_AUTO),
|
MENU_LABEL(VIDEO_ASPECT_RATIO_AUTO),
|
||||||
MENU_LABEL(VIDEO_ASPECT_RATIO_INDEX),
|
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)
|
#if defined(DINGUX)
|
||||||
MENU_LABEL(VIDEO_DINGUX_IPU_KEEP_ASPECT),
|
MENU_LABEL(VIDEO_DINGUX_IPU_KEEP_ASPECT),
|
||||||
MENU_LABEL(VIDEO_DINGUX_IPU_FILTER_TYPE),
|
MENU_LABEL(VIDEO_DINGUX_IPU_FILTER_TYPE),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user