Wayland++  1.0.0
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 enum class seat_error : uint32_t;
62 class pointer_t;
63 enum class pointer_error : uint32_t;
64 enum class pointer_button_state : uint32_t;
65 enum class pointer_axis : uint32_t;
66 enum class pointer_axis_source : uint32_t;
67 class keyboard_t;
68 enum class keyboard_keymap_format : uint32_t;
69 enum class keyboard_key_state : uint32_t;
70 class touch_t;
71 class output_t;
72 enum class output_subpixel : uint32_t;
73 struct output_transform;
74 struct output_mode;
75 class region_t;
76 class subcompositor_t;
77 enum class subcompositor_error : uint32_t;
78 class subsurface_t;
79 enum class subsurface_error : uint32_t;
80 
81 namespace detail
82 {
83  extern const wl_interface display_interface;
84  extern const wl_interface registry_interface;
85  extern const wl_interface callback_interface;
86  extern const wl_interface compositor_interface;
87  extern const wl_interface shm_pool_interface;
88  extern const wl_interface shm_interface;
89  extern const wl_interface buffer_interface;
90  extern const wl_interface data_offer_interface;
91  extern const wl_interface data_source_interface;
92  extern const wl_interface data_device_interface;
93  extern const wl_interface data_device_manager_interface;
94  extern const wl_interface shell_interface;
95  extern const wl_interface shell_surface_interface;
96  extern const wl_interface surface_interface;
97  extern const wl_interface seat_interface;
98  extern const wl_interface pointer_interface;
99  extern const wl_interface keyboard_interface;
100  extern const wl_interface touch_interface;
101  extern const wl_interface output_interface;
102  extern const wl_interface region_interface;
103  extern const wl_interface subcompositor_interface;
104  extern const wl_interface subsurface_interface;
105 }
106 
131 class registry_t : public proxy_t
132 {
133 private:
134  struct events_t : public detail::events_base_t
135  {
136  std::function<void(uint32_t, std::string, uint32_t)> global;
137  std::function<void(uint32_t)> global_remove;
138  };
139 
140  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
141 
142  registry_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
143 
144 public:
145  registry_t();
146  explicit registry_t(const proxy_t &proxy);
147  registry_t(wl_registry *p, wrapper_type t = wrapper_type::standard);
148 
149  registry_t proxy_create_wrapper();
150 
151  static const std::string interface_name;
152 
153  operator wl_registry*() const;
154 
165  proxy_t bind(uint32_t name, proxy_t &interface, uint32_t version);
166 
169  static constexpr std::uint32_t bind_since_version = 1;
170 
183  std::function<void(uint32_t, std::string, uint32_t)> &on_global();
184 
200  std::function<void(uint32_t)> &on_global_remove();
201 
202 };
203 
204 
211 class callback_t : public proxy_t
212 {
213 private:
214  struct events_t : public detail::events_base_t
215  {
216  std::function<void(uint32_t)> done;
217  };
218 
219  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
220 
221  callback_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
222 
223 public:
224  callback_t();
225  explicit callback_t(const proxy_t &proxy);
226  callback_t(wl_callback *p, wrapper_type t = wrapper_type::standard);
227 
228  callback_t proxy_create_wrapper();
229 
230  static const std::string interface_name;
231 
232  operator wl_callback*() const;
233 
240  std::function<void(uint32_t)> &on_done();
241 
242 };
243 
244 
252 class compositor_t : public proxy_t
253 {
254 private:
255  struct events_t : public detail::events_base_t
256  {
257  };
258 
259  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
260 
261  compositor_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
262 
263 public:
264  compositor_t();
265  explicit compositor_t(const proxy_t &proxy);
266  compositor_t(wl_compositor *p, wrapper_type t = wrapper_type::standard);
267 
268  compositor_t proxy_create_wrapper();
269 
270  static const std::string interface_name;
271 
272  operator wl_compositor*() const;
273 
281 
284  static constexpr std::uint32_t create_surface_since_version = 1;
285 
293 
296  static constexpr std::uint32_t create_region_since_version = 1;
297 
298 };
299 
300 
312 class shm_pool_t : public proxy_t
313 {
314 private:
315  struct events_t : public detail::events_base_t
316  {
317  };
318 
319  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
320 
321  shm_pool_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
322 
323 public:
324  shm_pool_t();
325  explicit shm_pool_t(const proxy_t &proxy);
326  shm_pool_t(wl_shm_pool *p, wrapper_type t = wrapper_type::standard);
327 
328  shm_pool_t proxy_create_wrapper();
329 
330  static const std::string interface_name;
331 
332  operator wl_shm_pool*() const;
333 
355  buffer_t create_buffer(int32_t offset, int32_t width, int32_t height, int32_t stride, shm_format const& format);
356 
359  static constexpr std::uint32_t create_buffer_since_version = 1;
360 
376  void resize(int32_t size);
377 
380  static constexpr std::uint32_t resize_since_version = 1;
381 
382 };
383 
384 
398 class shm_t : public proxy_t
399 {
400 private:
401  struct events_t : public detail::events_base_t
402  {
403  std::function<void(shm_format)> format;
404  };
405 
406  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
407 
408  shm_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
409 
410 public:
411  shm_t();
412  explicit shm_t(const proxy_t &proxy);
413  shm_t(wl_shm *p, wrapper_type t = wrapper_type::standard);
414 
415  shm_t proxy_create_wrapper();
416 
417  static const std::string interface_name;
418 
419  operator wl_shm*() const;
420 
433  shm_pool_t create_pool(int fd, int32_t size);
434 
437  static constexpr std::uint32_t create_pool_since_version = 1;
438 
447  std::function<void(shm_format)> &on_format();
448 
449 };
450 
456 enum class shm_error : uint32_t
457  {
459  invalid_format = 0,
461  invalid_stride = 1,
463  invalid_fd = 2
464 };
465 
482 enum class shm_format : uint32_t
483  {
485  argb8888 = 0,
487  xrgb8888 = 1,
489  c8 = 0x20203843,
491  rgb332 = 0x38424752,
493  bgr233 = 0x38524742,
495  xrgb4444 = 0x32315258,
497  xbgr4444 = 0x32314258,
499  rgbx4444 = 0x32315852,
501  bgrx4444 = 0x32315842,
503  argb4444 = 0x32315241,
505  abgr4444 = 0x32314241,
507  rgba4444 = 0x32314152,
509  bgra4444 = 0x32314142,
511  xrgb1555 = 0x35315258,
513  xbgr1555 = 0x35314258,
515  rgbx5551 = 0x35315852,
517  bgrx5551 = 0x35315842,
519  argb1555 = 0x35315241,
521  abgr1555 = 0x35314241,
523  rgba5551 = 0x35314152,
525  bgra5551 = 0x35314142,
527  rgb565 = 0x36314752,
529  bgr565 = 0x36314742,
531  rgb888 = 0x34324752,
533  bgr888 = 0x34324742,
535  xbgr8888 = 0x34324258,
537  rgbx8888 = 0x34325852,
539  bgrx8888 = 0x34325842,
541  abgr8888 = 0x34324241,
543  rgba8888 = 0x34324152,
545  bgra8888 = 0x34324142,
547  xrgb2101010 = 0x30335258,
549  xbgr2101010 = 0x30334258,
551  rgbx1010102 = 0x30335852,
553  bgrx1010102 = 0x30335842,
555  argb2101010 = 0x30335241,
557  abgr2101010 = 0x30334241,
559  rgba1010102 = 0x30334152,
561  bgra1010102 = 0x30334142,
563  yuyv = 0x56595559,
565  yvyu = 0x55595659,
567  uyvy = 0x59565955,
569  vyuy = 0x59555956,
571  ayuv = 0x56555941,
573  nv12 = 0x3231564e,
575  nv21 = 0x3132564e,
577  nv16 = 0x3631564e,
579  nv61 = 0x3136564e,
581  yuv410 = 0x39565559,
583  yvu410 = 0x39555659,
585  yuv411 = 0x31315559,
587  yvu411 = 0x31315659,
589  yuv420 = 0x32315559,
591  yvu420 = 0x32315659,
593  yuv422 = 0x36315559,
595  yvu422 = 0x36315659,
597  yuv444 = 0x34325559,
599  yvu444 = 0x34325659,
601  r8 = 0x20203852,
603  r16 = 0x20363152,
605  rg88 = 0x38384752,
607  gr88 = 0x38385247,
609  rg1616 = 0x32334752,
611  gr1616 = 0x32335247,
613  xrgb16161616f = 0x48345258,
615  xbgr16161616f = 0x48344258,
617  argb16161616f = 0x48345241,
619  abgr16161616f = 0x48344241,
621  xyuv8888 = 0x56555958,
623  vuy888 = 0x34325556,
625  vuy101010 = 0x30335556,
627  y210 = 0x30313259,
629  y212 = 0x32313259,
631  y216 = 0x36313259,
633  y410 = 0x30313459,
635  y412 = 0x32313459,
637  y416 = 0x36313459,
639  xvyu2101010 = 0x30335658,
641  xvyu12_16161616 = 0x36335658,
643  xvyu16161616 = 0x38345658,
645  y0l0 = 0x304c3059,
647  x0l0 = 0x304c3058,
649  y0l2 = 0x324c3059,
651  x0l2 = 0x324c3058,
652  yuv420_8bit = 0x38305559,
653  yuv420_10bit = 0x30315559,
654  xrgb8888_a8 = 0x38415258,
655  xbgr8888_a8 = 0x38414258,
656  rgbx8888_a8 = 0x38415852,
657  bgrx8888_a8 = 0x38415842,
658  rgb888_a8 = 0x38413852,
659  bgr888_a8 = 0x38413842,
660  rgb565_a8 = 0x38413552,
661  bgr565_a8 = 0x38413542,
663  nv24 = 0x3432564e,
665  nv42 = 0x3234564e,
667  p210 = 0x30313250,
669  p010 = 0x30313050,
671  p012 = 0x32313050,
673  p016 = 0x36313050,
675  axbxgxrx106106106106 = 0x30314241,
677  nv15 = 0x3531564e,
678  q410 = 0x30313451,
679  q401 = 0x31303451,
681  xrgb16161616 = 0x38345258,
683  xbgr16161616 = 0x38344258,
685  argb16161616 = 0x38345241,
687  abgr16161616 = 0x38344241
688 };
689 
690 
705 class buffer_t : public proxy_t
706 {
707 private:
708  struct events_t : public detail::events_base_t
709  {
710  std::function<void()> release;
711  };
712 
713  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
714 
715  buffer_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
716 
717 public:
718  buffer_t();
719  explicit buffer_t(const proxy_t &proxy);
720  buffer_t(wl_buffer *p, wrapper_type t = wrapper_type::standard);
721 
722  buffer_t proxy_create_wrapper();
723 
724  static const std::string interface_name;
725 
726  operator wl_buffer*() const;
727 
744  std::function<void()> &on_release();
745 
746 };
747 
748 
759 class data_offer_t : public proxy_t
760 {
761 private:
762  struct events_t : public detail::events_base_t
763  {
764  std::function<void(std::string)> offer;
765  std::function<void(data_device_manager_dnd_action)> source_actions;
766  std::function<void(data_device_manager_dnd_action)> action;
767  };
768 
769  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
770 
771  data_offer_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
772 
773 public:
774  data_offer_t();
775  explicit data_offer_t(const proxy_t &proxy);
776  data_offer_t(wl_data_offer *p, wrapper_type t = wrapper_type::standard);
777 
778  data_offer_t proxy_create_wrapper();
779 
780  static const std::string interface_name;
781 
782  operator wl_data_offer*() const;
783 
804  void accept(uint32_t serial, std::string const& mime_type);
805 
808  static constexpr std::uint32_t accept_since_version = 1;
809 
831  void receive(std::string const& mime_type, int fd);
832 
835  static constexpr std::uint32_t receive_since_version = 1;
836 
855  void finish();
856 
859  static constexpr std::uint32_t finish_since_version = 3;
860 
864  bool can_finish() const;
865 
903  void set_actions(data_device_manager_dnd_action const& dnd_actions, data_device_manager_dnd_action const& preferred_action);
904 
907  static constexpr std::uint32_t set_actions_since_version = 3;
908 
912  bool can_set_actions() const;
913 
921  std::function<void(std::string)> &on_offer();
922 
931  std::function<void(data_device_manager_dnd_action)> &on_source_actions();
932 
973  std::function<void(data_device_manager_dnd_action)> &on_action();
974 
975 };
976 
980 enum class data_offer_error : uint32_t
981  {
983  invalid_finish = 0,
985  invalid_action_mask = 1,
987  invalid_action = 2,
989  invalid_offer = 3
990 };
991 
992 
1001 class data_source_t : public proxy_t
1002 {
1003 private:
1004  struct events_t : public detail::events_base_t
1005  {
1006  std::function<void(std::string)> target;
1007  std::function<void(std::string, int)> send;
1008  std::function<void()> cancelled;
1009  std::function<void()> dnd_drop_performed;
1010  std::function<void()> dnd_finished;
1011  std::function<void(data_device_manager_dnd_action)> action;
1012  };
1013 
1014  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
1015 
1016  data_source_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
1017 
1018 public:
1019  data_source_t();
1020  explicit data_source_t(const proxy_t &proxy);
1021  data_source_t(wl_data_source *p, wrapper_type t = wrapper_type::standard);
1022 
1023  data_source_t proxy_create_wrapper();
1024 
1025  static const std::string interface_name;
1026 
1027  operator wl_data_source*() const;
1028 
1037  void offer(std::string const& mime_type);
1038 
1041  static constexpr std::uint32_t offer_since_version = 1;
1042 
1061  void set_actions(data_device_manager_dnd_action const& dnd_actions);
1062 
1065  static constexpr std::uint32_t set_actions_since_version = 3;
1066 
1070  bool can_set_actions() const;
1071 
1081  std::function<void(std::string)> &on_target();
1082 
1092  std::function<void(std::string, int)> &on_send();
1093 
1118  std::function<void()> &on_cancelled();
1119 
1133  std::function<void()> &on_dnd_drop_performed();
1134 
1145  std::function<void()> &on_dnd_finished();
1146 
1177  std::function<void(data_device_manager_dnd_action)> &on_action();
1178 
1179 };
1180 
1184 enum class data_source_error : uint32_t
1185  {
1187  invalid_action_mask = 0,
1189  invalid_source = 1
1190 };
1191 
1192 
1202 class data_device_t : public proxy_t
1203 {
1204 private:
1205  struct events_t : public detail::events_base_t
1206  {
1207  std::function<void(data_offer_t)> data_offer;
1208  std::function<void(uint32_t, surface_t, double, double, data_offer_t)> enter;
1209  std::function<void()> leave;
1210  std::function<void(uint32_t, double, double)> motion;
1211  std::function<void()> drop;
1212  std::function<void(data_offer_t)> selection;
1213  };
1214 
1215  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
1216 
1217  data_device_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
1218 
1219 public:
1220  data_device_t();
1221  explicit data_device_t(const proxy_t &proxy);
1222  data_device_t(wl_data_device *p, wrapper_type t = wrapper_type::standard);
1223 
1224  data_device_t proxy_create_wrapper();
1225 
1226  static const std::string interface_name;
1227 
1228  operator wl_data_device*() const;
1229 
1266  void start_drag(data_source_t const& source, surface_t const& origin, surface_t const& icon, uint32_t serial);
1267 
1270  static constexpr std::uint32_t start_drag_since_version = 1;
1271 
1282  void set_selection(data_source_t const& source, uint32_t serial);
1283 
1286  static constexpr std::uint32_t set_selection_since_version = 1;
1287 
1293  void release();
1294 
1297  static constexpr std::uint32_t release_since_version = 2;
1298 
1302  bool can_release() const;
1303 
1316  std::function<void(data_offer_t)> &on_data_offer();
1317 
1331  std::function<void(uint32_t, surface_t, double, double, data_offer_t)> &on_enter();
1332 
1340  std::function<void()> &on_leave();
1341 
1353  std::function<void(uint32_t, double, double)> &on_motion();
1354 
1372  std::function<void()> &on_drop();
1373 
1391  std::function<void(data_offer_t)> &on_selection();
1392 
1393 };
1394 
1398 enum class data_device_error : uint32_t
1399  {
1401  role = 0
1402 };
1403 
1404 
1420 {
1421 private:
1422  struct events_t : public detail::events_base_t
1423  {
1424  };
1425 
1426  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
1427 
1428  data_device_manager_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
1429 
1430 public:
1432  explicit data_device_manager_t(const proxy_t &proxy);
1433  data_device_manager_t(wl_data_device_manager *p, wrapper_type t = wrapper_type::standard);
1434 
1435  data_device_manager_t proxy_create_wrapper();
1436 
1437  static const std::string interface_name;
1438 
1439  operator wl_data_device_manager*() const;
1440 
1448 
1451  static constexpr std::uint32_t create_data_source_since_version = 1;
1452 
1460  data_device_t get_data_device(seat_t const& seat);
1461 
1464  static constexpr std::uint32_t get_data_device_since_version = 1;
1465 
1466 };
1467 
1495 struct data_device_manager_dnd_action : public wayland::detail::bitfield<3, 6>
1496 {
1497  data_device_manager_dnd_action(const wayland::detail::bitfield<3, 6> &b)
1498  : wayland::detail::bitfield<3, 6>(b) {}
1499  data_device_manager_dnd_action(const uint32_t value)
1500  : wayland::detail::bitfield<3, 6>(value) {}
1502  static const wayland::detail::bitfield<3, 6> none;
1504  static const wayland::detail::bitfield<3, 6> copy;
1506  static const wayland::detail::bitfield<3, 6> move;
1508  static const wayland::detail::bitfield<3, 6> ask;
1509 };
1510 
1511 
1525 class shell_t : public proxy_t
1526 {
1527 private:
1528  struct events_t : public detail::events_base_t
1529  {
1530  };
1531 
1532  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
1533 
1534  shell_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
1535 
1536 public:
1537  shell_t();
1538  explicit shell_t(const proxy_t &proxy);
1539  shell_t(wl_shell *p, wrapper_type t = wrapper_type::standard);
1540 
1541  shell_t proxy_create_wrapper();
1542 
1543  static const std::string interface_name;
1544 
1545  operator wl_shell*() const;
1546 
1559 
1562  static constexpr std::uint32_t get_shell_surface_since_version = 1;
1563 
1564 };
1565 
1569 enum class shell_error : uint32_t
1570  {
1572  role = 0
1573 };
1574 
1575 
1591 class shell_surface_t : public proxy_t
1592 {
1593 private:
1594  struct events_t : public detail::events_base_t
1595  {
1596  std::function<void(uint32_t)> ping;
1597  std::function<void(shell_surface_resize, int32_t, int32_t)> configure;
1598  std::function<void()> popup_done;
1599  };
1600 
1601  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
1602 
1603  shell_surface_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
1604 
1605 public:
1606  shell_surface_t();
1607  explicit shell_surface_t(const proxy_t &proxy);
1608  shell_surface_t(wl_shell_surface *p, wrapper_type t = wrapper_type::standard);
1609 
1610  shell_surface_t proxy_create_wrapper();
1611 
1612  static const std::string interface_name;
1613 
1614  operator wl_shell_surface*() const;
1615 
1623  void pong(uint32_t serial);
1624 
1627  static constexpr std::uint32_t pong_since_version = 1;
1628 
1640  void move(seat_t const& seat, uint32_t serial);
1641 
1644  static constexpr std::uint32_t move_since_version = 1;
1645 
1658  void resize(seat_t const& seat, uint32_t serial, shell_surface_resize const& edges);
1659 
1662  static constexpr std::uint32_t resize_since_version = 1;
1663 
1671  void set_toplevel();
1672 
1675  static constexpr std::uint32_t set_toplevel_since_version = 1;
1676 
1692  void set_transient(surface_t const& parent, int32_t x, int32_t y, shell_surface_transient const& flags);
1693 
1696  static constexpr std::uint32_t set_transient_since_version = 1;
1697 
1738  void set_fullscreen(shell_surface_fullscreen_method const& method, uint32_t framerate, output_t const& output);
1739 
1742  static constexpr std::uint32_t set_fullscreen_since_version = 1;
1743 
1773  void set_popup(seat_t const& seat, uint32_t serial, surface_t const& parent, int32_t x, int32_t y, shell_surface_transient const& flags);
1774 
1777  static constexpr std::uint32_t set_popup_since_version = 1;
1778 
1802  void set_maximized(output_t const& output);
1803 
1806  static constexpr std::uint32_t set_maximized_since_version = 1;
1807 
1820  void set_title(std::string const& title);
1821 
1824  static constexpr std::uint32_t set_title_since_version = 1;
1825 
1837  void set_class(std::string const& class_);
1838 
1841  static constexpr std::uint32_t set_class_since_version = 1;
1842 
1850  std::function<void(uint32_t)> &on_ping();
1851 
1876  std::function<void(shell_surface_resize, int32_t, int32_t)> &on_configure();
1877 
1885  std::function<void()> &on_popup_done();
1886 
1887 };
1888 
1897 struct shell_surface_resize : public wayland::detail::bitfield<4, 8>
1898 {
1899  shell_surface_resize(const wayland::detail::bitfield<4, 8> &b)
1900  : wayland::detail::bitfield<4, 8>(b) {}
1901  shell_surface_resize(const uint32_t value)
1902  : wayland::detail::bitfield<4, 8>(value) {}
1904  static const wayland::detail::bitfield<4, 8> none;
1906  static const wayland::detail::bitfield<4, 8> top;
1908  static const wayland::detail::bitfield<4, 8> bottom;
1910  static const wayland::detail::bitfield<4, 8> left;
1912  static const wayland::detail::bitfield<4, 8> top_left;
1914  static const wayland::detail::bitfield<4, 8> bottom_left;
1916  static const wayland::detail::bitfield<4, 8> right;
1918  static const wayland::detail::bitfield<4, 8> top_right;
1920  static const wayland::detail::bitfield<4, 8> bottom_right;
1921 };
1922 
1929 struct shell_surface_transient : public wayland::detail::bitfield<1, 9>
1930 {
1931  shell_surface_transient(const wayland::detail::bitfield<1, 9> &b)
1932  : wayland::detail::bitfield<1, 9>(b) {}
1933  shell_surface_transient(const uint32_t value)
1934  : wayland::detail::bitfield<1, 9>(value) {}
1936  static const wayland::detail::bitfield<1, 9> inactive;
1937 };
1938 
1946 enum class shell_surface_fullscreen_method : uint32_t
1947  {
1949  _default = 0,
1951  scale = 1,
1953  driver = 2,
1955  fill = 3
1956 };
1957 
1958 
2004 class surface_t : public proxy_t
2005 {
2006 private:
2007  struct events_t : public detail::events_base_t
2008  {
2009  std::function<void(output_t)> enter;
2010  std::function<void(output_t)> leave;
2011  };
2012 
2013  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
2014 
2015  surface_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
2016 
2017 public:
2018  surface_t();
2019  explicit surface_t(const proxy_t &proxy);
2020  surface_t(wl_surface *p, wrapper_type t = wrapper_type::standard);
2021 
2022  surface_t proxy_create_wrapper();
2023 
2024  static const std::string interface_name;
2025 
2026  operator wl_surface*() const;
2027 
2091  void attach(buffer_t const& buffer, int32_t x, int32_t y);
2092 
2095  static constexpr std::uint32_t attach_since_version = 1;
2096 
2126  void damage(int32_t x, int32_t y, int32_t width, int32_t height);
2127 
2130  static constexpr std::uint32_t damage_since_version = 1;
2131 
2169  callback_t frame();
2170 
2173  static constexpr std::uint32_t frame_since_version = 1;
2174 
2204  void set_opaque_region(region_t const& region);
2205 
2208  static constexpr std::uint32_t set_opaque_region_since_version = 1;
2209 
2237  void set_input_region(region_t const& region);
2238 
2241  static constexpr std::uint32_t set_input_region_since_version = 1;
2242 
2264  void commit();
2265 
2268  static constexpr std::uint32_t commit_since_version = 1;
2269 
2304  void set_buffer_transform(output_transform const& transform);
2305 
2308  static constexpr std::uint32_t set_buffer_transform_since_version = 2;
2309 
2313  bool can_set_buffer_transform() const;
2314 
2343  void set_buffer_scale(int32_t scale);
2344 
2347  static constexpr std::uint32_t set_buffer_scale_since_version = 3;
2348 
2352  bool can_set_buffer_scale() const;
2353 
2394  void damage_buffer(int32_t x, int32_t y, int32_t width, int32_t height);
2395 
2398  static constexpr std::uint32_t damage_buffer_since_version = 4;
2399 
2403  bool can_damage_buffer() const;
2404 
2423  void offset(int32_t x, int32_t y);
2424 
2427  static constexpr std::uint32_t offset_since_version = 5;
2428 
2432  bool can_offset() const;
2433 
2444  std::function<void(output_t)> &on_enter();
2445 
2460  std::function<void(output_t)> &on_leave();
2461 
2462 };
2463 
2469 enum class surface_error : uint32_t
2470  {
2472  invalid_scale = 0,
2474  invalid_transform = 1,
2476  invalid_size = 2,
2478  invalid_offset = 3
2479 };
2480 
2481 
2490 class seat_t : public proxy_t
2491 {
2492 private:
2493  struct events_t : public detail::events_base_t
2494  {
2495  std::function<void(seat_capability)> capabilities;
2496  std::function<void(std::string)> name;
2497  };
2498 
2499  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
2500 
2501  seat_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
2502 
2503 public:
2504  seat_t();
2505  explicit seat_t(const proxy_t &proxy);
2506  seat_t(wl_seat *p, wrapper_type t = wrapper_type::standard);
2507 
2508  seat_t proxy_create_wrapper();
2509 
2510  static const std::string interface_name;
2511 
2512  operator wl_seat*() const;
2513 
2528 
2531  static constexpr std::uint32_t get_pointer_since_version = 1;
2532 
2547 
2550  static constexpr std::uint32_t get_keyboard_since_version = 1;
2551 
2565  touch_t get_touch();
2566 
2569  static constexpr std::uint32_t get_touch_since_version = 1;
2570 
2577  void release();
2578 
2581  static constexpr std::uint32_t release_since_version = 5;
2582 
2586  bool can_release() const;
2587 
2617  std::function<void(seat_capability)> &on_capabilities();
2618 
2640  std::function<void(std::string)> &on_name();
2641 
2642 };
2643 
2650 struct seat_capability : public wayland::detail::bitfield<3, 12>
2651 {
2652  seat_capability(const wayland::detail::bitfield<3, 12> &b)
2653  : wayland::detail::bitfield<3, 12>(b) {}
2654  seat_capability(const uint32_t value)
2655  : wayland::detail::bitfield<3, 12>(value) {}
2657  static const wayland::detail::bitfield<3, 12> pointer;
2659  static const wayland::detail::bitfield<3, 12> keyboard;
2661  static const wayland::detail::bitfield<3, 12> touch;
2662 };
2663 
2669 enum class seat_error : uint32_t
2670  {
2672  missing_capability = 0
2673 };
2674 
2675 
2688 class pointer_t : public proxy_t
2689 {
2690 private:
2691  struct events_t : public detail::events_base_t
2692  {
2693  std::function<void(uint32_t, surface_t, double, double)> enter;
2694  std::function<void(uint32_t, surface_t)> leave;
2695  std::function<void(uint32_t, double, double)> motion;
2696  std::function<void(uint32_t, uint32_t, uint32_t, pointer_button_state)> button;
2697  std::function<void(uint32_t, pointer_axis, double)> axis;
2698  std::function<void()> frame;
2699  std::function<void(pointer_axis_source)> axis_source;
2700  std::function<void(uint32_t, pointer_axis)> axis_stop;
2701  std::function<void(pointer_axis, int32_t)> axis_discrete;
2702  std::function<void(pointer_axis, int32_t)> axis_value120;
2703  };
2704 
2705  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
2706 
2707  pointer_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
2708 
2709 public:
2710  pointer_t();
2711  explicit pointer_t(const proxy_t &proxy);
2712  pointer_t(wl_pointer *p, wrapper_type t = wrapper_type::standard);
2713 
2714  pointer_t proxy_create_wrapper();
2715 
2716  static const std::string interface_name;
2717 
2718  operator wl_pointer*() const;
2719 
2763  void set_cursor(uint32_t serial, surface_t const& surface, int32_t hotspot_x, int32_t hotspot_y);
2764 
2767  static constexpr std::uint32_t set_cursor_since_version = 1;
2768 
2778  void release();
2779 
2782  static constexpr std::uint32_t release_since_version = 3;
2783 
2787  bool can_release() const;
2788 
2803  std::function<void(uint32_t, surface_t, double, double)> &on_enter();
2804 
2816  std::function<void(uint32_t, surface_t)> &on_leave();
2817 
2828  std::function<void(uint32_t, double, double)> &on_motion();
2829 
2852  std::function<void(uint32_t, uint32_t, uint32_t, pointer_button_state)> &on_button();
2853 
2877  std::function<void(uint32_t, pointer_axis, double)> &on_axis();
2878 
2917  std::function<void()> &on_frame();
2918 
2949  std::function<void(pointer_axis_source)> &on_axis_source();
2950 
2971  std::function<void(uint32_t, pointer_axis)> &on_axis_stop();
2972 
3008  std::function<void(pointer_axis, int32_t)> &on_axis_discrete();
3009 
3037  std::function<void(pointer_axis, int32_t)> &on_axis_value120();
3038 
3039 };
3040 
3044 enum class pointer_error : uint32_t
3045  {
3047  role = 0
3048 };
3049 
3056 enum class pointer_button_state : uint32_t
3057  {
3059  released = 0,
3061  pressed = 1
3062 };
3063 
3069 enum class pointer_axis : uint32_t
3070  {
3072  vertical_scroll = 0,
3074  horizontal_scroll = 1
3075 };
3076 
3097 enum class pointer_axis_source : uint32_t
3098  {
3100  wheel = 0,
3102  finger = 1,
3104  continuous = 2,
3106  wheel_tilt = 3
3107 };
3108 
3109 
3116 class keyboard_t : public proxy_t
3117 {
3118 private:
3119  struct events_t : public detail::events_base_t
3120  {
3121  std::function<void(keyboard_keymap_format, int, uint32_t)> keymap;
3122  std::function<void(uint32_t, surface_t, array_t)> enter;
3123  std::function<void(uint32_t, surface_t)> leave;
3124  std::function<void(uint32_t, uint32_t, uint32_t, keyboard_key_state)> key;
3125  std::function<void(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t)> modifiers;
3126  std::function<void(int32_t, int32_t)> repeat_info;
3127  };
3128 
3129  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
3130 
3131  keyboard_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
3132 
3133 public:
3134  keyboard_t();
3135  explicit keyboard_t(const proxy_t &proxy);
3136  keyboard_t(wl_keyboard *p, wrapper_type t = wrapper_type::standard);
3137 
3138  keyboard_t proxy_create_wrapper();
3139 
3140  static const std::string interface_name;
3141 
3142  operator wl_keyboard*() const;
3143 
3147  void release();
3148 
3151  static constexpr std::uint32_t release_since_version = 3;
3152 
3156  bool can_release() const;
3157 
3171  std::function<void(keyboard_keymap_format, int, uint32_t)> &on_keymap();
3172 
3185  std::function<void(uint32_t, surface_t, array_t)> &on_enter();
3186 
3201  std::function<void(uint32_t, surface_t)> &on_leave();
3202 
3220  std::function<void(uint32_t, uint32_t, uint32_t, keyboard_key_state)> &on_key();
3221 
3233  std::function<void(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t)> &on_modifiers();
3234 
3253  std::function<void(int32_t, int32_t)> &on_repeat_info();
3254 
3255 };
3256 
3263 enum class keyboard_keymap_format : uint32_t
3264  {
3266  no_keymap = 0,
3268  xkb_v1 = 1
3269 };
3270 
3276 enum class keyboard_key_state : uint32_t
3277  {
3279  released = 0,
3281  pressed = 1
3282 };
3283 
3284 
3297 class touch_t : public proxy_t
3298 {
3299 private:
3300  struct events_t : public detail::events_base_t
3301  {
3302  std::function<void(uint32_t, uint32_t, surface_t, int32_t, double, double)> down;
3303  std::function<void(uint32_t, uint32_t, int32_t)> up;
3304  std::function<void(uint32_t, int32_t, double, double)> motion;
3305  std::function<void()> frame;
3306  std::function<void()> cancel;
3307  std::function<void(int32_t, double, double)> shape;
3308  std::function<void(int32_t, double)> orientation;
3309  };
3310 
3311  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
3312 
3313  touch_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
3314 
3315 public:
3316  touch_t();
3317  explicit touch_t(const proxy_t &proxy);
3318  touch_t(wl_touch *p, wrapper_type t = wrapper_type::standard);
3319 
3320  touch_t proxy_create_wrapper();
3321 
3322  static const std::string interface_name;
3323 
3324  operator wl_touch*() const;
3325 
3329  void release();
3330 
3333  static constexpr std::uint32_t release_since_version = 3;
3334 
3338  bool can_release() const;
3339 
3354  std::function<void(uint32_t, uint32_t, surface_t, int32_t, double, double)> &on_down();
3355 
3366  std::function<void(uint32_t, uint32_t, int32_t)> &on_up();
3367 
3377  std::function<void(uint32_t, int32_t, double, double)> &on_motion();
3378 
3391  std::function<void()> &on_frame();
3392 
3403  std::function<void()> &on_cancel();
3404 
3437  std::function<void(int32_t, double, double)> &on_shape();
3438 
3468  std::function<void(int32_t, double)> &on_orientation();
3469 
3470 };
3471 
3472 
3483 class output_t : public proxy_t
3484 {
3485 private:
3486  struct events_t : public detail::events_base_t
3487  {
3488  std::function<void(int32_t, int32_t, int32_t, int32_t, output_subpixel, std::string, std::string, output_transform)> geometry;
3489  std::function<void(output_mode, int32_t, int32_t, int32_t)> mode;
3490  std::function<void()> done;
3491  std::function<void(int32_t)> scale;
3492  std::function<void(std::string)> name;
3493  std::function<void(std::string)> description;
3494  };
3495 
3496  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
3497 
3498  output_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
3499 
3500 public:
3501  output_t();
3502  explicit output_t(const proxy_t &proxy);
3503  output_t(wl_output *p, wrapper_type t = wrapper_type::standard);
3504 
3505  output_t proxy_create_wrapper();
3506 
3507  static const std::string interface_name;
3508 
3509  operator wl_output*() const;
3510 
3517  void release();
3518 
3521  static constexpr std::uint32_t release_since_version = 3;
3522 
3526  bool can_release() const;
3527 
3556  std::function<void(int32_t, int32_t, int32_t, int32_t, output_subpixel, std::string, std::string, output_transform)> &on_geometry();
3557 
3599  std::function<void(output_mode, int32_t, int32_t, int32_t)> &on_mode();
3600 
3610  std::function<void()> &on_done();
3611 
3637  std::function<void(int32_t)> &on_scale();
3638 
3672  std::function<void(std::string)> &on_name();
3673 
3693  std::function<void(std::string)> &on_description();
3694 
3695 };
3696 
3703 enum class output_subpixel : uint32_t
3704  {
3706  unknown = 0,
3708  none = 1,
3710  horizontal_rgb = 2,
3712  horizontal_bgr = 3,
3714  vertical_rgb = 4,
3716  vertical_bgr = 5
3717 };
3718 
3734 struct output_transform : public wayland::detail::bitfield<3, 21>
3735 {
3736  output_transform(const wayland::detail::bitfield<3, 21> &b)
3737  : wayland::detail::bitfield<3, 21>(b) {}
3738  output_transform(const uint32_t value)
3739  : wayland::detail::bitfield<3, 21>(value) {}
3741  static const wayland::detail::bitfield<3, 21> normal;
3743  static const wayland::detail::bitfield<3, 21> _90;
3745  static const wayland::detail::bitfield<3, 21> _180;
3747  static const wayland::detail::bitfield<3, 21> _270;
3749  static const wayland::detail::bitfield<3, 21> flipped;
3751  static const wayland::detail::bitfield<3, 21> flipped_90;
3753  static const wayland::detail::bitfield<3, 21> flipped_180;
3755  static const wayland::detail::bitfield<3, 21> flipped_270;
3756 };
3757 
3764 struct output_mode : public wayland::detail::bitfield<2, 22>
3765 {
3766  output_mode(const wayland::detail::bitfield<2, 22> &b)
3767  : wayland::detail::bitfield<2, 22>(b) {}
3768  output_mode(const uint32_t value)
3769  : wayland::detail::bitfield<2, 22>(value) {}
3771  static const wayland::detail::bitfield<2, 22> current;
3773  static const wayland::detail::bitfield<2, 22> preferred;
3774 };
3775 
3776 
3785 class region_t : public proxy_t
3786 {
3787 private:
3788  struct events_t : public detail::events_base_t
3789  {
3790  };
3791 
3792  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
3793 
3794  region_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
3795 
3796 public:
3797  region_t();
3798  explicit region_t(const proxy_t &proxy);
3799  region_t(wl_region *p, wrapper_type t = wrapper_type::standard);
3800 
3801  region_t proxy_create_wrapper();
3802 
3803  static const std::string interface_name;
3804 
3805  operator wl_region*() const;
3806 
3816  void add(int32_t x, int32_t y, int32_t width, int32_t height);
3817 
3820  static constexpr std::uint32_t add_since_version = 1;
3821 
3831  void subtract(int32_t x, int32_t y, int32_t width, int32_t height);
3832 
3835  static constexpr std::uint32_t subtract_since_version = 1;
3836 
3837 };
3838 
3839 
3863 class subcompositor_t : public proxy_t
3864 {
3865 private:
3866  struct events_t : public detail::events_base_t
3867  {
3868  };
3869 
3870  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
3871 
3872  subcompositor_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
3873 
3874 public:
3875  subcompositor_t();
3876  explicit subcompositor_t(const proxy_t &proxy);
3877  subcompositor_t(wl_subcompositor *p, wrapper_type t = wrapper_type::standard);
3878 
3879  subcompositor_t proxy_create_wrapper();
3880 
3881  static const std::string interface_name;
3882 
3883  operator wl_subcompositor*() const;
3884 
3907  subsurface_t get_subsurface(surface_t const& surface, surface_t const& parent);
3908 
3911  static constexpr std::uint32_t get_subsurface_since_version = 1;
3912 
3913 };
3914 
3918 enum class subcompositor_error : uint32_t
3919  {
3921  bad_surface = 0
3922 };
3923 
3924 
3978 class subsurface_t : public proxy_t
3979 {
3980 private:
3981  struct events_t : public detail::events_base_t
3982  {
3983  };
3984 
3985  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
3986 
3987  subsurface_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
3988 
3989 public:
3990  subsurface_t();
3991  explicit subsurface_t(const proxy_t &proxy);
3992  subsurface_t(wl_subsurface *p, wrapper_type t = wrapper_type::standard);
3993 
3994  subsurface_t proxy_create_wrapper();
3995 
3996  static const std::string interface_name;
3997 
3998  operator wl_subsurface*() const;
3999 
4022  void set_position(int32_t x, int32_t y);
4023 
4026  static constexpr std::uint32_t set_position_since_version = 1;
4027 
4048  void place_above(surface_t const& sibling);
4049 
4052  static constexpr std::uint32_t place_above_since_version = 1;
4053 
4061  void place_below(surface_t const& sibling);
4062 
4065  static constexpr std::uint32_t place_below_since_version = 1;
4066 
4084  void set_sync();
4085 
4088  static constexpr std::uint32_t set_sync_since_version = 1;
4089 
4113  void set_desync();
4114 
4117  static constexpr std::uint32_t set_desync_since_version = 1;
4118 
4119 };
4120 
4124 enum class subsurface_error : uint32_t
4125  {
4127  bad_surface = 0
4128 };
4129 
4130 
4131 
4132 }
content for a wl_surface
std::function< void()> & on_release()
compositor releases buffer
std::function< void(uint32_t)> & on_done()
done event
the compositor singleton
region_t create_region()
create new region
static constexpr std::uint32_t create_surface_since_version
Minimum protocol version required for the create_surface function.
surface_t create_surface()
create new surface
static constexpr std::uint32_t create_region_since_version
Minimum protocol version required for the create_region function.
data_source_t create_data_source()
create a new data source
data_device_t get_data_device(seat_t const &seat)
create a new data device
static constexpr std::uint32_t get_data_device_since_version
Minimum protocol version required for the get_data_device function.
static constexpr std::uint32_t create_data_source_since_version
Minimum protocol version required for the create_data_source function.
bool can_release() const
Check whether the release 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.
std::function< void(uint32_t, double, double)> & on_motion()
drag-and-drop session motion
std::function< void()> & on_leave()
end drag-and-drop session
std::function< void(data_offer_t)> & on_selection()
advertise new selection
void release()
destroy data device
std::function< void()> & on_drop()
end drag-and-drop session successfully
void set_selection(data_source_t const &source, uint32_t serial)
copy data to the selection
void start_drag(data_source_t const &source, surface_t const &origin, surface_t const &icon, uint32_t serial)
start drag-and-drop operation
static constexpr std::uint32_t set_selection_since_version
Minimum protocol version required for the set_selection function.
static constexpr std::uint32_t start_drag_since_version
Minimum protocol version required for the start_drag function.
std::function< void(uint32_t, surface_t, double, double, data_offer_t)> & on_enter()
initiate drag-and-drop session
std::function< void(data_offer_t)> & on_data_offer()
introduce a new wl_data_offer
std::function< void(std::string)> & on_offer()
advertise offered mime type
void set_actions(data_device_manager_dnd_action const &dnd_actions, data_device_manager_dnd_action const &preferred_action)
set the available/preferred drag-and-drop actions
std::function< void(data_device_manager_dnd_action)> & on_action()
notify the selected action
static constexpr std::uint32_t finish_since_version
Minimum protocol version required for the finish function.
bool can_finish() const
Check whether the finish function is available with the currently bound version of the protocol.
void receive(std::string const &mime_type, int fd)
request that the data is transferred
static constexpr std::uint32_t receive_since_version
Minimum protocol version required for the receive function.
static constexpr std::uint32_t set_actions_since_version
Minimum protocol version required for the set_actions function.
std::function< void(data_device_manager_dnd_action)> & on_source_actions()
notify the source-side available actions
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 accept_since_version
Minimum protocol version required for the accept function.
void accept(uint32_t serial, std::string const &mime_type)
accept one of the offered mime types
void finish()
the offer will no longer be used
std::function< void()> & on_cancelled()
selection was cancelled
static constexpr std::uint32_t set_actions_since_version
Minimum protocol version required for the set_actions function.
static constexpr std::uint32_t offer_since_version
Minimum protocol version required for the offer function.
std::function< void()> & on_dnd_finished()
the drag-and-drop operation concluded
std::function< void(std::string, int)> & on_send()
send the data
std::function< void()> & on_dnd_drop_performed()
the drag-and-drop operation physically finished
void offer(std::string const &mime_type)
add an offered mime type
std::function< void(data_device_manager_dnd_action)> & on_action()
notify the selected action
std::function< void(std::string)> & on_target()
a target accepts an offered mime type
void set_actions(data_device_manager_dnd_action const &dnd_actions)
set the available drag-and-drop actions
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.
std::function< void(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t)> & on_modifiers()
modifier and group state
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, array_t)> & on_enter()
enter event
std::function< void(keyboard_keymap_format, int, uint32_t)> & on_keymap()
keyboard mapping
std::function< void(uint32_t, surface_t)> & on_leave()
leave event
std::function< void(int32_t, int32_t)> & on_repeat_info()
repeat rate and delay
void release()
release the keyboard object
std::function< void(uint32_t, uint32_t, uint32_t, keyboard_key_state)> & on_key()
key event
compositor output region
std::function< void(std::string)> & on_name()
name of this output
bool can_release() const
Check whether the release function is available with the currently bound version of the protocol.
std::function< void(int32_t)> & on_scale()
output scaling properties
std::function< void(std::string)> & on_description()
human-readable description of this output
std::function< void()> & on_done()
sent all information about output
void release()
release the output object
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.
std::function< void(output_mode, int32_t, int32_t, int32_t)> & on_mode()
advertise available modes for the output
std::function< void(uint32_t, surface_t, double, double)> & on_enter()
enter event
std::function< void(uint32_t, pointer_axis, double)> & on_axis()
axis event
std::function< void(uint32_t, uint32_t, uint32_t, pointer_button_state)> & on_button()
pointer button event
std::function< void(pointer_axis, int32_t)> & on_axis_value120()
axis high-resolution scroll event
std::function< void(uint32_t, surface_t)> & on_leave()
leave event
void release()
release the pointer object
static constexpr std::uint32_t set_cursor_since_version
Minimum protocol version required for the set_cursor function.
std::function< void(pointer_axis, int32_t)> & on_axis_discrete()
axis click event
std::function< void()> & on_frame()
end of a pointer event sequence
bool can_release() const
Check whether the release 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.
std::function< void(pointer_axis_source)> & on_axis_source()
axis source event
void set_cursor(uint32_t serial, surface_t const &surface, int32_t hotspot_x, int32_t hotspot_y)
set the pointer surface
std::function< void(uint32_t, pointer_axis)> & on_axis_stop()
axis stop event
std::function< void(uint32_t, double, double)> & on_motion()
pointer motion event
Represents a protocol object on the client side.
static constexpr std::uint32_t subtract_since_version
Minimum protocol version required for the subtract function.
static constexpr std::uint32_t add_since_version
Minimum protocol version required for the add function.
void add(int32_t x, int32_t y, int32_t width, int32_t height)
add rectangle to region
void subtract(int32_t x, int32_t y, int32_t width, int32_t height)
subtract rectangle from region
global registry object
static constexpr std::uint32_t bind_since_version
Minimum protocol version required for the bind function.
std::function< void(uint32_t, std::string, uint32_t)> & on_global()
announce global object
proxy_t bind(uint32_t name, proxy_t &interface, uint32_t version)
bind an object to the display
std::function< void(uint32_t)> & on_global_remove()
announce removal of global object
group of input devices
static constexpr std::uint32_t get_pointer_since_version
Minimum protocol version required for the get_pointer function.
static constexpr std::uint32_t get_keyboard_since_version
Minimum protocol version required for the get_keyboard function.
std::function< void(std::string)> & on_name()
unique identifier for this seat
touch_t get_touch()
return touch object
static constexpr std::uint32_t release_since_version
Minimum protocol version required for the release function.
static constexpr std::uint32_t get_touch_since_version
Minimum protocol version required for the get_touch function.
bool can_release() const
Check whether the release function is available with the currently bound version of the protocol.
keyboard_t get_keyboard()
return keyboard object
pointer_t get_pointer()
return pointer object
void release()
release the seat object
std::function< void(seat_capability)> & on_capabilities()
seat capabilities changed
desktop-style metadata interface
static constexpr std::uint32_t set_popup_since_version
Minimum protocol version required for the set_popup function.
void resize(seat_t const &seat, uint32_t serial, shell_surface_resize const &edges)
start an interactive resize
static constexpr std::uint32_t set_fullscreen_since_version
Minimum protocol version required for the set_fullscreen function.
void set_fullscreen(shell_surface_fullscreen_method const &method, uint32_t framerate, output_t const &output)
make the surface a fullscreen surface
void move(seat_t const &seat, uint32_t serial)
start an interactive move
static constexpr std::uint32_t set_toplevel_since_version
Minimum protocol version required for the set_toplevel function.
void set_class(std::string const &class_)
set surface class
static constexpr std::uint32_t set_maximized_since_version
Minimum protocol version required for the set_maximized function.
static constexpr std::uint32_t set_transient_since_version
Minimum protocol version required for the set_transient function.
static constexpr std::uint32_t pong_since_version
Minimum protocol version required for the pong function.
void set_transient(surface_t const &parent, int32_t x, int32_t y, shell_surface_transient const &flags)
make the surface a transient surface
void set_toplevel()
make the surface a toplevel surface
static constexpr std::uint32_t set_class_since_version
Minimum protocol version required for the set_class function.
std::function< void(shell_surface_resize, int32_t, int32_t)> & on_configure()
suggest resize
std::function< void(uint32_t)> & on_ping()
ping client
void set_popup(seat_t const &seat, uint32_t serial, surface_t const &parent, int32_t x, int32_t y, shell_surface_transient const &flags)
make the surface a popup surface
void pong(uint32_t serial)
respond to a ping event
static constexpr std::uint32_t set_title_since_version
Minimum protocol version required for the set_title function.
static constexpr std::uint32_t resize_since_version
Minimum protocol version required for the resize function.
void set_maximized(output_t const &output)
make the surface a maximized surface
static constexpr std::uint32_t move_since_version
Minimum protocol version required for the move function.
std::function< void()> & on_popup_done()
popup interaction is done
void set_title(std::string const &title)
set surface title
create desktop-style surfaces
shell_surface_t get_shell_surface(surface_t const &surface)
create a shell surface from a surface
static constexpr std::uint32_t get_shell_surface_since_version
Minimum protocol version required for the get_shell_surface function.
static constexpr std::uint32_t resize_since_version
Minimum protocol version required for the resize function.
static constexpr std::uint32_t create_buffer_since_version
Minimum protocol version required for the create_buffer function.
buffer_t create_buffer(int32_t offset, int32_t width, int32_t height, int32_t stride, shm_format const &format)
create a buffer from the pool
void resize(int32_t size)
change the size of the pool mapping
shared memory support
std::function< void(shm_format)> & on_format()
pixel format description
static constexpr std::uint32_t create_pool_since_version
Minimum protocol version required for the create_pool function.
shm_pool_t create_pool(int fd, int32_t size)
create a shm pool
static constexpr std::uint32_t get_subsurface_since_version
Minimum protocol version required for the get_subsurface function.
subsurface_t get_subsurface(surface_t const &surface, surface_t const &parent)
give a surface the role sub-surface
sub-surface interface to a wl_surface
static constexpr std::uint32_t set_sync_since_version
Minimum protocol version required for the set_sync function.
static constexpr std::uint32_t place_below_since_version
Minimum protocol version required for the place_below function.
void set_desync()
set sub-surface to desynchronized mode
static constexpr std::uint32_t place_above_since_version
Minimum protocol version required for the place_above function.
void set_sync()
set sub-surface to synchronized mode
void set_position(int32_t x, int32_t y)
reposition the sub-surface
void place_below(surface_t const &sibling)
restack the sub-surface
static constexpr std::uint32_t set_desync_since_version
Minimum protocol version required for the set_desync function.
void place_above(surface_t const &sibling)
restack the sub-surface
static constexpr std::uint32_t set_position_since_version
Minimum protocol version required for the set_position function.
void offset(int32_t x, int32_t y)
set the surface contents offset
bool can_offset() const
Check whether the offset function is available with the currently bound version of the protocol.
static constexpr std::uint32_t damage_since_version
Minimum protocol version required for the damage function.
std::function< void(output_t)> & on_enter()
surface enters an output
static constexpr std::uint32_t set_input_region_since_version
Minimum protocol version required for the set_input_region function.
void set_buffer_transform(output_transform const &transform)
sets the buffer transformation
void set_input_region(region_t const &region)
set input region
void commit()
commit pending surface state
void attach(buffer_t const &buffer, int32_t x, int32_t y)
set the surface contents
static constexpr std::uint32_t set_buffer_transform_since_version
Minimum protocol version required for the set_buffer_transform function.
static constexpr std::uint32_t set_opaque_region_since_version
Minimum protocol version required for the set_opaque_region function.
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 attach_since_version
Minimum protocol version required for the attach function.
void set_buffer_scale(int32_t scale)
sets the buffer scaling factor
static constexpr std::uint32_t offset_since_version
Minimum protocol version required for the offset function.
static constexpr std::uint32_t damage_buffer_since_version
Minimum protocol version required for the damage_buffer function.
callback_t frame()
request a frame throttling hint
void damage(int32_t x, int32_t y, int32_t width, int32_t height)
mark part of the surface damaged
static constexpr std::uint32_t frame_since_version
Minimum protocol version required for the frame function.
static constexpr std::uint32_t set_buffer_scale_since_version
Minimum protocol version required for the set_buffer_scale function.
bool can_damage_buffer() const
Check whether the damage_buffer function is available with the currently bound version of the protoco...
static constexpr std::uint32_t commit_since_version
Minimum protocol version required for the commit function.
std::function< void(output_t)> & on_leave()
surface leaves an output
void damage_buffer(int32_t x, int32_t y, int32_t width, int32_t height)
mark part of the surface damaged using buffer coordinates
void set_opaque_region(region_t const &region)
set opaque region
bool can_set_buffer_transform() const
Check whether the set_buffer_transform function is available with the currently bound version of the ...
touchscreen input device
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()> & on_cancel()
touch session cancelled
static constexpr std::uint32_t release_since_version
Minimum protocol version required for the release function.
std::function< void(uint32_t, uint32_t, int32_t)> & on_up()
end of a touch event sequence
std::function< void(uint32_t, int32_t, double, double)> & on_motion()
update of touch point coordinates
std::function< void(int32_t, double)> & on_orientation()
update orientation of touch point
std::function< void()> & on_frame()
end of touch frame event
bool can_release() const
Check whether the release function is available with the currently bound version of the protocol.
std::function< void(int32_t, double, double)> & on_shape()
update shape of touch point
void release()
release the touch object
static const wayland::detail::bitfield< 3, 6 > ask
ask action
static const wayland::detail::bitfield< 3, 6 > none
no action
static const wayland::detail::bitfield< 3, 6 > move
move action
static const wayland::detail::bitfield< 3, 6 > copy
copy action
static const wayland::detail::bitfield< 2, 22 > current
indicates this is the current mode
static const wayland::detail::bitfield< 2, 22 > preferred
indicates this is the preferred mode
transform from framebuffer to output
static const wayland::detail::bitfield< 3, 21 > normal
no transform
static const wayland::detail::bitfield< 3, 21 > _270
270 degrees counter-clockwise
static const wayland::detail::bitfield< 3, 21 > flipped_180
flip and rotate 180 degrees counter-clockwise
static const wayland::detail::bitfield< 3, 21 > _180
180 degrees counter-clockwise
static const wayland::detail::bitfield< 3, 21 > flipped_90
flip and rotate 90 degrees counter-clockwise
static const wayland::detail::bitfield< 3, 21 > flipped_270
flip and rotate 270 degrees counter-clockwise
static const wayland::detail::bitfield< 3, 21 > flipped
180 degree flip around a vertical axis
static const wayland::detail::bitfield< 3, 21 > _90
90 degrees counter-clockwise
static const wayland::detail::bitfield< 3, 12 > touch
the seat has touch devices
static const wayland::detail::bitfield< 3, 12 > keyboard
the seat has one or more keyboards
static const wayland::detail::bitfield< 3, 12 > pointer
the seat has pointer devices
static const wayland::detail::bitfield< 4, 8 > bottom
bottom edge
static const wayland::detail::bitfield< 4, 8 > right
right edge
static const wayland::detail::bitfield< 4, 8 > bottom_right
bottom and right edges
static const wayland::detail::bitfield< 4, 8 > top
top edge
static const wayland::detail::bitfield< 4, 8 > none
no edge
static const wayland::detail::bitfield< 4, 8 > top_left
top and left edges
static const wayland::detail::bitfield< 4, 8 > top_right
top and right edges
static const wayland::detail::bitfield< 4, 8 > bottom_left
bottom and left edges
static const wayland::detail::bitfield< 4, 8 > left
left edge
static const wayland::detail::bitfield< 1, 9 > inactive
do not set keyboard focus