From 141e995806576364d185626176c1b993fc519291 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Fri, 28 Oct 2016 16:39:50 -0700 Subject: [core] Add support for data-driven styling --- src/mbgl/style/function/identity_stops.cpp | 43 ++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/mbgl/style/function/identity_stops.cpp (limited to 'src/mbgl/style/function/identity_stops.cpp') diff --git a/src/mbgl/style/function/identity_stops.cpp b/src/mbgl/style/function/identity_stops.cpp new file mode 100644 index 0000000000..e210b4d773 --- /dev/null +++ b/src/mbgl/style/function/identity_stops.cpp @@ -0,0 +1,43 @@ +#include +#include + +#include + +namespace mbgl { +namespace style { + +template <> +float IdentityStops::evaluate(const Value& value) const { + return numericValue(value) + .value_or(0.0f); +} + +template <> +Color IdentityStops::evaluate(const Value& value) const { + if (!value.is()) { + return Color::black(); + } + + return Color::parse(value.get()) + .value_or(Color::black()); +} + +template <> +std::array IdentityStops>::evaluate(const Value& value) const { + if (!value.is>()) { + return {{ 0, 0 }}; + } + + const std::vector& vector = value.get>(); + if (vector.size() != 2 || !numericValue(vector[0]) || !numericValue(vector[1])) { + return {{ 0, 0 }}; + } + + return {{ + *numericValue(vector[0]), + *numericValue(vector[1]) + }}; +} + +} // namespace style +} // namespace mbgl -- cgit v1.2.1 From 8a5bff8ee630673c6ebc496322eab94a41ae9353 Mon Sep 17 00:00:00 2001 From: Ivo van Dongen Date: Tue, 31 Jan 2017 15:44:18 +0200 Subject: [core] default value support in categorical function conversion --- src/mbgl/style/function/identity_stops.cpp | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) (limited to 'src/mbgl/style/function/identity_stops.cpp') diff --git a/src/mbgl/style/function/identity_stops.cpp b/src/mbgl/style/function/identity_stops.cpp index e210b4d773..9bddc3feac 100644 --- a/src/mbgl/style/function/identity_stops.cpp +++ b/src/mbgl/style/function/identity_stops.cpp @@ -7,36 +7,34 @@ namespace mbgl { namespace style { template <> -float IdentityStops::evaluate(const Value& value) const { - return numericValue(value) - .value_or(0.0f); +optional IdentityStops::evaluate(const Value& value) const { + return numericValue(value); } template <> -Color IdentityStops::evaluate(const Value& value) const { +optional IdentityStops::evaluate(const Value& value) const { if (!value.is()) { - return Color::black(); + return {}; } - return Color::parse(value.get()) - .value_or(Color::black()); + return Color::parse(value.get()); } template <> -std::array IdentityStops>::evaluate(const Value& value) const { +optional> IdentityStops>::evaluate(const Value& value) const { if (!value.is>()) { - return {{ 0, 0 }}; + return {}; } const std::vector& vector = value.get>(); if (vector.size() != 2 || !numericValue(vector[0]) || !numericValue(vector[1])) { - return {{ 0, 0 }}; + return {}; } - return {{ + return {{{ *numericValue(vector[0]), *numericValue(vector[1]) - }}; + }}}; } } // namespace style -- cgit v1.2.1 From 062b18374d580f3522f577c4dccbfcd15e260e80 Mon Sep 17 00:00:00 2001 From: Anand Thakker Date: Fri, 17 Feb 2017 16:16:25 -0500 Subject: [core] Enable property functions for text-{field,transform} (#7944) --- src/mbgl/style/function/identity_stops.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/mbgl/style/function/identity_stops.cpp') diff --git a/src/mbgl/style/function/identity_stops.cpp b/src/mbgl/style/function/identity_stops.cpp index 9bddc3feac..dfb34e9dd4 100644 --- a/src/mbgl/style/function/identity_stops.cpp +++ b/src/mbgl/style/function/identity_stops.cpp @@ -1,4 +1,6 @@ #include +#include +#include #include #include @@ -11,6 +13,15 @@ optional IdentityStops::evaluate(const Value& value) const { return numericValue(value); } +template <> +optional IdentityStops::evaluate(const Value& value) const { + if (!value.is()) { + return {}; + } + + return value.get(); +} + template <> optional IdentityStops::evaluate(const Value& value) const { if (!value.is()) { @@ -20,6 +31,15 @@ optional IdentityStops::evaluate(const Value& value) const { return Color::parse(value.get()); } +template <> +optional IdentityStops::evaluate(const Value& value) const { + if (!value.is()) { + return {}; + } + + return Enum::toEnum(value.get()); +} + template <> optional> IdentityStops>::evaluate(const Value& value) const { if (!value.is>()) { -- cgit v1.2.1