26#include <wayland-client.h>
29#if defined(__GNUC__) && (__GNUC__ >= 4)
30#if defined(__cplusplus) && (__cplusplus >= 201703L)
31#define UWAC_API [[gnu::visibility("default")]]
32#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 202311L)
33#define UWAC_API [[gnu::visibility("default")]]
35#define UWAC_API __attribute__((visibility("default")))
47typedef uint32_t UwacSeatId;
54 UWAC_ERROR_UNABLE_TO_CONNECT,
55 UWAC_ERROR_INVALID_DISPLAY,
56 UWAC_NOT_ENOUGH_RESOURCES,
68 UWAC_MOD_SHIFT_MASK = 0x01,
69 UWAC_MOD_ALT_MASK = 0x02,
70 UWAC_MOD_CONTROL_MASK = 0x04,
71 UWAC_MOD_CAPS_MASK = 0x08,
72 UWAC_MOD_NUM_MASK = 0x10,
92 UWAC_EVENT_NEW_SEAT = 0,
93 UWAC_EVENT_REMOVED_SEAT,
94 UWAC_EVENT_NEW_OUTPUT,
96 UWAC_EVENT_POINTER_ENTER,
97 UWAC_EVENT_POINTER_LEAVE,
98 UWAC_EVENT_POINTER_MOTION,
99 UWAC_EVENT_POINTER_BUTTONS,
100 UWAC_EVENT_POINTER_AXIS,
101 UWAC_EVENT_KEYBOARD_ENTER,
102 UWAC_EVENT_KEYBOARD_MODIFIERS,
104 UWAC_EVENT_TOUCH_FRAME_BEGIN,
106 UWAC_EVENT_TOUCH_DOWN,
107 UWAC_EVENT_TOUCH_MOTION,
108 UWAC_EVENT_TOUCH_CANCEL,
109 UWAC_EVENT_TOUCH_FRAME_END,
110 UWAC_EVENT_FRAME_DONE,
112 UWAC_EVENT_CLIPBOARD_AVAILABLE,
113 UWAC_EVENT_CLIPBOARD_SELECT,
114 UWAC_EVENT_CLIPBOARD_OFFER,
115 UWAC_EVENT_OUTPUT_GEOMETRY,
116 UWAC_EVENT_POINTER_AXIS_DISCRETE,
117 UWAC_EVENT_POINTER_FRAME,
118 UWAC_EVENT_POINTER_SOURCE
124 UWAC_WINDOW_MAXIMIZED = 0x1,
125 UWAC_WINDOW_RESIZING = 0x2,
126 UWAC_WINDOW_FULLSCREEN = 0x4,
127 UWAC_WINDOW_ACTIVATED = 0x8,
191 enum wl_pointer_button_state state;
219 enum wl_pointer_axis_source axis_source;
307 UwacOutputNewEvent output_new;
308 UwacOutputGeometryEvent output_geometry;
309 UwacSeatNewEvent seat_new;
310 UwacSeatRemovedEvent seat_removed;
311 UwacPointerEnterLeaveEvent mouse_enter_leave;
312 UwacPointerMotionEvent mouse_motion;
313 UwacPointerButtonEvent mouse_button;
314 UwacPointerAxisEvent mouse_axis;
315 UwacPointerFrameEvent mouse_frame;
316 UwacPointerSourceEvent mouse_source;
317 UwacKeyboardEnterLeaveEvent keyboard_enter_leave;
318 UwacKeyboardModifiersEvent keyboard_modifiers;
319 UwacClipboardEvent clipboard;
321 UwacTouchFrameBegin touchFrameBegin;
323 UwacTouchDown touchDown;
324 UwacTouchMotion touchMotion;
325 UwacTouchFrameEnd touchFrameEnd;
326 UwacTouchCancel touchCancel;
327 UwacFrameDoneEvent frame_done;
328 UwacConfigureEvent configure;
329 UwacCloseEvent close;
333typedef bool (*UwacErrorHandler)(UwacDisplay* d, UwacReturnCode code,
const char* msg, ...);
334typedef void (*UwacDataTransferHandler)(UwacSeat* seat,
void* context,
const char* mime,
int fd);
335typedef void (*UwacCancelDataTransferHandler)(UwacSeat* seat,
void* context);
349 UWAC_API
void UwacInstallErrorHandler(UwacErrorHandler handler);
358 UWAC_API UwacDisplay* UwacOpenDisplay(
const char* name, UwacReturnCode* err);
366 UWAC_API UwacReturnCode UwacCloseDisplay(UwacDisplay** pdisplay);
375 UWAC_API
int UwacDisplayGetFd(UwacDisplay* display);
383 UWAC_API
const char* UwacErrorString(UwacReturnCode error);
391 UWAC_API UwacReturnCode UwacDisplayGetLastError(
const UwacDisplay* display);
401 UWAC_API UwacReturnCode UwacDisplayQueryInterfaceVersion(
const UwacDisplay* display,
402 const char* name, uint32_t* version);
410 UWAC_API uint32_t UwacDisplayQueryGetNbShmFormats(UwacDisplay* display);
422 UWAC_API UwacReturnCode UwacDisplayQueryShmFormats(
const UwacDisplay* display,
423 enum wl_shm_format* formats,
424 int formats_size,
int* filled);
432 UWAC_API uint32_t UwacDisplayGetNbOutputs(
const UwacDisplay* display);
442 UWAC_API
const UwacOutput* UwacDisplayGetOutput(UwacDisplay* display,
int index);
451 UWAC_API UwacReturnCode UwacOutputGetResolution(
const UwacOutput* output, UwacSize* resolution);
460 UWAC_API UwacReturnCode UwacOutputGetPosition(
const UwacOutput* output, UwacPosition* pos);
472 UWAC_API UwacWindow* UwacCreateWindowShm(UwacDisplay* display, uint32_t width, uint32_t height,
473 enum wl_shm_format format);
481 UWAC_API UwacReturnCode UwacDestroyWindow(UwacWindow** window);
493 UWAC_API UwacReturnCode UwacWindowSetOpaqueRegion(UwacWindow* window, uint32_t x, uint32_t y,
494 uint32_t width, uint32_t height);
506 UWAC_API UwacReturnCode UwacWindowSetInputRegion(UwacWindow* window, uint32_t x, uint32_t y,
507 uint32_t width, uint32_t height);
514 UWAC_API
void* UwacWindowGetDrawingBuffer(UwacWindow* window);
526 UWAC_API UwacReturnCode UwacWindowAddDamage(UwacWindow* window, uint32_t x, uint32_t y,
527 uint32_t width, uint32_t height);
537 UWAC_API UwacReturnCode UwacWindowGetDrawingBufferGeometry(UwacWindow* window,
538 UwacSize* geometry,
size_t* stride);
548 UWAC_API UwacReturnCode UwacWindowSubmitBuffer(UwacWindow* window,
549 bool copyContentForNextFrame);
558 UWAC_API UwacReturnCode UwacWindowGetGeometry(UwacWindow* window, UwacSize* geometry);
570 UWAC_API UwacReturnCode UwacWindowSetFullscreenState(UwacWindow* window, UwacOutput* output,
579 UWAC_API
void UwacWindowSetTitle(UwacWindow* window,
const char* name);
587 UWAC_API
void UwacWindowSetAppId(UwacWindow* window,
const char* app_id);
595 UWAC_API
int UwacDisplayDispatch(UwacDisplay* display,
int timeout);
603 UWAC_API
bool UwacHasEvent(UwacDisplay* display);
612 UWAC_API UwacReturnCode UwacNextEvent(UwacDisplay* display, UwacEvent* event);
620 UWAC_API
const char* UwacSeatGetName(
const UwacSeat* seat);
628 UWAC_API UwacSeatId UwacSeatGetId(
const UwacSeat* seat);
633 UWAC_API UwacReturnCode UwacClipboardOfferDestroy(UwacSeat* seat);
634 UWAC_API UwacReturnCode UwacClipboardOfferCreate(UwacSeat* seat,
const char* mime);
635 UWAC_API UwacReturnCode UwacClipboardOfferAnnounce(UwacSeat* seat,
void* context,
636 UwacDataTransferHandler transfer,
637 UwacCancelDataTransferHandler cancel);
638 UWAC_API
void* UwacClipboardDataGet(UwacSeat* seat,
const char* mime,
size_t* size);
648 UWAC_API UwacReturnCode UwacSeatInhibitShortcuts(UwacSeat* seat,
bool inhibit);
666 UWAC_API UwacReturnCode UwacSeatSetMouseCursor(UwacSeat* seat,
const void* data,
size_t length,
667 size_t width,
size_t height,
size_t hot_x,
main connection object to a wayland display
an output on a wayland display
a seat attached to a wayland display