X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fwm_layer_control.hpp;h=7c19e97ee9227e107da462906fe88ac45e0ee1fc;hb=729d2520cfc40d3eb461d2203a0b40ba7e259470;hp=68acd669210b6636a80ad6d5e51c34f7df376fda;hpb=ceb1049ca57b0fd0ce41e9eca631557ffa46993a;p=apps%2Fagl-service-windowmanager.git diff --git a/src/wm_layer_control.hpp b/src/wm_layer_control.hpp index 68acd66..7c19e97 100644 --- a/src/wm_layer_control.hpp +++ b/src/wm_layer_control.hpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include "wm_error.hpp" #include "util.hpp" @@ -27,14 +28,24 @@ namespace wm { class Screen { public: - Screen(unsigned w, unsigned h) : _width(w), _height(h){} - unsigned width() { return _width; } - unsigned height() { return _height; } + Screen(unsigned id, unsigned w, unsigned h) : _screen_id(id), _width(w), _height(h){} + unsigned width() const { return _width; } + unsigned height() const { return _height; } + unsigned id() const { return _screen_id; } + unsigned scale() const { return _scale; } + int offsetX() const { return _offset_x; } + int offsetY() const { return _offset_y; } + void setScale(double scl) { this->_scale = scl; } + void setOffset(int x, int y) { this->_offset_x = x; this->_offset_y = y; } private: + unsigned _screen_id; unsigned _width; unsigned _height; unsigned _pysical_width = 0; unsigned _pysical_height = 0; + int _offset_x = 0; + int _offset_y = 0; + double _scale = 1.0; }; class LayerControlCallbacks { @@ -60,18 +71,21 @@ class WMClient; class LayerControl { public: - explicit LayerControl(const std::string& root); + explicit LayerControl(const std::string& root, const std::string& ecu_name); ~LayerControl() = default; WMError init(const LayerControlCallbacks& cb); void createNewLayer(unsigned id); - unsigned getNewLayerID(const std::string& role); + void createNewRemoteLayer(unsigned id); + unsigned getNewLayerID(const std::string& role, std::string* layer_name); std::shared_ptr getWMLayer(unsigned layer); std::shared_ptr getWMLayer(std::string layer_name); struct rect getAreaSize(const std::string& area); void setupArea(const rectangle& base_rct, double scaling); Screen getScreenInfo(); double scale(); + WMError updateLayer(LayerState& layer_state); WMError renderLayers(); + // WMError renderLayersRemote(); WMError setXDGSurfaceOriginSize(unsigned surface); void undoUpdate(); WMError layoutChange(const WMAction& action); @@ -87,23 +101,33 @@ class LayerControl void dispatchSurfacePropChangeEvent(unsigned id, struct ilmSurfaceProperties*, t_ilm_notification_mask); void dispatchLayerPropChangeEvent(unsigned id, struct ilmLayerProperties*, t_ilm_notification_mask); + std::string hasRemoteLayer(unsigned layer); + std::string areaToRemoteLayer(const std::string& area); private: WMError makeVisible(const std::shared_ptr client); WMError makeInvisible(const std::shared_ptr client); bool moveForeGround(const std::shared_ptr client); bool moveBackGround(const std::shared_ptr client); + bool moveRemote(unsigned layer, const std::string& area); + bool moveLocal(unsigned layer); + int loadWestonSetting(const std::string &path); WMError loadLayerSetting(const std::string& path); - WMError loadAreaDb(const std::string& path); + WMError loadAreasConfigFile(const std::string& path, const std::string& ecu_name); std::vector> wm_layers; + std::vector wm_remoteLayerName; + std::vector wm_screens; std::unordered_map lid2wmlid; std::unordered_map area2size; unsigned screenID; - struct ilmScreenProperties screen_prop; + double scaling; int offset_x; int offset_y; LayerControlCallbacks cb; + + long times; + long sleep; }; -} // namespace wm \ No newline at end of file +} // namespace wm