forked from moonpower/azahar-UWP
android: Added portrait-specific config values for custom layouts
This commit is contained in:
committed by
OpenSauce04
parent
f8e9e459fe
commit
6cb61c8ff7
@@ -183,8 +183,10 @@ void EmuWindow::UpdateCurrentFramebufferLayout(u32 width, u32 height, bool is_po
|
||||
const auto min_size =
|
||||
Layout::GetMinimumSizeFromLayout(layout_option, Settings::values.upright_screen.GetValue());
|
||||
|
||||
if (Settings::values.custom_layout.GetValue() == true) {
|
||||
layout = Layout::CustomFrameLayout(width, height, Settings::values.swap_screen.GetValue());
|
||||
if ((Settings::values.custom_layout.GetValue() == true && !is_portrait_mode) ||
|
||||
(Settings::values.custom_portrait_layout.GetValue() == true && is_portrait_mode)) {
|
||||
layout = Layout::CustomFrameLayout(width, height, Settings::values.swap_screen.GetValue(),
|
||||
is_portrait_mode);
|
||||
} else {
|
||||
width = std::max(width, min_size.first);
|
||||
height = std::max(height, min_size.second);
|
||||
|
||||
@@ -382,24 +382,30 @@ FramebufferLayout SeparateWindowsLayout(u32 width, u32 height, bool is_secondary
|
||||
return SingleFrameLayout(width, height, is_secondary, upright);
|
||||
}
|
||||
|
||||
FramebufferLayout CustomFrameLayout(u32 width, u32 height, bool is_swapped) {
|
||||
FramebufferLayout CustomFrameLayout(u32 width, u32 height, bool is_swapped, bool is_portrait_mode) {
|
||||
ASSERT(width > 0);
|
||||
ASSERT(height > 0);
|
||||
|
||||
FramebufferLayout res{width, height, true, true, {}, {}, !Settings::values.upright_screen};
|
||||
u16 top_left = is_portrait_mode ? Settings::values.custom_portrait_top_left.GetValue()
|
||||
: Settings::values.custom_top_left.GetValue();
|
||||
u16 top_right = is_portrait_mode ? Settings::values.custom_portrait_top_right.GetValue()
|
||||
: Settings::values.custom_top_right.GetValue();
|
||||
u16 top_top = is_portrait_mode ? Settings::values.custom_portrait_top_top.GetValue()
|
||||
: Settings::values.custom_top_top.GetValue();
|
||||
u16 top_bottom = is_portrait_mode ? Settings::values.custom_portrait_top_bottom.GetValue()
|
||||
: Settings::values.custom_top_bottom.GetValue();
|
||||
u16 bottom_left = is_portrait_mode ? Settings::values.custom_portrait_bottom_left.GetValue()
|
||||
: Settings::values.custom_bottom_left.GetValue();
|
||||
u16 bottom_right = is_portrait_mode ? Settings::values.custom_portrait_bottom_right.GetValue()
|
||||
: Settings::values.custom_bottom_right.GetValue();
|
||||
u16 bottom_top = is_portrait_mode ? Settings::values.custom_portrait_bottom_top.GetValue()
|
||||
: Settings::values.custom_bottom_top.GetValue();
|
||||
u16 bottom_bottom = is_portrait_mode ? Settings::values.custom_portrait_bottom_bottom.GetValue()
|
||||
: Settings::values.custom_bottom_bottom.GetValue();
|
||||
|
||||
Common::Rectangle<u32> top_screen{Settings::values.custom_top_x.GetValue(),
|
||||
Settings::values.custom_top_y.GetValue(),
|
||||
(u32)(Settings::values.custom_top_x.GetValue() +
|
||||
Settings::values.custom_top_width.GetValue()),
|
||||
(u32)(Settings::values.custom_top_y.GetValue() +
|
||||
Settings::values.custom_top_height.GetValue())};
|
||||
Common::Rectangle<u32> bot_screen{Settings::values.custom_bottom_x.GetValue(),
|
||||
Settings::values.custom_bottom_y.GetValue(),
|
||||
(u32)(Settings::values.custom_bottom_x.GetValue() +
|
||||
Settings::values.custom_bottom_width.GetValue()),
|
||||
(u32)(Settings::values.custom_bottom_y.GetValue() +
|
||||
Settings::values.custom_bottom_height.GetValue())};
|
||||
Common::Rectangle<u32> top_screen{top_left, top_top, top_right, top_bottom};
|
||||
Common::Rectangle<u32> bot_screen{bottom_left, bottom_top, bottom_right, bottom_bottom};
|
||||
|
||||
if (is_swapped) {
|
||||
res.top_screen = bot_screen;
|
||||
@@ -412,12 +418,21 @@ FramebufferLayout CustomFrameLayout(u32 width, u32 height, bool is_swapped) {
|
||||
}
|
||||
|
||||
FramebufferLayout FrameLayoutFromResolutionScale(u32 res_scale, bool is_secondary) {
|
||||
if (Settings::values.custom_layout.GetValue() == true) {
|
||||
return CustomFrameLayout(std::max(Settings::values.custom_top_width.GetValue(),
|
||||
Settings::values.custom_bottom_width.GetValue()),
|
||||
std::max(Settings::values.custom_top_height.GetValue(),
|
||||
Settings::values.custom_bottom_height.GetValue()),
|
||||
Settings::values.swap_screen.GetValue());
|
||||
bool is_portrait_mode =
|
||||
Settings::values.layout_option.GetValue() == Settings::LayoutOption::MobilePortrait;
|
||||
if (Settings::values.custom_layout.GetValue() == true && !is_portrait_mode) {
|
||||
return CustomFrameLayout(std::max(Settings::values.custom_top_right.GetValue(),
|
||||
Settings::values.custom_bottom_right.GetValue()),
|
||||
std::max(Settings::values.custom_top_bottom.GetValue(),
|
||||
Settings::values.custom_bottom_bottom.GetValue()),
|
||||
Settings::values.swap_screen.GetValue(), is_portrait_mode);
|
||||
} else if (Settings::values.custom_portrait_layout.GetValue() == true && is_portrait_mode) {
|
||||
return CustomFrameLayout(
|
||||
std::max(Settings::values.custom_portrait_top_right.GetValue(),
|
||||
Settings::values.custom_portrait_bottom_right.GetValue()),
|
||||
std::max(Settings::values.custom_portrait_top_bottom.GetValue(),
|
||||
Settings::values.custom_portrait_bottom_bottom.GetValue()),
|
||||
Settings::values.swap_screen.GetValue(), is_portrait_mode);
|
||||
}
|
||||
|
||||
int width, height;
|
||||
|
||||
@@ -145,7 +145,8 @@ FramebufferLayout SeparateWindowsLayout(u32 width, u32 height, bool is_secondary
|
||||
* @param height Window framebuffer height in pixels
|
||||
* @return Newly created FramebufferLayout object with default screen regions initialized
|
||||
*/
|
||||
FramebufferLayout CustomFrameLayout(u32 width, u32 height, bool is_swapped);
|
||||
FramebufferLayout CustomFrameLayout(u32 width, u32 height, bool is_swapped,
|
||||
bool is_portrait_mode = false);
|
||||
|
||||
/**
|
||||
* Convenience method to get frame layout by resolution scale
|
||||
|
||||
Reference in New Issue
Block a user