summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorŁukasz Paczos <lukas.paczos@gmail.com>2018-03-06 12:35:50 +0100
committerŁukasz Paczos <lukas.paczos@gmail.com>2018-03-06 12:35:50 +0100
commit89267ec09e8975b109dd7f52a7a52fc52b59bac8 (patch)
tree76cbd667999c571df530eda5e13c403c25080652
parentc0bb9aaa818d0ec2a76b7651b3d46b720686d210 (diff)
downloadqtlocation-mapboxgl-89267ec09e8975b109dd7f52a7a52fc52b59bac8.tar.gz
[android] offline tile count - register peerupstream/lp-tile-count
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineTilePyramidRegionDefinition.java31
-rw-r--r--platform/android/src/offline/offline_region_definition.cpp17
-rw-r--r--platform/android/src/offline/offline_region_definition.hpp4
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