diff options
author | Thiago Marcos P. Santos <tmpsantos@gmail.com> | 2017-08-07 19:19:32 +0300 |
---|---|---|
committer | Thiago Marcos P. Santos <tmpsantos@gmail.com> | 2017-08-09 18:02:46 +0300 |
commit | c53896caefc96a8c18ab746026330ddc4fc0338e (patch) | |
tree | 8f562b0c416d6c99f7b565e58b758701f6081677 /src/mbgl/annotation/render_annotation_source.cpp | |
parent | 9ecbe3642fb4a53b558598239b59bf1d0224c25b (diff) | |
download | qtlocation-mapboxgl-c53896caefc96a8c18ab746026330ddc4fc0338e.tar.gz |
Bump Mapbox GL Nativeqt-v1.1.0
mapbox-gl-native @ edd7948893fcd40a24d96b790e21d3dd028cecbe
Diffstat (limited to 'src/mbgl/annotation/render_annotation_source.cpp')
-rw-r--r-- | src/mbgl/annotation/render_annotation_source.cpp | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/src/mbgl/annotation/render_annotation_source.cpp b/src/mbgl/annotation/render_annotation_source.cpp new file mode 100644 index 0000000000..de38b596d5 --- /dev/null +++ b/src/mbgl/annotation/render_annotation_source.cpp @@ -0,0 +1,80 @@ +#include <mbgl/annotation/render_annotation_source.hpp> +#include <mbgl/annotation/annotation_tile.hpp> +#include <mbgl/renderer/render_tile.hpp> +#include <mbgl/renderer/paint_parameters.hpp> + +#include <mbgl/algorithm/generate_clip_ids.hpp> +#include <mbgl/algorithm/generate_clip_ids_impl.hpp> + +namespace mbgl { + +using namespace style; + +RenderAnnotationSource::RenderAnnotationSource(Immutable<AnnotationSource::Impl> impl_) + : RenderSource(impl_) { + tilePyramid.setObserver(this); +} + +const AnnotationSource::Impl& RenderAnnotationSource::impl() const { + return static_cast<const AnnotationSource::Impl&>(*baseImpl); +} + +bool RenderAnnotationSource::isLoaded() const { + return tilePyramid.isLoaded(); +} + +void RenderAnnotationSource::update(Immutable<style::Source::Impl> baseImpl_, + const std::vector<Immutable<Layer::Impl>>& layers, + const bool needsRendering, + const bool needsRelayout, + const TileParameters& parameters) { + std::swap(baseImpl, baseImpl_); + + enabled = needsRendering; + + tilePyramid.update(layers, + needsRendering, + needsRelayout, + parameters, + SourceType::Annotations, + util::tileSize, + { 0, 22 }, + [&] (const OverscaledTileID& tileID) { + return std::make_unique<AnnotationTile>(tileID, parameters); + }); +} + +void RenderAnnotationSource::startRender(PaintParameters& parameters) { + parameters.clipIDGenerator.update(tilePyramid.getRenderTiles()); + tilePyramid.startRender(parameters); +} + +void RenderAnnotationSource::finishRender(PaintParameters& parameters) { + tilePyramid.finishRender(parameters); +} + +std::vector<std::reference_wrapper<RenderTile>> RenderAnnotationSource::getRenderTiles() { + return tilePyramid.getRenderTiles(); +} + +std::unordered_map<std::string, std::vector<Feature>> +RenderAnnotationSource::queryRenderedFeatures(const ScreenLineString& geometry, + const TransformState& transformState, + const RenderStyle& style, + const RenderedQueryOptions& options) const { + return tilePyramid.queryRenderedFeatures(geometry, transformState, style, options); +} + +std::vector<Feature> RenderAnnotationSource::querySourceFeatures(const SourceQueryOptions&) const { + return {}; +} + +void RenderAnnotationSource::onLowMemory() { + tilePyramid.onLowMemory(); +} + +void RenderAnnotationSource::dumpDebugLogs() const { + tilePyramid.dumpDebugLogs(); +} + +} // namespace mbgl |