20#include <qpa/qplatformcursor.h>
21#include <qpa/qplatformscreen.h>
22#include <QtOpenGL/QOpenGLShaderProgram>
23#include <QtGui/QMatrix4x4>
24#include <QtGui/private/qinputdevicemanager_p.h>
26#include <QtCore/qlist.h>
30class QOpenGLShaderProgram;
46 QEglFSCursor *m_cursor;
51struct QEglFSCursorData {
52 QScopedPointer<QOpenGLShaderProgram> program;
55 uint customCursorTexture = 0;
56 uint atlasTexture = 0;
57 qint64 customCursorKey = 0;
60class Q_EGLFS_EXPORT QEglFSCursor :
public QPlatformCursor
64 QEglFSCursor(QPlatformScreen *screen);
68 void changeCursor(QCursor *cursor, QWindow *widget) override;
70 void pointerEvent(
const QMouseEvent &event) override;
71 QPoint pos()
const override;
72 void setPos(
const QPoint &pos) override;
74 QRect cursorRect()
const;
76 void resetResources();
78 void updateMouseStatus();
81 bool event(QEvent *e) override;
83 bool setCurrentCursor(QCursor *cursor);
85 void draw(
const QRectF &rect);
86 void update(
const QRect &rect,
bool allScreens);
87 void createShaderPrograms();
88 void createCursorTexture(uint *texture,
const QImage &image);
89 void initCursorAtlas();
93 Cursor() : shape(Qt::BlankCursor), customCursorPending(
false), customCursorKey(0), useCustomCursor(
false) { }
94 Qt::CursorShape shape;
98 QImage customCursorImage;
100 bool customCursorPending;
101 qint64 customCursorKey;
102 bool useCustomCursor;
107 CursorAtlas() : cursorsPerRow(0), cursorWidth(0), cursorHeight(0) { }
110 int cursorWidth, cursorHeight;
111 QList<QPoint> hotSpots;
116 QEglFSScreen *m_screen;
117 QPlatformScreen *m_activeScreen;
118 QEglFSCursorDeviceListener *m_deviceListener;
119 bool m_updateRequested;
120 QMatrix4x4 m_rotationMatrix;
Combined button and popup list for selecting options.