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,
109 virtual ~QPlatformIntegration() { }
111 virtual bool hasCapability(Capability cap)
const;
113 virtual QPlatformPixmap *createPlatformPixmap(QPlatformPixmap::PixelType type)
const;
114 virtual QPlatformWindow *createPlatformWindow(QWindow *window)
const = 0;
115 virtual QPlatformWindow *createForeignWindow(QWindow *, WId)
const {
return nullptr; }
116 virtual QPlatformBackingStore *createPlatformBackingStore(QWindow *window)
const = 0;
118 virtual QPlatformOpenGLContext *createPlatformOpenGLContext(QOpenGLContext *context)
const;
120 virtual QPlatformSharedGraphicsCache *createPlatformSharedGraphicsCache(
const char *cacheId)
const;
121 virtual QPaintEngine *createImagePaintEngine(QPaintDevice *paintDevice)
const;
124 virtual QAbstractEventDispatcher *createEventDispatcher()
const = 0;
125 virtual void initialize();
126 virtual void destroy();
129 virtual QPlatformFontDatabase *fontDatabase()
const;
130#ifndef QT_NO_CLIPBOARD
131 virtual QPlatformClipboard *clipboard()
const;
133#if QT_CONFIG(draganddrop)
134 virtual QPlatformDrag *drag()
const;
136 virtual QPlatformInputContext *inputContext()
const;
137#if QT_CONFIG(accessibility)
138 virtual QPlatformAccessibility *accessibility()
const;
142 virtual QPlatformNativeInterface *nativeInterface()
const;
144 virtual QPlatformServices *services()
const;
148 KeyboardInputInterval,
149 MouseDoubleClickInterval,
152 KeyboardAutoRepeatRate,
158 PasswordMaskCharacter,
159 SetFocusOnTouchRelease,
161 MousePressAndHoldInterval,
163 ReplayMousePressOutsidePopup,
164 ItemViewActivateItemOnSingleClick,
167 ShowShortcutsInContextMenus,
168 MouseQuickSelectionThreshold,
169 MouseDoubleClickDistance,
171 FlickMaximumVelocity,
176 virtual QVariant styleHint(StyleHint hint)
const;
177 virtual Qt::WindowState defaultWindowState(Qt::WindowFlags)
const;
180 virtual Qt::KeyboardModifiers queryKeyboardModifiers()
const;
181 virtual QList<
int> possibleKeys(
const QKeyEvent *)
const;
182 friend class QPlatformKeyMapper;
184 virtual QPlatformKeyMapper *keyMapper()
const;
186 virtual QStringList themeNames()
const;
187 virtual QPlatformTheme *createPlatformTheme(
const QString &name)
const;
189 virtual QPlatformOffscreenSurface *createPlatformOffscreenSurface(QOffscreenSurface *surface)
const;
191#ifndef QT_NO_SESSIONMANAGER
192 virtual QPlatformSessionManager *createPlatformSessionManager(
const QString &id,
const QString &key)
const;
198 virtual QOpenGLContext::OpenGLModuleType openGLModuleType();
200 virtual void setApplicationIcon(
const QIcon &icon)
const;
201 virtual void setApplicationBadge(qint64 number);
203 virtual void beep()
const;
204 virtual void quit()
const;
206#if QT_CONFIG(vulkan) || defined(Q_QDOC)
207 virtual QPlatformVulkanInstance *createPlatformVulkanInstance(QVulkanInstance *instance)
const;
210 template <
auto func,
typename... Args>
211 auto call(Args... args)
213 using namespace QNativeInterface::Private;
214 return QInterfaceProxy<func>::apply(
this, args...);
218 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)
Combined button and popup list for selecting options.
Q_LOGGING_CATEGORY(lcEventDispatcher, "qt.eventdispatcher")
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
QT_BEGIN_NAMESPACE Q_DECLARE_LOGGING_CATEGORY(lcQIORing)
static R apply(T *obj, Args... args)