1 #pragma once 2 3 #include <mbgl/renderer/render_layer.hpp> 4 #include <mbgl/style/layers/heatmap_layer_impl.hpp> 5 #include <mbgl/style/layers/heatmap_layer_properties.hpp> 6 #include <mbgl/util/optional.hpp> 7 #include <mbgl/util/offscreen_texture.hpp> 8 9 namespace mbgl { 10 11 class RenderHeatmapLayer: public RenderLayer { 12 public: 13 RenderHeatmapLayer(Immutable<style::HeatmapLayer::Impl>); 14 ~RenderHeatmapLayer() 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 void updateColorRamp(); 30 31 std::unique_ptr<Bucket> createBucket(const BucketParameters&, const std::vector<const RenderLayer*>&) const override; 32 33 // Paint properties 34 style::HeatmapPaintProperties::Unevaluated unevaluated; 35 style::HeatmapPaintProperties::PossiblyEvaluated evaluated; 36 37 const style::HeatmapLayer::Impl& impl() const; 38 39 PremultipliedImage colorRamp; 40 optional<OffscreenTexture> renderTexture; 41 optional<gl::Texture> colorRampTexture; 42 }; 43 44 template <> is() const45inline bool RenderLayer::is<RenderHeatmapLayer>() const { 46 return type == style::LayerType::Heatmap; 47 } 48 49 } // namespace mbgl 50