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