diff options
author | Bruno de Oliveira Abinader <bruno@mapbox.com> | 2016-09-23 20:30:37 +0300 |
---|---|---|
committer | Bruno de Oliveira Abinader <bruno@mapbox.com> | 2016-09-26 11:47:34 +0200 |
commit | 327cb220950c9276695edc32e4d0fa048ece9d81 (patch) | |
tree | 2ebf33733c43f6f739b77c024cf59e83eccfd157 /platform/qt | |
parent | 3e42a0de9fd79196c3bc1bb3e843f6b242660953 (diff) | |
download | qtlocation-mapboxgl-327cb220950c9276695edc32e4d0fa048ece9d81.tar.gz |
[Qt] Added 'image' MapParameter type
Diffstat (limited to 'platform/qt')
-rw-r--r-- | platform/qt/include/qquickmapboxgl.hpp | 8 | ||||
-rw-r--r-- | platform/qt/src/qquickmapboxgl.cpp | 17 | ||||
-rw-r--r-- | platform/qt/src/qquickmapboxglrenderer.cpp | 5 |
3 files changed, 29 insertions, 1 deletions
diff --git a/platform/qt/include/qquickmapboxgl.hpp b/platform/qt/include/qquickmapboxgl.hpp index 25f3cf6b32..c7634b9ba9 100644 --- a/platform/qt/include/qquickmapboxgl.hpp +++ b/platform/qt/include/qquickmapboxgl.hpp @@ -2,6 +2,7 @@ #define QQUICKMAPBOXGL_H #include <QColor> +#include <QImage> #include <QGeoCoordinate> #include <QGeoServiceProvider> #include <QGeoShape> @@ -132,6 +133,11 @@ private: PitchNeedsSync = 1 << 5, }; + struct Image { + QString name; + QImage sprite; + }; + struct StyleProperty { enum Type { Paint = 0, @@ -146,6 +152,7 @@ private: }; void processMapParameter(QQuickMapboxGLMapParameter *); + bool parseImage(QQuickMapboxGLMapParameter *); bool parseStyle(QQuickMapboxGLMapParameter *); bool parseStyleProperty(QQuickMapboxGLMapParameter *, const QString &name); bool parseStyleLayer(QQuickMapboxGLMapParameter *); @@ -162,6 +169,7 @@ private: QGeoShape m_visibleRegion; QColor m_color; QString m_styleUrl; + QList<Image> m_imageChanges; QList<StyleProperty> m_stylePropertyChanges; QList<QVariantMap> m_layerChanges; QList<QVariantMap> m_sourceChanges; diff --git a/platform/qt/src/qquickmapboxgl.cpp b/platform/qt/src/qquickmapboxgl.cpp index a368ba56fe..9ebe526939 100644 --- a/platform/qt/src/qquickmapboxgl.cpp +++ b/platform/qt/src/qquickmapboxgl.cpp @@ -18,7 +18,7 @@ namespace { static const QRegularExpression s_camelCase {"([a-z0-9])([A-Z])"}; -static const QStringList s_parameterTypes = QStringList() << "style" << "paint" << "layout" << "layer" << "source" << "filter"; +static const QStringList s_parameterTypes = QStringList() << "style" << "paint" << "layout" << "layer" << "source" << "filter" << "image"; } // namespace @@ -251,6 +251,15 @@ void QQuickMapboxGL::onMapChanged(QMapbox::MapChange change) } } +bool QQuickMapboxGL::parseImage(QQuickMapboxGLMapParameter *param) +{ + m_imageChanges << Image { + param->property("name").toString(), + QImage(param->property("sprite").toString()) + }; + return true; +} + bool QQuickMapboxGL::parseStyle(QQuickMapboxGLMapParameter *param) { QString url = param->property("url").toString(); @@ -367,6 +376,9 @@ void QQuickMapboxGL::processMapParameter(QQuickMapboxGLMapParameter *param) case 5: // filter needsUpdate |= parseStyleFilter(param); break; + case 6: // image + needsUpdate |= parseImage(param); + break; } if (needsUpdate) update(); } @@ -405,6 +417,9 @@ void QQuickMapboxGL::onParameterPropertyUpdated(const QString &propertyName) case 5: // filter needsUpdate |= parseStyleFilter(param); break; + case 6: // image + needsUpdate |= parseImage(param); + break; } if (needsUpdate) update(); } diff --git a/platform/qt/src/qquickmapboxglrenderer.cpp b/platform/qt/src/qquickmapboxglrenderer.cpp index 4dc46a7737..44df8f9340 100644 --- a/platform/qt/src/qquickmapboxglrenderer.cpp +++ b/platform/qt/src/qquickmapboxglrenderer.cpp @@ -96,6 +96,11 @@ void QQuickMapboxGLRenderer::synchronize(QQuickFramebufferObject *item) } quickMap->m_filterChanges.clear(); + for (const auto& change : quickMap->m_imageChanges) { + m_map->addImage(change.name, change.sprite); + } + quickMap->m_imageChanges.clear(); + for (const auto& change : quickMap->m_stylePropertyChanges) { if (change.type == QQuickMapboxGL::StyleProperty::Paint) { m_map->setPaintProperty(change.layer, change.property, change.value, change.klass); |