From 59d279b68904bbff0b23012cff327ad69abdb8f0 Mon Sep 17 00:00:00 2001 From: Bruno de Oliveira Abinader Date: Tue, 7 Feb 2017 14:58:55 +0200 Subject: [Qt] Moved GeoJSON-related conversion functions to qt_geojson.hpp --- platform/qt/src/qmapboxgl.cpp | 76 +++++++++------------------------------ platform/qt/src/qt_conversion.hpp | 2 ++ platform/qt/src/qt_geojson.hpp | 47 ++++++++++++++++++++++++ 3 files changed, 66 insertions(+), 59 deletions(-) diff --git a/platform/qt/src/qmapboxgl.cpp b/platform/qt/src/qmapboxgl.cpp index 61a71cf24d..eb908b6083 100644 --- a/platform/qt/src/qmapboxgl.cpp +++ b/platform/qt/src/qmapboxgl.cpp @@ -836,68 +836,26 @@ void QMapboxGL::setTransitionOptions(qint64 duration, qint64 delay) { d_ptr->mapObj->setTransitionOptions(mbgl::style::TransitionOptions{ convert(duration), convert(delay) }); } -mbgl::ShapeAnnotationGeometry asMapboxGLGeometry(const QMapbox::ShapeAnnotationGeometry &geometry) { - auto asMapboxGLLineString = [&](const QMapbox::Coordinates &lineString) { - mbgl::LineString mbglLineString; - mbglLineString.reserve(lineString.size()); - for (const auto &coordinate : lineString) { - mbglLineString.emplace_back(mbgl::Point { coordinate.second, coordinate.first }); - } - return mbglLineString; - }; - - auto asMapboxGLMultiLineString = [&](const QMapbox::CoordinatesCollection &multiLineString) { - mbgl::MultiLineString mbglMultiLineString; - mbglMultiLineString.reserve(multiLineString.size()); - for (const auto &lineString : multiLineString) { - mbglMultiLineString.emplace_back(std::forward>(asMapboxGLLineString(lineString))); - } - return mbglMultiLineString; - }; - - auto asMapboxGLPolygon = [&](const QMapbox::CoordinatesCollection &polygon) { - mbgl::Polygon mbglPolygon; - mbglPolygon.reserve(polygon.size()); - for (const auto &linearRing : polygon) { - mbgl::LinearRing mbglLinearRing; - mbglLinearRing.reserve(linearRing.size()); - for (const auto &coordinate: linearRing) { - mbglLinearRing.emplace_back(mbgl::Point { coordinate.second, coordinate.first }); - } - mbglPolygon.emplace_back(std::move(mbglLinearRing)); - } - return mbglPolygon; - }; - - auto asMapboxGLMultiPolygon = [&](const QMapbox::CoordinatesCollections &multiPolygon) { - mbgl::MultiPolygon mbglMultiPolygon; - mbglMultiPolygon.reserve(multiPolygon.size()); - for (const auto &polygon : multiPolygon) { - mbglMultiPolygon.emplace_back(std::forward>(asMapboxGLPolygon(polygon))); +mbgl::Annotation asMapboxGLAnnotation(const QMapbox::Annotation & annotation) { + auto asMapboxGLGeometry = [](const QMapbox::ShapeAnnotationGeometry &geometry) { + mbgl::ShapeAnnotationGeometry result; + switch (geometry.type) { + case QMapbox::ShapeAnnotationGeometry::LineStringType: + result = { asMapboxGLLineString(geometry.geometry.first().first()) }; + break; + case QMapbox::ShapeAnnotationGeometry::PolygonType: + result = { asMapboxGLPolygon(geometry.geometry.first()) }; + break; + case QMapbox::ShapeAnnotationGeometry::MultiLineStringType: + result = { asMapboxGLMultiLineString(geometry.geometry.first()) }; + break; + case QMapbox::ShapeAnnotationGeometry::MultiPolygonType: + result = { asMapboxGLMultiPolygon(geometry.geometry) }; + break; } - return mbglMultiPolygon; + return result; }; - mbgl::ShapeAnnotationGeometry result; - switch (geometry.type) { - case QMapbox::ShapeAnnotationGeometry::LineStringType: - result = { asMapboxGLLineString(geometry.geometry.first().first()) }; - break; - case QMapbox::ShapeAnnotationGeometry::PolygonType: - result = { asMapboxGLPolygon(geometry.geometry.first()) }; - break; - case QMapbox::ShapeAnnotationGeometry::MultiLineStringType: - result = { asMapboxGLMultiLineString(geometry.geometry.first()) }; - break; - case QMapbox::ShapeAnnotationGeometry::MultiPolygonType: - result = { asMapboxGLMultiPolygon(geometry.geometry) }; - break; - } - - return result; -} - -mbgl::Annotation asMapboxGLAnnotation(const QMapbox::Annotation & annotation) { if (annotation.canConvert()) { QMapbox::SymbolAnnotation symbolAnnotation = annotation.value(); QMapbox::Coordinate& pair = symbolAnnotation.geometry; diff --git a/platform/qt/src/qt_conversion.hpp b/platform/qt/src/qt_conversion.hpp index e49b6dbe3e..ae05200d66 100644 --- a/platform/qt/src/qt_conversion.hpp +++ b/platform/qt/src/qt_conversion.hpp @@ -4,6 +4,8 @@ #include #include +#include + #include #include diff --git a/platform/qt/src/qt_geojson.hpp b/platform/qt/src/qt_geojson.hpp index 07813623fd..f01db51bf7 100644 --- a/platform/qt/src/qt_geojson.hpp +++ b/platform/qt/src/qt_geojson.hpp @@ -4,12 +4,59 @@ #include #include +#include + #include #include #include #include +namespace QMapbox { + +mbgl::LineString asMapboxGLLineString(const QMapbox::Coordinates &lineString) { + mbgl::LineString mbglLineString; + mbglLineString.reserve(lineString.size()); + for (const auto &coordinate : lineString) { + mbglLineString.emplace_back(mbgl::Point { coordinate.second, coordinate.first }); + } + return mbglLineString; +}; + +mbgl::MultiLineString asMapboxGLMultiLineString(const QMapbox::CoordinatesCollection &multiLineString) { + mbgl::MultiLineString mbglMultiLineString; + mbglMultiLineString.reserve(multiLineString.size()); + for (const auto &lineString : multiLineString) { + mbglMultiLineString.emplace_back(std::forward>(asMapboxGLLineString(lineString))); + } + return mbglMultiLineString; +}; + +mbgl::Polygon asMapboxGLPolygon(const QMapbox::CoordinatesCollection &polygon) { + mbgl::Polygon mbglPolygon; + mbglPolygon.reserve(polygon.size()); + for (const auto &linearRing : polygon) { + mbgl::LinearRing mbglLinearRing; + mbglLinearRing.reserve(linearRing.size()); + for (const auto &coordinate: linearRing) { + mbglLinearRing.emplace_back(mbgl::Point { coordinate.second, coordinate.first }); + } + mbglPolygon.emplace_back(std::move(mbglLinearRing)); + } + return mbglPolygon; +}; + +mbgl::MultiPolygon asMapboxGLMultiPolygon(const QMapbox::CoordinatesCollections &multiPolygon) { + mbgl::MultiPolygon mbglMultiPolygon; + mbglMultiPolygon.reserve(multiPolygon.size()); + for (const auto &polygon : multiPolygon) { + mbglMultiPolygon.emplace_back(std::forward>(asMapboxGLPolygon(polygon))); + } + return mbglMultiPolygon; +}; + +} // namespace QMapbox + namespace mbgl { namespace style { namespace conversion { -- cgit v1.2.1