From 5feba9ac073485811592d5d7f69c52992e5a3e0f Mon Sep 17 00:00:00 2001 From: Leith Bade Date: Sun, 18 Jan 2015 17:05:01 +1100 Subject: [PATCH] get/setAppliedStyleClasses -> get/setClasses --- android/cpp/jni.cpp | 51 ++++++++++++++----- .../java/com/mapbox/mapboxgl/lib/MapView.java | 21 ++++---- .../mapbox/mapboxgl/lib/NativeMapView.java | 30 ++++++++--- include/mbgl/map/map.hpp | 3 -- src/mbgl/map/map.cpp | 11 ---- 5 files changed, 73 insertions(+), 43 deletions(-) diff --git a/android/cpp/jni.cpp b/android/cpp/jni.cpp index b08acb649..10c332f75 100644 --- a/android/cpp/jni.cpp +++ b/android/cpp/jni.cpp @@ -334,19 +334,40 @@ void JNICALL nativeResize(JNIEnv *env, jobject obj, jlong nativeMapViewPtr, jint nativeMapView->getMap().resize(width, height, ratio, fbWidth, fbHeight); } -void JNICALL -nativeSetAppliedClasses(JNIEnv *env, jobject obj, jlong nativeMapViewPtr, jobject classes) { - mbgl::Log::Debug(mbgl::Event::JNI, "nativeSetAppliedClasses"); +void JNICALL nativeRemoveClass(JNIEnv *env, jobject obj, jlong nativeMapViewPtr, jstring clazz) { + mbgl::Log::Debug(mbgl::Event::JNI, "nativeRemoveClass"); assert(nativeMapViewPtr != 0); NativeMapView *nativeMapView = reinterpret_cast(nativeMapViewPtr); - nativeMapView->getMap().setAppliedClasses(std_vector_string_from_jobject(env, classes)); + nativeMapView->getMap().removeClass(std_string_from_jstring(env, clazz)); } -jobject JNICALL nativeGetAppliedClasses(JNIEnv *env, jobject obj, jlong nativeMapViewPtr) { - mbgl::Log::Debug(mbgl::Event::JNI, "nativeGetAppliedClasses"); +jboolean JNICALL nativeHasClass(JNIEnv *env, jobject obj, jlong nativeMapViewPtr, jstring clazz) { + mbgl::Log::Debug(mbgl::Event::JNI, "nativeHasClass"); assert(nativeMapViewPtr != 0); NativeMapView *nativeMapView = reinterpret_cast(nativeMapViewPtr); - return std_vector_string_to_jobject(env, nativeMapView->getMap().getAppliedClasses()); + return nativeMapView->getMap().hasClass(std_string_from_jstring(env, clazz)); +} + +void JNICALL nativeAddClass(JNIEnv *env, jobject obj, jlong nativeMapViewPtr, jstring clazz) { + mbgl::Log::Debug(mbgl::Event::JNI, "nativeAddClass"); + assert(nativeMapViewPtr != 0); + NativeMapView *nativeMapView = reinterpret_cast(nativeMapViewPtr); + nativeMapView->getMap().addClass(std_string_from_jstring(env, clazz)); +} + +void JNICALL +nativeSetClasses(JNIEnv *env, jobject obj, jlong nativeMapViewPtr, jobject classes) { + mbgl::Log::Debug(mbgl::Event::JNI, "nativeSetClasses"); + assert(nativeMapViewPtr != 0); + NativeMapView *nativeMapView = reinterpret_cast(nativeMapViewPtr); + nativeMapView->getMap().setClasses(std_vector_string_from_jobject(env, classes)); +} + +jobject JNICALL nativeGetClasses(JNIEnv *env, jobject obj, jlong nativeMapViewPtr) { + mbgl::Log::Debug(mbgl::Event::JNI, "nativeGetClasses"); + assert(nativeMapViewPtr != 0); + NativeMapView *nativeMapView = reinterpret_cast(nativeMapViewPtr); + return std_vector_string_to_jobject(env, nativeMapView->getMap().getClasses()); } void JNICALL nativeSetDefaultTransitionDuration(JNIEnv *env, jobject obj, jlong nativeMapViewPtr, @@ -806,7 +827,7 @@ extern "C" JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { // NOTE: if you get java.lang.UnsatisfiedLinkError you likely forgot to set the size of the // array correctly (too large) - std::array methods = {{ // Can remove the extra brace in C++14 + std::array methods = {{ // Can remove the extra brace in C++14 {"nativeCreate", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)J", reinterpret_cast(&nativeCreate)}, {"nativeDestroy", "(J)V", reinterpret_cast(&nativeDestroy)}, @@ -834,10 +855,16 @@ extern "C" JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { {"nativeResize", "(JIIFII)V", reinterpret_cast(static_cast(&nativeResize))}, - {"nativeSetAppliedClasses", "(JLjava/util/List;)V", - reinterpret_cast(&nativeSetAppliedClasses)}, - {"nativeGetAppliedClasses", "(J)Ljava/util/List;", - reinterpret_cast(&nativeGetAppliedClasses)}, + {"nativeAddClass", "(JLjava/lang/String;)V", + reinterpret_cast(&nativeAddClass)}, + {"nativeRemoveClass", "(JLjava/lang/String;)V", + reinterpret_cast(&nativeRemoveClass)}, + {"nativeHasClass", "(JLjava/lang/String;)Z", + reinterpret_cast(&nativeHasClass)}, + {"nativeSetClasses", "(JLjava/util/List;)V", + reinterpret_cast(&nativeSetClasses)}, + {"nativeGetClasses", "(J)Ljava/util/List;", + reinterpret_cast(&nativeGetClasses)}, {"nativeSetDefaultTransitionDuration", "(JJ)V", reinterpret_cast(&nativeSetDefaultTransitionDuration)}, {"nativeGetDefaultTransitionDuration", "(J)J", diff --git a/android/java/lib/src/main/java/com/mapbox/mapboxgl/lib/MapView.java b/android/java/lib/src/main/java/com/mapbox/mapboxgl/lib/MapView.java index bd37d3806..9a3a64613 100644 --- a/android/java/lib/src/main/java/com/mapbox/mapboxgl/lib/MapView.java +++ b/android/java/lib/src/main/java/com/mapbox/mapboxgl/lib/MapView.java @@ -33,7 +33,6 @@ import org.apache.commons.validator.routines.UrlValidator; import java.util.ArrayList; import java.util.List; -import java.util.UnknownFormatConversionException; // Custom view that shows a Map // Based on SurfaceView as we use OpenGL ES to render @@ -57,7 +56,7 @@ public class MapView extends SurfaceView { private static final String STATE_DEBUG_ACTIVE = "debugActive"; private static final String STATE_STYLE_URL = "styleUrl"; private static final String STATE_ACCESS_TOKEN = "accessToken"; - private static final String STATE_APPLIED_CLASSES = "appliedClasses"; + private static final String STATE_CLASSES = "classes"; private static final String STATE_DEFAULT_TRANSITION_DURATION = "defaultTransitionDuration"; // @@ -346,17 +345,17 @@ public class MapView extends SurfaceView { // Style methods // - public List getAppliedStyleClasses() { - return mNativeMapView.getAppliedClasses(); + public List getClasses() { + return mNativeMapView.getClasses(); } - public void setAppliedStyleClasses(List styleClasses) { - setAppliedStyleClasses(styleClasses, 0); + public void setClasses(List classes) { + setClasses(classes, 0); } - public void setAppliedStyleClasses(List styleClasses, long transitionDuration) { + public void setClasses(List classes, long transitionDuration) { mNativeMapView.setDefaultTransitionDuration(transitionDuration); - mNativeMapView.setAppliedClasses(styleClasses); + mNativeMapView.setClasses(classes); } // @@ -378,9 +377,9 @@ public class MapView extends SurfaceView { setDebugActive(savedInstanceState.getBoolean(STATE_DEBUG_ACTIVE)); setStyleUrl(savedInstanceState.getString(STATE_STYLE_URL)); setAccessToken(savedInstanceState.getString(STATE_ACCESS_TOKEN)); - List appliedClasses = savedInstanceState.getStringArrayList(STATE_APPLIED_CLASSES); + List appliedClasses = savedInstanceState.getStringArrayList(STATE_CLASSES); if (!appliedClasses.isEmpty()) { - setAppliedStyleClasses(appliedClasses); + setClasses(appliedClasses); } mNativeMapView.setDefaultTransitionDuration(savedInstanceState.getLong(STATE_DEFAULT_TRANSITION_DURATION)); } @@ -405,7 +404,7 @@ public class MapView extends SurfaceView { outState.putBoolean(STATE_DEBUG_ACTIVE, isDebugActive()); outState.putString(STATE_STYLE_URL, getStyleUrl()); outState.putString(STATE_ACCESS_TOKEN, getAccessToken()); - //outState.putStringArrayList(STATE_APPLIED_CLASSES, new ArrayList(getAppliedStyleClasses())); + outState.putStringArrayList(STATE_CLASSES, new ArrayList(getClasses())); outState.putLong(STATE_DEFAULT_TRANSITION_DURATION, mNativeMapView.getDefaultTransitionDuration()); } diff --git a/android/java/lib/src/main/java/com/mapbox/mapboxgl/lib/NativeMapView.java b/android/java/lib/src/main/java/com/mapbox/mapboxgl/lib/NativeMapView.java index 7663d2523..845decbe8 100644 --- a/android/java/lib/src/main/java/com/mapbox/mapboxgl/lib/NativeMapView.java +++ b/android/java/lib/src/main/java/com/mapbox/mapboxgl/lib/NativeMapView.java @@ -167,12 +167,24 @@ class NativeMapView { nativeResize(mNativeMapViewPtr, width, height, ratio, fbWidth, fbHeight); } - public void setAppliedClasses(List classes) { - nativeSetAppliedClasses(mNativeMapViewPtr, classes); + public void addClass(String clazz) { + nativeAddClass(mNativeMapViewPtr, clazz); } - public List getAppliedClasses() { - return nativeGetAppliedClasses(mNativeMapViewPtr); + public void removeClass(String clazz) { + nativeRemoveClass(mNativeMapViewPtr, clazz); + } + + public boolean hasClass(String clazz) { + return nativeHasClass(mNativeMapViewPtr, clazz); + } + + public void setClasses(List classes) { + nativeSetClasses(mNativeMapViewPtr, classes); + } + + public List getClasses() { + return nativeGetClasses(mNativeMapViewPtr); } public void setDefaultTransitionDuration() { @@ -444,10 +456,16 @@ class NativeMapView { private native void nativeResize(long nativeMapViewPtr, int width, int height, float ratio, int fbWidth, int fbHeight); - private native void nativeSetAppliedClasses(long nativeMapViewPtr, + private native void nativeAddClass(long nativeMapViewPtr, String clazz); + + private native void nativeRemoveClass(long nativeMapViewPtr, String clazz); + + private native boolean nativeHasClass(long nativeMapViewPtr, String clazz); + + private native void nativeSetClasses(long nativeMapViewPtr, List classes); - private native List nativeGetAppliedClasses(long nativeMapViewPtr); + private native List nativeGetClasses(long nativeMapViewPtr); private native void nativeSetDefaultTransitionDuration( long nativeMapViewPtr, long milliseconds); diff --git a/include/mbgl/map/map.hpp b/include/mbgl/map/map.hpp index fa46f4a70..05a766e77 100644 --- a/include/mbgl/map/map.hpp +++ b/include/mbgl/map/map.hpp @@ -215,9 +215,6 @@ private: std::atomic_uint_fast64_t defaultTransitionDuration; - util::ptr> appliedClasses; - std::mutex appliedClassesMutex; - bool debug = false; timestamp animationTime = 0; diff --git a/src/mbgl/map/map.cpp b/src/mbgl/map/map.cpp index b1028e467..a132fccfe 100644 --- a/src/mbgl/map/map.cpp +++ b/src/mbgl/map/map.cpp @@ -391,17 +391,6 @@ void Map::setStyleJSON(std::string newStyleJSON, const std::string &base) { style->setDefaultTransitionDuration(defaultTransitionDuration); - // set applied classes if they were set while the style was loading - appliedClassesMutex.lock(); - util::ptr> classes = appliedClasses; - if (appliedClasses) { - appliedClasses.reset(); - } - appliedClassesMutex.unlock(); - if (classes) { - style->setAppliedClasses(*classes); - } - update(); }