123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- #ifndef QQUICKFRAMEBUFFEROBJECT_H
- #define QQUICKFRAMEBUFFEROBJECT_H
- #include <QtQuick/QQuickItem>
- QT_BEGIN_NAMESPACE
- class QOpenGLFramebufferObject;
- class QQuickFramebufferObjectPrivate;
- class QSGFramebufferObjectNode;
- class Q_QUICK_EXPORT QQuickFramebufferObject : public QQuickItem
- {
- Q_OBJECT
- Q_DECLARE_PRIVATE(QQuickFramebufferObject)
- Q_PROPERTY(bool textureFollowsItemSize READ textureFollowsItemSize WRITE setTextureFollowsItemSize NOTIFY textureFollowsItemSizeChanged)
- Q_PROPERTY(bool mirrorVertically READ mirrorVertically WRITE setMirrorVertically NOTIFY mirrorVerticallyChanged)
- public:
- class Q_QUICK_EXPORT Renderer {
- protected:
- Renderer();
- virtual ~Renderer();
- virtual void render() = 0;
- virtual QOpenGLFramebufferObject *createFramebufferObject(const QSize &size);
- virtual void synchronize(QQuickFramebufferObject *);
- QOpenGLFramebufferObject *framebufferObject() const;
- void update();
- void invalidateFramebufferObject();
- private:
- friend class QSGFramebufferObjectNode;
- friend class QQuickFramebufferObject;
- void *data;
- };
- QQuickFramebufferObject(QQuickItem *parent = Q_NULLPTR);
- bool textureFollowsItemSize() const;
- void setTextureFollowsItemSize(bool follows);
- bool mirrorVertically() const;
- void setMirrorVertically(bool enable);
- virtual Renderer *createRenderer() const = 0;
- bool isTextureProvider() const Q_DECL_OVERRIDE;
- QSGTextureProvider *textureProvider() const Q_DECL_OVERRIDE;
- void releaseResources() Q_DECL_OVERRIDE;
- protected:
- void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) Q_DECL_OVERRIDE;
- protected:
- QSGNode *updatePaintNode(QSGNode *, UpdatePaintNodeData *) Q_DECL_OVERRIDE;
- Q_SIGNALS:
- void textureFollowsItemSizeChanged(bool);
- void mirrorVerticallyChanged(bool);
- private Q_SLOTS:
- void invalidateSceneGraph();
- };
- QT_END_NAMESPACE
- #endif
|