diff options
Diffstat (limited to 'src/mbgl/renderer/renderer_impl.hpp')
-rw-r--r-- | src/mbgl/renderer/renderer_impl.hpp | 104 |
1 files changed, 10 insertions, 94 deletions
diff --git a/src/mbgl/renderer/renderer_impl.hpp b/src/mbgl/renderer/renderer_impl.hpp index 693c4b6513..85e37a014a 100644 --- a/src/mbgl/renderer/renderer_impl.hpp +++ b/src/mbgl/renderer/renderer_impl.hpp @@ -1,102 +1,39 @@ #pragma once -#include <mbgl/renderer/renderer.hpp> -#include <mbgl/renderer/render_source_observer.hpp> -#include <mbgl/renderer/render_light.hpp> -#include <mbgl/style/image.hpp> -#include <mbgl/style/source.hpp> -#include <mbgl/style/layer.hpp> -#include <mbgl/map/transform_state.hpp> -#include <mbgl/map/zoom_history.hpp> -#include <mbgl/text/cross_tile_symbol_index.hpp> -#include <mbgl/text/glyph_manager_observer.hpp> -#include <mbgl/renderer/image_manager_observer.hpp> -#include <mbgl/text/placement.hpp> +#include <mbgl/renderer/render_orchestrator.hpp> #include <memory> #include <string> -#include <vector> namespace mbgl { class RendererObserver; -class RenderSource; -class RenderLayer; -class UpdateParameters; class RenderStaticData; -class RenderedQueryOptions; -class SourceQueryOptions; -class GlyphManager; -class ImageManager; -class LineAtlas; -class PatternAtlas; -class CrossTileSymbolIndex; class RenderTree; namespace gfx { class RendererBackend; } // namespace gfx -class Renderer::Impl : public GlyphManagerObserver, - public ImageManagerObserver, - public RenderSourceObserver{ +class Renderer::Impl { public: Impl(gfx::RendererBackend&, float pixelRatio_, - const optional<std::string> programCacheDir, - const optional<std::string> localFontFamily_); - ~Impl() final; + optional<std::string> programCacheDir, + optional<std::string> localFontFamily_); + ~Impl(); - void markContextLost() { - contextLost = true; - }; +private: + friend class Renderer; void setObserver(RendererObserver*); - std::unique_ptr<RenderTree> createRenderTree(const UpdateParameters&); void render(const RenderTree&); - std::vector<Feature> queryRenderedFeatures(const ScreenLineString&, const RenderedQueryOptions&) const; - std::vector<Feature> querySourceFeatures(const std::string& sourceID, const SourceQueryOptions&) const; - std::vector<Feature> queryShapeAnnotations(const ScreenLineString&) const; - - FeatureExtensionValue queryFeatureExtensions(const std::string& sourceID, - const Feature& feature, - const std::string& extension, - const std::string& extensionField, - const optional<std::map<std::string, Value>>& args) const; - void reduceMemoryUse(); - void dumpDebugLogs(); - -private: - bool isLoaded() const; - bool hasTransitions(TimePoint) const; - - RenderSource* getRenderSource(const std::string& id) const; - - RenderLayer* getRenderLayer(const std::string& id); - const RenderLayer* getRenderLayer(const std::string& id) const; - - void queryRenderedSymbols(std::unordered_map<std::string, std::vector<Feature>>& resultsByLayer, - const ScreenLineString& geometry, - const std::vector<const RenderLayer*>& layers, - const RenderedQueryOptions& options) const; - - std::vector<Feature> queryRenderedFeatures(const ScreenLineString&, const RenderedQueryOptions&, const std::vector<const RenderLayer*>&) const; - - // 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; - - // ImageManagerObserver implementation - void onStyleImageMissing(const std::string&, std::function<void()>) override; - void onRemoveUnusedStyleImages(const std::vector<std::string>&) final; - - friend class Renderer; + // TODO: Move orchestrator to Map::Impl. + RenderOrchestrator orchestrator; gfx::RendererBackend& backend; @@ -104,7 +41,7 @@ private: const float pixelRatio; const optional<std::string> programCacheDir; - const optional<std::string> localFontFamily; + std::unique_ptr<RenderStaticData> staticData; enum class RenderState { Never, @@ -113,27 +50,6 @@ private: }; RenderState renderState = RenderState::Never; - ZoomHistory zoomHistory; - TransformState transformState; - - std::unique_ptr<GlyphManager> glyphManager; - std::unique_ptr<ImageManager> imageManager; - std::unique_ptr<LineAtlas> lineAtlas; - std::unique_ptr<PatternAtlas> patternAtlas; - std::unique_ptr<RenderStaticData> staticData; - - Immutable<std::vector<Immutable<style::Image::Impl>>> imageImpls; - Immutable<std::vector<Immutable<style::Source::Impl>>> sourceImpls; - Immutable<std::vector<Immutable<style::Layer::Impl>>> layerImpls; - - std::unordered_map<std::string, std::unique_ptr<RenderSource>> renderSources; - std::unordered_map<std::string, std::unique_ptr<RenderLayer>> renderLayers; - RenderLight renderLight; - - CrossTileSymbolIndex crossTileSymbolIndex; - std::unique_ptr<Placement> placement; - - bool contextLost = false; }; } // namespace mbgl |