[core] Eliminate TileData dependency on TileSource
This commit is contained in:
committed by
Konstantin Käfer
parent
dbf16440a6
commit
b45713e5e9
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user