Move screen size constants from video_core to core
video_core didn't even properly use them, and they were the source of many otherwise-unnecessary dependencies from core to video_core.
This commit is contained in:
parent
6665557ff7
commit
eb10f25025
9 changed files with 63 additions and 51 deletions
|
@ -5,10 +5,10 @@
|
|||
#include <algorithm>
|
||||
#include <cmath>
|
||||
#include "common/assert.h"
|
||||
#include "core/3ds.h"
|
||||
#include "core/core.h"
|
||||
#include "core/frontend/emu_window.h"
|
||||
#include "core/settings.h"
|
||||
#include "video_core/video_core.h"
|
||||
|
||||
/**
|
||||
* Check if the given x/y coordinates are within the touchpad specified by the framebuffer layout
|
||||
|
@ -38,11 +38,9 @@ void EmuWindow::TouchPressed(unsigned framebuffer_x, unsigned framebuffer_y) {
|
|||
if (!IsWithinTouchscreen(framebuffer_layout, framebuffer_x, framebuffer_y))
|
||||
return;
|
||||
|
||||
touch_x = VideoCore::kScreenBottomWidth *
|
||||
(framebuffer_x - framebuffer_layout.bottom_screen.left) /
|
||||
touch_x = Core::kScreenBottomWidth * (framebuffer_x - framebuffer_layout.bottom_screen.left) /
|
||||
(framebuffer_layout.bottom_screen.right - framebuffer_layout.bottom_screen.left);
|
||||
touch_y = VideoCore::kScreenBottomHeight *
|
||||
(framebuffer_y - framebuffer_layout.bottom_screen.top) /
|
||||
touch_y = Core::kScreenBottomHeight * (framebuffer_y - framebuffer_layout.bottom_screen.top) /
|
||||
(framebuffer_layout.bottom_screen.bottom - framebuffer_layout.bottom_screen.top);
|
||||
|
||||
touch_pressed = true;
|
||||
|
|
|
@ -5,16 +5,20 @@
|
|||
#include <cmath>
|
||||
|
||||
#include "common/assert.h"
|
||||
#include "core/3ds.h"
|
||||
#include "core/frontend/framebuffer_layout.h"
|
||||
#include "core/settings.h"
|
||||
#include "video_core/video_core.h"
|
||||
|
||||
namespace Layout {
|
||||
|
||||
static const float TOP_SCREEN_ASPECT_RATIO =
|
||||
static_cast<float>(VideoCore::kScreenTopHeight) / VideoCore::kScreenTopWidth;
|
||||
static_cast<float>(Core::kScreenTopHeight) / Core::kScreenTopWidth;
|
||||
static const float BOT_SCREEN_ASPECT_RATIO =
|
||||
static_cast<float>(VideoCore::kScreenBottomHeight) / VideoCore::kScreenBottomWidth;
|
||||
static_cast<float>(Core::kScreenBottomHeight) / Core::kScreenBottomWidth;
|
||||
|
||||
float FramebufferLayout::GetScalingRatio() const {
|
||||
return static_cast<float>(top_screen.GetWidth()) / Core::kScreenTopWidth;
|
||||
}
|
||||
|
||||
// Finds the largest size subrectangle contained in window area that is confined to the aspect ratio
|
||||
template <class T>
|
||||
|
@ -106,10 +110,10 @@ FramebufferLayout LargeFrameLayout(unsigned width, unsigned height, bool swapped
|
|||
float window_aspect_ratio = static_cast<float>(height) / width;
|
||||
float emulation_aspect_ratio =
|
||||
swapped
|
||||
? VideoCore::kScreenBottomHeight * 4 /
|
||||
(VideoCore::kScreenBottomWidth * 4.0f + VideoCore::kScreenTopWidth)
|
||||
: VideoCore::kScreenTopHeight * 4 /
|
||||
(VideoCore::kScreenTopWidth * 4.0f + VideoCore::kScreenBottomWidth);
|
||||
? Core::kScreenBottomHeight * 4 /
|
||||
(Core::kScreenBottomWidth * 4.0f + Core::kScreenTopWidth)
|
||||
: Core::kScreenTopHeight * 4 /
|
||||
(Core::kScreenTopWidth * 4.0f + Core::kScreenBottomWidth);
|
||||
float large_screen_aspect_ratio = swapped ? BOT_SCREEN_ASPECT_RATIO : TOP_SCREEN_ASPECT_RATIO;
|
||||
float small_screen_aspect_ratio = swapped ? TOP_SCREEN_ASPECT_RATIO : BOT_SCREEN_ASPECT_RATIO;
|
||||
|
||||
|
|
|
@ -5,7 +5,9 @@
|
|||
#pragma once
|
||||
|
||||
#include "common/math_util.h"
|
||||
|
||||
namespace Layout {
|
||||
|
||||
/// Describes the layout of the window framebuffer (size and top/bottom screen positions)
|
||||
struct FramebufferLayout {
|
||||
unsigned width;
|
||||
|
@ -14,6 +16,12 @@ struct FramebufferLayout {
|
|||
bool bottom_screen_enabled;
|
||||
MathUtil::Rectangle<unsigned> top_screen;
|
||||
MathUtil::Rectangle<unsigned> bottom_screen;
|
||||
|
||||
/**
|
||||
* Returns the ration of pixel size of the top screen, compared to the native size of the 3DS
|
||||
* screen.
|
||||
*/
|
||||
float GetScalingRatio() const;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -52,4 +60,5 @@ FramebufferLayout LargeFrameLayout(unsigned width, unsigned height, bool is_swap
|
|||
* @return Newly created FramebufferLayout object with default screen regions initialized
|
||||
*/
|
||||
FramebufferLayout CustomFrameLayout(unsigned width, unsigned height);
|
||||
}
|
||||
|
||||
} // namespace Layout
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue