From 19158d9f01909bf566616524f23e0acb635562f7 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Thu, 16 Jun 2016 13:25:06 -0700 Subject: [core, node] Implement setPaintProperty for color properties (#5380) --- src/mbgl/style/property_parsing.cpp | 16 ++++++---------- src/mbgl/util/color.cpp | 20 ++++++++++++++++++++ 2 files changed, 26 insertions(+), 10 deletions(-) create mode 100644 src/mbgl/util/color.cpp (limited to 'src/mbgl') diff --git a/src/mbgl/style/property_parsing.cpp b/src/mbgl/style/property_parsing.cpp index 2b08ba8788..2eb55dcb25 100644 --- a/src/mbgl/style/property_parsing.cpp +++ b/src/mbgl/style/property_parsing.cpp @@ -2,8 +2,6 @@ #include -#include - namespace mbgl { namespace style { @@ -44,15 +42,13 @@ optional parseConstant(const char* name, const JSValue& value) { return {}; } - CSSColorParser::Color css_color = CSSColorParser::parse({ value.GetString(), value.GetStringLength() }); - - // Premultiply the color. - const float factor = css_color.a / 255; + optional result = Color::parse({ value.GetString(), value.GetStringLength() }); + if (!result) { + Log::Warning(Event::ParseStyle, "value of '%s' must be a valid color", name); + return {}; + } - return Color{ (float)css_color.r * factor, - (float)css_color.g * factor, - (float)css_color.b * factor, - css_color.a }; + return result; } template <> diff --git a/src/mbgl/util/color.cpp b/src/mbgl/util/color.cpp new file mode 100644 index 0000000000..eea897d3ab --- /dev/null +++ b/src/mbgl/util/color.cpp @@ -0,0 +1,20 @@ +#include + +#include + +namespace mbgl { + +optional Color::parse(const std::string& s) { + CSSColorParser::Color css_color = CSSColorParser::parse(s); + + // Premultiply the color. + const float factor = css_color.a / 255; + return {{ + css_color.r * factor, + css_color.g * factor, + css_color.b * factor, + css_color.a + }}; +} + +} // namespace mbgl -- cgit v1.2.1