#include <memory>\r
#include <vector>\r
#include <unordered_map>\r
+#include <functional>\r
#include <ilm/ilm_control.h>\r
#include "wm_error.hpp"\r
#include "util.hpp"\r
\r
namespace wm {\r
\r
-class Screen : public rectangle {\r
+class Screen {\r
+ public:\r
+ Screen(unsigned w, unsigned h);\r
+ ~Screen();\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
+ public:\r
+ LayerControlCallbacks() {};\r
+ virtual ~LayerControlCallbacks() = default;\r
+ LayerControlCallbacks(const LayerControlCallbacks &obj) = default;\r
+\r
+ // callback functions\r
+ virtual void test(unsigned i) { HMI_DEBUG("test %d", i); }\r
+ std::function<void(unsigned)> surfaceCreated;\r
+ /* std::function<void(unsigned)> surfaceDestroyed;\r
+ std::function<void(unsigned)> layerCreated;\r
+ std::function<void(unsigned)> layerDestroyed; */\r
};\r
\r
class WMLayer;\r
+class LayerState;\r
class LayerControl\r
{\r
public:\r
explicit LayerControl(const std::string& root);\r
~LayerControl() = default;\r
- WMError init();\r
- unsigned getNewLayerID(const std::string& role);\r
+ WMError init(const LayerControlCallbacks& cb);\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
// std::vector<unsigned> getRenderOrder(const std::string& layer_name);\r
- WMError updateLayer(WMLayer& wm_layer);\r
- void commitChange();\r
+ WMError updateLayer(LayerState& layer_state);\r
+ WMError commitChange();\r
void undoUpdate();\r
\r
// Don't use this function.\r
- void dispatchILMEvent(ilmObjectType object, t_ilm_uint id, t_ilm_bool created);\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 loadLayerSetting(const std::string& path);\r
WMError loadAreaDb(const std::string& path);\r
+\r
std::vector<std::shared_ptr<WMLayer>> wm_layers;\r
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
} // namespace wm
\ No newline at end of file