diff options
author | Anton Kudryavtsev <a.kudryavtsev@netris.ru> | 2016-10-13 14:55:56 +0300 |
---|---|---|
committer | Anton Kudryavtsev <a.kudryavtsev@netris.ru> | 2016-10-18 11:33:13 +0000 |
commit | deb3f13af4ab88ea5193825212fb46313cb14eb9 (patch) | |
tree | 94d1ee029349c81d2958f9dc287e0fcca95c4435 /src/quick/items/context2d/qquickcanvasitem.cpp | |
parent | f04c2c40fd7ee91e5cbff2ca4df0fdc30dfbbcd5 (diff) |
QQuickCanvasItem: optimize mimeToType
Provide early out, if mime is not image.
If mime is image, we can drop reduntant 'image/' prefix
from all strings.
Also we can pass type in lower register to QImage::save(),
so use only lower register in this function to de-duplicate
.rodata strings.
Change-Id: I6365edbe3c24ae096c5b1c23e8707299a8a5d5f3
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/quick/items/context2d/qquickcanvasitem.cpp')
-rw-r--r-- | src/quick/items/context2d/qquickcanvasitem.cpp | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/src/quick/items/context2d/qquickcanvasitem.cpp b/src/quick/items/context2d/qquickcanvasitem.cpp index 368a2b78d1..dcad719ef0 100644 --- a/src/quick/items/context2d/qquickcanvasitem.cpp +++ b/src/quick/items/context2d/qquickcanvasitem.cpp @@ -1097,18 +1097,22 @@ QImage QQuickCanvasItem::toImage(const QRectF& rect) const 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"; + 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; } |