Wayland++ 1.0.0
C++ Bindings for Wayland
Loading...
Searching...
No Matches
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
12struct wl_registry;
13struct wl_callback;
14struct wl_compositor;
15struct wl_shm_pool;
16struct wl_shm;
17struct wl_buffer;
18struct wl_data_offer;
19struct wl_data_source;
20struct wl_data_device;
21struct wl_data_device_manager;
22struct wl_shell;
23struct wl_shell_surface;
24struct wl_surface;
25struct wl_seat;
26struct wl_pointer;
27struct wl_keyboard;
28struct wl_touch;
29struct wl_output;
30struct wl_region;
31struct wl_subcompositor;
32struct wl_subsurface;
33
34namespace wayland
35{
36class registry_t;
37class callback_t;
38class compositor_t;
39class shm_pool_t;
40class shm_t;
41enum class shm_error : uint32_t;
42enum class shm_format : uint32_t;
43class buffer_t;
44class data_offer_t;
45enum class data_offer_error : uint32_t;
46class data_source_t;
47enum class data_source_error : uint32_t;
48class data_device_t;
49enum class data_device_error : uint32_t;
50class data_device_manager_t;
51struct data_device_manager_dnd_action;
52class shell_t;
53enum class shell_error : uint32_t;
54class shell_surface_t;
55struct shell_surface_resize;
56struct shell_surface_transient;
57enum class shell_surface_fullscreen_method : uint32_t;
58class surface_t;
59enum class surface_error : uint32_t;
60class seat_t;
61struct seat_capability;
62enum class seat_error : uint32_t;
63class pointer_t;
64enum class pointer_error : uint32_t;
65enum class pointer_button_state : uint32_t;
66enum class pointer_axis : uint32_t;
67enum class pointer_axis_source : uint32_t;
68class keyboard_t;
69enum class keyboard_keymap_format : uint32_t;
70enum class keyboard_key_state : uint32_t;
71class touch_t;
72class output_t;
73enum class output_subpixel : uint32_t;
74struct output_transform;
75struct output_mode;
76class region_t;
77class subcompositor_t;
78enum class subcompositor_error : uint32_t;
79class subsurface_t;
80enum class subsurface_error : uint32_t;
81
82namespace 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
132class registry_t : public proxy_t
133{
134private:
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
145public:
146 registry_t();
147 explicit registry_t(const proxy_t &proxy);
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
212class callback_t : public proxy_t
213{
214private:
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
224public:
225 callback_t();
226 explicit callback_t(const proxy_t &proxy);
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
253class compositor_t : public proxy_t
254{
255private:
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
264public:
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
313class shm_pool_t : public proxy_t
314{
315private:
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
324public:
325 shm_pool_t();
326 explicit shm_pool_t(const proxy_t &proxy);
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
399class shm_t : public proxy_t
400{
401private:
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
411public:
412 shm_t();
413 explicit shm_t(const proxy_t &proxy);
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
457enum class shm_error : uint32_t
458 {
460 invalid_format = 0,
462 invalid_stride = 1,
464 invalid_fd = 2
465};
466
483enum 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
706class buffer_t : public proxy_t
707{
708private:
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
718public:
719 buffer_t();
720 explicit buffer_t(const proxy_t &proxy);
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
760class data_offer_t : public proxy_t
761{
762private:
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
774public:
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
933
974 std::function<void(data_device_manager_dnd_action)> &on_action();
975
976};
977
981enum 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
1003{
1004private:
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
1019public:
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
1185enum class data_source_error : uint32_t
1186 {
1188 invalid_action_mask = 0,
1190 invalid_source = 1
1191};
1192
1193
1204{
1205private:
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
1220public:
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
1399enum class data_device_error : uint32_t
1400 {
1402 role = 0
1403};
1404
1405
1421{
1422private:
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
1431public:
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
1462
1465 static constexpr std::uint32_t get_data_device_since_version = 1;
1466
1467};
1468
1496struct 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
1526class shell_t : public proxy_t
1527{
1528private:
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
1537public:
1538 shell_t();
1539 explicit shell_t(const proxy_t &proxy);
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
1570enum class shell_error : uint32_t
1571 {
1573 role = 0
1574};
1575
1576
1593{
1594private:
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
1606public:
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
1898struct 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
1930struct 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
1947enum class shell_surface_fullscreen_method : uint32_t
1948 {
1950 _default = 0,
1952 scale = 1,
1954 driver = 2,
1956 fill = 3
1957};
1958
1959
2005class surface_t : public proxy_t
2006{
2007private:
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
2018public:
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
2470enum 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
2491class seat_t : public proxy_t
2492{
2493private:
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
2504public:
2505 seat_t();
2506 explicit seat_t(const proxy_t &proxy);
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
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
2651struct 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
2670enum class seat_error : uint32_t
2671 {
2673 missing_capability = 0
2674};
2675
2676
2689class pointer_t : public proxy_t
2690{
2691private:
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
2710public:
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
3045enum class pointer_error : uint32_t
3046 {
3048 role = 0
3049};
3050
3057enum class pointer_button_state : uint32_t
3058 {
3060 released = 0,
3062 pressed = 1
3063};
3064
3070enum class pointer_axis : uint32_t
3071 {
3073 vertical_scroll = 0,
3075 horizontal_scroll = 1
3076};
3077
3098enum class pointer_axis_source : uint32_t
3099 {
3101 wheel = 0,
3103 finger = 1,
3105 continuous = 2,
3107 wheel_tilt = 3
3108};
3109
3110
3117class keyboard_t : public proxy_t
3118{
3119private:
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
3134public:
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
3264enum class keyboard_keymap_format : uint32_t
3265 {
3267 no_keymap = 0,
3269 xkb_v1 = 1
3270};
3271
3277enum class keyboard_key_state : uint32_t
3278 {
3280 released = 0,
3282 pressed = 1
3283};
3284
3285
3298class touch_t : public proxy_t
3299{
3300private:
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
3316public:
3317 touch_t();
3318 explicit touch_t(const proxy_t &proxy);
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
3484class output_t : public proxy_t
3485{
3486private:
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
3501public:
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
3704enum 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
3735struct 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
3765struct 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
3786class region_t : public proxy_t
3787{
3788private:
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
3797public:
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
3865{
3866private:
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
3875public:
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
3919enum class subcompositor_error : uint32_t
3920 {
3922 bad_surface = 0
3923};
3924
3925
3979class subsurface_t : public proxy_t
3980{
3981private:
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
3990public:
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
4125enum 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
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