From 7a7192516ffa9b4ed5b94b60961a4dc74fcf6e64 Mon Sep 17 00:00:00 2001 From: Mikhail Pozdnyakov Date: Sun, 7 Apr 2019 23:24:17 +0300 Subject: [core] Introduce `LayerRenderData`. Source::update() accepts layer properties. --- src/mbgl/layout/pattern_layout.hpp | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) (limited to 'src/mbgl/layout/pattern_layout.hpp') diff --git a/src/mbgl/layout/pattern_layout.hpp b/src/mbgl/layout/pattern_layout.hpp index fe2e9c5950..95f8b181fc 100644 --- a/src/mbgl/layout/pattern_layout.hpp +++ b/src/mbgl/layout/pattern_layout.hpp @@ -26,7 +26,6 @@ public: template ::PossiblyEvaluated> class PatternLayout : public Layout { public: @@ -46,8 +45,8 @@ public: for (const auto& layerProperties : group) { const std::string& layerId = layerProperties->baseImpl->id; - const auto evaluatedProps = static_cast(*layerProperties).evaluated; - const auto patternProperty = evaluatedProps.template get(); + const auto& evaluated = style::getEvaluated(layerProperties); + const auto patternProperty = evaluated.template get(); const auto constantPattern = patternProperty.constantOr(Faded >{ "", ""}); // determine if layer group has any layers that use *-pattern property and add // constant pattern dependencies. @@ -58,7 +57,7 @@ public: patternDependencies.emplace(constantPattern.to, ImageType::Pattern); patternDependencies.emplace(constantPattern.from, ImageType::Pattern); } - layerPaintProperties.emplace(layerId, std::move(evaluatedProps)); + layerPropertiesMap.emplace(layerId, layerProperties); } const size_t featureCount = sourceLayer->featureCount(); @@ -71,9 +70,9 @@ public: if (hasPattern) { for (const auto& layerProperties : group) { const std::string& layerId = layerProperties->baseImpl->id; - const auto it = layerPaintProperties.find(layerId); - if (it != layerPaintProperties.end()) { - const auto paint = it->second; + const auto it = layerPropertiesMap.find(layerId); + if (it != layerPropertiesMap.end()) { + const auto paint = static_cast(*it->second).evaluated; const auto patternProperty = paint.template get(); if (!patternProperty.isConstant()) { // For layers with non-data-constant pattern properties, evaluate their expression and add @@ -101,8 +100,8 @@ public: return hasPattern; } - void createBucket(const ImagePositions& patternPositions, std::unique_ptr& featureIndex, std::unordered_map>& buckets, const bool, const bool) override { - auto bucket = std::make_shared(layout, layerPaintProperties, zoom, overscaling); + void createBucket(const ImagePositions& patternPositions, std::unique_ptr& featureIndex, std::unordered_map& renderData, const bool, const bool) override { + auto bucket = std::make_shared(layout, layerPropertiesMap, zoom, overscaling); for (auto & patternFeature : features) { const auto i = patternFeature.i; std::unique_ptr feature = std::move(patternFeature.feature); @@ -113,17 +112,16 @@ public: featureIndex->insert(geometries, i, sourceLayerID, bucketLeaderID); } if (bucket->hasData()) { - for (const auto& pair : layerPaintProperties) { - buckets.emplace(pair.first, bucket); + for (const auto& pair : layerPropertiesMap) { + renderData.emplace(pair.first, LayerRenderData {bucket, pair.second}); } } }; - std::map layerPaintProperties; +private: + std::map> layerPropertiesMap; std::string bucketLeaderID; - -private: const std::unique_ptr sourceLayer; std::vector features; PossiblyEvaluatedLayoutPropertiesType layout; -- cgit v1.2.1