// This file is generated. Edit android/platform/scripts/generate-style-code.js, then run `make android-style-code`. #include #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::jobject* Light::createJavaLightPeer(jni::JNIEnv& env, Map& map, mbgl::style::Light& coreLight) { std::unique_ptr peerLight = std::unique_ptr(initializeLightPeer(map, coreLight)); jni::jobject* result = peerLight->createJavaPeer(env); peerLight.release(); return result; } jni::Class Light::javaClass; jni::jobject* Light::createJavaPeer(jni::JNIEnv& env) { static auto constructor = Light::javaClass.template GetConstructor(env); return Light::javaClass.New(env, constructor, reinterpret_cast(this)); } void Light::setAnchor(jni::JNIEnv& env, jni::String property) { std::string anchorStr = jni::Make(env, property); if (anchorStr.compare("map") == 0) { light.setAnchor(LightAnchorType::Map); } else if (anchorStr.compare("viewport") == 0) { light.setAnchor(LightAnchorType::Viewport); } } jni::String Light::getAnchor(jni::JNIEnv& env) { auto anchorType = light.getAnchor(); if (anchorType == LightAnchorType::Map) { return jni::Make(env, "map"); } else { return jni::Make(env, "viewport"); } } void Light::setPosition(jni::JNIEnv& env, jni::Object jposition) { using namespace mbgl::android::conversion; auto position = *convert(env, jposition); light.setPosition(position); } jni::Object Light::getPosition(jni::JNIEnv& env) { using namespace mbgl::android::conversion; mbgl::style::Position position = light.getPosition().asConstant(); return *convert>(env, position); } jni::Object Light::getPositionTransition(jni::JNIEnv& env) { using namespace mbgl::android::conversion; mbgl::style::TransitionOptions options = light.getPositionTransition(); return *convert>(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, jni::String property) { auto color = Color::parse(jni::Make(env, property)); if (color) { light.setColor(color.value()); } } jni::String Light::getColor(jni::JNIEnv &env) { auto color = light.getColor().asConstant(); return jni::Make(env, color.stringify()); } jni::Object Light::getColorTransition(jni::JNIEnv& env) { using namespace mbgl::android::conversion; mbgl::style::TransitionOptions options = light.getColorTransition(); return *convert>(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::Object Light::getIntensityTransition(jni::JNIEnv& env) { using namespace mbgl::android::conversion; mbgl::style::TransitionOptions options = light.getIntensityTransition(); return *convert>(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 Light::javaClass = *jni::Class::Find(env).NewGlobalRef(env).release(); #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod(name) // Register the peer jni::RegisterNativePeer(env, Light::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