diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2016-06-06 16:15:52 -0700 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2016-06-10 12:42:14 +0200 |
commit | 7235ba0bfba31294b4af3bf3b5475d79d96f5f36 (patch) | |
tree | 84e94b0da9bf73b7f1744aaffc3e80376af5fef8 /src/mbgl | |
parent | ebd19db42a008fd09e3723b106943dbc750a2135 (diff) | |
download | qtlocation-mapboxgl-7235ba0bfba31294b4af3bf3b5475d79d96f5f36.tar.gz |
[core] Repeat some code so that all branches are parallel
Diffstat (limited to 'src/mbgl')
-rw-r--r-- | src/mbgl/style/source.cpp | 50 |
1 files changed, 31 insertions, 19 deletions
diff --git a/src/mbgl/style/source.cpp b/src/mbgl/style/source.cpp index f7af4210e7..8f33a62d07 100644 --- a/src/mbgl/style/source.cpp +++ b/src/mbgl/style/source.cpp @@ -209,32 +209,44 @@ std::unique_ptr<TileData> Source::createTile(const OverscaledTileID& overscaledT // Need a std::move here to create a std::unique_ptr<TileData> from // std::unique_ptr<GeometryTileData>. return std::move(data); - } else { + } 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<GeometryTileData>(overscaledTileID, id, parameters.style, parameters.mode); data->setObserver(this); - 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); - data->setTileSource( - std::make_unique<VectorTileSource>(*data, resource, parameters.fileSource)); - } else if (type == SourceType::Annotations) { - data->setTileSource(std::make_unique<AnnotationTileSource>( - *data, overscaledTileID, parameters.annotationManager)); - } else if (type == SourceType::GeoJSON) { - data->setTileSource( - std::make_unique<GeoJSONTileSource>(*data, geojsonvt.get(), overscaledTileID)); - } else { - Log::Warning(Event::Style, "Source type '%s' is not implemented", - SourceTypeClass(type).c_str()); - return nullptr; - } + 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); + } else if (type == SourceType::Annotations) { + auto data = std::make_unique<GeometryTileData>(overscaledTileID, id, parameters.style, + parameters.mode); + data->setObserver(this); + 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); + } else if (type == SourceType::GeoJSON) { + auto data = std::make_unique<GeometryTileData>(overscaledTileID, id, parameters.style, + parameters.mode); + data->setObserver(this); + 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); + } else { + Log::Warning(Event::Style, "Source type '%s' is not implemented", + SourceTypeClass(type).c_str()); + return nullptr; } } |