[android] Add Android bindings

This commit is contained in:
Alexander Shalamov
2020-03-21 22:14:57 +02:00
parent 15f73a06f2
commit ca1ae7604c
2 changed files with 30 additions and 7 deletions

View File

@@ -118,6 +118,22 @@ static std::unique_ptr<Source> createSourcePeer(jni::JNIEnv& env,
return jni::Local<jni::Integer>(env, nullptr);
}
void Source::setMaxOverscaleFactorForParentTiles(jni::JNIEnv& env, jni::Integer& maxOverscaleFactor) {
if (!maxOverscaleFactor) {
source.setMaxOverscaleFactorForParentTiles(nullopt);
} else {
source.setMaxOverscaleFactorForParentTiles(jni::Unbox(env, maxOverscaleFactor));
}
}
jni::Local<jni::Integer> Source::getMaxOverscaleFactorForParentTiles(jni::JNIEnv& env) {
auto maxOverscaleFactor = source.getMaxOverscaleFactorForParentTiles();
if (maxOverscaleFactor) {
return jni::Box(env, jni::jint(*maxOverscaleFactor));
}
return jni::Local<jni::Integer>(env, nullptr);
}
void Source::addToStyle(JNIEnv& env, const jni::Object<Source>& obj, mbgl::style::Style& style) {
if (!ownedSource) {
throw std::runtime_error("Cannot add source twice");
@@ -189,13 +205,16 @@ static std::unique_ptr<Source> createSourcePeer(jni::JNIEnv& env,
#define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name)
// Register the peer
jni::RegisterNativePeer<Source>(env,
javaClass,
"nativePtr",
METHOD(&Source::getId, "nativeGetId"),
METHOD(&Source::getAttribution, "nativeGetAttribution"),
METHOD(&Source::setPrefetchZoomDelta, "nativeSetPrefetchZoomDelta"),
METHOD(&Source::getPrefetchZoomDelta, "nativeGetPrefetchZoomDelta"));
jni::RegisterNativePeer<Source>(
env,
javaClass,
"nativePtr",
METHOD(&Source::getId, "nativeGetId"),
METHOD(&Source::getAttribution, "nativeGetAttribution"),
METHOD(&Source::setPrefetchZoomDelta, "nativeSetPrefetchZoomDelta"),
METHOD(&Source::getPrefetchZoomDelta, "nativeGetPrefetchZoomDelta"),
METHOD(&Source::setMaxOverscaleFactorForParentTiles, "nativeSetMaxOverscaleFactorForParentTiles"),
METHOD(&Source::getMaxOverscaleFactorForParentTiles, "nativeGetMaxOverscaleFactorForParentTiles"));
// Register subclasses
GeoJSONSource::registerNative(env);

View File

@@ -48,6 +48,10 @@ public:
jni::Local<jni::Integer> getPrefetchZoomDelta(jni::JNIEnv&);
void setMaxOverscaleFactorForParentTiles(jni::JNIEnv& env, jni::Integer& delta);
jni::Local<jni::Integer> getMaxOverscaleFactorForParentTiles(jni::JNIEnv&);
void addToStyle(JNIEnv& env, const jni::Object<Source>& obj, mbgl::style::Style& style);
protected: