#pragma once #include #include #include #include #include #include namespace mbgl { class Bucket; class BucketParameters; class RenderLayer; class FeatureIndex; class LayerRenderData; class GlyphManager; class Layout { public: virtual ~Layout() = default; virtual void createBucket(const ImagePositions&, std::unique_ptr&, mbgl::unordered_map&, bool, bool, const CanonicalTileID&) = 0; virtual void prepareSymbols(const GlyphMap&, const GlyphPositions&, const ImageMap&, const ImagePositions&) {} virtual void finalizeSymbols(HBShapeResults&) {} virtual bool needFinalizeSymbols() { return false; } virtual bool hasSymbolInstances() const { return true; } virtual bool hasDependencies() const = 0; }; class LayoutParameters { public: const BucketParameters& bucketParameters; std::shared_ptr fontFaces; GlyphDependencies& glyphDependencies; ImageDependencies& imageDependencies; std::set& availableImages; }; } // namespace mbgl