#include #include #include #include namespace mbgl { Renderer::Renderer(RendererBackend& backend, float pixelRatio_, FileSource& fileSource_, Scheduler& scheduler_, GLContextMode contextMode_, const optional programCacheDir_) : impl(std::make_unique(backend, pixelRatio_, fileSource_, scheduler_, contextMode_, std::move(programCacheDir_))) { } Renderer::~Renderer() = default; void Renderer::setObserver(RendererObserver* observer) { impl->setObserver(observer); } void Renderer::render(const UpdateParameters& updateParameters) { impl->render(updateParameters); } std::vector Renderer::queryRenderedFeatures(const ScreenLineString& geometry, const RenderedQueryOptions& options) const { return impl->queryRenderedFeatures(geometry, options); } std::vector Renderer::queryRenderedFeatures(const ScreenCoordinate& point, const RenderedQueryOptions& options) const { return impl->queryRenderedFeatures({ point }, options); } std::vector Renderer::queryRenderedFeatures(const ScreenBox& box, const RenderedQueryOptions& options) const { return impl->queryRenderedFeatures( { box.min, {box.max.x, box.min.y}, box.max, {box.min.x, box.max.y}, box.min }, options ); } AnnotationIDs Renderer::queryPointAnnotations(const ScreenBox& box) const { RenderedQueryOptions options; options.layerIDs = {{ AnnotationManager::PointLayerID }}; auto features = queryRenderedFeatures(box, options); std::set set; for (auto &feature : features) { assert(feature.id); assert(feature.id->is()); assert(feature.id->get() <= std::numeric_limits::max()); set.insert(static_cast(feature.id->get())); } AnnotationIDs ids; ids.reserve(set.size()); std::move(set.begin(), set.end(), std::back_inserter(ids)); return ids; } std::vector Renderer::querySourceFeatures(const std::string& sourceID, const SourceQueryOptions& options) const { return impl->querySourceFeatures(sourceID, options); } void Renderer::dumpDebugLogs() { impl->dumDebugLogs(); } void Renderer::onLowMemory() { impl->onLowMemory(); } } // namespace mbgl