#include "polygon.hpp" #include "../conversion/color.hpp" namespace mbgl { namespace android { mbgl::FillAnnotation Polygon::toAnnotation(jni::JNIEnv& env, jni::Object polygon) { auto points = jni::SeizeLocal(env, Polygon::getPoints(env, polygon)); auto holes = jni::SeizeLocal(env, Polygon::getHoles(env, polygon)); mbgl::Polygon geometry { MultiPoint::toGeometry>(env, *points) }; auto jHoleListsArray = jni::SeizeLocal(env, java::util::List::toArray(env, *holes)); std::size_t jHoleListsSize = jHoleListsArray->Length(env); for (std::size_t i = 0; i < jHoleListsSize; i++) { geometry.push_back(MultiPoint::toGeometry>(env, *jni::SeizeLocal(env, jHoleListsArray->Get(env, i)))); } mbgl::FillAnnotation annotation { geometry }; annotation.opacity = { Polygon::getOpacity(env, polygon) }; annotation.color = { Polygon::getFillColor(env, polygon) }; annotation.outlineColor = { Polygon::getOutlineColor(env, polygon) }; return annotation; } jni::Object Polygon::getPoints(jni::JNIEnv& env, jni::Object polygon) { static auto javaClass = jni::Class::Singleton(env); static auto field = javaClass.GetField>(env, "points"); return polygon.Get(env, field); } jni::Object Polygon::getHoles(jni::JNIEnv& env, jni::Object polygon) { static auto javaClass = jni::Class::Singleton(env); static auto field = javaClass.GetField>(env, "holes"); return polygon.Get(env, field); } float Polygon::getOpacity(jni::JNIEnv& env, jni::Object polygon) { static auto javaClass = jni::Class::Singleton(env); static auto field = javaClass.GetField(env, "alpha"); return polygon.Get(env, field); } mbgl::Color Polygon::getFillColor(jni::JNIEnv& env, jni::Object polygon) { static auto javaClass = jni::Class::Singleton(env); static auto field = javaClass.GetField(env, "fillColor"); return *conversion::convert(env, polygon.Get(env, field)); } mbgl::Color Polygon::getOutlineColor(jni::JNIEnv& env, jni::Object polygon) { static auto javaClass = jni::Class::Singleton(env); static auto field = javaClass.GetField(env, "strokeColor"); return *conversion::convert(env, polygon.Get(env, field)); } void Polygon::registerNative(jni::JNIEnv& env) { jni::Class::Singleton(env); } } // namespace android } // namespace mbgl