#pragma once #include #include #include "../../conversion/conversion.hpp" #include "../../conversion/constant.hpp" #include "property_expression.hpp" #include "types.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::jobject* operator()(const mbgl::style::Undefined) const { return nullptr; } jni::jobject* operator()(const T& value) const { return *convert(env, value); } jni::jobject* operator()(const mbgl::style::PropertyExpression& value) const { return *convert>(env, value); } private: jni::JNIEnv& env; }; /** * Convert core property values to java */ template struct Converter> { 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 { Result operator()(jni::JNIEnv& env, const mbgl::style::ColorRampPropertyValue& value) const { PropertyValueEvaluator evaluator(env); return *convert(env, value.evaluate(evaluator)); } }; } // namespace conversion } // namespace android } // namespace mbgl