From bc55aaf18c56a82ee3d12b8ba2a6d7f452dbda2c Mon Sep 17 00:00:00 2001 From: Marcus Fritzsch Date: Thu, 27 Jul 2017 15:51:35 +0200 Subject: layout: add surface id to layer mapping Signed-off-by: Marcus Fritzsch --- src/layout.hpp | 44 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) (limited to 'src/layout.hpp') diff --git a/src/layout.hpp b/src/layout.hpp index 4ee14a7..6c60bde 100644 --- a/src/layout.hpp +++ b/src/layout.hpp @@ -6,10 +6,13 @@ #define TMCAGLWM_LAYOUT_HPP #include +#include +#include #include -#include +#include +#include "result.hpp" #include "wayland.hpp" namespace wm { @@ -19,7 +22,7 @@ namespace wm { struct area { std::string name; genivi::rect rect; - uint32_t layer; // i.e. zorder? + uint32_t layer; // i.e. zorder? }; struct layout { @@ -32,6 +35,43 @@ struct layout { typedef std::vector layouts_type; +struct surface_id_to_layer { + int id_min = -1; + int id_max = -1; + std::string name = ""; + int layer_id = -1; + + explicit surface_id_to_layer(nlohmann::json const &j); + + bool operator<(struct surface_id_to_layer const &rhs) const { + return this->id_max < rhs.id_max; + } +}; + +inline bool operator<(struct surface_id_to_layer const &a, int b) { + return a.id_max < b; +} + +struct surface_id_to_layer_map { + typedef std::set map_type; + + map_type mapping; + + std::experimental::optional get_layer_for_surface(int surface_id) { + auto i = std::lower_bound(std::cbegin(this->mapping), + std::cend(this->mapping), surface_id); + + if (i != this->mapping.end()) { + return std::experimental::optional(i->layer_id); + } + + return std::experimental::nullopt; + } +}; + +struct result to_surface_id_to_layer_map( + nlohmann::json const &j); + } // namespace wm #endif // TMCAGLWM_LAYOUT_HPP -- cgit 1.2.3-korg