summaryrefslogtreecommitdiff
path: root/src/mbgl/tile/geometry_tile_worker.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/tile/geometry_tile_worker.hpp')
-rw-r--r--src/mbgl/tile/geometry_tile_worker.hpp21
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;