diff options
Diffstat (limited to 'src/libwindowmanager.h')
-rw-r--r-- | src/libwindowmanager.h | 68 |
1 files changed, 64 insertions, 4 deletions
diff --git a/src/libwindowmanager.h b/src/libwindowmanager.h index 60a3dab..cc65136 100644 --- a/src/libwindowmanager.h +++ b/src/libwindowmanager.h @@ -18,8 +18,58 @@ #define LIBWINDOWMANAGER_H #include <functional> +#include <vector> +#include <string> #include <json-c/json.h> +class Rect { + public: + Rect() : _x(0), _y(0),_w(0), _h(0) {} + Rect(unsigned x, unsigned y, unsigned w, unsigned h) + : _x(x), _y(y),_w(w), _h(h) {} + ~Rect() = default; + unsigned left() const { return _x;} + unsigned top() const { return _y;} + unsigned width() const { return _w;} + unsigned height() const { return _h;} + void set_left (unsigned int x) { _x = x; } + void set_top (unsigned int y) { _y = y; } + void set_width (unsigned int w) { _w = w; } + void set_height(unsigned int h) { _h = h; } + private: + unsigned _x; + unsigned _y; + unsigned _w; + unsigned _h; +}; + +struct Screen +{ + unsigned long width_dp; + unsigned long height_dp; + unsigned long width_mm; + unsigned long height_mm; + double scale = 1.0; +}; + +class WMHandler { + public: + WMHandler(); + ~WMHandler() = default; + + using visible_handler = std::function<void(const char*, bool visible)>; + using active_handler = std::function<void(const char*, bool active)>; + using sync_draw_handler = std::function<void(const char*, const char*, Rect)>; + using flush_draw_handler= std::function<void(const char*)>; + using screen_updated_handler = std::function<void(const std::vector<std::string>&)>; + + visible_handler on_visible; + active_handler on_active; + sync_draw_handler on_sync_draw; + flush_draw_handler on_flush_draw; + screen_updated_handler on_screen_updated; +}; + class LibWindowmanager { public: LibWindowmanager(); @@ -31,6 +81,7 @@ public: using handler_fun = std::function<void(json_object *)>; /* DrawingArea name (usage: {layout}.{area}) */ + const std::string kDefaultArea = "normal.full"; const std::string kStrLayoutNormal = "normal"; const std::string kStrLayoutSplit = "split"; const std::string kStrAreaFull = "full"; @@ -61,8 +112,20 @@ public: }; int init(int port, char const *token); + int init(int port, const std::string &token); // WM API + int requestSurface(const char* role); + int requestSurfaceXDG(const char* role, unsigned ivi_id); + int activateWindow(const char* role, const char* area); + int activateWindow(const char* role); + int deactivateWindow(const char* role); + int endDraw(const char* role); + struct Screen getScreenInfo(); + int getAreaInfo(const char* role, Rect *out_rect); + void setEventHandler(const WMHandler& wmh); + + // Backward Compatible API int requestSurface(json_object *object); int requestSurfaceXDG(json_object *object); int activateWindow(json_object *object); @@ -70,16 +133,13 @@ public: int endDraw(json_object *object); int getDisplayInfo(json_object *object); int getAreaInfo(json_object *in_obj, json_object *out_obj); - int getAreaInfo(const char *label, json_object *out_obj); - void set_event_handler(enum EventType et, handler_fun f); - struct Impl; - // These APIs are deprecated, please use new API THIS_FUNCTION_IS_DEPRECATED(int activateSurface(json_object *object)); THIS_FUNCTION_IS_DEPRECATED(int deactivateSurface(json_object *object)); + class Impl; private: Impl *const d; |