40 #ifndef QHIGHDPISCALING_P_H
41 #define QHIGHDPISCALING_P_H
54 #include <QtGui/private/qtguiglobal_p.h>
55 #include <QtCore/qlist.h>
56 #include <QtCore/qloggingcategory.h>
57 #include <QtCore/qmargins.h>
58 #include <QtCore/qmath.h>
59 #include <QtCore/qrect.h>
60 #include <QtGui/qregion.h>
61 #include <QtGui/qscreen.h>
62 #include <QtGui/qvector2d.h>
63 #include <QtGui/qwindow.h>
73 #ifndef QT_NO_HIGHDPISCALING
83 Q_ENUM(DpiAdjustmentPolicy)
92 static
void initHighDpiScaling();
93 static
void updateHighDpiScaling();
121 return scaleAndOrigin(
context).factor;
127 static qreal roundScaleFactor(
qreal rawFactor);
130 struct ScreenFactor {
143 static qreal m_factor;
144 static bool m_active;
145 static bool m_usePlatformPluginDpi;
146 static bool m_platformPluginDpiScalingActive;
147 static bool m_globalScalingActive;
148 static bool m_screenFactorSet;
149 static bool m_usePhysicalDpi;
151 static DpiAdjustmentPolicy m_dpiAdjustmentPolicy;
159 return value * scaleFactor;
164 return value * scaleFactor;
169 return value * scaleFactor;
174 return value * float(scaleFactor);
179 return (
pos - origin) * scaleFactor + origin;
184 return (
pos - origin) * scaleFactor + origin;
224 return scaled.translated(origin);
227 template <
typename T>
244 template <
typename T,
typename C>
251 template <
typename T,
typename C>
258 template <
typename T,
typename C>
264 template <
typename T,
typename C>
270 template <
typename T,
typename C>
278 template <
typename T,
typename C>
286 template <
typename T,
typename C>
294 template <
typename T,
typename C>
302 template <
typename T>
308 template <
typename T>
354 static inline void initHighDpiScaling() {}
355 static inline void updateHighDpiScaling() {}
356 static inline void setGlobalFactor(
qreal) {}
359 struct ScaleAndOrigin
364 static ScaleAndOrigin scaleAndOrigin(
const QPlatformScreen *platformScreen,
QPoint *nativePosition =
nullptr);
365 static ScaleAndOrigin scaleAndOrigin(
const QScreen *
screen,
QPoint *nativePosition =
nullptr);
366 static ScaleAndOrigin scaleAndOrigin(
const QWindow *platformScreen,
QPoint *nativePosition =
nullptr);
368 static inline bool isActive() {
return false; }
382 template <
typename T>
inline
384 template <
typename T>
inline
387 template <
typename T>
inline
389 template <
typename T>
inline
391 template <
typename T,
typename C>
inline
393 template <
typename T,
typename C>
inline
395 template <
typename T,
typename C>
inline
397 template <
typename T,
typename C>
inline
400 template <
typename T>
inline
402 template <
typename T>
inline
404 template <
typename T>
inline
407 template <
typename T>
inline
410 template <
typename T,
typename U>
inline
412 template <
typename T,
typename U>
inline
static qreal factor(C *context)
static ScaleAndOrigin scaleAndOrigin(const QPlatformScreen *platformScreen, Point position=Point{ Point::Invalid, QPoint() })
The QMargins class defines the four margins of a rectangle.
constexpr int bottom() const noexcept
constexpr int left() const noexcept
constexpr int right() const noexcept
constexpr int top() const noexcept
The QPointF class defines a point in the plane using floating point precision.
constexpr QPoint toPoint() const
The QPoint class defines a point in the plane using integer precision.
The QRectF class defines a finite rectangle in the plane using floating point precision.
QRect toAlignedRect() const noexcept
The QRect class defines a rectangle in the plane using integer precision.
constexpr QPoint topLeft() const noexcept
constexpr QSize size() const noexcept
The QRegion class specifies a clip region for a painter.
QRegion translated(int dx, int dy) const
The QScreen class is used to query screen properties. \inmodule QtGui.
The QSizeF class defines the size of a two-dimensional object using floating point precision.
The QSize class defines the size of a two-dimensional object using integer point precision.
The QString class provides a Unicode character string.
The QStringView class provides a unified view on UTF-16 strings with a read-only subset of the QStrin...
The QVector2D class represents a vector or vertex in 2D space.
The QWindow class represents a window in the underlying windowing system.
auto it unsigned count const
T toNativePixels(const T &value, const C *context)
QHighDpiScaling::Point position(T, QHighDpiScaling::Point::Kind)
T toNativeLocalPosition(const T &value, const C *context)
T toNativeGlobalPosition(const T &value, const C *context)
QHighDpiScaling::Point position(QRectF rect, QHighDpiScaling::Point::Kind kind)
T fromNativeLocalPosition(const T &value, const C *context)
T fromNativeGlobalPosition(const T &value, const C *context)
T toNative(const T &value, qreal scaleFactor, QPoint origin=QPoint(0, 0))
QRect fromNativeScreenGeometry(const QRect &nativeScreenGeometry, const QScreen *screen)
QRegion fromNativeLocalExposedRegion(const QRegion &pixelRegion, const QWindow *window)
QRegion fromNativeLocalRegion(const QRegion &pixelRegion, const QWindow *window)
qreal scale(qreal value, qreal scaleFactor, QPointF=QPointF(0, 0))
T fromNativePixels(const T &value, const C *context)
QRegion toNativeLocalRegion(const QRegion &pointRegion, const QWindow *window)
T fromNative(const T &value, qreal scaleFactor, QPoint origin=QPoint(0, 0))
T toNativeWindowGeometry(const T &value, const C *context)
T fromNativeWindowGeometry(const T &value, const C *context)
std::pair< T1, T2 > QPair
EGLOutputLayerEXT EGLint EGLAttrib value
int qRound(qfloat16 d) noexcept
QT_END_INCLUDE_NAMESPACE typedef double qreal
QPair< qreal, qreal > QDpi
QT_BEGIN_NAMESPACE Q_DECLARE_LOGGING_CATEGORY(lcHighDpi)
GLenum GLenum GLenum GLenum GLenum scale
QImage scaled(const QImage &image)
[0]