Wayland++  0.2.3
C++ Bindings for Wayland
wayland-client-protocol.hpp
1 #pragma once
2 
3 #include <array>
4 #include <functional>
5 #include <memory>
6 #include <string>
7 #include <vector>
8 
9 #include <wayland-client.hpp>
10 
11 struct wl_registry;
12 struct wl_callback;
13 struct wl_compositor;
14 struct wl_shm_pool;
15 struct wl_shm;
16 struct wl_buffer;
17 struct wl_data_offer;
18 struct wl_data_source;
19 struct wl_data_device;
20 struct wl_data_device_manager;
21 struct wl_shell;
22 struct wl_shell_surface;
23 struct wl_surface;
24 struct wl_seat;
25 struct wl_pointer;
26 struct wl_keyboard;
27 struct wl_touch;
28 struct wl_output;
29 struct wl_region;
30 struct wl_subcompositor;
31 struct wl_subsurface;
32 
33 namespace wayland
34 {
35 class registry_t;
36 class callback_t;
37 class compositor_t;
38 class shm_pool_t;
39 class shm_t;
40 enum class shm_error : uint32_t;
41 enum class shm_format : uint32_t;
42 class buffer_t;
43 class data_offer_t;
44 enum class data_offer_error : uint32_t;
45 class data_source_t;
46 enum class data_source_error : uint32_t;
47 class data_device_t;
48 enum class data_device_error : uint32_t;
49 class data_device_manager_t;
50 struct data_device_manager_dnd_action;
51 class shell_t;
52 enum class shell_error : uint32_t;
53 class shell_surface_t;
54 struct shell_surface_resize;
55 struct shell_surface_transient;
56 enum class shell_surface_fullscreen_method : uint32_t;
57 class surface_t;
58 enum class surface_error : uint32_t;
59 class seat_t;
60 struct seat_capability;
61 class pointer_t;
62 enum class pointer_error : uint32_t;
63 enum class pointer_button_state : uint32_t;
64 enum class pointer_axis : uint32_t;
65 enum class pointer_axis_source : uint32_t;
66 class keyboard_t;
67 enum class keyboard_keymap_format : uint32_t;
68 enum class keyboard_key_state : uint32_t;
69 class touch_t;
70 class output_t;
71 enum class output_subpixel : uint32_t;
72 struct output_transform;
73 struct output_mode;
74 class region_t;
75 class subcompositor_t;
76 enum class subcompositor_error : uint32_t;
77 class subsurface_t;
78 enum class subsurface_error : uint32_t;
79 
80 namespace detail
81 {
82  extern const wl_interface display_interface;
83  extern const wl_interface registry_interface;
84  extern const wl_interface callback_interface;
85  extern const wl_interface compositor_interface;
86  extern const wl_interface shm_pool_interface;
87  extern const wl_interface shm_interface;
88  extern const wl_interface buffer_interface;
89  extern const wl_interface data_offer_interface;
90  extern const wl_interface data_source_interface;
91  extern const wl_interface data_device_interface;
92  extern const wl_interface data_device_manager_interface;
93  extern const wl_interface shell_interface;
94  extern const wl_interface shell_surface_interface;
95  extern const wl_interface surface_interface;
96  extern const wl_interface seat_interface;
97  extern const wl_interface pointer_interface;
98  extern const wl_interface keyboard_interface;
99  extern const wl_interface touch_interface;
100  extern const wl_interface output_interface;
101  extern const wl_interface region_interface;
102  extern const wl_interface subcompositor_interface;
103  extern const wl_interface subsurface_interface;
104 }
105 
130 class registry_t : public proxy_t
131 {
132 private:
133  struct events_t : public detail::events_base_t
134  {
135  std::function<void(uint32_t, std::string, uint32_t)> global;
136  std::function<void(uint32_t)> global_remove;
137  };
138 
139  static int dispatcher(uint32_t opcode, std::vector<detail::any> args, std::shared_ptr<detail::events_base_t> e);
140 
141  registry_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag);
142 
143 public:
144  registry_t();
145  explicit registry_t(const proxy_t &proxy);
146  registry_t(wl_registry *p, wrapper_type t = wrapper_type::standard);
147 
148  registry_t proxy_create_wrapper();
149 
150  static const std::string interface_name;
151 
152  operator wl_registry*() const;
153 
164  proxy_t bind(uint32_t name, proxy_t &interface, uint32_t version);
165 
168  static constexpr std::uint32_t bind_since_version = 1;
169 
182  std::function<void(uint32_t, std::string, uint32_t)> &on_global();
183 
199  std::function<void(uint32_t)> &on_global_remove();
200 
201 };
202 
203 
210 class callback_t : public proxy_t
211 {
212 private:
213  struct events_t : public detail::events_base_t
214  {
215  std::function<void(uint32_t)> done;
216  };
217 
218  static int dispatcher(uint32_t opcode, std::vector<detail::any> args, std::shared_ptr<detail::events_base_t> e);
219 
220  callback_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag);
221 
222 public:
223  callback_t();
224  explicit callback_t(const proxy_t &proxy);
225  callback_t(wl_callback *p, wrapper_type t = wrapper_type::standard);
226 
227  callback_t proxy_create_wrapper();
228 
229  static const std::string interface_name;
230 
231  operator wl_callback*() const;
232 
239  std::function<void(uint32_t)> &on_done();
240 
241 };
242 
243 
251 class compositor_t : public proxy_t
252 {
253 private:
254  struct events_t : public detail::events_base_t
255  {
256  };
257 
258  static int dispatcher(uint32_t opcode, std::vector<detail::any> args, std::shared_ptr<detail::events_base_t> e);
259 
260  compositor_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag);
261 
262 public:
263  compositor_t();
264  explicit compositor_t(const proxy_t &proxy);
265  compositor_t(wl_compositor *p, wrapper_type t = wrapper_type::standard);
266 
267  compositor_t proxy_create_wrapper();
268 
269  static const std::string interface_name;
270 
271  operator wl_compositor*() const;
272 
280 
283  static constexpr std::uint32_t create_surface_since_version = 1;
284 
292 
295  static constexpr std::uint32_t create_region_since_version = 1;
296 
297 };
298 
299 
311 class shm_pool_t : public proxy_t
312 {
313 private:
314  struct events_t : public detail::events_base_t
315  {
316  };
317 
318  static int dispatcher(uint32_t opcode, std::vector<detail::any> args, std::shared_ptr<detail::events_base_t> e);
319 
320  shm_pool_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag);
321 
322 public:
323  shm_pool_t();
324  explicit shm_pool_t(const proxy_t &proxy);
325  shm_pool_t(wl_shm_pool *p, wrapper_type t = wrapper_type::standard);
326 
327  shm_pool_t proxy_create_wrapper();
328 
329  static const std::string interface_name;
330 
331  operator wl_shm_pool*() const;
332 
354  buffer_t create_buffer(int32_t offset, int32_t width, int32_t height, int32_t stride, shm_format format);
355 
358  static constexpr std::uint32_t create_buffer_since_version = 1;
359 
369  void resize(int32_t size);
370 
373  static constexpr std::uint32_t resize_since_version = 1;
374 
375 };
376 
377 
391 class shm_t : public proxy_t
392 {
393 private:
394  struct events_t : public detail::events_base_t
395  {
396  std::function<void(shm_format)> format;
397  };
398 
399  static int dispatcher(uint32_t opcode, std::vector<detail::any> args, std::shared_ptr<detail::events_base_t> e);
400 
401  shm_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag);
402 
403 public:
404  shm_t();
405  explicit shm_t(const proxy_t &proxy);
406  shm_t(wl_shm *p, wrapper_type t = wrapper_type::standard);
407 
408  shm_t proxy_create_wrapper();
409 
410  static const std::string interface_name;
411 
412  operator wl_shm*() const;
413 
426  shm_pool_t create_pool(int fd, int32_t size);
427 
430  static constexpr std::uint32_t create_pool_since_version = 1;
431 
440  std::function<void(shm_format)> &on_format();
441 
442 };
443 
449 enum class shm_error : uint32_t
450  {
452  invalid_format = 0,
454  invalid_stride = 1,
456  invalid_fd = 2
457 };
458 
472 enum class shm_format : uint32_t
473  {
475  argb8888 = 0,
477  xrgb8888 = 1,
479  c8 = 0x20203843,
481  rgb332 = 0x38424752,
483  bgr233 = 0x38524742,
485  xrgb4444 = 0x32315258,
487  xbgr4444 = 0x32314258,
489  rgbx4444 = 0x32315852,
491  bgrx4444 = 0x32315842,
493  argb4444 = 0x32315241,
495  abgr4444 = 0x32314241,
497  rgba4444 = 0x32314152,
499  bgra4444 = 0x32314142,
501  xrgb1555 = 0x35315258,
503  xbgr1555 = 0x35314258,
505  rgbx5551 = 0x35315852,
507  bgrx5551 = 0x35315842,
509  argb1555 = 0x35315241,
511  abgr1555 = 0x35314241,
513  rgba5551 = 0x35314152,
515  bgra5551 = 0x35314142,
517  rgb565 = 0x36314752,
519  bgr565 = 0x36314742,
521  rgb888 = 0x34324752,
523  bgr888 = 0x34324742,
525  xbgr8888 = 0x34324258,
527  rgbx8888 = 0x34325852,
529  bgrx8888 = 0x34325842,
531  abgr8888 = 0x34324241,
533  rgba8888 = 0x34324152,
535  bgra8888 = 0x34324142,
537  xrgb2101010 = 0x30335258,
539  xbgr2101010 = 0x30334258,
541  rgbx1010102 = 0x30335852,
543  bgrx1010102 = 0x30335842,
545  argb2101010 = 0x30335241,
547  abgr2101010 = 0x30334241,
549  rgba1010102 = 0x30334152,
551  bgra1010102 = 0x30334142,
553  yuyv = 0x56595559,
555  yvyu = 0x55595659,
557  uyvy = 0x59565955,
559  vyuy = 0x59555956,
561  ayuv = 0x56555941,
563  nv12 = 0x3231564e,
565  nv21 = 0x3132564e,
567  nv16 = 0x3631564e,
569  nv61 = 0x3136564e,
571  yuv410 = 0x39565559,
573  yvu410 = 0x39555659,
575  yuv411 = 0x31315559,
577  yvu411 = 0x31315659,
579  yuv420 = 0x32315559,
581  yvu420 = 0x32315659,
583  yuv422 = 0x36315559,
585  yvu422 = 0x36315659,
587  yuv444 = 0x34325559,
589  yvu444 = 0x34325659
590 };
591 
592 
602 class buffer_t : public proxy_t
603 {
604 private:
605  struct events_t : public detail::events_base_t
606  {
607  std::function<void()> release;
608  };
609 
610  static int dispatcher(uint32_t opcode, std::vector<detail::any> args, std::shared_ptr<detail::events_base_t> e);
611 
612  buffer_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag);
613 
614 public:
615  buffer_t();
616  explicit buffer_t(const proxy_t &proxy);
617  buffer_t(wl_buffer *p, wrapper_type t = wrapper_type::standard);
618 
619  buffer_t proxy_create_wrapper();
620 
621  static const std::string interface_name;
622 
623  operator wl_buffer*() const;
624 
641  std::function<void()> &on_release();
642 
643 };
644 
645 
656 class data_offer_t : public proxy_t
657 {
658 private:
659  struct events_t : public detail::events_base_t
660  {
661  std::function<void(std::string)> offer;
662  std::function<void(data_device_manager_dnd_action)> source_actions;
663  std::function<void(data_device_manager_dnd_action)> action;
664  };
665 
666  static int dispatcher(uint32_t opcode, std::vector<detail::any> args, std::shared_ptr<detail::events_base_t> e);
667 
668  data_offer_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag);
669 
670 public:
671  data_offer_t();
672  explicit data_offer_t(const proxy_t &proxy);
673  data_offer_t(wl_data_offer *p, wrapper_type t = wrapper_type::standard);
674 
675  data_offer_t proxy_create_wrapper();
676 
677  static const std::string interface_name;
678 
679  operator wl_data_offer*() const;
680 
701  void accept(uint32_t serial, std::string mime_type);
702 
705  static constexpr std::uint32_t accept_since_version = 1;
706 
728  void receive(std::string mime_type, int fd);
729 
732  static constexpr std::uint32_t receive_since_version = 1;
733 
749  void finish();
750 
753  static constexpr std::uint32_t finish_since_version = 3;
754 
758  bool can_finish() const;
759 
798 
801  static constexpr std::uint32_t set_actions_since_version = 3;
802 
806  bool can_set_actions() const;
807 
815  std::function<void(std::string)> &on_offer();
816 
825  std::function<void(data_device_manager_dnd_action)> &on_source_actions();
826 
867  std::function<void(data_device_manager_dnd_action)> &on_action();
868 
869 };
870 
874 enum class data_offer_error : uint32_t
875  {
877  invalid_finish = 0,
879  invalid_action_mask = 1,
881  invalid_action = 2,
883  invalid_offer = 3
884 };
885 
886 
895 class data_source_t : public proxy_t
896 {
897 private:
898  struct events_t : public detail::events_base_t
899  {
900  std::function<void(std::string)> target;
901  std::function<void(std::string, int)> send;
902  std::function<void()> cancelled;
903  std::function<void()> dnd_drop_performed;
904  std::function<void()> dnd_finished;
905  std::function<void(data_device_manager_dnd_action)> action;
906  };
907 
908  static int dispatcher(uint32_t opcode, std::vector<detail::any> args, std::shared_ptr<detail::events_base_t> e);
909 
910  data_source_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag);
911 
912 public:
913  data_source_t();
914  explicit data_source_t(const proxy_t &proxy);
915  data_source_t(wl_data_source *p, wrapper_type t = wrapper_type::standard);
916 
917  data_source_t proxy_create_wrapper();
918 
919  static const std::string interface_name;
920 
921  operator wl_data_source*() const;
922 
931  void offer(std::string mime_type);
932 
935  static constexpr std::uint32_t offer_since_version = 1;
936 
956 
959  static constexpr std::uint32_t set_actions_since_version = 3;
960 
964  bool can_set_actions() const;
965 
975  std::function<void(std::string)> &on_target();
976 
986  std::function<void(std::string, int)> &on_send();
987 
1012  std::function<void()> &on_cancelled();
1013 
1027  std::function<void()> &on_dnd_drop_performed();
1028 
1039  std::function<void()> &on_dnd_finished();
1040 
1071  std::function<void(data_device_manager_dnd_action)> &on_action();
1072 
1073 };
1074 
1078 enum class data_source_error : uint32_t
1079  {
1081  invalid_action_mask = 0,
1083  invalid_source = 1
1084 };
1085 
1086 
1096 class data_device_t : public proxy_t
1097 {
1098 private:
1099  struct events_t : public detail::events_base_t
1100  {
1101  std::function<void(data_offer_t)> data_offer;
1102  std::function<void(uint32_t, surface_t, double, double, data_offer_t)> enter;
1103  std::function<void()> leave;
1104  std::function<void(uint32_t, double, double)> motion;
1105  std::function<void()> drop;
1106  std::function<void(data_offer_t)> selection;
1107  };
1108 
1109  static int dispatcher(uint32_t opcode, std::vector<detail::any> args, std::shared_ptr<detail::events_base_t> e);
1110 
1111  data_device_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag);
1112 
1113 public:
1114  data_device_t();
1115  explicit data_device_t(const proxy_t &proxy);
1116  data_device_t(wl_data_device *p, wrapper_type t = wrapper_type::standard);
1117 
1118  data_device_t proxy_create_wrapper();
1119 
1120  static const std::string interface_name;
1121 
1122  operator wl_data_device*() const;
1123 
1159  void start_drag(data_source_t source, surface_t origin, surface_t icon, uint32_t serial);
1160 
1163  static constexpr std::uint32_t start_drag_since_version = 1;
1164 
1175  void set_selection(data_source_t source, uint32_t serial);
1176 
1179  static constexpr std::uint32_t set_selection_since_version = 1;
1180 
1186  void release();
1187 
1190  static constexpr std::uint32_t release_since_version = 2;
1191 
1195  bool can_release() const;
1196 
1209  std::function<void(data_offer_t)> &on_data_offer();
1210 
1224  std::function<void(uint32_t, surface_t, double, double, data_offer_t)> &on_enter();
1225 
1233  std::function<void()> &on_leave();
1234 
1246  std::function<void(uint32_t, double, double)> &on_motion();
1247 
1265  std::function<void()> &on_drop();
1266 
1283  std::function<void(data_offer_t)> &on_selection();
1284 
1285 };
1286 
1290 enum class data_device_error : uint32_t
1291  {
1293  role = 0
1294 };
1295 
1296 
1312 {
1313 private:
1314  struct events_t : public detail::events_base_t
1315  {
1316  };
1317 
1318  static int dispatcher(uint32_t opcode, std::vector<detail::any> args, std::shared_ptr<detail::events_base_t> e);
1319 
1320  data_device_manager_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag);
1321 
1322 public:
1324  explicit data_device_manager_t(const proxy_t &proxy);
1325  data_device_manager_t(wl_data_device_manager *p, wrapper_type t = wrapper_type::standard);
1326 
1327  data_device_manager_t proxy_create_wrapper();
1328 
1329  static const std::string interface_name;
1330 
1331  operator wl_data_device_manager*() const;
1332 
1340 
1343  static constexpr std::uint32_t create_data_source_since_version = 1;
1344 
1353 
1356  static constexpr std::uint32_t get_data_device_since_version = 1;
1357 
1358 };
1359 
1387 struct data_device_manager_dnd_action : public detail::bitfield<3, 6>
1388 {
1389  data_device_manager_dnd_action(const detail::bitfield<3, 6> &b)
1390  : detail::bitfield<3, 6>(b) {}
1391  data_device_manager_dnd_action(const uint32_t value)
1392  : detail::bitfield<3, 6>(value) {}
1394  static const detail::bitfield<3, 6> none;
1396  static const detail::bitfield<3, 6> copy;
1398  static const detail::bitfield<3, 6> move;
1400  static const detail::bitfield<3, 6> ask;
1401 };
1402 
1403 
1416 class shell_t : public proxy_t
1417 {
1418 private:
1419  struct events_t : public detail::events_base_t
1420  {
1421  };
1422 
1423  static int dispatcher(uint32_t opcode, std::vector<detail::any> args, std::shared_ptr<detail::events_base_t> e);
1424 
1425  shell_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag);
1426 
1427 public:
1428  shell_t();
1429  explicit shell_t(const proxy_t &proxy);
1430  shell_t(wl_shell *p, wrapper_type t = wrapper_type::standard);
1431 
1432  shell_t proxy_create_wrapper();
1433 
1434  static const std::string interface_name;
1435 
1436  operator wl_shell*() const;
1437 
1450 
1453  static constexpr std::uint32_t get_shell_surface_since_version = 1;
1454 
1455 };
1456 
1460 enum class shell_error : uint32_t
1461  {
1463  role = 0
1464 };
1465 
1466 
1482 class shell_surface_t : public proxy_t
1483 {
1484 private:
1485  struct events_t : public detail::events_base_t
1486  {
1487  std::function<void(uint32_t)> ping;
1488  std::function<void(shell_surface_resize, int32_t, int32_t)> configure;
1489  std::function<void()> popup_done;
1490  };
1491 
1492  static int dispatcher(uint32_t opcode, std::vector<detail::any> args, std::shared_ptr<detail::events_base_t> e);
1493 
1494  shell_surface_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag);
1495 
1496 public:
1497  shell_surface_t();
1498  explicit shell_surface_t(const proxy_t &proxy);
1499  shell_surface_t(wl_shell_surface *p, wrapper_type t = wrapper_type::standard);
1500 
1501  shell_surface_t proxy_create_wrapper();
1502 
1503  static const std::string interface_name;
1504 
1505  operator wl_shell_surface*() const;
1506 
1514  void pong(uint32_t serial);
1515 
1518  static constexpr std::uint32_t pong_since_version = 1;
1519 
1531  void move(seat_t seat, uint32_t serial);
1532 
1535  static constexpr std::uint32_t move_since_version = 1;
1536 
1549  void resize(seat_t seat, uint32_t serial, shell_surface_resize edges);
1550 
1553  static constexpr std::uint32_t resize_since_version = 1;
1554 
1562  void set_toplevel();
1563 
1566  static constexpr std::uint32_t set_toplevel_since_version = 1;
1567 
1583  void set_transient(surface_t parent, int32_t x, int32_t y, shell_surface_transient flags);
1584 
1587  static constexpr std::uint32_t set_transient_since_version = 1;
1588 
1629  void set_fullscreen(shell_surface_fullscreen_method method, uint32_t framerate, output_t output);
1630 
1633  static constexpr std::uint32_t set_fullscreen_since_version = 1;
1634 
1664  void set_popup(seat_t seat, uint32_t serial, surface_t parent, int32_t x, int32_t y, shell_surface_transient flags);
1665 
1668  static constexpr std::uint32_t set_popup_since_version = 1;
1669 
1693  void set_maximized(output_t output);
1694 
1697  static constexpr std::uint32_t set_maximized_since_version = 1;
1698 
1711  void set_title(std::string title);
1712 
1715  static constexpr std::uint32_t set_title_since_version = 1;
1716 
1728  void set_class(std::string class_);
1729 
1732  static constexpr std::uint32_t set_class_since_version = 1;
1733 
1741  std::function<void(uint32_t)> &on_ping();
1742 
1767  std::function<void(shell_surface_resize, int32_t, int32_t)> &on_configure();
1768 
1776  std::function<void()> &on_popup_done();
1777 
1778 };
1779 
1788 struct shell_surface_resize : public detail::bitfield<4, 8>
1789 {
1790  shell_surface_resize(const detail::bitfield<4, 8> &b)
1791  : detail::bitfield<4, 8>(b) {}
1792  shell_surface_resize(const uint32_t value)
1793  : detail::bitfield<4, 8>(value) {}
1795  static const detail::bitfield<4, 8> none;
1797  static const detail::bitfield<4, 8> top;
1799  static const detail::bitfield<4, 8> bottom;
1801  static const detail::bitfield<4, 8> left;
1803  static const detail::bitfield<4, 8> top_left;
1805  static const detail::bitfield<4, 8> bottom_left;
1807  static const detail::bitfield<4, 8> right;
1809  static const detail::bitfield<4, 8> top_right;
1811  static const detail::bitfield<4, 8> bottom_right;
1812 };
1813 
1820 struct shell_surface_transient : public detail::bitfield<1, 9>
1821 {
1822  shell_surface_transient(const detail::bitfield<1, 9> &b)
1823  : detail::bitfield<1, 9>(b) {}
1824  shell_surface_transient(const uint32_t value)
1825  : detail::bitfield<1, 9>(value) {}
1827  static const detail::bitfield<1, 9> inactive;
1828 };
1829 
1837 enum class shell_surface_fullscreen_method : uint32_t
1838  {
1840  _default = 0,
1842  scale = 1,
1844  driver = 2,
1846  fill = 3
1847 };
1848 
1849 
1893 class surface_t : public proxy_t
1894 {
1895 private:
1896  struct events_t : public detail::events_base_t
1897  {
1898  std::function<void(output_t)> enter;
1899  std::function<void(output_t)> leave;
1900  };
1901 
1902  static int dispatcher(uint32_t opcode, std::vector<detail::any> args, std::shared_ptr<detail::events_base_t> e);
1903 
1904  surface_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag);
1905 
1906 public:
1907  surface_t();
1908  explicit surface_t(const proxy_t &proxy);
1909  surface_t(wl_surface *p, wrapper_type t = wrapper_type::standard);
1910 
1911  surface_t proxy_create_wrapper();
1912 
1913  static const std::string interface_name;
1914 
1915  operator wl_surface*() const;
1916 
1963  void attach(buffer_t buffer, int32_t x, int32_t y);
1964 
1967  static constexpr std::uint32_t attach_since_version = 1;
1968 
1998  void damage(int32_t x, int32_t y, int32_t width, int32_t height);
1999 
2002  static constexpr std::uint32_t damage_since_version = 1;
2003 
2041  callback_t frame();
2042 
2045  static constexpr std::uint32_t frame_since_version = 1;
2046 
2076  void set_opaque_region(region_t region);
2077 
2080  static constexpr std::uint32_t set_opaque_region_since_version = 1;
2081 
2109  void set_input_region(region_t region);
2110 
2113  static constexpr std::uint32_t set_input_region_since_version = 1;
2114 
2136  void commit();
2137 
2140  static constexpr std::uint32_t commit_since_version = 1;
2141 
2176  void set_buffer_transform(output_transform transform);
2177 
2180  static constexpr std::uint32_t set_buffer_transform_since_version = 2;
2181 
2185  bool can_set_buffer_transform() const;
2186 
2215  void set_buffer_scale(int32_t scale);
2216 
2219  static constexpr std::uint32_t set_buffer_scale_since_version = 3;
2220 
2224  bool can_set_buffer_scale() const;
2225 
2266  void damage_buffer(int32_t x, int32_t y, int32_t width, int32_t height);
2267 
2270  static constexpr std::uint32_t damage_buffer_since_version = 4;
2271 
2275  bool can_damage_buffer() const;
2276 
2287  std::function<void(output_t)> &on_enter();
2288 
2297  std::function<void(output_t)> &on_leave();
2298 
2299 };
2300 
2306 enum class surface_error : uint32_t
2307  {
2309  invalid_scale = 0,
2311  invalid_transform = 1
2312 };
2313 
2314 
2323 class seat_t : public proxy_t
2324 {
2325 private:
2326  struct events_t : public detail::events_base_t
2327  {
2328  std::function<void(seat_capability)> capabilities;
2329  std::function<void(std::string)> name;
2330  };
2331 
2332  static int dispatcher(uint32_t opcode, std::vector<detail::any> args, std::shared_ptr<detail::events_base_t> e);
2333 
2334  seat_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag);
2335 
2336 public:
2337  seat_t();
2338  explicit seat_t(const proxy_t &proxy);
2339  seat_t(wl_seat *p, wrapper_type t = wrapper_type::standard);
2340 
2341  seat_t proxy_create_wrapper();
2342 
2343  static const std::string interface_name;
2344 
2345  operator wl_seat*() const;
2346 
2360 
2363  static constexpr std::uint32_t get_pointer_since_version = 1;
2364 
2378 
2381  static constexpr std::uint32_t get_keyboard_since_version = 1;
2382 
2395  touch_t get_touch();
2396 
2399  static constexpr std::uint32_t get_touch_since_version = 1;
2400 
2407  void release();
2408 
2411  static constexpr std::uint32_t release_since_version = 5;
2412 
2416  bool can_release() const;
2417 
2447  std::function<void(seat_capability)> &on_capabilities();
2448 
2457  std::function<void(std::string)> &on_name();
2458 
2459 };
2460 
2467 struct seat_capability : public detail::bitfield<3, 12>
2468 {
2469  seat_capability(const detail::bitfield<3, 12> &b)
2470  : detail::bitfield<3, 12>(b) {}
2471  seat_capability(const uint32_t value)
2472  : detail::bitfield<3, 12>(value) {}
2474  static const detail::bitfield<3, 12> pointer;
2476  static const detail::bitfield<3, 12> keyboard;
2478  static const detail::bitfield<3, 12> touch;
2479 };
2480 
2481 
2494 class pointer_t : public proxy_t
2495 {
2496 private:
2497  struct events_t : public detail::events_base_t
2498  {
2499  std::function<void(uint32_t, surface_t, double, double)> enter;
2500  std::function<void(uint32_t, surface_t)> leave;
2501  std::function<void(uint32_t, double, double)> motion;
2502  std::function<void(uint32_t, uint32_t, uint32_t, pointer_button_state)> button;
2503  std::function<void(uint32_t, pointer_axis, double)> axis;
2504  std::function<void()> frame;
2505  std::function<void(pointer_axis_source)> axis_source;
2506  std::function<void(uint32_t, pointer_axis)> axis_stop;
2507  std::function<void(pointer_axis, int32_t)> axis_discrete;
2508  };
2509 
2510  static int dispatcher(uint32_t opcode, std::vector<detail::any> args, std::shared_ptr<detail::events_base_t> e);
2511 
2512  pointer_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag);
2513 
2514 public:
2515  pointer_t();
2516  explicit pointer_t(const proxy_t &proxy);
2517  pointer_t(wl_pointer *p, wrapper_type t = wrapper_type::standard);
2518 
2519  pointer_t proxy_create_wrapper();
2520 
2521  static const std::string interface_name;
2522 
2523  operator wl_pointer*() const;
2524 
2564  void set_cursor(uint32_t serial, surface_t surface, int32_t hotspot_x, int32_t hotspot_y);
2565 
2568  static constexpr std::uint32_t set_cursor_since_version = 1;
2569 
2579  void release();
2580 
2583  static constexpr std::uint32_t release_since_version = 3;
2584 
2588  bool can_release() const;
2589 
2604  std::function<void(uint32_t, surface_t, double, double)> &on_enter();
2605 
2617  std::function<void(uint32_t, surface_t)> &on_leave();
2618 
2629  std::function<void(uint32_t, double, double)> &on_motion();
2630 
2653  std::function<void(uint32_t, uint32_t, uint32_t, pointer_button_state)> &on_button();
2654 
2678  std::function<void(uint32_t, pointer_axis, double)> &on_axis();
2679 
2718  std::function<void()> &on_frame();
2719 
2750  std::function<void(pointer_axis_source)> &on_axis_source();
2751 
2772  std::function<void(uint32_t, pointer_axis)> &on_axis_stop();
2773 
2806  std::function<void(pointer_axis, int32_t)> &on_axis_discrete();
2807 
2808 };
2809 
2813 enum class pointer_error : uint32_t
2814  {
2816  role = 0
2817 };
2818 
2825 enum class pointer_button_state : uint32_t
2826  {
2828  released = 0,
2830  pressed = 1
2831 };
2832 
2838 enum class pointer_axis : uint32_t
2839  {
2841  vertical_scroll = 0,
2843  horizontal_scroll = 1
2844 };
2845 
2866 enum class pointer_axis_source : uint32_t
2867  {
2869  wheel = 0,
2871  finger = 1,
2873  continuous = 2,
2875  wheel_tilt = 3
2876 };
2877 
2878 
2885 class keyboard_t : public proxy_t
2886 {
2887 private:
2888  struct events_t : public detail::events_base_t
2889  {
2890  std::function<void(keyboard_keymap_format, int, uint32_t)> keymap;
2891  std::function<void(uint32_t, surface_t, array_t)> enter;
2892  std::function<void(uint32_t, surface_t)> leave;
2893  std::function<void(uint32_t, uint32_t, uint32_t, keyboard_key_state)> key;
2894  std::function<void(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t)> modifiers;
2895  std::function<void(int32_t, int32_t)> repeat_info;
2896  };
2897 
2898  static int dispatcher(uint32_t opcode, std::vector<detail::any> args, std::shared_ptr<detail::events_base_t> e);
2899 
2900  keyboard_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag);
2901 
2902 public:
2903  keyboard_t();
2904  explicit keyboard_t(const proxy_t &proxy);
2905  keyboard_t(wl_keyboard *p, wrapper_type t = wrapper_type::standard);
2906 
2907  keyboard_t proxy_create_wrapper();
2908 
2909  static const std::string interface_name;
2910 
2911  operator wl_keyboard*() const;
2912 
2916  void release();
2917 
2920  static constexpr std::uint32_t release_since_version = 3;
2921 
2925  bool can_release() const;
2926 
2936  std::function<void(keyboard_keymap_format, int, uint32_t)> &on_keymap();
2937 
2947  std::function<void(uint32_t, surface_t, array_t)> &on_enter();
2948 
2960  std::function<void(uint32_t, surface_t)> &on_leave();
2961 
2973  std::function<void(uint32_t, uint32_t, uint32_t, keyboard_key_state)> &on_key();
2974 
2986  std::function<void(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t)> &on_modifiers();
2987 
3006  std::function<void(int32_t, int32_t)> &on_repeat_info();
3007 
3008 };
3009 
3016 enum class keyboard_keymap_format : uint32_t
3017  {
3019  no_keymap = 0,
3021  xkb_v1 = 1
3022 };
3023 
3029 enum class keyboard_key_state : uint32_t
3030  {
3032  released = 0,
3034  pressed = 1
3035 };
3036 
3037 
3050 class touch_t : public proxy_t
3051 {
3052 private:
3053  struct events_t : public detail::events_base_t
3054  {
3055  std::function<void(uint32_t, uint32_t, surface_t, int32_t, double, double)> down;
3056  std::function<void(uint32_t, uint32_t, int32_t)> up;
3057  std::function<void(uint32_t, int32_t, double, double)> motion;
3058  std::function<void()> frame;
3059  std::function<void()> cancel;
3060  std::function<void(int32_t, double, double)> shape;
3061  std::function<void(int32_t, double)> orientation;
3062  };
3063 
3064  static int dispatcher(uint32_t opcode, std::vector<detail::any> args, std::shared_ptr<detail::events_base_t> e);
3065 
3066  touch_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag);
3067 
3068 public:
3069  touch_t();
3070  explicit touch_t(const proxy_t &proxy);
3071  touch_t(wl_touch *p, wrapper_type t = wrapper_type::standard);
3072 
3073  touch_t proxy_create_wrapper();
3074 
3075  static const std::string interface_name;
3076 
3077  operator wl_touch*() const;
3078 
3082  void release();
3083 
3086  static constexpr std::uint32_t release_since_version = 3;
3087 
3091  bool can_release() const;
3092 
3107  std::function<void(uint32_t, uint32_t, surface_t, int32_t, double, double)> &on_down();
3108 
3119  std::function<void(uint32_t, uint32_t, int32_t)> &on_up();
3120 
3130  std::function<void(uint32_t, int32_t, double, double)> &on_motion();
3131 
3144  std::function<void()> &on_frame();
3145 
3156  std::function<void()> &on_cancel();
3157 
3190  std::function<void(int32_t, double, double)> &on_shape();
3191 
3221  std::function<void(int32_t, double)> &on_orientation();
3222 
3223 };
3224 
3225 
3236 class output_t : public proxy_t
3237 {
3238 private:
3239  struct events_t : public detail::events_base_t
3240  {
3241  std::function<void(int32_t, int32_t, int32_t, int32_t, output_subpixel, std::string, std::string, output_transform)> geometry;
3242  std::function<void(output_mode, int32_t, int32_t, int32_t)> mode;
3243  std::function<void()> done;
3244  std::function<void(int32_t)> scale;
3245  };
3246 
3247  static int dispatcher(uint32_t opcode, std::vector<detail::any> args, std::shared_ptr<detail::events_base_t> e);
3248 
3249  output_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag);
3250 
3251 public:
3252  output_t();
3253  explicit output_t(const proxy_t &proxy);
3254  output_t(wl_output *p, wrapper_type t = wrapper_type::standard);
3255 
3256  output_t proxy_create_wrapper();
3257 
3258  static const std::string interface_name;
3259 
3260  operator wl_output*() const;
3261 
3268  void release();
3269 
3272  static constexpr std::uint32_t release_since_version = 3;
3273 
3277  bool can_release() const;
3278 
3294  std::function<void(int32_t, int32_t, int32_t, int32_t, output_subpixel, std::string, std::string, output_transform)> &on_geometry();
3295 
3317  std::function<void(output_mode, int32_t, int32_t, int32_t)> &on_mode();
3318 
3328  std::function<void()> &on_done();
3329 
3353  std::function<void(int32_t)> &on_scale();
3354 
3355 };
3356 
3363 enum class output_subpixel : uint32_t
3364  {
3366  unknown = 0,
3368  none = 1,
3370  horizontal_rgb = 2,
3372  horizontal_bgr = 3,
3374  vertical_rgb = 4,
3376  vertical_bgr = 5
3377 };
3378 
3394 struct output_transform : public detail::bitfield<3, 20>
3395 {
3396  output_transform(const detail::bitfield<3, 20> &b)
3397  : detail::bitfield<3, 20>(b) {}
3398  output_transform(const uint32_t value)
3399  : detail::bitfield<3, 20>(value) {}
3401  static const detail::bitfield<3, 20> normal;
3403  static const detail::bitfield<3, 20> _90;
3405  static const detail::bitfield<3, 20> _180;
3407  static const detail::bitfield<3, 20> _270;
3409  static const detail::bitfield<3, 20> flipped;
3411  static const detail::bitfield<3, 20> flipped_90;
3413  static const detail::bitfield<3, 20> flipped_180;
3415  static const detail::bitfield<3, 20> flipped_270;
3416 };
3417 
3424 struct output_mode : public detail::bitfield<2, 21>
3425 {
3426  output_mode(const detail::bitfield<2, 21> &b)
3427  : detail::bitfield<2, 21>(b) {}
3428  output_mode(const uint32_t value)
3429  : detail::bitfield<2, 21>(value) {}
3431  static const detail::bitfield<2, 21> current;
3433  static const detail::bitfield<2, 21> preferred;
3434 };
3435 
3436 
3445 class region_t : public proxy_t
3446 {
3447 private:
3448  struct events_t : public detail::events_base_t
3449  {
3450  };
3451 
3452  static int dispatcher(uint32_t opcode, std::vector<detail::any> args, std::shared_ptr<detail::events_base_t> e);
3453 
3454  region_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag);
3455 
3456 public:
3457  region_t();
3458  explicit region_t(const proxy_t &proxy);
3459  region_t(wl_region *p, wrapper_type t = wrapper_type::standard);
3460 
3461  region_t proxy_create_wrapper();
3462 
3463  static const std::string interface_name;
3464 
3465  operator wl_region*() const;
3466 
3476  void add(int32_t x, int32_t y, int32_t width, int32_t height);
3477 
3480  static constexpr std::uint32_t add_since_version = 1;
3481 
3491  void subtract(int32_t x, int32_t y, int32_t width, int32_t height);
3492 
3495  static constexpr std::uint32_t subtract_since_version = 1;
3496 
3497 };
3498 
3499 
3523 class subcompositor_t : public proxy_t
3524 {
3525 private:
3526  struct events_t : public detail::events_base_t
3527  {
3528  };
3529 
3530  static int dispatcher(uint32_t opcode, std::vector<detail::any> args, std::shared_ptr<detail::events_base_t> e);
3531 
3532  subcompositor_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag);
3533 
3534 public:
3535  subcompositor_t();
3536  explicit subcompositor_t(const proxy_t &proxy);
3537  subcompositor_t(wl_subcompositor *p, wrapper_type t = wrapper_type::standard);
3538 
3539  subcompositor_t proxy_create_wrapper();
3540 
3541  static const std::string interface_name;
3542 
3543  operator wl_subcompositor*() const;
3544 
3568 
3571  static constexpr std::uint32_t get_subsurface_since_version = 1;
3572 
3573 };
3574 
3578 enum class subcompositor_error : uint32_t
3579  {
3581  bad_surface = 0
3582 };
3583 
3584 
3638 class subsurface_t : public proxy_t
3639 {
3640 private:
3641  struct events_t : public detail::events_base_t
3642  {
3643  };
3644 
3645  static int dispatcher(uint32_t opcode, std::vector<detail::any> args, std::shared_ptr<detail::events_base_t> e);
3646 
3647  subsurface_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag);
3648 
3649 public:
3650  subsurface_t();
3651  explicit subsurface_t(const proxy_t &proxy);
3652  subsurface_t(wl_subsurface *p, wrapper_type t = wrapper_type::standard);
3653 
3654  subsurface_t proxy_create_wrapper();
3655 
3656  static const std::string interface_name;
3657 
3658  operator wl_subsurface*() const;
3659 
3682  void set_position(int32_t x, int32_t y);
3683 
3686  static constexpr std::uint32_t set_position_since_version = 1;
3687 
3708  void place_above(surface_t sibling);
3709 
3712  static constexpr std::uint32_t place_above_since_version = 1;
3713 
3721  void place_below(surface_t sibling);
3722 
3725  static constexpr std::uint32_t place_below_since_version = 1;
3726 
3744  void set_sync();
3745 
3748  static constexpr std::uint32_t set_sync_since_version = 1;
3749 
3773  void set_desync();
3774 
3777  static constexpr std::uint32_t set_desync_since_version = 1;
3778 
3779 };
3780 
3784 enum class subsurface_error : uint32_t
3785  {
3787  bad_surface = 0
3788 };
3789 
3790 
3791 
3792 }
shared memory support
static const detail::bitfield< 4, 8 > bottom
bottom edge
std::function< void(uint32_t)> & on_ping()
ping client
static constexpr std::uint32_t release_since_version
Minimum protocol version required for the release function.
std::function< void(std::string, int)> & on_send()
send the data
void set_buffer_scale(int32_t scale)
sets the buffer scaling factor
std::function< void()> & on_popup_done()
popup interaction is done
void release()
destroy data device
void pong(uint32_t serial)
respond to a ping event
std::function< void(shm_format)> & on_format()
pixel format description
static const detail::bitfield< 2, 21 > current
indicates this is the current mode
std::function< void(uint32_t)> & on_done()
done event
std::function< void(uint32_t, uint32_t, surface_t, int32_t, double, double)> & on_down()
touch down event and beginning of a touch sequence
std::function< void(std::string)> & on_offer()
advertise offered mime type
void move(seat_t seat, uint32_t serial)
start an interactive move
content for a wl_surface
static constexpr std::uint32_t commit_since_version
Minimum protocol version required for the commit function.
void set_actions(data_device_manager_dnd_action dnd_actions)
set the available drag-and-drop actions
std::function< void(uint32_t, surface_t)> & on_leave()
leave event
bool can_set_buffer_transform() const
Check whether the set_buffer_transform function is available with the currently bound version of the ...
std::function< void(int32_t, int32_t, int32_t, int32_t, output_subpixel, std::string, std::string, output_transform)> & on_geometry()
properties of the output
static constexpr std::uint32_t release_since_version
Minimum protocol version required for the release function.
void add(int32_t x, int32_t y, int32_t width, int32_t height)
add rectangle to region
std::function< void(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t)> & on_modifiers()
modifier and group state
shm_pool_t create_pool(int fd, int32_t size)
create a shm pool
void set_selection(data_source_t source, uint32_t serial)
copy data to the selection
static constexpr std::uint32_t move_since_version
Minimum protocol version required for the move function.
bool can_finish() const
Check whether the finish function is available with the currently bound version of the protocol.
bool can_set_actions() const
Check whether the set_actions function is available with the currently bound version of the protocol.
void set_fullscreen(shell_surface_fullscreen_method method, uint32_t framerate, output_t output)
make the surface a fullscreen surface
static const detail::bitfield< 3, 6 > ask
ask action
group of input devices
bool can_release() const
Check whether the release function is available with the currently bound version of the protocol.
static constexpr std::uint32_t receive_since_version
Minimum protocol version required for the receive function.
std::function< void(uint32_t)> & on_global_remove()
announce removal of global object
std::function< void()> & on_frame()
end of touch frame event
std::function< void()> & on_done()
sent all information about output
std::function< void(uint32_t, uint32_t, uint32_t, keyboard_key_state)> & on_key()
key event
static const detail::bitfield< 3, 20 > flipped_90
flip and rotate 90 degrees counter-clockwise
bool can_set_actions() const
Check whether the set_actions function is available with the currently bound version of the protocol.
static constexpr std::uint32_t release_since_version
Minimum protocol version required for the release function.
void set_class(std::string class_)
set surface class
static constexpr std::uint32_t create_surface_since_version
Minimum protocol version required for the create_surface function.
static const detail::bitfield< 4, 8 > top
top edge
proxy_t bind(uint32_t name, proxy_t &interface, uint32_t version)
bind an object to the display
static constexpr std::uint32_t create_region_since_version
Minimum protocol version required for the create_region function.
bool can_damage_buffer() const
Check whether the damage_buffer function is available with the currently bound version of the protoco...
desktop-style metadata interface
static constexpr std::uint32_t set_maximized_since_version
Minimum protocol version required for the set_maximized function.
static const detail::bitfield< 1, 9 > inactive
do not set keyboard focus
static constexpr std::uint32_t place_above_since_version
Minimum protocol version required for the place_above function.
buffer_t create_buffer(int32_t offset, int32_t width, int32_t height, int32_t stride, shm_format format)
create a buffer from the pool
void set_position(int32_t x, int32_t y)
reposition the sub-surface
std::function< void(uint32_t, pointer_axis)> & on_axis_stop()
axis stop event
static constexpr std::uint32_t set_title_since_version
Minimum protocol version required for the set_title function.
static constexpr std::uint32_t create_data_source_since_version
Minimum protocol version required for the create_data_source function.
data_device_t get_data_device(seat_t seat)
create a new data device
static constexpr std::uint32_t set_toplevel_since_version
Minimum protocol version required for the set_toplevel function.
compositor output region
static constexpr std::uint32_t damage_buffer_since_version
Minimum protocol version required for the damage_buffer function.
std::function< void()> & on_dnd_finished()
the drag-and-drop operation concluded
shell_surface_t get_shell_surface(surface_t surface)
create a shell surface from a surface
std::function< void(uint32_t, surface_t, double, double, data_offer_t)> & on_enter()
initiate drag-and-drop session
static constexpr std::uint32_t bind_since_version
Minimum protocol version required for the bind function.
void set_cursor(uint32_t serial, surface_t surface, int32_t hotspot_x, int32_t hotspot_y)
set the pointer surface
static constexpr std::uint32_t get_keyboard_since_version
Minimum protocol version required for the get_keyboard function.
void release()
release the output object
void set_title(std::string title)
set surface title
void release()
release the keyboard object
static constexpr std::uint32_t set_position_since_version
Minimum protocol version required for the set_position function.
static constexpr std::uint32_t resize_since_version
Minimum protocol version required for the resize function.
static constexpr std::uint32_t release_since_version
Minimum protocol version required for the release function.
void finish()
the offer will no longer be used
std::function< void()> & on_dnd_drop_performed()
the drag-and-drop operation physically finished
static constexpr std::uint32_t get_data_device_since_version
Minimum protocol version required for the get_data_device function.
void commit()
commit pending surface state
static const detail::bitfield< 3, 20 > flipped_180
flip and rotate 180 degrees counter-clockwise
void receive(std::string mime_type, int fd)
request that the data is transferred
std::function< void()> & on_release()
compositor releases buffer
void set_maximized(output_t output)
make the surface a maximized surface
static constexpr std::uint32_t release_since_version
Minimum protocol version required for the release function.
static constexpr std::uint32_t set_cursor_since_version
Minimum protocol version required for the set_cursor function.
std::function< void(keyboard_keymap_format, int, uint32_t)> & on_keymap()
keyboard mapping
void set_buffer_transform(output_transform transform)
sets the buffer transformation
void offer(std::string mime_type)
add an offered mime type
static constexpr std::uint32_t damage_since_version
Minimum protocol version required for the damage function.
std::function< void(uint32_t, uint32_t, uint32_t, pointer_button_state)> & on_button()
pointer button event
std::function< void(uint32_t, std::string, uint32_t)> & on_global()
announce global object
void set_popup(seat_t seat, uint32_t serial, surface_t parent, int32_t x, int32_t y, shell_surface_transient flags)
make the surface a popup surface
static constexpr std::uint32_t set_selection_since_version
Minimum protocol version required for the set_selection function.
pointer_t get_pointer()
return pointer object
static constexpr std::uint32_t set_transient_since_version
Minimum protocol version required for the set_transient function.
void release()
release the seat object
static constexpr std::uint32_t set_sync_since_version
Minimum protocol version required for the set_sync function.
void resize(seat_t seat, uint32_t serial, shell_surface_resize edges)
start an interactive resize
global registry object
static const detail::bitfield< 3, 6 > none
no action
std::function< void(data_offer_t)> & on_data_offer()
introduce a new wl_data_offer
std::function< void()> & on_drop()
end drag-and-drop session successfully
the compositor singleton
bool can_release() const
Check whether the release function is available with the currently bound version of the protocol.
std::function< void(output_t)> & on_enter()
surface enters an output
std::function< void(uint32_t, double, double)> & on_motion()
drag-and-drop session motion
static const detail::bitfield< 3, 12 > pointer
the seat has pointer devices
static constexpr std::uint32_t set_fullscreen_since_version
Minimum protocol version required for the set_fullscreen function.
void set_actions(data_device_manager_dnd_action dnd_actions, data_device_manager_dnd_action preferred_action)
set the available/preferred drag-and-drop actions
static const detail::bitfield< 3, 6 > copy
copy action
bool can_release() const
Check whether the release function is available with the currently bound version of the protocol.
static constexpr std::uint32_t add_since_version
Minimum protocol version required for the add function.
static constexpr std::uint32_t get_pointer_since_version
Minimum protocol version required for the get_pointer function.
std::function< void(uint32_t, surface_t, array_t)> & on_enter()
enter event
std::function< void(uint32_t, uint32_t, int32_t)> & on_up()
end of a touch event sequence
static constexpr std::uint32_t get_touch_since_version
Minimum protocol version required for the get_touch function.
void start_drag(data_source_t source, surface_t origin, surface_t icon, uint32_t serial)
start drag-and-drop operation
static const detail::bitfield< 4, 8 > right
right edge
static const detail::bitfield< 4, 8 > top_left
top and left edges
static const detail::bitfield< 3, 20 > flipped
180 degree flip around a vertical axis
void resize(int32_t size)
change the size of the pool mapping
static const detail::bitfield< 4, 8 > bottom_right
bottom and right edges
data_source_t create_data_source()
create a new data source
bool can_release() const
Check whether the release function is available with the currently bound version of the protocol.
std::function< void(uint32_t, surface_t)> & on_leave()
leave event
void subtract(int32_t x, int32_t y, int32_t width, int32_t height)
subtract rectangle from region
static constexpr std::uint32_t set_class_since_version
Minimum protocol version required for the set_class function.
void set_input_region(region_t region)
set input region
bool can_release() const
Check whether the release function is available with the currently bound version of the protocol.
static constexpr std::uint32_t set_opaque_region_since_version
Minimum protocol version required for the set_opaque_region function.
static const detail::bitfield< 3, 12 > keyboard
the seat has one or more keyboards
static const detail::bitfield< 3, 20 > flipped_270
flip and rotate 270 degrees counter-clockwise
sub-surface interface to a wl_surface
void release()
release the pointer object
bool can_release() const
Check whether the release function is available with the currently bound version of the protocol.
Represents a protocol object on the client side.
subsurface_t get_subsurface(surface_t surface, surface_t parent)
give a surface the role sub-surface
void release()
release the touch object
static const detail::bitfield< 3, 12 > touch
the seat has touch devices
void set_desync()
set sub-surface to desynchronized mode
std::function< void()> & on_frame()
end of a pointer event sequence
static constexpr std::uint32_t place_below_since_version
Minimum protocol version required for the place_below function.
static constexpr std::uint32_t finish_since_version
Minimum protocol version required for the finish function.
std::function< void()> & on_cancel()
touch session cancelled
void set_toplevel()
make the surface a toplevel surface
static const detail::bitfield< 4, 8 > top_right
top and right edges
create desktop-style surfaces
std::function< void(data_offer_t)> & on_selection()
advertise new selection
std::function< void(uint32_t, double, double)> & on_motion()
pointer motion event
std::function< void(pointer_axis_source)> & on_axis_source()
axis source event
void set_opaque_region(region_t region)
set opaque region
static constexpr std::uint32_t attach_since_version
Minimum protocol version required for the attach function.
void damage(int32_t x, int32_t y, int32_t width, int32_t height)
mark part of the surface damaged
void place_above(surface_t sibling)
restack the sub-surface
static constexpr std::uint32_t set_buffer_scale_since_version
Minimum protocol version required for the set_buffer_scale function.
static constexpr std::uint32_t set_popup_since_version
Minimum protocol version required for the set_popup function.
static constexpr std::uint32_t set_buffer_transform_since_version
Minimum protocol version required for the set_buffer_transform function.
surface_t create_surface()
create new surface
void set_transient(surface_t parent, int32_t x, int32_t y, shell_surface_transient flags)
make the surface a transient surface
void accept(uint32_t serial, std::string mime_type)
accept one of the offered mime types
static constexpr std::uint32_t create_pool_since_version
Minimum protocol version required for the create_pool function.
static const detail::bitfield< 3, 20 > _180
180 degrees counter-clockwise
static constexpr std::uint32_t offer_since_version
Minimum protocol version required for the offer function.
void place_below(surface_t sibling)
restack the sub-surface
std::function< void(data_device_manager_dnd_action)> & on_action()
notify the selected action
static const detail::bitfield< 4, 8 > left
left edge
static constexpr std::uint32_t create_buffer_since_version
Minimum protocol version required for the create_buffer function.
void attach(buffer_t buffer, int32_t x, int32_t y)
set the surface contents
static constexpr std::uint32_t pong_since_version
Minimum protocol version required for the pong function.
std::function< void(data_device_manager_dnd_action)> & on_action()
notify the selected action
static constexpr std::uint32_t set_desync_since_version
Minimum protocol version required for the set_desync function.
static constexpr std::uint32_t resize_since_version
Minimum protocol version required for the resize function.
std::function< void(int32_t)> & on_scale()
output scaling properties
std::function< void(output_t)> & on_leave()
surface leaves an output
static constexpr std::uint32_t get_shell_surface_since_version
Minimum protocol version required for the get_shell_surface function.
std::function< void(std::string)> & on_target()
a target accepts an offered mime type
std::function< void(int32_t, double)> & on_orientation()
update orientation of touch point
static constexpr std::uint32_t set_actions_since_version
Minimum protocol version required for the set_actions function.
std::function< void()> & on_cancelled()
selection was cancelled
static constexpr std::uint32_t get_subsurface_since_version
Minimum protocol version required for the get_subsurface function.
static constexpr std::uint32_t release_since_version
Minimum protocol version required for the release function.
static constexpr std::uint32_t start_drag_since_version
Minimum protocol version required for the start_drag function.
std::function< void(shell_surface_resize, int32_t, int32_t)> & on_configure()
suggest resize
static constexpr std::uint32_t subtract_since_version
Minimum protocol version required for the subtract function.
std::function< void(int32_t, double, double)> & on_shape()
update shape of touch point
std::function< void(seat_capability)> & on_capabilities()
seat capabilities changed
std::function< void(int32_t, int32_t)> & on_repeat_info()
repeat rate and delay
static const detail::bitfield< 4, 8 > bottom_left
bottom and left edges
static const detail::bitfield< 4, 8 > none
no edge
std::function< void(uint32_t, pointer_axis, double)> & on_axis()
axis event
static const detail::bitfield< 2, 21 > preferred
indicates this is the preferred mode
static const detail::bitfield< 3, 20 > normal
no transform
static const detail::bitfield< 3, 20 > _270
270 degrees counter-clockwise
static const detail::bitfield< 3, 20 > _90
90 degrees counter-clockwise
std::function< void(std::string)> & on_name()
unique identifier for this seat
static constexpr std::uint32_t accept_since_version
Minimum protocol version required for the accept function.
std::function< void(output_mode, int32_t, int32_t, int32_t)> & on_mode()
advertise available modes for the output
callback_t frame()
request a frame throttling hint
region_t create_region()
create new region
std::function< void()> & on_leave()
end drag-and-drop session
void damage_buffer(int32_t x, int32_t y, int32_t width, int32_t height)
mark part of the surface damaged using buffer coordinates
std::function< void(data_device_manager_dnd_action)> & on_source_actions()
notify the source-side available actions
void set_sync()
set sub-surface to synchronized mode
keyboard_t get_keyboard()
return keyboard object
std::function< void(uint32_t, int32_t, double, double)> & on_motion()
update of touch point coordinates
static const detail::bitfield< 3, 6 > move
move action
static constexpr std::uint32_t set_actions_since_version
Minimum protocol version required for the set_actions function.
std::function< void(pointer_axis, int32_t)> & on_axis_discrete()
axis click event
std::function< void(uint32_t, surface_t, double, double)> & on_enter()
enter event
bool can_set_buffer_scale() const
Check whether the set_buffer_scale function is available with the currently bound version of the prot...
static constexpr std::uint32_t frame_since_version
Minimum protocol version required for the frame function.
static constexpr std::uint32_t set_input_region_since_version
Minimum protocol version required for the set_input_region function.
transform from framebuffer to output
touch_t get_touch()
return touch object
touchscreen input device