HostDisplay: Add integer upscaling option

This commit is contained in:
Connor McLaughlin
2020-05-01 01:00:22 +10:00
parent 98bb1de31f
commit b4c31e55e2
5 changed files with 29 additions and 2 deletions

View File

@ -41,8 +41,16 @@ void HostDisplay::CalculateDrawRect(s32 window_width, s32 window_height, s32* ou
{
// align in middle vertically
scale = static_cast<float>(window_width) / display_width;
if (m_display_integer_scaling)
scale = std::max(std::floor(scale), 1.0f);
if (out_left_padding)
*out_left_padding = 0;
{
if (m_display_integer_scaling)
*out_left_padding = std::max<s32>((window_width - static_cast<s32>(display_width * scale)) / 2, 0);
else
*out_left_padding = 0;
}
if (out_top_padding)
*out_top_padding = std::max<s32>((window_height - static_cast<s32>(display_height * scale)) / 2, 0);
}
@ -50,10 +58,18 @@ void HostDisplay::CalculateDrawRect(s32 window_width, s32 window_height, s32* ou
{
// align in middle horizontally
scale = static_cast<float>(window_height) / display_height;
if (m_display_integer_scaling)
scale = std::max(std::floor(scale), 1.0f);
if (out_left_padding)
*out_left_padding = std::max<s32>((window_width - static_cast<s32>(display_width * scale)) / 2, 0);
if (out_top_padding)
*out_top_padding = 0;
{
if (m_display_integer_scaling)
*out_top_padding = std::max<s32>((window_height - static_cast<s32>(display_height * scale)) / 2, 0);
else
*out_top_padding = 0;
}
}
*out_width = static_cast<s32>(active_width * scale);