/* Generated by wayland-scanner 1.23.0 */ #ifndef WAYLAND_SERVER_PROTOCOL_H #define WAYLAND_SERVER_PROTOCOL_H #include <stdint.h> #include <stddef.h> #include "wayland-server-core.h" #ifdef __cplusplus extern "C" { #endif struct wl_client; struct wl_resource; /** * @page page_wayland The wayland protocol * @section page_ifaces_wayland Interfaces * - @subpage page_iface_wl_display - core global object * - @subpage page_iface_wl_registry - global registry object * - @subpage page_iface_wl_callback - callback object * - @subpage page_iface_wl_compositor - the compositor singleton * - @subpage page_iface_wl_shm_pool - a shared memory pool * - @subpage page_iface_wl_shm - shared memory support * - @subpage page_iface_wl_buffer - content for a wl_surface * - @subpage page_iface_wl_data_offer - offer to transfer data * - @subpage page_iface_wl_data_source - offer to transfer data * - @subpage page_iface_wl_data_device - data transfer device * - @subpage page_iface_wl_data_device_manager - data transfer interface * - @subpage page_iface_wl_shell - create desktop-style surfaces * - @subpage page_iface_wl_shell_surface - desktop-style metadata interface * - @subpage page_iface_wl_surface - an onscreen surface * - @subpage page_iface_wl_seat - group of input devices * - @subpage page_iface_wl_pointer - pointer input device * - @subpage page_iface_wl_keyboard - keyboard input device * - @subpage page_iface_wl_touch - touchscreen input device * - @subpage page_iface_wl_output - compositor output region * - @subpage page_iface_wl_region - region interface * - @subpage page_iface_wl_subcompositor - sub-surface compositing * - @subpage page_iface_wl_subsurface - sub-surface interface to a wl_surface * @section page_copyright_wayland Copyright * <pre> * * Copyright © 2008-2011 Kristian Høgsberg * Copyright © 2010-2011 Intel Corporation * Copyright © 2012-2013 Collabora, Ltd. * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation files * (the "Software"), to deal in the Software without restriction, * including without limitation the rights to use, copy, modify, merge, * publish, distribute, sublicense, and/or sell copies of the Software, * and to permit persons to whom the Software is furnished to do so, * subject to the following conditions: * * The above copyright notice and this permission notice (including the * next paragraph) shall be included in all copies or substantial * portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * </pre> */ struct wl_buffer; struct wl_callback; struct wl_compositor; struct wl_data_device; struct wl_data_device_manager; struct wl_data_offer; struct wl_data_source; struct wl_display; struct wl_keyboard; struct wl_output; struct wl_pointer; struct wl_region; struct wl_registry; struct wl_seat; struct wl_shell; struct wl_shell_surface; struct wl_shm; struct wl_shm_pool; struct wl_subcompositor; struct wl_subsurface; struct wl_surface; struct wl_touch; #ifndef WL_DISPLAY_INTERFACE #define WL_DISPLAY_INTERFACE /** * @page page_iface_wl_display wl_display * @section page_iface_wl_display_desc Description * * The core global object. This is a special singleton object. It * is used for internal Wayland protocol features. * @section page_iface_wl_display_api API * See @ref iface_wl_display. */ /** * @defgroup iface_wl_display The wl_display interface * * The core global object. This is a special singleton object. It * is used for internal Wayland protocol features. */ extern const struct wl_interface wl_display_interface; #endif #ifndef WL_REGISTRY_INTERFACE #define WL_REGISTRY_INTERFACE /** * @page page_iface_wl_registry wl_registry * @section page_iface_wl_registry_desc Description * * The singleton global registry object. The server has a number of * global objects that are available to all clients. These objects * typically represent an actual object in the server (for example, * an input device) or they are singleton objects that provide * extension functionality. * * When a client creates a registry object, the registry object * will emit a global event for each global currently in the * registry. Globals come and go as a result of device or * monitor hotplugs, reconfiguration or other events, and the * registry will send out global and global_remove events to * keep the client up to date with the changes. To mark the end * of the initial burst of events, the client can use the * wl_display.sync request immediately after calling * wl_display.get_registry. * * A client can bind to a global object by using the bind * request. This creates a client-side handle that lets the object * emit events to the client and lets the client invoke requests on * the object. * @section page_iface_wl_registry_api API * See @ref iface_wl_registry. */ /** * @defgroup iface_wl_registry The wl_registry interface * * The singleton global registry object. The server has a number of * global objects that are available to all clients. These objects * typically represent an actual object in the server (for example, * an input device) or they are singleton objects that provide * extension functionality. * * When a client creates a registry object, the registry object * will emit a global event for each global currently in the * registry. Globals come and go as a result of device or * monitor hotplugs, reconfiguration or other events, and the * registry will send out global and global_remove events to * keep the client up to date with the changes. To mark the end * of the initial burst of events, the client can use the * wl_display.sync request immediately after calling * wl_display.get_registry. * * A client can bind to a global object by using the bind * request. This creates a client-side handle that lets the object * emit events to the client and lets the client invoke requests on * the object. */ extern const struct wl_interface wl_registry_interface; #endif #ifndef WL_CALLBACK_INTERFACE #define WL_CALLBACK_INTERFACE /** * @page page_iface_wl_callback wl_callback * @section page_iface_wl_callback_desc Description * * Clients can handle the 'done' event to get notified when * the related request is done. * * Note, because wl_callback objects are created from multiple independent * factory interfaces, the wl_callback interface is frozen at version 1. * @section page_iface_wl_callback_api API * See @ref iface_wl_callback. */ /** * @defgroup iface_wl_callback The wl_callback interface * * Clients can handle the 'done' event to get notified when * the related request is done. * * Note, because wl_callback objects are created from multiple independent * factory interfaces, the wl_callback interface is frozen at version 1. */ extern const struct wl_interface wl_callback_interface; #endif #ifndef WL_COMPOSITOR_INTERFACE #define WL_COMPOSITOR_INTERFACE /** * @page page_iface_wl_compositor wl_compositor * @section page_iface_wl_compositor_desc Description * * A compositor. This object is a singleton global. The * compositor is in charge of combining the contents of multiple * surfaces into one displayable output. * @section page_iface_wl_compositor_api API * See @ref iface_wl_compositor. */ /** * @defgroup iface_wl_compositor The wl_compositor interface * * A compositor. This object is a singleton global. The * compositor is in charge of combining the contents of multiple * surfaces into one displayable output. */ extern const struct wl_interface wl_compositor_interface; #endif #ifndef WL_SHM_POOL_INTERFACE #define WL_SHM_POOL_INTERFACE /** * @page page_iface_wl_shm_pool wl_shm_pool * @section page_iface_wl_shm_pool_desc Description * * The wl_shm_pool object encapsulates a piece of memory shared * between the compositor and client. Through the wl_shm_pool * object, the client can allocate shared memory wl_buffer objects. * All objects created through the same pool share the same * underlying mapped memory. Reusing the mapped memory avoids the * setup/teardown overhead and is useful when interactively resizing * a surface or for many small buffers. * @section page_iface_wl_shm_pool_api API * See @ref iface_wl_shm_pool. */ /** * @defgroup iface_wl_shm_pool The wl_shm_pool interface * * The wl_shm_pool object encapsulates a piece of memory shared * between the compositor and client. Through the wl_shm_pool * object, the client can allocate shared memory wl_buffer objects. * All objects created through the same pool share the same * underlying mapped memory. Reusing the mapped memory avoids the * setup/teardown overhead and is useful when interactively resizing * a surface or for many small buffers. */ extern const struct wl_interface wl_shm_pool_interface; #endif #ifndef WL_SHM_INTERFACE #define WL_SHM_INTERFACE /** * @page page_iface_wl_shm wl_shm * @section page_iface_wl_shm_desc Description * * A singleton global object that provides support for shared * memory. * * Clients can create wl_shm_pool objects using the create_pool * request. * * On binding the wl_shm object one or more format events * are emitted to inform clients about the valid pixel formats * that can be used for buffers. * @section page_iface_wl_shm_api API * See @ref iface_wl_shm. */ /** * @defgroup iface_wl_shm The wl_shm interface * * A singleton global object that provides support for shared * memory. * * Clients can create wl_shm_pool objects using the create_pool * request. * * On binding the wl_shm object one or more format events * are emitted to inform clients about the valid pixel formats * that can be used for buffers. */ extern const struct wl_interface wl_shm_interface; #endif #ifndef WL_BUFFER_INTERFACE #define WL_BUFFER_INTERFACE /** * @page page_iface_wl_buffer wl_buffer * @section page_iface_wl_buffer_desc Description * * A buffer provides the content for a wl_surface. Buffers are * created through factory interfaces such as wl_shm, wp_linux_buffer_params * (from the linux-dmabuf protocol extension) or similar. It has a width and * a height and can be attached to a wl_surface, but the mechanism by which a * client provides and updates the contents is defined by the buffer factory * interface. * * Color channels are assumed to be electrical rather than optical (in other * words, encoded with a transfer function) unless otherwise specified. If * the buffer uses a format that has an alpha channel, the alpha channel is * assumed to be premultiplied into the electrical color channel values * (after transfer function encoding) unless otherwise specified. * * Note, because wl_buffer objects are created from multiple independent * factory interfaces, the wl_buffer interface is frozen at version 1. * @section page_iface_wl_buffer_api API * See @ref iface_wl_buffer. */ /** * @defgroup iface_wl_buffer The wl_buffer interface * * A buffer provides the content for a wl_surface. Buffers are * created through factory interfaces such as wl_shm, wp_linux_buffer_params * (from the linux-dmabuf protocol extension) or similar. It has a width and * a height and can be attached to a wl_surface, but the mechanism by which a * client provides and updates the contents is defined by the buffer factory * interface. * * Color channels are assumed to be electrical rather than optical (in other * words, encoded with a transfer function) unless otherwise specified. If * the buffer uses a format that has an alpha channel, the alpha channel is * assumed to be premultiplied into the electrical color channel values * (after transfer function encoding) unless otherwise specified. * * Note, because wl_buffer objects are created from multiple independent * factory interfaces, the wl_buffer interface is frozen at version 1. */ extern const struct wl_interface wl_buffer_interface; #endif #ifndef WL_DATA_OFFER_INTERFACE #define WL_DATA_OFFER_INTERFACE /** * @page page_iface_wl_data_offer wl_data_offer * @section page_iface_wl_data_offer_desc Description * * A wl_data_offer represents a piece of data offered for transfer * by another client (the source client). It is used by the * copy-and-paste and drag-and-drop mechanisms. The offer * describes the different mime types that the data can be * converted to and provides the mechanism for transferring the * data directly from the source client. * @section page_iface_wl_data_offer_api API * See @ref iface_wl_data_offer. */ /** * @defgroup iface_wl_data_offer The wl_data_offer interface * * A wl_data_offer represents a piece of data offered for transfer * by another client (the source client). It is used by the * copy-and-paste and drag-and-drop mechanisms. The offer * describes the different mime types that the data can be * converted to and provides the mechanism for transferring the * data directly from the source client. */ extern const struct wl_interface wl_data_offer_interface; #endif #ifndef WL_DATA_SOURCE_INTERFACE #define WL_DATA_SOURCE_INTERFACE /** * @page page_iface_wl_data_source wl_data_source * @section page_iface_wl_data_source_desc Description * * The wl_data_source object is the source side of a wl_data_offer. * It is created by the source client in a data transfer and * provides a way to describe the offered data and a way to respond * to requests to transfer the data. * @section page_iface_wl_data_source_api API * See @ref iface_wl_data_source. */ /** * @defgroup iface_wl_data_source The wl_data_source interface * * The wl_data_source object is the source side of a wl_data_offer. * It is created by the source client in a data transfer and * provides a way to describe the offered data and a way to respond * to requests to transfer the data. */ extern const struct wl_interface wl_data_source_interface; #endif #ifndef WL_DATA_DEVICE_INTERFACE #define WL_DATA_DEVICE_INTERFACE /** * @page page_iface_wl_data_device wl_data_device * @section page_iface_wl_data_device_desc Description * * There is one wl_data_device per seat which can be obtained * from the global wl_data_device_manager singleton. * * A wl_data_device provides access to inter-client data transfer * mechanisms such as copy-and-paste and drag-and-drop. * @section page_iface_wl_data_device_api API * See @ref iface_wl_data_device. */ /** * @defgroup iface_wl_data_device The wl_data_device interface * * There is one wl_data_device per seat which can be obtained * from the global wl_data_device_manager singleton. * * A wl_data_device provides access to inter-client data transfer * mechanisms such as copy-and-paste and drag-and-drop. */ extern const struct wl_interface wl_data_device_interface; #endif #ifndef WL_DATA_DEVICE_MANAGER_INTERFACE #define WL_DATA_DEVICE_MANAGER_INTERFACE /** * @page page_iface_wl_data_device_manager wl_data_device_manager * @section page_iface_wl_data_device_manager_desc Description * * The wl_data_device_manager is a singleton global object that * provides access to inter-client data transfer mechanisms such as * copy-and-paste and drag-and-drop. These mechanisms are tied to * a wl_seat and this interface lets a client get a wl_data_device * corresponding to a wl_seat. * * Depending on the version bound, the objects created from the bound * wl_data_device_manager object will have different requirements for * functioning properly. See wl_data_source.set_actions, * wl_data_offer.accept and wl_data_offer.finish for details. * @section page_iface_wl_data_device_manager_api API * See @ref iface_wl_data_device_manager. */ /** * @defgroup iface_wl_data_device_manager The wl_data_device_manager interface * * The wl_data_device_manager is a singleton global object that * provides access to inter-client data transfer mechanisms such as * copy-and-paste and drag-and-drop. These mechanisms are tied to * a wl_seat and this interface lets a client get a wl_data_device * corresponding to a wl_seat. * * Depending on the version bound, the objects created from the bound * wl_data_device_manager object will have different requirements for * functioning properly. See wl_data_source.set_actions, * wl_data_offer.accept and wl_data_offer.finish for details. */ extern const struct wl_interface wl_data_device_manager_interface; #endif #ifndef WL_SHELL_INTERFACE #define WL_SHELL_INTERFACE /** * @page page_iface_wl_shell wl_shell * @section page_iface_wl_shell_desc Description * * This interface is implemented by servers that provide * desktop-style user interfaces. * * It allows clients to associate a wl_shell_surface with * a basic surface. * * Note! This protocol is deprecated and not intended for production use. * For desktop-style user interfaces, use xdg_shell. Compositors and clients * should not implement this interface. * @section page_iface_wl_shell_api API * See @ref iface_wl_shell. */ /** * @defgroup iface_wl_shell The wl_shell interface * * This interface is implemented by servers that provide * desktop-style user interfaces. * * It allows clients to associate a wl_shell_surface with * a basic surface. * * Note! This protocol is deprecated and not intended for production use. * For desktop-style user interfaces, use xdg_shell. Compositors and clients * should not implement this interface. */ extern const struct wl_interface wl_shell_interface; #endif #ifndef WL_SHELL_SURFACE_INTERFACE #define WL_SHELL_SURFACE_INTERFACE /** * @page page_iface_wl_shell_surface wl_shell_surface * @section page_iface_wl_shell_surface_desc Description * * An interface that may be implemented by a wl_surface, for * implementations that provide a desktop-style user interface. * * It provides requests to treat surfaces like toplevel, fullscreen * or popup windows, move, resize or maximize them, associate * metadata like title and class, etc. * * On the server side the object is automatically destroyed when * the related wl_surface is destroyed. On the client side, * wl_shell_surface_destroy() must be called before destroying * the wl_surface object. * @section page_iface_wl_shell_surface_api API * See @ref iface_wl_shell_surface. */ /** * @defgroup iface_wl_shell_surface The wl_shell_surface interface * * An interface that may be implemented by a wl_surface, for * implementations that provide a desktop-style user interface. * * It provides requests to treat surfaces like toplevel, fullscreen * or popup windows, move, resize or maximize them, associate * metadata like title and class, etc. * * On the server side the object is automatically destroyed when * the related wl_surface is destroyed. On the client side, * wl_shell_surface_destroy() must be called before destroying * the wl_surface object. */ extern const struct wl_interface wl_shell_surface_interface; #endif #ifndef WL_SURFACE_INTERFACE #define WL_SURFACE_INTERFACE /** * @page page_iface_wl_surface wl_surface * @section page_iface_wl_surface_desc Description * * A surface is a rectangular area that may be displayed on zero * or more outputs, and shown any number of times at the compositor's * discretion. They can present wl_buffers, receive user input, and * define a local coordinate system. * * The size of a surface (and relative positions on it) is described * in surface-local coordinates, which may differ from the buffer * coordinates of the pixel content, in case a buffer_transform * or a buffer_scale is used. * * A surface without a "role" is fairly useless: a compositor does * not know where, when or how to present it. The role is the * purpose of a wl_surface. Examples of roles are a cursor for a * pointer (as set by wl_pointer.set_cursor), a drag icon * (wl_data_device.start_drag), a sub-surface * (wl_subcompositor.get_subsurface), and a window as defined by a * shell protocol (e.g. wl_shell.get_shell_surface). * * A surface can have only one role at a time. Initially a * wl_surface does not have a role. Once a wl_surface is given a * role, it is set permanently for the whole lifetime of the * wl_surface object. Giving the current role again is allowed, * unless explicitly forbidden by the relevant interface * specification. * * Surface roles are given by requests in other interfaces such as * wl_pointer.set_cursor. The request should explicitly mention * that this request gives a role to a wl_surface. Often, this * request also creates a new protocol object that represents the * role and adds additional functionality to wl_surface. When a * client wants to destroy a wl_surface, they must destroy this role * object before the wl_surface, otherwise a defunct_role_object error is * sent. * * Destroying the role object does not remove the role from the * wl_surface, but it may stop the wl_surface from "playing the role". * For instance, if a wl_subsurface object is destroyed, the wl_surface * it was created for will be unmapped and forget its position and * z-order. It is allowed to create a wl_subsurface for the same * wl_surface again, but it is not allowed to use the wl_surface as * a cursor (cursor is a different role than sub-surface, and role * switching is not allowed). * @section page_iface_wl_surface_api API * See @ref iface_wl_surface. */ /** * @defgroup iface_wl_surface The wl_surface interface * * A surface is a rectangular area that may be displayed on zero * or more outputs, and shown any number of times at the compositor's * discretion. They can present wl_buffers, receive user input, and * define a local coordinate system. * * The size of a surface (and relative positions on it) is described * in surface-local coordinates, which may differ from the buffer * coordinates of the pixel content, in case a buffer_transform * or a buffer_scale is used. * * A surface without a "role" is fairly useless: a compositor does * not know where, when or how to present it. The role is the * purpose of a wl_surface. Examples of roles are a cursor for a * pointer (as set by wl_pointer.set_cursor), a drag icon * (wl_data_device.start_drag), a sub-surface * (wl_subcompositor.get_subsurface), and a window as defined by a * shell protocol (e.g. wl_shell.get_shell_surface). * * A surface can have only one role at a time. Initially a * wl_surface does not have a role. Once a wl_surface is given a * role, it is set permanently for the whole lifetime of the * wl_surface object. Giving the current role again is allowed, * unless explicitly forbidden by the relevant interface * specification. * * Surface roles are given by requests in other interfaces such as * wl_pointer.set_cursor. The request should explicitly mention * that this request gives a role to a wl_surface. Often, this * request also creates a new protocol object that represents the * role and adds additional functionality to wl_surface. When a * client wants to destroy a wl_surface, they must destroy this role * object before the wl_surface, otherwise a defunct_role_object error is * sent. * * Destroying the role object does not remove the role from the * wl_surface, but it may stop the wl_surface from "playing the role". * For instance, if a wl_subsurface object is destroyed, the wl_surface * it was created for will be unmapped and forget its position and * z-order. It is allowed to create a wl_subsurface for the same * wl_surface again, but it is not allowed to use the wl_surface as * a cursor (cursor is a different role than sub-surface, and role * switching is not allowed). */ extern const struct wl_interface wl_surface_interface; #endif #ifndef WL_SEAT_INTERFACE #define WL_SEAT_INTERFACE /** * @page page_iface_wl_seat wl_seat * @section page_iface_wl_seat_desc Description * * A seat is a group of keyboards, pointer and touch devices. This * object is published as a global during start up, or when such a * device is hot plugged. A seat typically has a pointer and * maintains a keyboard focus and a pointer focus. * @section page_iface_wl_seat_api API * See @ref iface_wl_seat. */ /** * @defgroup iface_wl_seat The wl_seat interface * * A seat is a group of keyboards, pointer and touch devices. This * object is published as a global during start up, or when such a * device is hot plugged. A seat typically has a pointer and * maintains a keyboard focus and a pointer focus. */ extern const struct wl_interface wl_seat_interface; #endif #ifndef WL_POINTER_INTERFACE #define WL_POINTER_INTERFACE /** * @page page_iface_wl_pointer wl_pointer * @section page_iface_wl_pointer_desc Description * * The wl_pointer interface represents one or more input devices, * such as mice, which control the pointer location and pointer_focus * of a seat. * * The wl_pointer interface generates motion, enter and leave * events for the surfaces that the pointer is located over, * and button and axis events for button presses, button releases * and scrolling. * @section page_iface_wl_pointer_api API * See @ref iface_wl_pointer. */ /** * @defgroup iface_wl_pointer The wl_pointer interface * * The wl_pointer interface represents one or more input devices, * such as mice, which control the pointer location and pointer_focus * of a seat. * * The wl_pointer interface generates motion, enter and leave * events for the surfaces that the pointer is located over, * and button and axis events for button presses, button releases * and scrolling. */ extern const struct wl_interface wl_pointer_interface; #endif #ifndef WL_KEYBOARD_INTERFACE #define WL_KEYBOARD_INTERFACE /** * @page page_iface_wl_keyboard wl_keyboard * @section page_iface_wl_keyboard_desc Description * * The wl_keyboard interface represents one or more keyboards * associated with a seat. * * Each wl_keyboard has the following logical state: * * - an active surface (possibly null), * - the keys currently logically down, * - the active modifiers, * - the active group. * * By default, the active surface is null, the keys currently logically down * are empty, the active modifiers and the active group are 0. * @section page_iface_wl_keyboard_api API * See @ref iface_wl_keyboard. */ /** * @defgroup iface_wl_keyboard The wl_keyboard interface * * The wl_keyboard interface represents one or more keyboards * associated with a seat. * * Each wl_keyboard has the following logical state: * * - an active surface (possibly null), * - the keys currently logically down, * - the active modifiers, * - the active group. * * By default, the active surface is null, the keys currently logically down * are empty, the active modifiers and the active group are 0. */ extern const struct wl_interface wl_keyboard_interface; #endif #ifndef WL_TOUCH_INTERFACE #define WL_TOUCH_INTERFACE /** * @page page_iface_wl_touch wl_touch * @section page_iface_wl_touch_desc Description * * The wl_touch interface represents a touchscreen * associated with a seat. * * Touch interactions can consist of one or more contacts. * For each contact, a series of events is generated, starting * with a down event, followed by zero or more motion events, * and ending with an up event. Events relating to the same * contact point can be identified by the ID of the sequence. * @section page_iface_wl_touch_api API * See @ref iface_wl_touch. */ /** * @defgroup iface_wl_touch The wl_touch interface * * The wl_touch interface represents a touchscreen * associated with a seat. * * Touch interactions can consist of one or more contacts. * For each contact, a series of events is generated, starting * with a down event, followed by zero or more motion events, * and ending with an up event. Events relating to the same * contact point can be identified by the ID of the sequence. */ extern const struct wl_interface wl_touch_interface; #endif #ifndef WL_OUTPUT_INTERFACE #define WL_OUTPUT_INTERFACE /** * @page page_iface_wl_output wl_output * @section page_iface_wl_output_desc Description * * An output describes part of the compositor geometry. The * compositor works in the 'compositor coordinate system' and an * output corresponds to a rectangular area in that space that is * actually visible. This typically corresponds to a monitor that * displays part of the compositor space. This object is published * as global during start up, or when a monitor is hotplugged. * @section page_iface_wl_output_api API * See @ref iface_wl_output. */ /** * @defgroup iface_wl_output The wl_output interface * * An output describes part of the compositor geometry. The * compositor works in the 'compositor coordinate system' and an * output corresponds to a rectangular area in that space that is * actually visible. This typically corresponds to a monitor that * displays part of the compositor space. This object is published * as global during start up, or when a monitor is hotplugged. */ extern const struct wl_interface wl_output_interface; #endif #ifndef WL_REGION_INTERFACE #define WL_REGION_INTERFACE /** * @page page_iface_wl_region wl_region * @section page_iface_wl_region_desc Description * * A region object describes an area. * * Region objects are used to describe the opaque and input * regions of a surface. * @section page_iface_wl_region_api API * See @ref iface_wl_region. */ /** * @defgroup iface_wl_region The wl_region interface * * A region object describes an area. * * Region objects are used to describe the opaque and input * regions of a surface. */ extern const struct wl_interface wl_region_interface; #endif #ifndef WL_SUBCOMPOSITOR_INTERFACE #define WL_SUBCOMPOSITOR_INTERFACE /** * @page page_iface_wl_subcompositor wl_subcompositor * @section page_iface_wl_subcompositor_desc Description * * The global interface exposing sub-surface compositing capabilities. * A wl_surface, that has sub-surfaces associated, is called the * parent surface. Sub-surfaces can be arbitrarily nested and create * a tree of sub-surfaces. * * The root surface in a tree of sub-surfaces is the main * surface. The main surface cannot be a sub-surface, because * sub-surfaces must always have a parent. * * A main surface with its sub-surfaces forms a (compound) window. * For window management purposes, this set of wl_surface objects is * to be considered as a single window, and it should also behave as * such. * * The aim of sub-surfaces is to offload some of the compositing work * within a window from clients to the compositor. A prime example is * a video player with decorations and video in separate wl_surface * objects. This should allow the compositor to pass YUV video buffer * processing to dedicated overlay hardware when possible. * @section page_iface_wl_subcompositor_api API * See @ref iface_wl_subcompositor. */ /** * @defgroup iface_wl_subcompositor The wl_subcompositor interface * * The global interface exposing sub-surface compositing capabilities. * A wl_surface, that has sub-surfaces associated, is called the * parent surface. Sub-surfaces can be arbitrarily nested and create * a tree of sub-surfaces. * * The root surface in a tree of sub-surfaces is the main * surface. The main surface cannot be a sub-surface, because * sub-surfaces must always have a parent. * * A main surface with its sub-surfaces forms a (compound) window. * For window management purposes, this set of wl_surface objects is * to be considered as a single window, and it should also behave as * such. * * The aim of sub-surfaces is to offload some of the compositing work * within a window from clients to the compositor. A prime example is * a video player with decorations and video in separate wl_surface * objects. This should allow the compositor to pass YUV video buffer * processing to dedicated overlay hardware when possible. */ extern const struct wl_interface wl_subcompositor_interface; #endif #ifndef WL_SUBSURFACE_INTERFACE #define WL_SUBSURFACE_INTERFACE /** * @page page_iface_wl_subsurface wl_subsurface * @section page_iface_wl_subsurface_desc Description * * An additional interface to a wl_surface object, which has been * made a sub-surface. A sub-surface has one parent surface. A * sub-surface's size and position are not limited to that of the parent. * Particularly, a sub-surface is not automatically clipped to its * parent's area. * * A sub-surface becomes mapped, when a non-NULL wl_buffer is applied * and the parent surface is mapped. The order of which one happens * first is irrelevant. A sub-surface is hidden if the parent becomes * hidden, or if a NULL wl_buffer is applied. These rules apply * recursively through the tree of surfaces. * * The behaviour of a wl_surface.commit request on a sub-surface * depends on the sub-surface's mode. The possible modes are * synchronized and desynchronized, see methods * wl_subsurface.set_sync and wl_subsurface.set_desync. Synchronized * mode caches the wl_surface state to be applied when the parent's * state gets applied, and desynchronized mode applies the pending * wl_surface state directly. A sub-surface is initially in the * synchronized mode. * * Sub-surfaces also have another kind of state, which is managed by * wl_subsurface requests, as opposed to wl_surface requests. This * state includes the sub-surface position relative to the parent * surface (wl_subsurface.set_position), and the stacking order of * the parent and its sub-surfaces (wl_subsurface.place_above and * .place_below). This state is applied when the parent surface's * wl_surface state is applied, regardless of the sub-surface's mode. * As the exception, set_sync and set_desync are effective immediately. * * The main surface can be thought to be always in desynchronized mode, * since it does not have a parent in the sub-surfaces sense. * * Even if a sub-surface is in desynchronized mode, it will behave as * in synchronized mode, if its parent surface behaves as in * synchronized mode. This rule is applied recursively throughout the * tree of surfaces. This means, that one can set a sub-surface into * synchronized mode, and then assume that all its child and grand-child * sub-surfaces are synchronized, too, without explicitly setting them. * * Destroying a sub-surface takes effect immediately. If you need to * synchronize the removal of a sub-surface to the parent surface update, * unmap the sub-surface first by attaching a NULL wl_buffer, update parent, * and then destroy the sub-surface. * * If the parent wl_surface object is destroyed, the sub-surface is * unmapped. * * A sub-surface never has the keyboard focus of any seat. * * The wl_surface.offset request is ignored: clients must use set_position * instead to move the sub-surface. * @section page_iface_wl_subsurface_api API * See @ref iface_wl_subsurface. */ /** * @defgroup iface_wl_subsurface The wl_subsurface interface * * An additional interface to a wl_surface object, which has been * made a sub-surface. A sub-surface has one parent surface. A * sub-surface's size and position are not limited to that of the parent. * Particularly, a sub-surface is not automatically clipped to its * parent's area. * * A sub-surface becomes mapped, when a non-NULL wl_buffer is applied * and the parent surface is mapped. The order of which one happens * first is irrelevant. A sub-surface is hidden if the parent becomes * hidden, or if a NULL wl_buffer is applied. These rules apply * recursively through the tree of surfaces. * * The behaviour of a wl_surface.commit request on a sub-surface * depends on the sub-surface's mode. The possible modes are * synchronized and desynchronized, see methods * wl_subsurface.set_sync and wl_subsurface.set_desync. Synchronized * mode caches the wl_surface state to be applied when the parent's * state gets applied, and desynchronized mode applies the pending * wl_surface state directly. A sub-surface is initially in the * synchronized mode. * * Sub-surfaces also have another kind of state, which is managed by * wl_subsurface requests, as opposed to wl_surface requests. This * state includes the sub-surface position relative to the parent * surface (wl_subsurface.set_position), and the stacking order of * the parent and its sub-surfaces (wl_subsurface.place_above and * .place_below). This state is applied when the parent surface's * wl_surface state is applied, regardless of the sub-surface's mode. * As the exception, set_sync and set_desync are effective immediately. * * The main surface can be thought to be always in desynchronized mode, * since it does not have a parent in the sub-surfaces sense. * * Even if a sub-surface is in desynchronized mode, it will behave as * in synchronized mode, if its parent surface behaves as in * synchronized mode. This rule is applied recursively throughout the * tree of surfaces. This means, that one can set a sub-surface into * synchronized mode, and then assume that all its child and grand-child * sub-surfaces are synchronized, too, without explicitly setting them. * * Destroying a sub-surface takes effect immediately. If you need to * synchronize the removal of a sub-surface to the parent surface update, * unmap the sub-surface first by attaching a NULL wl_buffer, update parent, * and then destroy the sub-surface. * * If the parent wl_surface object is destroyed, the sub-surface is * unmapped. * * A sub-surface never has the keyboard focus of any seat. * * The wl_surface.offset request is ignored: clients must use set_position * instead to move the sub-surface. */ extern const struct wl_interface wl_subsurface_interface; #endif #ifndef WL_DISPLAY_ERROR_ENUM #define WL_DISPLAY_ERROR_ENUM /** * @ingroup iface_wl_display * global error values * * These errors are global and can be emitted in response to any * server request. */ enum wl_display_error { … }; /** * @ingroup iface_wl_display * Validate a wl_display error value. * * @return true on success, false on error. * @ref wl_display_error */ static inline bool wl_display_error_is_valid(uint32_t value, uint32_t version) { … } #endif /* WL_DISPLAY_ERROR_ENUM */ /** * @ingroup iface_wl_display * @struct wl_display_interface */ struct wl_display_interface { … }; #define WL_DISPLAY_ERROR … #define WL_DISPLAY_DELETE_ID … /** * @ingroup iface_wl_display */ #define WL_DISPLAY_ERROR_SINCE_VERSION … /** * @ingroup iface_wl_display */ #define WL_DISPLAY_DELETE_ID_SINCE_VERSION … /** * @ingroup iface_wl_display */ #define WL_DISPLAY_SYNC_SINCE_VERSION … /** * @ingroup iface_wl_display */ #define WL_DISPLAY_GET_REGISTRY_SINCE_VERSION … /** * @ingroup iface_wl_registry * @struct wl_registry_interface */ struct wl_registry_interface { … }; #define WL_REGISTRY_GLOBAL … #define WL_REGISTRY_GLOBAL_REMOVE … /** * @ingroup iface_wl_registry */ #define WL_REGISTRY_GLOBAL_SINCE_VERSION … /** * @ingroup iface_wl_registry */ #define WL_REGISTRY_GLOBAL_REMOVE_SINCE_VERSION … /** * @ingroup iface_wl_registry */ #define WL_REGISTRY_BIND_SINCE_VERSION … /** * @ingroup iface_wl_registry * Sends an global event to the client owning the resource. * @param resource_ The client's resource * @param name numeric name of the global object * @param interface interface implemented by the object * @param version interface version */ static inline void wl_registry_send_global(struct wl_resource *resource_, uint32_t name, const char *interface, uint32_t version) { … } /** * @ingroup iface_wl_registry * Sends an global_remove event to the client owning the resource. * @param resource_ The client's resource * @param name numeric name of the global object */ static inline void wl_registry_send_global_remove(struct wl_resource *resource_, uint32_t name) { … } #define WL_CALLBACK_DONE … /** * @ingroup iface_wl_callback */ #define WL_CALLBACK_DONE_SINCE_VERSION … /** * @ingroup iface_wl_callback * Sends an done event to the client owning the resource. * @param resource_ The client's resource * @param callback_data request-specific data for the callback */ static inline void wl_callback_send_done(struct wl_resource *resource_, uint32_t callback_data) { … } /** * @ingroup iface_wl_compositor * @struct wl_compositor_interface */ struct wl_compositor_interface { … }; /** * @ingroup iface_wl_compositor */ #define WL_COMPOSITOR_CREATE_SURFACE_SINCE_VERSION … /** * @ingroup iface_wl_compositor */ #define WL_COMPOSITOR_CREATE_REGION_SINCE_VERSION … /** * @ingroup iface_wl_shm_pool * @struct wl_shm_pool_interface */ struct wl_shm_pool_interface { … }; /** * @ingroup iface_wl_shm_pool */ #define WL_SHM_POOL_CREATE_BUFFER_SINCE_VERSION … /** * @ingroup iface_wl_shm_pool */ #define WL_SHM_POOL_DESTROY_SINCE_VERSION … /** * @ingroup iface_wl_shm_pool */ #define WL_SHM_POOL_RESIZE_SINCE_VERSION … #ifndef WL_SHM_ERROR_ENUM #define WL_SHM_ERROR_ENUM /** * @ingroup iface_wl_shm * wl_shm error values * * These errors can be emitted in response to wl_shm requests. */ enum wl_shm_error { … }; /** * @ingroup iface_wl_shm * Validate a wl_shm error value. * * @return true on success, false on error. * @ref wl_shm_error */ static inline bool wl_shm_error_is_valid(uint32_t value, uint32_t version) { … } #endif /* WL_SHM_ERROR_ENUM */ #ifndef WL_SHM_FORMAT_ENUM #define WL_SHM_FORMAT_ENUM /** * @ingroup iface_wl_shm * pixel formats * * This describes the memory layout of an individual pixel. * * All renderers should support argb8888 and xrgb8888 but any other * formats are optional and may not be supported by the particular * renderer in use. * * The drm format codes match the macros defined in drm_fourcc.h, except * argb8888 and xrgb8888. The formats actually supported by the compositor * will be reported by the format event. * * For all wl_shm formats and unless specified in another protocol * extension, pre-multiplied alpha is used for pixel values. */ enum wl_shm_format { … }; /** * @ingroup iface_wl_shm * Validate a wl_shm format value. * * @return true on success, false on error. * @ref wl_shm_format */ static inline bool wl_shm_format_is_valid(uint32_t value, uint32_t version) { … } #endif /* WL_SHM_FORMAT_ENUM */ /** * @ingroup iface_wl_shm * @struct wl_shm_interface */ struct wl_shm_interface { … }; #define WL_SHM_FORMAT … /** * @ingroup iface_wl_shm */ #define WL_SHM_FORMAT_SINCE_VERSION … /** * @ingroup iface_wl_shm */ #define WL_SHM_CREATE_POOL_SINCE_VERSION … /** * @ingroup iface_wl_shm */ #define WL_SHM_RELEASE_SINCE_VERSION … /** * @ingroup iface_wl_shm * Sends an format event to the client owning the resource. * @param resource_ The client's resource * @param format buffer pixel format */ static inline void wl_shm_send_format(struct wl_resource *resource_, uint32_t format) { … } /** * @ingroup iface_wl_buffer * @struct wl_buffer_interface */ struct wl_buffer_interface { … }; #define WL_BUFFER_RELEASE … /** * @ingroup iface_wl_buffer */ #define WL_BUFFER_RELEASE_SINCE_VERSION … /** * @ingroup iface_wl_buffer */ #define WL_BUFFER_DESTROY_SINCE_VERSION … /** * @ingroup iface_wl_buffer * Sends an release event to the client owning the resource. * @param resource_ The client's resource */ static inline void wl_buffer_send_release(struct wl_resource *resource_) { … } #ifndef WL_DATA_OFFER_ERROR_ENUM #define WL_DATA_OFFER_ERROR_ENUM enum wl_data_offer_error { … }; /** * @ingroup iface_wl_data_offer * Validate a wl_data_offer error value. * * @return true on success, false on error. * @ref wl_data_offer_error */ static inline bool wl_data_offer_error_is_valid(uint32_t value, uint32_t version) { … } #endif /* WL_DATA_OFFER_ERROR_ENUM */ /** * @ingroup iface_wl_data_offer * @struct wl_data_offer_interface */ struct wl_data_offer_interface { … }; #define WL_DATA_OFFER_OFFER … #define WL_DATA_OFFER_SOURCE_ACTIONS … #define WL_DATA_OFFER_ACTION … /** * @ingroup iface_wl_data_offer */ #define WL_DATA_OFFER_OFFER_SINCE_VERSION … /** * @ingroup iface_wl_data_offer */ #define WL_DATA_OFFER_SOURCE_ACTIONS_SINCE_VERSION … /** * @ingroup iface_wl_data_offer */ #define WL_DATA_OFFER_ACTION_SINCE_VERSION … /** * @ingroup iface_wl_data_offer */ #define WL_DATA_OFFER_ACCEPT_SINCE_VERSION … /** * @ingroup iface_wl_data_offer */ #define WL_DATA_OFFER_RECEIVE_SINCE_VERSION … /** * @ingroup iface_wl_data_offer */ #define WL_DATA_OFFER_DESTROY_SINCE_VERSION … /** * @ingroup iface_wl_data_offer */ #define WL_DATA_OFFER_FINISH_SINCE_VERSION … /** * @ingroup iface_wl_data_offer */ #define WL_DATA_OFFER_SET_ACTIONS_SINCE_VERSION … /** * @ingroup iface_wl_data_offer * Sends an offer event to the client owning the resource. * @param resource_ The client's resource * @param mime_type offered mime type */ static inline void wl_data_offer_send_offer(struct wl_resource *resource_, const char *mime_type) { … } /** * @ingroup iface_wl_data_offer * Sends an source_actions event to the client owning the resource. * @param resource_ The client's resource * @param source_actions actions offered by the data source */ static inline void wl_data_offer_send_source_actions(struct wl_resource *resource_, uint32_t source_actions) { … } /** * @ingroup iface_wl_data_offer * Sends an action event to the client owning the resource. * @param resource_ The client's resource * @param dnd_action action selected by the compositor */ static inline void wl_data_offer_send_action(struct wl_resource *resource_, uint32_t dnd_action) { … } #ifndef WL_DATA_SOURCE_ERROR_ENUM #define WL_DATA_SOURCE_ERROR_ENUM enum wl_data_source_error { … }; /** * @ingroup iface_wl_data_source * Validate a wl_data_source error value. * * @return true on success, false on error. * @ref wl_data_source_error */ static inline bool wl_data_source_error_is_valid(uint32_t value, uint32_t version) { … } #endif /* WL_DATA_SOURCE_ERROR_ENUM */ /** * @ingroup iface_wl_data_source * @struct wl_data_source_interface */ struct wl_data_source_interface { … }; #define WL_DATA_SOURCE_TARGET … #define WL_DATA_SOURCE_SEND … #define WL_DATA_SOURCE_CANCELLED … #define WL_DATA_SOURCE_DND_DROP_PERFORMED … #define WL_DATA_SOURCE_DND_FINISHED … #define WL_DATA_SOURCE_ACTION … /** * @ingroup iface_wl_data_source */ #define WL_DATA_SOURCE_TARGET_SINCE_VERSION … /** * @ingroup iface_wl_data_source */ #define WL_DATA_SOURCE_SEND_SINCE_VERSION … /** * @ingroup iface_wl_data_source */ #define WL_DATA_SOURCE_CANCELLED_SINCE_VERSION … /** * @ingroup iface_wl_data_source */ #define WL_DATA_SOURCE_DND_DROP_PERFORMED_SINCE_VERSION … /** * @ingroup iface_wl_data_source */ #define WL_DATA_SOURCE_DND_FINISHED_SINCE_VERSION … /** * @ingroup iface_wl_data_source */ #define WL_DATA_SOURCE_ACTION_SINCE_VERSION … /** * @ingroup iface_wl_data_source */ #define WL_DATA_SOURCE_OFFER_SINCE_VERSION … /** * @ingroup iface_wl_data_source */ #define WL_DATA_SOURCE_DESTROY_SINCE_VERSION … /** * @ingroup iface_wl_data_source */ #define WL_DATA_SOURCE_SET_ACTIONS_SINCE_VERSION … /** * @ingroup iface_wl_data_source * Sends an target event to the client owning the resource. * @param resource_ The client's resource * @param mime_type mime type accepted by the target */ static inline void wl_data_source_send_target(struct wl_resource *resource_, const char *mime_type) { … } /** * @ingroup iface_wl_data_source * Sends an send event to the client owning the resource. * @param resource_ The client's resource * @param mime_type mime type for the data * @param fd file descriptor for the data */ static inline void wl_data_source_send_send(struct wl_resource *resource_, const char *mime_type, int32_t fd) { … } /** * @ingroup iface_wl_data_source * Sends an cancelled event to the client owning the resource. * @param resource_ The client's resource */ static inline void wl_data_source_send_cancelled(struct wl_resource *resource_) { … } /** * @ingroup iface_wl_data_source * Sends an dnd_drop_performed event to the client owning the resource. * @param resource_ The client's resource */ static inline void wl_data_source_send_dnd_drop_performed(struct wl_resource *resource_) { … } /** * @ingroup iface_wl_data_source * Sends an dnd_finished event to the client owning the resource. * @param resource_ The client's resource */ static inline void wl_data_source_send_dnd_finished(struct wl_resource *resource_) { … } /** * @ingroup iface_wl_data_source * Sends an action event to the client owning the resource. * @param resource_ The client's resource * @param dnd_action action selected by the compositor */ static inline void wl_data_source_send_action(struct wl_resource *resource_, uint32_t dnd_action) { … } #ifndef WL_DATA_DEVICE_ERROR_ENUM #define WL_DATA_DEVICE_ERROR_ENUM enum wl_data_device_error { … }; /** * @ingroup iface_wl_data_device * Validate a wl_data_device error value. * * @return true on success, false on error. * @ref wl_data_device_error */ static inline bool wl_data_device_error_is_valid(uint32_t value, uint32_t version) { … } #endif /* WL_DATA_DEVICE_ERROR_ENUM */ /** * @ingroup iface_wl_data_device * @struct wl_data_device_interface */ struct wl_data_device_interface { … }; #define WL_DATA_DEVICE_DATA_OFFER … #define WL_DATA_DEVICE_ENTER … #define WL_DATA_DEVICE_LEAVE … #define WL_DATA_DEVICE_MOTION … #define WL_DATA_DEVICE_DROP … #define WL_DATA_DEVICE_SELECTION … /** * @ingroup iface_wl_data_device */ #define WL_DATA_DEVICE_DATA_OFFER_SINCE_VERSION … /** * @ingroup iface_wl_data_device */ #define WL_DATA_DEVICE_ENTER_SINCE_VERSION … /** * @ingroup iface_wl_data_device */ #define WL_DATA_DEVICE_LEAVE_SINCE_VERSION … /** * @ingroup iface_wl_data_device */ #define WL_DATA_DEVICE_MOTION_SINCE_VERSION … /** * @ingroup iface_wl_data_device */ #define WL_DATA_DEVICE_DROP_SINCE_VERSION … /** * @ingroup iface_wl_data_device */ #define WL_DATA_DEVICE_SELECTION_SINCE_VERSION … /** * @ingroup iface_wl_data_device */ #define WL_DATA_DEVICE_START_DRAG_SINCE_VERSION … /** * @ingroup iface_wl_data_device */ #define WL_DATA_DEVICE_SET_SELECTION_SINCE_VERSION … /** * @ingroup iface_wl_data_device */ #define WL_DATA_DEVICE_RELEASE_SINCE_VERSION … /** * @ingroup iface_wl_data_device * Sends an data_offer event to the client owning the resource. * @param resource_ The client's resource * @param id the new data_offer object */ static inline void wl_data_device_send_data_offer(struct wl_resource *resource_, struct wl_resource *id) { … } /** * @ingroup iface_wl_data_device * Sends an enter event to the client owning the resource. * @param resource_ The client's resource * @param serial serial number of the enter event * @param surface client surface entered * @param x surface-local x coordinate * @param y surface-local y coordinate * @param id source data_offer object */ static inline void wl_data_device_send_enter(struct wl_resource *resource_, uint32_t serial, struct wl_resource *surface, wl_fixed_t x, wl_fixed_t y, struct wl_resource *id) { … } /** * @ingroup iface_wl_data_device * Sends an leave event to the client owning the resource. * @param resource_ The client's resource */ static inline void wl_data_device_send_leave(struct wl_resource *resource_) { … } /** * @ingroup iface_wl_data_device * Sends an motion event to the client owning the resource. * @param resource_ The client's resource * @param time timestamp with millisecond granularity * @param x surface-local x coordinate * @param y surface-local y coordinate */ static inline void wl_data_device_send_motion(struct wl_resource *resource_, uint32_t time, wl_fixed_t x, wl_fixed_t y) { … } /** * @ingroup iface_wl_data_device * Sends an drop event to the client owning the resource. * @param resource_ The client's resource */ static inline void wl_data_device_send_drop(struct wl_resource *resource_) { … } /** * @ingroup iface_wl_data_device * Sends an selection event to the client owning the resource. * @param resource_ The client's resource * @param id selection data_offer object */ static inline void wl_data_device_send_selection(struct wl_resource *resource_, struct wl_resource *id) { … } #ifndef WL_DATA_DEVICE_MANAGER_DND_ACTION_ENUM #define WL_DATA_DEVICE_MANAGER_DND_ACTION_ENUM /** * @ingroup iface_wl_data_device_manager * drag and drop actions * * This is a bitmask of the available/preferred actions in a * drag-and-drop operation. * * In the compositor, the selected action is a result of matching the * actions offered by the source and destination sides. "action" events * with a "none" action will be sent to both source and destination if * there is no match. All further checks will effectively happen on * (source actions ∩ destination actions). * * In addition, compositors may also pick different actions in * reaction to key modifiers being pressed. One common design that * is used in major toolkits (and the behavior recommended for * compositors) is: * * - If no modifiers are pressed, the first match (in bit order) * will be used. * - Pressing Shift selects "move", if enabled in the mask. * - Pressing Control selects "copy", if enabled in the mask. * * Behavior beyond that is considered implementation-dependent. * Compositors may for example bind other modifiers (like Alt/Meta) * or drags initiated with other buttons than BTN_LEFT to specific * actions (e.g. "ask"). */ enum wl_data_device_manager_dnd_action { … }; /** * @ingroup iface_wl_data_device_manager * Validate a wl_data_device_manager dnd_action value. * * @return true on success, false on error. * @ref wl_data_device_manager_dnd_action */ static inline bool wl_data_device_manager_dnd_action_is_valid(uint32_t value, uint32_t version) { … } #endif /* WL_DATA_DEVICE_MANAGER_DND_ACTION_ENUM */ /** * @ingroup iface_wl_data_device_manager * @struct wl_data_device_manager_interface */ struct wl_data_device_manager_interface { … }; /** * @ingroup iface_wl_data_device_manager */ #define WL_DATA_DEVICE_MANAGER_CREATE_DATA_SOURCE_SINCE_VERSION … /** * @ingroup iface_wl_data_device_manager */ #define WL_DATA_DEVICE_MANAGER_GET_DATA_DEVICE_SINCE_VERSION … #ifndef WL_SHELL_ERROR_ENUM #define WL_SHELL_ERROR_ENUM enum wl_shell_error { … }; /** * @ingroup iface_wl_shell * Validate a wl_shell error value. * * @return true on success, false on error. * @ref wl_shell_error */ static inline bool wl_shell_error_is_valid(uint32_t value, uint32_t version) { … } #endif /* WL_SHELL_ERROR_ENUM */ /** * @ingroup iface_wl_shell * @struct wl_shell_interface */ struct wl_shell_interface { … }; /** * @ingroup iface_wl_shell */ #define WL_SHELL_GET_SHELL_SURFACE_SINCE_VERSION … #ifndef WL_SHELL_SURFACE_RESIZE_ENUM #define WL_SHELL_SURFACE_RESIZE_ENUM /** * @ingroup iface_wl_shell_surface * edge values for resizing * * These values are used to indicate which edge of a surface * is being dragged in a resize operation. The server may * use this information to adapt its behavior, e.g. choose * an appropriate cursor image. */ enum wl_shell_surface_resize { … }; /** * @ingroup iface_wl_shell_surface * Validate a wl_shell_surface resize value. * * @return true on success, false on error. * @ref wl_shell_surface_resize */ static inline bool wl_shell_surface_resize_is_valid(uint32_t value, uint32_t version) { … } #endif /* WL_SHELL_SURFACE_RESIZE_ENUM */ #ifndef WL_SHELL_SURFACE_TRANSIENT_ENUM #define WL_SHELL_SURFACE_TRANSIENT_ENUM /** * @ingroup iface_wl_shell_surface * details of transient behaviour * * These flags specify details of the expected behaviour * of transient surfaces. Used in the set_transient request. */ enum wl_shell_surface_transient { … }; /** * @ingroup iface_wl_shell_surface * Validate a wl_shell_surface transient value. * * @return true on success, false on error. * @ref wl_shell_surface_transient */ static inline bool wl_shell_surface_transient_is_valid(uint32_t value, uint32_t version) { … } #endif /* WL_SHELL_SURFACE_TRANSIENT_ENUM */ #ifndef WL_SHELL_SURFACE_FULLSCREEN_METHOD_ENUM #define WL_SHELL_SURFACE_FULLSCREEN_METHOD_ENUM /** * @ingroup iface_wl_shell_surface * different method to set the surface fullscreen * * Hints to indicate to the compositor how to deal with a conflict * between the dimensions of the surface and the dimensions of the * output. The compositor is free to ignore this parameter. */ enum wl_shell_surface_fullscreen_method { … }; /** * @ingroup iface_wl_shell_surface * Validate a wl_shell_surface fullscreen_method value. * * @return true on success, false on error. * @ref wl_shell_surface_fullscreen_method */ static inline bool wl_shell_surface_fullscreen_method_is_valid(uint32_t value, uint32_t version) { … } #endif /* WL_SHELL_SURFACE_FULLSCREEN_METHOD_ENUM */ /** * @ingroup iface_wl_shell_surface * @struct wl_shell_surface_interface */ struct wl_shell_surface_interface { … }; #define WL_SHELL_SURFACE_PING … #define WL_SHELL_SURFACE_CONFIGURE … #define WL_SHELL_SURFACE_POPUP_DONE … /** * @ingroup iface_wl_shell_surface */ #define WL_SHELL_SURFACE_PING_SINCE_VERSION … /** * @ingroup iface_wl_shell_surface */ #define WL_SHELL_SURFACE_CONFIGURE_SINCE_VERSION … /** * @ingroup iface_wl_shell_surface */ #define WL_SHELL_SURFACE_POPUP_DONE_SINCE_VERSION … /** * @ingroup iface_wl_shell_surface */ #define WL_SHELL_SURFACE_PONG_SINCE_VERSION … /** * @ingroup iface_wl_shell_surface */ #define WL_SHELL_SURFACE_MOVE_SINCE_VERSION … /** * @ingroup iface_wl_shell_surface */ #define WL_SHELL_SURFACE_RESIZE_SINCE_VERSION … /** * @ingroup iface_wl_shell_surface */ #define WL_SHELL_SURFACE_SET_TOPLEVEL_SINCE_VERSION … /** * @ingroup iface_wl_shell_surface */ #define WL_SHELL_SURFACE_SET_TRANSIENT_SINCE_VERSION … /** * @ingroup iface_wl_shell_surface */ #define WL_SHELL_SURFACE_SET_FULLSCREEN_SINCE_VERSION … /** * @ingroup iface_wl_shell_surface */ #define WL_SHELL_SURFACE_SET_POPUP_SINCE_VERSION … /** * @ingroup iface_wl_shell_surface */ #define WL_SHELL_SURFACE_SET_MAXIMIZED_SINCE_VERSION … /** * @ingroup iface_wl_shell_surface */ #define WL_SHELL_SURFACE_SET_TITLE_SINCE_VERSION … /** * @ingroup iface_wl_shell_surface */ #define WL_SHELL_SURFACE_SET_CLASS_SINCE_VERSION … /** * @ingroup iface_wl_shell_surface * Sends an ping event to the client owning the resource. * @param resource_ The client's resource * @param serial serial number of the ping */ static inline void wl_shell_surface_send_ping(struct wl_resource *resource_, uint32_t serial) { … } /** * @ingroup iface_wl_shell_surface * Sends an configure event to the client owning the resource. * @param resource_ The client's resource * @param edges how the surface was resized * @param width new width of the surface * @param height new height of the surface */ static inline void wl_shell_surface_send_configure(struct wl_resource *resource_, uint32_t edges, int32_t width, int32_t height) { … } /** * @ingroup iface_wl_shell_surface * Sends an popup_done event to the client owning the resource. * @param resource_ The client's resource */ static inline void wl_shell_surface_send_popup_done(struct wl_resource *resource_) { … } #ifndef WL_SURFACE_ERROR_ENUM #define WL_SURFACE_ERROR_ENUM /** * @ingroup iface_wl_surface * wl_surface error values * * These errors can be emitted in response to wl_surface requests. */ enum wl_surface_error { … }; /** * @ingroup iface_wl_surface * Validate a wl_surface error value. * * @return true on success, false on error. * @ref wl_surface_error */ static inline bool wl_surface_error_is_valid(uint32_t value, uint32_t version) { … } #endif /* WL_SURFACE_ERROR_ENUM */ /** * @ingroup iface_wl_surface * @struct wl_surface_interface */ struct wl_surface_interface { … }; #define WL_SURFACE_ENTER … #define WL_SURFACE_LEAVE … #define WL_SURFACE_PREFERRED_BUFFER_SCALE … #define WL_SURFACE_PREFERRED_BUFFER_TRANSFORM … /** * @ingroup iface_wl_surface */ #define WL_SURFACE_ENTER_SINCE_VERSION … /** * @ingroup iface_wl_surface */ #define WL_SURFACE_LEAVE_SINCE_VERSION … /** * @ingroup iface_wl_surface */ #define WL_SURFACE_PREFERRED_BUFFER_SCALE_SINCE_VERSION … /** * @ingroup iface_wl_surface */ #define WL_SURFACE_PREFERRED_BUFFER_TRANSFORM_SINCE_VERSION … /** * @ingroup iface_wl_surface */ #define WL_SURFACE_DESTROY_SINCE_VERSION … /** * @ingroup iface_wl_surface */ #define WL_SURFACE_ATTACH_SINCE_VERSION … /** * @ingroup iface_wl_surface */ #define WL_SURFACE_DAMAGE_SINCE_VERSION … /** * @ingroup iface_wl_surface */ #define WL_SURFACE_FRAME_SINCE_VERSION … /** * @ingroup iface_wl_surface */ #define WL_SURFACE_SET_OPAQUE_REGION_SINCE_VERSION … /** * @ingroup iface_wl_surface */ #define WL_SURFACE_SET_INPUT_REGION_SINCE_VERSION … /** * @ingroup iface_wl_surface */ #define WL_SURFACE_COMMIT_SINCE_VERSION … /** * @ingroup iface_wl_surface */ #define WL_SURFACE_SET_BUFFER_TRANSFORM_SINCE_VERSION … /** * @ingroup iface_wl_surface */ #define WL_SURFACE_SET_BUFFER_SCALE_SINCE_VERSION … /** * @ingroup iface_wl_surface */ #define WL_SURFACE_DAMAGE_BUFFER_SINCE_VERSION … /** * @ingroup iface_wl_surface */ #define WL_SURFACE_OFFSET_SINCE_VERSION … /** * @ingroup iface_wl_surface * Sends an enter event to the client owning the resource. * @param resource_ The client's resource * @param output output entered by the surface */ static inline void wl_surface_send_enter(struct wl_resource *resource_, struct wl_resource *output) { … } /** * @ingroup iface_wl_surface * Sends an leave event to the client owning the resource. * @param resource_ The client's resource * @param output output left by the surface */ static inline void wl_surface_send_leave(struct wl_resource *resource_, struct wl_resource *output) { … } /** * @ingroup iface_wl_surface * Sends an preferred_buffer_scale event to the client owning the resource. * @param resource_ The client's resource * @param factor preferred scaling factor */ static inline void wl_surface_send_preferred_buffer_scale(struct wl_resource *resource_, int32_t factor) { … } /** * @ingroup iface_wl_surface * Sends an preferred_buffer_transform event to the client owning the resource. * @param resource_ The client's resource * @param transform preferred transform */ static inline void wl_surface_send_preferred_buffer_transform(struct wl_resource *resource_, uint32_t transform) { … } #ifndef WL_SEAT_CAPABILITY_ENUM #define WL_SEAT_CAPABILITY_ENUM /** * @ingroup iface_wl_seat * seat capability bitmask * * This is a bitmask of capabilities this seat has; if a member is * set, then it is present on the seat. */ enum wl_seat_capability { … }; /** * @ingroup iface_wl_seat * Validate a wl_seat capability value. * * @return true on success, false on error. * @ref wl_seat_capability */ static inline bool wl_seat_capability_is_valid(uint32_t value, uint32_t version) { … } #endif /* WL_SEAT_CAPABILITY_ENUM */ #ifndef WL_SEAT_ERROR_ENUM #define WL_SEAT_ERROR_ENUM /** * @ingroup iface_wl_seat * wl_seat error values * * These errors can be emitted in response to wl_seat requests. */ enum wl_seat_error { … }; /** * @ingroup iface_wl_seat * Validate a wl_seat error value. * * @return true on success, false on error. * @ref wl_seat_error */ static inline bool wl_seat_error_is_valid(uint32_t value, uint32_t version) { … } #endif /* WL_SEAT_ERROR_ENUM */ /** * @ingroup iface_wl_seat * @struct wl_seat_interface */ struct wl_seat_interface { … }; #define WL_SEAT_CAPABILITIES … #define WL_SEAT_NAME … /** * @ingroup iface_wl_seat */ #define WL_SEAT_CAPABILITIES_SINCE_VERSION … /** * @ingroup iface_wl_seat */ #define WL_SEAT_NAME_SINCE_VERSION … /** * @ingroup iface_wl_seat */ #define WL_SEAT_GET_POINTER_SINCE_VERSION … /** * @ingroup iface_wl_seat */ #define WL_SEAT_GET_KEYBOARD_SINCE_VERSION … /** * @ingroup iface_wl_seat */ #define WL_SEAT_GET_TOUCH_SINCE_VERSION … /** * @ingroup iface_wl_seat */ #define WL_SEAT_RELEASE_SINCE_VERSION … /** * @ingroup iface_wl_seat * Sends an capabilities event to the client owning the resource. * @param resource_ The client's resource * @param capabilities capabilities of the seat */ static inline void wl_seat_send_capabilities(struct wl_resource *resource_, uint32_t capabilities) { … } /** * @ingroup iface_wl_seat * Sends an name event to the client owning the resource. * @param resource_ The client's resource * @param name seat identifier */ static inline void wl_seat_send_name(struct wl_resource *resource_, const char *name) { … } #ifndef WL_POINTER_ERROR_ENUM #define WL_POINTER_ERROR_ENUM enum wl_pointer_error { … }; /** * @ingroup iface_wl_pointer * Validate a wl_pointer error value. * * @return true on success, false on error. * @ref wl_pointer_error */ static inline bool wl_pointer_error_is_valid(uint32_t value, uint32_t version) { … } #endif /* WL_POINTER_ERROR_ENUM */ #ifndef WL_POINTER_BUTTON_STATE_ENUM #define WL_POINTER_BUTTON_STATE_ENUM /** * @ingroup iface_wl_pointer * physical button state * * Describes the physical state of a button that produced the button * event. */ enum wl_pointer_button_state { … }; /** * @ingroup iface_wl_pointer * Validate a wl_pointer button_state value. * * @return true on success, false on error. * @ref wl_pointer_button_state */ static inline bool wl_pointer_button_state_is_valid(uint32_t value, uint32_t version) { … } #endif /* WL_POINTER_BUTTON_STATE_ENUM */ #ifndef WL_POINTER_AXIS_ENUM #define WL_POINTER_AXIS_ENUM /** * @ingroup iface_wl_pointer * axis types * * Describes the axis types of scroll events. */ enum wl_pointer_axis { … }; /** * @ingroup iface_wl_pointer * Validate a wl_pointer axis value. * * @return true on success, false on error. * @ref wl_pointer_axis */ static inline bool wl_pointer_axis_is_valid(uint32_t value, uint32_t version) { … } #endif /* WL_POINTER_AXIS_ENUM */ #ifndef WL_POINTER_AXIS_SOURCE_ENUM #define WL_POINTER_AXIS_SOURCE_ENUM /** * @ingroup iface_wl_pointer * axis source types * * Describes the source types for axis events. This indicates to the * client how an axis event was physically generated; a client may * adjust the user interface accordingly. For example, scroll events * from a "finger" source may be in a smooth coordinate space with * kinetic scrolling whereas a "wheel" source may be in discrete steps * of a number of lines. * * The "continuous" axis source is a device generating events in a * continuous coordinate space, but using something other than a * finger. One example for this source is button-based scrolling where * the vertical motion of a device is converted to scroll events while * a button is held down. * * The "wheel tilt" axis source indicates that the actual device is a * wheel but the scroll event is not caused by a rotation but a * (usually sideways) tilt of the wheel. */ enum wl_pointer_axis_source { … }; /** * @ingroup iface_wl_pointer */ #define WL_POINTER_AXIS_SOURCE_WHEEL_TILT_SINCE_VERSION … /** * @ingroup iface_wl_pointer * Validate a wl_pointer axis_source value. * * @return true on success, false on error. * @ref wl_pointer_axis_source */ static inline bool wl_pointer_axis_source_is_valid(uint32_t value, uint32_t version) { … } #endif /* WL_POINTER_AXIS_SOURCE_ENUM */ #ifndef WL_POINTER_AXIS_RELATIVE_DIRECTION_ENUM #define WL_POINTER_AXIS_RELATIVE_DIRECTION_ENUM /** * @ingroup iface_wl_pointer * axis relative direction * * This specifies the direction of the physical motion that caused a * wl_pointer.axis event, relative to the wl_pointer.axis direction. */ enum wl_pointer_axis_relative_direction { … }; /** * @ingroup iface_wl_pointer * Validate a wl_pointer axis_relative_direction value. * * @return true on success, false on error. * @ref wl_pointer_axis_relative_direction */ static inline bool wl_pointer_axis_relative_direction_is_valid(uint32_t value, uint32_t version) { … } #endif /* WL_POINTER_AXIS_RELATIVE_DIRECTION_ENUM */ /** * @ingroup iface_wl_pointer * @struct wl_pointer_interface */ struct wl_pointer_interface { … }; #define WL_POINTER_ENTER … #define WL_POINTER_LEAVE … #define WL_POINTER_MOTION … #define WL_POINTER_BUTTON … #define WL_POINTER_AXIS … #define WL_POINTER_FRAME … #define WL_POINTER_AXIS_SOURCE … #define WL_POINTER_AXIS_STOP … #define WL_POINTER_AXIS_DISCRETE … #define WL_POINTER_AXIS_VALUE120 … #define WL_POINTER_AXIS_RELATIVE_DIRECTION … /** * @ingroup iface_wl_pointer */ #define WL_POINTER_ENTER_SINCE_VERSION … /** * @ingroup iface_wl_pointer */ #define WL_POINTER_LEAVE_SINCE_VERSION … /** * @ingroup iface_wl_pointer */ #define WL_POINTER_MOTION_SINCE_VERSION … /** * @ingroup iface_wl_pointer */ #define WL_POINTER_BUTTON_SINCE_VERSION … /** * @ingroup iface_wl_pointer */ #define WL_POINTER_AXIS_SINCE_VERSION … /** * @ingroup iface_wl_pointer */ #define WL_POINTER_FRAME_SINCE_VERSION … /** * @ingroup iface_wl_pointer */ #define WL_POINTER_AXIS_SOURCE_SINCE_VERSION … /** * @ingroup iface_wl_pointer */ #define WL_POINTER_AXIS_STOP_SINCE_VERSION … /** * @ingroup iface_wl_pointer */ #define WL_POINTER_AXIS_DISCRETE_SINCE_VERSION … /** * @ingroup iface_wl_pointer */ #define WL_POINTER_AXIS_VALUE120_SINCE_VERSION … /** * @ingroup iface_wl_pointer */ #define WL_POINTER_AXIS_RELATIVE_DIRECTION_SINCE_VERSION … /** * @ingroup iface_wl_pointer */ #define WL_POINTER_SET_CURSOR_SINCE_VERSION … /** * @ingroup iface_wl_pointer */ #define WL_POINTER_RELEASE_SINCE_VERSION … /** * @ingroup iface_wl_pointer * Sends an enter event to the client owning the resource. * @param resource_ The client's resource * @param serial serial number of the enter event * @param surface surface entered by the pointer * @param surface_x surface-local x coordinate * @param surface_y surface-local y coordinate */ static inline void wl_pointer_send_enter(struct wl_resource *resource_, uint32_t serial, struct wl_resource *surface, wl_fixed_t surface_x, wl_fixed_t surface_y) { … } /** * @ingroup iface_wl_pointer * Sends an leave event to the client owning the resource. * @param resource_ The client's resource * @param serial serial number of the leave event * @param surface surface left by the pointer */ static inline void wl_pointer_send_leave(struct wl_resource *resource_, uint32_t serial, struct wl_resource *surface) { … } /** * @ingroup iface_wl_pointer * Sends an motion event to the client owning the resource. * @param resource_ The client's resource * @param time timestamp with millisecond granularity * @param surface_x surface-local x coordinate * @param surface_y surface-local y coordinate */ static inline void wl_pointer_send_motion(struct wl_resource *resource_, uint32_t time, wl_fixed_t surface_x, wl_fixed_t surface_y) { … } /** * @ingroup iface_wl_pointer * Sends an button event to the client owning the resource. * @param resource_ The client's resource * @param serial serial number of the button event * @param time timestamp with millisecond granularity * @param button button that produced the event * @param state physical state of the button */ static inline void wl_pointer_send_button(struct wl_resource *resource_, uint32_t serial, uint32_t time, uint32_t button, uint32_t state) { … } /** * @ingroup iface_wl_pointer * Sends an axis event to the client owning the resource. * @param resource_ The client's resource * @param time timestamp with millisecond granularity * @param axis axis type * @param value length of vector in surface-local coordinate space */ static inline void wl_pointer_send_axis(struct wl_resource *resource_, uint32_t time, uint32_t axis, wl_fixed_t value) { … } /** * @ingroup iface_wl_pointer * Sends an frame event to the client owning the resource. * @param resource_ The client's resource */ static inline void wl_pointer_send_frame(struct wl_resource *resource_) { … } /** * @ingroup iface_wl_pointer * Sends an axis_source event to the client owning the resource. * @param resource_ The client's resource * @param axis_source source of the axis event */ static inline void wl_pointer_send_axis_source(struct wl_resource *resource_, uint32_t axis_source) { … } /** * @ingroup iface_wl_pointer * Sends an axis_stop event to the client owning the resource. * @param resource_ The client's resource * @param time timestamp with millisecond granularity * @param axis the axis stopped with this event */ static inline void wl_pointer_send_axis_stop(struct wl_resource *resource_, uint32_t time, uint32_t axis) { … } /** * @ingroup iface_wl_pointer * Sends an axis_discrete event to the client owning the resource. * @param resource_ The client's resource * @param axis axis type * @param discrete number of steps */ static inline void wl_pointer_send_axis_discrete(struct wl_resource *resource_, uint32_t axis, int32_t discrete) { … } /** * @ingroup iface_wl_pointer * Sends an axis_value120 event to the client owning the resource. * @param resource_ The client's resource * @param axis axis type * @param value120 scroll distance as fraction of 120 */ static inline void wl_pointer_send_axis_value120(struct wl_resource *resource_, uint32_t axis, int32_t value120) { … } /** * @ingroup iface_wl_pointer * Sends an axis_relative_direction event to the client owning the resource. * @param resource_ The client's resource * @param axis axis type * @param direction physical direction relative to axis motion */ static inline void wl_pointer_send_axis_relative_direction(struct wl_resource *resource_, uint32_t axis, uint32_t direction) { … } #ifndef WL_KEYBOARD_KEYMAP_FORMAT_ENUM #define WL_KEYBOARD_KEYMAP_FORMAT_ENUM /** * @ingroup iface_wl_keyboard * keyboard mapping format * * This specifies the format of the keymap provided to the * client with the wl_keyboard.keymap event. */ enum wl_keyboard_keymap_format { … }; /** * @ingroup iface_wl_keyboard * Validate a wl_keyboard keymap_format value. * * @return true on success, false on error. * @ref wl_keyboard_keymap_format */ static inline bool wl_keyboard_keymap_format_is_valid(uint32_t value, uint32_t version) { … } #endif /* WL_KEYBOARD_KEYMAP_FORMAT_ENUM */ #ifndef WL_KEYBOARD_KEY_STATE_ENUM #define WL_KEYBOARD_KEY_STATE_ENUM /** * @ingroup iface_wl_keyboard * physical key state * * Describes the physical state of a key that produced the key event. */ enum wl_keyboard_key_state { … }; /** * @ingroup iface_wl_keyboard * Validate a wl_keyboard key_state value. * * @return true on success, false on error. * @ref wl_keyboard_key_state */ static inline bool wl_keyboard_key_state_is_valid(uint32_t value, uint32_t version) { … } #endif /* WL_KEYBOARD_KEY_STATE_ENUM */ /** * @ingroup iface_wl_keyboard * @struct wl_keyboard_interface */ struct wl_keyboard_interface { … }; #define WL_KEYBOARD_KEYMAP … #define WL_KEYBOARD_ENTER … #define WL_KEYBOARD_LEAVE … #define WL_KEYBOARD_KEY … #define WL_KEYBOARD_MODIFIERS … #define WL_KEYBOARD_REPEAT_INFO … /** * @ingroup iface_wl_keyboard */ #define WL_KEYBOARD_KEYMAP_SINCE_VERSION … /** * @ingroup iface_wl_keyboard */ #define WL_KEYBOARD_ENTER_SINCE_VERSION … /** * @ingroup iface_wl_keyboard */ #define WL_KEYBOARD_LEAVE_SINCE_VERSION … /** * @ingroup iface_wl_keyboard */ #define WL_KEYBOARD_KEY_SINCE_VERSION … /** * @ingroup iface_wl_keyboard */ #define WL_KEYBOARD_MODIFIERS_SINCE_VERSION … /** * @ingroup iface_wl_keyboard */ #define WL_KEYBOARD_REPEAT_INFO_SINCE_VERSION … /** * @ingroup iface_wl_keyboard */ #define WL_KEYBOARD_RELEASE_SINCE_VERSION … /** * @ingroup iface_wl_keyboard * Sends an keymap event to the client owning the resource. * @param resource_ The client's resource * @param format keymap format * @param fd keymap file descriptor * @param size keymap size, in bytes */ static inline void wl_keyboard_send_keymap(struct wl_resource *resource_, uint32_t format, int32_t fd, uint32_t size) { … } /** * @ingroup iface_wl_keyboard * Sends an enter event to the client owning the resource. * @param resource_ The client's resource * @param serial serial number of the enter event * @param surface surface gaining keyboard focus * @param keys the keys currently logically down */ static inline void wl_keyboard_send_enter(struct wl_resource *resource_, uint32_t serial, struct wl_resource *surface, struct wl_array *keys) { … } /** * @ingroup iface_wl_keyboard * Sends an leave event to the client owning the resource. * @param resource_ The client's resource * @param serial serial number of the leave event * @param surface surface that lost keyboard focus */ static inline void wl_keyboard_send_leave(struct wl_resource *resource_, uint32_t serial, struct wl_resource *surface) { … } /** * @ingroup iface_wl_keyboard * Sends an key event to the client owning the resource. * @param resource_ The client's resource * @param serial serial number of the key event * @param time timestamp with millisecond granularity * @param key key that produced the event * @param state physical state of the key */ static inline void wl_keyboard_send_key(struct wl_resource *resource_, uint32_t serial, uint32_t time, uint32_t key, uint32_t state) { … } /** * @ingroup iface_wl_keyboard * Sends an modifiers event to the client owning the resource. * @param resource_ The client's resource * @param serial serial number of the modifiers event * @param mods_depressed depressed modifiers * @param mods_latched latched modifiers * @param mods_locked locked modifiers * @param group keyboard layout */ static inline void wl_keyboard_send_modifiers(struct wl_resource *resource_, uint32_t serial, uint32_t mods_depressed, uint32_t mods_latched, uint32_t mods_locked, uint32_t group) { … } /** * @ingroup iface_wl_keyboard * Sends an repeat_info event to the client owning the resource. * @param resource_ The client's resource * @param rate the rate of repeating keys in characters per second * @param delay delay in milliseconds since key down until repeating starts */ static inline void wl_keyboard_send_repeat_info(struct wl_resource *resource_, int32_t rate, int32_t delay) { … } /** * @ingroup iface_wl_touch * @struct wl_touch_interface */ struct wl_touch_interface { … }; #define WL_TOUCH_DOWN … #define WL_TOUCH_UP … #define WL_TOUCH_MOTION … #define WL_TOUCH_FRAME … #define WL_TOUCH_CANCEL … #define WL_TOUCH_SHAPE … #define WL_TOUCH_ORIENTATION … /** * @ingroup iface_wl_touch */ #define WL_TOUCH_DOWN_SINCE_VERSION … /** * @ingroup iface_wl_touch */ #define WL_TOUCH_UP_SINCE_VERSION … /** * @ingroup iface_wl_touch */ #define WL_TOUCH_MOTION_SINCE_VERSION … /** * @ingroup iface_wl_touch */ #define WL_TOUCH_FRAME_SINCE_VERSION … /** * @ingroup iface_wl_touch */ #define WL_TOUCH_CANCEL_SINCE_VERSION … /** * @ingroup iface_wl_touch */ #define WL_TOUCH_SHAPE_SINCE_VERSION … /** * @ingroup iface_wl_touch */ #define WL_TOUCH_ORIENTATION_SINCE_VERSION … /** * @ingroup iface_wl_touch */ #define WL_TOUCH_RELEASE_SINCE_VERSION … /** * @ingroup iface_wl_touch * Sends an down event to the client owning the resource. * @param resource_ The client's resource * @param serial serial number of the touch down event * @param time timestamp with millisecond granularity * @param surface surface touched * @param id the unique ID of this touch point * @param x surface-local x coordinate * @param y surface-local y coordinate */ static inline void wl_touch_send_down(struct wl_resource *resource_, uint32_t serial, uint32_t time, struct wl_resource *surface, int32_t id, wl_fixed_t x, wl_fixed_t y) { … } /** * @ingroup iface_wl_touch * Sends an up event to the client owning the resource. * @param resource_ The client's resource * @param serial serial number of the touch up event * @param time timestamp with millisecond granularity * @param id the unique ID of this touch point */ static inline void wl_touch_send_up(struct wl_resource *resource_, uint32_t serial, uint32_t time, int32_t id) { … } /** * @ingroup iface_wl_touch * Sends an motion event to the client owning the resource. * @param resource_ The client's resource * @param time timestamp with millisecond granularity * @param id the unique ID of this touch point * @param x surface-local x coordinate * @param y surface-local y coordinate */ static inline void wl_touch_send_motion(struct wl_resource *resource_, uint32_t time, int32_t id, wl_fixed_t x, wl_fixed_t y) { … } /** * @ingroup iface_wl_touch * Sends an frame event to the client owning the resource. * @param resource_ The client's resource */ static inline void wl_touch_send_frame(struct wl_resource *resource_) { … } /** * @ingroup iface_wl_touch * Sends an cancel event to the client owning the resource. * @param resource_ The client's resource */ static inline void wl_touch_send_cancel(struct wl_resource *resource_) { … } /** * @ingroup iface_wl_touch * Sends an shape event to the client owning the resource. * @param resource_ The client's resource * @param id the unique ID of this touch point * @param major length of the major axis in surface-local coordinates * @param minor length of the minor axis in surface-local coordinates */ static inline void wl_touch_send_shape(struct wl_resource *resource_, int32_t id, wl_fixed_t major, wl_fixed_t minor) { … } /** * @ingroup iface_wl_touch * Sends an orientation event to the client owning the resource. * @param resource_ The client's resource * @param id the unique ID of this touch point * @param orientation angle between major axis and positive surface y-axis in degrees */ static inline void wl_touch_send_orientation(struct wl_resource *resource_, int32_t id, wl_fixed_t orientation) { … } #ifndef WL_OUTPUT_SUBPIXEL_ENUM #define WL_OUTPUT_SUBPIXEL_ENUM /** * @ingroup iface_wl_output * subpixel geometry information * * This enumeration describes how the physical * pixels on an output are laid out. */ enum wl_output_subpixel { … }; /** * @ingroup iface_wl_output * Validate a wl_output subpixel value. * * @return true on success, false on error. * @ref wl_output_subpixel */ static inline bool wl_output_subpixel_is_valid(uint32_t value, uint32_t version) { … } #endif /* WL_OUTPUT_SUBPIXEL_ENUM */ #ifndef WL_OUTPUT_TRANSFORM_ENUM #define WL_OUTPUT_TRANSFORM_ENUM /** * @ingroup iface_wl_output * transformation applied to buffer contents * * This describes transformations that clients and compositors apply to * buffer contents. * * The flipped values correspond to an initial flip around a * vertical axis followed by rotation. * * The purpose is mainly to allow clients to render accordingly and * tell the compositor, so that for fullscreen surfaces, the * compositor will still be able to scan out directly from client * surfaces. */ enum wl_output_transform { … }; /** * @ingroup iface_wl_output * Validate a wl_output transform value. * * @return true on success, false on error. * @ref wl_output_transform */ static inline bool wl_output_transform_is_valid(uint32_t value, uint32_t version) { … } #endif /* WL_OUTPUT_TRANSFORM_ENUM */ #ifndef WL_OUTPUT_MODE_ENUM #define WL_OUTPUT_MODE_ENUM /** * @ingroup iface_wl_output * mode information * * These flags describe properties of an output mode. * They are used in the flags bitfield of the mode event. */ enum wl_output_mode { … }; /** * @ingroup iface_wl_output * Validate a wl_output mode value. * * @return true on success, false on error. * @ref wl_output_mode */ static inline bool wl_output_mode_is_valid(uint32_t value, uint32_t version) { … } #endif /* WL_OUTPUT_MODE_ENUM */ /** * @ingroup iface_wl_output * @struct wl_output_interface */ struct wl_output_interface { … }; #define WL_OUTPUT_GEOMETRY … #define WL_OUTPUT_MODE … #define WL_OUTPUT_DONE … #define WL_OUTPUT_SCALE … #define WL_OUTPUT_NAME … #define WL_OUTPUT_DESCRIPTION … /** * @ingroup iface_wl_output */ #define WL_OUTPUT_GEOMETRY_SINCE_VERSION … /** * @ingroup iface_wl_output */ #define WL_OUTPUT_MODE_SINCE_VERSION … /** * @ingroup iface_wl_output */ #define WL_OUTPUT_DONE_SINCE_VERSION … /** * @ingroup iface_wl_output */ #define WL_OUTPUT_SCALE_SINCE_VERSION … /** * @ingroup iface_wl_output */ #define WL_OUTPUT_NAME_SINCE_VERSION … /** * @ingroup iface_wl_output */ #define WL_OUTPUT_DESCRIPTION_SINCE_VERSION … /** * @ingroup iface_wl_output */ #define WL_OUTPUT_RELEASE_SINCE_VERSION … /** * @ingroup iface_wl_output * Sends an geometry event to the client owning the resource. * @param resource_ The client's resource * @param x x position within the global compositor space * @param y y position within the global compositor space * @param physical_width width in millimeters of the output * @param physical_height height in millimeters of the output * @param subpixel subpixel orientation of the output * @param make textual description of the manufacturer * @param model textual description of the model * @param transform additional transformation applied to buffer contents during presentation */ static inline void wl_output_send_geometry(struct wl_resource *resource_, int32_t x, int32_t y, int32_t physical_width, int32_t physical_height, int32_t subpixel, const char *make, const char *model, int32_t transform) { … } /** * @ingroup iface_wl_output * Sends an mode event to the client owning the resource. * @param resource_ The client's resource * @param flags bitfield of mode flags * @param width width of the mode in hardware units * @param height height of the mode in hardware units * @param refresh vertical refresh rate in mHz */ static inline void wl_output_send_mode(struct wl_resource *resource_, uint32_t flags, int32_t width, int32_t height, int32_t refresh) { … } /** * @ingroup iface_wl_output * Sends an done event to the client owning the resource. * @param resource_ The client's resource */ static inline void wl_output_send_done(struct wl_resource *resource_) { … } /** * @ingroup iface_wl_output * Sends an scale event to the client owning the resource. * @param resource_ The client's resource * @param factor scaling factor of output */ static inline void wl_output_send_scale(struct wl_resource *resource_, int32_t factor) { … } /** * @ingroup iface_wl_output * Sends an name event to the client owning the resource. * @param resource_ The client's resource * @param name output name */ static inline void wl_output_send_name(struct wl_resource *resource_, const char *name) { … } /** * @ingroup iface_wl_output * Sends an description event to the client owning the resource. * @param resource_ The client's resource * @param description output description */ static inline void wl_output_send_description(struct wl_resource *resource_, const char *description) { … } /** * @ingroup iface_wl_region * @struct wl_region_interface */ struct wl_region_interface { … }; /** * @ingroup iface_wl_region */ #define WL_REGION_DESTROY_SINCE_VERSION … /** * @ingroup iface_wl_region */ #define WL_REGION_ADD_SINCE_VERSION … /** * @ingroup iface_wl_region */ #define WL_REGION_SUBTRACT_SINCE_VERSION … #ifndef WL_SUBCOMPOSITOR_ERROR_ENUM #define WL_SUBCOMPOSITOR_ERROR_ENUM enum wl_subcompositor_error { … }; /** * @ingroup iface_wl_subcompositor * Validate a wl_subcompositor error value. * * @return true on success, false on error. * @ref wl_subcompositor_error */ static inline bool wl_subcompositor_error_is_valid(uint32_t value, uint32_t version) { … } #endif /* WL_SUBCOMPOSITOR_ERROR_ENUM */ /** * @ingroup iface_wl_subcompositor * @struct wl_subcompositor_interface */ struct wl_subcompositor_interface { … }; /** * @ingroup iface_wl_subcompositor */ #define WL_SUBCOMPOSITOR_DESTROY_SINCE_VERSION … /** * @ingroup iface_wl_subcompositor */ #define WL_SUBCOMPOSITOR_GET_SUBSURFACE_SINCE_VERSION … #ifndef WL_SUBSURFACE_ERROR_ENUM #define WL_SUBSURFACE_ERROR_ENUM enum wl_subsurface_error { … }; /** * @ingroup iface_wl_subsurface * Validate a wl_subsurface error value. * * @return true on success, false on error. * @ref wl_subsurface_error */ static inline bool wl_subsurface_error_is_valid(uint32_t value, uint32_t version) { … } #endif /* WL_SUBSURFACE_ERROR_ENUM */ /** * @ingroup iface_wl_subsurface * @struct wl_subsurface_interface */ struct wl_subsurface_interface { … }; /** * @ingroup iface_wl_subsurface */ #define WL_SUBSURFACE_DESTROY_SINCE_VERSION … /** * @ingroup iface_wl_subsurface */ #define WL_SUBSURFACE_SET_POSITION_SINCE_VERSION … /** * @ingroup iface_wl_subsurface */ #define WL_SUBSURFACE_PLACE_ABOVE_SINCE_VERSION … /** * @ingroup iface_wl_subsurface */ #define WL_SUBSURFACE_PLACE_BELOW_SINCE_VERSION … /** * @ingroup iface_wl_subsurface */ #define WL_SUBSURFACE_SET_SYNC_SINCE_VERSION … /** * @ingroup iface_wl_subsurface */ #define WL_SUBSURFACE_SET_DESYNC_SINCE_VERSION … #ifdef __cplusplus } #endif #endif