diff options
Diffstat (limited to 'platform/android/src/style/conversion')
-rw-r--r-- | platform/android/src/style/conversion/position.hpp | 37 | ||||
-rw-r--r-- | platform/android/src/style/conversion/types.hpp | 7 | ||||
-rw-r--r-- | platform/android/src/style/conversion/types_string_values.hpp | 14 |
3 files changed, 58 insertions, 0 deletions
diff --git a/platform/android/src/style/conversion/position.hpp b/platform/android/src/style/conversion/position.hpp new file mode 100644 index 0000000000..f32a892c0c --- /dev/null +++ b/platform/android/src/style/conversion/position.hpp @@ -0,0 +1,37 @@ +#pragma once + +#include "../../conversion/conversion.hpp" + +#include <jni/jni.hpp> +#include <mbgl/style/position.hpp> +#include "../../jni/local_object.hpp" +#include "../position.hpp" + +namespace mbgl { +namespace android { +namespace conversion { + +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]); + } +}; + +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; + } +}; + +} +} +}
\ No newline at end of file diff --git a/platform/android/src/style/conversion/types.hpp b/platform/android/src/style/conversion/types.hpp index d9921e582e..a00f668c24 100644 --- a/platform/android/src/style/conversion/types.hpp +++ b/platform/android/src/style/conversion/types.hpp @@ -92,6 +92,13 @@ struct Converter<jni::jobject*, mbgl::style::CirclePitchScaleType> { } }; +template <> +struct Converter<jni::jobject*, mbgl::style::LightAnchorType> { + Result<jni::jobject*> operator()(jni::JNIEnv& env, const mbgl::style::LightAnchorType& value) const { + return convert<jni::jobject*, std::string>(env, toString(value)); + } +}; + } // namespace conversion } // namespace android diff --git a/platform/android/src/style/conversion/types_string_values.hpp b/platform/android/src/style/conversion/types_string_values.hpp index e3108fdf5b..e96de3b01e 100644 --- a/platform/android/src/style/conversion/types_string_values.hpp +++ b/platform/android/src/style/conversion/types_string_values.hpp @@ -206,6 +206,20 @@ namespace conversion { } } + // anchor + inline std::string toString(mbgl::style::LightAnchorType value) { + switch (value) { + case mbgl::style::LightAnchorType::Map: + return "map"; + break; + case mbgl::style::LightAnchorType::Viewport: + return "viewport"; + break; + default: + throw std::runtime_error("Not implemented"); + } + } + } // namespace conversion } // namespace android |