[core] Factor out setVisibility conversion

This commit is contained in:
John Firebaugh
2018-08-10 15:15:24 -07:00
parent 58202eaf80
commit d886d3e4c0
12 changed files with 30 additions and 130 deletions

View File

@@ -120,6 +120,7 @@ public:
// Dynamic properties
virtual optional<conversion::Error> setLayoutProperty(const std::string& name, const conversion::Convertible& value) = 0;
virtual optional<conversion::Error> setPaintProperty(const std::string& name, const conversion::Convertible& value) = 0;
optional<conversion::Error> setVisibility(const conversion::Convertible& value);
// Private implementation
class Impl;

View File

@@ -1,6 +1,7 @@
#include <mbgl/style/layer.hpp>
#include <mbgl/style/layer_impl.hpp>
#include <mbgl/style/layer_observer.hpp>
#include <mbgl/style/conversion/constant.hpp>
namespace mbgl {
namespace style {
@@ -38,5 +39,23 @@ void Layer::setObserver(LayerObserver* observer_) {
observer = observer_ ? observer_ : &nullObserver;
}
optional<conversion::Error> Layer::setVisibility(const conversion::Convertible& value) {
using namespace conversion;
if (isUndefined(value)) {
setVisibility(VisibilityType::Visible);
return nullopt;
}
Error error;
optional<VisibilityType> visibility = convert<VisibilityType>(value, error);
if (!visibility) {
return error;
}
setVisibility(*visibility);
return nullopt;
}
} // namespace style
} // namespace mbgl

View File

@@ -273,19 +273,7 @@ optional<Error> BackgroundLayer::setPaintProperty(const std::string& name, const
optional<Error> BackgroundLayer::setLayoutProperty(const std::string& name, const Convertible& value) {
if (name == "visibility") {
if (isUndefined(value)) {
setVisibility(VisibilityType::Visible);
return nullopt;
}
Error error;
optional<VisibilityType> visibility = convert<VisibilityType>(value, error);
if (!visibility) {
return error;
}
setVisibility(*visibility);
return nullopt;
return Layer::setVisibility(value);
}
enum class Property {

View File

@@ -718,19 +718,7 @@ optional<Error> CircleLayer::setPaintProperty(const std::string& name, const Con
optional<Error> CircleLayer::setLayoutProperty(const std::string& name, const Convertible& value) {
if (name == "visibility") {
if (isUndefined(value)) {
setVisibility(VisibilityType::Visible);
return nullopt;
}
Error error;
optional<VisibilityType> visibility = convert<VisibilityType>(value, error);
if (!visibility) {
return error;
}
setVisibility(*visibility);
return nullopt;
return Layer::setVisibility(value);
}
enum class Property {

View File

@@ -520,19 +520,7 @@ optional<Error> FillExtrusionLayer::setPaintProperty(const std::string& name, co
optional<Error> FillExtrusionLayer::setLayoutProperty(const std::string& name, const Convertible& value) {
if (name == "visibility") {
if (isUndefined(value)) {
setVisibility(VisibilityType::Visible);
return nullopt;
}
Error error;
optional<VisibilityType> visibility = convert<VisibilityType>(value, error);
if (!visibility) {
return error;
}
setVisibility(*visibility);
return nullopt;
return Layer::setVisibility(value);
}
enum class Property {

View File

@@ -520,19 +520,7 @@ optional<Error> FillLayer::setPaintProperty(const std::string& name, const Conve
optional<Error> FillLayer::setLayoutProperty(const std::string& name, const Convertible& value) {
if (name == "visibility") {
if (isUndefined(value)) {
setVisibility(VisibilityType::Visible);
return nullopt;
}
Error error;
optional<VisibilityType> visibility = convert<VisibilityType>(value, error);
if (!visibility) {
return error;
}
setVisibility(*visibility);
return nullopt;
return Layer::setVisibility(value);
}
enum class Property {

View File

@@ -405,19 +405,7 @@ optional<Error> HeatmapLayer::setPaintProperty(const std::string& name, const Co
optional<Error> HeatmapLayer::setLayoutProperty(const std::string& name, const Convertible& value) {
if (name == "visibility") {
if (isUndefined(value)) {
setVisibility(VisibilityType::Visible);
return nullopt;
}
Error error;
optional<VisibilityType> visibility = convert<VisibilityType>(value, error);
if (!visibility) {
return error;
}
setVisibility(*visibility);
return nullopt;
return Layer::setVisibility(value);
}
enum class Property {

View File

@@ -430,19 +430,7 @@ optional<Error> HillshadeLayer::setPaintProperty(const std::string& name, const
optional<Error> HillshadeLayer::setLayoutProperty(const std::string& name, const Convertible& value) {
if (name == "visibility") {
if (isUndefined(value)) {
setVisibility(VisibilityType::Visible);
return nullopt;
}
Error error;
optional<VisibilityType> visibility = convert<VisibilityType>(value, error);
if (!visibility) {
return error;
}
setVisibility(*visibility);
return nullopt;
return Layer::setVisibility(value);
}
enum class Property {

View File

@@ -257,19 +257,7 @@ case util::hashFNV1a("<%- property.name %>"):
optional<Error> <%- 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<VisibilityType> visibility = convert<VisibilityType>(value, error);
if (!visibility) {
return error;
}
setVisibility(*visibility);
return nullopt;
return Layer::setVisibility(value);
}
enum class Property {

View File

@@ -732,19 +732,7 @@ optional<Error> LineLayer::setPaintProperty(const std::string& name, const Conve
optional<Error> LineLayer::setLayoutProperty(const std::string& name, const Convertible& value) {
if (name == "visibility") {
if (isUndefined(value)) {
setVisibility(VisibilityType::Visible);
return nullopt;
}
Error error;
optional<VisibilityType> visibility = convert<VisibilityType>(value, error);
if (!visibility) {
return error;
}
setVisibility(*visibility);
return nullopt;
return Layer::setVisibility(value);
}
enum class Property {

View File

@@ -519,19 +519,7 @@ optional<Error> RasterLayer::setPaintProperty(const std::string& name, const Con
optional<Error> RasterLayer::setLayoutProperty(const std::string& name, const Convertible& value) {
if (name == "visibility") {
if (isUndefined(value)) {
setVisibility(VisibilityType::Visible);
return nullopt;
}
Error error;
optional<VisibilityType> visibility = convert<VisibilityType>(value, error);
if (!visibility) {
return error;
}
setVisibility(*visibility);
return nullopt;
return Layer::setVisibility(value);
}
enum class Property {

View File

@@ -1432,19 +1432,7 @@ optional<Error> SymbolLayer::setPaintProperty(const std::string& name, const Con
optional<Error> SymbolLayer::setLayoutProperty(const std::string& name, const Convertible& value) {
if (name == "visibility") {
if (isUndefined(value)) {
setVisibility(VisibilityType::Visible);
return nullopt;
}
Error error;
optional<VisibilityType> visibility = convert<VisibilityType>(value, error);
if (!visibility) {
return error;
}
setVisibility(*visibility);
return nullopt;
return Layer::setVisibility(value);
}
enum class Property {