#pragma once #include #include #include #include #include #include #include namespace mbgl { namespace style { template class PaintProperty { 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; }; template class DataDrivenPaintProperty { public: using TransitionableType = Transitionable>; using UnevaluatedType = Transitioning>; using EvaluatorType = DataDrivenPropertyEvaluator; using PossiblyEvaluatedType = PossiblyEvaluatedPropertyValue; using Type = T; static constexpr bool IsDataDriven = true; static constexpr bool IsOverridable = isOverridable; using Attribute = A; using AttributeList = TypeList; using Uniform = U; using UniformList = TypeList; }; template class CrossFadedDataDrivenPaintProperty { public: using TransitionableType = Transitionable>; using UnevaluatedType = Transitioning>; using EvaluatorType = DataDrivenPropertyEvaluator>; using PossiblyEvaluatedType = PossiblyEvaluatedPropertyValue>; using Type = T; static constexpr bool IsDataDriven = true; static constexpr bool IsOverridable = false; using Attribute = A1; using AttributeList = TypeList; using Uniform = U1; using UniformList = TypeList; }; template class CrossFadedPaintProperty { public: using TransitionableType = Transitionable>; using UnevaluatedType = Transitioning>; using EvaluatorType = CrossFadedPropertyEvaluator; using PossiblyEvaluatedType = Faded; using Type = T; static constexpr bool IsDataDriven = false; static constexpr bool IsOverridable = false; }; /* * Special-case paint property traits for heatmap-color and line-gradient, * needed because these values do not fit into the * Undefined | Value | {Camera,Source,Composite}Function taxonomy that applies * to all other paint properties. * * These traits are provided here--despite the fact that color ramps * is not used like other paint properties--to allow the parameter-pack-based * batch evaluation of paint properties to compile properly. */ class ColorRampProperty { public: using TransitionableType = Transitionable; using UnevaluatedType = Transitioning; using EvaluatorType = PropertyEvaluator; using PossiblyEvaluatedType = Color; using Type = Color; static constexpr bool IsDataDriven = false; static constexpr bool IsOverridable = false; static Color defaultValue() { return {}; } }; } // namespace style } // namespace mbgl