1 #pragma once 2 3 #include <mbgl/renderer/render_layer.hpp> 4 #include <mbgl/style/layers/hillshade_layer_impl.hpp> 5 #include <mbgl/style/layers/hillshade_layer_properties.hpp> 6 #include <mbgl/tile/tile_id.hpp> 7 8 namespace mbgl { 9 10 class RenderHillshadeLayer: public RenderLayer { 11 public: 12 RenderHillshadeLayer(Immutable<style::HillshadeLayer::Impl>); 13 ~RenderHillshadeLayer() final = default; 14 15 void transition(const TransitionParameters&) override; 16 void evaluate(const PropertyEvaluationParameters&) override; 17 bool hasTransition() const override; 18 19 void render(PaintParameters&, RenderSource* src) override; 20 21 std::unique_ptr<Bucket> createBucket(const BucketParameters&, const std::vector<const RenderLayer*>&) const override; 22 23 // Paint properties 24 style::HillshadePaintProperties::Unevaluated unevaluated; 25 style::HillshadePaintProperties::PossiblyEvaluated evaluated; 26 27 const style::HillshadeLayer::Impl& impl() const; 28 private: 29 const std::array<float, 2> getLatRange(const UnwrappedTileID& id); 30 const std::array<float, 2> getLight(const PaintParameters& parameters); 31 }; 32 33 template <> is() const34inline bool RenderLayer::is<RenderHillshadeLayer>() const { 35 return type == style::LayerType::Hillshade; 36 } 37 38 } // namespace mbgl 39