summaryrefslogtreecommitdiff
path: root/platform/android/src/offline/offline_region_definition.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/src/offline/offline_region_definition.cpp')
-rw-r--r--platform/android/src/offline/offline_region_definition.cpp94
1 files changed, 30 insertions, 64 deletions
diff --git a/platform/android/src/offline/offline_region_definition.cpp b/platform/android/src/offline/offline_region_definition.cpp
index a856672902..2a69181f5b 100644
--- a/platform/android/src/offline/offline_region_definition.cpp
+++ b/platform/android/src/offline/offline_region_definition.cpp
@@ -10,18 +10,15 @@ namespace android {
// OfflineRegionDefinition //
-jni::Class<OfflineRegionDefinition> OfflineRegionDefinition::javaClass;
-
void OfflineRegionDefinition::registerNative(jni::JNIEnv& env) {
- javaClass = *jni::Class<OfflineRegionDefinition>::Find(env).NewGlobalRef(env).release();
+ jni::Class<OfflineRegionDefinition>::Singleton(env);
}
mbgl::OfflineRegionDefinition OfflineRegionDefinition::getDefinition(JNIEnv& env,
jni::Object<OfflineRegionDefinition> jDefinition) {
-
- if (jDefinition.IsInstanceOf(env, OfflineTilePyramidRegionDefinition::javaClass)) {
+ if (jDefinition.IsInstanceOf(env, jni::Class<OfflineTilePyramidRegionDefinition>::Singleton(env))) {
return OfflineTilePyramidRegionDefinition::getDefinition(env, jni::Object<OfflineTilePyramidRegionDefinition>(*jDefinition));
- } else if (jDefinition.IsInstanceOf(env, OfflineGeometryRegionDefinition::javaClass)) {
+ } else if (jDefinition.IsInstanceOf(env, jni::Class<OfflineGeometryRegionDefinition>::Singleton(env))) {
return OfflineGeometryRegionDefinition::getDefinition(env, jni::Object<OfflineGeometryRegionDefinition>(*jDefinition));
}
@@ -31,104 +28,73 @@ mbgl::OfflineRegionDefinition OfflineRegionDefinition::getDefinition(JNIEnv& env
// OfflineTilePyramidRegionDefinition //
jni::Object<OfflineTilePyramidRegionDefinition> OfflineTilePyramidRegionDefinition::New(jni::JNIEnv& env, const mbgl::OfflineTilePyramidRegionDefinition& definition) {
-
- //Convert objects
- auto styleURL = jni::Make<jni::String>(env, definition.styleURL);
- auto bounds = LatLngBounds::New(env, definition.bounds);
-
+ static auto javaClass = jni::Class<OfflineTilePyramidRegionDefinition>::Singleton(env);
static auto constructor = javaClass.GetConstructor<jni::String, jni::Object<LatLngBounds>, jni::jdouble, jni::jdouble, jni::jfloat>(env);
- auto jdefinition = javaClass.New(env, constructor, styleURL, bounds, definition.minZoom, definition.maxZoom, definition.pixelRatio);
-
- //Delete References
- jni::DeleteLocalRef(env, styleURL);
- jni::DeleteLocalRef(env, bounds);
- return jdefinition;
+ return javaClass.New(env, constructor,
+ *jni::SeizeLocal(env, jni::Make<jni::String>(env, definition.styleURL)),
+ *jni::SeizeLocal(env, LatLngBounds::New(env, definition.bounds)),
+ definition.minZoom,
+ definition.maxZoom,
+ definition.pixelRatio);
}
mbgl::OfflineTilePyramidRegionDefinition OfflineTilePyramidRegionDefinition::getDefinition(jni::JNIEnv& env, jni::Object<OfflineTilePyramidRegionDefinition> jDefinition) {
// Field references
+ static auto javaClass = jni::Class<OfflineTilePyramidRegionDefinition>::Singleton(env);
static auto styleURLF = javaClass.GetField<jni::String>(env, "styleURL");
static auto boundsF = javaClass.GetField<jni::Object<LatLngBounds>>(env, "bounds");
static auto minZoomF = javaClass.GetField<jni::jdouble>(env, "minZoom");
static auto maxZoomF = javaClass.GetField<jni::jdouble>(env, "maxZoom");
static auto pixelRatioF = javaClass.GetField<jni::jfloat>(env, "pixelRatio");
- // Get objects
- auto jStyleURL = jDefinition.Get(env, styleURLF);
- auto jBounds = jDefinition.Get(env, boundsF);
-
- // Create definition
- mbgl::OfflineTilePyramidRegionDefinition definition(
- jni::Make<std::string>(env, jStyleURL),
- LatLngBounds::getLatLngBounds(env, jBounds),
+ return mbgl::OfflineTilePyramidRegionDefinition(
+ jni::Make<std::string>(env, *jni::SeizeLocal(env, jDefinition.Get(env, styleURLF))),
+ LatLngBounds::getLatLngBounds(env, *jni::SeizeLocal(env, jDefinition.Get(env, boundsF))),
jDefinition.Get(env, minZoomF),
jDefinition.Get(env, maxZoomF),
jDefinition.Get(env, pixelRatioF)
);
-
- // Delete references
- jni::DeleteLocalRef(env, jStyleURL);
- jni::DeleteLocalRef(env, jBounds);
-
- return definition;
}
-jni::Class<OfflineTilePyramidRegionDefinition> OfflineTilePyramidRegionDefinition::javaClass;
-
void OfflineTilePyramidRegionDefinition::registerNative(jni::JNIEnv& env) {
- javaClass = *jni::Class<OfflineTilePyramidRegionDefinition>::Find(env).NewGlobalRef(env).release();
+ jni::Class<OfflineTilePyramidRegionDefinition>::Singleton(env);
}
// OfflineGeometryRegionDefinition //
jni::Object<OfflineGeometryRegionDefinition> OfflineGeometryRegionDefinition::New(jni::JNIEnv& env, const mbgl::OfflineGeometryRegionDefinition& definition) {
- //Convert objects
- auto styleURL = jni::Make<jni::String>(env, definition.styleURL);
- auto geometry = geojson::Geometry::New(env, definition.geometry);
-
+ static auto javaClass = jni::Class<OfflineGeometryRegionDefinition>::Singleton(env);
static auto constructor = javaClass.GetConstructor<jni::String, jni::Object<geojson::Geometry>, jni::jdouble, jni::jdouble, jni::jfloat>(env);
- auto jdefinition = javaClass.New(env, constructor, styleURL, geometry, definition.minZoom, definition.maxZoom, definition.pixelRatio);
-
- //Delete References
- jni::DeleteLocalRef(env, styleURL);
- jni::DeleteLocalRef(env, geometry);
- return jdefinition;
+ return javaClass.New(env, constructor,
+ *jni::SeizeLocal(env, jni::Make<jni::String>(env, definition.styleURL)),
+ *jni::SeizeLocal(env, geojson::Geometry::New(env, definition.geometry)),
+ definition.minZoom,
+ definition.maxZoom,
+ definition.pixelRatio);
}
mbgl::OfflineGeometryRegionDefinition OfflineGeometryRegionDefinition::getDefinition(jni::JNIEnv& env, jni::Object<OfflineGeometryRegionDefinition> jDefinition) {
// Field references
+ static auto javaClass = jni::Class<OfflineGeometryRegionDefinition>::Singleton(env);
static auto styleURLF = javaClass.GetField<jni::String>(env, "styleURL");
static auto geometryF = javaClass.GetField<jni::Object<geojson::Geometry>>(env, "geometry");
static auto minZoomF = javaClass.GetField<jni::jdouble>(env, "minZoom");
static auto maxZoomF = javaClass.GetField<jni::jdouble>(env, "maxZoom");
static auto pixelRatioF = javaClass.GetField<jni::jfloat>(env, "pixelRatio");
- // Get objects
- auto jStyleURL = jDefinition.Get(env, styleURLF);
- auto jGeometry = jDefinition.Get(env, geometryF);
-
- // Create definition
- mbgl::OfflineGeometryRegionDefinition definition(
- jni::Make<std::string>(env, jStyleURL),
- geojson::Geometry::convert(env, jGeometry),
- jDefinition.Get(env, minZoomF),
- jDefinition.Get(env, maxZoomF),
- jDefinition.Get(env, pixelRatioF)
+ return mbgl::OfflineGeometryRegionDefinition(
+ jni::Make<std::string>(env, *jni::SeizeLocal(env, jDefinition.Get(env, styleURLF))),
+ geojson::Geometry::convert(env, *jni::SeizeLocal(env, jDefinition.Get(env, geometryF))),
+ jDefinition.Get(env, minZoomF),
+ jDefinition.Get(env, maxZoomF),
+ jDefinition.Get(env, pixelRatioF)
);
-
- // Delete references
- jni::DeleteLocalRef(env, jStyleURL);
- jni::DeleteLocalRef(env, jGeometry);
-
- return definition;
}
-jni::Class<OfflineGeometryRegionDefinition> OfflineGeometryRegionDefinition::javaClass;
-
void OfflineGeometryRegionDefinition::registerNative(jni::JNIEnv& env) {
- javaClass = *jni::Class<OfflineGeometryRegionDefinition>::Find(env).NewGlobalRef(env).release();
+ jni::Class<OfflineGeometryRegionDefinition>::Singleton(env);
}
} // namespace android