diff options
Diffstat (limited to 'src/quick/items/context2d')
-rw-r--r-- | src/quick/items/context2d/qquickcanvasitem.cpp | 44 | ||||
-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, 50 insertions, 42 deletions
diff --git a/src/quick/items/context2d/qquickcanvasitem.cpp b/src/quick/items/context2d/qquickcanvasitem.cpp index 212148b754..78db92ba8a 100644 --- a/src/quick/items/context2d/qquickcanvasitem.cpp +++ b/src/quick/items/context2d/qquickcanvasitem.cpp @@ -1095,6 +1095,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) @@ -1112,27 +1133,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; |