summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/winrt/qwinrtscreen.h
diff options
context:
space:
mode:
authorAndrew Knight <andrew.knight@digia.com>2014-05-22 08:54:14 +0300
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-05-22 07:59:49 +0200
commiteea02ff10da0ff6bba665df560c5404477b9f550 (patch)
tree4222b91ae33f9ce1337ec276951d468d9cecf563 /src/plugins/platforms/winrt/qwinrtscreen.h
parentc32295eb8008c01b422fc04839b22e914786704f (diff)
WinRT: Support High-DPI
Previously, the backing store and default framebuffer were created with the logical screen resolution (in device-independent pixels), not the the physical screen resolution. This lead to blurry text on high-DPI devices. This change fixes this by creating those at full size, and setting the device pixel ratio appropriately. Windows are still reported in device-independent pixels, but text and images are now rendered sharply for Qt Quick applications. As QPainter does not support non-integer scaling, the backing store is still drawn in DIPs and scaled by OpenGL. Task-number: QTBUG-38464 Change-Id: I7377d4c734126825d670b8ebb65fd0dd1ef705f2 Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
Diffstat (limited to 'src/plugins/platforms/winrt/qwinrtscreen.h')
-rw-r--r--src/plugins/platforms/winrt/qwinrtscreen.h22
1 files changed, 20 insertions, 2 deletions
diff --git a/src/plugins/platforms/winrt/qwinrtscreen.h b/src/plugins/platforms/winrt/qwinrtscreen.h
index 753d89541c..d39683a960 100644
--- a/src/plugins/platforms/winrt/qwinrtscreen.h
+++ b/src/plugins/platforms/winrt/qwinrtscreen.h
@@ -78,6 +78,8 @@ namespace ABI {
namespace Graphics {
namespace Display {
struct IDisplayPropertiesStatics;
+ struct IDisplayInformationStatics;
+ struct IDisplayInformation;
}
}
#ifdef Q_OS_WINPHONE
@@ -109,6 +111,9 @@ public:
int depth() const;
QImage::Format format() const;
QSurfaceFormat surfaceFormat() const;
+ QSizeF physicalSize() const Q_DECL_OVERRIDE;
+ QDpi logicalDpi() const Q_DECL_OVERRIDE;
+ qreal devicePixelRatio() const Q_DECL_OVERRIDE;
QWinRTInputContext *inputContext() const;
QPlatformCursor *cursor() const;
Qt::KeyboardModifiers keyboardModifiers() const;
@@ -150,7 +155,13 @@ private:
HRESULT onVisibilityChanged(ABI::Windows::UI::Core::ICoreWindow *, ABI::Windows::UI::Core::IVisibilityChangedEventArgs *args);
HRESULT onAutomationProviderRequested(ABI::Windows::UI::Core::ICoreWindow *, ABI::Windows::UI::Core::IAutomationProviderRequestedEventArgs *args);
+#if _MSC_VER<=1700
HRESULT onOrientationChanged(IInspectable *);
+ HRESULT onDpiChanged(IInspectable *);
+#else
+ HRESULT onOrientationChanged(ABI::Windows::Graphics::Display::IDisplayInformation *, IInspectable *);
+ HRESULT onDpiChanged(ABI::Windows::Graphics::Display::IDisplayInformation *, IInspectable *);
+#endif
#ifdef Q_OS_WINPHONE
HRESULT onBackButtonPressed(IInspectable *, ABI::Windows::Phone::UI::Input::IBackPressedEventArgs *args);
@@ -160,9 +171,10 @@ private:
ABI::Windows::UI::ViewManagement::IApplicationViewStatics *m_applicationView;
ABI::Windows::ApplicationModel::Core::ICoreApplication *m_application;
- QRect m_geometry;
+ QRectF m_geometry;
QImage::Format m_format;
QSurfaceFormat m_surfaceFormat;
+ qreal m_dpi;
int m_depth;
QWinRTInputContext *m_inputContext;
QWinRTCursor *m_cursor;
@@ -171,7 +183,13 @@ private:
EGLDisplay m_eglDisplay;
EGLSurface m_eglSurface;
- ABI::Windows::Graphics::Display::IDisplayPropertiesStatics *m_displayProperties;
+#if _MSC_VER<=1700
+ ABI::Windows::Graphics::Display::IDisplayPropertiesStatics *m_displayInformation;
+#else
+ ABI::Windows::Graphics::Display::IDisplayInformationStatics *m_displayInformationFactory;
+ ABI::Windows::Graphics::Display::IDisplayInformation *m_displayInformation;
+#endif
+ qreal m_devicePixelRatio;
Qt::ScreenOrientation m_nativeOrientation;
Qt::ScreenOrientation m_orientation;