#include <vector>
#include <unordered_map>
#include <functional>
+#include <regex>
#include <ilm/ilm_control.h>
#include "wm_error.hpp"
#include "util.hpp"
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 {
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<WMLayer> getWMLayer(unsigned layer);
std::shared_ptr<WMLayer> 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);
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<WMClient> client);
WMError makeInvisible(const std::shared_ptr<WMClient> client);
bool moveForeGround(const std::shared_ptr<WMClient> client);
bool moveBackGround(const std::shared_ptr<WMClient> 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<std::shared_ptr<WMLayer>> wm_layers;
+ std::vector<std::string> wm_remoteLayerName;
+ std::vector<Screen> wm_screens;
std::unordered_map<unsigned, unsigned> lid2wmlid;
std::unordered_map<std::string, struct rect> 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