diff options
3 files changed, 52 insertions, 0 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineTilePyramidRegionDefinition.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineTilePyramidRegionDefinition.java index ea9a066df7..77393b8bc3 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineTilePyramidRegionDefinition.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineTilePyramidRegionDefinition.java @@ -2,6 +2,7 @@ package com.mapbox.mapboxsdk.offline; import android.os.Parcel; import android.os.Parcelable; +import android.support.annotation.CallSuper; import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.geometry.LatLngBounds; @@ -19,6 +20,9 @@ import com.mapbox.mapboxsdk.geometry.LatLngBounds; */ public class OfflineTilePyramidRegionDefinition implements OfflineRegionDefinition, Parcelable { + // Holds the pointer to the native peer after initialisation + private long nativePtr = 0; + private String styleURL; private LatLngBounds bounds; private double minZoom; @@ -26,6 +30,15 @@ public class OfflineTilePyramidRegionDefinition implements OfflineRegionDefiniti private float pixelRatio; /** + * Internal use + * + * @param nativePtr - pointer to native peer + */ + public OfflineTilePyramidRegionDefinition(long nativePtr) { + this.nativePtr = nativePtr; + } + + /** * Constructor to create an OfflineTilePyramidDefinition from parameters. * * @param styleURL the style @@ -42,6 +55,7 @@ public class OfflineTilePyramidRegionDefinition implements OfflineRegionDefiniti this.minZoom = minZoom; this.maxZoom = maxZoom; this.pixelRatio = pixelRatio; + initialize(); } /** @@ -58,6 +72,7 @@ public class OfflineTilePyramidRegionDefinition implements OfflineRegionDefiniti this.minZoom = parcel.readDouble(); this.maxZoom = parcel.readDouble(); this.pixelRatio = parcel.readFloat(); + initialize(); } /* @@ -84,6 +99,10 @@ public class OfflineTilePyramidRegionDefinition implements OfflineRegionDefiniti return pixelRatio; } + public int getTileCount() { + return nativeGetTileCount(); + } + /* * Parceable */ @@ -114,4 +133,16 @@ public class OfflineTilePyramidRegionDefinition implements OfflineRegionDefiniti return new OfflineTilePyramidRegionDefinition[size]; } }; + + /* + * Native + */ + + protected native void initialize(); + + @CallSuper + @Override + protected native void finalize() throws Throwable; + + private native int nativeGetTileCount(); } diff --git a/platform/android/src/offline/offline_region_definition.cpp b/platform/android/src/offline/offline_region_definition.cpp index 66a9bdf99d..ffc0fd044b 100644 --- a/platform/android/src/offline/offline_region_definition.cpp +++ b/platform/android/src/offline/offline_region_definition.cpp @@ -15,6 +15,10 @@ void OfflineRegionDefinition::registerNative(jni::JNIEnv& env) { // OfflineTilePyramidRegionDefinition // +OfflineTilePyramidRegionDefinition::OfflineTilePyramidRegionDefinition(jni::JNIEnv&) { + +} + jni::Object<OfflineTilePyramidRegionDefinition> OfflineTilePyramidRegionDefinition::New(jni::JNIEnv& env, mbgl::OfflineTilePyramidRegionDefinition definition) { //Convert objects @@ -59,10 +63,23 @@ mbgl::OfflineTilePyramidRegionDefinition OfflineTilePyramidRegionDefinition::get return definition; } +jni::jint OfflineTilePyramidRegionDefinition::getTileCount(jni::JNIEnv&) { + return 123456789; //todo implement tileCount +} + jni::Class<OfflineTilePyramidRegionDefinition> OfflineTilePyramidRegionDefinition::javaClass; void OfflineTilePyramidRegionDefinition::registerNative(jni::JNIEnv& env) { javaClass = *jni::Class<OfflineTilePyramidRegionDefinition>::Find(env).NewGlobalRef(env).release(); + +#define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) + + // Register the peer + jni::RegisterNativePeer<OfflineTilePyramidRegionDefinition>(env, OfflineTilePyramidRegionDefinition::javaClass, "nativePtr", + std::make_unique<OfflineTilePyramidRegionDefinition, JNIEnv&>, + "initialize", "finalize", + METHOD(&OfflineTilePyramidRegionDefinition::getTileCount, + "nativeGetTileCount")); } } // namespace android diff --git a/platform/android/src/offline/offline_region_definition.hpp b/platform/android/src/offline/offline_region_definition.hpp index 2ca82a4d96..e2604cfb62 100644 --- a/platform/android/src/offline/offline_region_definition.hpp +++ b/platform/android/src/offline/offline_region_definition.hpp @@ -20,6 +20,8 @@ class OfflineTilePyramidRegionDefinition: public OfflineRegionDefinition { public: static constexpr auto Name() { return "com/mapbox/mapboxsdk/offline/OfflineTilePyramidRegionDefinition"; }; + OfflineTilePyramidRegionDefinition(jni::JNIEnv&); + static jni::Object<OfflineTilePyramidRegionDefinition> New(jni::JNIEnv&, mbgl::OfflineTilePyramidRegionDefinition); static mbgl::OfflineTilePyramidRegionDefinition getDefinition(jni::JNIEnv&, jni::Object<OfflineTilePyramidRegionDefinition>); @@ -28,6 +30,8 @@ public: static void registerNative(jni::JNIEnv&); + jni::jint getTileCount(jni::JNIEnv&); + }; } // namespace android |