packages feed

hsqml-0.3.1.1: cbits/Canvas.h

#ifndef HSQML_CANVAS_H
#define HSQML_CANVAS_H

#include <QtCore/QExplicitlySharedDataPointer>
#include <QtQuick/QQuickItem>

#include "hsqml.h"

class HsQMLCanvasBackEnd;
class HsQMLGLDelegateImpl;

class HsQMLGLDelegate
{
public:
    HsQMLGLDelegate(HsQMLGLPaintCb);
    ~HsQMLGLDelegate();

private:
    QExplicitlySharedDataPointer<HsQMLGLDelegateImpl> 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