From a05698fe0623ffce7ad404a03a12d76b3a410b7a Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Wed, 24 Jun 2015 12:01:43 -0700 Subject: [PATCH] Remove MapData dependency from AnnotationManager --- src/mbgl/map/annotation.cpp | 21 +++++++++------------ src/mbgl/map/annotation.hpp | 11 +++++------ src/mbgl/map/map.cpp | 8 ++++---- 3 files changed, 18 insertions(+), 22 deletions(-) diff --git a/src/mbgl/map/annotation.cpp b/src/mbgl/map/annotation.cpp index c94626459..68491bb98 100644 --- a/src/mbgl/map/annotation.cpp +++ b/src/mbgl/map/annotation.cpp @@ -2,7 +2,6 @@ #include #include #include -#include #include #include #include @@ -83,7 +82,7 @@ AnnotationManager::addAnnotations(const AnnotationType type, const std::vector& segments, const std::vector& styleProperties, const AnnotationsProperties& annotationsProperties, - const MapData& data) { + const uint8_t maxZoom) { std::lock_guard lock(mtx); assert(type != AnnotationType::Any); @@ -101,8 +100,6 @@ AnnotationManager::addAnnotations(const AnnotationType type, std::unordered_set affectedTiles; - const uint8_t maxZoom = data.transform.getMaxZoom(); - for (size_t s = 0; s < segments.size(); ++s) { if (type == AnnotationType::Point) { @@ -351,34 +348,34 @@ AnnotationManager::addTileFeature(const uint32_t annotationID, std::pair, AnnotationIDs> AnnotationManager::addPointAnnotations(const AnnotationSegment& points, const AnnotationsProperties& annotationsProperties, - const MapData& data) { + const uint8_t maxZoom) { return addAnnotations(AnnotationType::Point, {{ points }}, {{ }}, annotationsProperties, - data); + maxZoom); } std::pair, AnnotationIDs> AnnotationManager::addShapeAnnotations(const std::vector& shapes, const std::vector& styleProperties, const AnnotationsProperties& annotationsProperties, - const MapData& data) { + const uint8_t maxZoom) { return addAnnotations(AnnotationType::Shape, shapes, styleProperties, annotationsProperties, - data); + maxZoom); } std::unordered_set AnnotationManager::removeAnnotations(const AnnotationIDs& ids, - const MapData& data) { + const uint8_t maxZoom) { std::lock_guard lock(mtx); std::unordered_set affectedTiles; std::vector z2s; - const uint8_t zoomCount = data.transform.getMaxZoom() + 1; + const uint8_t zoomCount = maxZoom + 1; z2s.reserve(zoomCount); for (uint8_t z = 0; z < zoomCount; ++z) { z2s.emplace_back(1<< z); @@ -450,11 +447,11 @@ const StyleProperties AnnotationManager::getAnnotationStyleProperties(uint32_t a } AnnotationIDs AnnotationManager::getAnnotationsInBounds(const LatLngBounds& queryBounds, - const MapData& data, + const uint8_t maxZoom, const AnnotationType& type) const { std::lock_guard lock(mtx); - const uint8_t z = data.transform.getMaxZoom(); + const uint8_t z = maxZoom; const uint32_t z2 = 1 << z; const vec2 swPoint = projectPoint(queryBounds.sw); const vec2 nePoint = projectPoint(queryBounds.ne); diff --git a/src/mbgl/map/annotation.hpp b/src/mbgl/map/annotation.hpp index 213ff608a..4296fea52 100644 --- a/src/mbgl/map/annotation.hpp +++ b/src/mbgl/map/annotation.hpp @@ -24,7 +24,6 @@ class Annotation; class Map; class LiveTile; class LiveTileFeature; -class MapData; using AnnotationsProperties = std::unordered_map>; @@ -61,16 +60,16 @@ public: std::pair, AnnotationIDs> addPointAnnotations( const AnnotationSegment&, const AnnotationsProperties&, - const MapData&); + const uint8_t maxZoom); std::pair, AnnotationIDs> addShapeAnnotations( const std::vector&, const std::vector&, const AnnotationsProperties&, - const MapData&); - std::unordered_set removeAnnotations(const AnnotationIDs&, const MapData&); + const uint8_t maxZoom); + std::unordered_set removeAnnotations(const AnnotationIDs&, const uint8_t maxZoom); AnnotationIDs getOrderedShapeAnnotations() const { return orderedShapeAnnotations; } const StyleProperties getAnnotationStyleProperties(uint32_t) const; - AnnotationIDs getAnnotationsInBounds(const LatLngBounds&, const MapData&, const AnnotationType& = AnnotationType::Any) const; + AnnotationIDs getAnnotationsInBounds(const LatLngBounds&, const uint8_t maxZoom, const AnnotationType& = AnnotationType::Any) const; LatLngBounds getBoundsForAnnotations(const AnnotationIDs&) const; const LiveTile* getTile(const TileID& id); @@ -86,7 +85,7 @@ private: const std::vector&, const std::vector&, const AnnotationsProperties&, - const MapData&); + const uint8_t maxZoom); std::unordered_set addTileFeature( const uint32_t annotationID, const AnnotationSegments&, diff --git a/src/mbgl/map/map.cpp b/src/mbgl/map/map.cpp index 8d5b54419..17bcd2989 100644 --- a/src/mbgl/map/map.cpp +++ b/src/mbgl/map/map.cpp @@ -244,7 +244,7 @@ uint32_t Map::addPointAnnotation(const LatLng& point, const std::string& symbol) AnnotationIDs Map::addPointAnnotations(const AnnotationSegment& points, const std::vector& symbols) { AnnotationsProperties properties = { { "symbols", symbols } }; - auto result = data->annotationManager.addPointAnnotations(points, properties, *data); + auto result = data->annotationManager.addPointAnnotations(points, properties, data->transform.getMaxZoom()); context->invoke(&MapContext::updateAnnotationTiles, result.first); return result.second; } @@ -256,7 +256,7 @@ uint32_t Map::addShapeAnnotation(const AnnotationSegments& shape, AnnotationIDs Map::addShapeAnnotations(const std::vector& shapes, const std::vector& styleProperties) { - auto result = data->annotationManager.addShapeAnnotations(shapes, styleProperties, {{}}, *data); + auto result = data->annotationManager.addShapeAnnotations(shapes, styleProperties, {{}}, data->transform.getMaxZoom()); context->invoke(&MapContext::updateAnnotationTiles, result.first); return result.second; } @@ -266,12 +266,12 @@ void Map::removeAnnotation(uint32_t annotation) { } void Map::removeAnnotations(const std::vector& annotations) { - auto result = data->annotationManager.removeAnnotations(annotations, *data); + auto result = data->annotationManager.removeAnnotations(annotations, data->transform.getMaxZoom()); context->invoke(&MapContext::updateAnnotationTiles, result); } std::vector Map::getAnnotationsInBounds(const LatLngBounds& bounds, const AnnotationType& type) { - return data->annotationManager.getAnnotationsInBounds(bounds, *data, type); + return data->annotationManager.getAnnotationsInBounds(bounds, data->transform.getMaxZoom(), type); } LatLngBounds Map::getBoundsForAnnotations(const std::vector& annotations) {