1 #pragma once
2 
3 #include <mbgl/style/light_impl.hpp>
4 #include <mbgl/util/immutable.hpp>
5 
6 namespace mbgl {
7 
8 class TransitionParameters;
9 class PropertyEvaluationParameters;
10 
11 using TransitioningLight = style::LightProperties::Unevaluated;
12 using EvaluatedLight     = style::LightProperties::PossiblyEvaluated;
13 
14 class RenderLight {
15 public:
16     RenderLight(Immutable<style::Light::Impl>);
17 
18     void transition(const TransitionParameters&);
19     void evaluate(const PropertyEvaluationParameters&);
20     bool hasTransition() const;
21 
22     const EvaluatedLight& getEvaluated() const;
23 
24     Immutable<style::Light::Impl> impl;
25 
26 private:
27     TransitioningLight transitioning;
28     EvaluatedLight evaluated;
29 };
30 
31 } // namespace mbgl
32