#include "layers.hpp" #include #include #include #include #include #include #include #include #include #include "background_layer.hpp" #include "circle_layer.hpp" #include "custom_layer.hpp" #include "fill_extrusion_layer.hpp" #include "fill_layer.hpp" #include "line_layer.hpp" #include "raster_layer.hpp" #include "symbol_layer.hpp" #include "unknown_layer.hpp" #include "fill_extrusion_layer.hpp" namespace mbgl { namespace android { static Layer* initializeLayerPeer(mbgl::Map& map, mbgl::style::Layer& coreLayer) { if (coreLayer.is()) { return new BackgroundLayer(map, *coreLayer.as()); } else if (coreLayer.is()) { return new CircleLayer(map, *coreLayer.as()); } else if (coreLayer.is()) { return new FillExtrusionLayer(map, *coreLayer.as()); } else if (coreLayer.is()) { return new FillLayer(map, *coreLayer.as()); } else if (coreLayer.is()) { return new LineLayer(map, *coreLayer.as()); } else if (coreLayer.is()) { return new RasterLayer(map, *coreLayer.as()); } else if (coreLayer.is()) { return new SymbolLayer(map, *coreLayer.as()); } else if (coreLayer.is()) { return new CustomLayer(map, *coreLayer.as()); } else { return new UnknownLayer(map, coreLayer); } } template static PeerType* createPeer(Map& map, std::unique_ptr layer) { return new PeerType(map, std::move(std::unique_ptr(layer.release()->as()))); } static Layer* initializeLayerPeer(Map& map, std::unique_ptr coreLayer) { if (coreLayer->is()) { return createPeer(map, std::move(coreLayer)); } else if (coreLayer->is()) { return createPeer(map, std::move(coreLayer)); } else if (coreLayer->is()) { return createPeer(map, std::move(coreLayer)); } else if (coreLayer->is()) { return createPeer(map, std::move(coreLayer)); } else if (coreLayer->is()) { return createPeer(map, std::move(coreLayer)); } else if (coreLayer->is()) { return createPeer(map, std::move(coreLayer)); } else if (coreLayer->is()) { return createPeer(map, std::move(coreLayer)); } else if (coreLayer->is()) { return createPeer(map, std::move(coreLayer)); } else { return new UnknownLayer(map, std::move(coreLayer)); } } jni::jobject* createJavaLayerPeer(jni::JNIEnv& env, Map& map, style::Layer& coreLayer) { std::unique_ptr peerLayer = std::unique_ptr(initializeLayerPeer(map, coreLayer)); jni::jobject* result = peerLayer->createJavaPeer(env); peerLayer.release(); return result; } jni::jobject* createJavaLayerPeer(jni::JNIEnv& env, mbgl::Map& map, std::unique_ptr coreLayer) { std::unique_ptr peerLayer = std::unique_ptr(initializeLayerPeer(map, std::move(coreLayer))); jni::jobject* result = peerLayer->createJavaPeer(env); peerLayer.release(); return result; } void registerNativeLayers(jni::JNIEnv& env) { Layer::registerNative(env); BackgroundLayer::registerNative(env); CircleLayer::registerNative(env); CustomLayer::registerNative(env); FillExtrusionLayer::registerNative(env); FillLayer::registerNative(env); LineLayer::registerNative(env); RasterLayer::registerNative(env); SymbolLayer::registerNative(env); UnknownLayer::registerNative(env); } } // namespace android } // namespace mbgl