summaryrefslogtreecommitdiff
path: root/src/mbgl/style/source.cpp
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2016-06-06 16:59:27 -0700
committerKonstantin Käfer <mail@kkaefer.com>2016-06-10 12:42:14 +0200
commitc3a8534a4308474a4b6cad09785d53ab43cb6f6a (patch)
tree3d18d2d72bfb216a49fe18dd17fe51b46e0da6db /src/mbgl/style/source.cpp
parent908f3f083244dc264e8e6a6869c543d456b2b13c (diff)
downloadqtlocation-mapboxgl-c3a8534a4308474a4b6cad09785d53ab43cb6f6a.tar.gz
[core] Push conditional initialization into subclasses
Diffstat (limited to 'src/mbgl/style/source.cpp')
-rw-r--r--src/mbgl/style/source.cpp50
1 files changed, 5 insertions, 45 deletions
diff --git a/src/mbgl/style/source.cpp b/src/mbgl/style/source.cpp
index d0a002dd70..7e012727dd 100644
--- a/src/mbgl/style/source.cpp
+++ b/src/mbgl/style/source.cpp
@@ -2,6 +2,7 @@
#include <mbgl/style/source_observer.hpp>
#include <mbgl/map/transform.hpp>
#include <mbgl/tile/tile.hpp>
+#include <mbgl/tile/tile_source.hpp>
#include <mbgl/renderer/painter.hpp>
#include <mbgl/util/exception.hpp>
#include <mbgl/util/constants.hpp>
@@ -19,11 +20,6 @@
#include <mbgl/util/string.hpp>
#include <mbgl/util/tile_cover.hpp>
-#include <mbgl/tile/vector_tile_source.hpp>
-#include <mbgl/tile/geojson_tile_source.hpp>
-#include <mbgl/tile/annotation_tile_source.hpp>
-#include <mbgl/tile/image_tile_source.hpp>
-
#include <mbgl/tile/raster_tile_data.hpp>
#include <mbgl/tile/annotation_tile_data.hpp>
#include <mbgl/tile/geojson_tile_data.hpp>
@@ -194,49 +190,13 @@ std::unique_ptr<TileData> Source::createTile(const OverscaledTileID& overscaledT
const UpdateParameters& parameters) {
// If we don't find working tile data, we're just going to load it.
if (type == SourceType::Raster) {
- assert(!tileset->tiles.empty());
- const auto resource = Resource::tile(
- tileset->tiles.at(0), parameters.pixelRatio, overscaledTileID.canonical.x,
- overscaledTileID.canonical.y, overscaledTileID.canonical.z);
- auto data = std::make_unique<RasterTileData>(overscaledTileID, parameters.texturePool,
- parameters.worker);
- data->setTileSource(
- std::make_unique<ImageTileSource>(*data, resource, parameters.fileSource));
-
- // Need a std::move here to create a std::unique_ptr<TileData> from
- // std::unique_ptr<GeometryTileData>.
- return std::move(data);
+ return std::make_unique<RasterTileData>(overscaledTileID, parameters, *tileset);
} else if (type == SourceType::Vector) {
- assert(!tileset->tiles.empty());
- const auto resource = Resource::tile(
- tileset->tiles.at(0), parameters.pixelRatio, overscaledTileID.canonical.x,
- overscaledTileID.canonical.y, overscaledTileID.canonical.z);
- auto data = std::make_unique<VectorTileData>(overscaledTileID, id, parameters.style,
- parameters.mode);
- data->setTileSource(
- std::make_unique<VectorTileSource>(*data, resource, parameters.fileSource));
-
- // Need a std::move here to create a std::unique_ptr<TileData> from
- // std::unique_ptr<GeometryTileData>.
- return std::move(data);
+ return std::make_unique<VectorTileData>(overscaledTileID, id, parameters, *tileset);
} else if (type == SourceType::Annotations) {
- auto data = std::make_unique<AnnotationTileData>(overscaledTileID, id, parameters.style,
- parameters.mode);
- data->setTileSource(std::make_unique<AnnotationTileSource>(
- *data, overscaledTileID, parameters.annotationManager));
-
- // Need a std::move here to create a std::unique_ptr<TileData> from
- // std::unique_ptr<GeometryTileData>.
- return std::move(data);
+ return std::make_unique<AnnotationTileData>(overscaledTileID, id, parameters);
} else if (type == SourceType::GeoJSON) {
- auto data = std::make_unique<GeoJSONTileData>(overscaledTileID, id, parameters.style,
- parameters.mode);
- data->setTileSource(
- std::make_unique<GeoJSONTileSource>(*data, geojsonvt.get(), overscaledTileID));
-
- // Need a std::move here to create a std::unique_ptr<TileData> from
- // std::unique_ptr<GeometryTileData>.
- return std::move(data);
+ return std::make_unique<GeoJSONTileData>(overscaledTileID, id, parameters, geojsonvt.get());
} else {
Log::Warning(Event::Style, "Source type '%s' is not implemented",
SourceTypeClass(type).c_str());