diff options
author | Marcus Fritzsch <marcus_fritzsch@mentor.com> | 2017-08-01 17:49:04 +0200 |
---|---|---|
committer | Marcus Fritzsch <marcus_fritzsch@mentor.com> | 2017-08-08 17:24:00 +0200 |
commit | 7ea90aa37831357d24362e84495ed7492ef31a68 (patch) | |
tree | 845b3ce0cd84cbd6837d5c4412f279711327c981 /src | |
parent | 852cc727023d68ea0a439b68a18b144ce62c8fbe (diff) |
layers: add layer and layer_map to_json() helper
Signed-off-by: Marcus Fritzsch <marcus_fritzsch@mentor.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/layers.cpp | 34 | ||||
-rw-r--r-- | src/layers.hpp | 8 |
2 files changed, 41 insertions, 1 deletions
diff --git a/src/layers.cpp b/src/layers.cpp index 1e44a1b..abf8303 100644 --- a/src/layers.cpp +++ b/src/layers.cpp @@ -22,7 +22,7 @@ layer::layer(nlohmann::json const &j) { } this->name = j["name"].get<std::string>(); this->layer_id = get<int>(j["layer_id"]); - this->rect = genivi::rect{-1, -1, 0, 0}; + this->rect = genivi::full_rect; if (j["area"]["type"] == "rect") { auto jr = j["area"]["rect"]; this->rect = genivi::rect{ @@ -119,4 +119,36 @@ optional<genivi::rect> layer_map::get_layer_rect(int surface_id) { return e ? optional<genivi::rect>(e->rect) : nullopt; } +json layer::to_json() const { + auto is_full = this->rect == genivi::full_rect; + + json r{}; + if (is_full) { + r = {{"type", "full"}}; + } else { + r = {{"type", "rect"}, + {"rect", + {{"x", this->rect.x}, + {"y", this->rect.y}, + {"width", this->rect.w}, + {"height", this->rect.h}}}}; + } + + return { + {"id_min", this->id_min}, + {"id_max", this->id_max}, + {"name", this->name}, + {"layer_id", this->layer_id}, + {"area", r}, + }; +} + +json layer_map::to_json() const { + json j{}; + for (auto const &i: this->mapping) { + j.push_back(i.to_json()); + } + return j; +} + } // namespace wm diff --git a/src/layers.hpp b/src/layers.hpp index e2d2bf5..a775f7a 100644 --- a/src/layers.hpp +++ b/src/layers.hpp @@ -15,6 +15,8 @@ namespace wm { struct layer { + using json = nlohmann::json; + // Min and max surface ID mapped to this layer int id_min = -1; int id_max = -1; @@ -36,11 +38,15 @@ struct layer { bool operator<(struct layer const &rhs) const { return this->id_max < rhs.id_max; } + + json to_json() const; }; // Actually, we shouldn't need a struct here ... but let's just keep it at that // for now, to contain its mapping type and the _single_ useful method. struct layer_map { + using json = nlohmann::json; + typedef std::set<struct layer> storage_type; typedef std::vector<unsigned int> layers_type; @@ -52,6 +58,8 @@ struct layer_map { layers_type::size_type get_layers_count() const { return this->layers.size(); } + + json to_json() const; }; struct result<struct layer_map> to_layer_map(nlohmann::json const &j); |