#include "layers.hpp" #include #include #include #include #include #include #include #include "background_layer.hpp" #include "circle_layer.hpp" #include "fill_layer.hpp" #include "line_layer.hpp" #include "raster_layer.hpp" #include "symbol_layer.hpp" #include "custom_layer.hpp" namespace mbgl { namespace android { Layer* initializeLayerPeer(mbgl::Map& map, mbgl::style::Layer& coreLayer) { Layer* layer; if (coreLayer.is()) { layer = new BackgroundLayer(map, *coreLayer.as()); } else if (coreLayer.is()) { layer = new CircleLayer(map, *coreLayer.as()); } else if (coreLayer.is()) { layer = new FillLayer(map, *coreLayer.as()); } else if (coreLayer.is()) { layer = new LineLayer(map, *coreLayer.as()); } else if (coreLayer.is()) { layer = new RasterLayer(map, *coreLayer.as()); } else if (coreLayer.is()) { layer = new SymbolLayer(map, *coreLayer.as()); } else if (coreLayer.is()) { layer = new CustomLayer(map, *coreLayer.as()); } else { throw new std::runtime_error("Layer type not implemented"); } return layer; } jni::jobject* createJavaLayerPeer(jni::JNIEnv& env, mbgl::Map& map, mbgl::style::Layer& coreLayer) { std::unique_ptr peerLayer = std::unique_ptr(initializeLayerPeer(map, 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); FillLayer::registerNative(env); LineLayer::registerNative(env); RasterLayer::registerNative(env); SymbolLayer::registerNative(env); CustomLayer::registerNative(env); } } // namespace android } // namespace mbgl