move to abstract base classes & shared pointers
This commit is contained in:
committed by
John Firebaugh
parent
41c3b82d3e
commit
0a8a0aee90
@@ -189,7 +189,7 @@ std::unique_ptr<Bucket> TileParser::createBucket(const StyleBucket &bucketDesc)
|
||||
|
||||
auto layer_it = vectorTile.layers.find(bucketDesc.source_layer);
|
||||
if (layer_it != vectorTile.layers.end()) {
|
||||
const GeometryTileLayer &layer = layer_it->second;
|
||||
const util::ptr<GeometryTileLayer> layer = layer_it->second;
|
||||
if (bucketDesc.type == StyleLayerType::Fill) {
|
||||
return createFillBucket(layer, bucketDesc);
|
||||
} else if (bucketDesc.type == StyleLayerType::Line) {
|
||||
@@ -213,24 +213,24 @@ std::unique_ptr<Bucket> TileParser::createBucket(const StyleBucket &bucketDesc)
|
||||
}
|
||||
|
||||
template <class Bucket>
|
||||
void TileParser::addBucketGeometries(Bucket& bucket, const GeometryTileLayer& layer, const FilterExpression &filter) {
|
||||
GeometryFilteredTileLayer filtered_layer(layer, filter);
|
||||
GeometryTileFeature feature = filtered_layer.nextMatchingFeature();
|
||||
while (feature.type != GeometryFeatureType::Unknown) {
|
||||
void TileParser::addBucketGeometries(Bucket& bucket, const util::ptr<GeometryTileLayer> layer, const FilterExpression &filter) {
|
||||
util::ptr<GeometryFilteredTileLayer> filtered_layer = layer->createFilter(filter);
|
||||
util::ptr<GeometryTileFeature> feature = filtered_layer->nextMatchingFeature();
|
||||
while (feature->type != GeometryFeatureType::Unknown) {
|
||||
if (obsolete())
|
||||
return;
|
||||
|
||||
Geometry geometry = feature.nextGeometry();
|
||||
Geometry geometry = feature->nextGeometry();
|
||||
while (!geometry.is<std::false_type>()) {
|
||||
bucket->addGeometry(geometry);
|
||||
geometry = feature.nextGeometry();
|
||||
geometry = feature->nextGeometry();
|
||||
}
|
||||
|
||||
feature = filtered_layer.nextMatchingFeature();
|
||||
feature = filtered_layer->nextMatchingFeature();
|
||||
}
|
||||
}
|
||||
|
||||
std::unique_ptr<Bucket> TileParser::createFillBucket(const GeometryTileLayer &layer,
|
||||
std::unique_ptr<Bucket> TileParser::createFillBucket(const util::ptr<GeometryTileLayer> layer,
|
||||
const StyleBucket &bucket_desc) {
|
||||
auto fill = parseStyleLayoutFill(bucket_desc, tile.id.z);
|
||||
auto bucket = util::make_unique<FillBucket>(std::move(fill),
|
||||
@@ -241,7 +241,7 @@ std::unique_ptr<Bucket> TileParser::createFillBucket(const GeometryTileLayer &la
|
||||
return obsolete() ? nullptr : std::move(bucket);
|
||||
}
|
||||
|
||||
std::unique_ptr<Bucket> TileParser::createLineBucket(const GeometryTileLayer &layer,
|
||||
std::unique_ptr<Bucket> TileParser::createLineBucket(const util::ptr<GeometryTileLayer> layer,
|
||||
const StyleBucket &bucket_desc) {
|
||||
auto line = parseStyleLayoutLine(bucket_desc, tile.id.z);
|
||||
auto bucket = util::make_unique<LineBucket>(std::move(line),
|
||||
@@ -252,7 +252,7 @@ std::unique_ptr<Bucket> TileParser::createLineBucket(const GeometryTileLayer &la
|
||||
return obsolete() ? nullptr : std::move(bucket);
|
||||
}
|
||||
|
||||
std::unique_ptr<Bucket> TileParser::createSymbolBucket(const GeometryTileLayer &layer,
|
||||
std::unique_ptr<Bucket> TileParser::createSymbolBucket(const util::ptr<GeometryTileLayer> layer,
|
||||
const StyleBucket &bucket_desc) {
|
||||
auto symbol = parseStyleLayoutSymbol(bucket_desc, tile.id.z);
|
||||
auto bucket = util::make_unique<SymbolBucket>(std::move(symbol), *collision);
|
||||
|
||||
Reference in New Issue
Block a user