#ifndef HSQML_CANVAS_H #define HSQML_CANVAS_H #include #include #include "hsqml.h" class HsQMLCanvasBackEnd; class HsQMLGLDelegateImpl; class HsQMLGLDelegate { public: HsQMLGLDelegate(HsQMLGLPaintCb); ~HsQMLGLDelegate(); private: QExplicitlySharedDataPointer mImpl; }; class HsQMLCanvas : public QQuickItem { Q_OBJECT Q_ENUMS(DisplayMode) Q_PROPERTY(DisplayMode displayMode READ displayMode WRITE setDisplayMode NOTIFY displayModeChanged) Q_PROPERTY(qreal canvasWidth READ canvasWidth WRITE setCanvasWidth RESET unsetCanvasWidth NOTIFY canvasWidthChanged) Q_PROPERTY(qreal canvasHeight READ canvasHeight WRITE setCanvasHeight RESET unsetCanvasHeight NOTIFY canvasHeightChanged) public: enum DisplayMode {Above, Below, Inline}; HsQMLCanvas(QQuickItem* = NULL); ~HsQMLCanvas(); private: Q_DISABLE_COPY(HsQMLCanvas); void geometryChanged(const QRectF&, const QRectF&) Q_DECL_OVERRIDE; void detachBackEnd(); DisplayMode displayMode() const; void setDisplayMode(DisplayMode); qreal canvasWidth() const; void setCanvasWidth(qreal, bool = true); void unsetCanvasWidth(); qreal canvasHeight() const; void setCanvasHeight(qreal, bool = true); void unsetCanvasHeight(); Q_SIGNAL void displayModeChanged(); Q_SIGNAL void canvasWidthChanged(); Q_SIGNAL void canvasHeightChanged(); Q_SLOT void doWindowChanged(QQuickWindow*); Q_SLOT void doPreSynchronise(); QQuickWindow* mWindow; HsQMLCanvasBackEnd* mBackEnd; DisplayMode mDisplayMode; qreal mCanvasWidth; bool mCanvasWidthSet; qreal mCanvasHeight; bool mCanvasHeightSet; }; class HsQMLGLControl : public QQuickItem { Q_OBJECT public: HsQMLGLControl(QQuickItem* = NULL); private: Q_DISABLE_COPY(HsQMLGLControl); }; #endif //HSQML_CANVAS_H