4#ifndef QPLATFORMINTEGRATION_H
5#define QPLATFORMINTEGRATION_H
16#include <QtGui/qtguiglobal.h>
17#include <QtGui/qwindowdefs.h>
18#include <qpa/qplatformscreen.h>
19#include <QtGui/qsurfaceformat.h>
20#include <QtGui/qopenglcontext.h>
27class QPlatformBackingStore;
28class QPlatformFontDatabase;
29class QPlatformClipboard;
30class QPlatformNativeInterface;
32class QPlatformOpenGLContext;
34class QAbstractEventDispatcher;
35class QPlatformInputContext;
36class QPlatformKeyMapper;
37class QPlatformAccessibility;
39class QPlatformDialogHelper;
40class QPlatformSharedGraphicsCache;
41class QPlatformServices;
42class QPlatformSessionManager;
44class QPlatformOffscreenSurface;
45class QOffscreenSurface;
46class QPlatformVulkanInstance;
49namespace QNativeInterface::
Private {
51template <
typename R,
typename I,
auto func,
typename... Args>
55 static R
apply(T *obj, Args... args)
57 if (
auto *iface =
dynamic_cast<I*>(obj))
58 return (iface->*func)(args...);
68template <
typename R,
typename I,
typename...
Args,
R(
I::*
func)(
Args...)
const>
76 Q_DISABLE_COPY_MOVE(QPlatformIntegration)
93#if QT_REMOVAL_QT7_DEPRECATED_SINCE(6
, 11
)
94 RasterGLSurface Q_DECL_ENUMERATOR_DEPRECATED_X(
"This capability is no longer used"),
96 AllGLFunctionsQueryable,
98 SwitchableWidgetComposition,
99 TopStackedNativeChildWindows,
100 OpenGLOnRasterSurface,
101 MaximizeUsingFullscreenGeometry,
104 ScreenWindowGrabbing,
105 BackingStoreStaticContents
108 virtual ~QPlatformIntegration() { }
110 virtual bool hasCapability(Capability cap)
const;
112 virtual QPlatformPixmap *createPlatformPixmap(QPlatformPixmap::PixelType type)
const;
113 virtual QPlatformWindow *createPlatformWindow(QWindow *window)
const = 0;
114 virtual QPlatformWindow *createForeignWindow(QWindow *, WId)
const {
return nullptr; }
115 virtual QPlatformBackingStore *createPlatformBackingStore(QWindow *window)
const = 0;
117 virtual QPlatformOpenGLContext *createPlatformOpenGLContext(QOpenGLContext *context)
const;
119 virtual QPlatformSharedGraphicsCache *createPlatformSharedGraphicsCache(
const char *cacheId)
const;
120 virtual QPaintEngine *createImagePaintEngine(QPaintDevice *paintDevice)
const;
123 virtual QAbstractEventDispatcher *createEventDispatcher()
const = 0;
124 virtual void initialize();
125 virtual void destroy();
128 virtual QPlatformFontDatabase *fontDatabase()
const;
129#ifndef QT_NO_CLIPBOARD
130 virtual QPlatformClipboard *clipboard()
const;
132#if QT_CONFIG(draganddrop)
133 virtual QPlatformDrag *drag()
const;
135 virtual QPlatformInputContext *inputContext()
const;
136#if QT_CONFIG(accessibility)
137 virtual QPlatformAccessibility *accessibility()
const;
141 virtual QPlatformNativeInterface *nativeInterface()
const;
143 virtual QPlatformServices *services()
const;
147 KeyboardInputInterval,
148 MouseDoubleClickInterval,
151 KeyboardAutoRepeatRate,
157 PasswordMaskCharacter,
158 SetFocusOnTouchRelease,
160 MousePressAndHoldInterval,
162 ReplayMousePressOutsidePopup,
163 ItemViewActivateItemOnSingleClick,
166 ShowShortcutsInContextMenus,
167 MouseQuickSelectionThreshold,
168 MouseDoubleClickDistance,
170 FlickMaximumVelocity,
175 virtual QVariant styleHint(StyleHint hint)
const;
176 virtual Qt::WindowState defaultWindowState(Qt::WindowFlags)
const;
179 virtual Qt::KeyboardModifiers queryKeyboardModifiers()
const;
180 virtual QList<
int> possibleKeys(
const QKeyEvent *)
const;
181 friend class QPlatformKeyMapper;
183 virtual QPlatformKeyMapper *keyMapper()
const;
185 virtual QStringList themeNames()
const;
186 virtual QPlatformTheme *createPlatformTheme(
const QString &name)
const;
188 virtual QPlatformOffscreenSurface *createPlatformOffscreenSurface(QOffscreenSurface *surface)
const;
190#ifndef QT_NO_SESSIONMANAGER
191 virtual QPlatformSessionManager *createPlatformSessionManager(
const QString &id,
const QString &key)
const;
197 virtual QOpenGLContext::OpenGLModuleType openGLModuleType();
199 virtual void setApplicationIcon(
const QIcon &icon)
const;
200 virtual void setApplicationBadge(qint64 number);
202 virtual void beep()
const;
203 virtual void quit()
const;
205#if QT_CONFIG(vulkan) || defined(Q_QDOC)
206 virtual QPlatformVulkanInstance *createPlatformVulkanInstance(QVulkanInstance *instance)
const;
209 template <
auto func,
typename... Args>
210 auto call(Args... args)
212 using namespace QNativeInterface::Private;
213 return QInterfaceProxy<func>::apply(
this, args...);
217 QPlatformIntegration() =
default;
Collection of utility functions for UI scaling.
T toNativePixels(const T &value, const C *context)
QHighDpiScaling::Point position(T, QHighDpiScaling::Point::Kind)
QList< T > scale(const QList< T > &list, qreal scaleFactor, QPoint origin=QPoint(0, 0))
T toNativeLocalPosition(const T &value, const C *context)
QSize scale(const QSize &value, qreal scaleFactor, QPointF=QPointF(0, 0))
T toNativeGlobalPosition(const T &value, const C *context)
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)
QRect fromNative(const QRect &rect, const QScreen *screen, const QPoint &screenOrigin)
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)
QHighDpiScaling::Point position(QPoint point, QHighDpiScaling::Point::Kind kind)
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)
Q_LOGGING_CATEGORY(lcEventDispatcher, "qt.eventdispatcher")
QT_BEGIN_NAMESPACE Q_DECLARE_LOGGING_CATEGORY(lcEventDispatcher)
static const char screenFactorsEnvVar[]
static const char dpiAdjustmentPolicyEnvVar[]
static const ScaleFactorRoundingPolicyLookup scaleFactorRoundingPolicyLookup[]
static bool operator==(const EnumLookup< EnumType > &e1, const EnumLookup< EnumType > &e2)
static const char scaleFactorRoundingPolicyEnvVar[]
static std::optional< qreal > qEnvironmentVariableOptionalReal(const char *name)
static Qt::HighDpiScaleFactorRoundingPolicy lookupScaleFactorRoundingPolicy(const QByteArray &v)
static const char enableHighDpiScalingEnvVar[]
static const DpiAdjustmentPolicyLookup dpiAdjustmentPolicyLookup[]
static const char usePhysicalDpiEnvVar[]
static std::optional< QString > qEnvironmentVariableOptionalString(const char *name)
static std::optional< QByteArray > qEnvironmentVariableOptionalByteArray(const char *name)
static QByteArray joinEnumValues(const EnumLookup< EnumType > *i1, const EnumLookup< EnumType > *i2)
static const char scaleFactorEnvVar[]
static const char scaleFactorProperty[]
static QHighDpiScaling::DpiAdjustmentPolicy lookupDpiAdjustmentPolicy(const QByteArray &v)
std::pair< qreal, qreal > QDpi
static R apply(T *obj, Args... args)