Wayland++  0.2.10
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 
370  void resize(int32_t size);
371 
374  static constexpr std::uint32_t resize_since_version = 1;
375 
376 };
377 
378 
392 class shm_t : public proxy_t
393 {
394 private:
395  struct events_t : public detail::events_base_t
396  {
397  std::function<void(shm_format)> format;
398  };
399 
400  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
401 
402  shm_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
403 
404 public:
405  shm_t();
406  explicit shm_t(const proxy_t &proxy);
407  shm_t(wl_shm *p, wrapper_type t = wrapper_type::standard);
408 
409  shm_t proxy_create_wrapper();
410 
411  static const std::string interface_name;
412 
413  operator wl_shm*() const;
414 
427  shm_pool_t create_pool(int fd, int32_t size);
428 
431  static constexpr std::uint32_t create_pool_since_version = 1;
432 
441  std::function<void(shm_format)> &on_format();
442 
443 };
444 
450 enum class shm_error : uint32_t
451  {
453  invalid_format = 0,
455  invalid_stride = 1,
457  invalid_fd = 2
458 };
459 
473 enum class shm_format : uint32_t
474  {
476  argb8888 = 0,
478  xrgb8888 = 1,
480  c8 = 0x20203843,
482  rgb332 = 0x38424752,
484  bgr233 = 0x38524742,
486  xrgb4444 = 0x32315258,
488  xbgr4444 = 0x32314258,
490  rgbx4444 = 0x32315852,
492  bgrx4444 = 0x32315842,
494  argb4444 = 0x32315241,
496  abgr4444 = 0x32314241,
498  rgba4444 = 0x32314152,
500  bgra4444 = 0x32314142,
502  xrgb1555 = 0x35315258,
504  xbgr1555 = 0x35314258,
506  rgbx5551 = 0x35315852,
508  bgrx5551 = 0x35315842,
510  argb1555 = 0x35315241,
512  abgr1555 = 0x35314241,
514  rgba5551 = 0x35314152,
516  bgra5551 = 0x35314142,
518  rgb565 = 0x36314752,
520  bgr565 = 0x36314742,
522  rgb888 = 0x34324752,
524  bgr888 = 0x34324742,
526  xbgr8888 = 0x34324258,
528  rgbx8888 = 0x34325852,
530  bgrx8888 = 0x34325842,
532  abgr8888 = 0x34324241,
534  rgba8888 = 0x34324152,
536  bgra8888 = 0x34324142,
538  xrgb2101010 = 0x30335258,
540  xbgr2101010 = 0x30334258,
542  rgbx1010102 = 0x30335852,
544  bgrx1010102 = 0x30335842,
546  argb2101010 = 0x30335241,
548  abgr2101010 = 0x30334241,
550  rgba1010102 = 0x30334152,
552  bgra1010102 = 0x30334142,
554  yuyv = 0x56595559,
556  yvyu = 0x55595659,
558  uyvy = 0x59565955,
560  vyuy = 0x59555956,
562  ayuv = 0x56555941,
564  nv12 = 0x3231564e,
566  nv21 = 0x3132564e,
568  nv16 = 0x3631564e,
570  nv61 = 0x3136564e,
572  yuv410 = 0x39565559,
574  yvu410 = 0x39555659,
576  yuv411 = 0x31315559,
578  yvu411 = 0x31315659,
580  yuv420 = 0x32315559,
582  yvu420 = 0x32315659,
584  yuv422 = 0x36315559,
586  yvu422 = 0x36315659,
588  yuv444 = 0x34325559,
590  yvu444 = 0x34325659,
592  r8 = 0x20203852,
594  r16 = 0x20363152,
596  rg88 = 0x38384752,
598  gr88 = 0x38385247,
600  rg1616 = 0x32334752,
602  gr1616 = 0x32335247,
604  xrgb16161616f = 0x48345258,
606  xbgr16161616f = 0x48344258,
608  argb16161616f = 0x48345241,
610  abgr16161616f = 0x48344241,
612  xyuv8888 = 0x56555958,
614  vuy888 = 0x34325556,
616  vuy101010 = 0x30335556,
618  y210 = 0x30313259,
620  y212 = 0x32313259,
622  y216 = 0x36313259,
624  y410 = 0x30313459,
626  y412 = 0x32313459,
628  y416 = 0x36313459,
630  xvyu2101010 = 0x30335658,
632  xvyu12_16161616 = 0x36335658,
634  xvyu16161616 = 0x38345658,
636  y0l0 = 0x304c3059,
638  x0l0 = 0x304c3058,
640  y0l2 = 0x324c3059,
642  x0l2 = 0x324c3058,
643  yuv420_8bit = 0x38305559,
644  yuv420_10bit = 0x30315559,
645  xrgb8888_a8 = 0x38415258,
646  xbgr8888_a8 = 0x38414258,
647  rgbx8888_a8 = 0x38415852,
648  bgrx8888_a8 = 0x38415842,
649  rgb888_a8 = 0x38413852,
650  bgr888_a8 = 0x38413842,
651  rgb565_a8 = 0x38413552,
652  bgr565_a8 = 0x38413542,
654  nv24 = 0x3432564e,
656  nv42 = 0x3234564e,
658  p210 = 0x30313250,
660  p010 = 0x30313050,
662  p012 = 0x32313050,
664  p016 = 0x36313050,
666  axbxgxrx106106106106 = 0x30314241,
668  nv15 = 0x3531564e,
669  q410 = 0x30313451,
670  q401 = 0x31303451
671 };
672 
673 
683 class buffer_t : public proxy_t
684 {
685 private:
686  struct events_t : public detail::events_base_t
687  {
688  std::function<void()> release;
689  };
690 
691  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
692 
693  buffer_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
694 
695 public:
696  buffer_t();
697  explicit buffer_t(const proxy_t &proxy);
698  buffer_t(wl_buffer *p, wrapper_type t = wrapper_type::standard);
699 
700  buffer_t proxy_create_wrapper();
701 
702  static const std::string interface_name;
703 
704  operator wl_buffer*() const;
705 
722  std::function<void()> &on_release();
723 
724 };
725 
726 
737 class data_offer_t : public proxy_t
738 {
739 private:
740  struct events_t : public detail::events_base_t
741  {
742  std::function<void(std::string)> offer;
743  std::function<void(data_device_manager_dnd_action)> source_actions;
744  std::function<void(data_device_manager_dnd_action)> action;
745  };
746 
747  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
748 
749  data_offer_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
750 
751 public:
752  data_offer_t();
753  explicit data_offer_t(const proxy_t &proxy);
754  data_offer_t(wl_data_offer *p, wrapper_type t = wrapper_type::standard);
755 
756  data_offer_t proxy_create_wrapper();
757 
758  static const std::string interface_name;
759 
760  operator wl_data_offer*() const;
761 
782  void accept(uint32_t serial, std::string const& mime_type);
783 
786  static constexpr std::uint32_t accept_since_version = 1;
787 
809  void receive(std::string const& mime_type, int fd);
810 
813  static constexpr std::uint32_t receive_since_version = 1;
814 
833  void finish();
834 
837  static constexpr std::uint32_t finish_since_version = 3;
838 
842  bool can_finish() const;
843 
881  void set_actions(data_device_manager_dnd_action const& dnd_actions, data_device_manager_dnd_action const& preferred_action);
882 
885  static constexpr std::uint32_t set_actions_since_version = 3;
886 
890  bool can_set_actions() const;
891 
899  std::function<void(std::string)> &on_offer();
900 
909  std::function<void(data_device_manager_dnd_action)> &on_source_actions();
910 
951  std::function<void(data_device_manager_dnd_action)> &on_action();
952 
953 };
954 
958 enum class data_offer_error : uint32_t
959  {
961  invalid_finish = 0,
963  invalid_action_mask = 1,
965  invalid_action = 2,
967  invalid_offer = 3
968 };
969 
970 
979 class data_source_t : public proxy_t
980 {
981 private:
982  struct events_t : public detail::events_base_t
983  {
984  std::function<void(std::string)> target;
985  std::function<void(std::string, int)> send;
986  std::function<void()> cancelled;
987  std::function<void()> dnd_drop_performed;
988  std::function<void()> dnd_finished;
989  std::function<void(data_device_manager_dnd_action)> action;
990  };
991 
992  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
993 
994  data_source_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
995 
996 public:
997  data_source_t();
998  explicit data_source_t(const proxy_t &proxy);
999  data_source_t(wl_data_source *p, wrapper_type t = wrapper_type::standard);
1000 
1001  data_source_t proxy_create_wrapper();
1002 
1003  static const std::string interface_name;
1004 
1005  operator wl_data_source*() const;
1006 
1015  void offer(std::string const& mime_type);
1016 
1019  static constexpr std::uint32_t offer_since_version = 1;
1020 
1039  void set_actions(data_device_manager_dnd_action const& dnd_actions);
1040 
1043  static constexpr std::uint32_t set_actions_since_version = 3;
1044 
1048  bool can_set_actions() const;
1049 
1059  std::function<void(std::string)> &on_target();
1060 
1070  std::function<void(std::string, int)> &on_send();
1071 
1096  std::function<void()> &on_cancelled();
1097 
1111  std::function<void()> &on_dnd_drop_performed();
1112 
1123  std::function<void()> &on_dnd_finished();
1124 
1155  std::function<void(data_device_manager_dnd_action)> &on_action();
1156 
1157 };
1158 
1162 enum class data_source_error : uint32_t
1163  {
1165  invalid_action_mask = 0,
1167  invalid_source = 1
1168 };
1169 
1170 
1180 class data_device_t : public proxy_t
1181 {
1182 private:
1183  struct events_t : public detail::events_base_t
1184  {
1185  std::function<void(data_offer_t)> data_offer;
1186  std::function<void(uint32_t, surface_t, double, double, data_offer_t)> enter;
1187  std::function<void()> leave;
1188  std::function<void(uint32_t, double, double)> motion;
1189  std::function<void()> drop;
1190  std::function<void(data_offer_t)> selection;
1191  };
1192 
1193  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
1194 
1195  data_device_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
1196 
1197 public:
1198  data_device_t();
1199  explicit data_device_t(const proxy_t &proxy);
1200  data_device_t(wl_data_device *p, wrapper_type t = wrapper_type::standard);
1201 
1202  data_device_t proxy_create_wrapper();
1203 
1204  static const std::string interface_name;
1205 
1206  operator wl_data_device*() const;
1207 
1244  void start_drag(data_source_t const& source, surface_t const& origin, surface_t const& icon, uint32_t serial);
1245 
1248  static constexpr std::uint32_t start_drag_since_version = 1;
1249 
1260  void set_selection(data_source_t const& source, uint32_t serial);
1261 
1264  static constexpr std::uint32_t set_selection_since_version = 1;
1265 
1271  void release();
1272 
1275  static constexpr std::uint32_t release_since_version = 2;
1276 
1280  bool can_release() const;
1281 
1294  std::function<void(data_offer_t)> &on_data_offer();
1295 
1309  std::function<void(uint32_t, surface_t, double, double, data_offer_t)> &on_enter();
1310 
1318  std::function<void()> &on_leave();
1319 
1331  std::function<void(uint32_t, double, double)> &on_motion();
1332 
1350  std::function<void()> &on_drop();
1351 
1368  std::function<void(data_offer_t)> &on_selection();
1369 
1370 };
1371 
1375 enum class data_device_error : uint32_t
1376  {
1378  role = 0
1379 };
1380 
1381 
1397 {
1398 private:
1399  struct events_t : public detail::events_base_t
1400  {
1401  };
1402 
1403  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
1404 
1405  data_device_manager_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
1406 
1407 public:
1409  explicit data_device_manager_t(const proxy_t &proxy);
1410  data_device_manager_t(wl_data_device_manager *p, wrapper_type t = wrapper_type::standard);
1411 
1412  data_device_manager_t proxy_create_wrapper();
1413 
1414  static const std::string interface_name;
1415 
1416  operator wl_data_device_manager*() const;
1417 
1425 
1428  static constexpr std::uint32_t create_data_source_since_version = 1;
1429 
1437  data_device_t get_data_device(seat_t const& seat);
1438 
1441  static constexpr std::uint32_t get_data_device_since_version = 1;
1442 
1443 };
1444 
1472 struct data_device_manager_dnd_action : public detail::bitfield<3, 6>
1473 {
1474  data_device_manager_dnd_action(const detail::bitfield<3, 6> &b)
1475  : detail::bitfield<3, 6>(b) {}
1476  data_device_manager_dnd_action(const uint32_t value)
1477  : detail::bitfield<3, 6>(value) {}
1479  static const detail::bitfield<3, 6> none;
1481  static const detail::bitfield<3, 6> copy;
1483  static const detail::bitfield<3, 6> move;
1485  static const detail::bitfield<3, 6> ask;
1486 };
1487 
1488 
1501 class shell_t : public proxy_t
1502 {
1503 private:
1504  struct events_t : public detail::events_base_t
1505  {
1506  };
1507 
1508  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
1509 
1510  shell_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
1511 
1512 public:
1513  shell_t();
1514  explicit shell_t(const proxy_t &proxy);
1515  shell_t(wl_shell *p, wrapper_type t = wrapper_type::standard);
1516 
1517  shell_t proxy_create_wrapper();
1518 
1519  static const std::string interface_name;
1520 
1521  operator wl_shell*() const;
1522 
1535 
1538  static constexpr std::uint32_t get_shell_surface_since_version = 1;
1539 
1540 };
1541 
1545 enum class shell_error : uint32_t
1546  {
1548  role = 0
1549 };
1550 
1551 
1567 class shell_surface_t : public proxy_t
1568 {
1569 private:
1570  struct events_t : public detail::events_base_t
1571  {
1572  std::function<void(uint32_t)> ping;
1573  std::function<void(shell_surface_resize, int32_t, int32_t)> configure;
1574  std::function<void()> popup_done;
1575  };
1576 
1577  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
1578 
1579  shell_surface_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
1580 
1581 public:
1582  shell_surface_t();
1583  explicit shell_surface_t(const proxy_t &proxy);
1584  shell_surface_t(wl_shell_surface *p, wrapper_type t = wrapper_type::standard);
1585 
1586  shell_surface_t proxy_create_wrapper();
1587 
1588  static const std::string interface_name;
1589 
1590  operator wl_shell_surface*() const;
1591 
1599  void pong(uint32_t serial);
1600 
1603  static constexpr std::uint32_t pong_since_version = 1;
1604 
1616  void move(seat_t const& seat, uint32_t serial);
1617 
1620  static constexpr std::uint32_t move_since_version = 1;
1621 
1634  void resize(seat_t const& seat, uint32_t serial, shell_surface_resize const& edges);
1635 
1638  static constexpr std::uint32_t resize_since_version = 1;
1639 
1647  void set_toplevel();
1648 
1651  static constexpr std::uint32_t set_toplevel_since_version = 1;
1652 
1668  void set_transient(surface_t const& parent, int32_t x, int32_t y, shell_surface_transient const& flags);
1669 
1672  static constexpr std::uint32_t set_transient_since_version = 1;
1673 
1714  void set_fullscreen(shell_surface_fullscreen_method const& method, uint32_t framerate, output_t const& output);
1715 
1718  static constexpr std::uint32_t set_fullscreen_since_version = 1;
1719 
1749  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);
1750 
1753  static constexpr std::uint32_t set_popup_since_version = 1;
1754 
1778  void set_maximized(output_t const& output);
1779 
1782  static constexpr std::uint32_t set_maximized_since_version = 1;
1783 
1796  void set_title(std::string const& title);
1797 
1800  static constexpr std::uint32_t set_title_since_version = 1;
1801 
1813  void set_class(std::string const& class_);
1814 
1817  static constexpr std::uint32_t set_class_since_version = 1;
1818 
1826  std::function<void(uint32_t)> &on_ping();
1827 
1852  std::function<void(shell_surface_resize, int32_t, int32_t)> &on_configure();
1853 
1861  std::function<void()> &on_popup_done();
1862 
1863 };
1864 
1873 struct shell_surface_resize : public detail::bitfield<4, 8>
1874 {
1875  shell_surface_resize(const detail::bitfield<4, 8> &b)
1876  : detail::bitfield<4, 8>(b) {}
1877  shell_surface_resize(const uint32_t value)
1878  : detail::bitfield<4, 8>(value) {}
1880  static const detail::bitfield<4, 8> none;
1882  static const detail::bitfield<4, 8> top;
1884  static const detail::bitfield<4, 8> bottom;
1886  static const detail::bitfield<4, 8> left;
1888  static const detail::bitfield<4, 8> top_left;
1890  static const detail::bitfield<4, 8> bottom_left;
1892  static const detail::bitfield<4, 8> right;
1894  static const detail::bitfield<4, 8> top_right;
1896  static const detail::bitfield<4, 8> bottom_right;
1897 };
1898 
1905 struct shell_surface_transient : public detail::bitfield<1, 9>
1906 {
1907  shell_surface_transient(const detail::bitfield<1, 9> &b)
1908  : detail::bitfield<1, 9>(b) {}
1909  shell_surface_transient(const uint32_t value)
1910  : detail::bitfield<1, 9>(value) {}
1912  static const detail::bitfield<1, 9> inactive;
1913 };
1914 
1922 enum class shell_surface_fullscreen_method : uint32_t
1923  {
1925  _default = 0,
1927  scale = 1,
1929  driver = 2,
1931  fill = 3
1932 };
1933 
1934 
1980 class surface_t : public proxy_t
1981 {
1982 private:
1983  struct events_t : public detail::events_base_t
1984  {
1985  std::function<void(output_t)> enter;
1986  std::function<void(output_t)> leave;
1987  };
1988 
1989  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
1990 
1991  surface_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
1992 
1993 public:
1994  surface_t();
1995  explicit surface_t(const proxy_t &proxy);
1996  surface_t(wl_surface *p, wrapper_type t = wrapper_type::standard);
1997 
1998  surface_t proxy_create_wrapper();
1999 
2000  static const std::string interface_name;
2001 
2002  operator wl_surface*() const;
2003 
2057  void attach(buffer_t const& buffer, int32_t x, int32_t y);
2058 
2061  static constexpr std::uint32_t attach_since_version = 1;
2062 
2092  void damage(int32_t x, int32_t y, int32_t width, int32_t height);
2093 
2096  static constexpr std::uint32_t damage_since_version = 1;
2097 
2135  callback_t frame();
2136 
2139  static constexpr std::uint32_t frame_since_version = 1;
2140 
2170  void set_opaque_region(region_t const& region);
2171 
2174  static constexpr std::uint32_t set_opaque_region_since_version = 1;
2175 
2203  void set_input_region(region_t const& region);
2204 
2207  static constexpr std::uint32_t set_input_region_since_version = 1;
2208 
2230  void commit();
2231 
2234  static constexpr std::uint32_t commit_since_version = 1;
2235 
2270  void set_buffer_transform(output_transform const& transform);
2271 
2274  static constexpr std::uint32_t set_buffer_transform_since_version = 2;
2275 
2279  bool can_set_buffer_transform() const;
2280 
2309  void set_buffer_scale(int32_t scale);
2310 
2313  static constexpr std::uint32_t set_buffer_scale_since_version = 3;
2314 
2318  bool can_set_buffer_scale() const;
2319 
2360  void damage_buffer(int32_t x, int32_t y, int32_t width, int32_t height);
2361 
2364  static constexpr std::uint32_t damage_buffer_since_version = 4;
2365 
2369  bool can_damage_buffer() const;
2370 
2381  std::function<void(output_t)> &on_enter();
2382 
2397  std::function<void(output_t)> &on_leave();
2398 
2399 };
2400 
2406 enum class surface_error : uint32_t
2407  {
2409  invalid_scale = 0,
2411  invalid_transform = 1,
2413  invalid_size = 2
2414 };
2415 
2416 
2425 class seat_t : public proxy_t
2426 {
2427 private:
2428  struct events_t : public detail::events_base_t
2429  {
2430  std::function<void(seat_capability)> capabilities;
2431  std::function<void(std::string)> name;
2432  };
2433 
2434  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
2435 
2436  seat_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
2437 
2438 public:
2439  seat_t();
2440  explicit seat_t(const proxy_t &proxy);
2441  seat_t(wl_seat *p, wrapper_type t = wrapper_type::standard);
2442 
2443  seat_t proxy_create_wrapper();
2444 
2445  static const std::string interface_name;
2446 
2447  operator wl_seat*() const;
2448 
2463 
2466  static constexpr std::uint32_t get_pointer_since_version = 1;
2467 
2482 
2485  static constexpr std::uint32_t get_keyboard_since_version = 1;
2486 
2500  touch_t get_touch();
2501 
2504  static constexpr std::uint32_t get_touch_since_version = 1;
2505 
2512  void release();
2513 
2516  static constexpr std::uint32_t release_since_version = 5;
2517 
2521  bool can_release() const;
2522 
2552  std::function<void(seat_capability)> &on_capabilities();
2553 
2562  std::function<void(std::string)> &on_name();
2563 
2564 };
2565 
2572 struct seat_capability : public detail::bitfield<3, 12>
2573 {
2574  seat_capability(const detail::bitfield<3, 12> &b)
2575  : detail::bitfield<3, 12>(b) {}
2576  seat_capability(const uint32_t value)
2577  : detail::bitfield<3, 12>(value) {}
2579  static const detail::bitfield<3, 12> pointer;
2581  static const detail::bitfield<3, 12> keyboard;
2583  static const detail::bitfield<3, 12> touch;
2584 };
2585 
2591 enum class seat_error : uint32_t
2592  {
2594  missing_capability = 0
2595 };
2596 
2597 
2610 class pointer_t : public proxy_t
2611 {
2612 private:
2613  struct events_t : public detail::events_base_t
2614  {
2615  std::function<void(uint32_t, surface_t, double, double)> enter;
2616  std::function<void(uint32_t, surface_t)> leave;
2617  std::function<void(uint32_t, double, double)> motion;
2618  std::function<void(uint32_t, uint32_t, uint32_t, pointer_button_state)> button;
2619  std::function<void(uint32_t, pointer_axis, double)> axis;
2620  std::function<void()> frame;
2621  std::function<void(pointer_axis_source)> axis_source;
2622  std::function<void(uint32_t, pointer_axis)> axis_stop;
2623  std::function<void(pointer_axis, int32_t)> axis_discrete;
2624  };
2625 
2626  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
2627 
2628  pointer_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
2629 
2630 public:
2631  pointer_t();
2632  explicit pointer_t(const proxy_t &proxy);
2633  pointer_t(wl_pointer *p, wrapper_type t = wrapper_type::standard);
2634 
2635  pointer_t proxy_create_wrapper();
2636 
2637  static const std::string interface_name;
2638 
2639  operator wl_pointer*() const;
2640 
2684  void set_cursor(uint32_t serial, surface_t const& surface, int32_t hotspot_x, int32_t hotspot_y);
2685 
2688  static constexpr std::uint32_t set_cursor_since_version = 1;
2689 
2699  void release();
2700 
2703  static constexpr std::uint32_t release_since_version = 3;
2704 
2708  bool can_release() const;
2709 
2724  std::function<void(uint32_t, surface_t, double, double)> &on_enter();
2725 
2737  std::function<void(uint32_t, surface_t)> &on_leave();
2738 
2749  std::function<void(uint32_t, double, double)> &on_motion();
2750 
2773  std::function<void(uint32_t, uint32_t, uint32_t, pointer_button_state)> &on_button();
2774 
2798  std::function<void(uint32_t, pointer_axis, double)> &on_axis();
2799 
2838  std::function<void()> &on_frame();
2839 
2870  std::function<void(pointer_axis_source)> &on_axis_source();
2871 
2892  std::function<void(uint32_t, pointer_axis)> &on_axis_stop();
2893 
2926  std::function<void(pointer_axis, int32_t)> &on_axis_discrete();
2927 
2928 };
2929 
2933 enum class pointer_error : uint32_t
2934  {
2936  role = 0
2937 };
2938 
2945 enum class pointer_button_state : uint32_t
2946  {
2948  released = 0,
2950  pressed = 1
2951 };
2952 
2958 enum class pointer_axis : uint32_t
2959  {
2961  vertical_scroll = 0,
2963  horizontal_scroll = 1
2964 };
2965 
2986 enum class pointer_axis_source : uint32_t
2987  {
2989  wheel = 0,
2991  finger = 1,
2993  continuous = 2,
2995  wheel_tilt = 3
2996 };
2997 
2998 
3005 class keyboard_t : public proxy_t
3006 {
3007 private:
3008  struct events_t : public detail::events_base_t
3009  {
3010  std::function<void(keyboard_keymap_format, int, uint32_t)> keymap;
3011  std::function<void(uint32_t, surface_t, array_t)> enter;
3012  std::function<void(uint32_t, surface_t)> leave;
3013  std::function<void(uint32_t, uint32_t, uint32_t, keyboard_key_state)> key;
3014  std::function<void(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t)> modifiers;
3015  std::function<void(int32_t, int32_t)> repeat_info;
3016  };
3017 
3018  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
3019 
3020  keyboard_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
3021 
3022 public:
3023  keyboard_t();
3024  explicit keyboard_t(const proxy_t &proxy);
3025  keyboard_t(wl_keyboard *p, wrapper_type t = wrapper_type::standard);
3026 
3027  keyboard_t proxy_create_wrapper();
3028 
3029  static const std::string interface_name;
3030 
3031  operator wl_keyboard*() const;
3032 
3036  void release();
3037 
3040  static constexpr std::uint32_t release_since_version = 3;
3041 
3045  bool can_release() const;
3046 
3059  std::function<void(keyboard_keymap_format, int, uint32_t)> &on_keymap();
3060 
3073  std::function<void(uint32_t, surface_t, array_t)> &on_enter();
3074 
3089  std::function<void(uint32_t, surface_t)> &on_leave();
3090 
3108  std::function<void(uint32_t, uint32_t, uint32_t, keyboard_key_state)> &on_key();
3109 
3121  std::function<void(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t)> &on_modifiers();
3122 
3141  std::function<void(int32_t, int32_t)> &on_repeat_info();
3142 
3143 };
3144 
3151 enum class keyboard_keymap_format : uint32_t
3152  {
3154  no_keymap = 0,
3156  xkb_v1 = 1
3157 };
3158 
3164 enum class keyboard_key_state : uint32_t
3165  {
3167  released = 0,
3169  pressed = 1
3170 };
3171 
3172 
3185 class touch_t : public proxy_t
3186 {
3187 private:
3188  struct events_t : public detail::events_base_t
3189  {
3190  std::function<void(uint32_t, uint32_t, surface_t, int32_t, double, double)> down;
3191  std::function<void(uint32_t, uint32_t, int32_t)> up;
3192  std::function<void(uint32_t, int32_t, double, double)> motion;
3193  std::function<void()> frame;
3194  std::function<void()> cancel;
3195  std::function<void(int32_t, double, double)> shape;
3196  std::function<void(int32_t, double)> orientation;
3197  };
3198 
3199  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
3200 
3201  touch_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
3202 
3203 public:
3204  touch_t();
3205  explicit touch_t(const proxy_t &proxy);
3206  touch_t(wl_touch *p, wrapper_type t = wrapper_type::standard);
3207 
3208  touch_t proxy_create_wrapper();
3209 
3210  static const std::string interface_name;
3211 
3212  operator wl_touch*() const;
3213 
3217  void release();
3218 
3221  static constexpr std::uint32_t release_since_version = 3;
3222 
3226  bool can_release() const;
3227 
3242  std::function<void(uint32_t, uint32_t, surface_t, int32_t, double, double)> &on_down();
3243 
3254  std::function<void(uint32_t, uint32_t, int32_t)> &on_up();
3255 
3265  std::function<void(uint32_t, int32_t, double, double)> &on_motion();
3266 
3279  std::function<void()> &on_frame();
3280 
3291  std::function<void()> &on_cancel();
3292 
3325  std::function<void(int32_t, double, double)> &on_shape();
3326 
3356  std::function<void(int32_t, double)> &on_orientation();
3357 
3358 };
3359 
3360 
3371 class output_t : public proxy_t
3372 {
3373 private:
3374  struct events_t : public detail::events_base_t
3375  {
3376  std::function<void(int32_t, int32_t, int32_t, int32_t, output_subpixel, std::string, std::string, output_transform)> geometry;
3377  std::function<void(output_mode, int32_t, int32_t, int32_t)> mode;
3378  std::function<void()> done;
3379  std::function<void(int32_t)> scale;
3380  };
3381 
3382  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
3383 
3384  output_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
3385 
3386 public:
3387  output_t();
3388  explicit output_t(const proxy_t &proxy);
3389  output_t(wl_output *p, wrapper_type t = wrapper_type::standard);
3390 
3391  output_t proxy_create_wrapper();
3392 
3393  static const std::string interface_name;
3394 
3395  operator wl_output*() const;
3396 
3403  void release();
3404 
3407  static constexpr std::uint32_t release_since_version = 3;
3408 
3412  bool can_release() const;
3413 
3439  std::function<void(int32_t, int32_t, int32_t, int32_t, output_subpixel, std::string, std::string, output_transform)> &on_geometry();
3440 
3479  std::function<void(output_mode, int32_t, int32_t, int32_t)> &on_mode();
3480 
3490  std::function<void()> &on_done();
3491 
3515  std::function<void(int32_t)> &on_scale();
3516 
3517 };
3518 
3525 enum class output_subpixel : uint32_t
3526  {
3528  unknown = 0,
3530  none = 1,
3532  horizontal_rgb = 2,
3534  horizontal_bgr = 3,
3536  vertical_rgb = 4,
3538  vertical_bgr = 5
3539 };
3540 
3556 struct output_transform : public detail::bitfield<3, 21>
3557 {
3558  output_transform(const detail::bitfield<3, 21> &b)
3559  : detail::bitfield<3, 21>(b) {}
3560  output_transform(const uint32_t value)
3561  : detail::bitfield<3, 21>(value) {}
3563  static const detail::bitfield<3, 21> normal;
3565  static const detail::bitfield<3, 21> _90;
3567  static const detail::bitfield<3, 21> _180;
3569  static const detail::bitfield<3, 21> _270;
3571  static const detail::bitfield<3, 21> flipped;
3573  static const detail::bitfield<3, 21> flipped_90;
3575  static const detail::bitfield<3, 21> flipped_180;
3577  static const detail::bitfield<3, 21> flipped_270;
3578 };
3579 
3586 struct output_mode : public detail::bitfield<2, 22>
3587 {
3588  output_mode(const detail::bitfield<2, 22> &b)
3589  : detail::bitfield<2, 22>(b) {}
3590  output_mode(const uint32_t value)
3591  : detail::bitfield<2, 22>(value) {}
3593  static const detail::bitfield<2, 22> current;
3595  static const detail::bitfield<2, 22> preferred;
3596 };
3597 
3598 
3607 class region_t : public proxy_t
3608 {
3609 private:
3610  struct events_t : public detail::events_base_t
3611  {
3612  };
3613 
3614  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
3615 
3616  region_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
3617 
3618 public:
3619  region_t();
3620  explicit region_t(const proxy_t &proxy);
3621  region_t(wl_region *p, wrapper_type t = wrapper_type::standard);
3622 
3623  region_t proxy_create_wrapper();
3624 
3625  static const std::string interface_name;
3626 
3627  operator wl_region*() const;
3628 
3638  void add(int32_t x, int32_t y, int32_t width, int32_t height);
3639 
3642  static constexpr std::uint32_t add_since_version = 1;
3643 
3653  void subtract(int32_t x, int32_t y, int32_t width, int32_t height);
3654 
3657  static constexpr std::uint32_t subtract_since_version = 1;
3658 
3659 };
3660 
3661 
3685 class subcompositor_t : public proxy_t
3686 {
3687 private:
3688  struct events_t : public detail::events_base_t
3689  {
3690  };
3691 
3692  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
3693 
3694  subcompositor_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
3695 
3696 public:
3697  subcompositor_t();
3698  explicit subcompositor_t(const proxy_t &proxy);
3699  subcompositor_t(wl_subcompositor *p, wrapper_type t = wrapper_type::standard);
3700 
3701  subcompositor_t proxy_create_wrapper();
3702 
3703  static const std::string interface_name;
3704 
3705  operator wl_subcompositor*() const;
3706 
3729  subsurface_t get_subsurface(surface_t const& surface, surface_t const& parent);
3730 
3733  static constexpr std::uint32_t get_subsurface_since_version = 1;
3734 
3735 };
3736 
3740 enum class subcompositor_error : uint32_t
3741  {
3743  bad_surface = 0
3744 };
3745 
3746 
3800 class subsurface_t : public proxy_t
3801 {
3802 private:
3803  struct events_t : public detail::events_base_t
3804  {
3805  };
3806 
3807  static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
3808 
3809  subsurface_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
3810 
3811 public:
3812  subsurface_t();
3813  explicit subsurface_t(const proxy_t &proxy);
3814  subsurface_t(wl_subsurface *p, wrapper_type t = wrapper_type::standard);
3815 
3816  subsurface_t proxy_create_wrapper();
3817 
3818  static const std::string interface_name;
3819 
3820  operator wl_subsurface*() const;
3821 
3844  void set_position(int32_t x, int32_t y);
3845 
3848  static constexpr std::uint32_t set_position_since_version = 1;
3849 
3870  void place_above(surface_t const& sibling);
3871 
3874  static constexpr std::uint32_t place_above_since_version = 1;
3875 
3883  void place_below(surface_t const& sibling);
3884 
3887  static constexpr std::uint32_t place_below_since_version = 1;
3888 
3906  void set_sync();
3907 
3910  static constexpr std::uint32_t set_sync_since_version = 1;
3911 
3935  void set_desync();
3936 
3939  static constexpr std::uint32_t set_desync_since_version = 1;
3940 
3941 };
3942 
3946 enum class subsurface_error : uint32_t
3947  {
3949  bad_surface = 0
3950 };
3951 
3952 
3953 
3954 }
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
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()> & 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(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.
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 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 detail::bitfield< 3, 6 > ask
ask action
static const detail::bitfield< 3, 6 > none
no action
static const detail::bitfield< 3, 6 > move
move action
static const detail::bitfield< 3, 6 > copy
copy action
static const detail::bitfield< 2, 22 > current
indicates this is the current mode
static const detail::bitfield< 2, 22 > preferred
indicates this is the preferred mode
transform from framebuffer to output
static const detail::bitfield< 3, 21 > normal
no transform
static const detail::bitfield< 3, 21 > _270
270 degrees counter-clockwise
static const detail::bitfield< 3, 21 > flipped_180
flip and rotate 180 degrees counter-clockwise
static const detail::bitfield< 3, 21 > _180
180 degrees counter-clockwise
static const detail::bitfield< 3, 21 > flipped_90
flip and rotate 90 degrees counter-clockwise
static const detail::bitfield< 3, 21 > flipped_270
flip and rotate 270 degrees counter-clockwise
static const detail::bitfield< 3, 21 > flipped
180 degree flip around a vertical axis
static const detail::bitfield< 3, 21 > _90
90 degrees counter-clockwise
static const detail::bitfield< 3, 12 > touch
the seat has touch devices
static const detail::bitfield< 3, 12 > keyboard
the seat has one or more keyboards
static const detail::bitfield< 3, 12 > pointer
the seat has pointer devices
static const detail::bitfield< 4, 8 > bottom
bottom edge
static const detail::bitfield< 4, 8 > right
right edge
static const detail::bitfield< 4, 8 > bottom_right
bottom and right edges
static const detail::bitfield< 4, 8 > top
top edge
static const detail::bitfield< 4, 8 > none
no edge
static const detail::bitfield< 4, 8 > top_left
top and left edges
static const detail::bitfield< 4, 8 > top_right
top and right edges
static const detail::bitfield< 4, 8 > bottom_left
bottom and left edges
static const detail::bitfield< 4, 8 > left
left edge
static const detail::bitfield< 1, 9 > inactive
do not set keyboard focus