From 148d65bcede0ee167f8bc1bd162de5de3c397b4e Mon Sep 17 00:00:00 2001 From: Alexander Shalamov Date: Thu, 15 Aug 2019 17:18:42 +0300 Subject: [core][node] Serialize formatted expression's text-color option This enables proper round-tripping for serialized format expression. --- include/mbgl/util/color.hpp | 2 ++ platform/node/src/node_expression.cpp | 5 +++++ src/mbgl/util/color.cpp | 7 +++++++ 3 files changed, 14 insertions(+) diff --git a/include/mbgl/util/color.hpp b/include/mbgl/util/color.hpp index 01a4c8f292..1ff44ce085 100644 --- a/include/mbgl/util/color.hpp +++ b/include/mbgl/util/color.hpp @@ -1,6 +1,7 @@ #pragma once #include +#include #include #include @@ -39,6 +40,7 @@ public: static optional parse(const std::string&); std::string stringify() const; std::array toArray() const; + mbgl::Value toObject() const; }; inline bool operator==(const Color& colorA, const Color& colorB) { diff --git a/platform/node/src/node_expression.cpp b/platform/node/src/node_expression.cpp index 041f60d029..e1c3ba0c39 100644 --- a/platform/node/src/node_expression.cpp +++ b/platform/node/src/node_expression.cpp @@ -192,6 +192,11 @@ struct ToValue { } else { serializedSection.emplace("fontStack", mbgl::NullValue()); } + if (section.textColor) { + serializedSection.emplace("textColor", section.textColor->toObject()); + } else { + serializedSection.emplace("textColor", mbgl::NullValue()); + } sections.emplace_back(serializedSection); } serialized.emplace("sections", sections); diff --git a/src/mbgl/util/color.cpp b/src/mbgl/util/color.cpp index b8574174f1..4c2814cf14 100644 --- a/src/mbgl/util/color.cpp +++ b/src/mbgl/util/color.cpp @@ -44,4 +44,11 @@ std::array Color::toArray() const { } } +mbgl::Value Color::toObject() const { + return std::unordered_map{{"r", double(r)}, + {"g", double(g)}, + {"b", double(b)}, + {"a", double(a)}}; +} + } // namespace mbgl -- cgit v1.2.1