diff options
author | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2018-11-30 12:10:33 +0200 |
---|---|---|
committer | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2018-11-30 19:09:17 +0200 |
commit | 92352de87d4068985fa56100f2c6e16bf26a1c86 (patch) | |
tree | e3dd5729e2ef8e32931b8e42ab34a3d0b806ee18 /src/mbgl | |
parent | 8bc362e3a2836cfa96ef14a41a0e882a1d08e881 (diff) | |
download | qtlocation-mapboxgl-92352de87d4068985fa56100f2c6e16bf26a1c86.tar.gz |
[core] layermanager folder
Move `LayerManager` and `LayerFactory` abstract classes to a dedicated folder.
Diffstat (limited to 'src/mbgl')
-rw-r--r-- | src/mbgl/annotation/annotation_manager.cpp | 1 | ||||
-rw-r--r-- | src/mbgl/layermanager/layer_factory.cpp | 47 | ||||
-rw-r--r-- | src/mbgl/layermanager/layer_manager.cpp | 31 | ||||
-rw-r--r-- | src/mbgl/map/map.cpp | 1 | ||||
-rw-r--r-- | src/mbgl/renderer/renderer.cpp | 2 | ||||
-rw-r--r-- | src/mbgl/renderer/renderer_impl.cpp | 1 | ||||
-rw-r--r-- | src/mbgl/style/conversion/layer.cpp | 2 | ||||
-rw-r--r-- | src/mbgl/style/layer.cpp | 59 | ||||
-rw-r--r-- | src/mbgl/tile/geometry_tile_worker.cpp | 1 |
9 files changed, 86 insertions, 59 deletions
diff --git a/src/mbgl/annotation/annotation_manager.cpp b/src/mbgl/annotation/annotation_manager.cpp index 17cf77865c..ab22404c15 100644 --- a/src/mbgl/annotation/annotation_manager.cpp +++ b/src/mbgl/annotation/annotation_manager.cpp @@ -4,6 +4,7 @@ #include <mbgl/annotation/symbol_annotation_impl.hpp> #include <mbgl/annotation/line_annotation_impl.hpp> #include <mbgl/annotation/fill_annotation_impl.hpp> +#include <mbgl/layermanager/layer_manager.hpp> #include <mbgl/style/style.hpp> #include <mbgl/style/style_impl.hpp> #include <mbgl/style/layers/symbol_layer.hpp> diff --git a/src/mbgl/layermanager/layer_factory.cpp b/src/mbgl/layermanager/layer_factory.cpp new file mode 100644 index 0000000000..c7f63b8699 --- /dev/null +++ b/src/mbgl/layermanager/layer_factory.cpp @@ -0,0 +1,47 @@ +#include <mbgl/layermanager/layer_factory.hpp> + +#include <mbgl/style/conversion/constant.hpp> +#include <mbgl/style/conversion/filter.hpp> +#include <mbgl/style/conversion_impl.hpp> +#include <mbgl/style/layer.hpp> + +namespace mbgl { + +optional<std::string> LayerFactory::getSource(const style::conversion::Convertible& value) const noexcept { + auto sourceValue = objectMember(value, "source"); + if (!sourceValue) { + return nullopt; + } + + optional<std::string> source = toString(*sourceValue); + if (!source) { + return nullopt; + } + + return source; +} + +bool LayerFactory::initSourceLayerAndFilter(style::Layer* layer, const style::conversion::Convertible& value) const noexcept { + auto sourceLayerValue = objectMember(value, "source-layer"); + if (sourceLayerValue) { + optional<std::string> sourceLayer = toString(*sourceLayerValue); + if (!sourceLayer) { + return false; + } + layer->setSourceLayer(*sourceLayer); + } + + auto filterValue = objectMember(value, "filter"); + if (filterValue) { + style::conversion::Error error; + optional<style::Filter> filter = style::conversion::convert<style::Filter>(*filterValue, error); + if (!filter) { + return false; + } + layer->setFilter(*filter); + } + + return true; +} + +} // namespace mbgl diff --git a/src/mbgl/layermanager/layer_manager.cpp b/src/mbgl/layermanager/layer_manager.cpp new file mode 100644 index 0000000000..8f42bc9218 --- /dev/null +++ b/src/mbgl/layermanager/layer_manager.cpp @@ -0,0 +1,31 @@ +#include <mbgl/layermanager/layer_manager.hpp> + +#include <mbgl/layermanager/layer_factory.hpp> +#include <mbgl/renderer/render_layer.hpp> +#include <mbgl/style/layer.hpp> +#include <mbgl/style/layer_impl.hpp> +#include <mbgl/style/conversion_impl.hpp> + +namespace mbgl { + +std::unique_ptr<style::Layer> LayerManager::createLayer( + const std::string& type, const std::string& id, + const style::conversion::Convertible& value, style::conversion::Error& error) noexcept { + if (LayerFactory* factory = getFactory(type)) { + auto layer = factory->createLayer(id, value); + if (!layer) { + error.message = "Error parsing a layer of type: " + type; + } + return layer; + } + error.message = "Unsupported layer type: " + type; + return nullptr; +} + +std::unique_ptr<RenderLayer> LayerManager::createRenderLayer(Immutable<style::Layer::Impl> impl) noexcept { + LayerFactory* factory = getFactory(impl->getTypeInfo()); + assert(factory); + return factory->createRenderLayer(std::move(impl)); +} + +} // namespace mbgl diff --git a/src/mbgl/map/map.cpp b/src/mbgl/map/map.cpp index b8d5186729..c3bebae837 100644 --- a/src/mbgl/map/map.cpp +++ b/src/mbgl/map/map.cpp @@ -3,6 +3,7 @@ #include <mbgl/map/transform.hpp> #include <mbgl/map/transform_state.hpp> #include <mbgl/annotation/annotation_manager.hpp> +#include <mbgl/layermanager/layer_manager.hpp> #include <mbgl/style/style_impl.hpp> #include <mbgl/style/observer.hpp> #include <mbgl/renderer/update_parameters.hpp> diff --git a/src/mbgl/renderer/renderer.cpp b/src/mbgl/renderer/renderer.cpp index 9976c1b6dc..6b73e568fc 100644 --- a/src/mbgl/renderer/renderer.cpp +++ b/src/mbgl/renderer/renderer.cpp @@ -1,4 +1,6 @@ #include <mbgl/renderer/renderer.hpp> + +#include <mbgl/layermanager/layer_manager.hpp> #include <mbgl/renderer/renderer_impl.hpp> #include <mbgl/renderer/backend_scope.hpp> #include <mbgl/annotation/annotation_manager.hpp> diff --git a/src/mbgl/renderer/renderer_impl.cpp b/src/mbgl/renderer/renderer_impl.cpp index 7d1653cdbd..c844d1f87c 100644 --- a/src/mbgl/renderer/renderer_impl.cpp +++ b/src/mbgl/renderer/renderer_impl.cpp @@ -1,4 +1,5 @@ #include <mbgl/annotation/annotation_manager.hpp> +#include <mbgl/layermanager/layer_manager.hpp> #include <mbgl/renderer/renderer_impl.hpp> #include <mbgl/renderer/renderer_backend.hpp> #include <mbgl/renderer/renderer_observer.hpp> diff --git a/src/mbgl/style/conversion/layer.cpp b/src/mbgl/style/conversion/layer.cpp index b551f1bfb2..e8f94a1064 100644 --- a/src/mbgl/style/conversion/layer.cpp +++ b/src/mbgl/style/conversion/layer.cpp @@ -3,6 +3,8 @@ #include <mbgl/style/conversion/filter.hpp> #include <mbgl/style/conversion_impl.hpp> +#include <mbgl/layermanager/layer_manager.hpp> + namespace mbgl { namespace style { namespace conversion { diff --git a/src/mbgl/style/layer.cpp b/src/mbgl/style/layer.cpp index abe6444701..328cd47555 100644 --- a/src/mbgl/style/layer.cpp +++ b/src/mbgl/style/layer.cpp @@ -110,63 +110,4 @@ const LayerTypeInfo* Layer::getTypeInfo() const noexcept { } } // namespace style - -optional<std::string> LayerFactory::getSource(const style::conversion::Convertible& value) const noexcept { - auto sourceValue = objectMember(value, "source"); - if (!sourceValue) { - return nullopt; - } - - optional<std::string> source = toString(*sourceValue); - if (!source) { - return nullopt; - } - - return source; -} - -bool LayerFactory::initSourceLayerAndFilter(style::Layer* layer, const style::conversion::Convertible& value) const noexcept { - auto sourceLayerValue = objectMember(value, "source-layer"); - if (sourceLayerValue) { - optional<std::string> sourceLayer = toString(*sourceLayerValue); - if (!sourceLayer) { - return false; - } - layer->setSourceLayer(*sourceLayer); - } - - auto filterValue = objectMember(value, "filter"); - if (filterValue) { - style::conversion::Error error; - optional<style::Filter> filter = style::conversion::convert<style::Filter>(*filterValue, error); - if (!filter) { - return false; - } - layer->setFilter(*filter); - } - - return true; -} - -std::unique_ptr<style::Layer> LayerManager::createLayer( - const std::string& type, const std::string& id, - const style::conversion::Convertible& value, style::conversion::Error& error) noexcept { - if (LayerFactory* factory = getFactory(type)) { - auto layer = factory->createLayer(id, value); - if (!layer) { - error.message = "Error parsing a layer of type: " + type; - } - return layer; - } - error.message = "Unsupported layer type: " + type; - return nullptr; -} - -std::unique_ptr<RenderLayer> LayerManager::createRenderLayer(Immutable<style::Layer::Impl> impl) noexcept { - LayerFactory* factory = getFactory(impl->getTypeInfo()); - assert(factory); - return factory->createRenderLayer(std::move(impl)); -} - - } // namespace mbgl diff --git a/src/mbgl/tile/geometry_tile_worker.cpp b/src/mbgl/tile/geometry_tile_worker.cpp index 9e4c045ce5..854bfcf1a4 100644 --- a/src/mbgl/tile/geometry_tile_worker.cpp +++ b/src/mbgl/tile/geometry_tile_worker.cpp @@ -1,6 +1,7 @@ #include <mbgl/tile/geometry_tile_worker.hpp> #include <mbgl/tile/geometry_tile_data.hpp> #include <mbgl/tile/geometry_tile.hpp> +#include <mbgl/layermanager/layer_manager.hpp> #include <mbgl/layout/symbol_layout.hpp> #include <mbgl/layout/pattern_layout.hpp> #include <mbgl/renderer/bucket_parameters.hpp> |