[core] Add use LayerTypeInfo::Layout for the layers that require Layout

This commit is contained in:
Alexander Shalamov
2018-10-30 17:41:53 +02:00
parent 05d5edfa74
commit eb170b250a
6 changed files with 10 additions and 6 deletions

View File

@@ -28,11 +28,11 @@ const style::FillExtrusionLayer::Impl& RenderFillExtrusionLayer::impl() const {
}
std::unique_ptr<Bucket> RenderFillExtrusionLayer::createBucket(const BucketParameters&, const std::vector<const RenderLayer*>&) const {
assert(false); // Should be calling createLayout() instead.
// Should be calling createLayout() instead.
assert(baseImpl->getTypeInfo()->layout == LayerTypeInfo::Layout::NotRequired);
return nullptr;
}
std::unique_ptr<Layout> RenderFillExtrusionLayer::createLayout(const BucketParameters& parameters,
const std::vector<const RenderLayer*>& group,
std::unique_ptr<GeometryTileLayer> layer,

View File

@@ -26,7 +26,8 @@ const style::FillLayer::Impl& RenderFillLayer::impl() const {
}
std::unique_ptr<Bucket> RenderFillLayer::createBucket(const BucketParameters&, const std::vector<const RenderLayer*>&) const {
assert(false); // Should be calling createLayout() instead.
// Should be calling createLayout() instead.
assert(baseImpl->getTypeInfo()->layout == LayerTypeInfo::Layout::NotRequired);
return nullptr;
}

View File

@@ -28,7 +28,8 @@ const style::LineLayer::Impl& RenderLineLayer::impl() const {
}
std::unique_ptr<Bucket> RenderLineLayer::createBucket(const BucketParameters&, const std::vector<const RenderLayer*>&) const {
assert(false); // Should be calling createLayout() instead.
// Should be calling createLayout() instead.
assert(baseImpl->getTypeInfo()->layout == LayerTypeInfo::Layout::NotRequired);
return nullptr;
}

View File

@@ -51,6 +51,7 @@ public:
std::unique_ptr<GeometryTileLayer>,
GlyphDependencies&,
ImageDependencies&) const override;
// Paint properties
style::LinePaintProperties::Unevaluated unevaluated;
RenderLinePaintProperties::PossiblyEvaluated evaluated;

View File

@@ -32,7 +32,8 @@ const style::SymbolLayer::Impl& RenderSymbolLayer::impl() const {
}
std::unique_ptr<Bucket> RenderSymbolLayer::createBucket(const BucketParameters&, const std::vector<const RenderLayer*>&) const {
assert(false); // Should be calling createLayout() instead.
// Should be calling createLayout() instead.
assert(baseImpl->getTypeInfo()->layout == LayerTypeInfo::Layout::NotRequired);
return nullptr;
}

View File

@@ -375,7 +375,7 @@ void GeometryTileWorker::parse() {
// are needed to render the layer. They use the intermediate Layout data structure to accomplish this,
// and either immediately create a bucket if no images/glyphs are used, or the Layout is stored until
// the images/glyphs are available to add the features to the buckets.
if (leader.as<RenderSymbolLayer>() ||leader.as<RenderLineLayer>() || leader.as<RenderFillLayer>() || leader.as<RenderFillExtrusionLayer>()) {
if (leader.baseImpl->getTypeInfo()->layout == LayerTypeInfo::Layout::Required) {
auto layout = leader.createLayout(parameters, group, std::move(geometryLayer), glyphDependencies, imageDependencies);
if (layout->hasDependencies()) {
layouts.push_back(std::move(layout));