[core] Factor common code into FileBasedTileSource

This commit is contained in:
John Firebaugh
2016-06-06 18:54:47 -07:00
committed by Konstantin Käfer
parent a1d1bb0c6d
commit 94cfb1eb5a
4 changed files with 22 additions and 20 deletions

View File

@@ -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:

View File

@@ -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

View File

@@ -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) {

View File

@@ -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;