diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2016-06-06 17:15:23 -0700 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2016-06-10 12:42:14 +0200 |
commit | b45713e5e98b31b73ab1aaa278bf746116a345fc (patch) | |
tree | 7b3ff6ac998ff3793c18df7c43404d715cdf839c /src | |
parent | dbf16440a6ae8dedc408d8345e1527a516a42a1d (diff) | |
download | qtlocation-mapboxgl-b45713e5e98b31b73ab1aaa278bf746116a345fc.tar.gz |
[core] Eliminate TileData dependency on TileSource
Diffstat (limited to 'src')
-rw-r--r-- | src/mbgl/tile/annotation_tile_data.cpp | 9 | ||||
-rw-r--r-- | src/mbgl/tile/annotation_tile_data.hpp | 8 | ||||
-rw-r--r-- | src/mbgl/tile/geojson_tile_data.cpp | 8 | ||||
-rw-r--r-- | src/mbgl/tile/geojson_tile_data.hpp | 8 | ||||
-rw-r--r-- | src/mbgl/tile/raster_tile_data.cpp | 7 | ||||
-rw-r--r-- | src/mbgl/tile/raster_tile_data.hpp | 4 | ||||
-rw-r--r-- | src/mbgl/tile/tile_data.cpp | 11 | ||||
-rw-r--r-- | src/mbgl/tile/tile_data.hpp | 6 | ||||
-rw-r--r-- | src/mbgl/tile/vector_tile_data.cpp | 9 | ||||
-rw-r--r-- | src/mbgl/tile/vector_tile_data.hpp | 7 |
10 files changed, 53 insertions, 24 deletions
diff --git a/src/mbgl/tile/annotation_tile_data.cpp b/src/mbgl/tile/annotation_tile_data.cpp index 5d23a35b2f..1c24d83451 100644 --- a/src/mbgl/tile/annotation_tile_data.cpp +++ b/src/mbgl/tile/annotation_tile_data.cpp @@ -8,8 +8,13 @@ AnnotationTileData::AnnotationTileData(const OverscaledTileID& overscaledTileID, std::string sourceID, const style::UpdateParameters& parameters) : GeometryTileData(overscaledTileID, sourceID, parameters.style, parameters.mode) { - setTileSource(std::make_unique<AnnotationTileSource>( - *this, overscaledTileID, parameters.annotationManager)); + tileSource = std::make_unique<AnnotationTileSource>(*this, overscaledTileID, parameters.annotationManager); +} + +AnnotationTileData::~AnnotationTileData() = default; + +void AnnotationTileData::setNecessity(Necessity necessity) { + tileSource->setNecessity(static_cast<TileSource::Necessity>(necessity)); } } // namespace mbgl diff --git a/src/mbgl/tile/annotation_tile_data.hpp b/src/mbgl/tile/annotation_tile_data.hpp index 4d8357eab9..7995091a2f 100644 --- a/src/mbgl/tile/annotation_tile_data.hpp +++ b/src/mbgl/tile/annotation_tile_data.hpp @@ -4,6 +4,8 @@ namespace mbgl { +class TileSource; + namespace style { class UpdateParameters; } @@ -13,6 +15,12 @@ public: AnnotationTileData(const OverscaledTileID&, std::string sourceID, const style::UpdateParameters&); + ~AnnotationTileData(); + + void setNecessity(Necessity) final; + +private: + std::unique_ptr<TileSource> tileSource; }; } // namespace mbgl diff --git a/src/mbgl/tile/geojson_tile_data.cpp b/src/mbgl/tile/geojson_tile_data.cpp index 4464ae34b8..fb0cd13f35 100644 --- a/src/mbgl/tile/geojson_tile_data.cpp +++ b/src/mbgl/tile/geojson_tile_data.cpp @@ -9,9 +9,13 @@ GeoJSONTileData::GeoJSONTileData(const OverscaledTileID& overscaledTileID, const style::UpdateParameters& parameters, mapbox::geojsonvt::GeoJSONVT* geojsonvt) : GeometryTileData(overscaledTileID, sourceID, parameters.style, parameters.mode) { - setTileSource( - std::make_unique<GeoJSONTileSource>(*this, geojsonvt, overscaledTileID)); + tileSource = std::make_unique<GeoJSONTileSource>(*this, geojsonvt, overscaledTileID); } +GeoJSONTileData::~GeoJSONTileData() = default; + +void GeoJSONTileData::setNecessity(Necessity necessity) { + tileSource->setNecessity(static_cast<TileSource::Necessity>(necessity)); +} } // namespace mbgl diff --git a/src/mbgl/tile/geojson_tile_data.hpp b/src/mbgl/tile/geojson_tile_data.hpp index 63a0b1b65d..2110b4b9c8 100644 --- a/src/mbgl/tile/geojson_tile_data.hpp +++ b/src/mbgl/tile/geojson_tile_data.hpp @@ -10,6 +10,8 @@ class GeoJSONVT; namespace mbgl { +class TileSource; + namespace style { class UpdateParameters; } @@ -20,6 +22,12 @@ public: std::string sourceID, const style::UpdateParameters&, mapbox::geojsonvt::GeoJSONVT*); + ~GeoJSONTileData(); + + void setNecessity(Necessity) final; + +private: + std::unique_ptr<TileSource> tileSource; }; } // namespace mbgl diff --git a/src/mbgl/tile/raster_tile_data.cpp b/src/mbgl/tile/raster_tile_data.cpp index 0d388181c7..dfc4266d8a 100644 --- a/src/mbgl/tile/raster_tile_data.cpp +++ b/src/mbgl/tile/raster_tile_data.cpp @@ -21,8 +21,7 @@ RasterTileData::RasterTileData(const OverscaledTileID& id_, const auto resource = Resource::tile( tileset.tiles.at(0), parameters.pixelRatio, id_.canonical.x, id_.canonical.y, id_.canonical.z); - setTileSource( - std::make_unique<ImageTileSource>(*this, resource, parameters.fileSource)); + tileSource = std::make_unique<ImageTileSource>(*this, resource, parameters.fileSource); } void RasterTileData::setError(std::exception_ptr err) { @@ -68,6 +67,10 @@ Bucket* RasterTileData::getBucket(const style::Layer&) { return bucket.get(); } +void RasterTileData::setNecessity(Necessity necessity) { + tileSource->setNecessity(static_cast<TileSource::Necessity>(necessity)); +} + void RasterTileData::cancel() { workRequest.reset(); } diff --git a/src/mbgl/tile/raster_tile_data.hpp b/src/mbgl/tile/raster_tile_data.hpp index 5f2478745b..f3110c1296 100644 --- a/src/mbgl/tile/raster_tile_data.hpp +++ b/src/mbgl/tile/raster_tile_data.hpp @@ -8,6 +8,7 @@ namespace mbgl { class RasterTileSource; class AsyncRequest; class Tileset; +class TileSource; namespace gl { class TexturePool; } @@ -23,6 +24,8 @@ public: const Tileset&); ~RasterTileData(); + void setNecessity(Necessity) final; + void setError(std::exception_ptr err); void setData(std::shared_ptr<const std::string> data, @@ -36,6 +39,7 @@ private: gl::TexturePool& texturePool; Worker& worker; + std::unique_ptr<TileSource> tileSource; std::unique_ptr<AsyncRequest> workRequest; // Contains the Bucket object for the tile. Buckets are render diff --git a/src/mbgl/tile/tile_data.cpp b/src/mbgl/tile/tile_data.cpp index 19ff48a897..7046d2e7db 100644 --- a/src/mbgl/tile/tile_data.cpp +++ b/src/mbgl/tile/tile_data.cpp @@ -1,6 +1,5 @@ #include <mbgl/tile/tile_data.hpp> #include <mbgl/tile/tile_data_observer.hpp> -#include <mbgl/tile/tile_source.hpp> #include <mbgl/renderer/debug_bucket.hpp> #include <mbgl/util/string.hpp> @@ -18,16 +17,6 @@ void TileData::setObserver(TileDataObserver* observer_) { observer = observer_; } -void TileData::setTileSource(std::unique_ptr<TileSource> tileSource_) { - assert(!tileSource); - assert(tileSource_); - tileSource = std::move(tileSource_); -} - -void TileData::setNecessity(Necessity necessity) { - tileSource->setNecessity(static_cast<TileSource::Necessity>(necessity)); -} - void TileData::setTriedOptional() { triedOptional = true; observer->onNeedsRepaint(); diff --git a/src/mbgl/tile/tile_data.hpp b/src/mbgl/tile/tile_data.hpp index 9dd44b0379..db3e024024 100644 --- a/src/mbgl/tile/tile_data.hpp +++ b/src/mbgl/tile/tile_data.hpp @@ -19,7 +19,6 @@ namespace mbgl { class Worker; class DebugBucket; class TransformState; -class TileSource; class TileDataObserver; namespace style { @@ -38,7 +37,7 @@ public: Required = true, }; - void setNecessity(Necessity); + virtual void setNecessity(Necessity) = 0; // Mark this tile as no longer needed and cancel any pending work. virtual void cancel() = 0; @@ -104,9 +103,6 @@ protected: DataAvailability availableData = DataAvailability::None; - void setTileSource(std::unique_ptr<TileSource>); - std::unique_ptr<TileSource> tileSource; - TileDataObserver* observer = nullptr; }; diff --git a/src/mbgl/tile/vector_tile_data.cpp b/src/mbgl/tile/vector_tile_data.cpp index 58d528a8f3..be56b1abf7 100644 --- a/src/mbgl/tile/vector_tile_data.cpp +++ b/src/mbgl/tile/vector_tile_data.cpp @@ -15,8 +15,13 @@ VectorTileData::VectorTileData(const OverscaledTileID& overscaledTileID, const auto resource = Resource::tile( tileset.tiles.at(0), parameters.pixelRatio, overscaledTileID.canonical.x, overscaledTileID.canonical.y, overscaledTileID.canonical.z); - setTileSource( - std::make_unique<VectorTileSource>(*this, resource, parameters.fileSource)); + tileSource = std::make_unique<VectorTileSource>(*this, resource, parameters.fileSource); +} + +VectorTileData::~VectorTileData() = default; + +void VectorTileData::setNecessity(Necessity necessity) { + tileSource->setNecessity(static_cast<TileSource::Necessity>(necessity)); } } // namespace mbgl diff --git a/src/mbgl/tile/vector_tile_data.hpp b/src/mbgl/tile/vector_tile_data.hpp index 739d1b9e7f..e3b0034f3a 100644 --- a/src/mbgl/tile/vector_tile_data.hpp +++ b/src/mbgl/tile/vector_tile_data.hpp @@ -5,6 +5,7 @@ namespace mbgl { class Tileset; +class TileSource; namespace style { class UpdateParameters; @@ -16,6 +17,12 @@ public: std::string sourceID, const style::UpdateParameters&, const Tileset&); + ~VectorTileData(); + + void setNecessity(Necessity) final; + +private: + std::unique_ptr<TileSource> tileSource; }; } // namespace mbgl |