#include #include #include #include #include namespace mbgl { namespace style { void FillLayer::Impl::cascade(const CascadeParameters& parameters) { paint.cascade(parameters); } bool FillLayer::Impl::evaluate(const PropertyEvaluationParameters& parameters) { paint.evaluate(parameters); if (paint.unevaluated.get().isUndefined()) { paint.evaluated.get() = paint.evaluated.get(); } passes = RenderPass::None; if (paint.evaluated.get()) { passes |= RenderPass::Translucent; } if (!paint.unevaluated.get().isUndefined() || paint.evaluated.get().constantOr(Color()).a < 1.0f || paint.evaluated.get().constantOr(0) < 1.0f) { passes |= RenderPass::Translucent; } else { passes |= RenderPass::Opaque; } return paint.hasTransition(); } std::unique_ptr FillLayer::Impl::createBucket(const BucketParameters& parameters, const std::vector& layers) const { return std::make_unique(parameters, layers); } bool FillLayer::Impl::queryIntersectsFeature( const GeometryCoordinates& queryGeometry, const GeometryTileFeature& feature, const float, const float bearing, const float pixelsToTileUnits) const { auto translatedQueryGeometry = FeatureIndex::translateQueryGeometry( queryGeometry, paint.evaluated.get(), paint.evaluated.get(), bearing, pixelsToTileUnits); return util::polygonIntersectsMultiPolygon(translatedQueryGeometry.value_or(queryGeometry), feature.getGeometries()); } } // namespace style } // namespace mbgl