#pragma once #include #include #include #include #include namespace mbgl { template class PatternLayout; class FillExtrusionBucket; class RenderFillExtrusionLayer: public RenderLayer { public: using StyleLayerImpl = style::FillExtrusionLayer::Impl; using PatternProperty = style::FillExtrusionPattern; RenderFillExtrusionLayer(Immutable); ~RenderFillExtrusionLayer() final = default; void transition(const TransitionParameters&) override; void evaluate(const PropertyEvaluationParameters&) override; bool hasTransition() const override; bool hasCrossfade() const override; void render(PaintParameters&, RenderSource*) override; style::FillExtrusionPaintProperties::PossiblyEvaluated paintProperties() const; bool queryIntersectsFeature( const GeometryCoordinates&, const GeometryTileFeature&, const float, const TransformState&, const float, const mat4&) const override; std::unique_ptr createBucket(const BucketParameters&, const std::vector&) const override; std::unique_ptr> createLayout(const BucketParameters&, const std::vector&, std::unique_ptr, ImageDependencies&) const; // Paint properties style::FillExtrusionPaintProperties::Unevaluated unevaluated; style::FillExtrusionPaintProperties::PossiblyEvaluated evaluated; const style::FillExtrusionLayer::Impl& impl() const; optional renderTexture; private: CrossfadeParameters crossfade; }; template <> inline bool RenderLayer::is() const { return type == style::LayerType::FillExtrusion; } } // namespace mbgl