#include #include #include #include namespace mbgl { namespace style { void SymbolLayer::Impl::cascade(const CascadeParameters& parameters) { paint.cascade(parameters); } bool SymbolLayer::Impl::evaluate(const PropertyEvaluationParameters& parameters) { paint.evaluate(parameters); // text-size and icon-size are layout properties but they also need to be evaluated as paint properties: iconSize = layout.evaluate(parameters); textSize = layout.evaluate(parameters); passes = ((paint.evaluated.get() > 0 && (paint.evaluated.get().a > 0 || paint.evaluated.get().a > 0) && iconSize > 0) || (paint.evaluated.get() > 0 && (paint.evaluated.get().a > 0 || paint.evaluated.get().a > 0) && textSize > 0)) ? RenderPass::Translucent : RenderPass::None; return paint.hasTransition(); } std::unique_ptr SymbolLayer::Impl::createBucket(const BucketParameters&, const std::vector&) const { assert(false); // Should be calling createLayout() instead. return nullptr; } std::unique_ptr SymbolLayer::Impl::createLayout(const BucketParameters& parameters, const std::vector& group, const GeometryTileLayer& layer) const { return std::make_unique(parameters, group, layer, *spriteAtlas); } SymbolPropertyValues SymbolLayer::Impl::iconPropertyValues(const SymbolLayoutProperties::Evaluated& layout_) const { return SymbolPropertyValues { layout_.get(), // icon-pitch-alignment is not yet implemented; inherit the rotation alignment layout_.get(), layout_.get(), paint.evaluated.get(), paint.evaluated.get(), paint.evaluated.get(), paint.evaluated.get(), paint.evaluated.get(), paint.evaluated.get(), paint.evaluated.get(), iconSize, 1.0f }; } SymbolPropertyValues SymbolLayer::Impl::textPropertyValues(const SymbolLayoutProperties::Evaluated& layout_) const { return SymbolPropertyValues { layout_.get(), layout_.get(), layout_.get(), paint.evaluated.get(), paint.evaluated.get(), paint.evaluated.get(), paint.evaluated.get(), paint.evaluated.get(), paint.evaluated.get(), paint.evaluated.get(), textSize, 24.0f }; } } // namespace style } // namespace mbgl