From 20d9c7181f3c8dfbac92e27b241e06a957ff368b Mon Sep 17 00:00:00 2001 From: stefnotch Date: Mon, 8 Feb 2021 10:07:38 +0100 Subject: [PATCH] Untested cross platform implementation --- Source/Engine/Platform/Android/AndroidWindow.cpp | 4 ++++ Source/Engine/Platform/Linux/LinuxWindow.cpp | 4 ++++ Source/Engine/Platform/UWP/UWPWindow.h | 1 - Source/Engine/Platform/Windows/WindowsWindow.cpp | 2 +- 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Source/Engine/Platform/Android/AndroidWindow.cpp b/Source/Engine/Platform/Android/AndroidWindow.cpp index abfee9d13..4d3c4ca67 100644 --- a/Source/Engine/Platform/Android/AndroidWindow.cpp +++ b/Source/Engine/Platform/Android/AndroidWindow.cpp @@ -6,10 +6,14 @@ #include "Engine/Graphics/RenderTask.h" #include +#define DefaultDPI 96 + AndroidWindow::AndroidWindow(const CreateWindowSettings& settings) : WindowBase(settings) { _clientSize = settings.Size; + _dpi = DefaultDPI; + _dpiScale = (float)_dpi / (float)DefaultDPI; } AndroidWindow::~AndroidWindow() diff --git a/Source/Engine/Platform/Linux/LinuxWindow.cpp b/Source/Engine/Platform/Linux/LinuxWindow.cpp index 768df66bd..c83298bc8 100644 --- a/Source/Engine/Platform/Linux/LinuxWindow.cpp +++ b/Source/Engine/Platform/Linux/LinuxWindow.cpp @@ -31,6 +31,7 @@ #define _NET_WM_STATE_REMOVE 0L // remove/unset property #define _NET_WM_STATE_ADD 1L // add/set property #define _NET_WM_STATE_TOGGLE 2L // toggle property +#define DefaultDPI 96 // Window routines function prolog #define LINUX_WINDOW_PROLOG X11::Display* display = (X11::Display*)LinuxPlatform::GetXDisplay(); X11::Window window = (X11::Window)_window @@ -138,6 +139,9 @@ LinuxWindow::LinuxWindow(const CreateWindowSettings& settings) if (settings.Parent) X11::XSetTransientForHint(display, window, (X11::Window)((LinuxWindow*)settings.Parent)->GetNativePtr()); + _dpi = Platform::GetDpi(); + _dpiScale = (float)_dpi / (float)DefaultDPI; + // Set mask long eventMask = ExposureMask | FocusChangeMask | diff --git a/Source/Engine/Platform/UWP/UWPWindow.h b/Source/Engine/Platform/UWP/UWPWindow.h index e687ba32a..f73a046dc 100644 --- a/Source/Engine/Platform/UWP/UWPWindow.h +++ b/Source/Engine/Platform/UWP/UWPWindow.h @@ -100,7 +100,6 @@ private: UWPWindowImpl* _impl; - float _dpi, _dpiScale; Vector2 _logicalSize; public: diff --git a/Source/Engine/Platform/Windows/WindowsWindow.cpp b/Source/Engine/Platform/Windows/WindowsWindow.cpp index 74d56d4b9..cec9f6cf1 100644 --- a/Source/Engine/Platform/Windows/WindowsWindow.cpp +++ b/Source/Engine/Platform/Windows/WindowsWindow.cpp @@ -98,7 +98,7 @@ WindowsWindow::WindowsWindow(const CreateWindowSettings& settings) (HINSTANCE)Platform::Instance, nullptr); - _dpi = DefaultDPI; + _dpi = Platform::GetDpi(); const HMODULE user32Dll = LoadLibraryW(L"user32.dll"); if (user32Dll)