diff options
author | Morten Johan Sørvig <morten.sorvig@qt.io> | 2020-05-27 01:03:52 +0200 |
---|---|---|
committer | Morten Johan Sørvig <morten.sorvig@qt.io> | 2020-10-20 07:26:17 +0200 |
commit | 73a93981ca6bd641f2c75faf3cdce1fa0711fbb5 (patch) | |
tree | 0d7126488353a3dbed374b04372a9e9db38aef76 /src/gui/kernel/qhighdpiscaling_p.h | |
parent | b8f5ed0d5aa52c93e092fa4df7ca2f44df8f03e0 (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.h | 16 |
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)) { |