// // Created by mfritzsc on 6/27/17. // #ifndef TMCAGLWM_LAYOUT_HPP #define TMCAGLWM_LAYOUT_HPP #include #include #include #include #include #include "result.hpp" #include "wayland.hpp" namespace wm { // Areas and layouts are defined to have a name, let's just keep it this way, // we will not copy them around anyway. struct area { std::string name; genivi::rect rect; uint32_t layer; // i.e. zorder? }; struct layout { static constexpr unsigned MAX_N_AREAS = 2; std::string name; uint32_t n_areas; struct area areas[MAX_N_AREAS]; }; 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