X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fwm_layer.hpp;h=83a5e7446b28c745c7815e9d5778be5e3a22b73c;hb=d1188744973931f66a83968310175369cd85c231;hp=1d9435b932d24de46e0808373b2ff14383807f98;hpb=6819f403a6b8a1ab5e8cdffd9fd1460d49045059;p=apps%2Fagl-service-windowmanager.git diff --git a/src/wm_layer.hpp b/src/wm_layer.hpp index 1d9435b..83a5e74 100644 --- a/src/wm_layer.hpp +++ b/src/wm_layer.hpp @@ -28,24 +28,66 @@ struct json_object; namespace wm { +class WMClient; +class LayerState +{ + public: + LayerState(); + ~LayerState() = default; + const std::vector getIviIdList(); + void addLayer(unsigned layer); + void removeLayer(unsigned layer); + void attachAppToArea(const std::string& app, const std::string& area); + + // Debug + void dump(); + + private: + std::vector render_order; + std::unordered_map area2appid; +}; + class WMLayer { public: - explicit WMLayer(json_object* j); + explicit WMLayer(json_object* j, unsigned wm_layer_id); ~WMLayer() = default; - // A more or less descriptive name? - const std::string& layerName(){ return this->role_list;} - unsigned layerID(){ return this->layer_id;} - const std::string& roleList(); + + // Status & Setting API + unsigned getNewLayerID(const std::string& role); + unsigned idBegin() { return this->id_begin; } + unsigned idEnd() { return this->id_end; } + unsigned getWMLayerID() { return this->wm_layer_id; } + const std::string& layerName(); + void appendArea(const std::string& area); + LayerState& getLayerState() { return tmp_state; } + WMError setLayerState(const LayerState& l); + bool hasLayerID(unsigned id); bool hasRole(const std::string& role); - private: - std::string name = ""; - // The actual layer ID - int layer_id = 0; - // Specify a role prefix for surfaces that should be - // put on this layer. + // Manipulation + void addLayerToState(unsigned layer); + void removeLayerFromState(unsigned layer); + void attachAppToArea(const std::string& app, const std::string& area); + void update(); + void undo(); + + // Event + void appTerminated(unsigned layer); + + // Debug + void dump(); + + private: + LayerState tmp_state; + LayerState state; + unsigned wm_layer_id; + std::string name = ""; // Layer name std::string role_list; + std::vector area_list; + std::vector id_list; + unsigned id_begin; + unsigned id_end; }; } // namespace wm