Update wm_layer
[apps/agl-service-windowmanager.git] / src / wm_layer_control.hpp
index ad6bf53..7752fc4 100644 (file)
 \r
 namespace wm {\r
 \r
-class Screen : public rectangle {\r
-\r
+class Screen {\r
+  public:\r
+    Screen(unsigned w, unsigned h) : _width(w), _height(h){}\r
+    unsigned width() { return _width; }\r
+    unsigned height() { return _height; }\r
+  private:\r
+    unsigned _width;\r
+    unsigned _height;\r
+    unsigned _pysical_width = 0;\r
+    unsigned _pysical_height = 0;\r
 };\r
 \r
 class LayerControlCallbacks {\r
@@ -45,13 +53,21 @@ class LayerControlCallbacks {
 \r
 class WMLayer;\r
 class LayerState;\r
+class WMAction;\r
+class WMClient;\r
+\r
 class LayerControl\r
 {\r
   public:\r
     explicit LayerControl(const std::string& root);\r
     ~LayerControl() = default;\r
     WMError init(const LayerControlCallbacks& cb);\r
-    unsigned getNewLayerID(const std::string& role);\r
+    void createNewLayer(unsigned id);\r
+    unsigned getNewLayerID(const std::string& role, std::string* layer_name);\r
+    struct rect getAreaSize(const std::string& area);\r
+    void setupArea(double scaling);\r
+    Screen getScreenInfo();\r
+    double scale();\r
     // void setRenderOrder(const std::vector<unsigned> layer_render_order);\r
     // std::vector<unsigned> getAllRenderOrder();\r
     // std::vector<std::shared_ptr<WMLayer>>& getAllLayers();\r
@@ -59,12 +75,16 @@ class LayerControl
     WMError updateLayer(LayerState& layer_state);\r
     WMError commitChange();\r
     void undoUpdate();\r
+    WMError layoutChange(const WMAction& action);\r
+    WMError visibilityChange(const WMAction &action);\r
 \r
     // Don't use this function.\r
     void dispatchCreateEvent(ilmObjectType object, unsigned id, bool created);\r
     void dispatchPropertyChangeEvent(unsigned id, struct ilmSurfaceProperties*, t_ilm_notification_mask);\r
     void dispatchPropertyChangeEvent(unsigned id, struct ilmLayerProperties*, t_ilm_notification_mask);\r
   private:\r
+    WMError makeVisible(const std::shared_ptr<WMClient> client);\r
+    WMError makeInvisible(const std::shared_ptr<WMClient> client);\r
     WMError loadLayerSetting(const std::string& path);\r
     WMError loadAreaDb(const std::string& path);\r
 \r
@@ -72,6 +92,7 @@ class LayerControl
     std::unordered_map<std::string, struct rect> area2size;\r
     unsigned screenID;\r
     struct ilmScreenProperties screen_prop;\r
+    double scaling;\r
     LayerControlCallbacks cb;\r
 };\r
 \r