Wayland++  1.0.0
C++ Bindings for Wayland
wayland-client-protocol.hpp
1 #pragma once
2 
3 #include <array>
4 #include <cstdint>
5 #include <functional>
6 #include <memory>
7 #include <string>
8 #include <vector>
9 
10 #include <wayland-client.hpp>
11 
12 struct wl_registry;
13 struct wl_callback;
14 struct wl_compositor;
15 struct wl_shm_pool;
16 struct wl_shm;
17 struct wl_buffer;
18 struct wl_data_offer;
19 struct wl_data_source;
20 struct wl_data_device;
21 struct wl_data_device_manager;
22 struct wl_shell;
23 struct wl_shell_surface;
24 struct wl_surface;
25 struct wl_seat;
26 struct wl_pointer;
27 struct wl_keyboard;
28 struct wl_touch;
29 struct wl_output;
30 struct wl_region;
31 struct wl_subcompositor;
32 struct wl_subsurface;
33 
34 namespace wayland
35 {
36 class registry_t;
37 class callback_t;
38 class compositor_t;
39 class shm_pool_t;
40 class shm_t;
41 enum class shm_error : uint32_t;
42 enum class shm_format : uint32_t;
43 class buffer_t;
44 class data_offer_t;
45 enum class data_offer_error : uint32_t;
46 class data_source_t;
47 enum class data_source_error : uint32_t;
48 class data_device_t;
49 enum class data_device_error : uint32_t;
50 class data_device_manager_t;
51 struct data_device_manager_dnd_action;
52 class shell_t;
53 enum class shell_error : uint32_t;
54 class shell_surface_t;
55 struct shell_surface_resize;
56 struct shell_surface_transient;
57 enum class shell_surface_fullscreen_method : uint32_t;
58 class surface_t;
59 enum class surface_error : uint32_t;
60 class seat_t;
61 struct seat_capability;
62 enum class seat_error : uint32_t;
63 class pointer_t;
64 enum class pointer_error : uint32_t;
65 enum class pointer_button_state : uint32_t;
66 enum class pointer_axis : uint32_t;
67 enum class pointer_axis_source : uint32_t;
68 class keyboard_t;
69 enum class keyboard_keymap_format : uint32_t;
70 enum class keyboard_key_state : uint32_t;
71 class touch_t;
72 class output_t;
73 enum class output_subpixel : uint32_t;
74 struct output_transform;
75 struct output_mode;
76 class region_t;
77 class subcompositor_t;
78 enum class subcompositor_error : uint32_t;
79 class subsurface_t;
80 enum class subsurface_error : uint32_t;
81 
82 namespace detail
83 {
84  extern const wl_interface display_interface;
85  extern const wl_interface registry_interface;
86  extern const wl_interface callback_interface;
87  extern const wl_interface compositor_interface;
88  extern const wl_interface shm_pool_interface;
89  extern const wl_interface shm_interface;
90  extern const wl_interface buffer_interface;
91  extern const wl_interface data_offer_interface;
92  extern const wl_interface data_source_interface;
93  extern const wl_interface data_device_interface;
94  extern const wl_interface data_device_manager_interface;
95  extern const wl_interface shell_interface;
96  extern const wl_interface shell_surface_interface;
97  extern const wl_interface surface_interface;
98  extern const wl_interface seat_interface;
99  extern const wl_interface pointer_interface;
100  extern const wl_interface keyboard_interface;
101  extern const wl_interface touch_interface;
102  extern const wl_interface output_interface;
103  extern const wl_interface region_interface;
104  extern const wl_interface subcompositor_interface;
105  extern const wl_interface subsurface_interface;
106 }
107 
132 class registry_t : public proxy_t
133 {
134 private:
135  struct events_t : public detail::events_base_t
136  {
137  std::function<void(uint32_t, std::string, uint32_t)> global;
138  std::function<void(uint32_t)> global_remove;
139  };
140 
141  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
142 
143  registry_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
144 
145 public:
146  registry_t();
147  explicit registry_t(const proxy_t &proxy);
148  registry_t(wl_registry *p, wrapper_type t = wrapper_type::standard);
149 
150  registry_t proxy_create_wrapper();
151 
152  static const std::string interface_name;
153 
154  operator wl_registry*() const;
155 
166  proxy_t bind(uint32_t name, proxy_t &interface, uint32_t version);
167 
170  static constexpr std::uint32_t bind_since_version = 1;
171 
184  std::function<void(uint32_t, std::string, uint32_t)> &on_global();
185 
201  std::function<void(uint32_t)> &on_global_remove();
202 
203 };
204 
205 
212 class callback_t : public proxy_t
213 {
214 private:
215  struct events_t : public detail::events_base_t
216  {
217  std::function<void(uint32_t)> done;
218  };
219 
220  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
221 
222  callback_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
223 
224 public:
225  callback_t();
226  explicit callback_t(const proxy_t &proxy);
227  callback_t(wl_callback *p, wrapper_type t = wrapper_type::standard);
228 
229  callback_t proxy_create_wrapper();
230 
231  static const std::string interface_name;
232 
233  operator wl_callback*() const;
234 
241  std::function<void(uint32_t)> &on_done();
242 
243 };
244 
245 
253 class compositor_t : public proxy_t
254 {
255 private:
256  struct events_t : public detail::events_base_t
257  {
258  };
259 
260  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
261 
262  compositor_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
263 
264 public:
265  compositor_t();
266  explicit compositor_t(const proxy_t &proxy);
267  compositor_t(wl_compositor *p, wrapper_type t = wrapper_type::standard);
268 
269  compositor_t proxy_create_wrapper();
270 
271  static const std::string interface_name;
272 
273  operator wl_compositor*() const;
274 
282 
285  static constexpr std::uint32_t create_surface_since_version = 1;
286 
294 
297  static constexpr std::uint32_t create_region_since_version = 1;
298 
299 };
300 
301 
313 class shm_pool_t : public proxy_t
314 {
315 private:
316  struct events_t : public detail::events_base_t
317  {
318  };
319 
320  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
321 
322  shm_pool_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
323 
324 public:
325  shm_pool_t();
326  explicit shm_pool_t(const proxy_t &proxy);
327  shm_pool_t(wl_shm_pool *p, wrapper_type t = wrapper_type::standard);
328 
329  shm_pool_t proxy_create_wrapper();
330 
331  static const std::string interface_name;
332 
333  operator wl_shm_pool*() const;
334 
356  buffer_t create_buffer(int32_t offset, int32_t width, int32_t height, int32_t stride, shm_format const& format);
357 
360  static constexpr std::uint32_t create_buffer_since_version = 1;
361 
377  void resize(int32_t size);
378 
381  static constexpr std::uint32_t resize_since_version = 1;
382 
383 };
384 
385 
399 class shm_t : public proxy_t
400 {
401 private:
402  struct events_t : public detail::events_base_t
403  {
404  std::function<void(shm_format)> format;
405  };
406 
407  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
408 
409  shm_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
410 
411 public:
412  shm_t();
413  explicit shm_t(const proxy_t &proxy);
414  shm_t(wl_shm *p, wrapper_type t = wrapper_type::standard);
415 
416  shm_t proxy_create_wrapper();
417 
418  static const std::string interface_name;
419 
420  operator wl_shm*() const;
421 
434  shm_pool_t create_pool(int fd, int32_t size);
435 
438  static constexpr std::uint32_t create_pool_since_version = 1;
439 
448  std::function<void(shm_format)> &on_format();
449 
450 };
451 
457 enum class shm_error : uint32_t
458  {
460  invalid_format = 0,
462  invalid_stride = 1,
464  invalid_fd = 2
465 };
466 
483 enum class shm_format : uint32_t
484  {
486  argb8888 = 0,
488  xrgb8888 = 1,
490  c8 = 0x20203843,
492  rgb332 = 0x38424752,
494  bgr233 = 0x38524742,
496  xrgb4444 = 0x32315258,
498  xbgr4444 = 0x32314258,
500  rgbx4444 = 0x32315852,
502  bgrx4444 = 0x32315842,
504  argb4444 = 0x32315241,
506  abgr4444 = 0x32314241,
508  rgba4444 = 0x32314152,
510  bgra4444 = 0x32314142,
512  xrgb1555 = 0x35315258,
514  xbgr1555 = 0x35314258,
516  rgbx5551 = 0x35315852,
518  bgrx5551 = 0x35315842,
520  argb1555 = 0x35315241,
522  abgr1555 = 0x35314241,
524  rgba5551 = 0x35314152,
526  bgra5551 = 0x35314142,
528  rgb565 = 0x36314752,
530  bgr565 = 0x36314742,
532  rgb888 = 0x34324752,
534  bgr888 = 0x34324742,
536  xbgr8888 = 0x34324258,
538  rgbx8888 = 0x34325852,
540  bgrx8888 = 0x34325842,
542  abgr8888 = 0x34324241,
544  rgba8888 = 0x34324152,
546  bgra8888 = 0x34324142,
548  xrgb2101010 = 0x30335258,
550  xbgr2101010 = 0x30334258,
552  rgbx1010102 = 0x30335852,
554  bgrx1010102 = 0x30335842,
556  argb2101010 = 0x30335241,
558  abgr2101010 = 0x30334241,
560  rgba1010102 = 0x30334152,
562  bgra1010102 = 0x30334142,
564  yuyv = 0x56595559,
566  yvyu = 0x55595659,
568  uyvy = 0x59565955,
570  vyuy = 0x59555956,
572  ayuv = 0x56555941,
574  nv12 = 0x3231564e,
576  nv21 = 0x3132564e,
578  nv16 = 0x3631564e,
580  nv61 = 0x3136564e,
582  yuv410 = 0x39565559,
584  yvu410 = 0x39555659,
586  yuv411 = 0x31315559,
588  yvu411 = 0x31315659,
590  yuv420 = 0x32315559,
592  yvu420 = 0x32315659,
594  yuv422 = 0x36315559,
596  yvu422 = 0x36315659,
598  yuv444 = 0x34325559,
600  yvu444 = 0x34325659,
602  r8 = 0x20203852,
604  r16 = 0x20363152,
606  rg88 = 0x38384752,
608  gr88 = 0x38385247,
610  rg1616 = 0x32334752,
612  gr1616 = 0x32335247,
614  xrgb16161616f = 0x48345258,
616  xbgr16161616f = 0x48344258,
618  argb16161616f = 0x48345241,
620  abgr16161616f = 0x48344241,
622  xyuv8888 = 0x56555958,
624  vuy888 = 0x34325556,
626  vuy101010 = 0x30335556,
628  y210 = 0x30313259,
630  y212 = 0x32313259,
632  y216 = 0x36313259,
634  y410 = 0x30313459,
636  y412 = 0x32313459,
638  y416 = 0x36313459,
640  xvyu2101010 = 0x30335658,
642  xvyu12_16161616 = 0x36335658,
644  xvyu16161616 = 0x38345658,
646  y0l0 = 0x304c3059,
648  x0l0 = 0x304c3058,
650  y0l2 = 0x324c3059,
652  x0l2 = 0x324c3058,
653  yuv420_8bit = 0x38305559,
654  yuv420_10bit = 0x30315559,
655  xrgb8888_a8 = 0x38415258,
656  xbgr8888_a8 = 0x38414258,
657  rgbx8888_a8 = 0x38415852,
658  bgrx8888_a8 = 0x38415842,
659  rgb888_a8 = 0x38413852,
660  bgr888_a8 = 0x38413842,
661  rgb565_a8 = 0x38413552,
662  bgr565_a8 = 0x38413542,
664  nv24 = 0x3432564e,
666  nv42 = 0x3234564e,
668  p210 = 0x30313250,
670  p010 = 0x30313050,
672  p012 = 0x32313050,
674  p016 = 0x36313050,
676  axbxgxrx106106106106 = 0x30314241,
678  nv15 = 0x3531564e,
679  q410 = 0x30313451,
680  q401 = 0x31303451,
682  xrgb16161616 = 0x38345258,
684  xbgr16161616 = 0x38344258,
686  argb16161616 = 0x38345241,
688  abgr16161616 = 0x38344241
689 };
690 
691 
706 class buffer_t : public proxy_t
707 {
708 private:
709  struct events_t : public detail::events_base_t
710  {
711  std::function<void()> release;
712  };
713 
714  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
715 
716  buffer_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
717 
718 public:
719  buffer_t();
720  explicit buffer_t(const proxy_t &proxy);
721  buffer_t(wl_buffer *p, wrapper_type t = wrapper_type::standard);
722 
723  buffer_t proxy_create_wrapper();
724 
725  static const std::string interface_name;
726 
727  operator wl_buffer*() const;
728 
745  std::function<void()> &on_release();
746 
747 };
748 
749 
760 class data_offer_t : public proxy_t
761 {
762 private:
763  struct events_t : public detail::events_base_t
764  {
765  std::function<void(std::string)> offer;
766  std::function<void(data_device_manager_dnd_action)> source_actions;
767  std::function<void(data_device_manager_dnd_action)> action;
768  };
769 
770  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
771 
772  data_offer_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
773 
774 public:
775  data_offer_t();
776  explicit data_offer_t(const proxy_t &proxy);
777  data_offer_t(wl_data_offer *p, wrapper_type t = wrapper_type::standard);
778 
779  data_offer_t proxy_create_wrapper();
780 
781  static const std::string interface_name;
782 
783  operator wl_data_offer*() const;
784 
805  void accept(uint32_t serial, std::string const& mime_type);
806 
809  static constexpr std::uint32_t accept_since_version = 1;
810 
832  void receive(std::string const& mime_type, int fd);
833 
836  static constexpr std::uint32_t receive_since_version = 1;
837 
856  void finish();
857 
860  static constexpr std::uint32_t finish_since_version = 3;
861 
865  bool can_finish() const;
866 
904  void set_actions(data_device_manager_dnd_action const& dnd_actions, data_device_manager_dnd_action const& preferred_action);
905 
908  static constexpr std::uint32_t set_actions_since_version = 3;
909 
913  bool can_set_actions() const;
914 
922  std::function<void(std::string)> &on_offer();
923 
932  std::function<void(data_device_manager_dnd_action)> &on_source_actions();
933 
974  std::function<void(data_device_manager_dnd_action)> &on_action();
975 
976 };
977 
981 enum class data_offer_error : uint32_t
982  {
984  invalid_finish = 0,
986  invalid_action_mask = 1,
988  invalid_action = 2,
990  invalid_offer = 3
991 };
992 
993 
1002 class data_source_t : public proxy_t
1003 {
1004 private:
1005  struct events_t : public detail::events_base_t
1006  {
1007  std::function<void(std::string)> target;
1008  std::function<void(std::string, int)> send;
1009  std::function<void()> cancelled;
1010  std::function<void()> dnd_drop_performed;
1011  std::function<void()> dnd_finished;
1012  std::function<void(data_device_manager_dnd_action)> action;
1013  };
1014 
1015  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
1016 
1017  data_source_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
1018 
1019 public:
1020  data_source_t();
1021  explicit data_source_t(const proxy_t &proxy);
1022  data_source_t(wl_data_source *p, wrapper_type t = wrapper_type::standard);
1023 
1024  data_source_t proxy_create_wrapper();
1025 
1026  static const std::string interface_name;
1027 
1028  operator wl_data_source*() const;
1029 
1038  void offer(std::string const& mime_type);
1039 
1042  static constexpr std::uint32_t offer_since_version = 1;
1043 
1062  void set_actions(data_device_manager_dnd_action const& dnd_actions);
1063 
1066  static constexpr std::uint32_t set_actions_since_version = 3;
1067 
1071  bool can_set_actions() const;
1072 
1082  std::function<void(std::string)> &on_target();
1083 
1093  std::function<void(std::string, int)> &on_send();
1094 
1119  std::function<void()> &on_cancelled();
1120 
1134  std::function<void()> &on_dnd_drop_performed();
1135 
1146  std::function<void()> &on_dnd_finished();
1147 
1178  std::function<void(data_device_manager_dnd_action)> &on_action();
1179 
1180 };
1181 
1185 enum class data_source_error : uint32_t
1186  {
1188  invalid_action_mask = 0,
1190  invalid_source = 1
1191 };
1192 
1193 
1203 class data_device_t : public proxy_t
1204 {
1205 private:
1206  struct events_t : public detail::events_base_t
1207  {
1208  std::function<void(data_offer_t)> data_offer;
1209  std::function<void(uint32_t, surface_t, double, double, data_offer_t)> enter;
1210  std::function<void()> leave;
1211  std::function<void(uint32_t, double, double)> motion;
1212  std::function<void()> drop;
1213  std::function<void(data_offer_t)> selection;
1214  };
1215 
1216  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
1217 
1218  data_device_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
1219 
1220 public:
1221  data_device_t();
1222  explicit data_device_t(const proxy_t &proxy);
1223  data_device_t(wl_data_device *p, wrapper_type t = wrapper_type::standard);
1224 
1225  data_device_t proxy_create_wrapper();
1226 
1227  static const std::string interface_name;
1228 
1229  operator wl_data_device*() const;
1230 
1267  void start_drag(data_source_t const& source, surface_t const& origin, surface_t const& icon, uint32_t serial);
1268 
1271  static constexpr std::uint32_t start_drag_since_version = 1;
1272 
1283  void set_selection(data_source_t const& source, uint32_t serial);
1284 
1287  static constexpr std::uint32_t set_selection_since_version = 1;
1288 
1294  void release();
1295 
1298  static constexpr std::uint32_t release_since_version = 2;
1299 
1303  bool can_release() const;
1304 
1317  std::function<void(data_offer_t)> &on_data_offer();
1318 
1332  std::function<void(uint32_t, surface_t, double, double, data_offer_t)> &on_enter();
1333 
1341  std::function<void()> &on_leave();
1342 
1354  std::function<void(uint32_t, double, double)> &on_motion();
1355 
1373  std::function<void()> &on_drop();
1374 
1392  std::function<void(data_offer_t)> &on_selection();
1393 
1394 };
1395 
1399 enum class data_device_error : uint32_t
1400  {
1402  role = 0
1403 };
1404 
1405 
1421 {
1422 private:
1423  struct events_t : public detail::events_base_t
1424  {
1425  };
1426 
1427  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
1428 
1429  data_device_manager_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
1430 
1431 public:
1433  explicit data_device_manager_t(const proxy_t &proxy);
1434  data_device_manager_t(wl_data_device_manager *p, wrapper_type t = wrapper_type::standard);
1435 
1436  data_device_manager_t proxy_create_wrapper();
1437 
1438  static const std::string interface_name;
1439 
1440  operator wl_data_device_manager*() const;
1441 
1449 
1452  static constexpr std::uint32_t create_data_source_since_version = 1;
1453 
1461  data_device_t get_data_device(seat_t const& seat);
1462 
1465  static constexpr std::uint32_t get_data_device_since_version = 1;
1466 
1467 };
1468 
1496 struct data_device_manager_dnd_action : public wayland::detail::bitfield<3, 6>
1497 {
1498  data_device_manager_dnd_action(const wayland::detail::bitfield<3, 6> &b)
1499  : wayland::detail::bitfield<3, 6>(b) {}
1500  data_device_manager_dnd_action(const uint32_t value)
1501  : wayland::detail::bitfield<3, 6>(value) {}
1503  static const wayland::detail::bitfield<3, 6> none;
1505  static const wayland::detail::bitfield<3, 6> copy;
1507  static const wayland::detail::bitfield<3, 6> move;
1509  static const wayland::detail::bitfield<3, 6> ask;
1510 };
1511 
1512 
1526 class shell_t : public proxy_t
1527 {
1528 private:
1529  struct events_t : public detail::events_base_t
1530  {
1531  };
1532 
1533  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
1534 
1535  shell_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
1536 
1537 public:
1538  shell_t();
1539  explicit shell_t(const proxy_t &proxy);
1540  shell_t(wl_shell *p, wrapper_type t = wrapper_type::standard);
1541 
1542  shell_t proxy_create_wrapper();
1543 
1544  static const std::string interface_name;
1545 
1546  operator wl_shell*() const;
1547 
1560 
1563  static constexpr std::uint32_t get_shell_surface_since_version = 1;
1564 
1565 };
1566 
1570 enum class shell_error : uint32_t
1571  {
1573  role = 0
1574 };
1575 
1576 
1592 class shell_surface_t : public proxy_t
1593 {
1594 private:
1595  struct events_t : public detail::events_base_t
1596  {
1597  std::function<void(uint32_t)> ping;
1598  std::function<void(shell_surface_resize, int32_t, int32_t)> configure;
1599  std::function<void()> popup_done;
1600  };
1601 
1602  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
1603 
1604  shell_surface_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
1605 
1606 public:
1607  shell_surface_t();
1608  explicit shell_surface_t(const proxy_t &proxy);
1609  shell_surface_t(wl_shell_surface *p, wrapper_type t = wrapper_type::standard);
1610 
1611  shell_surface_t proxy_create_wrapper();
1612 
1613  static const std::string interface_name;
1614 
1615  operator wl_shell_surface*() const;
1616 
1624  void pong(uint32_t serial);
1625 
1628  static constexpr std::uint32_t pong_since_version = 1;
1629 
1641  void move(seat_t const& seat, uint32_t serial);
1642 
1645  static constexpr std::uint32_t move_since_version = 1;
1646 
1659  void resize(seat_t const& seat, uint32_t serial, shell_surface_resize const& edges);
1660 
1663  static constexpr std::uint32_t resize_since_version = 1;
1664 
1672  void set_toplevel();
1673 
1676  static constexpr std::uint32_t set_toplevel_since_version = 1;
1677 
1693  void set_transient(surface_t const& parent, int32_t x, int32_t y, shell_surface_transient const& flags);
1694 
1697  static constexpr std::uint32_t set_transient_since_version = 1;
1698 
1739  void set_fullscreen(shell_surface_fullscreen_method const& method, uint32_t framerate, output_t const& output);
1740 
1743  static constexpr std::uint32_t set_fullscreen_since_version = 1;
1744 
1774  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);
1775 
1778  static constexpr std::uint32_t set_popup_since_version = 1;
1779 
1803  void set_maximized(output_t const& output);
1804 
1807  static constexpr std::uint32_t set_maximized_since_version = 1;
1808 
1821  void set_title(std::string const& title);
1822 
1825  static constexpr std::uint32_t set_title_since_version = 1;
1826 
1838  void set_class(std::string const& class_);
1839 
1842  static constexpr std::uint32_t set_class_since_version = 1;
1843 
1851  std::function<void(uint32_t)> &on_ping();
1852 
1877  std::function<void(shell_surface_resize, int32_t, int32_t)> &on_configure();
1878 
1886  std::function<void()> &on_popup_done();
1887 
1888 };
1889 
1898 struct shell_surface_resize : public wayland::detail::bitfield<4, 8>
1899 {
1900  shell_surface_resize(const wayland::detail::bitfield<4, 8> &b)
1901  : wayland::detail::bitfield<4, 8>(b) {}
1902  shell_surface_resize(const uint32_t value)
1903  : wayland::detail::bitfield<4, 8>(value) {}
1905  static const wayland::detail::bitfield<4, 8> none;
1907  static const wayland::detail::bitfield<4, 8> top;
1909  static const wayland::detail::bitfield<4, 8> bottom;
1911  static const wayland::detail::bitfield<4, 8> left;
1913  static const wayland::detail::bitfield<4, 8> top_left;
1915  static const wayland::detail::bitfield<4, 8> bottom_left;
1917  static const wayland::detail::bitfield<4, 8> right;
1919  static const wayland::detail::bitfield<4, 8> top_right;
1921  static const wayland::detail::bitfield<4, 8> bottom_right;
1922 };
1923 
1930 struct shell_surface_transient : public wayland::detail::bitfield<1, 9>
1931 {
1932  shell_surface_transient(const wayland::detail::bitfield<1, 9> &b)
1933  : wayland::detail::bitfield<1, 9>(b) {}
1934  shell_surface_transient(const uint32_t value)
1935  : wayland::detail::bitfield<1, 9>(value) {}
1937  static const wayland::detail::bitfield<1, 9> inactive;
1938 };
1939 
1947 enum class shell_surface_fullscreen_method : uint32_t
1948  {
1950  _default = 0,
1952  scale = 1,
1954  driver = 2,
1956  fill = 3
1957 };
1958 
1959 
2005 class surface_t : public proxy_t
2006 {
2007 private:
2008  struct events_t : public detail::events_base_t
2009  {
2010  std::function<void(output_t)> enter;
2011  std::function<void(output_t)> leave;
2012  };
2013 
2014  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
2015 
2016  surface_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
2017 
2018 public:
2019  surface_t();
2020  explicit surface_t(const proxy_t &proxy);
2021  surface_t(wl_surface *p, wrapper_type t = wrapper_type::standard);
2022 
2023  surface_t proxy_create_wrapper();
2024 
2025  static const std::string interface_name;
2026 
2027  operator wl_surface*() const;
2028 
2092  void attach(buffer_t const& buffer, int32_t x, int32_t y);
2093 
2096  static constexpr std::uint32_t attach_since_version = 1;
2097 
2127  void damage(int32_t x, int32_t y, int32_t width, int32_t height);
2128 
2131  static constexpr std::uint32_t damage_since_version = 1;
2132 
2170  callback_t frame();
2171 
2174  static constexpr std::uint32_t frame_since_version = 1;
2175 
2205  void set_opaque_region(region_t const& region);
2206 
2209  static constexpr std::uint32_t set_opaque_region_since_version = 1;
2210 
2238  void set_input_region(region_t const& region);
2239 
2242  static constexpr std::uint32_t set_input_region_since_version = 1;
2243 
2265  void commit();
2266 
2269  static constexpr std::uint32_t commit_since_version = 1;
2270 
2305  void set_buffer_transform(output_transform const& transform);
2306 
2309  static constexpr std::uint32_t set_buffer_transform_since_version = 2;
2310 
2314  bool can_set_buffer_transform() const;
2315 
2344  void set_buffer_scale(int32_t scale);
2345 
2348  static constexpr std::uint32_t set_buffer_scale_since_version = 3;
2349 
2353  bool can_set_buffer_scale() const;
2354 
2395  void damage_buffer(int32_t x, int32_t y, int32_t width, int32_t height);
2396 
2399  static constexpr std::uint32_t damage_buffer_since_version = 4;
2400 
2404  bool can_damage_buffer() const;
2405 
2424  void offset(int32_t x, int32_t y);
2425 
2428  static constexpr std::uint32_t offset_since_version = 5;
2429 
2433  bool can_offset() const;
2434 
2445  std::function<void(output_t)> &on_enter();
2446 
2461  std::function<void(output_t)> &on_leave();
2462 
2463 };
2464 
2470 enum class surface_error : uint32_t
2471  {
2473  invalid_scale = 0,
2475  invalid_transform = 1,
2477  invalid_size = 2,
2479  invalid_offset = 3
2480 };
2481 
2482 
2491 class seat_t : public proxy_t
2492 {
2493 private:
2494  struct events_t : public detail::events_base_t
2495  {
2496  std::function<void(seat_capability)> capabilities;
2497  std::function<void(std::string)> name;
2498  };
2499 
2500  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
2501 
2502  seat_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
2503 
2504 public:
2505  seat_t();
2506  explicit seat_t(const proxy_t &proxy);
2507  seat_t(wl_seat *p, wrapper_type t = wrapper_type::standard);
2508 
2509  seat_t proxy_create_wrapper();
2510 
2511  static const std::string interface_name;
2512 
2513  operator wl_seat*() const;
2514 
2529 
2532  static constexpr std::uint32_t get_pointer_since_version = 1;
2533 
2548 
2551  static constexpr std::uint32_t get_keyboard_since_version = 1;
2552 
2566  touch_t get_touch();
2567 
2570  static constexpr std::uint32_t get_touch_since_version = 1;
2571 
2578  void release();
2579 
2582  static constexpr std::uint32_t release_since_version = 5;
2583 
2587  bool can_release() const;
2588 
2618  std::function<void(seat_capability)> &on_capabilities();
2619 
2641  std::function<void(std::string)> &on_name();
2642 
2643 };
2644 
2651 struct seat_capability : public wayland::detail::bitfield<3, 12>
2652 {
2653  seat_capability(const wayland::detail::bitfield<3, 12> &b)
2654  : wayland::detail::bitfield<3, 12>(b) {}
2655  seat_capability(const uint32_t value)
2656  : wayland::detail::bitfield<3, 12>(value) {}
2658  static const wayland::detail::bitfield<3, 12> pointer;
2660  static const wayland::detail::bitfield<3, 12> keyboard;
2662  static const wayland::detail::bitfield<3, 12> touch;
2663 };
2664 
2670 enum class seat_error : uint32_t
2671  {
2673  missing_capability = 0
2674 };
2675 
2676 
2689 class pointer_t : public proxy_t
2690 {
2691 private:
2692  struct events_t : public detail::events_base_t
2693  {
2694  std::function<void(uint32_t, surface_t, double, double)> enter;
2695  std::function<void(uint32_t, surface_t)> leave;
2696  std::function<void(uint32_t, double, double)> motion;
2697  std::function<void(uint32_t, uint32_t, uint32_t, pointer_button_state)> button;
2698  std::function<void(uint32_t, pointer_axis, double)> axis;
2699  std::function<void()> frame;
2700  std::function<void(pointer_axis_source)> axis_source;
2701  std::function<void(uint32_t, pointer_axis)> axis_stop;
2702  std::function<void(pointer_axis, int32_t)> axis_discrete;
2703  std::function<void(pointer_axis, int32_t)> axis_value120;
2704  };
2705 
2706  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
2707 
2708  pointer_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
2709 
2710 public:
2711  pointer_t();
2712  explicit pointer_t(const proxy_t &proxy);
2713  pointer_t(wl_pointer *p, wrapper_type t = wrapper_type::standard);
2714 
2715  pointer_t proxy_create_wrapper();
2716 
2717  static const std::string interface_name;
2718 
2719  operator wl_pointer*() const;
2720 
2764  void set_cursor(uint32_t serial, surface_t const& surface, int32_t hotspot_x, int32_t hotspot_y);
2765 
2768  static constexpr std::uint32_t set_cursor_since_version = 1;
2769 
2779  void release();
2780 
2783  static constexpr std::uint32_t release_since_version = 3;
2784 
2788  bool can_release() const;
2789 
2804  std::function<void(uint32_t, surface_t, double, double)> &on_enter();
2805 
2817  std::function<void(uint32_t, surface_t)> &on_leave();
2818 
2829  std::function<void(uint32_t, double, double)> &on_motion();
2830 
2853  std::function<void(uint32_t, uint32_t, uint32_t, pointer_button_state)> &on_button();
2854 
2878  std::function<void(uint32_t, pointer_axis, double)> &on_axis();
2879 
2918  std::function<void()> &on_frame();
2919 
2950  std::function<void(pointer_axis_source)> &on_axis_source();
2951 
2972  std::function<void(uint32_t, pointer_axis)> &on_axis_stop();
2973 
3009  std::function<void(pointer_axis, int32_t)> &on_axis_discrete();
3010 
3038  std::function<void(pointer_axis, int32_t)> &on_axis_value120();
3039 
3040 };
3041 
3045 enum class pointer_error : uint32_t
3046  {
3048  role = 0
3049 };
3050 
3057 enum class pointer_button_state : uint32_t
3058  {
3060  released = 0,
3062  pressed = 1
3063 };
3064 
3070 enum class pointer_axis : uint32_t
3071  {
3073  vertical_scroll = 0,
3075  horizontal_scroll = 1
3076 };
3077 
3098 enum class pointer_axis_source : uint32_t
3099  {
3101  wheel = 0,
3103  finger = 1,
3105  continuous = 2,
3107  wheel_tilt = 3
3108 };
3109 
3110 
3117 class keyboard_t : public proxy_t
3118 {
3119 private:
3120  struct events_t : public detail::events_base_t
3121  {
3122  std::function<void(keyboard_keymap_format, int, uint32_t)> keymap;
3123  std::function<void(uint32_t, surface_t, array_t)> enter;
3124  std::function<void(uint32_t, surface_t)> leave;
3125  std::function<void(uint32_t, uint32_t, uint32_t, keyboard_key_state)> key;
3126  std::function<void(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t)> modifiers;
3127  std::function<void(int32_t, int32_t)> repeat_info;
3128  };
3129 
3130  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
3131 
3132  keyboard_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
3133 
3134 public:
3135  keyboard_t();
3136  explicit keyboard_t(const proxy_t &proxy);
3137  keyboard_t(wl_keyboard *p, wrapper_type t = wrapper_type::standard);
3138 
3139  keyboard_t proxy_create_wrapper();
3140 
3141  static const std::string interface_name;
3142 
3143  operator wl_keyboard*() const;
3144 
3148  void release();
3149 
3152  static constexpr std::uint32_t release_since_version = 3;
3153 
3157  bool can_release() const;
3158 
3172  std::function<void(keyboard_keymap_format, int, uint32_t)> &on_keymap();
3173 
3186  std::function<void(uint32_t, surface_t, array_t)> &on_enter();
3187 
3202  std::function<void(uint32_t, surface_t)> &on_leave();
3203 
3221  std::function<void(uint32_t, uint32_t, uint32_t, keyboard_key_state)> &on_key();
3222 
3234  std::function<void(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t)> &on_modifiers();
3235 
3254  std::function<void(int32_t, int32_t)> &on_repeat_info();
3255 
3256 };
3257 
3264 enum class keyboard_keymap_format : uint32_t
3265  {
3267  no_keymap = 0,
3269  xkb_v1 = 1
3270 };
3271 
3277 enum class keyboard_key_state : uint32_t
3278  {
3280  released = 0,
3282  pressed = 1
3283 };
3284 
3285 
3298 class touch_t : public proxy_t
3299 {
3300 private:
3301  struct events_t : public detail::events_base_t
3302  {
3303  std::function<void(uint32_t, uint32_t, surface_t, int32_t, double, double)> down;
3304  std::function<void(uint32_t, uint32_t, int32_t)> up;
3305  std::function<void(uint32_t, int32_t, double, double)> motion;
3306  std::function<void()> frame;
3307  std::function<void()> cancel;
3308  std::function<void(int32_t, double, double)> shape;
3309  std::function<void(int32_t, double)> orientation;
3310  };
3311 
3312  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
3313 
3314  touch_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
3315 
3316 public:
3317  touch_t();
3318  explicit touch_t(const proxy_t &proxy);
3319  touch_t(wl_touch *p, wrapper_type t = wrapper_type::standard);
3320 
3321  touch_t proxy_create_wrapper();
3322 
3323  static const std::string interface_name;
3324 
3325  operator wl_touch*() const;
3326 
3330  void release();
3331 
3334  static constexpr std::uint32_t release_since_version = 3;
3335 
3339  bool can_release() const;
3340 
3355  std::function<void(uint32_t, uint32_t, surface_t, int32_t, double, double)> &on_down();
3356 
3367  std::function<void(uint32_t, uint32_t, int32_t)> &on_up();
3368 
3378  std::function<void(uint32_t, int32_t, double, double)> &on_motion();
3379 
3392  std::function<void()> &on_frame();
3393 
3404  std::function<void()> &on_cancel();
3405 
3438  std::function<void(int32_t, double, double)> &on_shape();
3439 
3469  std::function<void(int32_t, double)> &on_orientation();
3470 
3471 };
3472 
3473 
3484 class output_t : public proxy_t
3485 {
3486 private:
3487  struct events_t : public detail::events_base_t
3488  {
3489  std::function<void(int32_t, int32_t, int32_t, int32_t, output_subpixel, std::string, std::string, output_transform)> geometry;
3490  std::function<void(output_mode, int32_t, int32_t, int32_t)> mode;
3491  std::function<void()> done;
3492  std::function<void(int32_t)> scale;
3493  std::function<void(std::string)> name;
3494  std::function<void(std::string)> description;
3495  };
3496 
3497  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
3498 
3499  output_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
3500 
3501 public:
3502  output_t();
3503  explicit output_t(const proxy_t &proxy);
3504  output_t(wl_output *p, wrapper_type t = wrapper_type::standard);
3505 
3506  output_t proxy_create_wrapper();
3507 
3508  static const std::string interface_name;
3509 
3510  operator wl_output*() const;
3511 
3518  void release();
3519 
3522  static constexpr std::uint32_t release_since_version = 3;
3523 
3527  bool can_release() const;
3528 
3557  std::function<void(int32_t, int32_t, int32_t, int32_t, output_subpixel, std::string, std::string, output_transform)> &on_geometry();
3558 
3600  std::function<void(output_mode, int32_t, int32_t, int32_t)> &on_mode();
3601 
3611  std::function<void()> &on_done();
3612 
3638  std::function<void(int32_t)> &on_scale();
3639 
3673  std::function<void(std::string)> &on_name();
3674 
3694  std::function<void(std::string)> &on_description();
3695 
3696 };
3697 
3704 enum class output_subpixel : uint32_t
3705  {
3707  unknown = 0,
3709  none = 1,
3711  horizontal_rgb = 2,
3713  horizontal_bgr = 3,
3715  vertical_rgb = 4,
3717  vertical_bgr = 5
3718 };
3719 
3735 struct output_transform : public wayland::detail::bitfield<3, 21>
3736 {
3737  output_transform(const wayland::detail::bitfield<3, 21> &b)
3738  : wayland::detail::bitfield<3, 21>(b) {}
3739  output_transform(const uint32_t value)
3740  : wayland::detail::bitfield<3, 21>(value) {}
3742  static const wayland::detail::bitfield<3, 21> normal;
3744  static const wayland::detail::bitfield<3, 21> _90;
3746  static const wayland::detail::bitfield<3, 21> _180;
3748  static const wayland::detail::bitfield<3, 21> _270;
3750  static const wayland::detail::bitfield<3, 21> flipped;
3752  static const wayland::detail::bitfield<3, 21> flipped_90;
3754  static const wayland::detail::bitfield<3, 21> flipped_180;
3756  static const wayland::detail::bitfield<3, 21> flipped_270;
3757 };
3758 
3765 struct output_mode : public wayland::detail::bitfield<2, 22>
3766 {
3767  output_mode(const wayland::detail::bitfield<2, 22> &b)
3768  : wayland::detail::bitfield<2, 22>(b) {}
3769  output_mode(const uint32_t value)
3770  : wayland::detail::bitfield<2, 22>(value) {}
3772  static const wayland::detail::bitfield<2, 22> current;
3774  static const wayland::detail::bitfield<2, 22> preferred;
3775 };
3776 
3777 
3786 class region_t : public proxy_t
3787 {
3788 private:
3789  struct events_t : public detail::events_base_t
3790  {
3791  };
3792 
3793  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
3794 
3795  region_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
3796 
3797 public:
3798  region_t();
3799  explicit region_t(const proxy_t &proxy);
3800  region_t(wl_region *p, wrapper_type t = wrapper_type::standard);
3801 
3802  region_t proxy_create_wrapper();
3803 
3804  static const std::string interface_name;
3805 
3806  operator wl_region*() const;
3807 
3817  void add(int32_t x, int32_t y, int32_t width, int32_t height);
3818 
3821  static constexpr std::uint32_t add_since_version = 1;
3822 
3832  void subtract(int32_t x, int32_t y, int32_t width, int32_t height);
3833 
3836  static constexpr std::uint32_t subtract_since_version = 1;
3837 
3838 };
3839 
3840 
3864 class subcompositor_t : public proxy_t
3865 {
3866 private:
3867  struct events_t : public detail::events_base_t
3868  {
3869  };
3870 
3871  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
3872 
3873  subcompositor_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
3874 
3875 public:
3876  subcompositor_t();
3877  explicit subcompositor_t(const proxy_t &proxy);
3878  subcompositor_t(wl_subcompositor *p, wrapper_type t = wrapper_type::standard);
3879 
3880  subcompositor_t proxy_create_wrapper();
3881 
3882  static const std::string interface_name;
3883 
3884  operator wl_subcompositor*() const;
3885 
3908  subsurface_t get_subsurface(surface_t const& surface, surface_t const& parent);
3909 
3912  static constexpr std::uint32_t get_subsurface_since_version = 1;
3913 
3914 };
3915 
3919 enum class subcompositor_error : uint32_t
3920  {
3922  bad_surface = 0
3923 };
3924 
3925 
3979 class subsurface_t : public proxy_t
3980 {
3981 private:
3982  struct events_t : public detail::events_base_t
3983  {
3984  };
3985 
3986  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
3987 
3988  subsurface_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
3989 
3990 public:
3991  subsurface_t();
3992  explicit subsurface_t(const proxy_t &proxy);
3993  subsurface_t(wl_subsurface *p, wrapper_type t = wrapper_type::standard);
3994 
3995  subsurface_t proxy_create_wrapper();
3996 
3997  static const std::string interface_name;
3998 
3999  operator wl_subsurface*() const;
4000 
4023  void set_position(int32_t x, int32_t y);
4024 
4027  static constexpr std::uint32_t set_position_since_version = 1;
4028 
4049  void place_above(surface_t const& sibling);
4050 
4053  static constexpr std::uint32_t place_above_since_version = 1;
4054 
4062  void place_below(surface_t const& sibling);
4063 
4066  static constexpr std::uint32_t place_below_since_version = 1;
4067 
4085  void set_sync();
4086 
4089  static constexpr std::uint32_t set_sync_since_version = 1;
4090 
4114  void set_desync();
4115 
4118  static constexpr std::uint32_t set_desync_since_version = 1;
4119 
4120 };
4121 
4125 enum class subsurface_error : uint32_t
4126  {
4128  bad_surface = 0
4129 };
4130 
4131 
4132 
4133 }
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