summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel/qhighdpiscaling_p.h
diff options
context:
space:
mode:
authorMorten Johan Sørvig <morten.sorvig@qt.io>2020-05-27 01:03:52 +0200
committerMorten Johan Sørvig <morten.sorvig@qt.io>2020-10-20 07:26:17 +0200
commit73a93981ca6bd641f2c75faf3cdce1fa0711fbb5 (patch)
tree0d7126488353a3dbed374b04372a9e9db38aef76 /src/gui/kernel/qhighdpiscaling_p.h
parentb8f5ed0d5aa52c93e092fa4df7ca2f44df8f03e0 (diff)
QHighDpi: global geometry scaling functions
Add functions for scaling global coordinates: toNativeGlobalPosition() fromNativeGlobalPosition() These correctly handle the cases where a window spans several screens. Change-Id: I268762499cd8d86a3c417342ddaf2fb6dab4dd20 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Diffstat (limited to 'src/gui/kernel/qhighdpiscaling_p.h')
-rw-r--r--src/gui/kernel/qhighdpiscaling_p.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/gui/kernel/qhighdpiscaling_p.h b/src/gui/kernel/qhighdpiscaling_p.h
index 92a9a6929d..c0aac7e646 100644
--- a/src/gui/kernel/qhighdpiscaling_p.h
+++ b/src/gui/kernel/qhighdpiscaling_p.h
@@ -263,6 +263,22 @@ T toNativeLocalPosition(const T &value, const C *context)
return scale(value, QHighDpiScaling::factor(context));
}
+template <typename T, typename C>
+T fromNativeGlobalPosition(const T &value, const C *context)
+{
+ QHighDpiScaling::ScaleAndOrigin so =
+ QHighDpiScaling::scaleAndOrigin(context, position(value, QHighDpiScaling::Point::Native));
+ return scale(value, qreal(1) / so.factor, so.origin);
+}
+
+template <typename T, typename C>
+T toNativeGlobalPosition(const T &value, const C *context)
+{
+ QHighDpiScaling::ScaleAndOrigin so =
+ QHighDpiScaling::scaleAndOrigin(context, position(value, QHighDpiScaling::Point::DeviceIndependent));
+ return scale(value, so.factor, so.origin);
+}
+
template <typename T>
inline T fromNative(const T &value, qreal scaleFactor, QPoint origin = QPoint(0, 0))
{