summaryrefslogtreecommitdiffstats
path: root/src/libwindowmanager.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libwindowmanager.h')
-rw-r--r--src/libwindowmanager.h68
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;