#include "raster_dem_source.hpp" #include "../android_conversion.hpp" #include "../value.hpp" #include "../conversion/url_or_tileset.hpp" #include "source.hpp" #include #include namespace mbgl { namespace android { RasterDEMSource::RasterDEMSource(jni::JNIEnv& env, jni::String sourceId, jni::Object<> urlOrTileSet, jni::jint tileSize) : Source( env, std::make_unique( jni::Make(env, sourceId), convertURLOrTileset(Value(env, urlOrTileSet)), tileSize ) ) { } RasterDEMSource::RasterDEMSource(jni::JNIEnv& env, mbgl::style::Source& coreSource, AndroidRendererFrontend& frontend) : Source(env, coreSource, createJavaPeer(env), frontend) { } RasterDEMSource::~RasterDEMSource() = default; jni::String RasterDEMSource::getURL(jni::JNIEnv& env) { optional url = source.as()->RasterDEMSource::getURL(); return url ? jni::Make(env, *url) : jni::String(); } jni::Class RasterDEMSource::javaClass; jni::Object RasterDEMSource::createJavaPeer(jni::JNIEnv& env) { static auto constructor = RasterDEMSource::javaClass.template GetConstructor(env); return jni::Object(RasterDEMSource::javaClass.New(env, constructor, reinterpret_cast(this)).Get()); } void RasterDEMSource::registerNative(jni::JNIEnv& env) { // Lookup the class RasterDEMSource::javaClass = *jni::Class::Find(env).NewGlobalRef(env).release(); #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod(name) // Register the peer jni::RegisterNativePeer( env, RasterDEMSource::javaClass, "nativePtr", std::make_unique, jni::jint>, "initialize", "finalize", METHOD(&RasterDEMSource::getURL, "nativeGetUrl") ); } } // namespace android } // namespace mbgl