[core] Factor common code into FileBasedTileSource
This commit is contained in:
committed by
Konstantin Käfer
parent
a1d1bb0c6d
commit
94cfb1eb5a
@@ -12,7 +12,10 @@ class Response;
|
||||
template <typename T>
|
||||
class FileBasedTileSource : public TileSource {
|
||||
public:
|
||||
FileBasedTileSource(T&, const Resource&, FileSource&);
|
||||
FileBasedTileSource(T&,
|
||||
const OverscaledTileID&,
|
||||
const style::UpdateParameters&,
|
||||
const Tileset&);
|
||||
virtual ~FileBasedTileSource() = default;
|
||||
|
||||
protected:
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
#include <mbgl/tile/file_based_tile_source.hpp>
|
||||
#include <mbgl/storage/file_source.hpp>
|
||||
#include <mbgl/style/update_parameters.hpp>
|
||||
#include <mbgl/util/tileset.hpp>
|
||||
|
||||
#include <cassert>
|
||||
|
||||
@@ -9,9 +11,17 @@ namespace mbgl {
|
||||
|
||||
template <typename T>
|
||||
FileBasedTileSource<T>::FileBasedTileSource(T& tileData_,
|
||||
const Resource& resource_,
|
||||
FileSource& fileSource_)
|
||||
: tileData(tileData_), resource(resource_), fileSource(fileSource_) {
|
||||
const OverscaledTileID& id,
|
||||
const style::UpdateParameters& parameters,
|
||||
const Tileset& tileset)
|
||||
: tileData(tileData_),
|
||||
resource(Resource::tile(
|
||||
tileset.tiles.at(0),
|
||||
parameters.pixelRatio,
|
||||
id.canonical.x,
|
||||
id.canonical.y,
|
||||
id.canonical.z)),
|
||||
fileSource(parameters.fileSource) {
|
||||
assert(!request);
|
||||
if (fileSource.supportsOptionalRequests()) {
|
||||
// When supported, the first request is always optional, even if the TileSource
|
||||
|
||||
@@ -18,13 +18,8 @@ RasterTileData::RasterTileData(const OverscaledTileID& id_,
|
||||
const Tileset& tileset)
|
||||
: TileData(id_),
|
||||
texturePool(parameters.texturePool),
|
||||
worker(parameters.worker) {
|
||||
assert(!tileset.tiles.empty());
|
||||
const auto resource = Resource::tile(
|
||||
tileset.tiles.at(0), parameters.pixelRatio, id_.canonical.x,
|
||||
id_.canonical.y, id_.canonical.z);
|
||||
tileSource = std::make_unique<FileBasedTileSource<RasterTileData>>(
|
||||
*this, resource, parameters.fileSource);
|
||||
worker(parameters.worker),
|
||||
tileSource(std::make_unique<FileBasedTileSource<RasterTileData>>(*this, id_, parameters, tileset)) {
|
||||
}
|
||||
|
||||
void RasterTileData::setError(std::exception_ptr err) {
|
||||
|
||||
@@ -4,22 +4,16 @@
|
||||
#include <mbgl/tile/tile_source.hpp>
|
||||
#include <mbgl/tile/vector_tile.hpp>
|
||||
#include <mbgl/style/update_parameters.hpp>
|
||||
#include <mbgl/util/tileset.hpp>
|
||||
#include <mbgl/util/async_request.hpp>
|
||||
|
||||
namespace mbgl {
|
||||
|
||||
VectorTileData::VectorTileData(const OverscaledTileID& overscaledTileID,
|
||||
VectorTileData::VectorTileData(const OverscaledTileID& id_,
|
||||
std::string sourceID,
|
||||
const style::UpdateParameters& parameters,
|
||||
const Tileset& tileset)
|
||||
: GeometryTileData(overscaledTileID, sourceID, parameters.style, parameters.mode) {
|
||||
assert(!tileset.tiles.empty());
|
||||
const auto resource = Resource::tile(
|
||||
tileset.tiles.at(0), parameters.pixelRatio, overscaledTileID.canonical.x,
|
||||
overscaledTileID.canonical.y, overscaledTileID.canonical.z);
|
||||
tileSource = std::make_unique<FileBasedTileSource<VectorTileData>>(
|
||||
*this, resource, parameters.fileSource);
|
||||
: GeometryTileData(id_, sourceID, parameters.style, parameters.mode),
|
||||
tileSource(std::make_unique<FileBasedTileSource<VectorTileData>>(*this, id_, parameters, tileset)) {
|
||||
}
|
||||
|
||||
VectorTileData::~VectorTileData() = default;
|
||||
|
||||
Reference in New Issue
Block a user