summaryrefslogtreecommitdiff
path: root/platform/android/src/style/conversion
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/src/style/conversion')
-rw-r--r--platform/android/src/style/conversion/filter.cpp26
-rw-r--r--platform/android/src/style/conversion/filter.hpp21
-rw-r--r--platform/android/src/style/conversion/position.cpp24
-rw-r--r--platform/android/src/style/conversion/position.hpp26
-rw-r--r--platform/android/src/style/conversion/property_expression.hpp16
-rw-r--r--platform/android/src/style/conversion/property_value.hpp16
-rw-r--r--platform/android/src/style/conversion/transition_options.cpp16
-rw-r--r--platform/android/src/style/conversion/transition_options.hpp19
-rw-r--r--platform/android/src/style/conversion/url_or_tileset.cpp30
-rw-r--r--platform/android/src/style/conversion/url_or_tileset.hpp27
10 files changed, 124 insertions, 97 deletions
diff --git a/platform/android/src/style/conversion/filter.cpp b/platform/android/src/style/conversion/filter.cpp
new file mode 100644
index 0000000000..4eac0cf82b
--- /dev/null
+++ b/platform/android/src/style/conversion/filter.cpp
@@ -0,0 +1,26 @@
+#include "filter.hpp"
+#include "../android_conversion.hpp"
+
+#include <mbgl/style/conversion.hpp>
+#include <mbgl/style/conversion/filter.hpp>
+
+namespace mbgl {
+namespace android {
+namespace conversion {
+
+optional<mbgl::style::Filter> toFilter(jni::JNIEnv& env, jni::Array<jni::Object<>> jfilter) {
+ mbgl::optional<mbgl::style::Filter> filter;
+ if (jfilter) {
+ mbgl::style::conversion::Error error;
+ auto converted = mbgl::style::conversion::convert<mbgl::style::Filter>(Value(env, jfilter), error);
+ if (!converted) {
+ mbgl::Log::Error(mbgl::Event::JNI, "Error converting filter: " + error.message);
+ }
+ filter = std::move(*converted);
+ }
+ return filter;
+}
+
+} // namespace conversion
+} // namespace android
+} // namespace mbgl \ No newline at end of file
diff --git a/platform/android/src/style/conversion/filter.hpp b/platform/android/src/style/conversion/filter.hpp
index 241c98713a..df482de8f3 100644
--- a/platform/android/src/style/conversion/filter.hpp
+++ b/platform/android/src/style/conversion/filter.hpp
@@ -1,30 +1,15 @@
#pragma once
-#include "../android_conversion.hpp"
-#include <mbgl/style/conversion/filter.hpp>
-#include <mbgl/style/conversion_impl.hpp>
+#include <mbgl/style/filter.hpp>
+#include <mbgl/util/optional.hpp>
#include <jni/jni.hpp>
-#include <tuple>
-#include <map>
-
namespace mbgl {
namespace android {
namespace conversion {
-inline optional<mbgl::style::Filter> toFilter(jni::JNIEnv& env, jni::Array<jni::Object<>> jfilter) {
- mbgl::optional<mbgl::style::Filter> filter;
- if (jfilter) {
- mbgl::style::conversion::Error error;
- auto converted = mbgl::style::conversion::convert<mbgl::style::Filter>(Value(env, jfilter), error);
- if (!converted) {
- mbgl::Log::Error(mbgl::Event::JNI, "Error converting filter: " + error.message);
- }
- filter = std::move(*converted);
- }
- return filter;
-}
+optional<mbgl::style::Filter> toFilter(jni::JNIEnv&, jni::Array<jni::Object<>>);
} // namespace conversion
} // namespace android
diff --git a/platform/android/src/style/conversion/position.cpp b/platform/android/src/style/conversion/position.cpp
new file mode 100644
index 0000000000..9b3925914e
--- /dev/null
+++ b/platform/android/src/style/conversion/position.cpp
@@ -0,0 +1,24 @@
+#include "position.hpp"
+
+namespace mbgl {
+namespace android {
+namespace conversion {
+
+Result<jni::Object<Position>> Converter<jni::Object<Position>, mbgl::style::Position>::operator()(jni::JNIEnv &env, const mbgl::style::Position &value) const {
+ std::array<float, 3> cartPosition = value.getSpherical();
+ return Position::fromPosition(env, cartPosition[0], cartPosition[1], cartPosition[2]);
+}
+
+Result<mbgl::style::Position> Converter<mbgl::style::Position, jni::Object<Position>>::operator()(jni::JNIEnv &env, const jni::Object<Position> &value) const {
+ float radialCoordinate = Position::getRadialCoordinate(env, value);
+ float azimuthalAngle = Position::getAzimuthalAngle(env, value);
+ float polarAngle = Position::getPolarAngle(env, value);
+ std::array<float, 3> cartPosition {{radialCoordinate, azimuthalAngle, polarAngle}};
+ mbgl::style::Position position{};
+ position.set(cartPosition);
+ return position;
+}
+
+}
+}
+}
diff --git a/platform/android/src/style/conversion/position.hpp b/platform/android/src/style/conversion/position.hpp
index f32a892c0c..2ef4bf4395 100644
--- a/platform/android/src/style/conversion/position.hpp
+++ b/platform/android/src/style/conversion/position.hpp
@@ -1,37 +1,25 @@
#pragma once
#include "../../conversion/conversion.hpp"
+#include "../position.hpp"
-#include <jni/jni.hpp>
#include <mbgl/style/position.hpp>
-#include "../../jni/local_object.hpp"
-#include "../position.hpp"
+#include <jni/jni.hpp>
namespace mbgl {
namespace android {
namespace conversion {
-template<>
+template <>
struct Converter<jni::Object<Position>, mbgl::style::Position> {
- Result<jni::Object<Position>> operator()(jni::JNIEnv &env, const mbgl::style::Position &value) const {
- std::array<float, 3> cartPosition = value.getSpherical();
- return Position::fromPosition(env, cartPosition[0], cartPosition[1], cartPosition[2]);
- }
+ Result<jni::Object<Position>> operator()(jni::JNIEnv &env, const mbgl::style::Position &value) const;
};
-template<>
+template <>
struct Converter<mbgl::style::Position, jni::Object<Position>> {
- Result<mbgl::style::Position> operator()(jni::JNIEnv &env, const jni::Object<Position> &value) const {
- float radialCoordinate = Position::getRadialCoordinate(env, value);
- float azimuthalAngle = Position::getAzimuthalAngle(env, value);
- float polarAngle = Position::getPolarAngle(env, value);
- std::array<float, 3> cartPosition {{radialCoordinate, azimuthalAngle, polarAngle}};
- mbgl::style::Position position{};
- position.set(cartPosition);
- return position;
- }
+ Result<mbgl::style::Position> operator()(jni::JNIEnv &env, const jni::Object<Position> &value) const;
};
}
}
-} \ No newline at end of file
+}
diff --git a/platform/android/src/style/conversion/property_expression.hpp b/platform/android/src/style/conversion/property_expression.hpp
index ae9d4ea41c..08429960cb 100644
--- a/platform/android/src/style/conversion/property_expression.hpp
+++ b/platform/android/src/style/conversion/property_expression.hpp
@@ -1,16 +1,11 @@
#pragma once
-#include <mbgl/style/property_value.hpp>
#include "../../conversion/conversion.hpp"
-#include "../../conversion/constant.hpp"
-#include "types.hpp"
-#include "../../java/lang.hpp"
-
-#include <jni/jni.hpp>
#include "../../gson/json_element.hpp"
-#include <tuple>
-#include <map>
+#include <mbgl/style/property_expression.hpp>
+
+#include <jni/jni.hpp>
namespace mbgl {
namespace android {
@@ -18,11 +13,8 @@ namespace conversion {
template <class T>
struct Converter<jni::Object<android::gson::JsonElement>, mbgl::style::PropertyExpression<T>> {
-
Result<jni::Object<android::gson::JsonElement>> operator()(jni::JNIEnv& env, const mbgl::style::PropertyExpression<T>& value) const {
- // Convert expressions
- mbgl::Value expressionValue = value.getExpression().serialize();
- return gson::JsonElement::New(env, expressionValue);
+ return gson::JsonElement::New(env, value.getExpression().serialize());
}
};
diff --git a/platform/android/src/style/conversion/property_value.hpp b/platform/android/src/style/conversion/property_value.hpp
index 256647cddf..e4d8f59ec3 100644
--- a/platform/android/src/style/conversion/property_value.hpp
+++ b/platform/android/src/style/conversion/property_value.hpp
@@ -2,6 +2,7 @@
#include <mbgl/style/color_ramp_property_value.hpp>
#include <mbgl/style/property_value.hpp>
+
#include "../../conversion/conversion.hpp"
#include "../../conversion/constant.hpp"
#include "property_expression.hpp"
@@ -17,25 +18,22 @@ namespace conversion {
template <typename T>
class PropertyValueEvaluator {
public:
-
PropertyValueEvaluator(jni::JNIEnv& _env) : env(_env) {}
jni::jobject* operator()(const mbgl::style::Undefined) const {
return nullptr;
}
- jni::jobject* operator()(const T &value) const {
- Result<jni::jobject*> result = convert<jni::jobject*>(env, value);
- return *result;
+ jni::jobject* operator()(const T& value) const {
+ return *convert<jni::jobject*>(env, value);
}
- jni::jobject* operator()(const mbgl::style::PropertyExpression<T> &value) const {
- return *convert<jni::Object<android::gson::JsonElement>, mbgl::style::PropertyExpression<T>>(env, value);
+ jni::jobject* operator()(const mbgl::style::PropertyExpression<T>& value) const {
+ return *convert<jni::Object<android::gson::JsonElement>>(env, value);
}
private:
jni::JNIEnv& env;
-
};
/**
@@ -43,7 +41,6 @@ private:
*/
template <class T>
struct Converter<jni::jobject*, mbgl::style::PropertyValue<T>> {
-
Result<jni::jobject*> operator()(jni::JNIEnv& env, const mbgl::style::PropertyValue<T>& value) const {
PropertyValueEvaluator<T> evaluator(env);
return value.evaluate(evaluator);
@@ -55,8 +52,7 @@ struct Converter<jni::jobject*, mbgl::style::PropertyValue<T>> {
*/
template <>
struct Converter<jni::jobject*, mbgl::style::ColorRampPropertyValue> {
-
- Result<jni::jobject*> operator()(jni::JNIEnv& env, const mbgl::style::ColorRampPropertyValue value) const {
+ Result<jni::jobject*> operator()(jni::JNIEnv& env, const mbgl::style::ColorRampPropertyValue& value) const {
PropertyValueEvaluator<mbgl::style::ColorRampPropertyValue> evaluator(env);
return *convert<jni::jobject*>(env, value.evaluate(evaluator));
}
diff --git a/platform/android/src/style/conversion/transition_options.cpp b/platform/android/src/style/conversion/transition_options.cpp
new file mode 100644
index 0000000000..313333ad17
--- /dev/null
+++ b/platform/android/src/style/conversion/transition_options.cpp
@@ -0,0 +1,16 @@
+#include "transition_options.hpp"
+
+namespace mbgl {
+namespace android {
+namespace conversion {
+
+Result<jni::Object<TransitionOptions>> Converter<jni::Object<TransitionOptions>, mbgl::style::TransitionOptions>::operator()(jni::JNIEnv& env, const mbgl::style::TransitionOptions& value) const {
+ return TransitionOptions::fromTransitionOptions(env,
+ std::chrono::duration_cast<std::chrono::milliseconds>(value.duration.value_or(mbgl::Duration::zero())).count(),
+ std::chrono::duration_cast<std::chrono::milliseconds>(value.delay.value_or(mbgl::Duration::zero())).count()
+ );
+}
+
+}
+}
+}
diff --git a/platform/android/src/style/conversion/transition_options.hpp b/platform/android/src/style/conversion/transition_options.hpp
index ae65a32194..6630456d37 100644
--- a/platform/android/src/style/conversion/transition_options.hpp
+++ b/platform/android/src/style/conversion/transition_options.hpp
@@ -1,11 +1,11 @@
#pragma once
#include "../../conversion/conversion.hpp"
+#include "../transition_options.hpp"
-#include <jni/jni.hpp>
#include <mbgl/style/transition_options.hpp>
-#include "../../jni/local_object.hpp"
-#include "../transition_options.hpp"
+
+#include <jni/jni.hpp>
namespace mbgl {
namespace android {
@@ -13,18 +13,9 @@ namespace conversion {
template<>
struct Converter<jni::Object<TransitionOptions>, mbgl::style::TransitionOptions> {
- Result<jni::Object<TransitionOptions>> operator()(jni::JNIEnv &env, const mbgl::style::TransitionOptions &value) const {
-
- // Convert duration
- jlong duration = std::chrono::duration_cast<std::chrono::milliseconds>(value.duration.value_or(mbgl::Duration::zero())).count();
- // Convert delay
- jlong delay = std::chrono::duration_cast<std::chrono::milliseconds>(value.delay.value_or(mbgl::Duration::zero())).count();
-
- // Create transition options
- return TransitionOptions::fromTransitionOptions(env, duration, delay);
- }
+ Result<jni::Object<TransitionOptions>> operator()(jni::JNIEnv&, const mbgl::style::TransitionOptions&) const;
};
}
}
-} \ No newline at end of file
+}
diff --git a/platform/android/src/style/conversion/url_or_tileset.cpp b/platform/android/src/style/conversion/url_or_tileset.cpp
new file mode 100644
index 0000000000..2ec5856751
--- /dev/null
+++ b/platform/android/src/style/conversion/url_or_tileset.cpp
@@ -0,0 +1,30 @@
+#include "url_or_tileset.hpp"
+#include "../android_conversion.hpp"
+
+#include <mbgl/style/conversion.hpp>
+#include <mbgl/style/conversion/tileset.hpp>
+
+namespace mbgl {
+namespace android {
+
+// This conversion is expected not to fail because it's used only in contexts where
+// the value was originally a String or TileSet object on the Java side. If it fails
+// to convert, it's a bug in our serialization or Java-side static typing.
+variant<std::string, Tileset> convertURLOrTileset(mbgl::android::Value&& value) {
+ using namespace mbgl::style::conversion;
+
+ const Convertible convertible(std::move(value));
+ if (isObject(convertible)) {
+ Error error;
+ optional<Tileset> tileset = convert<Tileset>(convertible, error);
+ if (!tileset) {
+ throw std::logic_error(error.message);
+ }
+ return { *tileset };
+ } else {
+ return { *toString(convertible) };
+ }
+}
+
+}
+}
diff --git a/platform/android/src/style/conversion/url_or_tileset.hpp b/platform/android/src/style/conversion/url_or_tileset.hpp
index d6bf86639c..f42a9b9a2a 100644
--- a/platform/android/src/style/conversion/url_or_tileset.hpp
+++ b/platform/android/src/style/conversion/url_or_tileset.hpp
@@ -1,37 +1,16 @@
#pragma once
-#include <mbgl/util/optional.hpp>
#include <mbgl/util/variant.hpp>
-
#include <mbgl/util/tileset.hpp>
-#include <mbgl/style/conversion/tileset.hpp>
-#include <mbgl/style/conversion_impl.hpp>
-
-#include <jni/jni.hpp>
#include <string>
+#include "../value.hpp"
+
namespace mbgl {
namespace android {
-// This conversion is expected not to fail because it's used only in contexts where
-// the value was originally a String or TileSet object on the Java side. If it fails
-// to convert, it's a bug in our serialization or Java-side static typing.
-inline variant<std::string, Tileset> convertURLOrTileset(mbgl::android::Value&& value) {
- using namespace mbgl::style::conversion;
-
- const Convertible convertible(std::move(value));
- if (isObject(convertible)) {
- Error error;
- optional<Tileset> tileset = convert<Tileset>(convertible, error);
- if (!tileset) {
- throw std::logic_error(error.message);
- }
- return { *tileset };
- } else {
- return { *toString(convertible) };
- }
-}
+variant<std::string, Tileset> convertURLOrTileset(mbgl::android::Value&& value);
}
}