#include #include #include #include namespace mbgl { std::unique_ptr FillLayer::clone() const { return std::make_unique(*this); } void FillLayer::parsePaints(const JSValue& layer) { paint.antialias.parse("fill-antialias", layer); paint.opacity.parse("fill-opacity", layer); paint.color.parse("fill-color", layer); paint.outlineColor.parse("fill-outline-color", layer); paint.translate.parse("fill-translate", layer); paint.translateAnchor.parse("fill-translate-anchor", layer); paint.pattern.parse("fill-pattern", layer); } void FillLayer::cascade(const StyleCascadeParameters& parameters) { paint.antialias.cascade(parameters); paint.opacity.cascade(parameters); paint.color.cascade(parameters); paint.outlineColor.cascade(parameters); paint.translate.cascade(parameters); paint.translateAnchor.cascade(parameters); paint.pattern.cascade(parameters); } bool FillLayer::recalculate(const StyleCalculationParameters& parameters) { bool hasTransitions = false; hasTransitions |= paint.antialias.calculate(parameters); hasTransitions |= paint.opacity.calculate(parameters); hasTransitions |= paint.color.calculate(parameters); hasTransitions |= paint.outlineColor.calculate(parameters); hasTransitions |= paint.translate.calculate(parameters); hasTransitions |= paint.translateAnchor.calculate(parameters); hasTransitions |= paint.pattern.calculate(parameters); passes = RenderPass::None; if (paint.antialias) { passes |= RenderPass::Translucent; } if (!paint.pattern.value.from.empty() || (paint.color.value[3] * paint.opacity) < 1.0f) { passes |= RenderPass::Translucent; } else { passes |= RenderPass::Opaque; } return hasTransitions; } std::unique_ptr FillLayer::createBucket(StyleBucketParameters& parameters) const { auto bucket = std::make_unique(); parameters.eachFilteredFeature(filter, [&] (const auto& feature) { bucket->addGeometry(getGeometries(feature)); }); return std::move(bucket); } } // namespace mbgl