1 #pragma once 2 3 #include <mbgl/renderer/render_layer.hpp> 4 #include <mbgl/style/layers/fill_extrusion_layer_impl.hpp> 5 #include <mbgl/style/layers/fill_extrusion_layer_properties.hpp> 6 #include <mbgl/util/optional.hpp> 7 #include <mbgl/util/offscreen_texture.hpp> 8 9 namespace mbgl { 10 11 class RenderFillExtrusionLayer: public RenderLayer { 12 public: 13 RenderFillExtrusionLayer(Immutable<style::FillExtrusionLayer::Impl>); 14 ~RenderFillExtrusionLayer() final = default; 15 16 void transition(const TransitionParameters&) override; 17 void evaluate(const PropertyEvaluationParameters&) override; 18 bool hasTransition() const override; 19 void render(PaintParameters&, RenderSource*) override; 20 21 bool queryIntersectsFeature( 22 const GeometryCoordinates&, 23 const GeometryTileFeature&, 24 const float, 25 const TransformState&, 26 const float, 27 const mat4&) const override; 28 29 std::unique_ptr<Bucket> createBucket(const BucketParameters&, const std::vector<const RenderLayer*>&) const override; 30 31 // Paint properties 32 style::FillExtrusionPaintProperties::Unevaluated unevaluated; 33 style::FillExtrusionPaintProperties::PossiblyEvaluated evaluated; 34 35 const style::FillExtrusionLayer::Impl& impl() const; 36 37 optional<OffscreenTexture> renderTexture; 38 }; 39 40 template <> is() const41inline bool RenderLayer::is<RenderFillExtrusionLayer>() const { 42 return type == style::LayerType::FillExtrusion; 43 } 44 45 } // namespace mbgl 46