aboutsummaryrefslogtreecommitdiffstats
path: root/src/declarative/items/context2d/qsgcanvasitem_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/declarative/items/context2d/qsgcanvasitem_p.h')
-rw-r--r--src/declarative/items/context2d/qsgcanvasitem_p.h91
1 files changed, 69 insertions, 22 deletions
diff --git a/src/declarative/items/context2d/qsgcanvasitem_p.h b/src/declarative/items/context2d/qsgcanvasitem_p.h
index 9a6ccc27ed..565b894a7c 100644
--- a/src/declarative/items/context2d/qsgcanvasitem_p.h
+++ b/src/declarative/items/context2d/qsgcanvasitem_p.h
@@ -42,14 +42,10 @@
#ifndef QSGCANVASITEM_P_H
#define QSGCANVASITEM_P_H
-#include "qsgpainteditem.h"
+#include "qsgitem.h"
#include <private/qv8engine_p.h>
-#define QSGCANVASITEM_DEBUG //enable this for just DEBUG purpose!
-#ifdef QSGCANVASITEM_DEBUG
-#include <QElapsedTimer>
-#endif
QT_BEGIN_HEADER
@@ -58,41 +54,92 @@ QT_BEGIN_NAMESPACE
QT_MODULE(Declarative)
class QSGContext2D;
class QSGCanvasItemPrivate;
-class QSGCanvasItem : public QSGPaintedItem
+class QSGCanvasItem : public QSGItem
{
Q_OBJECT
- Q_PROPERTY(QPointF canvasPos READ canvasPos FINAL)
- Q_PROPERTY(qreal canvasX READ canvasX WRITE setCanvasX NOTIFY canvasXChanged FINAL)
- Q_PROPERTY(qreal canvasY READ canvasY WRITE setCanvasY NOTIFY canvasYChanged FINAL)
+ Q_ENUMS(RenderTarget)
+ Q_ENUMS(ImageFilterMode)
+
+ Q_PROPERTY(QSizeF canvasSize READ canvasSize WRITE setCanvasSize NOTIFY canvasSizeChanged)
+ Q_PROPERTY(QSize tileSize READ tileSize WRITE setTileSize NOTIFY tileSizeChanged)
+ Q_PROPERTY(QRectF canvasWindow READ canvasWindow WRITE setCanvasWindow NOTIFY canvasWindowChanged)
+ Q_PROPERTY(bool threadRendering READ threadRendering WRITE setThreadRendering NOTIFY threadRenderingChanged)
+ Q_PROPERTY(RenderTarget renderTarget READ renderTarget WRITE setRenderTarget NOTIFY renderTargetChanged)
public:
+ enum RenderTarget {
+ Image,
+ FramebufferObject
+ };
+
+ enum ImageFilterMode {
+ Threshold,
+ GrayScale,
+ Brightness,
+ Invert,
+ Blur,
+ Opaque,
+ Convolute
+ };
+
QSGCanvasItem(QSGItem *parent = 0);
~QSGCanvasItem();
- void setCanvasX(qreal x);
- void setCanvasY(qreal y);
- qreal canvasX() const;
- qreal canvasY() const;
- QPointF canvasPos() const;
+
+ QSizeF canvasSize() const;
+ void setCanvasSize(const QSizeF &);
+
+ QSize tileSize() const;
+ void setTileSize(const QSize &);
+
+ QRectF canvasWindow() const;
+ void setCanvasWindow(const QRectF& rect);
+
+ bool threadRendering() const;
+ void setThreadRendering(bool theadRendering);
+
+ RenderTarget renderTarget() const;
+ void setRenderTarget(RenderTarget target);
+
+ QSGContext2D* context() const;
+ QImage toImage(const QRectF& region = QRectF()) const;
+
+ QImage loadedImage(const QUrl& url);
Q_SIGNALS:
- void painted();
void paint(QDeclarativeV8Handle context, const QRect &region);
- void canvasXChanged();
- void canvasYChanged();
+ void painted();
+ void canvasSizeChanged();
+ void tileSizeChanged();
+ void viewpointChanged();
+ void threadRenderingChanged();
+ void textureChanged();
+ void canvasWindowChanged();
+ void renderTargetChanged();
+ void imageLoaded();
public Q_SLOTS:
QString toDataURL(const QString& type = QLatin1String("image/png")) const;
QDeclarativeV8Handle getContext(const QString & = QLatin1String("2d"));
- void requestPaint(const QRect& region = QRect());
-
+ void markDirty(const QRectF& region);
+ void requestPaint() {markDirty(canvasWindow());}
// Save current canvas to disk
bool save(const QString& filename) const;
-
+ void loadImage(const QUrl& url);
+ void unloadImage(const QUrl& url);
+ bool isImageLoaded(const QUrl& url) const;
+ bool isImageLoading(const QUrl& url) const;
+ bool isImageError(const QUrl& url) const;
+private Q_SLOTS:
+ void _doPainting(const QRectF& region);
protected:
- void updatePolish();
- void paint(QPainter *painter);
virtual void componentComplete();
+ virtual QSGNode *updatePaintNode(QSGNode *, UpdatePaintNodeData *);
+ virtual void geometryChanged(const QRectF &newGeometry,
+ const QRectF &oldGeometry);
+ virtual void updatePolish();
private:
void createContext();
+ void createTexture();
Q_DECLARE_PRIVATE(QSGCanvasItem)
friend class QSGContext2D;
+ friend class QSGContext2DTexture;
};
QT_END_NAMESPACE