#pragma once #include #include #include "../../conversion/conversion.hpp" #include "../../conversion/constant.hpp" #include "property_expression.hpp" namespace mbgl { namespace android { namespace conversion { /** * Conversion from core property value types to Java property value types */ template class PropertyValueEvaluator { public: PropertyValueEvaluator(jni::JNIEnv& _env) : env(_env) {} jni::Local> operator()(const mbgl::style::Undefined) const { return jni::Local>(env, nullptr); } jni::Local> operator()(const T& value) const { return std::move(*convert>>(env, value)); } jni::Local> operator()(const mbgl::style::PropertyExpression& value) const { return std::move(*convert>>(env, value)); } private: jni::JNIEnv& env; }; /** * Convert core property values to java */ template struct Converter>, mbgl::style::PropertyValue> { Result>> operator()(jni::JNIEnv& env, const mbgl::style::PropertyValue& value) const { PropertyValueEvaluator evaluator(env); return value.evaluate(evaluator); } }; /** * Convert core heat map color property value to java */ template <> struct Converter>, mbgl::style::ColorRampPropertyValue> { Result>> operator()(jni::JNIEnv& env, const mbgl::style::ColorRampPropertyValue& value) const { PropertyValueEvaluator evaluator(env); return std::move(*convert>>(env, value.evaluate(evaluator))); } }; } // namespace conversion } // namespace android } // namespace mbgl