diff options
| author | 2020-02-17 22:02:18 -0500 | |
|---|---|---|
| committer | 2020-02-17 22:02:18 -0500 | |
| commit | 72d4c6fee0eed8bad5686f1db6043446900020d9 (patch) | |
| tree | 70114ee835cd2e666290a678742d164ffe7fdd3f /src/core/frontend/framebuffer_layout.cpp | |
| parent | Merge pull request #3429 from brianclinkenbeard/fix-cmake-sdl2-arch (diff) | |
| parent | Add 4:3 aspect ratio and address feedback (diff) | |
| download | yuzu-72d4c6fee0eed8bad5686f1db6043446900020d9.tar.gz yuzu-72d4c6fee0eed8bad5686f1db6043446900020d9.tar.xz yuzu-72d4c6fee0eed8bad5686f1db6043446900020d9.zip | |
Merge pull request #3412 from Morph1984/aspect-ratio
GUI: Add aspect ratio dropdown
Diffstat (limited to 'src/core/frontend/framebuffer_layout.cpp')
| -rw-r--r-- | src/core/frontend/framebuffer_layout.cpp | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/src/core/frontend/framebuffer_layout.cpp b/src/core/frontend/framebuffer_layout.cpp index d6d2cf3f0..2dc795d56 100644 --- a/src/core/frontend/framebuffer_layout.cpp +++ b/src/core/frontend/framebuffer_layout.cpp | |||
| @@ -27,9 +27,9 @@ FramebufferLayout DefaultFrameLayout(u32 width, u32 height) { | |||
| 27 | // so just calculate them both even if the other isn't showing. | 27 | // so just calculate them both even if the other isn't showing. |
| 28 | FramebufferLayout res{width, height}; | 28 | FramebufferLayout res{width, height}; |
| 29 | 29 | ||
| 30 | const float emulation_aspect_ratio{static_cast<float>(ScreenUndocked::Height) / | 30 | const float window_aspect_ratio = static_cast<float>(height) / width; |
| 31 | ScreenUndocked::Width}; | 31 | const float emulation_aspect_ratio = EmulationAspectRatio( |
| 32 | const auto window_aspect_ratio = static_cast<float>(height) / width; | 32 | static_cast<AspectRatio>(Settings::values.aspect_ratio), window_aspect_ratio); |
| 33 | 33 | ||
| 34 | const Common::Rectangle<u32> screen_window_area{0, 0, width, height}; | 34 | const Common::Rectangle<u32> screen_window_area{0, 0, width, height}; |
| 35 | Common::Rectangle<u32> screen = MaxRectangle(screen_window_area, emulation_aspect_ratio); | 35 | Common::Rectangle<u32> screen = MaxRectangle(screen_window_area, emulation_aspect_ratio); |
| @@ -58,4 +58,19 @@ FramebufferLayout FrameLayoutFromResolutionScale(u32 res_scale) { | |||
| 58 | return DefaultFrameLayout(width, height); | 58 | return DefaultFrameLayout(width, height); |
| 59 | } | 59 | } |
| 60 | 60 | ||
| 61 | float EmulationAspectRatio(AspectRatio aspect, float window_aspect_ratio) { | ||
| 62 | switch (aspect) { | ||
| 63 | case AspectRatio::Default: | ||
| 64 | return static_cast<float>(ScreenUndocked::Height) / ScreenUndocked::Width; | ||
| 65 | case AspectRatio::R4_3: | ||
| 66 | return 3.0f / 4.0f; | ||
| 67 | case AspectRatio::R21_9: | ||
| 68 | return 9.0f / 21.0f; | ||
| 69 | case AspectRatio::StretchToWindow: | ||
| 70 | return window_aspect_ratio; | ||
| 71 | default: | ||
| 72 | return static_cast<float>(ScreenUndocked::Height) / ScreenUndocked::Width; | ||
| 73 | } | ||
| 74 | } | ||
| 75 | |||
| 61 | } // namespace Layout | 76 | } // namespace Layout |