1 #pragma once 2 3 #include <mbgl/style/property_value.hpp> 4 #include <mbgl/renderer/property_evaluation_parameters.hpp> 5 6 namespace mbgl { 7 8 template <typename T> 9 class PropertyEvaluator { 10 public: 11 using ResultType = T; 12 PropertyEvaluator(const PropertyEvaluationParameters & parameters_,T defaultValue_)13 PropertyEvaluator(const PropertyEvaluationParameters& parameters_, T defaultValue_) 14 : parameters(parameters_), 15 defaultValue(std::move(defaultValue_)) {} 16 operator ()(const style::Undefined &) const17 T operator()(const style::Undefined&) const { return defaultValue; } operator ()(const T & constant) const18 T operator()(const T& constant) const { return constant; } operator ()(const style::PropertyExpression<T> & fn) const19 T operator()(const style::PropertyExpression<T>& fn) const { return fn.evaluate(parameters.z); } 20 21 private: 22 const PropertyEvaluationParameters& parameters; 23 T defaultValue; 24 }; 25 26 } // namespace mbgl 27