#pragma once #include #include #include #include #include #include #include #include namespace mbgl { namespace style { template class LightProperty { public: using TransitionableType = Transitionable>; using UnevaluatedType = Transitioning>; using EvaluatorType = PropertyEvaluator; using PossiblyEvaluatedType = T; using Type = T; static constexpr bool IsDataDriven = false; static constexpr bool IsOverridable = false; }; struct LightAnchor : LightProperty { static LightAnchorType defaultValue() { return LightAnchorType::Viewport; } }; struct LightPosition : LightProperty { static Position defaultValue() { std::array default_ = { { 1.15, 210, 30 } }; return Position{ { default_ } }; } }; struct LightColor : LightProperty { static Color defaultValue() { return Color::white(); } }; struct LightIntensity : LightProperty { static float defaultValue() { return 0.5; } }; using LightProperties = Properties; class Light::Impl { public: LightProperties::Transitionable properties; }; } // namespace style } // namespace mbgl