#pragma once #include #include #include #include #include #include #include #include #include #include #include namespace mbgl { class FileSource; class GlyphManager; class ImageManager; class LineAtlas; class RenderData; class TransformState; class RenderedQueryOptions; class Scheduler; class UpdateParameters; class RenderStyleObserver; namespace style { class Image; class Source; class Layer; } // namespace style class RenderStyle : public GlyphManagerObserver, public RenderSourceObserver { public: RenderStyle(Scheduler&, FileSource&); ~RenderStyle() final; void setObserver(RenderStyleObserver*); void update(const UpdateParameters&); bool isLoaded() const; bool hasTransitions() const; RenderSource* getRenderSource(const std::string& id) const; std::vector getRenderLayers() const; RenderLayer* getRenderLayer(const std::string& id); const RenderLayer* getRenderLayer(const std::string& id) const; const RenderLight& getRenderLight() const; RenderData getRenderData(MapDebugOptions, float angle); std::vector queryRenderedFeatures(const ScreenLineString& geometry, const TransformState& transformState, const RenderedQueryOptions& options) const; void onLowMemory(); void dumpDebugLogs() const; Scheduler& scheduler; FileSource& fileSource; std::unique_ptr glyphManager; std::unique_ptr imageManager; std::unique_ptr lineAtlas; private: Immutable>> imageImpls; Immutable>> sourceImpls; Immutable>> layerImpls; std::unordered_map> renderSources; std::unordered_map> renderLayers; RenderLight renderLight; // GlyphManagerObserver implementation. void onGlyphsError(const FontStack&, const GlyphRange&, std::exception_ptr) override; // RenderSourceObserver implementation. void onTileChanged(RenderSource&, const OverscaledTileID&) override; void onTileError(RenderSource&, const OverscaledTileID&, std::exception_ptr) override; RenderStyleObserver* observer; ZoomHistory zoomHistory; }; } // namespace mbgl