From a05fec277d0a122e03bb6c7756777729df50b1f2 Mon Sep 17 00:00:00 2001 From: Anton Kudryavtsev Date: Wed, 12 Oct 2016 14:48:35 +0300 Subject: QQuickCanvasItem: use QStringLiteral less QStringLiteral was used to store type of image, but it was needless wrapper, because it always was be converted to char* to pass to QImage::save(), so replace it with char* to save allocations and text size. Also replace QStringLiteral().arg().arg() pattern with QStringBuilder. Again save allocations and text size. Change-Id: I6614e127789a05069da200c263145654a289b309 Reviewed-by: Gunnar Sletta --- src/quick/items/context2d/qquickcanvasitem.cpp | 40 ++++++++++++++------------ 1 file changed, 22 insertions(+), 18 deletions(-) (limited to 'src/quick/items/context2d') diff --git a/src/quick/items/context2d/qquickcanvasitem.cpp b/src/quick/items/context2d/qquickcanvasitem.cpp index 3b2b125c63..368a2b78d1 100644 --- a/src/quick/items/context2d/qquickcanvasitem.cpp +++ b/src/quick/items/context2d/qquickcanvasitem.cpp @@ -1095,6 +1095,23 @@ QImage QQuickCanvasItem::toImage(const QRectF& rect) const return QImage(); } +static const char* mimeToType(const QString &mime) +{ + if (mime == QLatin1String("image/png")) + return "PNG"; + else if (mime == QLatin1String("image/bmp")) + return "BMP"; + else if (mime == QLatin1String("image/jpeg")) + return "JPEG"; + else if (mime == QLatin1String("image/x-portable-pixmap")) + return "PPM"; + else if (mime == QLatin1String("image/tiff")) + return "TIFF"; + else if (mime == QLatin1String("image/xpm")) + return "XPM"; + return nullptr; +} + /*! \qmlmethod string QtQuick::Canvas::toDataURL(string mimeType) @@ -1112,27 +1129,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:,"); } -- cgit v1.2.3