diff options
author | Paul Olav Tvete <paul.tvete@theqtcompany.com> | 2015-12-02 14:00:44 +0100 |
---|---|---|
committer | Paul Olav Tvete <paul.tvete@theqtcompany.com> | 2015-12-02 14:01:08 +0100 |
commit | 05bf419b206f3cd078364cf67af2df4e4d1477c0 (patch) | |
tree | c942e884e8f75a29bd9f281c993fbc85a0b832ed /examples/wayland/qwindow-compositor/compositorwindow.h | |
parent | dd5e1ffd3e9e379574325193c8546d453c11303e (diff) | |
parent | 3698b116a1973146b76319673cdb6787f13f2de6 (diff) |
Merge branch 'wip-compositor-api' into dev
This introduces the new compositor API, removing the
old API (which was never officially supported).
Change-Id: I1dc01f0fb4edc749e34ed8356e56ad87d7d64913
Diffstat (limited to 'examples/wayland/qwindow-compositor/compositorwindow.h')
-rw-r--r-- | examples/wayland/qwindow-compositor/compositorwindow.h | 59 |
1 files changed, 48 insertions, 11 deletions
diff --git a/examples/wayland/qwindow-compositor/compositorwindow.h b/examples/wayland/qwindow-compositor/compositorwindow.h index 24c50c535..720db5bc7 100644 --- a/examples/wayland/qwindow-compositor/compositorwindow.h +++ b/examples/wayland/qwindow-compositor/compositorwindow.h @@ -41,24 +41,61 @@ #ifndef COMPOSITORWINDOW_H #define COMPOSITORWINDOW_H -#include <QWindow> -#include <QOpenGLContext> -#include <QSurfaceFormat> +#include <QOpenGLWindow> +#include <QPointer> +#include <QtGui/private/qopengltextureblitter_p.h> -class CompositorWindow : public QWindow +QT_BEGIN_NAMESPACE + +class WindowCompositor; +class WindowCompositorView; +class QOpenGLTexture; + +class CompositorWindow : public QOpenGLWindow { public: - CompositorWindow(const QSurfaceFormat &format, const QRect &geometry); - QOpenGLContext* context() { return m_context; } - bool makeCurrent() { return m_context->makeCurrent(this); } - void swapBuffers() { m_context->swapBuffers(this); } + CompositorWindow(); + + void setCompositor(WindowCompositor *comp); protected: - void touchEvent(QTouchEvent *event); + void initializeGL() Q_DECL_OVERRIDE; + void paintGL() Q_DECL_OVERRIDE; + + void mousePressEvent(QMouseEvent *e) Q_DECL_OVERRIDE; + void mouseReleaseEvent(QMouseEvent *e) Q_DECL_OVERRIDE; + void mouseMoveEvent(QMouseEvent *e) Q_DECL_OVERRIDE; + + void keyPressEvent(QKeyEvent *e) Q_DECL_OVERRIDE; + void keyReleaseEvent(QKeyEvent *e) Q_DECL_OVERRIDE; + +private slots: + void startMove(); + void startResize(int edge); + void startDrag(WindowCompositorView *dragIcon); + void setFrameOffset(const QPoint &offset); private: - QOpenGLContext *m_context; - QSurfaceFormat m_format; + enum GrabState { NoGrab, MoveGrab, ResizeGrab, DragGrab }; + + WindowCompositorView *viewAt(const QPointF &point); + bool mouseGrab() const { return m_grabState != NoGrab ;} + void drawBackground(); + void sendMouseEvent(QMouseEvent *e, WindowCompositorView *target); + + QOpenGLTextureBlitter m_textureBlitter; + QSize m_backgroundImageSize; + QOpenGLTexture *m_backgroundTexture; + WindowCompositor *m_compositor; + QPointer<WindowCompositorView> m_mouseView; + GrabState m_grabState; + QSize m_initialSize; + int m_resizeEdge; + QPointF m_mouseOffset; + QPointF m_initialMousePos; + WindowCompositorView *m_dragIconView; }; +QT_END_NAMESPACE + #endif // COMPOSITORWINDOW_H |