diff options
Diffstat (limited to 'platform/android/src/style')
63 files changed, 0 insertions, 5945 deletions
diff --git a/platform/android/src/style/android_conversion.hpp b/platform/android/src/style/android_conversion.hpp deleted file mode 100644 index 6f16804597..0000000000 --- a/platform/android/src/style/android_conversion.hpp +++ /dev/null @@ -1,148 +0,0 @@ -#pragma once - -#include "value.hpp" - -#include <mbgl/util/feature.hpp> -#include <mbgl/util/logging.hpp> -#include <mbgl/util/optional.hpp> -#include <mbgl/style/conversion/geojson.hpp> -#include <mbgl/style/conversion_impl.hpp> - -#include <jni/jni.hpp> - -namespace mbgl { -namespace style { -namespace conversion { - -template <> -class ConversionTraits<mbgl::android::Value> { -public: - static bool isUndefined(const mbgl::android::Value& value) { - return value.isNull(); - } - - static bool isArray(const mbgl::android::Value& value) { - return value.isArray(); - } - - static bool isObject(const mbgl::android::Value& value) { - return value.isObject(); - } - - static std::size_t arrayLength(const mbgl::android::Value& value) { - return value.getLength();; - } - - static mbgl::android::Value arrayMember(const mbgl::android::Value& value, std::size_t i) { - return value.get(i); - } - - static optional<mbgl::android::Value> objectMember(const mbgl::android::Value& value, const char* key) { - mbgl::android::Value member = value.get(key); - if (!member.isNull()) { - return member; - } else { - return {}; - } - } - - template <class Fn> - static optional<Error> eachMember(const mbgl::android::Value& value, Fn&& fn) { - assert(value.isObject()); - mbgl::android::Value keys = value.keyArray(); - std::size_t length = arrayLength(keys); - for(std::size_t i = 0; i < length; ++i){ - const auto k = keys.get(i).toString(); - auto v = value.get(k.c_str()); - optional<Error> result = fn(k, std::move(v)); - if (result) { - return result; - } - } - return {}; - } - - static optional<bool> toBool(const mbgl::android::Value& value) { - if (value.isBool()) { - return value.toBool(); - } else { - return {}; - } - } - - static optional<float> toNumber(const mbgl::android::Value& value) { - if (value.isNumber()) { - auto num = value.toFloat(); - return num; - } else { - return {}; - } - } - - static optional<double> toDouble(const mbgl::android::Value& value) { - if (value.isNumber()) { - return value.toDouble(); - } else { - return {}; - } - } - - static optional<std::string> toString(const mbgl::android::Value& value) { - if (value.isString()) { - return value.toString(); - } else { - return {}; - } - } - - static optional<Value> toValue(const mbgl::android::Value& value) { - if (value.isNull()) { - return {}; - } else if (value.isBool()) { - return { value.toBool() }; - } else if (value.isString()) { - return { value.toString() }; - } else if (value.isNumber()) { - return { value.toDouble() }; - } else { - return {}; - } - } - - static optional<GeoJSON> toGeoJSON(const mbgl::android::Value &value, Error &error) { - if (value.isNull()) { - error = { "no json data found" }; - return {}; - } - - if (value.isString()) { - return parseGeoJSON(value.toString(), error); - } - - if (value.isObject()) { - mbgl::android::Value keys = value.keyArray(); - std::size_t length = arrayLength(keys); - for (std::size_t i = 0; i < length; ++i) { - if (keys.get(i).toString() == "json") { - auto v = value.get("json"); - if (v.isString()) { - return parseGeoJSON(v.toString(), error); - } else { - break; - } - } - } - } - error = {"no json data found"}; - return {}; - } -}; - -template <class T, class...Args> -optional<T> convert(mbgl::android::Value&& value, Error& error, Args&&...args) { - return convert<T>(Convertible(std::move(value)), error, std::forward<Args>(args)...); -} - -} // namespace conversion -} // namespace style -} // namespace mbgl diff --git a/platform/android/src/style/conversion/filter.cpp b/platform/android/src/style/conversion/filter.cpp deleted file mode 100644 index d15e2747ac..0000000000 --- a/platform/android/src/style/conversion/filter.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#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, const 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 diff --git a/platform/android/src/style/conversion/filter.hpp b/platform/android/src/style/conversion/filter.hpp deleted file mode 100644 index 920d336a1a..0000000000 --- a/platform/android/src/style/conversion/filter.hpp +++ /dev/null @@ -1,16 +0,0 @@ -#pragma once - -#include <mbgl/style/filter.hpp> -#include <mbgl/util/optional.hpp> - -#include <jni/jni.hpp> - -namespace mbgl { -namespace android { -namespace conversion { - -optional<mbgl::style::Filter> toFilter(jni::JNIEnv&, const jni::Array<jni::Object<>>&); - -} // namespace conversion -} // namespace android -} // namespace mbgl
\ No newline at end of file diff --git a/platform/android/src/style/conversion/position.cpp b/platform/android/src/style/conversion/position.cpp deleted file mode 100644 index e3c334afd2..0000000000 --- a/platform/android/src/style/conversion/position.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#include "position.hpp" - -namespace mbgl { -namespace android { -namespace conversion { - -Result<jni::Local<jni::Object<Position>>> Converter<jni::Local<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 deleted file mode 100644 index 90409d527d..0000000000 --- a/platform/android/src/style/conversion/position.hpp +++ /dev/null @@ -1,25 +0,0 @@ -#pragma once - -#include "../../conversion/conversion.hpp" -#include "../position.hpp" - -#include <mbgl/style/position.hpp> -#include <jni/jni.hpp> - -namespace mbgl { -namespace android { -namespace conversion { - -template <> -struct Converter<jni::Local<jni::Object<Position>>, mbgl::style::Position> { - Result<jni::Local<jni::Object<Position>>> operator()(jni::JNIEnv &env, const mbgl::style::Position &value) const; -}; - -template <> -struct Converter<mbgl::style::Position, jni::Object<Position>> { - Result<mbgl::style::Position> operator()(jni::JNIEnv &env, const jni::Object<Position> &value) const; -}; - -} -} -} diff --git a/platform/android/src/style/conversion/property_expression.hpp b/platform/android/src/style/conversion/property_expression.hpp deleted file mode 100644 index 4e26b11f96..0000000000 --- a/platform/android/src/style/conversion/property_expression.hpp +++ /dev/null @@ -1,23 +0,0 @@ -#pragma once - -#include "../../conversion/conversion.hpp" -#include "../../gson/json_element.hpp" - -#include <mbgl/style/property_expression.hpp> - -#include <jni/jni.hpp> - -namespace mbgl { -namespace android { -namespace conversion { - -template <class T> -struct Converter<jni::Local<jni::Object<android::gson::JsonElement>>, mbgl::style::PropertyExpression<T>> { - Result<jni::Local<jni::Object<android::gson::JsonElement>>> operator()(jni::JNIEnv& env, const mbgl::style::PropertyExpression<T>& value) const { - return gson::JsonElement::New(env, value.getExpression().serialize()); - } -}; - -} // namespace conversion -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/conversion/property_value.hpp b/platform/android/src/style/conversion/property_value.hpp deleted file mode 100644 index 317705a286..0000000000 --- a/platform/android/src/style/conversion/property_value.hpp +++ /dev/null @@ -1,62 +0,0 @@ -#pragma once - -#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" - -namespace mbgl { -namespace android { -namespace conversion { - -/** - * Conversion from core property value types to Java property value types - */ -template <typename T> -class PropertyValueEvaluator { -public: - PropertyValueEvaluator(jni::JNIEnv& _env) : env(_env) {} - - jni::Local<jni::Object<>> operator()(const mbgl::style::Undefined) const { - return jni::Local<jni::Object<>>(env, nullptr); - } - - jni::Local<jni::Object<>> operator()(const T& value) const { - return std::move(*convert<jni::Local<jni::Object<>>>(env, value)); - } - - jni::Local<jni::Object<>> operator()(const mbgl::style::PropertyExpression<T>& value) const { - return std::move(*convert<jni::Local<jni::Object<android::gson::JsonElement>>>(env, value)); - } - -private: - jni::JNIEnv& env; -}; - -/** - * Convert core property values to java - */ -template <class T> -struct Converter<jni::Local<jni::Object<>>, mbgl::style::PropertyValue<T>> { - Result<jni::Local<jni::Object<>>> operator()(jni::JNIEnv& env, const mbgl::style::PropertyValue<T>& value) const { - PropertyValueEvaluator<T> evaluator(env); - return value.evaluate(evaluator); - } -}; - -/** - * Convert core heat map color property value to java - */ -template <> -struct Converter<jni::Local<jni::Object<>>, mbgl::style::ColorRampPropertyValue> { - Result<jni::Local<jni::Object<>>> operator()(jni::JNIEnv& env, const mbgl::style::ColorRampPropertyValue& value) const { - PropertyValueEvaluator<mbgl::style::ColorRampPropertyValue> evaluator(env); - return std::move(*convert<jni::Local<jni::Object<>>>(env, value.evaluate(evaluator))); - } -}; - -} // namespace conversion -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/conversion/transition_options.cpp b/platform/android/src/style/conversion/transition_options.cpp deleted file mode 100644 index 75d9b4cc0d..0000000000 --- a/platform/android/src/style/conversion/transition_options.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "transition_options.hpp" - -namespace mbgl { -namespace android { -namespace conversion { - -Result<jni::Local<jni::Object<TransitionOptions>>> Converter<jni::Local<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(), - (jboolean) value.enablePlacementTransitions - ); -} - -} -} -} diff --git a/platform/android/src/style/conversion/transition_options.hpp b/platform/android/src/style/conversion/transition_options.hpp deleted file mode 100644 index 06c042922e..0000000000 --- a/platform/android/src/style/conversion/transition_options.hpp +++ /dev/null @@ -1,21 +0,0 @@ -#pragma once - -#include "../../conversion/conversion.hpp" -#include "../transition_options.hpp" - -#include <mbgl/style/transition_options.hpp> - -#include <jni/jni.hpp> - -namespace mbgl { -namespace android { -namespace conversion { - -template<> -struct Converter<jni::Local<jni::Object<TransitionOptions>>, mbgl::style::TransitionOptions> { - Result<jni::Local<jni::Object<TransitionOptions>>> operator()(jni::JNIEnv&, const mbgl::style::TransitionOptions&) const; -}; - -} -} -} diff --git a/platform/android/src/style/conversion/url_or_tileset.cpp b/platform/android/src/style/conversion/url_or_tileset.cpp deleted file mode 100644 index 2ec5856751..0000000000 --- a/platform/android/src/style/conversion/url_or_tileset.cpp +++ /dev/null @@ -1,30 +0,0 @@ -#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 deleted file mode 100644 index f42a9b9a2a..0000000000 --- a/platform/android/src/style/conversion/url_or_tileset.hpp +++ /dev/null @@ -1,16 +0,0 @@ -#pragma once - -#include <mbgl/util/variant.hpp> -#include <mbgl/util/tileset.hpp> - -#include <string> - -#include "../value.hpp" - -namespace mbgl { -namespace android { - -variant<std::string, Tileset> convertURLOrTileset(mbgl::android::Value&& value); - -} -} diff --git a/platform/android/src/style/formatted.cpp b/platform/android/src/style/formatted.cpp deleted file mode 100644 index 69c3454e23..0000000000 --- a/platform/android/src/style/formatted.cpp +++ /dev/null @@ -1,54 +0,0 @@ -#include "formatted.hpp" -#include "formatted_section.hpp" -#include "../conversion/conversion.hpp" -#include "../conversion/constant.hpp" - -namespace mbgl { -namespace android { - -void Formatted::registerNative(jni::JNIEnv& env) { - jni::Class<Formatted>::Singleton(env); -} - -jni::Local<jni::Object<Formatted>> Formatted::New(jni::JNIEnv& env, const style::expression::Formatted& value) { - static auto& formatted = jni::Class<Formatted>::Singleton(env); - static auto formattedConstructor = formatted.GetConstructor<jni::Array<jni::Object<FormattedSection>>>(env); - static auto& formattedSectionClass = jni::Class<FormattedSection>::Singleton(env); - - auto sections = jni::Array<jni::Object<FormattedSection>>::New(env, value.sections.size()); - for (std::size_t i = 0; i < value.sections.size(); i++) { - auto section = value.sections.at(i); - auto text = jni::Make<jni::String>(env, section.text); - static auto formattedSectionConstructor = formattedSectionClass.GetConstructor<jni::String>(env); - auto formattedSection = formattedSectionClass.New(env, formattedSectionConstructor, text); - - if (section.fontScale) { - double fontScale = section.fontScale.value(); - static auto method = formattedSectionClass.GetMethod<void (jni::Number)>(env, "setFontScale"); - formattedSection.Call(env, method, jni::Box(env, fontScale)); - } - - if (section.fontStack) { - auto fontStack = jni::Array<jni::String>::New(env, section.fontStack.value().size()); - for (std::size_t j = 0; j < section.fontStack.value().size(); j++) { - fontStack.Set(env, j, jni::Make<jni::String>(env, section.fontStack.value().at(j))); - } - static auto method = formattedSectionClass.GetMethod<void (jni::Array<jni::String>)>(env, "setFontStack"); - formattedSection.Call(env, method, fontStack); - } - - if (section.textColor) { - using namespace mbgl::android::conversion; - auto textColor = std::move(*convert<jni::Local<jni::Object<>>>(env, *section.textColor)); - static auto method = formattedSectionClass.GetMethod<void (jni::Object<>)>(env, "setTextColor"); - formattedSection.Call(env, method, textColor); - } - - sections.Set(env, i, formattedSection); - } - - return formatted.New(env, formattedConstructor, sections); -} - -} // namespace android -} // namespace mbgl
\ No newline at end of file diff --git a/platform/android/src/style/formatted.hpp b/platform/android/src/style/formatted.hpp deleted file mode 100644 index ca91f6562c..0000000000 --- a/platform/android/src/style/formatted.hpp +++ /dev/null @@ -1,23 +0,0 @@ -#pragma once - -#include <mbgl/util/noncopyable.hpp> - -#include <jni/jni.hpp> -#include <mbgl/style/expression/formatted.hpp> - -namespace mbgl { - namespace android { - - using SuperTag = jni::ObjectTag; - class Formatted : private mbgl::util::noncopyable { - public: - static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/types/Formatted"; }; - - static jni::Local<jni::Object<Formatted>> - New(jni::JNIEnv&, const style::expression::Formatted &value); - - static void registerNative(jni::JNIEnv &); - }; - - } // namespace android -} // namespace mbgl
\ No newline at end of file diff --git a/platform/android/src/style/formatted_section.cpp b/platform/android/src/style/formatted_section.cpp deleted file mode 100644 index ddcf76f816..0000000000 --- a/platform/android/src/style/formatted_section.cpp +++ /dev/null @@ -1,11 +0,0 @@ -#include "formatted_section.hpp" - -namespace mbgl { -namespace android { - -void FormattedSection::registerNative(jni::JNIEnv& env) { - jni::Class<FormattedSection>::Singleton(env); -} - -} // namespace android -} // namespace mbgl
\ No newline at end of file diff --git a/platform/android/src/style/formatted_section.hpp b/platform/android/src/style/formatted_section.hpp deleted file mode 100644 index f759a94e8e..0000000000 --- a/platform/android/src/style/formatted_section.hpp +++ /dev/null @@ -1,18 +0,0 @@ -#pragma once - -#include <mbgl/util/noncopyable.hpp> - -#include <jni/jni.hpp> - -namespace mbgl { -namespace android { - -class FormattedSection : private mbgl::util::noncopyable { -public: - static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/types/FormattedSection"; }; - - static void registerNative(jni::JNIEnv&); -}; - -} // namespace android -} // namespace mbgl
\ 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 deleted file mode 100644 index 3eae30677f..0000000000 --- a/platform/android/src/style/layers/background_layer.cpp +++ /dev/null @@ -1,148 +0,0 @@ -// This file is generated. Edit android/platform/scripts/generate-style-code.js, then run `make android-style-code`. - -#include "background_layer.hpp" - -#include <string> - -#include "../conversion/property_value.hpp" -#include "../conversion/transition_options.hpp" - -#include <mbgl/style/layer_impl.hpp> - -namespace mbgl { -namespace android { - - inline mbgl::style::BackgroundLayer& toBackgroundLayer(mbgl::style::Layer& layer) { - return static_cast<mbgl::style::BackgroundLayer&>(layer); - } - - /** - * Creates an owning peer object (for layers not attached to the map) from the JVM side - */ - BackgroundLayer::BackgroundLayer(jni::JNIEnv& env, jni::String& layerId) - : Layer(std::make_unique<mbgl::style::BackgroundLayer>(jni::Make<std::string>(env, layerId))) { - } - - /** - * Creates a non-owning peer object (for layers currently attached to the map) - */ - BackgroundLayer::BackgroundLayer(mbgl::style::BackgroundLayer& coreLayer) : Layer(coreLayer) {} - - /** - * Creates an owning peer object (for layers not attached to the map) - */ - BackgroundLayer::BackgroundLayer(std::unique_ptr<mbgl::style::BackgroundLayer> coreLayer) - : Layer(std::move(coreLayer)) {} - - BackgroundLayer::~BackgroundLayer() = default; - - // Property getters - - jni::Local<jni::Object<>> BackgroundLayer::getBackgroundColor(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toBackgroundLayer(layer).getBackgroundColor())); - } - - jni::Local<jni::Object<TransitionOptions>> BackgroundLayer::getBackgroundColorTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toBackgroundLayer(layer).getBackgroundColorTransition(); - return std::move(*convert<jni::Local<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)); - toBackgroundLayer(layer).setBackgroundColorTransition(options); - } - - jni::Local<jni::Object<>> BackgroundLayer::getBackgroundPattern(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toBackgroundLayer(layer).getBackgroundPattern())); - } - - jni::Local<jni::Object<TransitionOptions>> BackgroundLayer::getBackgroundPatternTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toBackgroundLayer(layer).getBackgroundPatternTransition(); - return std::move(*convert<jni::Local<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)); - toBackgroundLayer(layer).setBackgroundPatternTransition(options); - } - - jni::Local<jni::Object<>> BackgroundLayer::getBackgroundOpacity(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toBackgroundLayer(layer).getBackgroundOpacity())); - } - - jni::Local<jni::Object<TransitionOptions>> BackgroundLayer::getBackgroundOpacityTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toBackgroundLayer(layer).getBackgroundOpacityTransition(); - return std::move(*convert<jni::Local<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)); - toBackgroundLayer(layer).setBackgroundOpacityTransition(options); - } - - - // BackgroundJavaLayerPeerFactory - - BackgroundJavaLayerPeerFactory::~BackgroundJavaLayerPeerFactory() = default; - - namespace { - jni::Local<jni::Object<Layer>> createJavaPeer(jni::JNIEnv& env, Layer* layer) { - static auto& javaClass = jni::Class<BackgroundLayer>::Singleton(env); - static auto constructor = javaClass.GetConstructor<jni::jlong>(env); - return javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(layer)); - } - } // namespace - - jni::Local<jni::Object<Layer>> BackgroundJavaLayerPeerFactory::createJavaLayerPeer(jni::JNIEnv& env, - mbgl::style::Layer& layer) { - assert(layer.baseImpl->getTypeInfo() == getTypeInfo()); - return createJavaPeer(env, new BackgroundLayer(toBackgroundLayer(layer))); - } - - jni::Local<jni::Object<Layer>> BackgroundJavaLayerPeerFactory::createJavaLayerPeer( - jni::JNIEnv& env, std::unique_ptr<mbgl::style::Layer> layer) { - assert(layer->baseImpl->getTypeInfo() == getTypeInfo()); - return createJavaPeer(env, - new BackgroundLayer(std::unique_ptr<mbgl::style::BackgroundLayer>( - static_cast<mbgl::style::BackgroundLayer*>(layer.release())))); - } - - void BackgroundJavaLayerPeerFactory::registerNative(jni::JNIEnv& env) { - // Lookup the class - static auto& javaClass = jni::Class<BackgroundLayer>::Singleton(env); - - #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) - - // Register the peer - jni::RegisterNativePeer<BackgroundLayer>( - env, - javaClass, - "nativePtr", - jni::MakePeer<BackgroundLayer, 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")); - } - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/layers/background_layer.hpp b/platform/android/src/style/layers/background_layer.hpp deleted file mode 100644 index e402dc021c..0000000000 --- a/platform/android/src/style/layers/background_layer.hpp +++ /dev/null @@ -1,58 +0,0 @@ -// This file is generated. Edit android/platform/scripts/generate-style-code.js, then run `make android-style-code`. - -#pragma once - -#include "layer.hpp" -#include "../transition_options.hpp" -#include <mbgl/layermanager/background_layer_factory.hpp> -#include <mbgl/style/layers/background_layer.hpp> -#include <jni/jni.hpp> - -namespace mbgl { -namespace android { - -class BackgroundLayer : public Layer { -public: - using SuperTag = Layer; - static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/layers/BackgroundLayer"; }; - - BackgroundLayer(jni::JNIEnv&, jni::String&); - - BackgroundLayer(mbgl::style::BackgroundLayer&); - - BackgroundLayer(std::unique_ptr<mbgl::style::BackgroundLayer>); - - ~BackgroundLayer(); - - // Properties - - jni::Local<jni::Object<jni::ObjectTag>> getBackgroundColor(jni::JNIEnv&); - void setBackgroundColorTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getBackgroundColorTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getBackgroundPattern(jni::JNIEnv&); - void setBackgroundPatternTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getBackgroundPatternTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getBackgroundOpacity(jni::JNIEnv&); - void setBackgroundOpacityTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getBackgroundOpacityTransition(jni::JNIEnv&); - -}; // class BackgroundLayer - -class BackgroundJavaLayerPeerFactory final : public JavaLayerPeerFactory, public mbgl::BackgroundLayerFactory { -public: - ~BackgroundJavaLayerPeerFactory() override; - - // JavaLayerPeerFactory overrides. - jni::Local<jni::Object<Layer>> createJavaLayerPeer(jni::JNIEnv&, mbgl::style::Layer&) final; - jni::Local<jni::Object<Layer>> createJavaLayerPeer(jni::JNIEnv& env, std::unique_ptr<mbgl::style::Layer>) final; - - void registerNative(jni::JNIEnv&) final; - - LayerFactory* getLayerFactory() final { return this; } - -}; // class BackgroundJavaLayerPeerFactory - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/layers/circle_layer.cpp b/platform/android/src/style/layers/circle_layer.cpp deleted file mode 100644 index a7fae5e233..0000000000 --- a/platform/android/src/style/layers/circle_layer.cpp +++ /dev/null @@ -1,270 +0,0 @@ -// This file is generated. Edit android/platform/scripts/generate-style-code.js, then run `make android-style-code`. - -#include "circle_layer.hpp" - -#include <string> - -#include "../conversion/property_value.hpp" -#include "../conversion/transition_options.hpp" - -#include <mbgl/style/layer_impl.hpp> - -namespace mbgl { -namespace android { - - inline mbgl::style::CircleLayer& toCircleLayer(mbgl::style::Layer& layer) { - return static_cast<mbgl::style::CircleLayer&>(layer); - } - - /** - * Creates an owning peer object (for layers not attached to the map) from the JVM side - */ - CircleLayer::CircleLayer(jni::JNIEnv& env, jni::String& layerId, jni::String& sourceId) - : Layer(std::make_unique<mbgl::style::CircleLayer>(jni::Make<std::string>(env, layerId), jni::Make<std::string>(env, sourceId))) { - } - - /** - * Creates a non-owning peer object (for layers currently attached to the map) - */ - CircleLayer::CircleLayer(mbgl::style::CircleLayer& coreLayer) : Layer(coreLayer) {} - - /** - * Creates an owning peer object (for layers not attached to the map) - */ - CircleLayer::CircleLayer(std::unique_ptr<mbgl::style::CircleLayer> coreLayer) : Layer(std::move(coreLayer)) {} - - CircleLayer::~CircleLayer() = default; - - // Property getters - - jni::Local<jni::Object<>> CircleLayer::getCircleRadius(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toCircleLayer(layer).getCircleRadius())); - } - - jni::Local<jni::Object<TransitionOptions>> CircleLayer::getCircleRadiusTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toCircleLayer(layer).getCircleRadiusTransition(); - return std::move(*convert<jni::Local<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)); - toCircleLayer(layer).setCircleRadiusTransition(options); - } - - jni::Local<jni::Object<>> CircleLayer::getCircleColor(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toCircleLayer(layer).getCircleColor())); - } - - jni::Local<jni::Object<TransitionOptions>> CircleLayer::getCircleColorTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toCircleLayer(layer).getCircleColorTransition(); - return std::move(*convert<jni::Local<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)); - toCircleLayer(layer).setCircleColorTransition(options); - } - - jni::Local<jni::Object<>> CircleLayer::getCircleBlur(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toCircleLayer(layer).getCircleBlur())); - } - - jni::Local<jni::Object<TransitionOptions>> CircleLayer::getCircleBlurTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toCircleLayer(layer).getCircleBlurTransition(); - return std::move(*convert<jni::Local<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)); - toCircleLayer(layer).setCircleBlurTransition(options); - } - - jni::Local<jni::Object<>> CircleLayer::getCircleOpacity(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toCircleLayer(layer).getCircleOpacity())); - } - - jni::Local<jni::Object<TransitionOptions>> CircleLayer::getCircleOpacityTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toCircleLayer(layer).getCircleOpacityTransition(); - return std::move(*convert<jni::Local<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)); - toCircleLayer(layer).setCircleOpacityTransition(options); - } - - jni::Local<jni::Object<>> CircleLayer::getCircleTranslate(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toCircleLayer(layer).getCircleTranslate())); - } - - jni::Local<jni::Object<TransitionOptions>> CircleLayer::getCircleTranslateTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toCircleLayer(layer).getCircleTranslateTransition(); - return std::move(*convert<jni::Local<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)); - toCircleLayer(layer).setCircleTranslateTransition(options); - } - - jni::Local<jni::Object<>> CircleLayer::getCircleTranslateAnchor(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toCircleLayer(layer).getCircleTranslateAnchor())); - } - - jni::Local<jni::Object<>> CircleLayer::getCirclePitchScale(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toCircleLayer(layer).getCirclePitchScale())); - } - - jni::Local<jni::Object<>> CircleLayer::getCirclePitchAlignment(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toCircleLayer(layer).getCirclePitchAlignment())); - } - - jni::Local<jni::Object<>> CircleLayer::getCircleStrokeWidth(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toCircleLayer(layer).getCircleStrokeWidth())); - } - - jni::Local<jni::Object<TransitionOptions>> CircleLayer::getCircleStrokeWidthTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toCircleLayer(layer).getCircleStrokeWidthTransition(); - return std::move(*convert<jni::Local<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)); - toCircleLayer(layer).setCircleStrokeWidthTransition(options); - } - - jni::Local<jni::Object<>> CircleLayer::getCircleStrokeColor(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toCircleLayer(layer).getCircleStrokeColor())); - } - - jni::Local<jni::Object<TransitionOptions>> CircleLayer::getCircleStrokeColorTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toCircleLayer(layer).getCircleStrokeColorTransition(); - return std::move(*convert<jni::Local<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)); - toCircleLayer(layer).setCircleStrokeColorTransition(options); - } - - jni::Local<jni::Object<>> CircleLayer::getCircleStrokeOpacity(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toCircleLayer(layer).getCircleStrokeOpacity())); - } - - jni::Local<jni::Object<TransitionOptions>> CircleLayer::getCircleStrokeOpacityTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toCircleLayer(layer).getCircleStrokeOpacityTransition(); - return std::move(*convert<jni::Local<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)); - toCircleLayer(layer).setCircleStrokeOpacityTransition(options); - } - - - // CircleJavaLayerPeerFactory - - CircleJavaLayerPeerFactory::~CircleJavaLayerPeerFactory() = default; - - namespace { - jni::Local<jni::Object<Layer>> createJavaPeer(jni::JNIEnv& env, Layer* layer) { - static auto& javaClass = jni::Class<CircleLayer>::Singleton(env); - static auto constructor = javaClass.GetConstructor<jni::jlong>(env); - return javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(layer)); - } - } // namespace - - jni::Local<jni::Object<Layer>> CircleJavaLayerPeerFactory::createJavaLayerPeer(jni::JNIEnv& env, - mbgl::style::Layer& layer) { - assert(layer.baseImpl->getTypeInfo() == getTypeInfo()); - return createJavaPeer(env, new CircleLayer(toCircleLayer(layer))); - } - - jni::Local<jni::Object<Layer>> CircleJavaLayerPeerFactory::createJavaLayerPeer( - jni::JNIEnv& env, std::unique_ptr<mbgl::style::Layer> layer) { - assert(layer->baseImpl->getTypeInfo() == getTypeInfo()); - return createJavaPeer(env, - new CircleLayer(std::unique_ptr<mbgl::style::CircleLayer>( - static_cast<mbgl::style::CircleLayer*>(layer.release())))); - } - - void CircleJavaLayerPeerFactory::registerNative(jni::JNIEnv& env) { - // Lookup the class - static auto& javaClass = jni::Class<CircleLayer>::Singleton(env); - - #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) - - // Register the peer - jni::RegisterNativePeer<CircleLayer>( - env, - javaClass, - "nativePtr", - jni::MakePeer<CircleLayer, 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::getCirclePitchAlignment, "nativeGetCirclePitchAlignment"), - 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")); - } - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/layers/circle_layer.hpp b/platform/android/src/style/layers/circle_layer.hpp deleted file mode 100644 index 40dca91e2e..0000000000 --- a/platform/android/src/style/layers/circle_layer.hpp +++ /dev/null @@ -1,84 +0,0 @@ -// This file is generated. Edit android/platform/scripts/generate-style-code.js, then run `make android-style-code`. - -#pragma once - -#include "layer.hpp" -#include "../transition_options.hpp" -#include <mbgl/layermanager/circle_layer_factory.hpp> -#include <mbgl/style/layers/circle_layer.hpp> -#include <jni/jni.hpp> - -namespace mbgl { -namespace android { - -class CircleLayer : public Layer { -public: - using SuperTag = Layer; - static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/layers/CircleLayer"; }; - - CircleLayer(jni::JNIEnv&, jni::String&, jni::String&); - - CircleLayer(mbgl::style::CircleLayer&); - - CircleLayer(std::unique_ptr<mbgl::style::CircleLayer>); - - ~CircleLayer(); - - // Properties - - jni::Local<jni::Object<jni::ObjectTag>> getCircleRadius(jni::JNIEnv&); - void setCircleRadiusTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getCircleRadiusTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getCircleColor(jni::JNIEnv&); - void setCircleColorTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getCircleColorTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getCircleBlur(jni::JNIEnv&); - void setCircleBlurTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getCircleBlurTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getCircleOpacity(jni::JNIEnv&); - void setCircleOpacityTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getCircleOpacityTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getCircleTranslate(jni::JNIEnv&); - void setCircleTranslateTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getCircleTranslateTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getCircleTranslateAnchor(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getCirclePitchScale(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getCirclePitchAlignment(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getCircleStrokeWidth(jni::JNIEnv&); - void setCircleStrokeWidthTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getCircleStrokeWidthTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getCircleStrokeColor(jni::JNIEnv&); - void setCircleStrokeColorTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getCircleStrokeColorTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getCircleStrokeOpacity(jni::JNIEnv&); - void setCircleStrokeOpacityTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getCircleStrokeOpacityTransition(jni::JNIEnv&); - -}; // class CircleLayer - -class CircleJavaLayerPeerFactory final : public JavaLayerPeerFactory, public mbgl::CircleLayerFactory { -public: - ~CircleJavaLayerPeerFactory() override; - - // JavaLayerPeerFactory overrides. - jni::Local<jni::Object<Layer>> createJavaLayerPeer(jni::JNIEnv&, mbgl::style::Layer&) final; - jni::Local<jni::Object<Layer>> createJavaLayerPeer(jni::JNIEnv& env, std::unique_ptr<mbgl::style::Layer>) final; - - void registerNative(jni::JNIEnv&) final; - - LayerFactory* getLayerFactory() final { return this; } - -}; // class CircleJavaLayerPeerFactory - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/layers/custom_layer.cpp b/platform/android/src/style/layers/custom_layer.cpp deleted file mode 100644 index 5a8b239a8d..0000000000 --- a/platform/android/src/style/layers/custom_layer.cpp +++ /dev/null @@ -1,61 +0,0 @@ -#include "custom_layer.hpp" - -#include <string> - -#include <mbgl/util/logging.hpp> - -namespace mbgl { -namespace android { - - CustomLayer::CustomLayer(jni::JNIEnv& env, const jni::String& layerId, jni::jlong host) - : Layer(std::make_unique<mbgl::style::CustomLayer>( - jni::Make<std::string>(env, layerId), - std::unique_ptr<mbgl::style::CustomLayerHost>(reinterpret_cast<mbgl::style::CustomLayerHost*>(host))) - ) { - } - - CustomLayer::CustomLayer(mbgl::style::CustomLayer& coreLayer) : Layer(coreLayer) {} - - CustomLayer::CustomLayer(std::unique_ptr<mbgl::style::CustomLayer> coreLayer) : Layer(std::move(coreLayer)) {} - - CustomLayer::~CustomLayer() = default; - - namespace { - jni::Local<jni::Object<Layer>> createJavaPeer(jni::JNIEnv& env, Layer* layer) { - static auto& javaClass = jni::Class<CustomLayer>::Singleton(env); - static auto constructor = javaClass.GetConstructor<jni::jlong>(env); - return javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(layer)); - } - } - - CustomJavaLayerPeerFactory::~CustomJavaLayerPeerFactory() = default; - - jni::Local<jni::Object<Layer>> CustomJavaLayerPeerFactory::createJavaLayerPeer(jni::JNIEnv& env, - mbgl::style::Layer& layer) { - return createJavaPeer(env, new CustomLayer(static_cast<mbgl::style::CustomLayer&>(layer))); - } - - jni::Local<jni::Object<Layer>> CustomJavaLayerPeerFactory::createJavaLayerPeer( - jni::JNIEnv& env, std::unique_ptr<mbgl::style::Layer> layer) { - return createJavaPeer(env, - new CustomLayer(std::unique_ptr<mbgl::style::CustomLayer>( - static_cast<mbgl::style::CustomLayer*>(layer.release())))); - } - - void CustomJavaLayerPeerFactory::registerNative(jni::JNIEnv& env) { - // Lookup the class - static auto& javaClass = jni::Class<CustomLayer>::Singleton(env); - - #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) - - // Register the peer - jni::RegisterNativePeer<CustomLayer>(env, - javaClass, - "nativePtr", - jni::MakePeer<CustomLayer, const jni::String&, jni::jlong>, - "initialize", - "finalize"); - } - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/layers/custom_layer.hpp b/platform/android/src/style/layers/custom_layer.hpp deleted file mode 100644 index 3856ea73ae..0000000000 --- a/platform/android/src/style/layers/custom_layer.hpp +++ /dev/null @@ -1,41 +0,0 @@ -#pragma once - -#include <jni/jni.hpp> -#include <mbgl/gl/custom_layer.hpp> -#include <mbgl/gl/custom_layer_factory.hpp> -#include "layer.hpp" - -namespace mbgl { -namespace android { - -class CustomLayer : public Layer { -public: - using SuperTag = Layer; - static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/layers/CustomLayer"; }; - - static void registerNative(jni::JNIEnv&); - - CustomLayer(jni::JNIEnv&, const jni::String&, jni::jlong); - CustomLayer(mbgl::style::CustomLayer&); - CustomLayer(std::unique_ptr<mbgl::style::CustomLayer>); - ~CustomLayer(); - - jni::Local<jni::Object<Layer>> createJavaPeer(jni::JNIEnv&); -}; // class CustomLayer - -class CustomJavaLayerPeerFactory final : public JavaLayerPeerFactory, public mbgl::CustomLayerFactory { -public: - ~CustomJavaLayerPeerFactory() override; - - // JavaLayerPeerFactory overrides. - jni::Local<jni::Object<Layer>> createJavaLayerPeer(jni::JNIEnv&, mbgl::style::Layer&) final; - jni::Local<jni::Object<Layer>> createJavaLayerPeer(jni::JNIEnv& env, std::unique_ptr<mbgl::style::Layer>) final; - - void registerNative(jni::JNIEnv&) final; - - LayerFactory* getLayerFactory() final { return this; } - -}; // class CustomJavaLayerPeerFactory - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/layers/fill_extrusion_layer.cpp b/platform/android/src/style/layers/fill_extrusion_layer.cpp deleted file mode 100644 index 55c3d20282..0000000000 --- a/platform/android/src/style/layers/fill_extrusion_layer.cpp +++ /dev/null @@ -1,225 +0,0 @@ -// This file is generated. Edit android/platform/scripts/generate-style-code.js, then run `make android-style-code`. - -#include "fill_extrusion_layer.hpp" - -#include <string> - -#include "../conversion/property_value.hpp" -#include "../conversion/transition_options.hpp" - -#include <mbgl/style/layer_impl.hpp> - -namespace mbgl { -namespace android { - - inline mbgl::style::FillExtrusionLayer& toFillExtrusionLayer(mbgl::style::Layer& layer) { - return static_cast<mbgl::style::FillExtrusionLayer&>(layer); - } - - /** - * Creates an owning peer object (for layers not attached to the map) from the JVM side - */ - FillExtrusionLayer::FillExtrusionLayer(jni::JNIEnv& env, jni::String& layerId, jni::String& sourceId) - : Layer(std::make_unique<mbgl::style::FillExtrusionLayer>(jni::Make<std::string>(env, layerId), jni::Make<std::string>(env, sourceId))) { - } - - /** - * Creates a non-owning peer object (for layers currently attached to the map) - */ - FillExtrusionLayer::FillExtrusionLayer(mbgl::style::FillExtrusionLayer& coreLayer) : Layer(coreLayer) {} - - /** - * Creates an owning peer object (for layers not attached to the map) - */ - FillExtrusionLayer::FillExtrusionLayer(std::unique_ptr<mbgl::style::FillExtrusionLayer> coreLayer) - : Layer(std::move(coreLayer)) {} - - FillExtrusionLayer::~FillExtrusionLayer() = default; - - // Property getters - - jni::Local<jni::Object<>> FillExtrusionLayer::getFillExtrusionOpacity(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toFillExtrusionLayer(layer).getFillExtrusionOpacity())); - } - - jni::Local<jni::Object<TransitionOptions>> FillExtrusionLayer::getFillExtrusionOpacityTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toFillExtrusionLayer(layer).getFillExtrusionOpacityTransition(); - return std::move(*convert<jni::Local<jni::Object<TransitionOptions>>>(env, options)); - } - - void FillExtrusionLayer::setFillExtrusionOpacityTransition(jni::JNIEnv&, jlong duration, jlong delay) { - mbgl::style::TransitionOptions options; - options.duration.emplace(mbgl::Milliseconds(duration)); - options.delay.emplace(mbgl::Milliseconds(delay)); - toFillExtrusionLayer(layer).setFillExtrusionOpacityTransition(options); - } - - jni::Local<jni::Object<>> FillExtrusionLayer::getFillExtrusionColor(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toFillExtrusionLayer(layer).getFillExtrusionColor())); - } - - jni::Local<jni::Object<TransitionOptions>> FillExtrusionLayer::getFillExtrusionColorTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toFillExtrusionLayer(layer).getFillExtrusionColorTransition(); - return std::move(*convert<jni::Local<jni::Object<TransitionOptions>>>(env, options)); - } - - void FillExtrusionLayer::setFillExtrusionColorTransition(jni::JNIEnv&, jlong duration, jlong delay) { - mbgl::style::TransitionOptions options; - options.duration.emplace(mbgl::Milliseconds(duration)); - options.delay.emplace(mbgl::Milliseconds(delay)); - toFillExtrusionLayer(layer).setFillExtrusionColorTransition(options); - } - - jni::Local<jni::Object<>> FillExtrusionLayer::getFillExtrusionTranslate(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toFillExtrusionLayer(layer).getFillExtrusionTranslate())); - } - - jni::Local<jni::Object<TransitionOptions>> FillExtrusionLayer::getFillExtrusionTranslateTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toFillExtrusionLayer(layer).getFillExtrusionTranslateTransition(); - return std::move(*convert<jni::Local<jni::Object<TransitionOptions>>>(env, options)); - } - - void FillExtrusionLayer::setFillExtrusionTranslateTransition(jni::JNIEnv&, jlong duration, jlong delay) { - mbgl::style::TransitionOptions options; - options.duration.emplace(mbgl::Milliseconds(duration)); - options.delay.emplace(mbgl::Milliseconds(delay)); - toFillExtrusionLayer(layer).setFillExtrusionTranslateTransition(options); - } - - jni::Local<jni::Object<>> FillExtrusionLayer::getFillExtrusionTranslateAnchor(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toFillExtrusionLayer(layer).getFillExtrusionTranslateAnchor())); - } - - jni::Local<jni::Object<>> FillExtrusionLayer::getFillExtrusionPattern(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toFillExtrusionLayer(layer).getFillExtrusionPattern())); - } - - jni::Local<jni::Object<TransitionOptions>> FillExtrusionLayer::getFillExtrusionPatternTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toFillExtrusionLayer(layer).getFillExtrusionPatternTransition(); - return std::move(*convert<jni::Local<jni::Object<TransitionOptions>>>(env, options)); - } - - void FillExtrusionLayer::setFillExtrusionPatternTransition(jni::JNIEnv&, jlong duration, jlong delay) { - mbgl::style::TransitionOptions options; - options.duration.emplace(mbgl::Milliseconds(duration)); - options.delay.emplace(mbgl::Milliseconds(delay)); - toFillExtrusionLayer(layer).setFillExtrusionPatternTransition(options); - } - - jni::Local<jni::Object<>> FillExtrusionLayer::getFillExtrusionHeight(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toFillExtrusionLayer(layer).getFillExtrusionHeight())); - } - - jni::Local<jni::Object<TransitionOptions>> FillExtrusionLayer::getFillExtrusionHeightTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toFillExtrusionLayer(layer).getFillExtrusionHeightTransition(); - return std::move(*convert<jni::Local<jni::Object<TransitionOptions>>>(env, options)); - } - - void FillExtrusionLayer::setFillExtrusionHeightTransition(jni::JNIEnv&, jlong duration, jlong delay) { - mbgl::style::TransitionOptions options; - options.duration.emplace(mbgl::Milliseconds(duration)); - options.delay.emplace(mbgl::Milliseconds(delay)); - toFillExtrusionLayer(layer).setFillExtrusionHeightTransition(options); - } - - jni::Local<jni::Object<>> FillExtrusionLayer::getFillExtrusionBase(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toFillExtrusionLayer(layer).getFillExtrusionBase())); - } - - jni::Local<jni::Object<TransitionOptions>> FillExtrusionLayer::getFillExtrusionBaseTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toFillExtrusionLayer(layer).getFillExtrusionBaseTransition(); - return std::move(*convert<jni::Local<jni::Object<TransitionOptions>>>(env, options)); - } - - void FillExtrusionLayer::setFillExtrusionBaseTransition(jni::JNIEnv&, jlong duration, jlong delay) { - mbgl::style::TransitionOptions options; - options.duration.emplace(mbgl::Milliseconds(duration)); - options.delay.emplace(mbgl::Milliseconds(delay)); - toFillExtrusionLayer(layer).setFillExtrusionBaseTransition(options); - } - - jni::Local<jni::Object<>> FillExtrusionLayer::getFillExtrusionVerticalGradient(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toFillExtrusionLayer(layer).getFillExtrusionVerticalGradient())); - } - - - // FillExtrusionJavaLayerPeerFactory - - FillExtrusionJavaLayerPeerFactory::~FillExtrusionJavaLayerPeerFactory() = default; - - namespace { - jni::Local<jni::Object<Layer>> createJavaPeer(jni::JNIEnv& env, Layer* layer) { - static auto& javaClass = jni::Class<FillExtrusionLayer>::Singleton(env); - static auto constructor = javaClass.GetConstructor<jni::jlong>(env); - return javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(layer)); - } - } // namespace - - jni::Local<jni::Object<Layer>> FillExtrusionJavaLayerPeerFactory::createJavaLayerPeer(jni::JNIEnv& env, - mbgl::style::Layer& layer) { - assert(layer.baseImpl->getTypeInfo() == getTypeInfo()); - return createJavaPeer(env, new FillExtrusionLayer(toFillExtrusionLayer(layer))); - } - - jni::Local<jni::Object<Layer>> FillExtrusionJavaLayerPeerFactory::createJavaLayerPeer( - jni::JNIEnv& env, std::unique_ptr<mbgl::style::Layer> layer) { - assert(layer->baseImpl->getTypeInfo() == getTypeInfo()); - return createJavaPeer(env, - new FillExtrusionLayer(std::unique_ptr<mbgl::style::FillExtrusionLayer>( - static_cast<mbgl::style::FillExtrusionLayer*>(layer.release())))); - } - - void FillExtrusionJavaLayerPeerFactory::registerNative(jni::JNIEnv& env) { - // Lookup the class - static auto& javaClass = jni::Class<FillExtrusionLayer>::Singleton(env); - - #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) - - // Register the peer - jni::RegisterNativePeer<FillExtrusionLayer>( - env, - javaClass, - "nativePtr", - jni::MakePeer<FillExtrusionLayer, jni::String&, jni::String&>, - "initialize", - "finalize", - METHOD(&FillExtrusionLayer::getFillExtrusionOpacityTransition, "nativeGetFillExtrusionOpacityTransition"), - METHOD(&FillExtrusionLayer::setFillExtrusionOpacityTransition, "nativeSetFillExtrusionOpacityTransition"), - METHOD(&FillExtrusionLayer::getFillExtrusionOpacity, "nativeGetFillExtrusionOpacity"), - METHOD(&FillExtrusionLayer::getFillExtrusionColorTransition, "nativeGetFillExtrusionColorTransition"), - METHOD(&FillExtrusionLayer::setFillExtrusionColorTransition, "nativeSetFillExtrusionColorTransition"), - METHOD(&FillExtrusionLayer::getFillExtrusionColor, "nativeGetFillExtrusionColor"), - METHOD(&FillExtrusionLayer::getFillExtrusionTranslateTransition, - "nativeGetFillExtrusionTranslateTransition"), - METHOD(&FillExtrusionLayer::setFillExtrusionTranslateTransition, - "nativeSetFillExtrusionTranslateTransition"), - METHOD(&FillExtrusionLayer::getFillExtrusionTranslate, "nativeGetFillExtrusionTranslate"), - METHOD(&FillExtrusionLayer::getFillExtrusionTranslateAnchor, "nativeGetFillExtrusionTranslateAnchor"), - METHOD(&FillExtrusionLayer::getFillExtrusionPatternTransition, "nativeGetFillExtrusionPatternTransition"), - METHOD(&FillExtrusionLayer::setFillExtrusionPatternTransition, "nativeSetFillExtrusionPatternTransition"), - METHOD(&FillExtrusionLayer::getFillExtrusionPattern, "nativeGetFillExtrusionPattern"), - METHOD(&FillExtrusionLayer::getFillExtrusionHeightTransition, "nativeGetFillExtrusionHeightTransition"), - METHOD(&FillExtrusionLayer::setFillExtrusionHeightTransition, "nativeSetFillExtrusionHeightTransition"), - METHOD(&FillExtrusionLayer::getFillExtrusionHeight, "nativeGetFillExtrusionHeight"), - METHOD(&FillExtrusionLayer::getFillExtrusionBaseTransition, "nativeGetFillExtrusionBaseTransition"), - METHOD(&FillExtrusionLayer::setFillExtrusionBaseTransition, "nativeSetFillExtrusionBaseTransition"), - METHOD(&FillExtrusionLayer::getFillExtrusionBase, "nativeGetFillExtrusionBase"), - METHOD(&FillExtrusionLayer::getFillExtrusionVerticalGradient, "nativeGetFillExtrusionVerticalGradient")); - } - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/layers/fill_extrusion_layer.hpp b/platform/android/src/style/layers/fill_extrusion_layer.hpp deleted file mode 100644 index 6f0a24131c..0000000000 --- a/platform/android/src/style/layers/fill_extrusion_layer.hpp +++ /dev/null @@ -1,74 +0,0 @@ -// This file is generated. Edit android/platform/scripts/generate-style-code.js, then run `make android-style-code`. - -#pragma once - -#include "layer.hpp" -#include "../transition_options.hpp" -#include <mbgl/layermanager/fill_extrusion_layer_factory.hpp> -#include <mbgl/style/layers/fill_extrusion_layer.hpp> -#include <jni/jni.hpp> - -namespace mbgl { -namespace android { - -class FillExtrusionLayer : public Layer { -public: - using SuperTag = Layer; - static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/layers/FillExtrusionLayer"; }; - - FillExtrusionLayer(jni::JNIEnv&, jni::String&, jni::String&); - - FillExtrusionLayer(mbgl::style::FillExtrusionLayer&); - - FillExtrusionLayer(std::unique_ptr<mbgl::style::FillExtrusionLayer>); - - ~FillExtrusionLayer(); - - // Properties - - jni::Local<jni::Object<jni::ObjectTag>> getFillExtrusionOpacity(jni::JNIEnv&); - void setFillExtrusionOpacityTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getFillExtrusionOpacityTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getFillExtrusionColor(jni::JNIEnv&); - void setFillExtrusionColorTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getFillExtrusionColorTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getFillExtrusionTranslate(jni::JNIEnv&); - void setFillExtrusionTranslateTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getFillExtrusionTranslateTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getFillExtrusionTranslateAnchor(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getFillExtrusionPattern(jni::JNIEnv&); - void setFillExtrusionPatternTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getFillExtrusionPatternTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getFillExtrusionHeight(jni::JNIEnv&); - void setFillExtrusionHeightTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getFillExtrusionHeightTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getFillExtrusionBase(jni::JNIEnv&); - void setFillExtrusionBaseTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getFillExtrusionBaseTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getFillExtrusionVerticalGradient(jni::JNIEnv&); - -}; // class FillExtrusionLayer - -class FillExtrusionJavaLayerPeerFactory final : public JavaLayerPeerFactory, public mbgl::FillExtrusionLayerFactory { -public: - ~FillExtrusionJavaLayerPeerFactory() override; - - // JavaLayerPeerFactory overrides. - jni::Local<jni::Object<Layer>> createJavaLayerPeer(jni::JNIEnv&, mbgl::style::Layer&) final; - jni::Local<jni::Object<Layer>> createJavaLayerPeer(jni::JNIEnv& env, std::unique_ptr<mbgl::style::Layer>) final; - - void registerNative(jni::JNIEnv&) final; - - LayerFactory* getLayerFactory() final { return this; } - -}; // class FillExtrusionJavaLayerPeerFactory - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/layers/fill_layer.cpp b/platform/android/src/style/layers/fill_layer.cpp deleted file mode 100644 index 6a646fdc7d..0000000000 --- a/platform/android/src/style/layers/fill_layer.cpp +++ /dev/null @@ -1,207 +0,0 @@ -// This file is generated. Edit android/platform/scripts/generate-style-code.js, then run `make android-style-code`. - -#include "fill_layer.hpp" - -#include <string> - -#include "../conversion/property_value.hpp" -#include "../conversion/transition_options.hpp" - -#include <mbgl/style/layer_impl.hpp> - -namespace mbgl { -namespace android { - - inline mbgl::style::FillLayer& toFillLayer(mbgl::style::Layer& layer) { - return static_cast<mbgl::style::FillLayer&>(layer); - } - - /** - * Creates an owning peer object (for layers not attached to the map) from the JVM side - */ - FillLayer::FillLayer(jni::JNIEnv& env, jni::String& layerId, jni::String& sourceId) - : Layer(std::make_unique<mbgl::style::FillLayer>(jni::Make<std::string>(env, layerId), jni::Make<std::string>(env, sourceId))) { - } - - /** - * Creates a non-owning peer object (for layers currently attached to the map) - */ - FillLayer::FillLayer(mbgl::style::FillLayer& coreLayer) : Layer(coreLayer) {} - - /** - * Creates an owning peer object (for layers not attached to the map) - */ - FillLayer::FillLayer(std::unique_ptr<mbgl::style::FillLayer> coreLayer) : Layer(std::move(coreLayer)) {} - - FillLayer::~FillLayer() = default; - - // Property getters - - jni::Local<jni::Object<>> FillLayer::getFillSortKey(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toFillLayer(layer).getFillSortKey())); - } - - jni::Local<jni::Object<>> FillLayer::getFillAntialias(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toFillLayer(layer).getFillAntialias())); - } - - jni::Local<jni::Object<>> FillLayer::getFillOpacity(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toFillLayer(layer).getFillOpacity())); - } - - jni::Local<jni::Object<TransitionOptions>> FillLayer::getFillOpacityTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toFillLayer(layer).getFillOpacityTransition(); - return std::move(*convert<jni::Local<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)); - toFillLayer(layer).setFillOpacityTransition(options); - } - - jni::Local<jni::Object<>> FillLayer::getFillColor(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toFillLayer(layer).getFillColor())); - } - - jni::Local<jni::Object<TransitionOptions>> FillLayer::getFillColorTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toFillLayer(layer).getFillColorTransition(); - return std::move(*convert<jni::Local<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)); - toFillLayer(layer).setFillColorTransition(options); - } - - jni::Local<jni::Object<>> FillLayer::getFillOutlineColor(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toFillLayer(layer).getFillOutlineColor())); - } - - jni::Local<jni::Object<TransitionOptions>> FillLayer::getFillOutlineColorTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toFillLayer(layer).getFillOutlineColorTransition(); - return std::move(*convert<jni::Local<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)); - toFillLayer(layer).setFillOutlineColorTransition(options); - } - - jni::Local<jni::Object<>> FillLayer::getFillTranslate(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toFillLayer(layer).getFillTranslate())); - } - - jni::Local<jni::Object<TransitionOptions>> FillLayer::getFillTranslateTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toFillLayer(layer).getFillTranslateTransition(); - return std::move(*convert<jni::Local<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)); - toFillLayer(layer).setFillTranslateTransition(options); - } - - jni::Local<jni::Object<>> FillLayer::getFillTranslateAnchor(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toFillLayer(layer).getFillTranslateAnchor())); - } - - jni::Local<jni::Object<>> FillLayer::getFillPattern(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toFillLayer(layer).getFillPattern())); - } - - jni::Local<jni::Object<TransitionOptions>> FillLayer::getFillPatternTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toFillLayer(layer).getFillPatternTransition(); - return std::move(*convert<jni::Local<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)); - toFillLayer(layer).setFillPatternTransition(options); - } - - - // FillJavaLayerPeerFactory - - FillJavaLayerPeerFactory::~FillJavaLayerPeerFactory() = default; - - namespace { - jni::Local<jni::Object<Layer>> createJavaPeer(jni::JNIEnv& env, Layer* layer) { - static auto& javaClass = jni::Class<FillLayer>::Singleton(env); - static auto constructor = javaClass.GetConstructor<jni::jlong>(env); - return javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(layer)); - } - } // namespace - - jni::Local<jni::Object<Layer>> FillJavaLayerPeerFactory::createJavaLayerPeer(jni::JNIEnv& env, - mbgl::style::Layer& layer) { - assert(layer.baseImpl->getTypeInfo() == getTypeInfo()); - return createJavaPeer(env, new FillLayer(toFillLayer(layer))); - } - - jni::Local<jni::Object<Layer>> FillJavaLayerPeerFactory::createJavaLayerPeer( - jni::JNIEnv& env, std::unique_ptr<mbgl::style::Layer> layer) { - assert(layer->baseImpl->getTypeInfo() == getTypeInfo()); - return createJavaPeer(env, - new FillLayer(std::unique_ptr<mbgl::style::FillLayer>( - static_cast<mbgl::style::FillLayer*>(layer.release())))); - } - - void FillJavaLayerPeerFactory::registerNative(jni::JNIEnv& env) { - // Lookup the class - static auto& javaClass = jni::Class<FillLayer>::Singleton(env); - - #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) - - // Register the peer - jni::RegisterNativePeer<FillLayer>( - env, - javaClass, - "nativePtr", - jni::MakePeer<FillLayer, jni::String&, jni::String&>, - "initialize", - "finalize", - METHOD(&FillLayer::getFillSortKey, "nativeGetFillSortKey"), - 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")); - } - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/layers/fill_layer.hpp b/platform/android/src/style/layers/fill_layer.hpp deleted file mode 100644 index 807b939a71..0000000000 --- a/platform/android/src/style/layers/fill_layer.hpp +++ /dev/null @@ -1,72 +0,0 @@ -// This file is generated. Edit android/platform/scripts/generate-style-code.js, then run `make android-style-code`. - -#pragma once - -#include "layer.hpp" -#include "../transition_options.hpp" -#include <mbgl/layermanager/fill_layer_factory.hpp> -#include <mbgl/style/layers/fill_layer.hpp> -#include <jni/jni.hpp> - -namespace mbgl { -namespace android { - -class FillLayer : public Layer { -public: - using SuperTag = Layer; - static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/layers/FillLayer"; }; - - FillLayer(jni::JNIEnv&, jni::String&, jni::String&); - - FillLayer(mbgl::style::FillLayer&); - - FillLayer(std::unique_ptr<mbgl::style::FillLayer>); - - ~FillLayer(); - - // Properties - - jni::Local<jni::Object<jni::ObjectTag>> getFillSortKey(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getFillAntialias(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getFillOpacity(jni::JNIEnv&); - void setFillOpacityTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getFillOpacityTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getFillColor(jni::JNIEnv&); - void setFillColorTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getFillColorTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getFillOutlineColor(jni::JNIEnv&); - void setFillOutlineColorTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getFillOutlineColorTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getFillTranslate(jni::JNIEnv&); - void setFillTranslateTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getFillTranslateTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getFillTranslateAnchor(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getFillPattern(jni::JNIEnv&); - void setFillPatternTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getFillPatternTransition(jni::JNIEnv&); - -}; // class FillLayer - -class FillJavaLayerPeerFactory final : public JavaLayerPeerFactory, public mbgl::FillLayerFactory { -public: - ~FillJavaLayerPeerFactory() override; - - // JavaLayerPeerFactory overrides. - jni::Local<jni::Object<Layer>> createJavaLayerPeer(jni::JNIEnv&, mbgl::style::Layer&) final; - jni::Local<jni::Object<Layer>> createJavaLayerPeer(jni::JNIEnv& env, std::unique_ptr<mbgl::style::Layer>) final; - - void registerNative(jni::JNIEnv&) final; - - LayerFactory* getLayerFactory() final { return this; } - -}; // class FillJavaLayerPeerFactory - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/layers/heatmap_layer.cpp b/platform/android/src/style/layers/heatmap_layer.cpp deleted file mode 100644 index dad3d25e6c..0000000000 --- a/platform/android/src/style/layers/heatmap_layer.cpp +++ /dev/null @@ -1,163 +0,0 @@ -// This file is generated. Edit android/platform/scripts/generate-style-code.js, then run `make android-style-code`. - -#include "heatmap_layer.hpp" - -#include <string> - -#include "../conversion/property_value.hpp" -#include "../conversion/transition_options.hpp" - -#include <mbgl/style/layer_impl.hpp> - -namespace mbgl { -namespace android { - - inline mbgl::style::HeatmapLayer& toHeatmapLayer(mbgl::style::Layer& layer) { - return static_cast<mbgl::style::HeatmapLayer&>(layer); - } - - /** - * Creates an owning peer object (for layers not attached to the map) from the JVM side - */ - HeatmapLayer::HeatmapLayer(jni::JNIEnv& env, jni::String& layerId, jni::String& sourceId) - : Layer(std::make_unique<mbgl::style::HeatmapLayer>(jni::Make<std::string>(env, layerId), jni::Make<std::string>(env, sourceId))) { - } - - /** - * Creates a non-owning peer object (for layers currently attached to the map) - */ - HeatmapLayer::HeatmapLayer(mbgl::style::HeatmapLayer& coreLayer) : Layer(coreLayer) {} - - /** - * Creates an owning peer object (for layers not attached to the map) - */ - HeatmapLayer::HeatmapLayer(std::unique_ptr<mbgl::style::HeatmapLayer> coreLayer) : Layer(std::move(coreLayer)) {} - - HeatmapLayer::~HeatmapLayer() = default; - - // Property getters - - jni::Local<jni::Object<>> HeatmapLayer::getHeatmapRadius(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toHeatmapLayer(layer).getHeatmapRadius())); - } - - jni::Local<jni::Object<TransitionOptions>> HeatmapLayer::getHeatmapRadiusTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toHeatmapLayer(layer).getHeatmapRadiusTransition(); - return std::move(*convert<jni::Local<jni::Object<TransitionOptions>>>(env, options)); - } - - void HeatmapLayer::setHeatmapRadiusTransition(jni::JNIEnv&, jlong duration, jlong delay) { - mbgl::style::TransitionOptions options; - options.duration.emplace(mbgl::Milliseconds(duration)); - options.delay.emplace(mbgl::Milliseconds(delay)); - toHeatmapLayer(layer).setHeatmapRadiusTransition(options); - } - - jni::Local<jni::Object<>> HeatmapLayer::getHeatmapWeight(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toHeatmapLayer(layer).getHeatmapWeight())); - } - - jni::Local<jni::Object<>> HeatmapLayer::getHeatmapIntensity(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toHeatmapLayer(layer).getHeatmapIntensity())); - } - - jni::Local<jni::Object<TransitionOptions>> HeatmapLayer::getHeatmapIntensityTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toHeatmapLayer(layer).getHeatmapIntensityTransition(); - return std::move(*convert<jni::Local<jni::Object<TransitionOptions>>>(env, options)); - } - - void HeatmapLayer::setHeatmapIntensityTransition(jni::JNIEnv&, jlong duration, jlong delay) { - mbgl::style::TransitionOptions options; - options.duration.emplace(mbgl::Milliseconds(duration)); - options.delay.emplace(mbgl::Milliseconds(delay)); - toHeatmapLayer(layer).setHeatmapIntensityTransition(options); - } - - jni::Local<jni::Object<>> HeatmapLayer::getHeatmapColor(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - auto propertyValue = toHeatmapLayer(layer).getHeatmapColor(); - if (propertyValue.isUndefined()) { - propertyValue = toHeatmapLayer(layer).getDefaultHeatmapColor(); - } - return std::move(*convert<jni::Local<jni::Object<>>>(env, propertyValue)); - } - - jni::Local<jni::Object<>> HeatmapLayer::getHeatmapOpacity(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toHeatmapLayer(layer).getHeatmapOpacity())); - } - - jni::Local<jni::Object<TransitionOptions>> HeatmapLayer::getHeatmapOpacityTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toHeatmapLayer(layer).getHeatmapOpacityTransition(); - return std::move(*convert<jni::Local<jni::Object<TransitionOptions>>>(env, options)); - } - - void HeatmapLayer::setHeatmapOpacityTransition(jni::JNIEnv&, jlong duration, jlong delay) { - mbgl::style::TransitionOptions options; - options.duration.emplace(mbgl::Milliseconds(duration)); - options.delay.emplace(mbgl::Milliseconds(delay)); - toHeatmapLayer(layer).setHeatmapOpacityTransition(options); - } - - - // HeatmapJavaLayerPeerFactory - - HeatmapJavaLayerPeerFactory::~HeatmapJavaLayerPeerFactory() = default; - - namespace { - jni::Local<jni::Object<Layer>> createJavaPeer(jni::JNIEnv& env, Layer* layer) { - static auto& javaClass = jni::Class<HeatmapLayer>::Singleton(env); - static auto constructor = javaClass.GetConstructor<jni::jlong>(env); - return javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(layer)); - } - } // namespace - - jni::Local<jni::Object<Layer>> HeatmapJavaLayerPeerFactory::createJavaLayerPeer(jni::JNIEnv& env, - mbgl::style::Layer& layer) { - assert(layer.baseImpl->getTypeInfo() == getTypeInfo()); - return createJavaPeer(env, new HeatmapLayer(toHeatmapLayer(layer))); - } - - jni::Local<jni::Object<Layer>> HeatmapJavaLayerPeerFactory::createJavaLayerPeer( - jni::JNIEnv& env, std::unique_ptr<mbgl::style::Layer> layer) { - assert(layer->baseImpl->getTypeInfo() == getTypeInfo()); - return createJavaPeer(env, - new HeatmapLayer(std::unique_ptr<mbgl::style::HeatmapLayer>( - static_cast<mbgl::style::HeatmapLayer*>(layer.release())))); - } - - void HeatmapJavaLayerPeerFactory::registerNative(jni::JNIEnv& env) { - // Lookup the class - static auto& javaClass = jni::Class<HeatmapLayer>::Singleton(env); - - #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) - - // Register the peer - jni::RegisterNativePeer<HeatmapLayer>( - env, - javaClass, - "nativePtr", - jni::MakePeer<HeatmapLayer, jni::String&, jni::String&>, - "initialize", - "finalize", - METHOD(&HeatmapLayer::getHeatmapRadiusTransition, "nativeGetHeatmapRadiusTransition"), - METHOD(&HeatmapLayer::setHeatmapRadiusTransition, "nativeSetHeatmapRadiusTransition"), - METHOD(&HeatmapLayer::getHeatmapRadius, "nativeGetHeatmapRadius"), - METHOD(&HeatmapLayer::getHeatmapWeight, "nativeGetHeatmapWeight"), - METHOD(&HeatmapLayer::getHeatmapIntensityTransition, "nativeGetHeatmapIntensityTransition"), - METHOD(&HeatmapLayer::setHeatmapIntensityTransition, "nativeSetHeatmapIntensityTransition"), - METHOD(&HeatmapLayer::getHeatmapIntensity, "nativeGetHeatmapIntensity"), - METHOD(&HeatmapLayer::getHeatmapColor, "nativeGetHeatmapColor"), - METHOD(&HeatmapLayer::getHeatmapOpacityTransition, "nativeGetHeatmapOpacityTransition"), - METHOD(&HeatmapLayer::setHeatmapOpacityTransition, "nativeSetHeatmapOpacityTransition"), - METHOD(&HeatmapLayer::getHeatmapOpacity, "nativeGetHeatmapOpacity")); - } - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/layers/heatmap_layer.hpp b/platform/android/src/style/layers/heatmap_layer.hpp deleted file mode 100644 index f56e3eb4a9..0000000000 --- a/platform/android/src/style/layers/heatmap_layer.hpp +++ /dev/null @@ -1,62 +0,0 @@ -// This file is generated. Edit android/platform/scripts/generate-style-code.js, then run `make android-style-code`. - -#pragma once - -#include "layer.hpp" -#include "../transition_options.hpp" -#include <mbgl/layermanager/heatmap_layer_factory.hpp> -#include <mbgl/style/layers/heatmap_layer.hpp> -#include <jni/jni.hpp> - -namespace mbgl { -namespace android { - -class HeatmapLayer : public Layer { -public: - using SuperTag = Layer; - static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/layers/HeatmapLayer"; }; - - HeatmapLayer(jni::JNIEnv&, jni::String&, jni::String&); - - HeatmapLayer(mbgl::style::HeatmapLayer&); - - HeatmapLayer(std::unique_ptr<mbgl::style::HeatmapLayer>); - - ~HeatmapLayer(); - - // Properties - - jni::Local<jni::Object<jni::ObjectTag>> getHeatmapRadius(jni::JNIEnv&); - void setHeatmapRadiusTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getHeatmapRadiusTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getHeatmapWeight(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getHeatmapIntensity(jni::JNIEnv&); - void setHeatmapIntensityTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getHeatmapIntensityTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getHeatmapColor(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getHeatmapOpacity(jni::JNIEnv&); - void setHeatmapOpacityTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getHeatmapOpacityTransition(jni::JNIEnv&); - -}; // class HeatmapLayer - -class HeatmapJavaLayerPeerFactory final : public JavaLayerPeerFactory, public mbgl::HeatmapLayerFactory { -public: - ~HeatmapJavaLayerPeerFactory() override; - - // JavaLayerPeerFactory overrides. - jni::Local<jni::Object<Layer>> createJavaLayerPeer(jni::JNIEnv&, mbgl::style::Layer&) final; - jni::Local<jni::Object<Layer>> createJavaLayerPeer(jni::JNIEnv& env, std::unique_ptr<mbgl::style::Layer>) final; - - void registerNative(jni::JNIEnv&) final; - - LayerFactory* getLayerFactory() final { return this; } - -}; // class HeatmapJavaLayerPeerFactory - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/layers/hillshade_layer.cpp b/platform/android/src/style/layers/hillshade_layer.cpp deleted file mode 100644 index 1f5fe1912f..0000000000 --- a/platform/android/src/style/layers/hillshade_layer.cpp +++ /dev/null @@ -1,181 +0,0 @@ -// This file is generated. Edit android/platform/scripts/generate-style-code.js, then run `make android-style-code`. - -#include "hillshade_layer.hpp" - -#include <string> - -#include "../conversion/property_value.hpp" -#include "../conversion/transition_options.hpp" - -#include <mbgl/style/layer_impl.hpp> - -namespace mbgl { -namespace android { - - inline mbgl::style::HillshadeLayer& toHillshadeLayer(mbgl::style::Layer& layer) { - return static_cast<mbgl::style::HillshadeLayer&>(layer); - } - - /** - * Creates an owning peer object (for layers not attached to the map) from the JVM side - */ - HillshadeLayer::HillshadeLayer(jni::JNIEnv& env, jni::String& layerId, jni::String& sourceId) - : Layer(std::make_unique<mbgl::style::HillshadeLayer>(jni::Make<std::string>(env, layerId), jni::Make<std::string>(env, sourceId))) { - } - - /** - * Creates a non-owning peer object (for layers currently attached to the map) - */ - HillshadeLayer::HillshadeLayer(mbgl::style::HillshadeLayer& coreLayer) : Layer(coreLayer) {} - - /** - * Creates an owning peer object (for layers not attached to the map) - */ - HillshadeLayer::HillshadeLayer(std::unique_ptr<mbgl::style::HillshadeLayer> coreLayer) - : Layer(std::move(coreLayer)) {} - - HillshadeLayer::~HillshadeLayer() = default; - - // Property getters - - jni::Local<jni::Object<>> HillshadeLayer::getHillshadeIlluminationDirection(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toHillshadeLayer(layer).getHillshadeIlluminationDirection())); - } - - jni::Local<jni::Object<>> HillshadeLayer::getHillshadeIlluminationAnchor(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toHillshadeLayer(layer).getHillshadeIlluminationAnchor())); - } - - jni::Local<jni::Object<>> HillshadeLayer::getHillshadeExaggeration(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toHillshadeLayer(layer).getHillshadeExaggeration())); - } - - jni::Local<jni::Object<TransitionOptions>> HillshadeLayer::getHillshadeExaggerationTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toHillshadeLayer(layer).getHillshadeExaggerationTransition(); - return std::move(*convert<jni::Local<jni::Object<TransitionOptions>>>(env, options)); - } - - void HillshadeLayer::setHillshadeExaggerationTransition(jni::JNIEnv&, jlong duration, jlong delay) { - mbgl::style::TransitionOptions options; - options.duration.emplace(mbgl::Milliseconds(duration)); - options.delay.emplace(mbgl::Milliseconds(delay)); - toHillshadeLayer(layer).setHillshadeExaggerationTransition(options); - } - - jni::Local<jni::Object<>> HillshadeLayer::getHillshadeShadowColor(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toHillshadeLayer(layer).getHillshadeShadowColor())); - } - - jni::Local<jni::Object<TransitionOptions>> HillshadeLayer::getHillshadeShadowColorTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toHillshadeLayer(layer).getHillshadeShadowColorTransition(); - return std::move(*convert<jni::Local<jni::Object<TransitionOptions>>>(env, options)); - } - - void HillshadeLayer::setHillshadeShadowColorTransition(jni::JNIEnv&, jlong duration, jlong delay) { - mbgl::style::TransitionOptions options; - options.duration.emplace(mbgl::Milliseconds(duration)); - options.delay.emplace(mbgl::Milliseconds(delay)); - toHillshadeLayer(layer).setHillshadeShadowColorTransition(options); - } - - jni::Local<jni::Object<>> HillshadeLayer::getHillshadeHighlightColor(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toHillshadeLayer(layer).getHillshadeHighlightColor())); - } - - jni::Local<jni::Object<TransitionOptions>> HillshadeLayer::getHillshadeHighlightColorTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toHillshadeLayer(layer).getHillshadeHighlightColorTransition(); - return std::move(*convert<jni::Local<jni::Object<TransitionOptions>>>(env, options)); - } - - void HillshadeLayer::setHillshadeHighlightColorTransition(jni::JNIEnv&, jlong duration, jlong delay) { - mbgl::style::TransitionOptions options; - options.duration.emplace(mbgl::Milliseconds(duration)); - options.delay.emplace(mbgl::Milliseconds(delay)); - toHillshadeLayer(layer).setHillshadeHighlightColorTransition(options); - } - - jni::Local<jni::Object<>> HillshadeLayer::getHillshadeAccentColor(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toHillshadeLayer(layer).getHillshadeAccentColor())); - } - - jni::Local<jni::Object<TransitionOptions>> HillshadeLayer::getHillshadeAccentColorTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toHillshadeLayer(layer).getHillshadeAccentColorTransition(); - return std::move(*convert<jni::Local<jni::Object<TransitionOptions>>>(env, options)); - } - - void HillshadeLayer::setHillshadeAccentColorTransition(jni::JNIEnv&, jlong duration, jlong delay) { - mbgl::style::TransitionOptions options; - options.duration.emplace(mbgl::Milliseconds(duration)); - options.delay.emplace(mbgl::Milliseconds(delay)); - toHillshadeLayer(layer).setHillshadeAccentColorTransition(options); - } - - - // HillshadeJavaLayerPeerFactory - - HillshadeJavaLayerPeerFactory::~HillshadeJavaLayerPeerFactory() = default; - - namespace { - jni::Local<jni::Object<Layer>> createJavaPeer(jni::JNIEnv& env, Layer* layer) { - static auto& javaClass = jni::Class<HillshadeLayer>::Singleton(env); - static auto constructor = javaClass.GetConstructor<jni::jlong>(env); - return javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(layer)); - } - } // namespace - - jni::Local<jni::Object<Layer>> HillshadeJavaLayerPeerFactory::createJavaLayerPeer(jni::JNIEnv& env, - mbgl::style::Layer& layer) { - assert(layer.baseImpl->getTypeInfo() == getTypeInfo()); - return createJavaPeer(env, new HillshadeLayer(toHillshadeLayer(layer))); - } - - jni::Local<jni::Object<Layer>> HillshadeJavaLayerPeerFactory::createJavaLayerPeer( - jni::JNIEnv& env, std::unique_ptr<mbgl::style::Layer> layer) { - assert(layer->baseImpl->getTypeInfo() == getTypeInfo()); - return createJavaPeer(env, - new HillshadeLayer(std::unique_ptr<mbgl::style::HillshadeLayer>( - static_cast<mbgl::style::HillshadeLayer*>(layer.release())))); - } - - void HillshadeJavaLayerPeerFactory::registerNative(jni::JNIEnv& env) { - // Lookup the class - static auto& javaClass = jni::Class<HillshadeLayer>::Singleton(env); - - #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) - - // Register the peer - jni::RegisterNativePeer<HillshadeLayer>( - env, - javaClass, - "nativePtr", - jni::MakePeer<HillshadeLayer, jni::String&, jni::String&>, - "initialize", - "finalize", - METHOD(&HillshadeLayer::getHillshadeIlluminationDirection, "nativeGetHillshadeIlluminationDirection"), - METHOD(&HillshadeLayer::getHillshadeIlluminationAnchor, "nativeGetHillshadeIlluminationAnchor"), - METHOD(&HillshadeLayer::getHillshadeExaggerationTransition, "nativeGetHillshadeExaggerationTransition"), - METHOD(&HillshadeLayer::setHillshadeExaggerationTransition, "nativeSetHillshadeExaggerationTransition"), - METHOD(&HillshadeLayer::getHillshadeExaggeration, "nativeGetHillshadeExaggeration"), - METHOD(&HillshadeLayer::getHillshadeShadowColorTransition, "nativeGetHillshadeShadowColorTransition"), - METHOD(&HillshadeLayer::setHillshadeShadowColorTransition, "nativeSetHillshadeShadowColorTransition"), - METHOD(&HillshadeLayer::getHillshadeShadowColor, "nativeGetHillshadeShadowColor"), - METHOD(&HillshadeLayer::getHillshadeHighlightColorTransition, "nativeGetHillshadeHighlightColorTransition"), - METHOD(&HillshadeLayer::setHillshadeHighlightColorTransition, "nativeSetHillshadeHighlightColorTransition"), - METHOD(&HillshadeLayer::getHillshadeHighlightColor, "nativeGetHillshadeHighlightColor"), - METHOD(&HillshadeLayer::getHillshadeAccentColorTransition, "nativeGetHillshadeAccentColorTransition"), - METHOD(&HillshadeLayer::setHillshadeAccentColorTransition, "nativeSetHillshadeAccentColorTransition"), - METHOD(&HillshadeLayer::getHillshadeAccentColor, "nativeGetHillshadeAccentColor")); - } - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/layers/hillshade_layer.hpp b/platform/android/src/style/layers/hillshade_layer.hpp deleted file mode 100644 index bc210a9987..0000000000 --- a/platform/android/src/style/layers/hillshade_layer.hpp +++ /dev/null @@ -1,66 +0,0 @@ -// This file is generated. Edit android/platform/scripts/generate-style-code.js, then run `make android-style-code`. - -#pragma once - -#include "layer.hpp" -#include "../transition_options.hpp" -#include <mbgl/layermanager/hillshade_layer_factory.hpp> -#include <mbgl/style/layers/hillshade_layer.hpp> -#include <jni/jni.hpp> - -namespace mbgl { -namespace android { - -class HillshadeLayer : public Layer { -public: - using SuperTag = Layer; - static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/layers/HillshadeLayer"; }; - - HillshadeLayer(jni::JNIEnv&, jni::String&, jni::String&); - - HillshadeLayer(mbgl::style::HillshadeLayer&); - - HillshadeLayer(std::unique_ptr<mbgl::style::HillshadeLayer>); - - ~HillshadeLayer(); - - // Properties - - jni::Local<jni::Object<jni::ObjectTag>> getHillshadeIlluminationDirection(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getHillshadeIlluminationAnchor(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getHillshadeExaggeration(jni::JNIEnv&); - void setHillshadeExaggerationTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getHillshadeExaggerationTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getHillshadeShadowColor(jni::JNIEnv&); - void setHillshadeShadowColorTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getHillshadeShadowColorTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getHillshadeHighlightColor(jni::JNIEnv&); - void setHillshadeHighlightColorTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getHillshadeHighlightColorTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getHillshadeAccentColor(jni::JNIEnv&); - void setHillshadeAccentColorTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getHillshadeAccentColorTransition(jni::JNIEnv&); - -}; // class HillshadeLayer - -class HillshadeJavaLayerPeerFactory final : public JavaLayerPeerFactory, public mbgl::HillshadeLayerFactory { -public: - ~HillshadeJavaLayerPeerFactory() override; - - // JavaLayerPeerFactory overrides. - jni::Local<jni::Object<Layer>> createJavaLayerPeer(jni::JNIEnv&, mbgl::style::Layer&) final; - jni::Local<jni::Object<Layer>> createJavaLayerPeer(jni::JNIEnv& env, std::unique_ptr<mbgl::style::Layer>) final; - - void registerNative(jni::JNIEnv&) final; - - LayerFactory* getLayerFactory() final { return this; } - -}; // class HillshadeJavaLayerPeerFactory - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/layers/layer.cpp b/platform/android/src/style/layers/layer.cpp deleted file mode 100644 index bc87a9d9ba..0000000000 --- a/platform/android/src/style/layers/layer.cpp +++ /dev/null @@ -1,178 +0,0 @@ -#include "layer.hpp" -#include "../android_conversion.hpp" - -#include <jni/jni.hpp> - -#include <mbgl/style/style.hpp> -#include <mbgl/style/filter.hpp> -#include <mbgl/style/transition_options.hpp> -#include <mbgl/style/layers/background_layer.hpp> -#include <mbgl/style/layers/circle_layer.hpp> -#include <mbgl/style/layers/fill_layer.hpp> -#include <mbgl/style/layers/fill_extrusion_layer.hpp> -#include <mbgl/style/layers/heatmap_layer.hpp> -#include <mbgl/style/layers/hillshade_layer.hpp> -#include <mbgl/style/layers/line_layer.hpp> -#include <mbgl/style/layers/raster_layer.hpp> -#include <mbgl/style/layers/symbol_layer.hpp> -#include <mbgl/util/logging.hpp> - -// Java -> C++ conversion -#include <mbgl/style/conversion/filter.hpp> -#include <mbgl/style/conversion/layer.hpp> -#include <mbgl/style/conversion/source.hpp> -#include <mbgl/style/conversion_impl.hpp> - -// C++ -> Java conversion -#include "../conversion/property_value.hpp" -#include "custom_layer.hpp" -#include "background_layer.hpp" -#include <mbgl/style/filter.hpp> - -#include <string> - -namespace mbgl { -namespace android { - - /** - * Invoked when the construction is initiated from the jvm through a subclass - */ - Layer::Layer(std::unique_ptr<mbgl::style::Layer> coreLayer) - : ownedLayer(std::move(coreLayer)) - , layer(*ownedLayer) { - } - - /** - * Takes a non-owning reference. For lookup methods - */ - Layer::Layer(mbgl::style::Layer& coreLayer) : layer(coreLayer) {} - - Layer::~Layer() { - } - - void Layer::addToStyle(mbgl::style::Style& style, mbgl::optional<std::string> before) { - // Check to see if we own the layer first - if (!ownedLayer) { - throw std::runtime_error("Cannot add layer twice"); - } - - // Add layer to map - style.addLayer(releaseCoreLayer(), before); - } - - void Layer::setLayer(std::unique_ptr<mbgl::style::Layer> sourceLayer) { - this->ownedLayer = std::move(sourceLayer); - } - - std::unique_ptr<mbgl::style::Layer> Layer::releaseCoreLayer() { - assert(ownedLayer != nullptr); - return std::move(ownedLayer); - } - - jni::Local<jni::String> Layer::getId(jni::JNIEnv& env) { - return jni::Make<jni::String>(env, layer.getID()); - } - - style::Layer& Layer::get() { - return layer; - } - - void Layer::setProperty(jni::JNIEnv& env, const jni::String& jname, const jni::Object<>& jvalue) { - // Convert and set property - optional<mbgl::style::conversion::Error> error = - layer.setProperty(jni::Make<std::string>(env, jname), Value(env, jvalue)); - if (error) { - mbgl::Log::Error(mbgl::Event::JNI, "Error setting property: " + jni::Make<std::string>(env, jname) + " " + error->message); - return; - } - } - - void Layer::setFilter(jni::JNIEnv& env, const jni::Array<jni::Object<>>& jfilter) { - using namespace mbgl::style; - using namespace mbgl::style::conversion; - - Error error; - optional<Filter> converted = convert<Filter>(Value(env, jfilter), error); - if (!converted) { - mbgl::Log::Error(mbgl::Event::JNI, "Error setting filter: " + error.message); - return; - } - - layer.setFilter(std::move(*converted)); - } - - jni::Local<jni::Object<gson::JsonElement>> Layer::getFilter(jni::JNIEnv& env) { - using namespace mbgl::style; - using namespace mbgl::style::conversion; - - Filter filter = layer.getFilter(); - if (filter.expression) { - mbgl::Value expressionValue = (*filter.expression)->serialize(); - return gson::JsonElement::New(env, expressionValue); - } else { - return jni::Local<jni::Object<gson::JsonElement>>(env, nullptr); - } - } - - void Layer::setSourceLayer(jni::JNIEnv& env, const jni::String& sourceLayer) { - layer.setSourceLayer(jni::Make<std::string>(env, sourceLayer)); - } - - jni::Local<jni::String> Layer::getSourceLayer(jni::JNIEnv& env) { - return jni::Make<jni::String>(env, layer.getSourceLayer()); - } - - jni::Local<jni::String> Layer::getSourceId(jni::JNIEnv& env) { - return jni::Make<jni::String>(env, layer.getSourceID()); - } - - jni::jfloat Layer::getMinZoom(jni::JNIEnv&){ - return layer.getMinZoom(); - } - - jni::jfloat Layer::getMaxZoom(jni::JNIEnv&) { - return layer.getMaxZoom(); - } - - void Layer::setMinZoom(jni::JNIEnv&, jni::jfloat zoom) { - layer.setMinZoom(zoom); - } - - void Layer::setMaxZoom(jni::JNIEnv&, jni::jfloat zoom) { - layer.setMaxZoom(zoom); - } - - jni::Local<jni::Object<>> Layer::getVisibility(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, layer.getVisibility())); - } - - void Layer::registerNative(jni::JNIEnv& env) { - // Lookup the class - static auto& javaClass = jni::Class<Layer>::Singleton(env); - - #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) - - // Register the peer - jni::RegisterNativePeer<Layer>( - env, - javaClass, - "nativePtr", - METHOD(&Layer::getId, "nativeGetId"), - METHOD(&Layer::setProperty, - "nativeSetLayoutProperty"), // TODO : Export only nativeSetProperty() when #15970 lands. - METHOD(&Layer::setProperty, "nativeSetPaintProperty"), - METHOD(&Layer::setFilter, "nativeSetFilter"), - METHOD(&Layer::getFilter, "nativeGetFilter"), - METHOD(&Layer::setSourceLayer, "nativeSetSourceLayer"), - METHOD(&Layer::getSourceLayer, "nativeGetSourceLayer"), - METHOD(&Layer::getSourceId, "nativeGetSourceId"), - METHOD(&Layer::getMinZoom, "nativeGetMinZoom"), - METHOD(&Layer::getMaxZoom, "nativeGetMaxZoom"), - METHOD(&Layer::setMinZoom, "nativeSetMinZoom"), - METHOD(&Layer::setMaxZoom, "nativeSetMaxZoom"), - METHOD(&Layer::getVisibility, "nativeGetVisibility")); - } - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/layers/layer.cpp.ejs b/platform/android/src/style/layers/layer.cpp.ejs deleted file mode 100644 index 5d241e9a3b..0000000000 --- a/platform/android/src/style/layers/layer.cpp.ejs +++ /dev/null @@ -1,139 +0,0 @@ -<% - const type = locals.type; - const properties = locals.properties; --%> -// This file is generated. Edit android/platform/scripts/generate-style-code.js, then run `make android-style-code`. - -#include "<%- type.replace('-', '_') %>_layer.hpp" - -#include <string> - -#include "../conversion/property_value.hpp" -#include "../conversion/transition_options.hpp" - -#include <mbgl/style/layer_impl.hpp> - -namespace mbgl { -namespace android { - - inline mbgl::style::<%- camelize(type) %>Layer& to<%- camelize(type) %>Layer(mbgl::style::Layer& layer) { - return static_cast<mbgl::style::<%- camelize(type) %>Layer&>(layer); - } - -<% if (type === 'background') { -%> - /** - * Creates an owning peer object (for layers not attached to the map) from the JVM side - */ - <%- camelize(type) %>Layer::<%- camelize(type) %>Layer(jni::JNIEnv& env, jni::String& layerId) - : Layer(std::make_unique<mbgl::style::<%- camelize(type) %>Layer>(jni::Make<std::string>(env, layerId))) { -<% } else { -%> - /** - * Creates an owning peer object (for layers not attached to the map) from the JVM side - */ - <%- camelize(type) %>Layer::<%- camelize(type) %>Layer(jni::JNIEnv& env, jni::String& layerId, jni::String& sourceId) - : Layer(std::make_unique<mbgl::style::<%- camelize(type) %>Layer>(jni::Make<std::string>(env, layerId), jni::Make<std::string>(env, sourceId))) { -<% } -%> - } - - /** - * Creates a non-owning peer object (for layers currently attached to the map) - */ - <%- camelize(type) %>Layer::<%- camelize(type) %>Layer(mbgl::style::<%- camelize(type) %>Layer& coreLayer) - : Layer(coreLayer) { - } - - /** - * Creates an owning peer object (for layers not attached to the map) - */ - <%- camelize(type) %>Layer::<%- camelize(type) %>Layer(std::unique_ptr<mbgl::style::<%- camelize(type) %>Layer> coreLayer) - : Layer(std::move(coreLayer)) { - } - - <%- camelize(type) %>Layer::~<%- camelize(type) %>Layer() = default; - - // Property getters - -<% for (const property of properties) { -%> -<% if (property.name != 'heatmap-color') { -%> - jni::Local<jni::Object<>> <%- camelize(type) %>Layer::get<%- camelize(property.name) %>(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, to<%- camelize(type) %>Layer(layer).get<%- camelize(property.name) %>())); - } - -<% } else { -%> - jni::Local<jni::Object<>> HeatmapLayer::getHeatmapColor(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - auto propertyValue = to<%- camelize(type) %>Layer(layer).getHeatmapColor(); - if (propertyValue.isUndefined()) { - propertyValue = to<%- camelize(type) %>Layer(layer).getDefaultHeatmapColor(); - } - return std::move(*convert<jni::Local<jni::Object<>>>(env, propertyValue)); - } - -<% } -%> -<% if (property.transition) { -%> - jni::Local<jni::Object<TransitionOptions>> <%- camelize(type) %>Layer::get<%- camelize(property.name) %>Transition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = to<%- camelize(type) %>Layer(layer).get<%- camelize(property.name) %>Transition(); - return std::move(*convert<jni::Local<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)); - to<%- camelize(type) %>Layer(layer).set<%- camelize(property.name) %>Transition(options); - } - -<% } -%> -<% } -%> - - // <%- camelize(type) %>JavaLayerPeerFactory - - <%- camelize(type) %>JavaLayerPeerFactory::~<%- camelize(type) %>JavaLayerPeerFactory() = default; - - namespace { - jni::Local<jni::Object<Layer>> createJavaPeer(jni::JNIEnv& env, Layer* layer) { - static auto& javaClass = jni::Class<<%- camelize(type) %>Layer>::Singleton(env); - static auto constructor = javaClass.GetConstructor<jni::jlong>(env); - return javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(layer)); - } - } // namespace - - jni::Local<jni::Object<Layer>> <%- camelize(type) %>JavaLayerPeerFactory::createJavaLayerPeer(jni::JNIEnv& env, mbgl::style::Layer& layer) { - assert(layer.baseImpl->getTypeInfo() == getTypeInfo()); - return createJavaPeer(env, new <%- camelize(type) %>Layer(to<%- camelize(type) %>Layer(layer))); - } - - jni::Local<jni::Object<Layer>> <%- camelize(type) %>JavaLayerPeerFactory::createJavaLayerPeer(jni::JNIEnv& env, std::unique_ptr<mbgl::style::Layer> layer) { - assert(layer->baseImpl->getTypeInfo() == getTypeInfo()); - return createJavaPeer(env, new <%- camelize(type) %>Layer(std::unique_ptr<mbgl::style::<%- camelize(type) %>Layer>(static_cast<mbgl::style::<%- camelize(type) %>Layer*>(layer.release())))); - } - - void <%- camelize(type) %>JavaLayerPeerFactory::registerNative(jni::JNIEnv& env) { - // Lookup the class - static auto& javaClass = jni::Class<<%- camelize(type) %>Layer>::Singleton(env); - - #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) - - // Register the peer - jni::RegisterNativePeer<<%- camelize(type) %>Layer>( - env, - javaClass, - "nativePtr", -<% if (type === 'background') { -%> - jni::MakePeer<<%- camelize(type) %>Layer, jni::String&>, -<% } else { -%> - jni::MakePeer<<%- camelize(type) %>Layer, jni::String&, jni::String&>, -<% } -%> - "initialize", - "finalize",<% for(var i = 0; i < properties.length; i++) {%> -<% 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 -} // namespace mbgl diff --git a/platform/android/src/style/layers/layer.hpp b/platform/android/src/style/layers/layer.hpp deleted file mode 100644 index 557990844c..0000000000 --- a/platform/android/src/style/layers/layer.hpp +++ /dev/null @@ -1,117 +0,0 @@ -#pragma once - -#include <mbgl/layermanager/layer_factory.hpp> -#include <mbgl/style/layer.hpp> -#include <mbgl/style/style.hpp> -#include "../../gson/json_array.hpp" -#include "../../gson/json_element.hpp" -#include "../value.hpp" - -#include <jni/jni.hpp> - -namespace mbgl { - -namespace android { - -class Layer { -public: - - static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/layers/Layer"; }; - - static void registerNative(jni::JNIEnv&); - - virtual ~Layer(); - - /** - * Set core layer (ie return ownership after remove) - */ - void setLayer(std::unique_ptr<mbgl::style::Layer>); - - void addToStyle(mbgl::style::Style&, mbgl::optional<std::string>); - - // Release the owned view and return it - std::unique_ptr<mbgl::style::Layer> releaseCoreLayer(); - - jni::Local<jni::String> getId(jni::JNIEnv&); - - jni::Local<jni::String> getSourceId(jni::JNIEnv&); - - style::Layer& get(); - - void setProperty(jni::JNIEnv&, const jni::String&, const jni::Object<>& value); - - // Zoom - - jni::jfloat getMinZoom(jni::JNIEnv&); - - jni::jfloat getMaxZoom(jni::JNIEnv&); - - void setMinZoom(jni::JNIEnv&, jni::jfloat zoom); - - void setMaxZoom(jni::JNIEnv&, jni::jfloat zoom); - - /* common properties, but not shared by all */ - - void setFilter(jni::JNIEnv&, const jni::Array<jni::Object<>>&); - - jni::Local<jni::Object<gson::JsonElement>> getFilter(jni::JNIEnv&); - - void setSourceLayer(jni::JNIEnv&, const jni::String&); - - jni::Local<jni::String> getSourceLayer(jni::JNIEnv&); - - // Property getters - - jni::Local<jni::Object<jni::ObjectTag>> getVisibility(jni::JNIEnv&); - -protected: - /* - * Called when a non-owning peer object is created on the c++ side - */ - Layer(mbgl::style::Layer&); - - /* - * Called when a owning peer object is created on the c++ side - */ - Layer(std::unique_ptr<mbgl::style::Layer>); - - // Owned layer is set when creating a new layer, before adding it to the map - std::unique_ptr<mbgl::style::Layer> ownedLayer; - - // Raw reference to the layer - mbgl::style::Layer& layer; -}; - -/** - * @brief A factory class for a layer Java peer objects of a certain type. - */ -class JavaLayerPeerFactory { -public: - virtual ~JavaLayerPeerFactory() = default; - /** - * @brief Create a non-owning peer. - */ - virtual jni::Local<jni::Object<Layer>> createJavaLayerPeer(jni::JNIEnv&, mbgl::style::Layer&) = 0; - - /** - * @brief Create an owning peer. - */ - virtual jni::Local<jni::Object<Layer>> createJavaLayerPeer(jni::JNIEnv& env, - std::unique_ptr<mbgl::style::Layer>) = 0; - - /** - * @brief Register peer methods. - */ - virtual void registerNative(jni::JNIEnv&) = 0; - - /** - * @brief Get the corresponding layer factory. - * - * @return style::LayerFactory* must not be \c nullptr. - */ - virtual LayerFactory* getLayerFactory() = 0; -}; - - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/layers/layer.hpp.ejs b/platform/android/src/style/layers/layer.hpp.ejs deleted file mode 100644 index eb8db0620d..0000000000 --- a/platform/android/src/style/layers/layer.hpp.ejs +++ /dev/null @@ -1,62 +0,0 @@ -<% - const type = locals.type; - const properties = locals.properties; --%> -// This file is generated. Edit android/platform/scripts/generate-style-code.js, then run `make android-style-code`. - -#pragma once - -#include "layer.hpp" -#include "../transition_options.hpp" -#include <mbgl/layermanager/<%- type.replace('-', '_') %>_layer_factory.hpp> -#include <mbgl/style/layers/<%- type.replace('-', '_') %>_layer.hpp> -#include <jni/jni.hpp> - -namespace mbgl { -namespace android { - -class <%- camelize(type) %>Layer : public Layer { -public: - using SuperTag = Layer; - static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/layers/<%- camelize(type) %>Layer"; }; - -<% if (type === 'background') { -%> - <%- camelize(type) %>Layer(jni::JNIEnv&, jni::String&); -<% } else { -%> - <%- camelize(type) %>Layer(jni::JNIEnv&, jni::String&, jni::String&); -<% } -%> - - <%- camelize(type) %>Layer(mbgl::style::<%- camelize(type) %>Layer&); - - <%- camelize(type) %>Layer(std::unique_ptr<mbgl::style::<%- camelize(type) %>Layer>); - - ~<%- camelize(type) %>Layer(); - - // Properties -<% for (const property of properties) { -%> - - jni::Local<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::Local<jni::Object<TransitionOptions>> get<%- camelize(property.name) %>Transition(jni::JNIEnv&); -<% } -%> -<% } -%> - -}; // class <%- camelize(type) %>Layer - -class <%- camelize(type) %>JavaLayerPeerFactory final : public JavaLayerPeerFactory, public mbgl::<%- camelize(type) %>LayerFactory { -public: - ~<%- camelize(type) %>JavaLayerPeerFactory() override; - - // JavaLayerPeerFactory overrides. - jni::Local<jni::Object<Layer>> createJavaLayerPeer(jni::JNIEnv&, mbgl::style::Layer&) final; - jni::Local<jni::Object<Layer>> createJavaLayerPeer(jni::JNIEnv& env, std::unique_ptr<mbgl::style::Layer>) final; - - void registerNative(jni::JNIEnv&) final; - - LayerFactory* getLayerFactory() final { return this; } - -}; // class <%- camelize(type) %>JavaLayerPeerFactory - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/layers/layer_manager.cpp b/platform/android/src/style/layers/layer_manager.cpp deleted file mode 100644 index 2d4172a235..0000000000 --- a/platform/android/src/style/layers/layer_manager.cpp +++ /dev/null @@ -1,173 +0,0 @@ -#include "layer_manager.hpp" - -#include <mbgl/style/layer_impl.hpp> - -#include <mbgl/style/conversion/constant.hpp> -#include <mbgl/style/conversion/filter.hpp> -#include <mbgl/style/conversion_impl.hpp> - -#include "background_layer.hpp" -#include "circle_layer.hpp" -#include "custom_layer.hpp" -#include "fill_extrusion_layer.hpp" -#include "fill_layer.hpp" -#include "heatmap_layer.hpp" -#include "hillshade_layer.hpp" -#include "line_layer.hpp" -#include "raster_layer.hpp" -#include "symbol_layer.hpp" -#include "fill_extrusion_layer.hpp" - -namespace mbgl { - -namespace android { - -LayerManagerAndroid::LayerManagerAndroid() { -#if defined(MBGL_LAYER_FILL_DISABLE_RUNTIME) - addLayerTypeCoreOnly(std::make_unique<FillLayerFactory>()); -#elif !defined(MBGL_LAYER_FILL_DISABLE_ALL) - addLayerType(std::make_unique<FillJavaLayerPeerFactory>()); -#endif -#if defined(MBGL_LAYER_LINE_DISABLE_RUNTIME) - addLayerTypeCoreOnly(std::make_unique<LineLayerFactory>()); -#elif !defined(MBGL_LAYER_LINE_DISABLE_ALL) - addLayerType(std::make_unique<LineJavaLayerPeerFactory>()); -#endif -#if defined(MBGL_LAYER_CIRCLE_DISABLE_RUNTIME) - addLayerTypeCoreOnly(std::make_unique<CircleLayerFactory>()); -#elif !defined(MBGL_LAYER_CIRCLE_DISABLE_ALL) - addLayerType(std::make_unique<CircleJavaLayerPeerFactory>()); -#endif -#if defined(MBGL_LAYER_SYMBOL_DISABLE_RUNTIME) - addLayerTypeCoreOnly(std::make_unique<SymbolLayerFactory>()); -#elif !defined(MBGL_LAYER_SYMBOL_DISABLE_ALL) - addLayerType(std::make_unique<SymbolJavaLayerPeerFactory>()); -#endif -#if defined(MBGL_LAYER_RASTER_DISABLE_RUNTIME) - addLayerTypeCoreOnly(std::make_unique<RasterLayerFactory>()); -#elif !defined(MBGL_LAYER_RASTER_DISABLE_ALL) - addLayerType(std::make_unique<RasterJavaLayerPeerFactory>()); -#endif -#if defined(MBGL_LAYER_BACKGROUND_DISABLE_RUNTIME) - addLayerTypeCoreOnly(std::make_unique<BackgroundLayerFactory>()); -#elif !defined(MBGL_LAYER_BACKGROUND_DISABLE_ALL) - addLayerType(std::make_unique<BackgroundJavaLayerPeerFactory>()); -#endif -#if defined(MBGL_LAYER_HILLSHADE_DISABLE_RUNTIME) - addLayerTypeCoreOnly(std::make_unique<HillshadeLayerFactory>()); -#elif !defined(MBGL_LAYER_HILLSHADE_DISABLE_ALL) - addLayerType(std::make_unique<HillshadeJavaLayerPeerFactory>()); -#endif -#if defined(MBGL_LAYER_FILL_EXTRUSION_DISABLE_RUNTIME) - addLayerTypeCoreOnly(std::make_unique<FillExtrusionLayerFactory>()); -#elif !defined(MBGL_LAYER_FILL_EXTRUSION_DISABLE_ALL) - addLayerType(std::make_unique<FillExtrusionJavaLayerPeerFactory>()); -#endif -#if defined(MBGL_LAYER_HEATMAP_DISABLE_RUNTIME) - addLayerTypeCoreOnly(std::make_unique<HeatmapLayerFactory>()); -#elif !defined(MBGL_LAYER_HEATMAP_DISABLE_ALL) - addLayerType(std::make_unique<HeatmapJavaLayerPeerFactory>()); -#endif -#if defined(MBGL_LAYER_CUSTOM_DISABLE_RUNTIME) - addLayerTypeCoreOnly(std::make_unique<CustomLayerFactory>()); -#elif !defined(MBGL_LAYER_CUSTOM_DISABLE_ALL) - addLayerType(std::make_unique<CustomJavaLayerPeerFactory>()); -#endif -} - -LayerManagerAndroid::~LayerManagerAndroid() = default; - -jni::Local<jni::Object<Layer>> LayerManagerAndroid::createJavaLayerPeer(jni::JNIEnv& env, mbgl::style::Layer& layer) { - if (JavaLayerPeerFactory* factory = getPeerFactory(layer.getTypeInfo())) { - return factory->createJavaLayerPeer(env, layer); - } - return jni::Local<jni::Object<Layer>>(); -} - -jni::Local<jni::Object<Layer>> LayerManagerAndroid::createJavaLayerPeer(jni::JNIEnv& env, - std::unique_ptr<mbgl::style::Layer> layer) { - if (JavaLayerPeerFactory* factory = getPeerFactory(layer->getTypeInfo())) { - return factory->createJavaLayerPeer(env, std::move(layer)); - } - return jni::Local<jni::Object<Layer>>(); -} - -void LayerManagerAndroid::registerNative(jni::JNIEnv& env) { - if (peerFactories.empty()) { - return; - } - - Layer::registerNative(env); - for (const auto& factory: peerFactories) { - factory->registerNative(env); - } -} - -void LayerManagerAndroid::addLayerType(std::unique_ptr<JavaLayerPeerFactory> factory) { - assert(getFactory(factory->getLayerFactory()->getTypeInfo()) == nullptr); - registerCoreFactory(factory->getLayerFactory()); - peerFactories.emplace_back(std::move(factory)); -} - -void LayerManagerAndroid::addLayerTypeCoreOnly(std::unique_ptr<LayerFactory> factory) { - assert(getFactory(factory->getTypeInfo()) == nullptr); - registerCoreFactory(factory.get()); - coreFactories.emplace_back(std::move(factory)); -} - -void LayerManagerAndroid::registerCoreFactory(mbgl::LayerFactory* factory) { - std::string type{factory->getTypeInfo()->type}; - if (!type.empty()) { - assert(typeToFactory.find(type) == typeToFactory.end()); - typeToFactory.emplace(std::make_pair(std::move(type), factory)); - } -} - -JavaLayerPeerFactory* LayerManagerAndroid::getPeerFactory(const mbgl::style::LayerTypeInfo* typeInfo) { - assert(typeInfo); - for (const auto& factory: peerFactories) { - if (factory->getLayerFactory()->getTypeInfo() == typeInfo) { - return factory.get(); - } - } - return nullptr; -} - -LayerFactory* LayerManagerAndroid::getFactory(const std::string& type) noexcept { - auto search = typeToFactory.find(type); - return (search != typeToFactory.end()) ? search->second : nullptr; -} - -LayerFactory* LayerManagerAndroid::getFactory(const mbgl::style::LayerTypeInfo* info) noexcept { - if (JavaLayerPeerFactory* peerFactory = getPeerFactory(info)) { - return peerFactory->getLayerFactory(); - } - - for (const auto& factory: coreFactories) { - if (factory->getTypeInfo() == info) { - return factory.get(); - } - } - - return nullptr; -} - -// static -LayerManagerAndroid* LayerManagerAndroid::get() noexcept { - static LayerManagerAndroid impl; - return &impl; -} - -} // namespace android - -LayerManager* LayerManager::get() noexcept { - return android::LayerManagerAndroid::get(); -} - -#if defined(MBGL_LAYER_LINE_DISABLE_ALL) || defined(MBGL_LAYER_SYMBOL_DISABLE_ALL) || defined(MBGL_LAYER_FILL_DISABLE_ALL) -const bool LayerManager::annotationsEnabled = false; -#else -const bool LayerManager::annotationsEnabled = true; -#endif - -} // namespace mbgl diff --git a/platform/android/src/style/layers/layer_manager.hpp b/platform/android/src/style/layers/layer_manager.hpp deleted file mode 100644 index f7379f6de6..0000000000 --- a/platform/android/src/style/layers/layer_manager.hpp +++ /dev/null @@ -1,57 +0,0 @@ -#pragma once - -#include <mbgl/layermanager/layer_manager.hpp> -#include <mbgl/map/map.hpp> -#include <mbgl/style/layer.hpp> - -#include "layer.hpp" - -#include <jni/jni.hpp> - -#include <memory> -#include <vector> - -namespace mbgl { -namespace android { - -/** - * @brief A singleton class forwarding calls to the corresponding \c JavaLayerPeerFactory instance. - */ -class LayerManagerAndroid final : public mbgl::LayerManager { -public: - ~LayerManagerAndroid() final; - static LayerManagerAndroid* get() noexcept; - - jni::Local<jni::Object<Layer>> createJavaLayerPeer(jni::JNIEnv&, mbgl::style::Layer&); - jni::Local<jni::Object<Layer>> createJavaLayerPeer(jni::JNIEnv& env, std::unique_ptr<mbgl::style::Layer>); - - void registerNative(jni::JNIEnv&); - -private: - LayerManagerAndroid(); - /** - * @brief Enables a layer type for both JSON style and runtime API. - */ - void addLayerType(std::unique_ptr<JavaLayerPeerFactory>); - /** - * @brief Enables a layer type for JSON style only. - * - * We might not want to expose runtime API for some layer types - * in order to save binary size - JNI glue code for these layer types - * won't be added to the binary. - */ - void addLayerTypeCoreOnly(std::unique_ptr<mbgl::LayerFactory>); - - void registerCoreFactory(mbgl::LayerFactory*); - JavaLayerPeerFactory* getPeerFactory(const mbgl::style::LayerTypeInfo*); - // mbgl::LayerManager overrides. - LayerFactory* getFactory(const std::string& type) noexcept final; - LayerFactory* getFactory(const mbgl::style::LayerTypeInfo* info) noexcept final; - - std::vector<std::unique_ptr<JavaLayerPeerFactory>> peerFactories; - std::vector<std::unique_ptr<mbgl::LayerFactory>> coreFactories; - std::map<std::string, mbgl::LayerFactory*> typeToFactory; -}; - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/layers/line_layer.cpp b/platform/android/src/style/layers/line_layer.cpp deleted file mode 100644 index 89c6cb5323..0000000000 --- a/platform/android/src/style/layers/line_layer.cpp +++ /dev/null @@ -1,315 +0,0 @@ -// This file is generated. Edit android/platform/scripts/generate-style-code.js, then run `make android-style-code`. - -#include "line_layer.hpp" - -#include <string> - -#include "../conversion/property_value.hpp" -#include "../conversion/transition_options.hpp" - -#include <mbgl/style/layer_impl.hpp> - -namespace mbgl { -namespace android { - - inline mbgl::style::LineLayer& toLineLayer(mbgl::style::Layer& layer) { - return static_cast<mbgl::style::LineLayer&>(layer); - } - - /** - * Creates an owning peer object (for layers not attached to the map) from the JVM side - */ - LineLayer::LineLayer(jni::JNIEnv& env, jni::String& layerId, jni::String& sourceId) - : Layer(std::make_unique<mbgl::style::LineLayer>(jni::Make<std::string>(env, layerId), jni::Make<std::string>(env, sourceId))) { - } - - /** - * Creates a non-owning peer object (for layers currently attached to the map) - */ - LineLayer::LineLayer(mbgl::style::LineLayer& coreLayer) : Layer(coreLayer) {} - - /** - * Creates an owning peer object (for layers not attached to the map) - */ - LineLayer::LineLayer(std::unique_ptr<mbgl::style::LineLayer> coreLayer) : Layer(std::move(coreLayer)) {} - - LineLayer::~LineLayer() = default; - - // Property getters - - jni::Local<jni::Object<>> LineLayer::getLineCap(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toLineLayer(layer).getLineCap())); - } - - jni::Local<jni::Object<>> LineLayer::getLineJoin(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toLineLayer(layer).getLineJoin())); - } - - jni::Local<jni::Object<>> LineLayer::getLineMiterLimit(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toLineLayer(layer).getLineMiterLimit())); - } - - jni::Local<jni::Object<>> LineLayer::getLineRoundLimit(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toLineLayer(layer).getLineRoundLimit())); - } - - jni::Local<jni::Object<>> LineLayer::getLineSortKey(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toLineLayer(layer).getLineSortKey())); - } - - jni::Local<jni::Object<>> LineLayer::getLineOpacity(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toLineLayer(layer).getLineOpacity())); - } - - jni::Local<jni::Object<TransitionOptions>> LineLayer::getLineOpacityTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toLineLayer(layer).getLineOpacityTransition(); - return std::move(*convert<jni::Local<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)); - toLineLayer(layer).setLineOpacityTransition(options); - } - - jni::Local<jni::Object<>> LineLayer::getLineColor(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toLineLayer(layer).getLineColor())); - } - - jni::Local<jni::Object<TransitionOptions>> LineLayer::getLineColorTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toLineLayer(layer).getLineColorTransition(); - return std::move(*convert<jni::Local<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)); - toLineLayer(layer).setLineColorTransition(options); - } - - jni::Local<jni::Object<>> LineLayer::getLineTranslate(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toLineLayer(layer).getLineTranslate())); - } - - jni::Local<jni::Object<TransitionOptions>> LineLayer::getLineTranslateTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toLineLayer(layer).getLineTranslateTransition(); - return std::move(*convert<jni::Local<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)); - toLineLayer(layer).setLineTranslateTransition(options); - } - - jni::Local<jni::Object<>> LineLayer::getLineTranslateAnchor(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toLineLayer(layer).getLineTranslateAnchor())); - } - - jni::Local<jni::Object<>> LineLayer::getLineWidth(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toLineLayer(layer).getLineWidth())); - } - - jni::Local<jni::Object<TransitionOptions>> LineLayer::getLineWidthTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toLineLayer(layer).getLineWidthTransition(); - return std::move(*convert<jni::Local<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)); - toLineLayer(layer).setLineWidthTransition(options); - } - - jni::Local<jni::Object<>> LineLayer::getLineGapWidth(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toLineLayer(layer).getLineGapWidth())); - } - - jni::Local<jni::Object<TransitionOptions>> LineLayer::getLineGapWidthTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toLineLayer(layer).getLineGapWidthTransition(); - return std::move(*convert<jni::Local<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)); - toLineLayer(layer).setLineGapWidthTransition(options); - } - - jni::Local<jni::Object<>> LineLayer::getLineOffset(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toLineLayer(layer).getLineOffset())); - } - - jni::Local<jni::Object<TransitionOptions>> LineLayer::getLineOffsetTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toLineLayer(layer).getLineOffsetTransition(); - return std::move(*convert<jni::Local<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)); - toLineLayer(layer).setLineOffsetTransition(options); - } - - jni::Local<jni::Object<>> LineLayer::getLineBlur(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toLineLayer(layer).getLineBlur())); - } - - jni::Local<jni::Object<TransitionOptions>> LineLayer::getLineBlurTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toLineLayer(layer).getLineBlurTransition(); - return std::move(*convert<jni::Local<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)); - toLineLayer(layer).setLineBlurTransition(options); - } - - jni::Local<jni::Object<>> LineLayer::getLineDasharray(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toLineLayer(layer).getLineDasharray())); - } - - jni::Local<jni::Object<TransitionOptions>> LineLayer::getLineDasharrayTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toLineLayer(layer).getLineDasharrayTransition(); - return std::move(*convert<jni::Local<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)); - toLineLayer(layer).setLineDasharrayTransition(options); - } - - jni::Local<jni::Object<>> LineLayer::getLinePattern(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toLineLayer(layer).getLinePattern())); - } - - jni::Local<jni::Object<TransitionOptions>> LineLayer::getLinePatternTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toLineLayer(layer).getLinePatternTransition(); - return std::move(*convert<jni::Local<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)); - toLineLayer(layer).setLinePatternTransition(options); - } - - jni::Local<jni::Object<>> LineLayer::getLineGradient(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toLineLayer(layer).getLineGradient())); - } - - - // LineJavaLayerPeerFactory - - LineJavaLayerPeerFactory::~LineJavaLayerPeerFactory() = default; - - namespace { - jni::Local<jni::Object<Layer>> createJavaPeer(jni::JNIEnv& env, Layer* layer) { - static auto& javaClass = jni::Class<LineLayer>::Singleton(env); - static auto constructor = javaClass.GetConstructor<jni::jlong>(env); - return javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(layer)); - } - } // namespace - - jni::Local<jni::Object<Layer>> LineJavaLayerPeerFactory::createJavaLayerPeer(jni::JNIEnv& env, - mbgl::style::Layer& layer) { - assert(layer.baseImpl->getTypeInfo() == getTypeInfo()); - return createJavaPeer(env, new LineLayer(toLineLayer(layer))); - } - - jni::Local<jni::Object<Layer>> LineJavaLayerPeerFactory::createJavaLayerPeer( - jni::JNIEnv& env, std::unique_ptr<mbgl::style::Layer> layer) { - assert(layer->baseImpl->getTypeInfo() == getTypeInfo()); - return createJavaPeer(env, - new LineLayer(std::unique_ptr<mbgl::style::LineLayer>( - static_cast<mbgl::style::LineLayer*>(layer.release())))); - } - - void LineJavaLayerPeerFactory::registerNative(jni::JNIEnv& env) { - // Lookup the class - static auto& javaClass = jni::Class<LineLayer>::Singleton(env); - - #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) - - // Register the peer - jni::RegisterNativePeer<LineLayer>( - env, - javaClass, - "nativePtr", - jni::MakePeer<LineLayer, jni::String&, jni::String&>, - "initialize", - "finalize", - METHOD(&LineLayer::getLineCap, "nativeGetLineCap"), - METHOD(&LineLayer::getLineJoin, "nativeGetLineJoin"), - METHOD(&LineLayer::getLineMiterLimit, "nativeGetLineMiterLimit"), - METHOD(&LineLayer::getLineRoundLimit, "nativeGetLineRoundLimit"), - METHOD(&LineLayer::getLineSortKey, "nativeGetLineSortKey"), - 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"), - METHOD(&LineLayer::getLineGradient, "nativeGetLineGradient")); - } - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/layers/line_layer.hpp b/platform/android/src/style/layers/line_layer.hpp deleted file mode 100644 index 25b270fbc6..0000000000 --- a/platform/android/src/style/layers/line_layer.hpp +++ /dev/null @@ -1,96 +0,0 @@ -// This file is generated. Edit android/platform/scripts/generate-style-code.js, then run `make android-style-code`. - -#pragma once - -#include "layer.hpp" -#include "../transition_options.hpp" -#include <mbgl/layermanager/line_layer_factory.hpp> -#include <mbgl/style/layers/line_layer.hpp> -#include <jni/jni.hpp> - -namespace mbgl { -namespace android { - -class LineLayer : public Layer { -public: - using SuperTag = Layer; - static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/layers/LineLayer"; }; - - LineLayer(jni::JNIEnv&, jni::String&, jni::String&); - - LineLayer(mbgl::style::LineLayer&); - - LineLayer(std::unique_ptr<mbgl::style::LineLayer>); - - ~LineLayer(); - - // Properties - - jni::Local<jni::Object<jni::ObjectTag>> getLineCap(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getLineJoin(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getLineMiterLimit(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getLineRoundLimit(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getLineSortKey(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getLineOpacity(jni::JNIEnv&); - void setLineOpacityTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getLineOpacityTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getLineColor(jni::JNIEnv&); - void setLineColorTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getLineColorTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getLineTranslate(jni::JNIEnv&); - void setLineTranslateTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getLineTranslateTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getLineTranslateAnchor(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getLineWidth(jni::JNIEnv&); - void setLineWidthTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getLineWidthTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getLineGapWidth(jni::JNIEnv&); - void setLineGapWidthTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getLineGapWidthTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getLineOffset(jni::JNIEnv&); - void setLineOffsetTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getLineOffsetTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getLineBlur(jni::JNIEnv&); - void setLineBlurTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getLineBlurTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getLineDasharray(jni::JNIEnv&); - void setLineDasharrayTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getLineDasharrayTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getLinePattern(jni::JNIEnv&); - void setLinePatternTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getLinePatternTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getLineGradient(jni::JNIEnv&); - -}; // class LineLayer - -class LineJavaLayerPeerFactory final : public JavaLayerPeerFactory, public mbgl::LineLayerFactory { -public: - ~LineJavaLayerPeerFactory() override; - - // JavaLayerPeerFactory overrides. - jni::Local<jni::Object<Layer>> createJavaLayerPeer(jni::JNIEnv&, mbgl::style::Layer&) final; - jni::Local<jni::Object<Layer>> createJavaLayerPeer(jni::JNIEnv& env, std::unique_ptr<mbgl::style::Layer>) final; - - void registerNative(jni::JNIEnv&) final; - - LayerFactory* getLayerFactory() final { return this; } - -}; // class LineJavaLayerPeerFactory - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/layers/raster_layer.cpp b/platform/android/src/style/layers/raster_layer.cpp deleted file mode 100644 index d9cce949c2..0000000000 --- a/platform/android/src/style/layers/raster_layer.cpp +++ /dev/null @@ -1,222 +0,0 @@ -// This file is generated. Edit android/platform/scripts/generate-style-code.js, then run `make android-style-code`. - -#include "raster_layer.hpp" - -#include <string> - -#include "../conversion/property_value.hpp" -#include "../conversion/transition_options.hpp" - -#include <mbgl/style/layer_impl.hpp> - -namespace mbgl { -namespace android { - - inline mbgl::style::RasterLayer& toRasterLayer(mbgl::style::Layer& layer) { - return static_cast<mbgl::style::RasterLayer&>(layer); - } - - /** - * Creates an owning peer object (for layers not attached to the map) from the JVM side - */ - RasterLayer::RasterLayer(jni::JNIEnv& env, jni::String& layerId, jni::String& sourceId) - : Layer(std::make_unique<mbgl::style::RasterLayer>(jni::Make<std::string>(env, layerId), jni::Make<std::string>(env, sourceId))) { - } - - /** - * Creates a non-owning peer object (for layers currently attached to the map) - */ - RasterLayer::RasterLayer(mbgl::style::RasterLayer& coreLayer) : Layer(coreLayer) {} - - /** - * Creates an owning peer object (for layers not attached to the map) - */ - RasterLayer::RasterLayer(std::unique_ptr<mbgl::style::RasterLayer> coreLayer) : Layer(std::move(coreLayer)) {} - - RasterLayer::~RasterLayer() = default; - - // Property getters - - jni::Local<jni::Object<>> RasterLayer::getRasterOpacity(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toRasterLayer(layer).getRasterOpacity())); - } - - jni::Local<jni::Object<TransitionOptions>> RasterLayer::getRasterOpacityTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toRasterLayer(layer).getRasterOpacityTransition(); - return std::move(*convert<jni::Local<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)); - toRasterLayer(layer).setRasterOpacityTransition(options); - } - - jni::Local<jni::Object<>> RasterLayer::getRasterHueRotate(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toRasterLayer(layer).getRasterHueRotate())); - } - - jni::Local<jni::Object<TransitionOptions>> RasterLayer::getRasterHueRotateTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toRasterLayer(layer).getRasterHueRotateTransition(); - return std::move(*convert<jni::Local<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)); - toRasterLayer(layer).setRasterHueRotateTransition(options); - } - - jni::Local<jni::Object<>> RasterLayer::getRasterBrightnessMin(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toRasterLayer(layer).getRasterBrightnessMin())); - } - - jni::Local<jni::Object<TransitionOptions>> RasterLayer::getRasterBrightnessMinTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toRasterLayer(layer).getRasterBrightnessMinTransition(); - return std::move(*convert<jni::Local<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)); - toRasterLayer(layer).setRasterBrightnessMinTransition(options); - } - - jni::Local<jni::Object<>> RasterLayer::getRasterBrightnessMax(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toRasterLayer(layer).getRasterBrightnessMax())); - } - - jni::Local<jni::Object<TransitionOptions>> RasterLayer::getRasterBrightnessMaxTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toRasterLayer(layer).getRasterBrightnessMaxTransition(); - return std::move(*convert<jni::Local<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)); - toRasterLayer(layer).setRasterBrightnessMaxTransition(options); - } - - jni::Local<jni::Object<>> RasterLayer::getRasterSaturation(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toRasterLayer(layer).getRasterSaturation())); - } - - jni::Local<jni::Object<TransitionOptions>> RasterLayer::getRasterSaturationTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toRasterLayer(layer).getRasterSaturationTransition(); - return std::move(*convert<jni::Local<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)); - toRasterLayer(layer).setRasterSaturationTransition(options); - } - - jni::Local<jni::Object<>> RasterLayer::getRasterContrast(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toRasterLayer(layer).getRasterContrast())); - } - - jni::Local<jni::Object<TransitionOptions>> RasterLayer::getRasterContrastTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toRasterLayer(layer).getRasterContrastTransition(); - return std::move(*convert<jni::Local<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)); - toRasterLayer(layer).setRasterContrastTransition(options); - } - - jni::Local<jni::Object<>> RasterLayer::getRasterResampling(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toRasterLayer(layer).getRasterResampling())); - } - - jni::Local<jni::Object<>> RasterLayer::getRasterFadeDuration(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toRasterLayer(layer).getRasterFadeDuration())); - } - - - // RasterJavaLayerPeerFactory - - RasterJavaLayerPeerFactory::~RasterJavaLayerPeerFactory() = default; - - namespace { - jni::Local<jni::Object<Layer>> createJavaPeer(jni::JNIEnv& env, Layer* layer) { - static auto& javaClass = jni::Class<RasterLayer>::Singleton(env); - static auto constructor = javaClass.GetConstructor<jni::jlong>(env); - return javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(layer)); - } - } // namespace - - jni::Local<jni::Object<Layer>> RasterJavaLayerPeerFactory::createJavaLayerPeer(jni::JNIEnv& env, - mbgl::style::Layer& layer) { - assert(layer.baseImpl->getTypeInfo() == getTypeInfo()); - return createJavaPeer(env, new RasterLayer(toRasterLayer(layer))); - } - - jni::Local<jni::Object<Layer>> RasterJavaLayerPeerFactory::createJavaLayerPeer( - jni::JNIEnv& env, std::unique_ptr<mbgl::style::Layer> layer) { - assert(layer->baseImpl->getTypeInfo() == getTypeInfo()); - return createJavaPeer(env, - new RasterLayer(std::unique_ptr<mbgl::style::RasterLayer>( - static_cast<mbgl::style::RasterLayer*>(layer.release())))); - } - - void RasterJavaLayerPeerFactory::registerNative(jni::JNIEnv& env) { - // Lookup the class - static auto& javaClass = jni::Class<RasterLayer>::Singleton(env); - - #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) - - // Register the peer - jni::RegisterNativePeer<RasterLayer>( - env, - javaClass, - "nativePtr", - jni::MakePeer<RasterLayer, 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::getRasterResampling, "nativeGetRasterResampling"), - METHOD(&RasterLayer::getRasterFadeDuration, "nativeGetRasterFadeDuration")); - } - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/layers/raster_layer.hpp b/platform/android/src/style/layers/raster_layer.hpp deleted file mode 100644 index bbda2e0c57..0000000000 --- a/platform/android/src/style/layers/raster_layer.hpp +++ /dev/null @@ -1,74 +0,0 @@ -// This file is generated. Edit android/platform/scripts/generate-style-code.js, then run `make android-style-code`. - -#pragma once - -#include "layer.hpp" -#include "../transition_options.hpp" -#include <mbgl/layermanager/raster_layer_factory.hpp> -#include <mbgl/style/layers/raster_layer.hpp> -#include <jni/jni.hpp> - -namespace mbgl { -namespace android { - -class RasterLayer : public Layer { -public: - using SuperTag = Layer; - static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/layers/RasterLayer"; }; - - RasterLayer(jni::JNIEnv&, jni::String&, jni::String&); - - RasterLayer(mbgl::style::RasterLayer&); - - RasterLayer(std::unique_ptr<mbgl::style::RasterLayer>); - - ~RasterLayer(); - - // Properties - - jni::Local<jni::Object<jni::ObjectTag>> getRasterOpacity(jni::JNIEnv&); - void setRasterOpacityTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getRasterOpacityTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getRasterHueRotate(jni::JNIEnv&); - void setRasterHueRotateTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getRasterHueRotateTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getRasterBrightnessMin(jni::JNIEnv&); - void setRasterBrightnessMinTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getRasterBrightnessMinTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getRasterBrightnessMax(jni::JNIEnv&); - void setRasterBrightnessMaxTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getRasterBrightnessMaxTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getRasterSaturation(jni::JNIEnv&); - void setRasterSaturationTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getRasterSaturationTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getRasterContrast(jni::JNIEnv&); - void setRasterContrastTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getRasterContrastTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getRasterResampling(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getRasterFadeDuration(jni::JNIEnv&); - -}; // class RasterLayer - -class RasterJavaLayerPeerFactory final : public JavaLayerPeerFactory, public mbgl::RasterLayerFactory { -public: - ~RasterJavaLayerPeerFactory() override; - - // JavaLayerPeerFactory overrides. - jni::Local<jni::Object<Layer>> createJavaLayerPeer(jni::JNIEnv&, mbgl::style::Layer&) final; - jni::Local<jni::Object<Layer>> createJavaLayerPeer(jni::JNIEnv& env, std::unique_ptr<mbgl::style::Layer>) final; - - void registerNative(jni::JNIEnv&) final; - - LayerFactory* getLayerFactory() final { return this; } - -}; // class RasterJavaLayerPeerFactory - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/layers/symbol_layer.cpp b/platform/android/src/style/layers/symbol_layer.cpp deleted file mode 100644 index f24fb35425..0000000000 --- a/platform/android/src/style/layers/symbol_layer.cpp +++ /dev/null @@ -1,594 +0,0 @@ -// This file is generated. Edit android/platform/scripts/generate-style-code.js, then run `make android-style-code`. - -#include "symbol_layer.hpp" - -#include <string> - -#include "../conversion/property_value.hpp" -#include "../conversion/transition_options.hpp" - -#include <mbgl/style/layer_impl.hpp> - -namespace mbgl { -namespace android { - - inline mbgl::style::SymbolLayer& toSymbolLayer(mbgl::style::Layer& layer) { - return static_cast<mbgl::style::SymbolLayer&>(layer); - } - - /** - * Creates an owning peer object (for layers not attached to the map) from the JVM side - */ - SymbolLayer::SymbolLayer(jni::JNIEnv& env, jni::String& layerId, jni::String& sourceId) - : Layer(std::make_unique<mbgl::style::SymbolLayer>(jni::Make<std::string>(env, layerId), jni::Make<std::string>(env, sourceId))) { - } - - /** - * Creates a non-owning peer object (for layers currently attached to the map) - */ - SymbolLayer::SymbolLayer(mbgl::style::SymbolLayer& coreLayer) : Layer(coreLayer) {} - - /** - * Creates an owning peer object (for layers not attached to the map) - */ - SymbolLayer::SymbolLayer(std::unique_ptr<mbgl::style::SymbolLayer> coreLayer) : Layer(std::move(coreLayer)) {} - - SymbolLayer::~SymbolLayer() = default; - - // Property getters - - jni::Local<jni::Object<>> SymbolLayer::getSymbolPlacement(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getSymbolPlacement())); - } - - jni::Local<jni::Object<>> SymbolLayer::getSymbolSpacing(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getSymbolSpacing())); - } - - jni::Local<jni::Object<>> SymbolLayer::getSymbolAvoidEdges(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getSymbolAvoidEdges())); - } - - jni::Local<jni::Object<>> SymbolLayer::getSymbolSortKey(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getSymbolSortKey())); - } - - jni::Local<jni::Object<>> SymbolLayer::getSymbolZOrder(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getSymbolZOrder())); - } - - jni::Local<jni::Object<>> SymbolLayer::getIconAllowOverlap(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getIconAllowOverlap())); - } - - jni::Local<jni::Object<>> SymbolLayer::getIconIgnorePlacement(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getIconIgnorePlacement())); - } - - jni::Local<jni::Object<>> SymbolLayer::getIconOptional(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getIconOptional())); - } - - jni::Local<jni::Object<>> SymbolLayer::getIconRotationAlignment(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getIconRotationAlignment())); - } - - jni::Local<jni::Object<>> SymbolLayer::getIconSize(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getIconSize())); - } - - jni::Local<jni::Object<>> SymbolLayer::getIconTextFit(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getIconTextFit())); - } - - jni::Local<jni::Object<>> SymbolLayer::getIconTextFitPadding(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getIconTextFitPadding())); - } - - jni::Local<jni::Object<>> SymbolLayer::getIconImage(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getIconImage())); - } - - jni::Local<jni::Object<>> SymbolLayer::getIconRotate(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getIconRotate())); - } - - jni::Local<jni::Object<>> SymbolLayer::getIconPadding(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getIconPadding())); - } - - jni::Local<jni::Object<>> SymbolLayer::getIconKeepUpright(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getIconKeepUpright())); - } - - jni::Local<jni::Object<>> SymbolLayer::getIconOffset(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getIconOffset())); - } - - jni::Local<jni::Object<>> SymbolLayer::getIconAnchor(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getIconAnchor())); - } - - jni::Local<jni::Object<>> SymbolLayer::getIconPitchAlignment(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getIconPitchAlignment())); - } - - jni::Local<jni::Object<>> SymbolLayer::getTextPitchAlignment(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getTextPitchAlignment())); - } - - jni::Local<jni::Object<>> SymbolLayer::getTextRotationAlignment(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getTextRotationAlignment())); - } - - jni::Local<jni::Object<>> SymbolLayer::getTextField(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getTextField())); - } - - jni::Local<jni::Object<>> SymbolLayer::getTextFont(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getTextFont())); - } - - jni::Local<jni::Object<>> SymbolLayer::getTextSize(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getTextSize())); - } - - jni::Local<jni::Object<>> SymbolLayer::getTextMaxWidth(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getTextMaxWidth())); - } - - jni::Local<jni::Object<>> SymbolLayer::getTextLineHeight(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getTextLineHeight())); - } - - jni::Local<jni::Object<>> SymbolLayer::getTextLetterSpacing(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getTextLetterSpacing())); - } - - jni::Local<jni::Object<>> SymbolLayer::getTextJustify(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getTextJustify())); - } - - jni::Local<jni::Object<>> SymbolLayer::getTextRadialOffset(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getTextRadialOffset())); - } - - jni::Local<jni::Object<>> SymbolLayer::getTextVariableAnchor(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getTextVariableAnchor())); - } - - jni::Local<jni::Object<>> SymbolLayer::getTextAnchor(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getTextAnchor())); - } - - jni::Local<jni::Object<>> SymbolLayer::getTextMaxAngle(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getTextMaxAngle())); - } - - jni::Local<jni::Object<>> SymbolLayer::getTextWritingMode(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getTextWritingMode())); - } - - jni::Local<jni::Object<>> SymbolLayer::getTextRotate(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getTextRotate())); - } - - jni::Local<jni::Object<>> SymbolLayer::getTextPadding(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getTextPadding())); - } - - jni::Local<jni::Object<>> SymbolLayer::getTextKeepUpright(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getTextKeepUpright())); - } - - jni::Local<jni::Object<>> SymbolLayer::getTextTransform(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getTextTransform())); - } - - jni::Local<jni::Object<>> SymbolLayer::getTextOffset(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getTextOffset())); - } - - jni::Local<jni::Object<>> SymbolLayer::getTextAllowOverlap(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getTextAllowOverlap())); - } - - jni::Local<jni::Object<>> SymbolLayer::getTextIgnorePlacement(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getTextIgnorePlacement())); - } - - jni::Local<jni::Object<>> SymbolLayer::getTextOptional(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getTextOptional())); - } - - jni::Local<jni::Object<>> SymbolLayer::getIconOpacity(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getIconOpacity())); - } - - jni::Local<jni::Object<TransitionOptions>> SymbolLayer::getIconOpacityTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toSymbolLayer(layer).getIconOpacityTransition(); - return std::move(*convert<jni::Local<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)); - toSymbolLayer(layer).setIconOpacityTransition(options); - } - - jni::Local<jni::Object<>> SymbolLayer::getIconColor(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getIconColor())); - } - - jni::Local<jni::Object<TransitionOptions>> SymbolLayer::getIconColorTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toSymbolLayer(layer).getIconColorTransition(); - return std::move(*convert<jni::Local<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)); - toSymbolLayer(layer).setIconColorTransition(options); - } - - jni::Local<jni::Object<>> SymbolLayer::getIconHaloColor(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getIconHaloColor())); - } - - jni::Local<jni::Object<TransitionOptions>> SymbolLayer::getIconHaloColorTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toSymbolLayer(layer).getIconHaloColorTransition(); - return std::move(*convert<jni::Local<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)); - toSymbolLayer(layer).setIconHaloColorTransition(options); - } - - jni::Local<jni::Object<>> SymbolLayer::getIconHaloWidth(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getIconHaloWidth())); - } - - jni::Local<jni::Object<TransitionOptions>> SymbolLayer::getIconHaloWidthTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toSymbolLayer(layer).getIconHaloWidthTransition(); - return std::move(*convert<jni::Local<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)); - toSymbolLayer(layer).setIconHaloWidthTransition(options); - } - - jni::Local<jni::Object<>> SymbolLayer::getIconHaloBlur(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getIconHaloBlur())); - } - - jni::Local<jni::Object<TransitionOptions>> SymbolLayer::getIconHaloBlurTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toSymbolLayer(layer).getIconHaloBlurTransition(); - return std::move(*convert<jni::Local<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)); - toSymbolLayer(layer).setIconHaloBlurTransition(options); - } - - jni::Local<jni::Object<>> SymbolLayer::getIconTranslate(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getIconTranslate())); - } - - jni::Local<jni::Object<TransitionOptions>> SymbolLayer::getIconTranslateTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toSymbolLayer(layer).getIconTranslateTransition(); - return std::move(*convert<jni::Local<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)); - toSymbolLayer(layer).setIconTranslateTransition(options); - } - - jni::Local<jni::Object<>> SymbolLayer::getIconTranslateAnchor(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getIconTranslateAnchor())); - } - - jni::Local<jni::Object<>> SymbolLayer::getTextOpacity(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getTextOpacity())); - } - - jni::Local<jni::Object<TransitionOptions>> SymbolLayer::getTextOpacityTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toSymbolLayer(layer).getTextOpacityTransition(); - return std::move(*convert<jni::Local<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)); - toSymbolLayer(layer).setTextOpacityTransition(options); - } - - jni::Local<jni::Object<>> SymbolLayer::getTextColor(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getTextColor())); - } - - jni::Local<jni::Object<TransitionOptions>> SymbolLayer::getTextColorTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toSymbolLayer(layer).getTextColorTransition(); - return std::move(*convert<jni::Local<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)); - toSymbolLayer(layer).setTextColorTransition(options); - } - - jni::Local<jni::Object<>> SymbolLayer::getTextHaloColor(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getTextHaloColor())); - } - - jni::Local<jni::Object<TransitionOptions>> SymbolLayer::getTextHaloColorTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toSymbolLayer(layer).getTextHaloColorTransition(); - return std::move(*convert<jni::Local<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)); - toSymbolLayer(layer).setTextHaloColorTransition(options); - } - - jni::Local<jni::Object<>> SymbolLayer::getTextHaloWidth(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getTextHaloWidth())); - } - - jni::Local<jni::Object<TransitionOptions>> SymbolLayer::getTextHaloWidthTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toSymbolLayer(layer).getTextHaloWidthTransition(); - return std::move(*convert<jni::Local<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)); - toSymbolLayer(layer).setTextHaloWidthTransition(options); - } - - jni::Local<jni::Object<>> SymbolLayer::getTextHaloBlur(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getTextHaloBlur())); - } - - jni::Local<jni::Object<TransitionOptions>> SymbolLayer::getTextHaloBlurTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toSymbolLayer(layer).getTextHaloBlurTransition(); - return std::move(*convert<jni::Local<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)); - toSymbolLayer(layer).setTextHaloBlurTransition(options); - } - - jni::Local<jni::Object<>> SymbolLayer::getTextTranslate(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getTextTranslate())); - } - - jni::Local<jni::Object<TransitionOptions>> SymbolLayer::getTextTranslateTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = toSymbolLayer(layer).getTextTranslateTransition(); - return std::move(*convert<jni::Local<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)); - toSymbolLayer(layer).setTextTranslateTransition(options); - } - - jni::Local<jni::Object<>> SymbolLayer::getTextTranslateAnchor(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - return std::move(*convert<jni::Local<jni::Object<>>>(env, toSymbolLayer(layer).getTextTranslateAnchor())); - } - - - // SymbolJavaLayerPeerFactory - - SymbolJavaLayerPeerFactory::~SymbolJavaLayerPeerFactory() = default; - - namespace { - jni::Local<jni::Object<Layer>> createJavaPeer(jni::JNIEnv& env, Layer* layer) { - static auto& javaClass = jni::Class<SymbolLayer>::Singleton(env); - static auto constructor = javaClass.GetConstructor<jni::jlong>(env); - return javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(layer)); - } - } // namespace - - jni::Local<jni::Object<Layer>> SymbolJavaLayerPeerFactory::createJavaLayerPeer(jni::JNIEnv& env, - mbgl::style::Layer& layer) { - assert(layer.baseImpl->getTypeInfo() == getTypeInfo()); - return createJavaPeer(env, new SymbolLayer(toSymbolLayer(layer))); - } - - jni::Local<jni::Object<Layer>> SymbolJavaLayerPeerFactory::createJavaLayerPeer( - jni::JNIEnv& env, std::unique_ptr<mbgl::style::Layer> layer) { - assert(layer->baseImpl->getTypeInfo() == getTypeInfo()); - return createJavaPeer(env, - new SymbolLayer(std::unique_ptr<mbgl::style::SymbolLayer>( - static_cast<mbgl::style::SymbolLayer*>(layer.release())))); - } - - void SymbolJavaLayerPeerFactory::registerNative(jni::JNIEnv& env) { - // Lookup the class - static auto& javaClass = jni::Class<SymbolLayer>::Singleton(env); - - #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) - - // Register the peer - jni::RegisterNativePeer<SymbolLayer>( - env, - javaClass, - "nativePtr", - jni::MakePeer<SymbolLayer, jni::String&, jni::String&>, - "initialize", - "finalize", - METHOD(&SymbolLayer::getSymbolPlacement, "nativeGetSymbolPlacement"), - METHOD(&SymbolLayer::getSymbolSpacing, "nativeGetSymbolSpacing"), - METHOD(&SymbolLayer::getSymbolAvoidEdges, "nativeGetSymbolAvoidEdges"), - METHOD(&SymbolLayer::getSymbolSortKey, "nativeGetSymbolSortKey"), - METHOD(&SymbolLayer::getSymbolZOrder, "nativeGetSymbolZOrder"), - METHOD(&SymbolLayer::getIconAllowOverlap, "nativeGetIconAllowOverlap"), - METHOD(&SymbolLayer::getIconIgnorePlacement, "nativeGetIconIgnorePlacement"), - METHOD(&SymbolLayer::getIconOptional, "nativeGetIconOptional"), - METHOD(&SymbolLayer::getIconRotationAlignment, "nativeGetIconRotationAlignment"), - METHOD(&SymbolLayer::getIconSize, "nativeGetIconSize"), - METHOD(&SymbolLayer::getIconTextFit, "nativeGetIconTextFit"), - METHOD(&SymbolLayer::getIconTextFitPadding, "nativeGetIconTextFitPadding"), - METHOD(&SymbolLayer::getIconImage, "nativeGetIconImage"), - METHOD(&SymbolLayer::getIconRotate, "nativeGetIconRotate"), - METHOD(&SymbolLayer::getIconPadding, "nativeGetIconPadding"), - METHOD(&SymbolLayer::getIconKeepUpright, "nativeGetIconKeepUpright"), - METHOD(&SymbolLayer::getIconOffset, "nativeGetIconOffset"), - METHOD(&SymbolLayer::getIconAnchor, "nativeGetIconAnchor"), - METHOD(&SymbolLayer::getIconPitchAlignment, "nativeGetIconPitchAlignment"), - METHOD(&SymbolLayer::getTextPitchAlignment, "nativeGetTextPitchAlignment"), - METHOD(&SymbolLayer::getTextRotationAlignment, "nativeGetTextRotationAlignment"), - METHOD(&SymbolLayer::getTextField, "nativeGetTextField"), - METHOD(&SymbolLayer::getTextFont, "nativeGetTextFont"), - METHOD(&SymbolLayer::getTextSize, "nativeGetTextSize"), - METHOD(&SymbolLayer::getTextMaxWidth, "nativeGetTextMaxWidth"), - METHOD(&SymbolLayer::getTextLineHeight, "nativeGetTextLineHeight"), - METHOD(&SymbolLayer::getTextLetterSpacing, "nativeGetTextLetterSpacing"), - METHOD(&SymbolLayer::getTextJustify, "nativeGetTextJustify"), - METHOD(&SymbolLayer::getTextRadialOffset, "nativeGetTextRadialOffset"), - METHOD(&SymbolLayer::getTextVariableAnchor, "nativeGetTextVariableAnchor"), - METHOD(&SymbolLayer::getTextAnchor, "nativeGetTextAnchor"), - METHOD(&SymbolLayer::getTextMaxAngle, "nativeGetTextMaxAngle"), - METHOD(&SymbolLayer::getTextWritingMode, "nativeGetTextWritingMode"), - METHOD(&SymbolLayer::getTextRotate, "nativeGetTextRotate"), - METHOD(&SymbolLayer::getTextPadding, "nativeGetTextPadding"), - METHOD(&SymbolLayer::getTextKeepUpright, "nativeGetTextKeepUpright"), - METHOD(&SymbolLayer::getTextTransform, "nativeGetTextTransform"), - METHOD(&SymbolLayer::getTextOffset, "nativeGetTextOffset"), - 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")); - } - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/layers/symbol_layer.hpp b/platform/android/src/style/layers/symbol_layer.hpp deleted file mode 100644 index 4898c830df..0000000000 --- a/platform/android/src/style/layers/symbol_layer.hpp +++ /dev/null @@ -1,180 +0,0 @@ -// This file is generated. Edit android/platform/scripts/generate-style-code.js, then run `make android-style-code`. - -#pragma once - -#include "layer.hpp" -#include "../transition_options.hpp" -#include <mbgl/layermanager/symbol_layer_factory.hpp> -#include <mbgl/style/layers/symbol_layer.hpp> -#include <jni/jni.hpp> - -namespace mbgl { -namespace android { - -class SymbolLayer : public Layer { -public: - using SuperTag = Layer; - static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/layers/SymbolLayer"; }; - - SymbolLayer(jni::JNIEnv&, jni::String&, jni::String&); - - SymbolLayer(mbgl::style::SymbolLayer&); - - SymbolLayer(std::unique_ptr<mbgl::style::SymbolLayer>); - - ~SymbolLayer(); - - // Properties - - jni::Local<jni::Object<jni::ObjectTag>> getSymbolPlacement(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getSymbolSpacing(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getSymbolAvoidEdges(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getSymbolSortKey(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getSymbolZOrder(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getIconAllowOverlap(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getIconIgnorePlacement(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getIconOptional(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getIconRotationAlignment(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getIconSize(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getIconTextFit(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getIconTextFitPadding(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getIconImage(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getIconRotate(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getIconPadding(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getIconKeepUpright(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getIconOffset(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getIconAnchor(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getIconPitchAlignment(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getTextPitchAlignment(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getTextRotationAlignment(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getTextField(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getTextFont(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getTextSize(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getTextMaxWidth(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getTextLineHeight(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getTextLetterSpacing(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getTextJustify(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getTextRadialOffset(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getTextVariableAnchor(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getTextAnchor(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getTextMaxAngle(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getTextWritingMode(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getTextRotate(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getTextPadding(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getTextKeepUpright(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getTextTransform(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getTextOffset(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getTextAllowOverlap(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getTextIgnorePlacement(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getTextOptional(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getIconOpacity(jni::JNIEnv&); - void setIconOpacityTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getIconOpacityTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getIconColor(jni::JNIEnv&); - void setIconColorTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getIconColorTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getIconHaloColor(jni::JNIEnv&); - void setIconHaloColorTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getIconHaloColorTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getIconHaloWidth(jni::JNIEnv&); - void setIconHaloWidthTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getIconHaloWidthTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getIconHaloBlur(jni::JNIEnv&); - void setIconHaloBlurTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getIconHaloBlurTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getIconTranslate(jni::JNIEnv&); - void setIconTranslateTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getIconTranslateTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getIconTranslateAnchor(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getTextOpacity(jni::JNIEnv&); - void setTextOpacityTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getTextOpacityTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getTextColor(jni::JNIEnv&); - void setTextColorTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getTextColorTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getTextHaloColor(jni::JNIEnv&); - void setTextHaloColorTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getTextHaloColorTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getTextHaloWidth(jni::JNIEnv&); - void setTextHaloWidthTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getTextHaloWidthTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getTextHaloBlur(jni::JNIEnv&); - void setTextHaloBlurTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getTextHaloBlurTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getTextTranslate(jni::JNIEnv&); - void setTextTranslateTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getTextTranslateTransition(jni::JNIEnv&); - - jni::Local<jni::Object<jni::ObjectTag>> getTextTranslateAnchor(jni::JNIEnv&); - -}; // class SymbolLayer - -class SymbolJavaLayerPeerFactory final : public JavaLayerPeerFactory, public mbgl::SymbolLayerFactory { -public: - ~SymbolJavaLayerPeerFactory() override; - - // JavaLayerPeerFactory overrides. - jni::Local<jni::Object<Layer>> createJavaLayerPeer(jni::JNIEnv&, mbgl::style::Layer&) final; - jni::Local<jni::Object<Layer>> createJavaLayerPeer(jni::JNIEnv& env, std::unique_ptr<mbgl::style::Layer>) final; - - void registerNative(jni::JNIEnv&) final; - - LayerFactory* getLayerFactory() final { return this; } - -}; // class SymbolJavaLayerPeerFactory - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/light.cpp b/platform/android/src/style/light.cpp deleted file mode 100644 index d8ed4d9d96..0000000000 --- a/platform/android/src/style/light.cpp +++ /dev/null @@ -1,143 +0,0 @@ -#include <mbgl/map/map.hpp> -#include "light.hpp" -#include "conversion/transition_options.hpp" -#include "conversion/position.hpp" - -namespace mbgl { -namespace android { - -Light::Light(mbgl::Map& coreMap, mbgl::style::Light& coreLight) - : light(coreLight) , map(&coreMap) { -} - -static Light* initializeLightPeer(mbgl::Map& map, mbgl::style::Light& coreLight) { - return new Light(map, coreLight); -} - -jni::Local<jni::Object<Light>> Light::createJavaLightPeer(jni::JNIEnv& env, Map& map, mbgl::style::Light& coreLight) { - std::unique_ptr<Light> peerLight = std::unique_ptr<Light>(initializeLightPeer(map, coreLight)); - auto result = peerLight->createJavaPeer(env); - peerLight.release(); - return result; -} - -jni::Local<jni::Object<Light>> Light::createJavaPeer(jni::JNIEnv& env) { - static auto& javaClass = jni::Class<Light>::Singleton(env); - static auto constructor = javaClass.GetConstructor<jni::jlong>(env); - return javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(this)); -} - -void Light::setAnchor(jni::JNIEnv& env, const jni::String& property) { - std::string anchorStr = jni::Make<std::string>(env, property); - if (anchorStr.compare("map") == 0) { - light.setAnchor(LightAnchorType::Map); - } else if (anchorStr.compare("viewport") == 0) { - light.setAnchor(LightAnchorType::Viewport); - } -} - -jni::Local<jni::String> Light::getAnchor(jni::JNIEnv& env) { - auto anchorType = light.getAnchor(); - if (anchorType == LightAnchorType::Map) { - return jni::Make<jni::String>(env, "map"); - } else { - return jni::Make<jni::String>(env, "viewport"); - } -} - -void Light::setPosition(jni::JNIEnv& env, const jni::Object<Position>& jposition) { - using namespace mbgl::android::conversion; - auto position = *convert<mbgl::style::Position>(env, jposition); - light.setPosition(position); -} - -jni::Local<jni::Object<Position>> Light::getPosition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::Position position = light.getPosition().asConstant(); - return std::move(*convert<jni::Local<jni::Object<Position>>>(env, position)); -} - -jni::Local<jni::Object<TransitionOptions>> Light::getPositionTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = light.getPositionTransition(); - return std::move(*convert<jni::Local<jni::Object<TransitionOptions>>>(env, options)); -} - -void Light::setPositionTransition(jni::JNIEnv&, jlong duration, jlong delay) { - mbgl::style::TransitionOptions options; - options.duration.emplace(mbgl::Milliseconds(duration)); - options.delay.emplace(mbgl::Milliseconds(delay)); - light.setPositionTransition(options); -} - -void Light::setColor(jni::JNIEnv& env, const jni::String& property) { - auto color = Color::parse(jni::Make<std::string>(env, property)); - if (color) { - light.setColor(color.value()); - } -} - -jni::Local<jni::String> Light::getColor(jni::JNIEnv &env) { - auto color = light.getColor().asConstant(); - return jni::Make<jni::String>(env, color.stringify()); -} - -jni::Local<jni::Object<TransitionOptions>> Light::getColorTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = light.getColorTransition(); - return std::move(*convert<jni::Local<jni::Object<TransitionOptions>>>(env, options)); -} - -void Light::setColorTransition(jni::JNIEnv&, jlong duration, jlong delay) { - mbgl::style::TransitionOptions options; - options.duration.emplace(mbgl::Milliseconds(duration)); - options.delay.emplace(mbgl::Milliseconds(delay)); - light.setColorTransition(options); -} - -void Light::setIntensity(jni::JNIEnv&, jni::jfloat property) { - light.setIntensity(property); -} - -jni::jfloat Light::getIntensity(jni::JNIEnv&) { - return light.getIntensity().asConstant(); -} - -jni::Local<jni::Object<TransitionOptions>> Light::getIntensityTransition(jni::JNIEnv& env) { - using namespace mbgl::android::conversion; - mbgl::style::TransitionOptions options = light.getIntensityTransition(); - return std::move(*convert<jni::Local<jni::Object<TransitionOptions>>>(env, options)); -} - -void Light::setIntensityTransition(jni::JNIEnv&, jlong duration, jlong delay) { - mbgl::style::TransitionOptions options; - options.duration.emplace(mbgl::Milliseconds(duration)); - options.delay.emplace(mbgl::Milliseconds(delay)); - light.setIntensityTransition(options); -} - -void Light::registerNative(jni::JNIEnv& env) { - // Lookup the class - static auto& javaClass = jni::Class<Light>::Singleton(env); - -#define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) - // Register the peer - jni::RegisterNativePeer<Light>(env, javaClass, "nativePtr", - METHOD(&Light::getAnchor, "nativeGetAnchor"), - METHOD(&Light::setAnchor, "nativeSetAnchor"), - METHOD(&Light::getPositionTransition, "nativeGetPositionTransition"), - METHOD(&Light::setPositionTransition, "nativeSetPositionTransition"), - METHOD(&Light::getPosition, "nativeGetPosition"), - METHOD(&Light::setPosition, "nativeSetPosition"), - METHOD(&Light::getColorTransition, "nativeGetColorTransition"), - METHOD(&Light::setColorTransition, "nativeSetColorTransition"), - METHOD(&Light::getColor, "nativeGetColor"), - METHOD(&Light::setColor, "nativeSetColor"), - METHOD(&Light::getIntensityTransition, "nativeGetIntensityTransition"), - METHOD(&Light::setIntensityTransition, "nativeSetIntensityTransition"), - METHOD(&Light::getIntensity, "nativeGetIntensity"), - METHOD(&Light::setIntensity, "nativeSetIntensity")); -} - -} // namespace android -} // namespace mb diff --git a/platform/android/src/style/light.hpp b/platform/android/src/style/light.hpp deleted file mode 100644 index 97767c4f76..0000000000 --- a/platform/android/src/style/light.hpp +++ /dev/null @@ -1,53 +0,0 @@ -#pragma once - -#include <mbgl/util/noncopyable.hpp> - -#include <jni/jni.hpp> -#include <mbgl/style/light.hpp> -#include "transition_options.hpp" -#include "position.hpp" -#include <mbgl/style/types.hpp> -#include <mbgl/style/property_value.hpp> - -namespace mbgl { -namespace android { - -using namespace style; - -class Light : private mbgl::util::noncopyable { -public: - - static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/light/Light"; }; - - static void registerNative(jni::JNIEnv&); - - static jni::Local<jni::Object<Light>> createJavaLightPeer(jni::JNIEnv&, mbgl::Map&, mbgl::style::Light&); - - Light(mbgl::Map&, mbgl::style::Light&); - - void setAnchor(jni::JNIEnv&, const jni::String&); - jni::Local<jni::String> getAnchor(jni::JNIEnv&); - void setPosition(jni::JNIEnv&, const jni::Object<Position>&); - jni::Local<jni::Object<Position>> getPosition(jni::JNIEnv&); - void setPositionTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getPositionTransition(jni::JNIEnv&); - void setColor(jni::JNIEnv&, const jni::String&); - jni::Local<jni::String> getColor(jni::JNIEnv&); - void setColorTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getColorTransition(jni::JNIEnv&); - void setIntensity(jni::JNIEnv&, jni::jfloat); - jni::jfloat getIntensity(jni::JNIEnv&); - void setIntensityTransition(jni::JNIEnv&, jlong duration, jlong delay); - jni::Local<jni::Object<TransitionOptions>> getIntensityTransition(jni::JNIEnv&); - jni::Local<jni::Object<Light>> createJavaPeer(jni::JNIEnv&); - -protected: - - // Raw reference to the light - mbgl::style::Light& light; - - // Map is set when the light is retrieved - mbgl::Map* map; -}; -} // namespace android -} // namespace mbgl
\ No newline at end of file diff --git a/platform/android/src/style/position.cpp b/platform/android/src/style/position.cpp deleted file mode 100644 index 326310be07..0000000000 --- a/platform/android/src/style/position.cpp +++ /dev/null @@ -1,35 +0,0 @@ -#include "position.hpp" - -namespace mbgl { -namespace android { - -jni::Local<jni::Object<Position>> Position::fromPosition(jni::JNIEnv& env, jfloat radialCoordinate, jfloat azimuthalAngle, jfloat polarAngle) { - static auto& javaClass = jni::Class<Position>::Singleton(env); - static auto method = javaClass.GetStaticMethod<jni::Object<Position> (jfloat, jfloat, jfloat)>(env, "fromPosition"); - return javaClass.Call(env, method, radialCoordinate, azimuthalAngle, polarAngle); -} - -void Position::registerNative(jni::JNIEnv& env) { - jni::Class<Position>::Singleton(env); -} - -float Position::getRadialCoordinate(jni::JNIEnv& env, const jni::Object<Position>& position) { - static auto& javaClass = jni::Class<Position>::Singleton(env); - static auto field = javaClass.GetField<jfloat>(env, "radialCoordinate"); - return position.Get(env, field); -} - -float Position::getAzimuthalAngle(jni::JNIEnv& env, const jni::Object<Position>& position) { - static auto& javaClass = jni::Class<Position>::Singleton(env); - static auto field = javaClass.GetField<jfloat>(env, "azimuthalAngle"); - return position.Get(env, field); -} - -float Position::getPolarAngle(jni::JNIEnv& env, const jni::Object<Position>& position) { - static auto& javaClass = jni::Class<Position>::Singleton(env); - static auto field = javaClass.GetField<jfloat>(env, "polarAngle"); - return position.Get(env, field); -} - -} // namespace android -} // namespace mbgl
\ No newline at end of file diff --git a/platform/android/src/style/position.hpp b/platform/android/src/style/position.hpp deleted file mode 100644 index eb4f5ac674..0000000000 --- a/platform/android/src/style/position.hpp +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once - -#include <mbgl/util/noncopyable.hpp> - -#include <jni/jni.hpp> - -namespace mbgl { -namespace android { - -class Position : private mbgl::util::noncopyable { -public: - static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/light/Position"; }; - - static jni::Local<jni::Object<Position>> fromPosition(jni::JNIEnv&, jfloat, jfloat, jfloat); - - static void registerNative(jni::JNIEnv&); - - static float getRadialCoordinate(jni::JNIEnv&, const jni::Object<Position>&); - static float getAzimuthalAngle(jni::JNIEnv&, const jni::Object<Position>&); - static float getPolarAngle(jni::JNIEnv&, const jni::Object<Position>&); -}; - -} // namespace android -} // namespace mbgl
\ No newline at end of file diff --git a/platform/android/src/style/sources/custom_geometry_source.cpp b/platform/android/src/style/sources/custom_geometry_source.cpp deleted file mode 100644 index 0d96a09916..0000000000 --- a/platform/android/src/style/sources/custom_geometry_source.cpp +++ /dev/null @@ -1,209 +0,0 @@ -#include "custom_geometry_source.hpp" -#include "../../attach_env.hpp" - -#include <mbgl/renderer/query.hpp> - -// Java -> C++ conversion -#include "../android_conversion.hpp" -#include "../conversion/filter.hpp" - -// C++ -> Java conversion -#include "../../conversion/conversion.hpp" -#include "../../conversion/collection.hpp" -#include "../../geojson/feature.hpp" -#include <mbgl/style/conversion/custom_geometry_source_options.hpp> - -#include <string> - -namespace mbgl { -namespace android { - - // This conversion is expected not to fail because it's used only in contexts where - // the value was originally a CustomGeometrySourceOptions object on the Java side. If it fails - // to convert, it's a bug in our serialization or Java-side static typing. - static style::CustomGeometrySource::Options convertCustomGeometrySourceOptions(jni::JNIEnv& env, - const jni::Object<>& options, - style::TileFunction fetchFn, - style::TileFunction cancelFn) { - using namespace mbgl::style::conversion; - if (!options) { - return style::CustomGeometrySource::Options(); - } - Error error; - optional<style::CustomGeometrySource::Options> result = convert<style::CustomGeometrySource::Options>(Value(env, options), error); - if (!result) { - throw std::logic_error(error.message); - } - result->fetchTileFunction = fetchFn; - result->cancelTileFunction = cancelFn; - return *result; - } - - CustomGeometrySource::CustomGeometrySource(jni::JNIEnv& env, - const jni::String& sourceId, - const jni::Object<>& options) - : Source(env, std::make_unique<mbgl::style::CustomGeometrySource>( - jni::Make<std::string>(env, sourceId), - convertCustomGeometrySourceOptions(env, options, - std::bind(&CustomGeometrySource::fetchTile, this, std::placeholders::_1), - std::bind(&CustomGeometrySource::cancelTile, this, std::placeholders::_1)))) { - } - - CustomGeometrySource::CustomGeometrySource(jni::JNIEnv& env, - mbgl::style::Source& coreSource, - AndroidRendererFrontend* frontend) - : Source(env, coreSource, createJavaPeer(env), frontend) {} - - CustomGeometrySource::~CustomGeometrySource() { - releaseThreads(); - } - - void CustomGeometrySource::fetchTile (const mbgl::CanonicalTileID& tileID) { - android::UniqueEnv _env = android::AttachEnv(); - - static auto& javaClass = jni::Class<CustomGeometrySource>::Singleton(*_env); - static auto fetchTile = javaClass.GetMethod<void (jni::jint, jni::jint, jni::jint)>(*_env, "fetchTile"); - - // The source is removed on the main thread, but it still exists on the Render thread until the frame is complete. - // This might cause fetchTile/cancelTile invocations when the Java thread is shutting down and the peer has already been released. - // See https://github.com/mapbox/mapbox-gl-native/issues/12551. - if(!javaPeer) { - return; - } - - auto peer = jni::Cast(*_env, javaClass, javaPeer); - peer.Call(*_env, fetchTile, (int)tileID.z, (int)tileID.x, (int)tileID.y); - }; - - void CustomGeometrySource::cancelTile(const mbgl::CanonicalTileID& tileID) { - android::UniqueEnv _env = android::AttachEnv(); - - static auto& javaClass = jni::Class<CustomGeometrySource>::Singleton(*_env); - static auto cancelTile = javaClass.GetMethod<void (jni::jint, jni::jint, jni::jint)>(*_env, "cancelTile"); - - // The source is removed on the main thread, but it still exists on the Render thread until the frame is complete. - // This might cause fetchTile/cancelTile invocations when the Java thread is shutting down and the peer has already been released. - // See https://github.com/mapbox/mapbox-gl-native/issues/12551. - if(!javaPeer) { - return; - } - - auto peer = jni::Cast(*_env, javaClass, javaPeer); - peer.Call(*_env, cancelTile, (int)tileID.z, (int)tileID.x, (int)tileID.y); - }; - - void CustomGeometrySource::startThreads() { - android::UniqueEnv _env = android::AttachEnv(); - - static auto& javaClass = jni::Class<CustomGeometrySource>::Singleton(*_env); - static auto startThreads = javaClass.GetMethod<void ()>(*_env, "startThreads"); - - assert(javaPeer); - - auto peer = jni::Cast(*_env, javaClass, javaPeer); - peer.Call(*_env, startThreads); - } - - void CustomGeometrySource::releaseThreads() { - android::UniqueEnv _env = android::AttachEnv(); - - static auto& javaClass = jni::Class<CustomGeometrySource>::Singleton(*_env); - static auto releaseThreads = javaClass.GetMethod<void ()>(*_env, "releaseThreads"); - - assert(javaPeer); - - auto peer = jni::Cast(*_env, javaClass, javaPeer); - peer.Call(*_env, releaseThreads); - }; - - bool CustomGeometrySource::isCancelled(jni::jint z, - jni::jint x, - jni::jint y) { - android::UniqueEnv _env = android::AttachEnv(); - - static auto& javaClass = jni::Class<CustomGeometrySource>::Singleton(*_env); - static auto isCancelled = javaClass.GetMethod<jboolean (jni::jint, jni::jint, jni::jint)>(*_env, "isCancelled"); - - assert(javaPeer); - - auto peer = jni::Cast(*_env, javaClass, javaPeer); - return peer.Call(*_env, isCancelled, z, x, y); - }; - - void CustomGeometrySource::setTileData(jni::JNIEnv& env, - jni::jint z, - jni::jint x, - jni::jint y, - const jni::Object<geojson::FeatureCollection>& jFeatures) { - using namespace mbgl::android::geojson; - - // Convert the jni object - auto geometry = geojson::FeatureCollection::convert(env, jFeatures); - - // Update the core source if not cancelled - if (!isCancelled(z, x ,y)) { - source.as<mbgl::style::CustomGeometrySource>()->CustomGeometrySource::setTileData(CanonicalTileID(z, x, y), GeoJSON(geometry)); - } - } - - void CustomGeometrySource::invalidateTile(jni::JNIEnv&, jni::jint z, jni::jint x, jni::jint y) { - source.as<mbgl::style::CustomGeometrySource>()->CustomGeometrySource::invalidateTile(CanonicalTileID(z, x, y)); - } - - void CustomGeometrySource::invalidateBounds(jni::JNIEnv& env, const jni::Object<LatLngBounds>& jBounds) { - auto bounds = LatLngBounds::getLatLngBounds(env, jBounds); - source.as<mbgl::style::CustomGeometrySource>()->CustomGeometrySource::invalidateRegion(bounds); - } - - jni::Local<jni::Array<jni::Object<geojson::Feature>>> CustomGeometrySource::querySourceFeatures(jni::JNIEnv& env, - const jni::Array<jni::Object<>>& jfilter) { - using namespace mbgl::android::conversion; - using namespace mbgl::android::geojson; - - std::vector<mbgl::Feature> features; - if (rendererFrontend) { - features = rendererFrontend->querySourceFeatures(source.getID(), { {}, toFilter(env, jfilter) }); - } - return Feature::convert(env, features); - } - - jni::Local<jni::Object<Source>> CustomGeometrySource::createJavaPeer(jni::JNIEnv& env) { - static auto& javaClass = jni::Class<CustomGeometrySource>::Singleton(env); - static auto constructor = javaClass.GetConstructor<jni::jlong>(env); - return javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(this)); - } - - void CustomGeometrySource::addToMap(JNIEnv& env, const jni::Object<Source>& obj, mbgl::Map& map, AndroidRendererFrontend& frontend) { - Source::addToMap(env, obj, map, frontend); - startThreads(); - } - - bool CustomGeometrySource::removeFromMap(JNIEnv& env, const jni::Object<Source>& source, mbgl::Map& map) { - bool successfullyRemoved = Source::removeFromMap(env, source, map); - if (successfullyRemoved) { - releaseThreads(); - } - return successfullyRemoved; - } - - void CustomGeometrySource::registerNative(jni::JNIEnv& env) { - // Lookup the class - static auto& javaClass = jni::Class<CustomGeometrySource>::Singleton(env); - - #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) - - // Register the peer - jni::RegisterNativePeer<CustomGeometrySource>( - env, javaClass, "nativePtr", - jni::MakePeer<CustomGeometrySource, const jni::String&, const jni::Object<>&>, - "initialize", - "finalize", - METHOD(&CustomGeometrySource::querySourceFeatures, "querySourceFeatures"), - METHOD(&CustomGeometrySource::setTileData, "nativeSetTileData"), - METHOD(&CustomGeometrySource::invalidateTile, "nativeInvalidateTile"), - METHOD(&CustomGeometrySource::invalidateBounds, "nativeInvalidateBounds") - ); - } - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/sources/custom_geometry_source.hpp b/platform/android/src/style/sources/custom_geometry_source.hpp deleted file mode 100644 index 6979ecc25d..0000000000 --- a/platform/android/src/style/sources/custom_geometry_source.hpp +++ /dev/null @@ -1,50 +0,0 @@ -#pragma once - -#include "source.hpp" -#include <mbgl/style/sources/custom_geometry_source.hpp> -#include <mbgl/util/geojson.hpp> -#include <mbgl/tile/tile_id.hpp> -#include "../../geojson/geometry.hpp" -#include "../../geojson/feature.hpp" -#include "../../geojson/feature_collection.hpp" -#include "../../geometry/lat_lng_bounds.hpp" -#include <jni/jni.hpp> - -namespace mbgl { -namespace android { - -class CustomGeometrySource : public Source { -public: - using SuperTag = Source; - static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/sources/CustomGeometrySource"; }; - - static void registerNative(jni::JNIEnv&); - - CustomGeometrySource(jni::JNIEnv&, const jni::String&, const jni::Object<>&); - CustomGeometrySource(jni::JNIEnv&, mbgl::style::Source&, AndroidRendererFrontend*); - ~CustomGeometrySource(); - - bool removeFromMap(JNIEnv&, const jni::Object<Source>&, mbgl::Map&) override; - void addToMap(JNIEnv&, const jni::Object<Source>&, mbgl::Map&, AndroidRendererFrontend&) override; - - void fetchTile(const mbgl::CanonicalTileID& tileID); - void cancelTile(const mbgl::CanonicalTileID& tileID); - bool isCancelled(jni::jint z, jni::jint x, jni::jint y); - void startThreads(); - void releaseThreads(); - -private: - void setTileData(jni::JNIEnv& env, jni::jint z, jni::jint x, jni::jint y, const jni::Object<geojson::FeatureCollection>& jf); - - void invalidateTile(jni::JNIEnv& env, jni::jint z, jni::jint x, jni::jint y); - void invalidateBounds(jni::JNIEnv& env, const jni::Object<LatLngBounds>& bounds); - - jni::Local<jni::Array<jni::Object<geojson::Feature>>> querySourceFeatures(jni::JNIEnv&, - const jni::Array<jni::Object<>>& ); - - jni::Local<jni::Object<Source>> createJavaPeer(jni::JNIEnv&); - -}; // class CustomGeometrySource - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/sources/geojson_source.cpp b/platform/android/src/style/sources/geojson_source.cpp deleted file mode 100644 index 0a287eb6da..0000000000 --- a/platform/android/src/style/sources/geojson_source.cpp +++ /dev/null @@ -1,259 +0,0 @@ -#include "geojson_source.hpp" -#include <mbgl/style/sources/geojson_source_impl.hpp> -#include "../../attach_env.hpp" - -#include <mbgl/renderer/query.hpp> - -// Java -> C++ conversion -#include "../android_conversion.hpp" -#include "../conversion/filter.hpp" -#include <mbgl/style/conversion/geojson.hpp> -#include <mbgl/style/conversion/geojson_options.hpp> -#include <mbgl/style/conversion_impl.hpp> - -// C++ -> Java conversion -#include "../../conversion/conversion.hpp" -#include "../../conversion/collection.hpp" -#include "../../geojson/feature.hpp" -#include "../conversion/url_or_tileset.hpp" - -#include <string> - -// GeoJSONSource uses a "coalescing" model for high frequency asynchronous data update calls, -// which in practice means, that any update that started processing is going to finish -// and the last scheduled update is going to finish as well. Any updates scheduled during processing can be canceled. -// Conversion from Java features to core ones is done on a worker thread and once finished, -// the ownership of the converted features is returned to the calling thread. -namespace mbgl { -namespace android { - - // This conversion is expected not to fail because it's used only in contexts where - // the value was originally a GeoJsonOptions object on the Java side. If it fails - // to convert, it's a bug in our serialization or Java-side static typing. -static Immutable<style::GeoJSONOptions> convertGeoJSONOptions(jni::JNIEnv& env, const jni::Object<>& options) { - using namespace mbgl::style::conversion; - if (!options) { - return style::GeoJSONOptions::defaultOptions(); - } - Error error; - optional<style::GeoJSONOptions> result = convert<style::GeoJSONOptions>(mbgl::android::Value(env, options), error); - if (!result) { - throw std::logic_error(error.message); - } - return makeMutable<style::GeoJSONOptions>(std::move(*result)); -} - -GeoJSONSource::GeoJSONSource(jni::JNIEnv& env, const jni::String& sourceId, const jni::Object<>& options) - : Source(env, - std::make_unique<mbgl::style::GeoJSONSource>(jni::Make<std::string>(env, sourceId), - convertGeoJSONOptions(env, options))), - converter(std::make_unique<Actor<FeatureConverter>>(Scheduler::GetBackground(), - source.as<style::GeoJSONSource>()->impl().getOptions())) {} - -GeoJSONSource::GeoJSONSource(jni::JNIEnv& env, mbgl::style::Source& coreSource, AndroidRendererFrontend* frontend) - : Source(env, coreSource, createJavaPeer(env), frontend), - converter(std::make_unique<Actor<FeatureConverter>>(Scheduler::GetBackground(), - source.as<style::GeoJSONSource>()->impl().getOptions())) {} - -GeoJSONSource::~GeoJSONSource() = default; - -void GeoJSONSource::setGeoJSONString(jni::JNIEnv& env, const jni::String& jString) { - std::shared_ptr<std::string> json = std::make_shared<std::string>(jni::Make<std::string>(env, jString)); - - Update::Converter converterFn = [this, json](ActorRef<GeoJSONDataCallback> _callback) { - converter->self().invoke(&FeatureConverter::convertJson, json, _callback); - }; - - setAsync(converterFn); -} - - void GeoJSONSource::setFeatureCollection(jni::JNIEnv& env, const jni::Object<geojson::FeatureCollection>& jFeatures) { - setCollectionAsync(env, jFeatures); - } - - void GeoJSONSource::setFeature(jni::JNIEnv& env, const jni::Object<geojson::Feature>& jFeature) { - setCollectionAsync(env, jFeature); - } - - void GeoJSONSource::setGeometry(jni::JNIEnv& env, const jni::Object<geojson::Geometry>& jGeometry) { - setCollectionAsync(env, jGeometry); - } - - void GeoJSONSource::setURL(jni::JNIEnv& env, const jni::String& url) { - // Update the core source - source.as<style::GeoJSONSource>()->setURL(jni::Make<std::string>(env, url)); - } - - jni::Local<jni::String> GeoJSONSource::getURL(jni::JNIEnv& env) { - optional<std::string> url = source.as<style::GeoJSONSource>()->getURL(); - return url ? jni::Make<jni::String>(env, *url) : jni::Local<jni::String>(); - } - - jni::Local<jni::Array<jni::Object<geojson::Feature>>> GeoJSONSource::querySourceFeatures(jni::JNIEnv& env, - const jni::Array<jni::Object<>>& jfilter) { - using namespace mbgl::android::conversion; - using namespace mbgl::android::geojson; - - std::vector<mbgl::Feature> features; - if (rendererFrontend) { - features = rendererFrontend->querySourceFeatures(source.getID(), - { {}, toFilter(env, jfilter) }); - } - return Feature::convert(env, features); - } - - jni::Local<jni::Array<jni::Object<geojson::Feature>>> GeoJSONSource::getClusterChildren(jni::JNIEnv& env, const jni::Object<geojson::Feature>& feature) { - using namespace mbgl::android::conversion; - using namespace mbgl::android::geojson; - - if (rendererFrontend) { - mbgl::Feature _feature = Feature::convert(env, feature); - _feature.properties["cluster_id"] = static_cast<uint64_t>(_feature.properties["cluster_id"].get<double>()); - const auto featureExtension = rendererFrontend->queryFeatureExtensions(source.getID(), _feature, "supercluster", "children", {}); - if (featureExtension.is<mbgl::FeatureCollection>()) { - return Feature::convert(env, featureExtension.get<mbgl::FeatureCollection>()); - } - } - return jni::Array<jni::Object<Feature>>::New(env, 0); - } - - jni::Local<jni::Array<jni::Object<geojson::Feature>>> GeoJSONSource::getClusterLeaves(jni::JNIEnv& env, const jni::Object<geojson::Feature>& feature, jni::jlong limit, jni::jlong offset) { - using namespace mbgl::android::conversion; - using namespace mbgl::android::geojson; - - if (rendererFrontend) { - mbgl::Feature _feature = Feature::convert(env, feature); - _feature.properties["cluster_id"] = static_cast<uint64_t>(_feature.properties["cluster_id"].get<double>()); - const std::map<std::string, mbgl::Value> options = { {"limit", static_cast<uint64_t>(limit)}, - {"offset", static_cast<uint64_t>(offset)} }; - auto featureExtension = rendererFrontend->queryFeatureExtensions(source.getID(), _feature, "supercluster", "leaves", options); - if (featureExtension.is<mbgl::FeatureCollection>()) { - return Feature::convert(env, featureExtension.get<mbgl::FeatureCollection>()); - } - } - return jni::Array<jni::Object<Feature>>::New(env, 0);; - } - - jint GeoJSONSource::getClusterExpansionZoom(jni::JNIEnv& env, const jni::Object<geojson::Feature>& feature) { - using namespace mbgl::android::conversion; - using namespace mbgl::android::geojson; - - if (rendererFrontend) { - mbgl::Feature _feature = Feature::convert(env, feature); - _feature.properties["cluster_id"] = static_cast<uint64_t>(_feature.properties["cluster_id"].get<double>()); - auto featureExtension = rendererFrontend->queryFeatureExtensions(source.getID(), _feature, "supercluster", "expansion-zoom", {}); - if (featureExtension.is<mbgl::Value>()) { - auto value = featureExtension.get<mbgl::Value>(); - if (value.is<uint64_t>()) { - return value.get<uint64_t>(); - } - } - } - return 0; - } - - jni::Local<jni::Object<Source>> GeoJSONSource::createJavaPeer(jni::JNIEnv& env) { - static auto& javaClass = jni::Class<GeoJSONSource>::Singleton(env); - static auto constructor = javaClass.GetConstructor<jni::jlong>(env); - return javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(this)); - } - - template <class JNIType> - void GeoJSONSource::setCollectionAsync(jni::JNIEnv& env, const jni::Object<JNIType>& jObject) { - auto global = jni::NewGlobal<jni::EnvAttachingDeleter>(env, jObject); - auto object = std::make_shared<decltype(global)>(std::move(global)); - - Update::Converter converterFn = [this, object](ActorRef<GeoJSONDataCallback> _callback) { - converter->self().invoke(&FeatureConverter::convertObject<JNIType>, object, _callback); - }; - - setAsync(converterFn); - } - - void GeoJSONSource::setAsync(Update::Converter converterFn) { - awaitingUpdate = std::make_unique<Update>( - std::move(converterFn), - std::make_unique<Actor<GeoJSONDataCallback>>( - *Scheduler::GetCurrent(), [this](std::shared_ptr<style::GeoJSONData> geoJSONData) { - // conversion from Java features to core ones finished - android::UniqueEnv _env = android::AttachEnv(); - - // Update the core source - source.as<mbgl::style::GeoJSONSource>()->setGeoJSONData(std::move(geoJSONData)); - - // if there is an awaiting update, execute it, otherwise, release resources - if (awaitingUpdate) { - update = std::move(awaitingUpdate); - update->converterFn(update->callback->self()); - } else { - update.reset(); - } - })); - - // If another update is running, wait - if (update) { - return; - } - - // no updates are being processed, execute this one - update = std::move(awaitingUpdate); - update->converterFn(update->callback->self()); - } - - void GeoJSONSource::registerNative(jni::JNIEnv& env) { - // Lookup the class - static auto& javaClass = jni::Class<GeoJSONSource>::Singleton(env); - - #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) - - // Register the peer - jni::RegisterNativePeer<GeoJSONSource>( - env, javaClass, "nativePtr", - jni::MakePeer<GeoJSONSource, const jni::String&, const jni::Object<>&>, - "initialize", - "finalize", - METHOD(&GeoJSONSource::setGeoJSONString, "nativeSetGeoJsonString"), - METHOD(&GeoJSONSource::setFeatureCollection, "nativeSetFeatureCollection"), - METHOD(&GeoJSONSource::setFeature, "nativeSetFeature"), - METHOD(&GeoJSONSource::setGeometry, "nativeSetGeometry"), - METHOD(&GeoJSONSource::setURL, "nativeSetUrl"), - METHOD(&GeoJSONSource::getURL, "nativeGetUrl"), - METHOD(&GeoJSONSource::querySourceFeatures, "querySourceFeatures"), - METHOD(&GeoJSONSource::getClusterChildren, "nativeGetClusterChildren"), - METHOD(&GeoJSONSource::getClusterLeaves, "nativeGetClusterLeaves"), - METHOD(&GeoJSONSource::getClusterExpansionZoom, "nativeGetClusterExpansionZoom") - ); - } - - void FeatureConverter::convertJson(std::shared_ptr<std::string> json, ActorRef<GeoJSONDataCallback> callback) { - using namespace mbgl::style::conversion; - - android::UniqueEnv _env = android::AttachEnv(); - // Convert the jni object - Error error; - optional<GeoJSON> converted = parseGeoJSON(*json, error); - if(!converted) { - mbgl::Log::Error(mbgl::Event::JNI, "Error setting geo json: " + error.message); - return; - } - - callback.invoke(&GeoJSONDataCallback::operator(), style::GeoJSONData::create(*converted, options)); - } - - template <class JNIType> - void FeatureConverter::convertObject( - std::shared_ptr<jni::Global<jni::Object<JNIType>, jni::EnvAttachingDeleter>> jObject, - ActorRef<GeoJSONDataCallback> callback) { - using namespace mbgl::android::geojson; - - android::UniqueEnv _env = android::AttachEnv(); - // Convert the jni object - auto geometry = JNIType::convert(*_env, *jObject); - callback.invoke(&GeoJSONDataCallback::operator(), style::GeoJSONData::create(geometry, options)); - } - - Update::Update(Converter _converterFn, std::unique_ptr<Actor<GeoJSONDataCallback>> _callback) - : converterFn(std::move(_converterFn)), callback(std::move(_callback)) {} - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/sources/geojson_source.hpp b/platform/android/src/style/sources/geojson_source.hpp deleted file mode 100644 index c7ef6e54de..0000000000 --- a/platform/android/src/style/sources/geojson_source.hpp +++ /dev/null @@ -1,79 +0,0 @@ -#pragma once - -#include "source.hpp" -#include <mbgl/style/sources/geojson_source.hpp> -#include "../../geojson/geometry.hpp" -#include "../../geojson/feature.hpp" -#include "../../geojson/feature_collection.hpp" -#include "../../android_renderer_frontend.hpp" -#include <jni/jni.hpp> - -namespace mbgl { -namespace android { - -using GeoJSONDataCallback = std::function<void(std::shared_ptr<style::GeoJSONData>)>; - -class FeatureConverter { -public: - explicit FeatureConverter(Immutable<style::GeoJSONOptions> options_) : options(std::move(options_)) {} - void convertJson(std::shared_ptr<std::string>, ActorRef<GeoJSONDataCallback>); - - template <class JNIType> - void convertObject(std::shared_ptr<jni::Global<jni::Object<JNIType>, jni::EnvAttachingDeleter>>, - ActorRef<GeoJSONDataCallback>); - -private: - Immutable<style::GeoJSONOptions> options; -}; - -struct Update { - using Converter = std::function<void(ActorRef<GeoJSONDataCallback>)>; - Converter converterFn; - - std::unique_ptr<Actor<GeoJSONDataCallback>> callback; - - Update(Converter, std::unique_ptr<Actor<GeoJSONDataCallback>>); -}; - -class GeoJSONSource : public Source { -public: - using SuperTag = Source; - static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/sources/GeoJsonSource"; }; - - static void registerNative(jni::JNIEnv&); - - GeoJSONSource(jni::JNIEnv&, const jni::String&, const jni::Object<>&); - GeoJSONSource(jni::JNIEnv&, mbgl::style::Source&, AndroidRendererFrontend*); - ~GeoJSONSource(); - -private: - void setGeoJSONString(jni::JNIEnv&, const jni::String&); - void setFeatureCollection(jni::JNIEnv&, const jni::Object<geojson::FeatureCollection>&); - void setFeature(jni::JNIEnv&, const jni::Object<geojson::Feature>&); - void setGeometry(jni::JNIEnv&, const jni::Object<geojson::Geometry>&); - void setURL(jni::JNIEnv&, const jni::String&); - - jni::Local<jni::Array<jni::Object<geojson::Feature>>> querySourceFeatures(jni::JNIEnv&, - const jni::Array<jni::Object<>>&); - - jni::Local<jni::Array<jni::Object<geojson::Feature>>> getClusterChildren(jni::JNIEnv&, const jni::Object<geojson::Feature>&); - jni::Local<jni::Array<jni::Object<geojson::Feature>>> getClusterLeaves(jni::JNIEnv&, const jni::Object<geojson::Feature>&, jni::jlong, jni::jlong); - jint getClusterExpansionZoom(jni::JNIEnv&, const jni::Object<geojson::Feature>&); - - jni::Local<jni::String> getURL(jni::JNIEnv&); - - jni::Local<jni::Object<Source>> createJavaPeer(jni::JNIEnv&); - std::unique_ptr<Update> awaitingUpdate; - std::unique_ptr<Update> update; - std::shared_ptr<ThreadPool> threadPool; - std::unique_ptr<Actor<FeatureConverter>> converter; - - template <class JNIType> - void setCollectionAsync(jni::JNIEnv&, const jni::Object<JNIType>&); - - void setAsync(Update::Converter); - -}; // class GeoJSONSource - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/sources/image_source.cpp b/platform/android/src/style/sources/image_source.cpp deleted file mode 100644 index 448ecd2160..0000000000 --- a/platform/android/src/style/sources/image_source.cpp +++ /dev/null @@ -1,76 +0,0 @@ -#include "image_source.hpp" - -// Java -> C++ conversion -#include "../android_conversion.hpp" - -// C++ -> Java conversion -#include "../../conversion/conversion.hpp" -#include <mbgl/style/conversion_impl.hpp> -#include <mbgl/util/premultiply.hpp> - -#include "../../bitmap.hpp" -#include <string> -#include <array> - -namespace mbgl { -namespace android { - - ImageSource::ImageSource(jni::JNIEnv& env, const jni::String& sourceId, const jni::Object<LatLngQuad>& coordinatesObject) - : Source(env, std::make_unique<mbgl::style::ImageSource>( - jni::Make<std::string>(env, sourceId), - LatLngQuad::getLatLngArray(env, coordinatesObject) - ) - ) { - } - - ImageSource::ImageSource(jni::JNIEnv& env, mbgl::style::Source& coreSource, AndroidRendererFrontend* frontend) - : Source(env, coreSource, createJavaPeer(env), frontend) {} - - ImageSource::~ImageSource() = default; - - void ImageSource::setURL(jni::JNIEnv& env, const jni::String& url) { - // Update the core source - source.as<mbgl::style::ImageSource>()->ImageSource::setURL(jni::Make<std::string>(env, url)); - } - - jni::Local<jni::String> ImageSource::getURL(jni::JNIEnv& env) { - optional<std::string> url = source.as<mbgl::style::ImageSource>()->ImageSource::getURL(); - return url ? jni::Make<jni::String>(env, *url) : jni::Local<jni::String>(); - } - - void ImageSource::setImage(jni::JNIEnv& env, const jni::Object<Bitmap>& bitmap) { - source.as<mbgl::style::ImageSource>()->setImage(Bitmap::GetImage(env, bitmap)); - } - - void ImageSource::setCoordinates(jni::JNIEnv& env, const jni::Object<LatLngQuad>& coordinatesObject) { - source.as<mbgl::style::ImageSource>()->setCoordinates( - LatLngQuad::getLatLngArray(env, coordinatesObject)); - } - - jni::Local<jni::Object<Source>> ImageSource::createJavaPeer(jni::JNIEnv& env) { - static auto& javaClass = jni::Class<ImageSource>::Singleton(env); - static auto constructor = javaClass.GetConstructor<jni::jlong>(env); - return javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(this)); - } - - void ImageSource::registerNative(jni::JNIEnv& env) { - // Lookup the class - static auto& javaClass = jni::Class<ImageSource>::Singleton(env); - - #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) - - // Register the peer - jni::RegisterNativePeer<ImageSource>( - env, javaClass, "nativePtr", - jni::MakePeer<ImageSource, const jni::String&, const jni::Object<LatLngQuad>&>, - "initialize", - "finalize", - METHOD(&ImageSource::setURL, "nativeSetUrl"), - METHOD(&ImageSource::getURL, "nativeGetUrl"), - METHOD(&ImageSource::setImage, "nativeSetImage"), - METHOD(&ImageSource::setCoordinates, "nativeSetCoordinates") - ); - } - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/sources/image_source.hpp b/platform/android/src/style/sources/image_source.hpp deleted file mode 100644 index da88feac74..0000000000 --- a/platform/android/src/style/sources/image_source.hpp +++ /dev/null @@ -1,39 +0,0 @@ -#pragma once - -#include "source.hpp" -#include "../../geometry/lat_lng_quad.hpp" -#include <mbgl/style/sources/image_source.hpp> -#include <jni/jni.hpp> - -namespace mbgl { -namespace android { - -class Bitmap; - -class ImageSource : public Source { -public: - using SuperTag = Source; - static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/sources/ImageSource"; }; - - static void registerNative(jni::JNIEnv&); - - ImageSource(jni::JNIEnv&, const jni::String&, const jni::Object<LatLngQuad>&); - - ImageSource(jni::JNIEnv&, mbgl::style::Source&, AndroidRendererFrontend*); - - ~ImageSource(); - - void setURL(jni::JNIEnv&, const jni::String&); - jni::Local<jni::String> getURL(jni::JNIEnv&); - - void setImage(jni::JNIEnv&, const jni::Object<Bitmap>&); - - void setCoordinates(jni::JNIEnv&, const jni::Object<LatLngQuad>&); - -private: - jni::Local<jni::Object<Source>> createJavaPeer(jni::JNIEnv&); - -}; // class ImageSource - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/sources/raster_dem_source.cpp b/platform/android/src/style/sources/raster_dem_source.cpp deleted file mode 100644 index a33e002598..0000000000 --- a/platform/android/src/style/sources/raster_dem_source.cpp +++ /dev/null @@ -1,61 +0,0 @@ -#include "raster_dem_source.hpp" - -#include "../android_conversion.hpp" -#include "../value.hpp" -#include "../conversion/url_or_tileset.hpp" -#include "source.hpp" - -#include <mbgl/util/variant.hpp> - -#include <string> - -namespace mbgl { -namespace android { - - RasterDEMSource::RasterDEMSource(jni::JNIEnv& env, const jni::String& sourceId, const jni::Object<>& urlOrTileSet, jni::jint tileSize) - : Source( - env, - std::make_unique<mbgl::style::RasterDEMSource>( - jni::Make<std::string>(env, sourceId), - convertURLOrTileset(Value(env, urlOrTileSet)), - tileSize - ) - ) { - } - - RasterDEMSource::RasterDEMSource(jni::JNIEnv& env, - mbgl::style::Source& coreSource, - AndroidRendererFrontend* frontend) - : Source(env, coreSource, createJavaPeer(env), frontend) {} - - RasterDEMSource::~RasterDEMSource() = default; - - jni::Local<jni::String> RasterDEMSource::getURL(jni::JNIEnv& env) { - optional<std::string> url = source.as<mbgl::style::RasterDEMSource>()->RasterDEMSource::getURL(); - return url ? jni::Make<jni::String>(env, *url) : jni::Local<jni::String>(); - } - - jni::Local<jni::Object<Source>> RasterDEMSource::createJavaPeer(jni::JNIEnv& env) { - static auto& javaClass = jni::Class<RasterDEMSource>::Singleton(env); - static auto constructor = javaClass.GetConstructor<jni::jlong>(env); - return javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(this)); - } - - void RasterDEMSource::registerNative(jni::JNIEnv& env) { - // Lookup the class - static auto& javaClass = jni::Class<RasterDEMSource>::Singleton(env); - - #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) - - // Register the peer - jni::RegisterNativePeer<RasterDEMSource>( - env, javaClass, "nativePtr", - jni::MakePeer<RasterDEMSource, const jni::String&, const jni::Object<>&, jni::jint>, - "initialize", - "finalize", - METHOD(&RasterDEMSource::getURL, "nativeGetUrl") - ); - } - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/sources/raster_dem_source.hpp b/platform/android/src/style/sources/raster_dem_source.hpp deleted file mode 100644 index 581e8f8bc6..0000000000 --- a/platform/android/src/style/sources/raster_dem_source.hpp +++ /dev/null @@ -1,29 +0,0 @@ -#pragma once - -#include "source.hpp" -#include <mbgl/style/sources/raster_dem_source.hpp> -#include <jni/jni.hpp> - -namespace mbgl { -namespace android { - -class RasterDEMSource : public Source { -public: - using SuperTag = Source; - static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/sources/RasterDemSource"; }; - - static void registerNative(jni::JNIEnv&); - - RasterDEMSource(jni::JNIEnv&, const jni::String&, const jni::Object<>&, jni::jint); - RasterDEMSource(jni::JNIEnv&, mbgl::style::Source&, AndroidRendererFrontend*); - ~RasterDEMSource(); - - jni::Local<jni::String> getURL(jni::JNIEnv&); - -private: - jni::Local<jni::Object<Source>> createJavaPeer(jni::JNIEnv&); - -}; // class RasterDEMSource - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/sources/raster_source.cpp b/platform/android/src/style/sources/raster_source.cpp deleted file mode 100644 index 67603e74cd..0000000000 --- a/platform/android/src/style/sources/raster_source.cpp +++ /dev/null @@ -1,58 +0,0 @@ -#include "raster_source.hpp" - -#include "../android_conversion.hpp" -#include "../value.hpp" -#include "../conversion/url_or_tileset.hpp" - -#include <mbgl/util/variant.hpp> - -#include <string> - -namespace mbgl { -namespace android { - - RasterSource::RasterSource(jni::JNIEnv& env, const jni::String& sourceId, const jni::Object<>& urlOrTileSet, jni::jint tileSize) - : Source( - env, - std::make_unique<mbgl::style::RasterSource>( - jni::Make<std::string>(env, sourceId), - convertURLOrTileset(Value(env, urlOrTileSet)), - tileSize - ) - ) { - } - - RasterSource::RasterSource(jni::JNIEnv& env, mbgl::style::Source& coreSource, AndroidRendererFrontend* frontend) - : Source(env, coreSource, createJavaPeer(env), frontend) {} - - RasterSource::~RasterSource() = default; - - jni::Local<jni::String> RasterSource::getURL(jni::JNIEnv& env) { - optional<std::string> url = source.as<mbgl::style::RasterSource>()->RasterSource::getURL(); - return url ? jni::Make<jni::String>(env, *url) : jni::Local<jni::String>(); - } - - jni::Local<jni::Object<Source>> RasterSource::createJavaPeer(jni::JNIEnv& env) { - static auto& javaClass = jni::Class<RasterSource>::Singleton(env); - static auto constructor = javaClass.GetConstructor<jni::jlong>(env); - return javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(this)); - } - - void RasterSource::registerNative(jni::JNIEnv& env) { - // Lookup the class - static auto& javaClass = jni::Class<RasterSource>::Singleton(env); - - #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) - - // Register the peer - jni::RegisterNativePeer<RasterSource>( - env, javaClass, "nativePtr", - jni::MakePeer<RasterSource, const jni::String&, const jni::Object<>&, jni::jint>, - "initialize", - "finalize", - METHOD(&RasterSource::getURL, "nativeGetUrl") - ); - } - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/sources/raster_source.hpp b/platform/android/src/style/sources/raster_source.hpp deleted file mode 100644 index e1bc5ca7ae..0000000000 --- a/platform/android/src/style/sources/raster_source.hpp +++ /dev/null @@ -1,29 +0,0 @@ -#pragma once - -#include "source.hpp" -#include <mbgl/style/sources/raster_source.hpp> -#include <jni/jni.hpp> - -namespace mbgl { -namespace android { - -class RasterSource : public Source { -public: - using SuperTag = Source; - static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/sources/RasterSource"; }; - - static void registerNative(jni::JNIEnv&); - - RasterSource(jni::JNIEnv&, const jni::String&, const jni::Object<>&, jni::jint); - RasterSource(jni::JNIEnv&, mbgl::style::Source&, AndroidRendererFrontend*); - ~RasterSource(); - - jni::Local<jni::String> getURL(jni::JNIEnv&); - -private: - jni::Local<jni::Object<Source>> createJavaPeer(jni::JNIEnv&); - -}; // class RasterSource - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/sources/unknown_source.cpp b/platform/android/src/style/sources/unknown_source.cpp deleted file mode 100644 index acfd52db8d..0000000000 --- a/platform/android/src/style/sources/unknown_source.cpp +++ /dev/null @@ -1,40 +0,0 @@ -#include "unknown_source.hpp" - -namespace { - - // Dummy initializer (We don't support initializing this from the JVM) - std::unique_ptr<mbgl::android::UnknownSource> init(jni::JNIEnv&) { - throw std::runtime_error("UnknownSource should not be initialized from the JVM"); - } - -} // namespace - -namespace mbgl { -namespace android { - -UnknownSource::UnknownSource(jni::JNIEnv& env, mbgl::style::Source& coreSource, AndroidRendererFrontend* frontend) - : Source(env, coreSource, createJavaPeer(env), frontend) {} - -jni::Local<jni::Object<Source>> UnknownSource::createJavaPeer(jni::JNIEnv& env) { - static auto& javaClass = jni::Class<UnknownSource>::Singleton(env); - static auto constructor = javaClass.GetConstructor<jni::jlong>(env); - return javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(this)); -} - - void UnknownSource::registerNative(jni::JNIEnv& env) { - // Lookup the class - static auto& javaClass = jni::Class<UnknownSource>::Singleton(env); - - #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) - - // Register the peer - jni::RegisterNativePeer<UnknownSource>( - env, javaClass, "nativePtr", - init, - "initialize", - "finalize" - ); - } - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/sources/unknown_source.hpp b/platform/android/src/style/sources/unknown_source.hpp deleted file mode 100644 index ab5a2da82f..0000000000 --- a/platform/android/src/style/sources/unknown_source.hpp +++ /dev/null @@ -1,27 +0,0 @@ -#pragma once - -#include "source.hpp" -#include <mbgl/style/source.hpp> -#include <jni/jni.hpp> - -namespace mbgl { -namespace android { - -class UnknownSource : public Source { -public: - using SuperTag = Source; - static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/sources/UnknownSource"; }; - - static void registerNative(jni::JNIEnv&); - - UnknownSource(jni::JNIEnv&, mbgl::style::Source&, AndroidRendererFrontend*); - - ~UnknownSource() = default; - -private: - jni::Local<jni::Object<Source>> createJavaPeer(jni::JNIEnv&); - -}; // class UnknownSource - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/sources/vector_source.cpp b/platform/android/src/style/sources/vector_source.cpp deleted file mode 100644 index 2be1a78119..0000000000 --- a/platform/android/src/style/sources/vector_source.cpp +++ /dev/null @@ -1,81 +0,0 @@ -#include "vector_source.hpp" - -#include <mbgl/renderer/query.hpp> - -// Java -> C++ conversion -#include "../android_conversion.hpp" -#include "../conversion/filter.hpp" - -// C++ -> Java conversion -#include "../../conversion/conversion.hpp" -#include "../../conversion/collection.hpp" -#include "../../geojson/feature.hpp" -#include "../conversion/url_or_tileset.hpp" - -#include <mbgl/util/variant.hpp> - -#include <string> -#include <vector> - -namespace mbgl { -namespace android { - - VectorSource::VectorSource(jni::JNIEnv& env, const jni::String& sourceId, const jni::Object<>& urlOrTileSet) - : Source( - env, - std::make_unique<mbgl::style::VectorSource>( - jni::Make<std::string>(env, sourceId), - convertURLOrTileset(Value(env, urlOrTileSet)) - ) - ) { - } - - VectorSource::VectorSource(jni::JNIEnv& env, mbgl::style::Source& coreSource, AndroidRendererFrontend* frontend) - : Source(env, coreSource, createJavaPeer(env), frontend) {} - - VectorSource::~VectorSource() = default; - - jni::Local<jni::String> VectorSource::getURL(jni::JNIEnv& env) { - optional<std::string> url = source.as<mbgl::style::VectorSource>()->VectorSource::getURL(); - return url ? jni::Make<jni::String>(env, *url) : jni::Local<jni::String>(); - } - - jni::Local<jni::Array<jni::Object<geojson::Feature>>> VectorSource::querySourceFeatures(jni::JNIEnv& env, - const jni::Array<jni::String>& jSourceLayerIds, - const jni::Array<jni::Object<>>& jfilter) { - using namespace mbgl::android::conversion; - using namespace mbgl::android::geojson; - - std::vector<mbgl::Feature> features; - if (rendererFrontend) { - features = rendererFrontend->querySourceFeatures(source.getID(), - { toVector(env, jSourceLayerIds), toFilter(env, jfilter) }); - } - return Feature::convert(env, features); - } - - jni::Local<jni::Object<Source>> VectorSource::createJavaPeer(jni::JNIEnv& env) { - static auto& javaClass = jni::Class<VectorSource>::Singleton(env); - static auto constructor = javaClass.GetConstructor<jni::jlong>(env); - return javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(this)); - } - - void VectorSource::registerNative(jni::JNIEnv& env) { - // Lookup the class - static auto& javaClass = jni::Class<VectorSource>::Singleton(env); - - #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) - - // Register the peer - jni::RegisterNativePeer<VectorSource>( - env, javaClass, "nativePtr", - jni::MakePeer<VectorSource, const jni::String&, const jni::Object<>&>, - "initialize", - "finalize", - METHOD(&VectorSource::querySourceFeatures, "querySourceFeatures"), - METHOD(&VectorSource::getURL, "nativeGetUrl") - ); - } - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/sources/vector_source.hpp b/platform/android/src/style/sources/vector_source.hpp deleted file mode 100644 index 7ae2e8c9e7..0000000000 --- a/platform/android/src/style/sources/vector_source.hpp +++ /dev/null @@ -1,33 +0,0 @@ -#pragma once - -#include "source.hpp" -#include <mbgl/style/sources/vector_source.hpp> -#include "../../geojson/feature.hpp" -#include <jni/jni.hpp> - -namespace mbgl { -namespace android { - -class VectorSource : public Source { -public: - using SuperTag = Source; - static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/sources/VectorSource"; }; - - static void registerNative(jni::JNIEnv&); - - VectorSource(jni::JNIEnv&, const jni::String&, const jni::Object<>&); - VectorSource(jni::JNIEnv&, mbgl::style::Source&, AndroidRendererFrontend*); - ~VectorSource(); - -private: - jni::Local<jni::Array<jni::Object<geojson::Feature>>> querySourceFeatures(jni::JNIEnv&, const jni::Array<jni::String>&, - const jni::Array<jni::Object<>>& jfilter); - - jni::Local<jni::String> getURL(jni::JNIEnv&); - - jni::Local<jni::Object<Source>> createJavaPeer(jni::JNIEnv&); - -}; // class VectorSource - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/transition_options.cpp b/platform/android/src/style/transition_options.cpp deleted file mode 100644 index d70a04e0d5..0000000000 --- a/platform/android/src/style/transition_options.cpp +++ /dev/null @@ -1,35 +0,0 @@ -#include "transition_options.hpp" - -namespace mbgl { -namespace android { - -jni::Local<jni::Object<TransitionOptions>> TransitionOptions::fromTransitionOptions(jni::JNIEnv& env, jlong duration, jlong delay, jboolean enablePlacementTransitions) { - static auto& javaClass = jni::Class<TransitionOptions>::Singleton(env); - static auto method = javaClass.GetStaticMethod<jni::Object<TransitionOptions> (jlong, jlong, jboolean)>(env, "fromTransitionOptions"); - return javaClass.Call(env, method, duration, delay, enablePlacementTransitions); -} - -long TransitionOptions::getDuration(jni::JNIEnv& env, const jni::Object<TransitionOptions>& transitionOptions) { - static auto& javaClass = jni::Class<TransitionOptions>::Singleton(env); - static auto field = javaClass.GetField<jlong>(env, "duration"); - return transitionOptions.Get(env, field); -} - -long TransitionOptions::getDelay(jni::JNIEnv& env, const jni::Object<TransitionOptions>& transitionOptions) { - static auto& javaClass = jni::Class<TransitionOptions>::Singleton(env); - static auto field = javaClass.GetField<jlong>(env, "delay"); - return transitionOptions.Get(env, field); -} - -bool TransitionOptions::isEnablePlacementTransitions(jni::JNIEnv& env, const jni::Object<mbgl::android::TransitionOptions>& transitionOptions) { - static auto& javaClass = jni::Class<TransitionOptions>::Singleton(env); - static auto field = javaClass.GetField<jboolean >(env, "enablePlacementTransitions"); - return transitionOptions.Get(env, field); -} - -void TransitionOptions::registerNative(jni::JNIEnv& env) { - jni::Class<TransitionOptions>::Singleton(env); -} - -} // 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 deleted file mode 100644 index 58656a9463..0000000000 --- a/platform/android/src/style/transition_options.hpp +++ /dev/null @@ -1,26 +0,0 @@ -#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::Local<jni::Object<TransitionOptions>> fromTransitionOptions(jni::JNIEnv&, jlong duration, jlong delay, jboolean enablePlacementTransitions); - - static long getDuration(jni::JNIEnv&, const jni::Object<TransitionOptions>&); - - static long getDelay(jni::JNIEnv&, const jni::Object<TransitionOptions>&); - - static bool isEnablePlacementTransitions(jni::JNIEnv&, const jni::Object<TransitionOptions>&); - - static void registerNative(jni::JNIEnv&); -}; - -} // namespace android -} // namespace mbgl
\ No newline at end of file diff --git a/platform/android/src/style/value.cpp b/platform/android/src/style/value.cpp deleted file mode 100644 index 2f04840729..0000000000 --- a/platform/android/src/style/value.cpp +++ /dev/null @@ -1,83 +0,0 @@ -#include "value.hpp" - -#include "../java_types.hpp" - -namespace mbgl { -namespace android { - // Instance - - Value::Value(jni::JNIEnv& _env, jni::Local<jni::Object<>> _value) - : env(_env), - value(std::move(_value)) {} - - Value::Value(jni::JNIEnv& _env, const jni::Object<>& _value) - : env(_env), - value(jni::NewLocal(_env, _value)) {} - - bool Value::isNull() const { - return !value; - } - - bool Value::isArray() const { - return jni::IsInstanceOf(env, value.get(), *java::ObjectArray::jclass); - } - - bool Value::isObject() const { - return jni::IsInstanceOf(env, value.get(), *java::Map::jclass); - } - - bool Value::isString() const { - return jni::IsInstanceOf(env, value.get(), *java::String::jclass); - } - - bool Value::isBool() const { - return jni::IsInstanceOf(env, value.get(), *java::Boolean::jclass); - } - - bool Value::isNumber() const { - return jni::IsInstanceOf(env, value.get(), *java::Number::jclass); - } - - std::string Value::toString() const { - return jni::Make<std::string>(env, jni::Cast(env, jni::Class<jni::StringTag>::Singleton(env), value)); - } - - float Value::toFloat() const { - return jni::CallMethod<jni::jfloat>(env, value.get(), *java::Number::floatValueMethodId); - } - - double Value::toDouble() const { - return jni::CallMethod<jni::jdouble>(env, value.get(), *java::Number::doubleValueMethodId); - } - - long Value::toLong() const { - return jni::CallMethod<jni::jlong>(env, value.get(), *java::Number::longValueMethodId); - } - - bool Value::toBool() const { - return jni::CallMethod<jni::jboolean>(env, value.get(), *java::Boolean::booleanValueMethodId); - } - - Value Value::get(const char* key) const { - jni::jobject* member = jni::CallMethod<jni::jobject*>(env, value.get(), *java::Map::getMethodId, jni::Make<jni::String>(env, std::string(key)).get()); - return Value(env, jni::Local<jni::Object<>>(env, member)); - } - - Value Value::keyArray() const{ - jni::jobject* set = jni::CallMethod<jni::jobject*>(env, value.get(), *java::Map::keySetMethodId); - jni::jobject* array = jni::CallMethod<jni::jobject*>(env, set, *java::Set::toArrayMethodId); - return Value(env, jni::Local<jni::Object<>>(env, array)); - } - - int Value::getLength() const { - auto array = (jni::jarray<jni::jobject>*) value.get(); - return jni::GetArrayLength(env, *array); - } - - Value Value::get(const int index) const { - auto array = (jni::jarray<jni::jobject>*) value.get(); - return Value(env, jni::Local<jni::Object<>>(env, jni::GetObjectArrayElement(env, *array, index))); - } -} -} - diff --git a/platform/android/src/style/value.hpp b/platform/android/src/style/value.hpp deleted file mode 100644 index b507c5ed11..0000000000 --- a/platform/android/src/style/value.hpp +++ /dev/null @@ -1,43 +0,0 @@ -#pragma once - -#include <jni/jni.hpp> - -#include <string> - -namespace mbgl { -namespace android { - -class Value { -public: - Value(jni::JNIEnv&, jni::Local<jni::Object<>>); - Value(jni::JNIEnv&, const jni::Object<>&); - - Value(Value&&) = default; - Value& operator=(Value&&) = delete; - - Value(const Value&) = delete; - Value& operator=(const Value&) = delete; - - bool isNull() const; - bool isArray() const; - bool isObject() const; - bool isString() const; - bool isBool() const; - bool isNumber() const; - - std::string toString() const; - float toFloat() const; - double toDouble() const; - long toLong() const; - bool toBool() const; - Value get(const char* key) const; - Value keyArray() const; - int getLength() const; - Value get(const int index ) const; - - jni::JNIEnv& env; - jni::Local<jni::Object<>> value; -}; - -} -} |