mirror of
https://github.com/libretro/RetroArch
synced 2025-02-07 03:40:24 +00:00
add overlay parameter to control x/y separation in auto-scale mode (#15106)
This commit is contained in:
parent
d28417ca84
commit
b0b5a40d44
@ -1750,9 +1750,9 @@ static void input_overlay_parse_layout(
|
||||
return;
|
||||
}
|
||||
|
||||
/* If X separation is permitted, move elements
|
||||
/* If auto-scale X separation is enabled, move elements
|
||||
* horizontally towards the edges of the screen */
|
||||
if (!(ol->flags & OVERLAY_BLOCK_X_SEPARATION))
|
||||
if (ol->flags & OVERLAY_AUTO_X_SEPARATION)
|
||||
overlay_layout->x_separation = ((1.0f / overlay_layout->x_scale) - 1.0f) * 0.5f;
|
||||
}
|
||||
/* If display is taller than overlay,
|
||||
@ -1768,14 +1768,9 @@ static void input_overlay_parse_layout(
|
||||
return;
|
||||
}
|
||||
|
||||
/* If Y separation is permitted and display has
|
||||
* a *landscape* orientation, move elements
|
||||
* vertically towards the edges of the screen
|
||||
* > Portrait overlays typically have all elements
|
||||
* below the centre line, so Y separation
|
||||
* provides no real benefit */
|
||||
if ((display_aspect_ratio > 1.0f) &&
|
||||
!(ol->flags & OVERLAY_BLOCK_Y_SEPARATION))
|
||||
/* If auto-scale Y separation is enabled, move elements
|
||||
* vertically towards the edges of the screen */
|
||||
if (ol->flags & OVERLAY_AUTO_Y_SEPARATION)
|
||||
overlay_layout->y_separation = ((1.0f / overlay_layout->y_scale) - 1.0f) * 0.5f;
|
||||
}
|
||||
|
||||
|
@ -141,7 +141,9 @@ enum OVERLAY_FLAGS
|
||||
OVERLAY_FULL_SCREEN = (1 << 0),
|
||||
OVERLAY_BLOCK_SCALE = (1 << 1),
|
||||
OVERLAY_BLOCK_X_SEPARATION = (1 << 2),
|
||||
OVERLAY_BLOCK_Y_SEPARATION = (1 << 3)
|
||||
OVERLAY_BLOCK_Y_SEPARATION = (1 << 3),
|
||||
OVERLAY_AUTO_X_SEPARATION = (1 << 4),
|
||||
OVERLAY_AUTO_Y_SEPARATION = (1 << 5)
|
||||
};
|
||||
|
||||
enum OVERLAY_DESC_FLAGS
|
||||
|
@ -860,6 +860,30 @@ static void task_overlay_deferred_load(retro_task_t *task)
|
||||
if (config_get_bool(conf, conf_key, &tmp_bool)
|
||||
&& tmp_bool)
|
||||
overlay->flags |= OVERLAY_BLOCK_Y_SEPARATION;
|
||||
|
||||
/* Check whether x/y separation are enabled
|
||||
* for this overlay in auto-scale mode */
|
||||
snprintf(conf_key, sizeof(conf_key),
|
||||
"overlay%u_auto_x_separation", loader->pos);
|
||||
overlay->flags |= OVERLAY_AUTO_X_SEPARATION;
|
||||
if (config_get_bool(conf, conf_key, &tmp_bool))
|
||||
{
|
||||
if (!tmp_bool)
|
||||
overlay->flags &= ~OVERLAY_AUTO_X_SEPARATION;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (overlay->flags & OVERLAY_BLOCK_X_SEPARATION
|
||||
|| overlay->image.width != 0)
|
||||
overlay->flags &= ~OVERLAY_AUTO_X_SEPARATION;
|
||||
}
|
||||
|
||||
snprintf(conf_key, sizeof(conf_key),
|
||||
"overlay%u_auto_y_separation", loader->pos);
|
||||
overlay->flags &= ~OVERLAY_AUTO_Y_SEPARATION;
|
||||
if (config_get_bool(conf, conf_key, &tmp_bool)
|
||||
&& tmp_bool)
|
||||
overlay->flags |= OVERLAY_AUTO_Y_SEPARATION;
|
||||
}
|
||||
|
||||
return;
|
||||
|
Loading…
x
Reference in New Issue
Block a user