diff options
Diffstat (limited to 'src/quick/items/context2d')
-rw-r--r-- | src/quick/items/context2d/qquickcanvasitem.cpp | 60 | ||||
-rw-r--r-- | src/quick/items/context2d/qquickcanvasitem_p.h | 2 | ||||
-rw-r--r-- | src/quick/items/context2d/qquickcontext2d_p.h | 18 | ||||
-rw-r--r-- | src/quick/items/context2d/qquickcontext2dcommandbuffer_p.h | 4 | ||||
-rw-r--r-- | src/quick/items/context2d/qquickcontext2dtexture_p.h | 16 | ||||
-rw-r--r-- | src/quick/items/context2d/qquickcontext2dtile_p.h | 8 |
6 files changed, 58 insertions, 50 deletions
diff --git a/src/quick/items/context2d/qquickcanvasitem.cpp b/src/quick/items/context2d/qquickcanvasitem.cpp index 28e9173bf7..b772ed97d2 100644 --- a/src/quick/items/context2d/qquickcanvasitem.cpp +++ b/src/quick/items/context2d/qquickcanvasitem.cpp @@ -354,7 +354,7 @@ void QQuickCanvasItem::setContextType(const QString &contextType) return; if (d->context) { - qmlInfo(this) << "Canvas already initialized with a different context type"; + qmlWarning(this) << "Canvas already initialized with a different context type"; return; } @@ -517,7 +517,7 @@ void QQuickCanvasItem::setRenderTarget(QQuickCanvasItem::RenderTarget target) Q_D(QQuickCanvasItem); if (d->renderTarget != target) { if (d->context) { - qmlInfo(this) << "Canvas:renderTarget not changeble once context is active."; + qmlWarning(this) << "Canvas:renderTarget not changeble once context is active."; return; } @@ -561,7 +561,7 @@ void QQuickCanvasItem::setRenderStrategy(QQuickCanvasItem::RenderStrategy strate Q_D(QQuickCanvasItem); if (d->renderStrategy != strategy) { if (d->context) { - qmlInfo(this) << "Canvas:renderStrategy not changeable once context is active."; + qmlWarning(this) << "Canvas:renderStrategy not changeable once context is active."; return; } d->renderStrategy = strategy; @@ -839,13 +839,13 @@ void QQuickCanvasItem::getContext(QQmlV4Function *args) QV4::Scope scope(args->v4engine()); QV4::ScopedString str(scope, (*args)[0]); if (!str) { - qmlInfo(this) << "getContext should be called with a string naming the required context type"; + qmlWarning(this) << "getContext should be called with a string naming the required context type"; args->setReturnValue(QV4::Encode::null()); return; } if (!d->available) { - qmlInfo(this) << "Unable to use getContext() at this time, please wait for available: true"; + qmlWarning(this) << "Unable to use getContext() at this time, please wait for available: true"; args->setReturnValue(QV4::Encode::null()); return; } @@ -858,7 +858,7 @@ void QQuickCanvasItem::getContext(QQmlV4Function *args) return; } - qmlInfo(this) << "Canvas already initialized with a different context type"; + qmlWarning(this) << "Canvas already initialized with a different context type"; args->setReturnValue(QV4::Encode::null()); return; } @@ -881,7 +881,7 @@ void QQuickCanvasItem::requestAnimationFrame(QQmlV4Function *args) QV4::Scope scope(args->v4engine()); QV4::ScopedFunctionObject f(scope, (*args)[0]); if (!f) { - qmlInfo(this) << "requestAnimationFrame should be called with an animation callback function"; + qmlWarning(this) << "requestAnimationFrame should be called with an animation callback function"; args->setReturnValue(QV4::Encode::null()); return; } @@ -909,7 +909,7 @@ void QQuickCanvasItem::cancelRequestAnimationFrame(QQmlV4Function *args) QV4::Scope scope(args->v4engine()); QV4::ScopedValue v(scope, (*args)[0]); if (!v->isInteger()) { - qmlInfo(this) << "cancelRequestAnimationFrame should be called with an animation callback id"; + qmlWarning(this) << "cancelRequestAnimationFrame should be called with an animation callback id"; args->setReturnValue(QV4::Encode::null()); return; } @@ -1094,6 +1094,27 @@ QImage QQuickCanvasItem::toImage(const QRectF& rect) const return QImage(); } +static const char* mimeToType(const QString &mime) +{ + const QLatin1String imagePrefix("image/"); + if (!mime.startsWith(imagePrefix)) + return nullptr; + const QStringRef mimeExt = mime.midRef(imagePrefix.size()); + if (mimeExt == QLatin1String("png")) + return "png"; + else if (mimeExt == QLatin1String("bmp")) + return "bmp"; + else if (mimeExt == QLatin1String("jpeg")) + return "jpeg"; + else if (mimeExt == QLatin1String("x-portable-pixmap")) + return "ppm"; + else if (mimeExt == QLatin1String("tiff")) + return "tiff"; + else if (mimeExt == QLatin1String("xpm")) + return "xpm"; + return nullptr; +} + /*! \qmlmethod string QtQuick::Canvas::toDataURL(string mimeType) @@ -1111,27 +1132,14 @@ QString QQuickCanvasItem::toDataURL(const QString& mimeType) const QByteArray ba; QBuffer buffer(&ba); buffer.open(QIODevice::WriteOnly); - QString mime = mimeType.toLower(); - QString type; - if (mime == QLatin1String("image/png")) { - type = QStringLiteral("PNG"); - } else if (mime == QLatin1String("image/bmp")) - type = QStringLiteral("BMP"); - else if (mime == QLatin1String("image/jpeg")) - type = QStringLiteral("JPEG"); - else if (mime == QLatin1String("image/x-portable-pixmap")) - type = QStringLiteral("PPM"); - else if (mime == QLatin1String("image/tiff")) - type = QStringLiteral("TIFF"); - else if (mime == QLatin1String("image/xpm")) - type = QStringLiteral("XPM"); - else + const QString mime = mimeType.toLower(); + const char* type = mimeToType(mime); + if (!type) return QStringLiteral("data:,"); - image.save(&buffer, type.toLatin1()); + image.save(&buffer, type); buffer.close(); - QString dataUrl = QStringLiteral("data:%1;base64,%2"); - return dataUrl.arg(mime).arg(QLatin1String(ba.toBase64().constData())); + return QLatin1String("data:") + mime + QLatin1String(";base64,") + QLatin1String(ba.toBase64().constData()); } return QStringLiteral("data:,"); } diff --git a/src/quick/items/context2d/qquickcanvasitem_p.h b/src/quick/items/context2d/qquickcanvasitem_p.h index 8196debef1..8af84d0e7c 100644 --- a/src/quick/items/context2d/qquickcanvasitem_p.h +++ b/src/quick/items/context2d/qquickcanvasitem_p.h @@ -195,7 +195,7 @@ private: Q_INVOKABLE void delayedCreate(); bool createContext(const QString &contextType); void initializeContext(QQuickCanvasContext *context, const QVariantMap &args = QVariantMap()); - QRect tiledRect(const QRectF &window, const QSize &tileSize); + static QRect tiledRect(const QRectF &window, const QSize &tileSize); bool isPaintConnected(); }; diff --git a/src/quick/items/context2d/qquickcontext2d_p.h b/src/quick/items/context2d/qquickcontext2d_p.h index e897263b6f..334bf08329 100644 --- a/src/quick/items/context2d/qquickcontext2d_p.h +++ b/src/quick/items/context2d/qquickcontext2d_p.h @@ -184,17 +184,17 @@ public: QQuickContext2D(QObject *parent = 0); ~QQuickContext2D(); - QStringList contextNames() const; - void init(QQuickCanvasItem *canvasItem, const QVariantMap &args); - void prepare(const QSize& canvasSize, const QSize& tileSize, const QRect& canvasWindow, const QRect& dirtyRect, bool smooth, bool antialiasing); - void flush(); + QStringList contextNames() const override; + void init(QQuickCanvasItem *canvasItem, const QVariantMap &args) override; + void prepare(const QSize& canvasSize, const QSize& tileSize, const QRect& canvasWindow, const QRect& dirtyRect, bool smooth, bool antialiasing) override; + void flush() override; void sync(); QThread *thread() const { return m_thread; } QQuickContext2DTexture *texture() const; - QImage toImage(const QRectF& bounds); + QImage toImage(const QRectF& bounds) override; - QV4::ReturnedValue v4value() const; - void setV4Engine(QV4::ExecutionEngine *eng); + QV4::ReturnedValue v4value() const override; + void setV4Engine(QV4::ExecutionEngine *eng) override; QQuickCanvasItem* canvas() const { return m_canvas; } QQuickContext2DCommandBuffer* buffer() const { return m_buffer; } @@ -243,8 +243,8 @@ public: QPainterPath createTextGlyphs(qreal x, qreal y, const QString& text); QQmlRefPointer<QQuickCanvasPixmap> createPixmap(const QUrl& url); - QOpenGLContext *glContext() { return m_glContext; } - QSurface *surface() { return m_surface.data(); } + QOpenGLContext *glContext() const { return m_glContext; } + QSurface *surface() const { return m_surface.data(); } void setGrabbedImage(const QImage& grab); State state; diff --git a/src/quick/items/context2d/qquickcontext2dcommandbuffer_p.h b/src/quick/items/context2d/qquickcontext2dcommandbuffer_p.h index 3663e49f10..2a1ac7304e 100644 --- a/src/quick/items/context2d/qquickcontext2dcommandbuffer_p.h +++ b/src/quick/items/context2d/qquickcontext2dcommandbuffer_p.h @@ -71,7 +71,7 @@ public: void reset(); void clear(); - inline int size() {return commands.size();} + inline int size() const { return commands.size(); } inline bool isEmpty() const {return commands.isEmpty(); } inline bool hasNext() const {return cmdIdx < commands.size(); } inline QQuickContext2D::PaintCommand takeNextCommand() { return commands.at(cmdIdx++); } @@ -249,7 +249,7 @@ public: void replay(QPainter* painter, QQuickContext2D::State& state, const QVector2D &scaleFactor); private: - QPen makePen(const QQuickContext2D::State& state); + static QPen makePen(const QQuickContext2D::State& state); void setPainterState(QPainter* painter, const QQuickContext2D::State& state, const QPen& pen); int cmdIdx; int intIdx; diff --git a/src/quick/items/context2d/qquickcontext2dtexture_p.h b/src/quick/items/context2d/qquickcontext2dtexture_p.h index 04d7b40ab7..97135816a2 100644 --- a/src/quick/items/context2d/qquickcontext2dtexture_p.h +++ b/src/quick/items/context2d/qquickcontext2dtexture_p.h @@ -124,7 +124,7 @@ public: // Called during sync() on the scene graph thread while GUI is blocked. virtual QSGTexture *textureForNextFrame(QSGTexture *lastFrame, QQuickWindow *window) = 0; - bool event(QEvent *e); + bool event(QEvent *e) override; #if QT_CONFIG(opengl) void initializeOpenGL(QOpenGLContext *gl, QOffscreenSurface *s) { m_gl = gl; @@ -225,17 +225,17 @@ public: QQuickContext2DImageTexture(); ~QQuickContext2DImageTexture(); - virtual QQuickCanvasItem::RenderTarget renderTarget() const; + QQuickCanvasItem::RenderTarget renderTarget() const override; - virtual QQuickContext2DTile* createTile() const; - virtual QPaintDevice* beginPainting(); - virtual void endPainting(); - virtual void compositeTile(QQuickContext2DTile* tile); + QQuickContext2DTile* createTile() const override; + QPaintDevice* beginPainting() override; + void endPainting() override; + void compositeTile(QQuickContext2DTile* tile) override; - virtual QSGTexture *textureForNextFrame(QSGTexture *lastFrame, QQuickWindow *window); + QSGTexture *textureForNextFrame(QSGTexture *lastFrame, QQuickWindow *window) override; public Q_SLOTS: - virtual void grabImage(const QRectF& region = QRectF()); + void grabImage(const QRectF& region = QRectF()) override; private: QImage m_image; diff --git a/src/quick/items/context2d/qquickcontext2dtile_p.h b/src/quick/items/context2d/qquickcontext2dtile_p.h index e7eed7b086..d5255edcfc 100644 --- a/src/quick/items/context2d/qquickcontext2dtile_p.h +++ b/src/quick/items/context2d/qquickcontext2dtile_p.h @@ -93,12 +93,12 @@ class QQuickContext2DFBOTile : public QQuickContext2DTile public: QQuickContext2DFBOTile(); ~QQuickContext2DFBOTile(); - virtual void setRect(const QRect& r); + virtual void setRect(const QRect& r) override; QOpenGLFramebufferObject* fbo() const {return m_fbo;} - void drawFinished(); + void drawFinished() override; protected: - void aboutToDraw(); + void aboutToDraw() override; private: @@ -110,7 +110,7 @@ class QQuickContext2DImageTile : public QQuickContext2DTile public: QQuickContext2DImageTile(); ~QQuickContext2DImageTile(); - void setRect(const QRect& r); + void setRect(const QRect& r) override; const QImage& image() const {return m_image;} private: QImage m_image; |