Add GetDpiScaleFactor to native window API
-This includes implementations of the API for the Editor and Windows, all other platforms will have a 1.0 scale for now Signed-off-by: nvsickle <nvsickle@amazon.com>
This commit is contained in:
@@ -731,10 +731,12 @@ namespace AzFramework
|
||||
bool Application::IsPrefabSystemEnabled() const
|
||||
{
|
||||
bool value = true;
|
||||
/*
|
||||
if (auto* registry = AZ::SettingsRegistry::Get())
|
||||
{
|
||||
registry->Get(value, ApplicationInternal::s_prefabSystemKey);
|
||||
}
|
||||
*/
|
||||
return value;
|
||||
}
|
||||
|
||||
|
||||
@@ -116,6 +116,11 @@ namespace AzFramework
|
||||
SetFullScreenState(!GetFullScreenState());
|
||||
}
|
||||
|
||||
float NativeWindow::GetDpiScaleFactor() const
|
||||
{
|
||||
return m_pimpl->GetDpiScaleFactor();
|
||||
}
|
||||
|
||||
/*static*/ bool NativeWindow::GetFullScreenStateOfDefaultWindow()
|
||||
{
|
||||
NativeWindowHandle defaultWindowHandle = nullptr;
|
||||
@@ -228,4 +233,10 @@ namespace AzFramework
|
||||
return false;
|
||||
}
|
||||
|
||||
float NativeWindow::Implementation::GetDpiScaleFactor() const
|
||||
{
|
||||
// For platforms that aren't DPI-aware, we simply return a 1.0 ratio for no scaling
|
||||
return 1.0f;
|
||||
}
|
||||
|
||||
} // namespace AzFramework
|
||||
|
||||
@@ -128,6 +128,7 @@ namespace AzFramework
|
||||
void SetFullScreenState(bool fullScreenState) override;
|
||||
bool CanToggleFullScreenState() const override;
|
||||
void ToggleFullScreenState() override;
|
||||
float GetDpiScaleFactor() const override;
|
||||
|
||||
//! Get the full screen state of the default window.
|
||||
//! \return True if the default window is currently in full screen, false otherwise.
|
||||
@@ -169,6 +170,7 @@ namespace AzFramework
|
||||
virtual bool GetFullScreenState() const;
|
||||
virtual void SetFullScreenState(bool fullScreenState);
|
||||
virtual bool CanToggleFullScreenState() const;
|
||||
virtual float GetDpiScaleFactor() const;
|
||||
|
||||
protected:
|
||||
uint32_t m_width = 0;
|
||||
|
||||
@@ -68,6 +68,11 @@ namespace AzFramework
|
||||
|
||||
//! Toggle the full screen state of the window.
|
||||
virtual void ToggleFullScreenState() = 0;
|
||||
|
||||
//! Returns a scalar multiplier representing how dots-per-inch this window has, compared
|
||||
//! to a "standard" value of 96, the default for Windows in a DPI unaware setting. This can
|
||||
//! be used to scale user interface elements to ensure legibility on high density displays.
|
||||
virtual float GetDpiScaleFactor() const = 0;
|
||||
};
|
||||
using WindowRequestBus = AZ::EBus<WindowRequests>;
|
||||
|
||||
@@ -87,6 +92,9 @@ namespace AzFramework
|
||||
//! This is called once when the window is Activated and also called if the user resizes the window.
|
||||
virtual void OnWindowResized(uint32_t width, uint32_t height) { AZ_UNUSED(width); AZ_UNUSED(height); };
|
||||
|
||||
//! This is called if the window's underyling DPI scaling factor changes.
|
||||
virtual void OnDpiScaleFactorChanged(float dpiScaleFactor) { AZ_UNUSED(dpiScaleFactor); }
|
||||
|
||||
//! This is called when the window is deactivated from code or if the user closes the window.
|
||||
virtual void OnWindowClosed() {};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user