summaryrefslogtreecommitdiff
path: root/platform/android/src/style
diff options
context:
space:
mode:
authorIvo van Dongen <info@ivovandongen.nl>2017-03-27 16:40:19 +0300
committerIvo van Dongen <ivovandongen@users.noreply.github.com>2017-03-28 14:43:23 +0300
commite1a9a468a920ea3dffbac03232b2c51ef46fb815 (patch)
tree41959bd1dc45b2ed14ecb5c44bd923422ce6abbe /platform/android/src/style
parent0abaae23b69eec1985bd256c6ee1cf50aabe2439 (diff)
downloadqtlocation-mapboxgl-e1a9a468a920ea3dffbac03232b2c51ef46fb815.tar.gz
[android] use more appropriate numeric types for filter conversion
Diffstat (limited to 'platform/android/src/style')
-rw-r--r--platform/android/src/style/android_conversion.hpp7
-rw-r--r--platform/android/src/style/value.cpp10
-rw-r--r--platform/android/src/style/value.hpp4
3 files changed, 16 insertions, 5 deletions
diff --git a/platform/android/src/style/android_conversion.hpp b/platform/android/src/style/android_conversion.hpp
index d9b88ab52b..e2b2685928 100644
--- a/platform/android/src/style/android_conversion.hpp
+++ b/platform/android/src/style/android_conversion.hpp
@@ -59,7 +59,8 @@ inline optional<bool> toBool(const mbgl::android::Value& value) {
inline optional<float> toNumber(const mbgl::android::Value& value) {
if (value.isNumber()) {
- return value.toNumber();
+ auto num = value.toFloat();
+ return num;
} else {
return {};
}
@@ -81,8 +82,8 @@ inline optional<Value> toValue(const mbgl::android::Value& value) {
} else if (value.isString()) {
return { value.toString() };
} else if (value.isNumber()) {
- // Need to cast to a double here as the float is otherwise considered a bool...
- return { (double) value.toNumber() };
+ auto doubleVal = value.toDouble();
+ return { doubleVal - (int) doubleVal > 0.0 ? doubleVal : value.toLong() };
} else {
return {};
}
diff --git a/platform/android/src/style/value.cpp b/platform/android/src/style/value.cpp
index 0b5d81feb1..da953c14be 100644
--- a/platform/android/src/style/value.cpp
+++ b/platform/android/src/style/value.cpp
@@ -55,10 +55,18 @@ namespace android {
return jni::Make<std::string>(jenv, jni::String(string));
}
- float Value::toNumber() const {
+ float Value::toFloat() const {
return jni::CallMethod<jni::jfloat>(jenv, value.get(), *java::Number::floatValueMethodId);
}
+ double Value::toDouble() const {
+ return jni::CallMethod<jni::jdouble>(jenv, value.get(), *java::Number::doubleValueMethodId);
+ }
+
+ long Value::toLong() const {
+ return jni::CallMethod<jni::jlong>(jenv, value.get(), *java::Number::longValueMethodId);
+ }
+
bool Value::toBool() const {
return jni::CallMethod<jni::jboolean>(jenv, value.get(), *java::Boolean::booleanValueMethodId);
}
diff --git a/platform/android/src/style/value.hpp b/platform/android/src/style/value.hpp
index 461fc1a033..761ce4d730 100644
--- a/platform/android/src/style/value.hpp
+++ b/platform/android/src/style/value.hpp
@@ -21,7 +21,9 @@ public:
bool isNumber() const;
std::string toString() const;
- float toNumber() const;
+ float toFloat() const;
+ double toDouble() const;
+ long toLong() const;
bool toBool() const;
Value get(const char* key) const;
int getLength() const;