diff options
author | Tobrun <tobrun@mapbox.com> | 2017-03-31 17:51:26 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-03-31 17:51:26 +0200 |
commit | 939526bac4aff734be4e6382b64c43214eb0bc9b (patch) | |
tree | b286e7b2b72b4776d2adfed628e0bebf38ec9710 /platform/android/src/style | |
parent | 05992c47aca0c83d5c0abc79c8e7833d69d24803 (diff) | |
download | qtlocation-mapboxgl-939526bac4aff734be4e6382b64c43214eb0bc9b.tar.gz |
[android] - transition options for layer properties (#8509)
[android] fixup highlevel bindings for transition options
finish integration
Diffstat (limited to 'platform/android/src/style')
18 files changed, 883 insertions, 16 deletions
diff --git a/platform/android/src/style/conversion/transition_options.hpp b/platform/android/src/style/conversion/transition_options.hpp new file mode 100644 index 0000000000..3614878f43 --- /dev/null +++ b/platform/android/src/style/conversion/transition_options.hpp @@ -0,0 +1,29 @@ +#pragma once + +#include "../../conversion/conversion.hpp" + +#include <jni/jni.hpp> +#include "../../jni/local_object.hpp" +#include "../transition_options.hpp" + +namespace mbgl { +namespace android { +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); + } +}; + +} +} +}
\ No newline at end of file diff --git a/platform/android/src/style/layers/background_layer.cpp b/platform/android/src/style/layers/background_layer.cpp index 9915f3894e..a8f013b230 100644 --- a/platform/android/src/style/layers/background_layer.cpp +++ b/platform/android/src/style/layers/background_layer.cpp @@ -5,6 +5,7 @@ #include <string> #include "../conversion/property_value.hpp" +#include "../conversion/transition_options.hpp" namespace mbgl { namespace android { @@ -40,18 +41,58 @@ namespace android { return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> BackgroundLayer::getBackgroundColorTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::BackgroundLayer>()->BackgroundLayer::getBackgroundColorTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void BackgroundLayer::setBackgroundColorTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::BackgroundLayer>()->BackgroundLayer::setBackgroundColorTransition(options); + } + jni::Object<jni::ObjectTag> BackgroundLayer::getBackgroundPattern(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::BackgroundLayer>()->BackgroundLayer::getBackgroundPattern()); return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> BackgroundLayer::getBackgroundPatternTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::BackgroundLayer>()->BackgroundLayer::getBackgroundPatternTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void BackgroundLayer::setBackgroundPatternTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::BackgroundLayer>()->BackgroundLayer::setBackgroundPatternTransition(options); + } + jni::Object<jni::ObjectTag> BackgroundLayer::getBackgroundOpacity(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::BackgroundLayer>()->BackgroundLayer::getBackgroundOpacity()); return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> BackgroundLayer::getBackgroundOpacityTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::BackgroundLayer>()->BackgroundLayer::getBackgroundOpacityTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void BackgroundLayer::setBackgroundOpacityTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::BackgroundLayer>()->BackgroundLayer::setBackgroundOpacityTransition(options); + } + + jni::Class<BackgroundLayer> BackgroundLayer::javaClass; jni::jobject* BackgroundLayer::createJavaPeer(jni::JNIEnv& env) { @@ -71,8 +112,14 @@ namespace android { std::make_unique<BackgroundLayer, JNIEnv&, jni::String>, "initialize", "finalize", + METHOD(&BackgroundLayer::getBackgroundColorTransition, "nativeGetBackgroundColorTransition"), + METHOD(&BackgroundLayer::setBackgroundColorTransition, "nativeSetBackgroundColorTransition"), METHOD(&BackgroundLayer::getBackgroundColor, "nativeGetBackgroundColor"), + METHOD(&BackgroundLayer::getBackgroundPatternTransition, "nativeGetBackgroundPatternTransition"), + METHOD(&BackgroundLayer::setBackgroundPatternTransition, "nativeSetBackgroundPatternTransition"), METHOD(&BackgroundLayer::getBackgroundPattern, "nativeGetBackgroundPattern"), + METHOD(&BackgroundLayer::getBackgroundOpacityTransition, "nativeGetBackgroundOpacityTransition"), + METHOD(&BackgroundLayer::setBackgroundOpacityTransition, "nativeSetBackgroundOpacityTransition"), METHOD(&BackgroundLayer::getBackgroundOpacity, "nativeGetBackgroundOpacity")); } diff --git a/platform/android/src/style/layers/background_layer.hpp b/platform/android/src/style/layers/background_layer.hpp index 2fdc948892..95555a2d78 100644 --- a/platform/android/src/style/layers/background_layer.hpp +++ b/platform/android/src/style/layers/background_layer.hpp @@ -3,6 +3,7 @@ #pragma once #include "layer.hpp" +#include "../transition_options.hpp" #include <mbgl/style/layers/background_layer.hpp> #include <jni/jni.hpp> @@ -26,13 +27,19 @@ public: ~BackgroundLayer(); - // Property getters + // Properties + jni::Object<jni::ObjectTag> getBackgroundColor(jni::JNIEnv&); + void setBackgroundColorTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getBackgroundColorTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getBackgroundPattern(jni::JNIEnv&); + void setBackgroundPatternTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getBackgroundPatternTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getBackgroundOpacity(jni::JNIEnv&); - + void setBackgroundOpacityTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getBackgroundOpacityTransition(jni::JNIEnv&); jni::jobject* createJavaPeer(jni::JNIEnv&); }; // class BackgroundLayer diff --git a/platform/android/src/style/layers/circle_layer.cpp b/platform/android/src/style/layers/circle_layer.cpp index 948c397829..96a9356679 100644 --- a/platform/android/src/style/layers/circle_layer.cpp +++ b/platform/android/src/style/layers/circle_layer.cpp @@ -5,6 +5,7 @@ #include <string> #include "../conversion/property_value.hpp" +#include "../conversion/transition_options.hpp" namespace mbgl { namespace android { @@ -40,30 +41,95 @@ namespace android { return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> CircleLayer::getCircleRadiusTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::CircleLayer>()->CircleLayer::getCircleRadiusTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void CircleLayer::setCircleRadiusTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::CircleLayer>()->CircleLayer::setCircleRadiusTransition(options); + } + jni::Object<jni::ObjectTag> CircleLayer::getCircleColor(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::CircleLayer>()->CircleLayer::getCircleColor()); return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> CircleLayer::getCircleColorTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::CircleLayer>()->CircleLayer::getCircleColorTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void CircleLayer::setCircleColorTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::CircleLayer>()->CircleLayer::setCircleColorTransition(options); + } + jni::Object<jni::ObjectTag> CircleLayer::getCircleBlur(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::CircleLayer>()->CircleLayer::getCircleBlur()); return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> CircleLayer::getCircleBlurTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::CircleLayer>()->CircleLayer::getCircleBlurTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void CircleLayer::setCircleBlurTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::CircleLayer>()->CircleLayer::setCircleBlurTransition(options); + } + jni::Object<jni::ObjectTag> CircleLayer::getCircleOpacity(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::CircleLayer>()->CircleLayer::getCircleOpacity()); return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> CircleLayer::getCircleOpacityTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::CircleLayer>()->CircleLayer::getCircleOpacityTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void CircleLayer::setCircleOpacityTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::CircleLayer>()->CircleLayer::setCircleOpacityTransition(options); + } + jni::Object<jni::ObjectTag> CircleLayer::getCircleTranslate(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::CircleLayer>()->CircleLayer::getCircleTranslate()); return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> CircleLayer::getCircleTranslateTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::CircleLayer>()->CircleLayer::getCircleTranslateTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void CircleLayer::setCircleTranslateTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::CircleLayer>()->CircleLayer::setCircleTranslateTransition(options); + } + jni::Object<jni::ObjectTag> CircleLayer::getCircleTranslateAnchor(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::CircleLayer>()->CircleLayer::getCircleTranslateAnchor()); @@ -82,18 +148,58 @@ namespace android { return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> CircleLayer::getCircleStrokeWidthTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::CircleLayer>()->CircleLayer::getCircleStrokeWidthTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void CircleLayer::setCircleStrokeWidthTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::CircleLayer>()->CircleLayer::setCircleStrokeWidthTransition(options); + } + jni::Object<jni::ObjectTag> CircleLayer::getCircleStrokeColor(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::CircleLayer>()->CircleLayer::getCircleStrokeColor()); return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> CircleLayer::getCircleStrokeColorTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::CircleLayer>()->CircleLayer::getCircleStrokeColorTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void CircleLayer::setCircleStrokeColorTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::CircleLayer>()->CircleLayer::setCircleStrokeColorTransition(options); + } + jni::Object<jni::ObjectTag> CircleLayer::getCircleStrokeOpacity(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::CircleLayer>()->CircleLayer::getCircleStrokeOpacity()); return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> CircleLayer::getCircleStrokeOpacityTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::CircleLayer>()->CircleLayer::getCircleStrokeOpacityTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void CircleLayer::setCircleStrokeOpacityTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::CircleLayer>()->CircleLayer::setCircleStrokeOpacityTransition(options); + } + + jni::Class<CircleLayer> CircleLayer::javaClass; jni::jobject* CircleLayer::createJavaPeer(jni::JNIEnv& env) { @@ -113,15 +219,31 @@ namespace android { std::make_unique<CircleLayer, JNIEnv&, jni::String, jni::String>, "initialize", "finalize", + METHOD(&CircleLayer::getCircleRadiusTransition, "nativeGetCircleRadiusTransition"), + METHOD(&CircleLayer::setCircleRadiusTransition, "nativeSetCircleRadiusTransition"), METHOD(&CircleLayer::getCircleRadius, "nativeGetCircleRadius"), + METHOD(&CircleLayer::getCircleColorTransition, "nativeGetCircleColorTransition"), + METHOD(&CircleLayer::setCircleColorTransition, "nativeSetCircleColorTransition"), METHOD(&CircleLayer::getCircleColor, "nativeGetCircleColor"), + METHOD(&CircleLayer::getCircleBlurTransition, "nativeGetCircleBlurTransition"), + METHOD(&CircleLayer::setCircleBlurTransition, "nativeSetCircleBlurTransition"), METHOD(&CircleLayer::getCircleBlur, "nativeGetCircleBlur"), + METHOD(&CircleLayer::getCircleOpacityTransition, "nativeGetCircleOpacityTransition"), + METHOD(&CircleLayer::setCircleOpacityTransition, "nativeSetCircleOpacityTransition"), METHOD(&CircleLayer::getCircleOpacity, "nativeGetCircleOpacity"), + METHOD(&CircleLayer::getCircleTranslateTransition, "nativeGetCircleTranslateTransition"), + METHOD(&CircleLayer::setCircleTranslateTransition, "nativeSetCircleTranslateTransition"), METHOD(&CircleLayer::getCircleTranslate, "nativeGetCircleTranslate"), METHOD(&CircleLayer::getCircleTranslateAnchor, "nativeGetCircleTranslateAnchor"), METHOD(&CircleLayer::getCirclePitchScale, "nativeGetCirclePitchScale"), + METHOD(&CircleLayer::getCircleStrokeWidthTransition, "nativeGetCircleStrokeWidthTransition"), + METHOD(&CircleLayer::setCircleStrokeWidthTransition, "nativeSetCircleStrokeWidthTransition"), METHOD(&CircleLayer::getCircleStrokeWidth, "nativeGetCircleStrokeWidth"), + METHOD(&CircleLayer::getCircleStrokeColorTransition, "nativeGetCircleStrokeColorTransition"), + METHOD(&CircleLayer::setCircleStrokeColorTransition, "nativeSetCircleStrokeColorTransition"), METHOD(&CircleLayer::getCircleStrokeColor, "nativeGetCircleStrokeColor"), + METHOD(&CircleLayer::getCircleStrokeOpacityTransition, "nativeGetCircleStrokeOpacityTransition"), + METHOD(&CircleLayer::setCircleStrokeOpacityTransition, "nativeSetCircleStrokeOpacityTransition"), METHOD(&CircleLayer::getCircleStrokeOpacity, "nativeGetCircleStrokeOpacity")); } diff --git a/platform/android/src/style/layers/circle_layer.hpp b/platform/android/src/style/layers/circle_layer.hpp index ee988d7c57..81737e8996 100644 --- a/platform/android/src/style/layers/circle_layer.hpp +++ b/platform/android/src/style/layers/circle_layer.hpp @@ -3,6 +3,7 @@ #pragma once #include "layer.hpp" +#include "../transition_options.hpp" #include <mbgl/style/layers/circle_layer.hpp> #include <jni/jni.hpp> @@ -26,27 +27,43 @@ public: ~CircleLayer(); - // Property getters + // Properties + jni::Object<jni::ObjectTag> getCircleRadius(jni::JNIEnv&); + void setCircleRadiusTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getCircleRadiusTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getCircleColor(jni::JNIEnv&); + void setCircleColorTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getCircleColorTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getCircleBlur(jni::JNIEnv&); + void setCircleBlurTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getCircleBlurTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getCircleOpacity(jni::JNIEnv&); + void setCircleOpacityTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getCircleOpacityTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getCircleTranslate(jni::JNIEnv&); + void setCircleTranslateTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getCircleTranslateTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getCircleTranslateAnchor(jni::JNIEnv&); jni::Object<jni::ObjectTag> getCirclePitchScale(jni::JNIEnv&); jni::Object<jni::ObjectTag> getCircleStrokeWidth(jni::JNIEnv&); + void setCircleStrokeWidthTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getCircleStrokeWidthTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getCircleStrokeColor(jni::JNIEnv&); + void setCircleStrokeColorTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getCircleStrokeColorTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getCircleStrokeOpacity(jni::JNIEnv&); - + void setCircleStrokeOpacityTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getCircleStrokeOpacityTransition(jni::JNIEnv&); jni::jobject* createJavaPeer(jni::JNIEnv&); }; // class CircleLayer diff --git a/platform/android/src/style/layers/fill_layer.cpp b/platform/android/src/style/layers/fill_layer.cpp index fc1dfccfcc..f4cddc8858 100644 --- a/platform/android/src/style/layers/fill_layer.cpp +++ b/platform/android/src/style/layers/fill_layer.cpp @@ -5,6 +5,7 @@ #include <string> #include "../conversion/property_value.hpp" +#include "../conversion/transition_options.hpp" namespace mbgl { namespace android { @@ -46,24 +47,76 @@ namespace android { return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> FillLayer::getFillOpacityTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::FillLayer>()->FillLayer::getFillOpacityTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void FillLayer::setFillOpacityTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::FillLayer>()->FillLayer::setFillOpacityTransition(options); + } + jni::Object<jni::ObjectTag> FillLayer::getFillColor(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::FillLayer>()->FillLayer::getFillColor()); return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> FillLayer::getFillColorTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::FillLayer>()->FillLayer::getFillColorTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void FillLayer::setFillColorTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::FillLayer>()->FillLayer::setFillColorTransition(options); + } + jni::Object<jni::ObjectTag> FillLayer::getFillOutlineColor(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::FillLayer>()->FillLayer::getFillOutlineColor()); return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> FillLayer::getFillOutlineColorTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::FillLayer>()->FillLayer::getFillOutlineColorTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void FillLayer::setFillOutlineColorTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::FillLayer>()->FillLayer::setFillOutlineColorTransition(options); + } + jni::Object<jni::ObjectTag> FillLayer::getFillTranslate(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::FillLayer>()->FillLayer::getFillTranslate()); return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> FillLayer::getFillTranslateTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::FillLayer>()->FillLayer::getFillTranslateTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void FillLayer::setFillTranslateTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::FillLayer>()->FillLayer::setFillTranslateTransition(options); + } + jni::Object<jni::ObjectTag> FillLayer::getFillTranslateAnchor(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::FillLayer>()->FillLayer::getFillTranslateAnchor()); @@ -76,6 +129,20 @@ namespace android { return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> FillLayer::getFillPatternTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::FillLayer>()->FillLayer::getFillPatternTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void FillLayer::setFillPatternTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::FillLayer>()->FillLayer::setFillPatternTransition(options); + } + + jni::Class<FillLayer> FillLayer::javaClass; jni::jobject* FillLayer::createJavaPeer(jni::JNIEnv& env) { @@ -96,11 +163,21 @@ namespace android { "initialize", "finalize", METHOD(&FillLayer::getFillAntialias, "nativeGetFillAntialias"), + METHOD(&FillLayer::getFillOpacityTransition, "nativeGetFillOpacityTransition"), + METHOD(&FillLayer::setFillOpacityTransition, "nativeSetFillOpacityTransition"), METHOD(&FillLayer::getFillOpacity, "nativeGetFillOpacity"), + METHOD(&FillLayer::getFillColorTransition, "nativeGetFillColorTransition"), + METHOD(&FillLayer::setFillColorTransition, "nativeSetFillColorTransition"), METHOD(&FillLayer::getFillColor, "nativeGetFillColor"), + METHOD(&FillLayer::getFillOutlineColorTransition, "nativeGetFillOutlineColorTransition"), + METHOD(&FillLayer::setFillOutlineColorTransition, "nativeSetFillOutlineColorTransition"), METHOD(&FillLayer::getFillOutlineColor, "nativeGetFillOutlineColor"), + METHOD(&FillLayer::getFillTranslateTransition, "nativeGetFillTranslateTransition"), + METHOD(&FillLayer::setFillTranslateTransition, "nativeSetFillTranslateTransition"), METHOD(&FillLayer::getFillTranslate, "nativeGetFillTranslate"), METHOD(&FillLayer::getFillTranslateAnchor, "nativeGetFillTranslateAnchor"), + METHOD(&FillLayer::getFillPatternTransition, "nativeGetFillPatternTransition"), + METHOD(&FillLayer::setFillPatternTransition, "nativeSetFillPatternTransition"), METHOD(&FillLayer::getFillPattern, "nativeGetFillPattern")); } diff --git a/platform/android/src/style/layers/fill_layer.hpp b/platform/android/src/style/layers/fill_layer.hpp index f43c263ab8..a773cf785b 100644 --- a/platform/android/src/style/layers/fill_layer.hpp +++ b/platform/android/src/style/layers/fill_layer.hpp @@ -3,6 +3,7 @@ #pragma once #include "layer.hpp" +#include "../transition_options.hpp" #include <mbgl/style/layers/fill_layer.hpp> #include <jni/jni.hpp> @@ -26,21 +27,31 @@ public: ~FillLayer(); - // Property getters + // Properties + jni::Object<jni::ObjectTag> getFillAntialias(jni::JNIEnv&); jni::Object<jni::ObjectTag> getFillOpacity(jni::JNIEnv&); + void setFillOpacityTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getFillOpacityTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getFillColor(jni::JNIEnv&); + void setFillColorTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getFillColorTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getFillOutlineColor(jni::JNIEnv&); + void setFillOutlineColorTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getFillOutlineColorTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getFillTranslate(jni::JNIEnv&); + void setFillTranslateTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getFillTranslateTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getFillTranslateAnchor(jni::JNIEnv&); jni::Object<jni::ObjectTag> getFillPattern(jni::JNIEnv&); - + void setFillPatternTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getFillPatternTransition(jni::JNIEnv&); jni::jobject* createJavaPeer(jni::JNIEnv&); }; // class FillLayer diff --git a/platform/android/src/style/layers/layer.cpp b/platform/android/src/style/layers/layer.cpp index 6e93cf4daf..6c9de51a0d 100644 --- a/platform/android/src/style/layers/layer.cpp +++ b/platform/android/src/style/layers/layer.cpp @@ -3,6 +3,7 @@ #include <jni/jni.hpp> +#include <mbgl/style/transition_options.hpp> #include <mbgl/util/logging.hpp> // Java -> C++ conversion diff --git a/platform/android/src/style/layers/layer.cpp.ejs b/platform/android/src/style/layers/layer.cpp.ejs index 5da397d77d..1debb096a3 100644 --- a/platform/android/src/style/layers/layer.cpp.ejs +++ b/platform/android/src/style/layers/layer.cpp.ejs @@ -9,6 +9,7 @@ #include <string> #include "../conversion/property_value.hpp" +#include "../conversion/transition_options.hpp" namespace mbgl { namespace android { @@ -53,7 +54,23 @@ namespace android { return jni::Object<jni::ObjectTag>(*converted); } +<% if (property.transition) { -%> + jni::Object<TransitionOptions> <%- camelize(type) %>Layer::get<%- camelize(property.name) %>Transition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::<%- camelize(type) %>Layer>()-><%- camelize(type) %>Layer::get<%- camelize(property.name) %>Transition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void <%- camelize(type) %>Layer::set<%- camelize(property.name) %>Transition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::<%- camelize(type) %>Layer>()-><%- camelize(type) %>Layer::set<%- camelize(property.name) %>Transition(options); + } + +<% } -%> <% } -%> + jni::Class<<%- camelize(type) %>Layer> <%- camelize(type) %>Layer::javaClass; jni::jobject* <%- camelize(type) %>Layer::createJavaPeer(jni::JNIEnv& env) { @@ -77,8 +94,11 @@ namespace android { <% } -%> "initialize", "finalize",<% for(var i = 0; i < properties.length; i++) {%> - METHOD(&<%- camelize(type) %>Layer::get<%- camelize(properties[i].name) %>, "nativeGet<%- camelize(properties[i].name) %>")<% if(i != (properties.length -1)) {-%>,<% } -%> -<% } -%>); +<% if (properties[i].transition) { -%> + METHOD(&<%- camelize(type) %>Layer::get<%- camelize(properties[i].name) %>Transition, "nativeGet<%- camelize(properties[i].name) %>Transition"), + METHOD(&<%- camelize(type) %>Layer::set<%- camelize(properties[i].name) %>Transition, "nativeSet<%- camelize(properties[i].name) %>Transition"), +<% } -%> + METHOD(&<%- camelize(type) %>Layer::get<%- camelize(properties[i].name) %>, "nativeGet<%- camelize(properties[i].name) %>")<% if(i != (properties.length -1)) {-%>,<% } -%><% } -%>); } } // namespace android diff --git a/platform/android/src/style/layers/layer.hpp.ejs b/platform/android/src/style/layers/layer.hpp.ejs index 102efd2d4d..d1e84ac2d4 100644 --- a/platform/android/src/style/layers/layer.hpp.ejs +++ b/platform/android/src/style/layers/layer.hpp.ejs @@ -7,6 +7,7 @@ #pragma once #include "layer.hpp" +#include "../transition_options.hpp" #include <mbgl/style/layers/<%- type.replace('-', '_') %>_layer.hpp> #include <jni/jni.hpp> @@ -34,11 +35,16 @@ public: ~<%- camelize(type) %>Layer(); - // Property getters + // Properties <% for (const property of properties) { -%> - jni::Object<jni::ObjectTag> get<%- camelize(property.name) %>(jni::JNIEnv&); + jni::Object<jni::ObjectTag> get<%- camelize(property.name) %>(jni::JNIEnv&); +<% if (property.transition) { -%> + void set<%- camelize(property.name) %>Transition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> get<%- camelize(property.name) %>Transition(jni::JNIEnv&); <% } -%> +<% } -%> + jni::jobject* createJavaPeer(jni::JNIEnv&); }; // class <%- camelize(type) %>Layer diff --git a/platform/android/src/style/layers/line_layer.cpp b/platform/android/src/style/layers/line_layer.cpp index 1a3a666a7b..af4e24523e 100644 --- a/platform/android/src/style/layers/line_layer.cpp +++ b/platform/android/src/style/layers/line_layer.cpp @@ -5,6 +5,7 @@ #include <string> #include "../conversion/property_value.hpp" +#include "../conversion/transition_options.hpp" namespace mbgl { namespace android { @@ -64,18 +65,57 @@ namespace android { return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> LineLayer::getLineOpacityTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::LineLayer>()->LineLayer::getLineOpacityTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void LineLayer::setLineOpacityTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::LineLayer>()->LineLayer::setLineOpacityTransition(options); + } + jni::Object<jni::ObjectTag> LineLayer::getLineColor(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::LineLayer>()->LineLayer::getLineColor()); return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> LineLayer::getLineColorTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::LineLayer>()->LineLayer::getLineColorTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void LineLayer::setLineColorTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::LineLayer>()->LineLayer::setLineColorTransition(options); + } + jni::Object<jni::ObjectTag> LineLayer::getLineTranslate(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::LineLayer>()->LineLayer::getLineTranslate()); return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> LineLayer::getLineTranslateTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::LineLayer>()->LineLayer::getLineTranslateTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void LineLayer::setLineTranslateTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::LineLayer>()->LineLayer::setLineTranslateTransition(options); + } + jni::Object<jni::ObjectTag> LineLayer::getLineTranslateAnchor(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::LineLayer>()->LineLayer::getLineTranslateAnchor()); @@ -88,36 +128,115 @@ namespace android { return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> LineLayer::getLineWidthTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::LineLayer>()->LineLayer::getLineWidthTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void LineLayer::setLineWidthTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::LineLayer>()->LineLayer::setLineWidthTransition(options); + } + jni::Object<jni::ObjectTag> LineLayer::getLineGapWidth(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::LineLayer>()->LineLayer::getLineGapWidth()); return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> LineLayer::getLineGapWidthTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::LineLayer>()->LineLayer::getLineGapWidthTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void LineLayer::setLineGapWidthTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::LineLayer>()->LineLayer::setLineGapWidthTransition(options); + } + jni::Object<jni::ObjectTag> LineLayer::getLineOffset(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::LineLayer>()->LineLayer::getLineOffset()); return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> LineLayer::getLineOffsetTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::LineLayer>()->LineLayer::getLineOffsetTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void LineLayer::setLineOffsetTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::LineLayer>()->LineLayer::setLineOffsetTransition(options); + } + jni::Object<jni::ObjectTag> LineLayer::getLineBlur(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::LineLayer>()->LineLayer::getLineBlur()); return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> LineLayer::getLineBlurTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::LineLayer>()->LineLayer::getLineBlurTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void LineLayer::setLineBlurTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::LineLayer>()->LineLayer::setLineBlurTransition(options); + } + jni::Object<jni::ObjectTag> LineLayer::getLineDasharray(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::LineLayer>()->LineLayer::getLineDasharray()); return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> LineLayer::getLineDasharrayTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::LineLayer>()->LineLayer::getLineDasharrayTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void LineLayer::setLineDasharrayTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::LineLayer>()->LineLayer::setLineDasharrayTransition(options); + } + jni::Object<jni::ObjectTag> LineLayer::getLinePattern(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::LineLayer>()->LineLayer::getLinePattern()); return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> LineLayer::getLinePatternTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::LineLayer>()->LineLayer::getLinePatternTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void LineLayer::setLinePatternTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::LineLayer>()->LineLayer::setLinePatternTransition(options); + } + + jni::Class<LineLayer> LineLayer::javaClass; jni::jobject* LineLayer::createJavaPeer(jni::JNIEnv& env) { @@ -141,15 +260,33 @@ namespace android { METHOD(&LineLayer::getLineJoin, "nativeGetLineJoin"), METHOD(&LineLayer::getLineMiterLimit, "nativeGetLineMiterLimit"), METHOD(&LineLayer::getLineRoundLimit, "nativeGetLineRoundLimit"), + METHOD(&LineLayer::getLineOpacityTransition, "nativeGetLineOpacityTransition"), + METHOD(&LineLayer::setLineOpacityTransition, "nativeSetLineOpacityTransition"), METHOD(&LineLayer::getLineOpacity, "nativeGetLineOpacity"), + METHOD(&LineLayer::getLineColorTransition, "nativeGetLineColorTransition"), + METHOD(&LineLayer::setLineColorTransition, "nativeSetLineColorTransition"), METHOD(&LineLayer::getLineColor, "nativeGetLineColor"), + METHOD(&LineLayer::getLineTranslateTransition, "nativeGetLineTranslateTransition"), + METHOD(&LineLayer::setLineTranslateTransition, "nativeSetLineTranslateTransition"), METHOD(&LineLayer::getLineTranslate, "nativeGetLineTranslate"), METHOD(&LineLayer::getLineTranslateAnchor, "nativeGetLineTranslateAnchor"), + METHOD(&LineLayer::getLineWidthTransition, "nativeGetLineWidthTransition"), + METHOD(&LineLayer::setLineWidthTransition, "nativeSetLineWidthTransition"), METHOD(&LineLayer::getLineWidth, "nativeGetLineWidth"), + METHOD(&LineLayer::getLineGapWidthTransition, "nativeGetLineGapWidthTransition"), + METHOD(&LineLayer::setLineGapWidthTransition, "nativeSetLineGapWidthTransition"), METHOD(&LineLayer::getLineGapWidth, "nativeGetLineGapWidth"), + METHOD(&LineLayer::getLineOffsetTransition, "nativeGetLineOffsetTransition"), + METHOD(&LineLayer::setLineOffsetTransition, "nativeSetLineOffsetTransition"), METHOD(&LineLayer::getLineOffset, "nativeGetLineOffset"), + METHOD(&LineLayer::getLineBlurTransition, "nativeGetLineBlurTransition"), + METHOD(&LineLayer::setLineBlurTransition, "nativeSetLineBlurTransition"), METHOD(&LineLayer::getLineBlur, "nativeGetLineBlur"), + METHOD(&LineLayer::getLineDasharrayTransition, "nativeGetLineDasharrayTransition"), + METHOD(&LineLayer::setLineDasharrayTransition, "nativeSetLineDasharrayTransition"), METHOD(&LineLayer::getLineDasharray, "nativeGetLineDasharray"), + METHOD(&LineLayer::getLinePatternTransition, "nativeGetLinePatternTransition"), + METHOD(&LineLayer::setLinePatternTransition, "nativeSetLinePatternTransition"), METHOD(&LineLayer::getLinePattern, "nativeGetLinePattern")); } diff --git a/platform/android/src/style/layers/line_layer.hpp b/platform/android/src/style/layers/line_layer.hpp index a79c8b9021..84ecc77139 100644 --- a/platform/android/src/style/layers/line_layer.hpp +++ b/platform/android/src/style/layers/line_layer.hpp @@ -3,6 +3,7 @@ #pragma once #include "layer.hpp" +#include "../transition_options.hpp" #include <mbgl/style/layers/line_layer.hpp> #include <jni/jni.hpp> @@ -26,7 +27,8 @@ public: ~LineLayer(); - // Property getters + // Properties + jni::Object<jni::ObjectTag> getLineCap(jni::JNIEnv&); jni::Object<jni::ObjectTag> getLineJoin(jni::JNIEnv&); @@ -36,25 +38,42 @@ public: jni::Object<jni::ObjectTag> getLineRoundLimit(jni::JNIEnv&); jni::Object<jni::ObjectTag> getLineOpacity(jni::JNIEnv&); + void setLineOpacityTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getLineOpacityTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getLineColor(jni::JNIEnv&); + void setLineColorTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getLineColorTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getLineTranslate(jni::JNIEnv&); + void setLineTranslateTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getLineTranslateTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getLineTranslateAnchor(jni::JNIEnv&); jni::Object<jni::ObjectTag> getLineWidth(jni::JNIEnv&); + void setLineWidthTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getLineWidthTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getLineGapWidth(jni::JNIEnv&); + void setLineGapWidthTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getLineGapWidthTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getLineOffset(jni::JNIEnv&); + void setLineOffsetTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getLineOffsetTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getLineBlur(jni::JNIEnv&); + void setLineBlurTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getLineBlurTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getLineDasharray(jni::JNIEnv&); + void setLineDasharrayTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getLineDasharrayTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getLinePattern(jni::JNIEnv&); - + void setLinePatternTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getLinePatternTransition(jni::JNIEnv&); jni::jobject* createJavaPeer(jni::JNIEnv&); }; // class LineLayer diff --git a/platform/android/src/style/layers/raster_layer.cpp b/platform/android/src/style/layers/raster_layer.cpp index 8a324b88f2..98923d5129 100644 --- a/platform/android/src/style/layers/raster_layer.cpp +++ b/platform/android/src/style/layers/raster_layer.cpp @@ -5,6 +5,7 @@ #include <string> #include "../conversion/property_value.hpp" +#include "../conversion/transition_options.hpp" namespace mbgl { namespace android { @@ -40,42 +41,134 @@ namespace android { return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> RasterLayer::getRasterOpacityTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::RasterLayer>()->RasterLayer::getRasterOpacityTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void RasterLayer::setRasterOpacityTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::RasterLayer>()->RasterLayer::setRasterOpacityTransition(options); + } + jni::Object<jni::ObjectTag> RasterLayer::getRasterHueRotate(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::RasterLayer>()->RasterLayer::getRasterHueRotate()); return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> RasterLayer::getRasterHueRotateTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::RasterLayer>()->RasterLayer::getRasterHueRotateTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void RasterLayer::setRasterHueRotateTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::RasterLayer>()->RasterLayer::setRasterHueRotateTransition(options); + } + jni::Object<jni::ObjectTag> RasterLayer::getRasterBrightnessMin(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::RasterLayer>()->RasterLayer::getRasterBrightnessMin()); return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> RasterLayer::getRasterBrightnessMinTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::RasterLayer>()->RasterLayer::getRasterBrightnessMinTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void RasterLayer::setRasterBrightnessMinTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::RasterLayer>()->RasterLayer::setRasterBrightnessMinTransition(options); + } + jni::Object<jni::ObjectTag> RasterLayer::getRasterBrightnessMax(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::RasterLayer>()->RasterLayer::getRasterBrightnessMax()); return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> RasterLayer::getRasterBrightnessMaxTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::RasterLayer>()->RasterLayer::getRasterBrightnessMaxTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void RasterLayer::setRasterBrightnessMaxTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::RasterLayer>()->RasterLayer::setRasterBrightnessMaxTransition(options); + } + jni::Object<jni::ObjectTag> RasterLayer::getRasterSaturation(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::RasterLayer>()->RasterLayer::getRasterSaturation()); return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> RasterLayer::getRasterSaturationTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::RasterLayer>()->RasterLayer::getRasterSaturationTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void RasterLayer::setRasterSaturationTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::RasterLayer>()->RasterLayer::setRasterSaturationTransition(options); + } + jni::Object<jni::ObjectTag> RasterLayer::getRasterContrast(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::RasterLayer>()->RasterLayer::getRasterContrast()); return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> RasterLayer::getRasterContrastTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::RasterLayer>()->RasterLayer::getRasterContrastTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void RasterLayer::setRasterContrastTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::RasterLayer>()->RasterLayer::setRasterContrastTransition(options); + } + jni::Object<jni::ObjectTag> RasterLayer::getRasterFadeDuration(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::RasterLayer>()->RasterLayer::getRasterFadeDuration()); return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> RasterLayer::getRasterFadeDurationTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::RasterLayer>()->RasterLayer::getRasterFadeDurationTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void RasterLayer::setRasterFadeDurationTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::RasterLayer>()->RasterLayer::setRasterFadeDurationTransition(options); + } + + jni::Class<RasterLayer> RasterLayer::javaClass; jni::jobject* RasterLayer::createJavaPeer(jni::JNIEnv& env) { @@ -95,12 +188,26 @@ namespace android { std::make_unique<RasterLayer, JNIEnv&, jni::String, jni::String>, "initialize", "finalize", + METHOD(&RasterLayer::getRasterOpacityTransition, "nativeGetRasterOpacityTransition"), + METHOD(&RasterLayer::setRasterOpacityTransition, "nativeSetRasterOpacityTransition"), METHOD(&RasterLayer::getRasterOpacity, "nativeGetRasterOpacity"), + METHOD(&RasterLayer::getRasterHueRotateTransition, "nativeGetRasterHueRotateTransition"), + METHOD(&RasterLayer::setRasterHueRotateTransition, "nativeSetRasterHueRotateTransition"), METHOD(&RasterLayer::getRasterHueRotate, "nativeGetRasterHueRotate"), + METHOD(&RasterLayer::getRasterBrightnessMinTransition, "nativeGetRasterBrightnessMinTransition"), + METHOD(&RasterLayer::setRasterBrightnessMinTransition, "nativeSetRasterBrightnessMinTransition"), METHOD(&RasterLayer::getRasterBrightnessMin, "nativeGetRasterBrightnessMin"), + METHOD(&RasterLayer::getRasterBrightnessMaxTransition, "nativeGetRasterBrightnessMaxTransition"), + METHOD(&RasterLayer::setRasterBrightnessMaxTransition, "nativeSetRasterBrightnessMaxTransition"), METHOD(&RasterLayer::getRasterBrightnessMax, "nativeGetRasterBrightnessMax"), + METHOD(&RasterLayer::getRasterSaturationTransition, "nativeGetRasterSaturationTransition"), + METHOD(&RasterLayer::setRasterSaturationTransition, "nativeSetRasterSaturationTransition"), METHOD(&RasterLayer::getRasterSaturation, "nativeGetRasterSaturation"), + METHOD(&RasterLayer::getRasterContrastTransition, "nativeGetRasterContrastTransition"), + METHOD(&RasterLayer::setRasterContrastTransition, "nativeSetRasterContrastTransition"), METHOD(&RasterLayer::getRasterContrast, "nativeGetRasterContrast"), + METHOD(&RasterLayer::getRasterFadeDurationTransition, "nativeGetRasterFadeDurationTransition"), + METHOD(&RasterLayer::setRasterFadeDurationTransition, "nativeSetRasterFadeDurationTransition"), METHOD(&RasterLayer::getRasterFadeDuration, "nativeGetRasterFadeDuration")); } diff --git a/platform/android/src/style/layers/raster_layer.hpp b/platform/android/src/style/layers/raster_layer.hpp index 2f5d4f6fcd..3b119ee0d2 100644 --- a/platform/android/src/style/layers/raster_layer.hpp +++ b/platform/android/src/style/layers/raster_layer.hpp @@ -3,6 +3,7 @@ #pragma once #include "layer.hpp" +#include "../transition_options.hpp" #include <mbgl/style/layers/raster_layer.hpp> #include <jni/jni.hpp> @@ -26,21 +27,35 @@ public: ~RasterLayer(); - // Property getters + // Properties + jni::Object<jni::ObjectTag> getRasterOpacity(jni::JNIEnv&); + void setRasterOpacityTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getRasterOpacityTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getRasterHueRotate(jni::JNIEnv&); + void setRasterHueRotateTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getRasterHueRotateTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getRasterBrightnessMin(jni::JNIEnv&); + void setRasterBrightnessMinTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getRasterBrightnessMinTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getRasterBrightnessMax(jni::JNIEnv&); + void setRasterBrightnessMaxTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getRasterBrightnessMaxTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getRasterSaturation(jni::JNIEnv&); + void setRasterSaturationTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getRasterSaturationTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getRasterContrast(jni::JNIEnv&); + void setRasterContrastTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getRasterContrastTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getRasterFadeDuration(jni::JNIEnv&); - + void setRasterFadeDurationTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getRasterFadeDurationTransition(jni::JNIEnv&); jni::jobject* createJavaPeer(jni::JNIEnv&); }; // class RasterLayer diff --git a/platform/android/src/style/layers/symbol_layer.cpp b/platform/android/src/style/layers/symbol_layer.cpp index e42eeb4c77..3a560a5deb 100644 --- a/platform/android/src/style/layers/symbol_layer.cpp +++ b/platform/android/src/style/layers/symbol_layer.cpp @@ -5,6 +5,7 @@ #include <string> #include "../conversion/property_value.hpp" +#include "../conversion/transition_options.hpp" namespace mbgl { namespace android { @@ -244,36 +245,114 @@ namespace android { return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> SymbolLayer::getIconOpacityTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::SymbolLayer>()->SymbolLayer::getIconOpacityTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void SymbolLayer::setIconOpacityTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::SymbolLayer>()->SymbolLayer::setIconOpacityTransition(options); + } + jni::Object<jni::ObjectTag> SymbolLayer::getIconColor(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::SymbolLayer>()->SymbolLayer::getIconColor()); return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> SymbolLayer::getIconColorTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::SymbolLayer>()->SymbolLayer::getIconColorTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void SymbolLayer::setIconColorTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::SymbolLayer>()->SymbolLayer::setIconColorTransition(options); + } + jni::Object<jni::ObjectTag> SymbolLayer::getIconHaloColor(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::SymbolLayer>()->SymbolLayer::getIconHaloColor()); return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> SymbolLayer::getIconHaloColorTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::SymbolLayer>()->SymbolLayer::getIconHaloColorTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void SymbolLayer::setIconHaloColorTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::SymbolLayer>()->SymbolLayer::setIconHaloColorTransition(options); + } + jni::Object<jni::ObjectTag> SymbolLayer::getIconHaloWidth(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::SymbolLayer>()->SymbolLayer::getIconHaloWidth()); return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> SymbolLayer::getIconHaloWidthTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::SymbolLayer>()->SymbolLayer::getIconHaloWidthTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void SymbolLayer::setIconHaloWidthTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::SymbolLayer>()->SymbolLayer::setIconHaloWidthTransition(options); + } + jni::Object<jni::ObjectTag> SymbolLayer::getIconHaloBlur(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::SymbolLayer>()->SymbolLayer::getIconHaloBlur()); return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> SymbolLayer::getIconHaloBlurTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::SymbolLayer>()->SymbolLayer::getIconHaloBlurTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void SymbolLayer::setIconHaloBlurTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::SymbolLayer>()->SymbolLayer::setIconHaloBlurTransition(options); + } + jni::Object<jni::ObjectTag> SymbolLayer::getIconTranslate(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::SymbolLayer>()->SymbolLayer::getIconTranslate()); return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> SymbolLayer::getIconTranslateTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::SymbolLayer>()->SymbolLayer::getIconTranslateTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void SymbolLayer::setIconTranslateTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::SymbolLayer>()->SymbolLayer::setIconTranslateTransition(options); + } + jni::Object<jni::ObjectTag> SymbolLayer::getIconTranslateAnchor(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::SymbolLayer>()->SymbolLayer::getIconTranslateAnchor()); @@ -286,42 +365,121 @@ namespace android { return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> SymbolLayer::getTextOpacityTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::SymbolLayer>()->SymbolLayer::getTextOpacityTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void SymbolLayer::setTextOpacityTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::SymbolLayer>()->SymbolLayer::setTextOpacityTransition(options); + } + jni::Object<jni::ObjectTag> SymbolLayer::getTextColor(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::SymbolLayer>()->SymbolLayer::getTextColor()); return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> SymbolLayer::getTextColorTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::SymbolLayer>()->SymbolLayer::getTextColorTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void SymbolLayer::setTextColorTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::SymbolLayer>()->SymbolLayer::setTextColorTransition(options); + } + jni::Object<jni::ObjectTag> SymbolLayer::getTextHaloColor(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::SymbolLayer>()->SymbolLayer::getTextHaloColor()); return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> SymbolLayer::getTextHaloColorTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::SymbolLayer>()->SymbolLayer::getTextHaloColorTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void SymbolLayer::setTextHaloColorTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::SymbolLayer>()->SymbolLayer::setTextHaloColorTransition(options); + } + jni::Object<jni::ObjectTag> SymbolLayer::getTextHaloWidth(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::SymbolLayer>()->SymbolLayer::getTextHaloWidth()); return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> SymbolLayer::getTextHaloWidthTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::SymbolLayer>()->SymbolLayer::getTextHaloWidthTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void SymbolLayer::setTextHaloWidthTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::SymbolLayer>()->SymbolLayer::setTextHaloWidthTransition(options); + } + jni::Object<jni::ObjectTag> SymbolLayer::getTextHaloBlur(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::SymbolLayer>()->SymbolLayer::getTextHaloBlur()); return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> SymbolLayer::getTextHaloBlurTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::SymbolLayer>()->SymbolLayer::getTextHaloBlurTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void SymbolLayer::setTextHaloBlurTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::SymbolLayer>()->SymbolLayer::setTextHaloBlurTransition(options); + } + jni::Object<jni::ObjectTag> SymbolLayer::getTextTranslate(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::SymbolLayer>()->SymbolLayer::getTextTranslate()); return jni::Object<jni::ObjectTag>(*converted); } + jni::Object<TransitionOptions> SymbolLayer::getTextTranslateTransition(jni::JNIEnv& env) { + using namespace mbgl::android::conversion; + mbgl::style::TransitionOptions options = layer.as<mbgl::style::SymbolLayer>()->SymbolLayer::getTextTranslateTransition(); + return *convert<jni::Object<TransitionOptions>>(env, options); + } + + void SymbolLayer::setTextTranslateTransition(jni::JNIEnv&, jlong duration, jlong delay) { + mbgl::style::TransitionOptions options; + options.duration.emplace(mbgl::Milliseconds(duration)); + options.delay.emplace(mbgl::Milliseconds(delay)); + layer.as<mbgl::style::SymbolLayer>()->SymbolLayer::setTextTranslateTransition(options); + } + jni::Object<jni::ObjectTag> SymbolLayer::getTextTranslateAnchor(jni::JNIEnv& env) { using namespace mbgl::android::conversion; Result<jni::jobject*> converted = convert<jni::jobject*>(env, layer.as<mbgl::style::SymbolLayer>()->SymbolLayer::getTextTranslateAnchor()); return jni::Object<jni::ObjectTag>(*converted); } + jni::Class<SymbolLayer> SymbolLayer::javaClass; jni::jobject* SymbolLayer::createJavaPeer(jni::JNIEnv& env) { @@ -375,18 +533,42 @@ namespace android { METHOD(&SymbolLayer::getTextAllowOverlap, "nativeGetTextAllowOverlap"), METHOD(&SymbolLayer::getTextIgnorePlacement, "nativeGetTextIgnorePlacement"), METHOD(&SymbolLayer::getTextOptional, "nativeGetTextOptional"), + METHOD(&SymbolLayer::getIconOpacityTransition, "nativeGetIconOpacityTransition"), + METHOD(&SymbolLayer::setIconOpacityTransition, "nativeSetIconOpacityTransition"), METHOD(&SymbolLayer::getIconOpacity, "nativeGetIconOpacity"), + METHOD(&SymbolLayer::getIconColorTransition, "nativeGetIconColorTransition"), + METHOD(&SymbolLayer::setIconColorTransition, "nativeSetIconColorTransition"), METHOD(&SymbolLayer::getIconColor, "nativeGetIconColor"), + METHOD(&SymbolLayer::getIconHaloColorTransition, "nativeGetIconHaloColorTransition"), + METHOD(&SymbolLayer::setIconHaloColorTransition, "nativeSetIconHaloColorTransition"), METHOD(&SymbolLayer::getIconHaloColor, "nativeGetIconHaloColor"), + METHOD(&SymbolLayer::getIconHaloWidthTransition, "nativeGetIconHaloWidthTransition"), + METHOD(&SymbolLayer::setIconHaloWidthTransition, "nativeSetIconHaloWidthTransition"), METHOD(&SymbolLayer::getIconHaloWidth, "nativeGetIconHaloWidth"), + METHOD(&SymbolLayer::getIconHaloBlurTransition, "nativeGetIconHaloBlurTransition"), + METHOD(&SymbolLayer::setIconHaloBlurTransition, "nativeSetIconHaloBlurTransition"), METHOD(&SymbolLayer::getIconHaloBlur, "nativeGetIconHaloBlur"), + METHOD(&SymbolLayer::getIconTranslateTransition, "nativeGetIconTranslateTransition"), + METHOD(&SymbolLayer::setIconTranslateTransition, "nativeSetIconTranslateTransition"), METHOD(&SymbolLayer::getIconTranslate, "nativeGetIconTranslate"), METHOD(&SymbolLayer::getIconTranslateAnchor, "nativeGetIconTranslateAnchor"), + METHOD(&SymbolLayer::getTextOpacityTransition, "nativeGetTextOpacityTransition"), + METHOD(&SymbolLayer::setTextOpacityTransition, "nativeSetTextOpacityTransition"), METHOD(&SymbolLayer::getTextOpacity, "nativeGetTextOpacity"), + METHOD(&SymbolLayer::getTextColorTransition, "nativeGetTextColorTransition"), + METHOD(&SymbolLayer::setTextColorTransition, "nativeSetTextColorTransition"), METHOD(&SymbolLayer::getTextColor, "nativeGetTextColor"), + METHOD(&SymbolLayer::getTextHaloColorTransition, "nativeGetTextHaloColorTransition"), + METHOD(&SymbolLayer::setTextHaloColorTransition, "nativeSetTextHaloColorTransition"), METHOD(&SymbolLayer::getTextHaloColor, "nativeGetTextHaloColor"), + METHOD(&SymbolLayer::getTextHaloWidthTransition, "nativeGetTextHaloWidthTransition"), + METHOD(&SymbolLayer::setTextHaloWidthTransition, "nativeSetTextHaloWidthTransition"), METHOD(&SymbolLayer::getTextHaloWidth, "nativeGetTextHaloWidth"), + METHOD(&SymbolLayer::getTextHaloBlurTransition, "nativeGetTextHaloBlurTransition"), + METHOD(&SymbolLayer::setTextHaloBlurTransition, "nativeSetTextHaloBlurTransition"), METHOD(&SymbolLayer::getTextHaloBlur, "nativeGetTextHaloBlur"), + METHOD(&SymbolLayer::getTextTranslateTransition, "nativeGetTextTranslateTransition"), + METHOD(&SymbolLayer::setTextTranslateTransition, "nativeSetTextTranslateTransition"), METHOD(&SymbolLayer::getTextTranslate, "nativeGetTextTranslate"), METHOD(&SymbolLayer::getTextTranslateAnchor, "nativeGetTextTranslateAnchor")); } diff --git a/platform/android/src/style/layers/symbol_layer.hpp b/platform/android/src/style/layers/symbol_layer.hpp index 98ce5572e9..8366051c6e 100644 --- a/platform/android/src/style/layers/symbol_layer.hpp +++ b/platform/android/src/style/layers/symbol_layer.hpp @@ -3,6 +3,7 @@ #pragma once #include "layer.hpp" +#include "../transition_options.hpp" #include <mbgl/style/layers/symbol_layer.hpp> #include <jni/jni.hpp> @@ -26,7 +27,8 @@ public: ~SymbolLayer(); - // Property getters + // Properties + jni::Object<jni::ObjectTag> getSymbolPlacement(jni::JNIEnv&); jni::Object<jni::ObjectTag> getSymbolSpacing(jni::JNIEnv&); @@ -96,33 +98,56 @@ public: jni::Object<jni::ObjectTag> getTextOptional(jni::JNIEnv&); jni::Object<jni::ObjectTag> getIconOpacity(jni::JNIEnv&); + void setIconOpacityTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getIconOpacityTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getIconColor(jni::JNIEnv&); + void setIconColorTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getIconColorTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getIconHaloColor(jni::JNIEnv&); + void setIconHaloColorTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getIconHaloColorTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getIconHaloWidth(jni::JNIEnv&); + void setIconHaloWidthTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getIconHaloWidthTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getIconHaloBlur(jni::JNIEnv&); + void setIconHaloBlurTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getIconHaloBlurTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getIconTranslate(jni::JNIEnv&); + void setIconTranslateTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getIconTranslateTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getIconTranslateAnchor(jni::JNIEnv&); jni::Object<jni::ObjectTag> getTextOpacity(jni::JNIEnv&); + void setTextOpacityTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getTextOpacityTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getTextColor(jni::JNIEnv&); + void setTextColorTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getTextColorTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getTextHaloColor(jni::JNIEnv&); + void setTextHaloColorTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getTextHaloColorTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getTextHaloWidth(jni::JNIEnv&); + void setTextHaloWidthTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getTextHaloWidthTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getTextHaloBlur(jni::JNIEnv&); + void setTextHaloBlurTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getTextHaloBlurTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getTextTranslate(jni::JNIEnv&); + void setTextTranslateTransition(jni::JNIEnv&, jlong duration, jlong delay); + jni::Object<TransitionOptions> getTextTranslateTransition(jni::JNIEnv&); jni::Object<jni::ObjectTag> getTextTranslateAnchor(jni::JNIEnv&); - jni::jobject* createJavaPeer(jni::JNIEnv&); }; // class SymbolLayer diff --git a/platform/android/src/style/transition_options.cpp b/platform/android/src/style/transition_options.cpp new file mode 100644 index 0000000000..c70aa5fe2e --- /dev/null +++ b/platform/android/src/style/transition_options.cpp @@ -0,0 +1,20 @@ +#include "transition_options.hpp" + +namespace mbgl { +namespace android { + +jni::Object<TransitionOptions> TransitionOptions::fromTransitionOptions(jni::JNIEnv& env, jlong duration, jlong delay) { + static auto method = TransitionOptions::javaClass.GetStaticMethod<jni::Object<TransitionOptions> (jlong, jlong)>(env, "fromTransitionOptions"); + return TransitionOptions::javaClass.Call(env, method, duration, delay); +} + +void TransitionOptions::registerNative(jni::JNIEnv& env) { + // Lookup the class + TransitionOptions::javaClass = *jni::Class<TransitionOptions>::Find(env).NewGlobalRef(env).release(); +} + +jni::Class<TransitionOptions> TransitionOptions::javaClass; + + +} // namespace android +} // namespace mbgl
\ No newline at end of file diff --git a/platform/android/src/style/transition_options.hpp b/platform/android/src/style/transition_options.hpp new file mode 100644 index 0000000000..3e6b0bc488 --- /dev/null +++ b/platform/android/src/style/transition_options.hpp @@ -0,0 +1,25 @@ +#pragma once + +#include <mbgl/util/noncopyable.hpp> + +#include <jni/jni.hpp> + +namespace mbgl { +namespace android { + +class TransitionOptions : private mbgl::util::noncopyable { +public: + + static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/layers/TransitionOptions"; }; + + static jni::Object<TransitionOptions> fromTransitionOptions(jni::JNIEnv&, jlong duration, jlong offset); + + static jni::Class<TransitionOptions> javaClass; + + static void registerNative(jni::JNIEnv&); + +}; + + +} // namespace android +} // namespace mbgl
\ No newline at end of file |