summaryrefslogtreecommitdiff
path: root/src/mbgl
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2016-06-16 13:25:06 -0700
committerGitHub <noreply@github.com>2016-06-16 13:25:06 -0700
commit19158d9f01909bf566616524f23e0acb635562f7 (patch)
treea3adf8c8713dbe6d20fe9fae055836e677b4ca47 /src/mbgl
parent3f024ebaf02e82e9282e303a46127f366a84904d (diff)
downloadqtlocation-mapboxgl-19158d9f01909bf566616524f23e0acb635562f7.tar.gz
[core, node] Implement setPaintProperty for color properties (#5380)
Diffstat (limited to 'src/mbgl')
-rw-r--r--src/mbgl/style/property_parsing.cpp16
-rw-r--r--src/mbgl/util/color.cpp20
2 files changed, 26 insertions, 10 deletions
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 <mbgl/platform/log.hpp>
-#include <csscolorparser/csscolorparser.hpp>
-
namespace mbgl {
namespace style {
@@ -44,15 +42,13 @@ optional<Color> 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<Color> 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 <mbgl/util/color.hpp>
+
+#include <csscolorparser/csscolorparser.hpp>
+
+namespace mbgl {
+
+optional<Color> 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