#pragma once #include #include #include #include #include #include #include namespace mbgl { namespace style { template class PaintProperty { public: using EvaluatorType = PropertyEvaluator; using Type = T; static constexpr bool IsDataDriven = false; }; template class DataDrivenPaintProperty { public: using EvaluatorType = DataDrivenPropertyEvaluator; using Type = T; static constexpr bool IsDataDriven = true; using Attribute = A; using Uniform = U; }; template class CrossFadedPaintProperty { public: using EvaluatorType = CrossFadedPropertyEvaluator; using Type = T; static constexpr bool IsDataDriven = 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 EvaluatorType = PropertyEvaluator; using Type = Color; static constexpr bool IsDataDriven = false; static Color defaultValue() { return {}; } }; } // namespace style } // namespace mbgl