From d886d3e4c04801e57340f98761cf76eec29e969d Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Fri, 10 Aug 2018 15:15:24 -0700 Subject: [PATCH] [core] Factor out setVisibility conversion --- include/mbgl/style/layer.hpp | 1 + src/mbgl/style/layer.cpp | 19 +++++++++++++++++++ src/mbgl/style/layers/background_layer.cpp | 14 +------------- src/mbgl/style/layers/circle_layer.cpp | 14 +------------- .../style/layers/fill_extrusion_layer.cpp | 14 +------------- src/mbgl/style/layers/fill_layer.cpp | 14 +------------- src/mbgl/style/layers/heatmap_layer.cpp | 14 +------------- src/mbgl/style/layers/hillshade_layer.cpp | 14 +------------- src/mbgl/style/layers/layer.cpp.ejs | 14 +------------- src/mbgl/style/layers/line_layer.cpp | 14 +------------- src/mbgl/style/layers/raster_layer.cpp | 14 +------------- src/mbgl/style/layers/symbol_layer.cpp | 14 +------------- 12 files changed, 30 insertions(+), 130 deletions(-) diff --git a/include/mbgl/style/layer.hpp b/include/mbgl/style/layer.hpp index fee9f9121..e0f71d268 100644 --- a/include/mbgl/style/layer.hpp +++ b/include/mbgl/style/layer.hpp @@ -120,6 +120,7 @@ public: // Dynamic properties virtual optional setLayoutProperty(const std::string& name, const conversion::Convertible& value) = 0; virtual optional setPaintProperty(const std::string& name, const conversion::Convertible& value) = 0; + optional setVisibility(const conversion::Convertible& value); // Private implementation class Impl; diff --git a/src/mbgl/style/layer.cpp b/src/mbgl/style/layer.cpp index 142fe313c..31ff5bf47 100644 --- a/src/mbgl/style/layer.cpp +++ b/src/mbgl/style/layer.cpp @@ -1,6 +1,7 @@ #include #include #include +#include namespace mbgl { namespace style { @@ -38,5 +39,23 @@ void Layer::setObserver(LayerObserver* observer_) { observer = observer_ ? observer_ : &nullObserver; } +optional Layer::setVisibility(const conversion::Convertible& value) { + using namespace conversion; + + if (isUndefined(value)) { + setVisibility(VisibilityType::Visible); + return nullopt; + } + + Error error; + optional visibility = convert(value, error); + if (!visibility) { + return error; + } + + setVisibility(*visibility); + return nullopt; +} + } // namespace style } // namespace mbgl diff --git a/src/mbgl/style/layers/background_layer.cpp b/src/mbgl/style/layers/background_layer.cpp index 88e175cb7..e47b41daa 100644 --- a/src/mbgl/style/layers/background_layer.cpp +++ b/src/mbgl/style/layers/background_layer.cpp @@ -273,19 +273,7 @@ optional BackgroundLayer::setPaintProperty(const std::string& name, const optional BackgroundLayer::setLayoutProperty(const std::string& name, const Convertible& value) { if (name == "visibility") { - if (isUndefined(value)) { - setVisibility(VisibilityType::Visible); - return nullopt; - } - - Error error; - optional visibility = convert(value, error); - if (!visibility) { - return error; - } - - setVisibility(*visibility); - return nullopt; + return Layer::setVisibility(value); } enum class Property { diff --git a/src/mbgl/style/layers/circle_layer.cpp b/src/mbgl/style/layers/circle_layer.cpp index eb3227da3..1dae77547 100644 --- a/src/mbgl/style/layers/circle_layer.cpp +++ b/src/mbgl/style/layers/circle_layer.cpp @@ -718,19 +718,7 @@ optional CircleLayer::setPaintProperty(const std::string& name, const Con optional CircleLayer::setLayoutProperty(const std::string& name, const Convertible& value) { if (name == "visibility") { - if (isUndefined(value)) { - setVisibility(VisibilityType::Visible); - return nullopt; - } - - Error error; - optional visibility = convert(value, error); - if (!visibility) { - return error; - } - - setVisibility(*visibility); - return nullopt; + return Layer::setVisibility(value); } enum class Property { diff --git a/src/mbgl/style/layers/fill_extrusion_layer.cpp b/src/mbgl/style/layers/fill_extrusion_layer.cpp index 33f5bbe87..db90415da 100644 --- a/src/mbgl/style/layers/fill_extrusion_layer.cpp +++ b/src/mbgl/style/layers/fill_extrusion_layer.cpp @@ -520,19 +520,7 @@ optional FillExtrusionLayer::setPaintProperty(const std::string& name, co optional FillExtrusionLayer::setLayoutProperty(const std::string& name, const Convertible& value) { if (name == "visibility") { - if (isUndefined(value)) { - setVisibility(VisibilityType::Visible); - return nullopt; - } - - Error error; - optional visibility = convert(value, error); - if (!visibility) { - return error; - } - - setVisibility(*visibility); - return nullopt; + return Layer::setVisibility(value); } enum class Property { diff --git a/src/mbgl/style/layers/fill_layer.cpp b/src/mbgl/style/layers/fill_layer.cpp index c2756dc90..2da131b6b 100644 --- a/src/mbgl/style/layers/fill_layer.cpp +++ b/src/mbgl/style/layers/fill_layer.cpp @@ -520,19 +520,7 @@ optional FillLayer::setPaintProperty(const std::string& name, const Conve optional FillLayer::setLayoutProperty(const std::string& name, const Convertible& value) { if (name == "visibility") { - if (isUndefined(value)) { - setVisibility(VisibilityType::Visible); - return nullopt; - } - - Error error; - optional visibility = convert(value, error); - if (!visibility) { - return error; - } - - setVisibility(*visibility); - return nullopt; + return Layer::setVisibility(value); } enum class Property { diff --git a/src/mbgl/style/layers/heatmap_layer.cpp b/src/mbgl/style/layers/heatmap_layer.cpp index 69499e7d4..df0055813 100644 --- a/src/mbgl/style/layers/heatmap_layer.cpp +++ b/src/mbgl/style/layers/heatmap_layer.cpp @@ -405,19 +405,7 @@ optional HeatmapLayer::setPaintProperty(const std::string& name, const Co optional HeatmapLayer::setLayoutProperty(const std::string& name, const Convertible& value) { if (name == "visibility") { - if (isUndefined(value)) { - setVisibility(VisibilityType::Visible); - return nullopt; - } - - Error error; - optional visibility = convert(value, error); - if (!visibility) { - return error; - } - - setVisibility(*visibility); - return nullopt; + return Layer::setVisibility(value); } enum class Property { diff --git a/src/mbgl/style/layers/hillshade_layer.cpp b/src/mbgl/style/layers/hillshade_layer.cpp index 9ccdd1567..fb96c681c 100644 --- a/src/mbgl/style/layers/hillshade_layer.cpp +++ b/src/mbgl/style/layers/hillshade_layer.cpp @@ -430,19 +430,7 @@ optional HillshadeLayer::setPaintProperty(const std::string& name, const optional HillshadeLayer::setLayoutProperty(const std::string& name, const Convertible& value) { if (name == "visibility") { - if (isUndefined(value)) { - setVisibility(VisibilityType::Visible); - return nullopt; - } - - Error error; - optional visibility = convert(value, error); - if (!visibility) { - return error; - } - - setVisibility(*visibility); - return nullopt; + return Layer::setVisibility(value); } enum class Property { diff --git a/src/mbgl/style/layers/layer.cpp.ejs b/src/mbgl/style/layers/layer.cpp.ejs index 8a6db749c..4e80a7bf7 100644 --- a/src/mbgl/style/layers/layer.cpp.ejs +++ b/src/mbgl/style/layers/layer.cpp.ejs @@ -257,19 +257,7 @@ case util::hashFNV1a("<%- property.name %>"): optional <%- camelize(type) %>Layer::setLayoutProperty(const std::string& name, const Convertible& value) { if (name == "visibility") { - if (isUndefined(value)) { - setVisibility(VisibilityType::Visible); - return nullopt; - } - - Error error; - optional visibility = convert(value, error); - if (!visibility) { - return error; - } - - setVisibility(*visibility); - return nullopt; + return Layer::setVisibility(value); } enum class Property { diff --git a/src/mbgl/style/layers/line_layer.cpp b/src/mbgl/style/layers/line_layer.cpp index cc6bfdde3..c744adad9 100644 --- a/src/mbgl/style/layers/line_layer.cpp +++ b/src/mbgl/style/layers/line_layer.cpp @@ -732,19 +732,7 @@ optional LineLayer::setPaintProperty(const std::string& name, const Conve optional LineLayer::setLayoutProperty(const std::string& name, const Convertible& value) { if (name == "visibility") { - if (isUndefined(value)) { - setVisibility(VisibilityType::Visible); - return nullopt; - } - - Error error; - optional visibility = convert(value, error); - if (!visibility) { - return error; - } - - setVisibility(*visibility); - return nullopt; + return Layer::setVisibility(value); } enum class Property { diff --git a/src/mbgl/style/layers/raster_layer.cpp b/src/mbgl/style/layers/raster_layer.cpp index da3f7f8a1..45d324083 100644 --- a/src/mbgl/style/layers/raster_layer.cpp +++ b/src/mbgl/style/layers/raster_layer.cpp @@ -519,19 +519,7 @@ optional RasterLayer::setPaintProperty(const std::string& name, const Con optional RasterLayer::setLayoutProperty(const std::string& name, const Convertible& value) { if (name == "visibility") { - if (isUndefined(value)) { - setVisibility(VisibilityType::Visible); - return nullopt; - } - - Error error; - optional visibility = convert(value, error); - if (!visibility) { - return error; - } - - setVisibility(*visibility); - return nullopt; + return Layer::setVisibility(value); } enum class Property { diff --git a/src/mbgl/style/layers/symbol_layer.cpp b/src/mbgl/style/layers/symbol_layer.cpp index e7cba19ea..48af6b13a 100644 --- a/src/mbgl/style/layers/symbol_layer.cpp +++ b/src/mbgl/style/layers/symbol_layer.cpp @@ -1432,19 +1432,7 @@ optional SymbolLayer::setPaintProperty(const std::string& name, const Con optional SymbolLayer::setLayoutProperty(const std::string& name, const Convertible& value) { if (name == "visibility") { - if (isUndefined(value)) { - setVisibility(VisibilityType::Visible); - return nullopt; - } - - Error error; - optional visibility = convert(value, error); - if (!visibility) { - return error; - } - - setVisibility(*visibility); - return nullopt; + return Layer::setVisibility(value); } enum class Property {