#include "polygon.hpp" #include "../conversion/color.hpp" namespace mbgl { namespace android { jni::Class Polygon::javaClass; mbgl::FillAnnotation Polygon::toAnnotation(jni::JNIEnv& env, jni::Object polygon) { auto points = Polygon::getPoints(env, polygon); mbgl::FillAnnotation annotation { mbgl::Polygon { MultiPoint::toGeometry>(env, points) } }; annotation.opacity = { Polygon::getOpacity(env, polygon) }; annotation.color = { Polygon::getFillColor(env, polygon) }; annotation.outlineColor = { Polygon::getOutlineColor(env, polygon) }; jni::DeleteLocalRef(env, points); return annotation; } jni::Object Polygon::getPoints(jni::JNIEnv& env, jni::Object polygon) { static auto field = Polygon::javaClass.GetField>(env, "points"); return polygon.Get(env, field); } float Polygon::getOpacity(jni::JNIEnv& env, jni::Object polygon) { static auto field = Polygon::javaClass.GetField(env, "alpha"); return polygon.Get(env, field); } mbgl::Color Polygon::getFillColor(jni::JNIEnv& env, jni::Object polygon) { static auto field = Polygon::javaClass.GetField(env, "fillColor"); return *conversion::convert(env, polygon.Get(env, field)); } mbgl::Color Polygon::getOutlineColor(jni::JNIEnv& env, jni::Object polygon) { static auto field = Polygon::javaClass.GetField(env, "strokeColor"); return *conversion::convert(env, polygon.Get(env, field)); } void Polygon::registerNative(jni::JNIEnv& env) { Polygon::javaClass = *jni::Class::Find(env).NewGlobalRef(env).release(); } } // namespace android } // namespace mbgl