#ifndef MBGL_STYLE_FUNCTION #define MBGL_STYLE_FUNCTION #include #include #include #include #include namespace mbgl { class StyleCalculationParameters; template class Function { public: using Stop = std::pair; using Stops = std::vector; // TODO: make explicit /* explicit */ Function(const T& constant) : stops({{ 0, constant }}) {} explicit Function(const Stops& stops_, float base_) : base(base_), stops(stops_) {} T evaluate(const StyleCalculationParameters&) const; private: float base = 1; std::vector> stops; }; // Partial specialization for cross-faded properties (*-pattern, line-dasharray). template class Function> { public: using Stop = std::pair; using Stops = std::vector; // TODO: make explicit /* explicit */ Function(const T& constant) : stops({{ 0, constant }}) {} explicit Function(const Stops& stops_) : stops(stops_) {} Faded evaluate(const StyleCalculationParameters&) const; private: std::vector> stops; }; } #endif