#pragma once #include #include #include #include #include #include #include #include #include namespace mbgl { namespace style { namespace conversion { template <> struct Converter { optional operator()(const Convertible& value, Error& error) const { using namespace mbgl::style::expression; if (isUndefined(value)) { return HeatmapColorPropertyValue(); } else if (isExpression(value)) { ParsingContext ctx(type::Color); ParseResult expression = ctx.parseLayerPropertyExpression(value); if (!expression) { error = { ctx.getCombinedErrors() }; return {}; } assert(*expression); if (!isFeatureConstant(**expression)) { error = { "property expressions not supported" }; return {}; } if (!isZoomConstant(**expression)) { error = { "zoom expressions not supported" }; return {}; } return {HeatmapColorPropertyValue(std::move(*expression))}; } else { error = { "heatmap-color must be an expression" }; return {}; } } }; } // namespace conversion } // namespace style } // namespace mbgl