summaryrefslogtreecommitdiff
path: root/platform/qt/src
diff options
context:
space:
mode:
authorBruno de Oliveira Abinader <bruno@mapbox.com>2016-06-11 13:48:27 +0300
committerBruno de Oliveira Abinader <bruno@mapbox.com>2016-06-20 13:01:59 +0300
commit760a692378a8ae7c9cc87246c10f2fe9a64117bd (patch)
tree9503c6662a5807390700bb948096e82b544ebf19 /platform/qt/src
parent2f8fce7bdb0a60a1fb94a3f5bb9f35adf8795094 (diff)
downloadqtlocation-mapboxgl-760a692378a8ae7c9cc87246c10f2fe9a64117bd.tar.gz
[Qt] Added QMapbox::TransitionOptions to style class functions
Diffstat (limited to 'platform/qt/src')
-rw-r--r--platform/qt/src/qmapboxgl.cpp86
1 files changed, 58 insertions, 28 deletions
diff --git a/platform/qt/src/qmapboxgl.cpp b/platform/qt/src/qmapboxgl.cpp
index 9b1c58b6c4..76b643f40a 100644
--- a/platform/qt/src/qmapboxgl.cpp
+++ b/platform/qt/src/qmapboxgl.cpp
@@ -5,6 +5,7 @@
#include <mbgl/map/camera.hpp>
#include <mbgl/map/map.hpp>
#include <mbgl/style/layers/custom_layer.hpp>
+#include <mbgl/style/transition_options.hpp>
#include <mbgl/sprite/sprite_image.hpp>
#include <mbgl/storage/network_status.hpp>
#include <mbgl/util/constants.hpp>
@@ -73,6 +74,48 @@ namespace {
QThreadStorage<std::shared_ptr<mbgl::util::RunLoop>> loop;
+// Convertion helper functions.
+
+auto fromQMapboxGLShapeAnnotation(const ShapeAnnotation &shapeAnnotation) {
+ const CoordinateSegments &segments = shapeAnnotation.first;
+ const QString &styleLayer = shapeAnnotation.second;
+
+ mbgl::Polygon<double> polygon;
+ polygon.reserve(segments.size());
+
+ for (const Coordinates &coordinates : segments) {
+ mbgl::LinearRing<double> linearRing;
+ linearRing.reserve(coordinates.size());
+
+ for (const Coordinate &coordinate : coordinates) {
+ linearRing.emplace_back(mbgl::Point<double> { coordinate.first, coordinate.second });
+ }
+
+ polygon.push_back(std::move(linearRing));
+ }
+
+ return mbgl::StyleSourcedAnnotation { std::move(polygon), styleLayer.toStdString() };
+}
+
+auto fromQMapboxTransitionOptions(const QMapbox::TransitionOptions &options) {
+ auto convert = [](auto& value) -> mbgl::optional<mbgl::Duration> {
+ if (value.isValid()) {
+ return std::chrono::duration_cast<mbgl::Duration>(mbgl::Milliseconds(value.template value<qint64>()));
+ };
+ return {};
+ };
+ return mbgl::style::TransitionOptions { convert(options.duration), convert(options.delay) };
+}
+
+auto fromQStringList(const QStringList &list)
+{
+ std::vector<std::string> strings(list.size());
+ for (const QString &string : list) {
+ strings.emplace_back(string.toStdString());
+ }
+ return strings;
+}
+
}
QMapboxGLSettings::QMapboxGLSettings()
@@ -345,11 +388,21 @@ void QMapboxGL::addClass(const QString &className)
d_ptr->mapObj->addClass(className.toStdString());
}
+void QMapboxGL::addClass(const QString &className, const QMapbox::TransitionOptions &options)
+{
+ d_ptr->mapObj->addClass(className.toStdString(), fromQMapboxTransitionOptions(options));
+}
+
void QMapboxGL::removeClass(const QString &className)
{
d_ptr->mapObj->removeClass(className.toStdString());
}
+void QMapboxGL::removeClass(const QString &className, const QMapbox::TransitionOptions &options)
+{
+ d_ptr->mapObj->removeClass(className.toStdString(), fromQMapboxTransitionOptions(options));
+}
+
bool QMapboxGL::hasClass(const QString &className) const
{
return d_ptr->mapObj->hasClass(className.toStdString());
@@ -357,14 +410,12 @@ bool QMapboxGL::hasClass(const QString &className) const
void QMapboxGL::setClasses(const QStringList &classNames)
{
- std::vector<std::string> mbglClassNames;
- mbglClassNames.reserve(classNames.size());
-
- for (const QString &className : classNames) {
- mbglClassNames.emplace_back(className.toStdString());
- }
+ d_ptr->mapObj->setClasses(fromQStringList(classNames));
+}
- d_ptr->mapObj->setClasses(mbglClassNames);
+void QMapboxGL::setClasses(const QStringList &classNames, const QMapbox::TransitionOptions &options)
+{
+ d_ptr->mapObj->setClasses(fromQStringList(classNames), fromQMapboxTransitionOptions(options));
}
QStringList QMapboxGL::getClasses() const
@@ -392,27 +443,6 @@ void QMapboxGL::updatePointAnnotation(AnnotationID id, const PointAnnotation &po
d_ptr->mapObj->updateAnnotation(id, fromPointAnnotation(pointAnnotation));
}
-mbgl::Annotation fromQMapboxGLShapeAnnotation(const ShapeAnnotation &shapeAnnotation) {
- const CoordinateSegments &segments = shapeAnnotation.first;
- const QString &styleLayer = shapeAnnotation.second;
-
- mbgl::Polygon<double> polygon;
- polygon.reserve(segments.size());
-
- for (const Coordinates &coordinates : segments) {
- mbgl::LinearRing<double> linearRing;
- linearRing.reserve(coordinates.size());
-
- for (const Coordinate &coordinate : coordinates) {
- linearRing.emplace_back(mbgl::Point<double> { coordinate.first, coordinate.second });
- }
-
- polygon.push_back(std::move(linearRing));
- }
-
- return mbgl::StyleSourcedAnnotation { polygon, styleLayer.toStdString() };
-}
-
AnnotationID QMapboxGL::addShapeAnnotation(const ShapeAnnotation &shapeAnnotation)
{
return d_ptr->mapObj->addAnnotation(fromQMapboxGLShapeAnnotation(shapeAnnotation));