summaryrefslogtreecommitdiff
path: root/src/mbgl/style/source_impl.hpp
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2017-04-20 17:11:50 -0700
committerJohn Firebaugh <john.firebaugh@gmail.com>2017-05-02 08:45:09 -0700
commit3f0c89d633a5056006557ad5f4b9e446807d00ee (patch)
tree5405c50dd26a5a393a982e8e0f76b764dbbccf48 /src/mbgl/style/source_impl.hpp
parent197751bace6181f2c2dbe4c890f277a0dc7e58b1 (diff)
downloadqtlocation-mapboxgl-3f0c89d633a5056006557ad5f4b9e446807d00ee.tar.gz
[core] Refactor Source::*Impls into RenderSources and TilePyramid
Diffstat (limited to 'src/mbgl/style/source_impl.hpp')
-rw-r--r--src/mbgl/style/source_impl.hpp96
1 files changed, 8 insertions, 88 deletions
diff --git a/src/mbgl/style/source_impl.hpp b/src/mbgl/style/source_impl.hpp
index 132d1b97f8..2514ec5120 100644
--- a/src/mbgl/style/source_impl.hpp
+++ b/src/mbgl/style/source_impl.hpp
@@ -1,117 +1,37 @@
#pragma once
#include <mbgl/style/source.hpp>
-
-#include <mbgl/tile/tile_id.hpp>
-#include <mbgl/tile/tile_observer.hpp>
-#include <mbgl/tile/tile.hpp>
-#include <mbgl/tile/tile_cache.hpp>
-#include <mbgl/style/types.hpp>
-#include <mbgl/map/query.hpp>
-
#include <mbgl/util/noncopyable.hpp>
-#include <mbgl/util/mat4.hpp>
-#include <mbgl/util/feature.hpp>
-#include <mbgl/util/range.hpp>
-
-#include <memory>
-#include <unordered_map>
-#include <vector>
-#include <map>
namespace mbgl {
-class Painter;
class FileSource;
-class TransformState;
-class RenderTile;
-class RenderedQueryOptions;
-
-namespace algorithm {
-class ClipIDGenerator;
-} // namespace algorithm
+class RenderSource;
namespace style {
-class UpdateParameters;
class SourceObserver;
-class Source::Impl : public TileObserver, private util::noncopyable {
+class Source::Impl : private util::noncopyable {
public:
Impl(SourceType, std::string id, Source&);
- ~Impl() override;
+ virtual ~Impl() = default;
virtual void loadDescription(FileSource&) = 0;
- bool isLoaded() const;
-
- // Called when the camera has changed. May load new tiles, unload obsolete tiles, or
- // trigger re-placement of existing complete tiles.
- void updateTiles(const UpdateParameters&);
-
- // Removes all tiles (by putting them into the cache).
- void removeTiles();
-
- // Remove all tiles and clear the cache.
- void invalidateTiles();
-
- // Request that all loaded tiles re-run the layout operation on the existing source
- // data with fresh style information.
- void reloadTiles();
-
- void startRender(algorithm::ClipIDGenerator&,
- const mat4& projMatrix,
- const mat4& clipMatrix,
- const TransformState&);
- void finishRender(Painter&);
-
- std::map<UnwrappedTileID, RenderTile>& getRenderTiles();
-
- std::unordered_map<std::string, std::vector<Feature>>
- queryRenderedFeatures(const ScreenLineString& geometry,
- const TransformState& transformState,
- const RenderedQueryOptions& options) const;
-
- std::vector<Feature> querySourceFeatures(const SourceQueryOptions&);
-
- void setCacheSize(size_t);
- void onLowMemory();
+ virtual std::unique_ptr<RenderSource> createRenderSource() const = 0;
- void setObserver(SourceObserver*);
- void dumpDebugLogs() const;
+ virtual optional<std::string> getAttribution() const { return {}; };
const SourceType type;
const std::string id;
- virtual optional<std::string> getAttribution() const { return {}; };
- virtual optional<Range<uint8_t>> getZoomRange() const = 0;
-
bool loaded = false;
-
- // Tracks whether the source is used by any layers visible at the current zoom level. Must
- // be initialized to true so that Style::isLoaded() does not produce false positives if
- // called before Style::recalculate().
- bool enabled = true;
-
- // Detaches from the style
- void detach();
-
-protected:
Source& base;
- SourceObserver* observer = nullptr;
- std::map<OverscaledTileID, std::unique_ptr<Tile>> tiles;
- TileCache cache;
-
-private:
- void removeStaleTiles(const std::set<OverscaledTileID>&);
-
- // TileObserver implementation.
- void onTileChanged(Tile&) override;
- void onTileError(Tile&, std::exception_ptr) override;
- virtual uint16_t getTileSize() const = 0;
- virtual std::unique_ptr<Tile> createTile(const OverscaledTileID&, const UpdateParameters&) = 0;
+ void setObserver(SourceObserver*);
+ SourceObserver* observer = nullptr;
- std::map<UnwrappedTileID, RenderTile> renderTiles;
+ void dumpDebugLogs() const;
};
} // namespace style