diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2017-04-20 17:11:50 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2017-05-02 08:45:09 -0700 |
commit | 3f0c89d633a5056006557ad5f4b9e446807d00ee (patch) | |
tree | 5405c50dd26a5a393a982e8e0f76b764dbbccf48 /src/mbgl/renderer/sources/render_raster_source.cpp | |
parent | 197751bace6181f2c2dbe4c890f277a0dc7e58b1 (diff) | |
download | qtlocation-mapboxgl-3f0c89d633a5056006557ad5f4b9e446807d00ee.tar.gz |
[core] Refactor Source::*Impls into RenderSources and TilePyramid
Diffstat (limited to 'src/mbgl/renderer/sources/render_raster_source.cpp')
-rw-r--r-- | src/mbgl/renderer/sources/render_raster_source.cpp | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/src/mbgl/renderer/sources/render_raster_source.cpp b/src/mbgl/renderer/sources/render_raster_source.cpp new file mode 100644 index 0000000000..75a2189053 --- /dev/null +++ b/src/mbgl/renderer/sources/render_raster_source.cpp @@ -0,0 +1,87 @@ +#include <mbgl/renderer/sources/render_raster_source.hpp> +#include <mbgl/renderer/render_tile.hpp> +#include <mbgl/tile/raster_tile.hpp> + +namespace mbgl { + +using namespace style; + +RenderRasterSource::RenderRasterSource(const style::RasterSource::Impl& impl_) + : RenderSource(impl_), + impl(impl_) { + tilePyramid.setObserver(this); +} + +bool RenderRasterSource::isLoaded() const { + return tilePyramid.isLoaded(); +} + +void RenderRasterSource::invalidateTiles() { + tilePyramid.invalidateTiles(); +} + +void RenderRasterSource::startRender(algorithm::ClipIDGenerator&, const mat4& projMatrix, const mat4& clipMatrix, const TransformState& transform) { + tilePyramid.startRender(projMatrix, clipMatrix, transform); +} + +void RenderRasterSource::finishRender(Painter& painter) { + tilePyramid.finishRender(painter); +} + +std::map<UnwrappedTileID, RenderTile>& RenderRasterSource::getRenderTiles() { + return tilePyramid.getRenderTiles(); +} + +void RenderRasterSource::updateTiles(const UpdateParameters& parameters) { + optional<Tileset> tileset = impl.getTileset(); + + if (!tileset) { + return; + } + + if (tileURLTemplates != tileset->tiles) { + tileURLTemplates = tileset->tiles; + tilePyramid.invalidateTiles(); + } + + tilePyramid.updateTiles(parameters, + SourceType::Raster, + impl.getTileSize(), + tileset->zoomRange, + [&] (const OverscaledTileID& tileID) { + return std::make_unique<RasterTile>(tileID, parameters, *tileset); + }); +} + +void RenderRasterSource::removeTiles() { + tilePyramid.removeTiles(); +} + +void RenderRasterSource::reloadTiles() { + tilePyramid.reloadTiles(); +} + +std::unordered_map<std::string, std::vector<Feature>> +RenderRasterSource::queryRenderedFeatures(const ScreenLineString&, + const TransformState&, + const RenderedQueryOptions&) const { + return {}; +} + +std::vector<Feature> RenderRasterSource::querySourceFeatures(const SourceQueryOptions&) const { + return {}; +} + +void RenderRasterSource::setCacheSize(size_t size) { + tilePyramid.setCacheSize(size); +} + +void RenderRasterSource::onLowMemory() { + tilePyramid.onLowMemory(); +} + +void RenderRasterSource::dumpDebugLogs() const { + tilePyramid.dumpDebugLogs(); +} + +} // namespace mbgl |