diff options
Diffstat (limited to 'src/mbgl/tile/geometry_tile_worker.hpp')
-rw-r--r-- | src/mbgl/tile/geometry_tile_worker.hpp | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/mbgl/tile/geometry_tile_worker.hpp b/src/mbgl/tile/geometry_tile_worker.hpp index b5417c8114..616d1a3625 100644 --- a/src/mbgl/tile/geometry_tile_worker.hpp +++ b/src/mbgl/tile/geometry_tile_worker.hpp @@ -10,6 +10,9 @@ #include <mbgl/style/layer_impl.hpp> #include <mbgl/geometry/feature_index.hpp> #include <mbgl/renderer/bucket.hpp> +#include <mbgl/renderer/buckets/fill_bucket.hpp> +#include <mbgl/renderer/buckets/fill_extrusion_bucket.hpp> +#include <mbgl/renderer/buckets/line_bucket.hpp> #include <atomic> #include <memory> @@ -20,6 +23,9 @@ class GeometryTile; class GeometryTileData; class SymbolLayout; +template <class B> +class PatternLayout; + namespace style { class Layer; } // namespace style @@ -41,7 +47,7 @@ public: void setShowCollisionBoxes(bool showCollisionBoxes_, uint64_t correlationID_); void onGlyphsAvailable(GlyphMap glyphs); - void onImagesAvailable(ImageMap images, uint64_t imageCorrelationID); + void onImagesAvailable(ImageMap icons, ImageMap patterns, uint64_t imageCorrelationID); private: void coalesced(); @@ -57,6 +63,9 @@ private: bool hasPendingSymbolDependencies() const; bool hasPendingParseResult() const; + template <typename B> + void checkPatternLayout(std::unique_ptr<PatternLayout<B>> layout); + ActorRef<GeometryTileWorker> self; ActorRef<GeometryTile> parent; @@ -85,11 +94,21 @@ private: optional<std::unique_ptr<const GeometryTileData>> data; bool symbolLayoutsNeedPreparation = false; + bool patternNeedsLayout = false; + std::vector<std::unique_ptr<SymbolLayout>> symbolLayouts; + + using LinePatternLayout = PatternLayout<LineBucket>; + using FillPatternLayout = PatternLayout<FillBucket>; + using FillExtrusionPatternLayout = PatternLayout<FillExtrusionBucket>; + + std::vector<variant<std::unique_ptr<LinePatternLayout>, std::unique_ptr<FillPatternLayout>, std::unique_ptr<FillExtrusionPatternLayout>>> patternLayouts; + GlyphDependencies pendingGlyphDependencies; ImageDependencies pendingImageDependencies; GlyphMap glyphMap; ImageMap imageMap; + ImageMap patternMap; bool showCollisionBoxes; bool firstLoad = true; |