diff options
Diffstat (limited to 'src/layers.cpp')
-rw-r--r-- | src/layers.cpp | 34 |
1 files changed, 33 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 |