1 #pragma once
2 
3 #include <mbgl/renderer/render_layer.hpp>
4 #include <mbgl/style/layers/custom_layer_impl.hpp>
5 
6 namespace mbgl {
7 
8 class RenderCustomLayer: public RenderLayer {
9 public:
10     RenderCustomLayer(Immutable<style::CustomLayer::Impl>);
11     ~RenderCustomLayer() final;
12 
transition(const TransitionParameters &)13     void transition(const TransitionParameters&) final {}
14     void evaluate(const PropertyEvaluationParameters&) override;
15     bool hasTransition() const override;
16 
17     std::unique_ptr<Bucket> createBucket(const BucketParameters&, const std::vector<const RenderLayer*>&) const final;
18     void render(PaintParameters&, RenderSource*) final;
19 
20     const style::CustomLayer::Impl& impl() const;
21 
markContextDestroyed()22     void markContextDestroyed() {
23         contextDestroyed = true;
24     };
25 
26 private:
27     bool contextDestroyed = false;
28     std::shared_ptr<style::CustomLayerHost> host;
29 };
30 
31 template <>
is() const32 inline bool RenderLayer::is<RenderCustomLayer>() const {
33     return type == style::LayerType::Custom;
34 }
35 
36 } // namespace mbgl
37