summaryrefslogtreecommitdiff
path: root/platform/qt
diff options
context:
space:
mode:
authorBruno de Oliveira Abinader <bruno@mapbox.com>2016-09-23 20:30:37 +0300
committerBruno de Oliveira Abinader <bruno@mapbox.com>2016-09-26 11:47:34 +0200
commit327cb220950c9276695edc32e4d0fa048ece9d81 (patch)
tree2ebf33733c43f6f739b77c024cf59e83eccfd157 /platform/qt
parent3e42a0de9fd79196c3bc1bb3e843f6b242660953 (diff)
downloadqtlocation-mapboxgl-327cb220950c9276695edc32e4d0fa048ece9d81.tar.gz
[Qt] Added 'image' MapParameter type
Diffstat (limited to 'platform/qt')
-rw-r--r--platform/qt/include/qquickmapboxgl.hpp8
-rw-r--r--platform/qt/src/qquickmapboxgl.cpp17
-rw-r--r--platform/qt/src/qquickmapboxglrenderer.cpp5
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);