summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2016-06-06 17:15:23 -0700
committerKonstantin Käfer <mail@kkaefer.com>2016-06-10 12:42:14 +0200
commitb45713e5e98b31b73ab1aaa278bf746116a345fc (patch)
tree7b3ff6ac998ff3793c18df7c43404d715cdf839c /src
parentdbf16440a6ae8dedc408d8345e1527a516a42a1d (diff)
downloadqtlocation-mapboxgl-b45713e5e98b31b73ab1aaa278bf746116a345fc.tar.gz
[core] Eliminate TileData dependency on TileSource
Diffstat (limited to 'src')
-rw-r--r--src/mbgl/tile/annotation_tile_data.cpp9
-rw-r--r--src/mbgl/tile/annotation_tile_data.hpp8
-rw-r--r--src/mbgl/tile/geojson_tile_data.cpp8
-rw-r--r--src/mbgl/tile/geojson_tile_data.hpp8
-rw-r--r--src/mbgl/tile/raster_tile_data.cpp7
-rw-r--r--src/mbgl/tile/raster_tile_data.hpp4
-rw-r--r--src/mbgl/tile/tile_data.cpp11
-rw-r--r--src/mbgl/tile/tile_data.hpp6
-rw-r--r--src/mbgl/tile/vector_tile_data.cpp9
-rw-r--r--src/mbgl/tile/vector_tile_data.hpp7
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