Source code
Revision control
Copy as Markdown
Other Tools
/* Generated by wayland-scanner 1.25.90 */
#ifndef XX_FRACTIONAL_SCALE_V2_CLIENT_PROTOCOL_H
#define XX_FRACTIONAL_SCALE_V2_CLIENT_PROTOCOL_H
#include <stdint.h>
#include <stddef.h>
#include "wayland-client.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* @page page_xx_fractional_scale_v2 The xx_fractional_scale_v2 protocol
* Protocol for fractional scaling
*
* @section page_desc_xx_fractional_scale_v2 Description
*
* This protocol allows compositors and clients to communicate the
* coordinate space their surfaces act in.
*
* @section page_ifaces_xx_fractional_scale_v2 Interfaces
* - @subpage page_iface_xx_fractional_scale_manager_v2 - creates surface scale
* interfaces
* - @subpage page_iface_xx_fractional_scale_v2 - interface for fractional
* scaling
* @section page_copyright_xx_fractional_scale_v2 Copyright
* <pre>
*
* Copyright © 2022 Xaver Hugl
*
* 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_surface;
struct xx_fractional_scale_manager_v2;
struct xx_fractional_scale_v2;
#ifndef XX_FRACTIONAL_SCALE_MANAGER_V2_INTERFACE
# define XX_FRACTIONAL_SCALE_MANAGER_V2_INTERFACE
/**
* @page page_iface_xx_fractional_scale_manager_v2
* xx_fractional_scale_manager_v2
* @section page_iface_xx_fractional_scale_manager_v2_desc Description
*
* A global interface to create xx_fractional_scale_v2 interfaces.
* @section page_iface_xx_fractional_scale_manager_v2_api API
* See @ref iface_xx_fractional_scale_manager_v2.
*/
/**
* @defgroup iface_xx_fractional_scale_manager_v2 The
* xx_fractional_scale_manager_v2 interface
*
* A global interface to create xx_fractional_scale_v2 interfaces.
*/
extern const struct wl_interface xx_fractional_scale_manager_v2_interface;
#endif
#ifndef XX_FRACTIONAL_SCALE_V2_INTERFACE
# define XX_FRACTIONAL_SCALE_V2_INTERFACE
/**
* @page page_iface_xx_fractional_scale_v2 xx_fractional_scale_v2
* @section page_iface_xx_fractional_scale_v2_desc Description
*
* An additional interface for a wl_surface object that allows compositor and
* client to communicate in a different coordinate space, in order to enable
* them to accurately describe coordinates and sizes in pixels.
* The two coordinate spaces in consideration are logical and pixels, where
* logical coordinates describe the size content should have and pixels
* describe the size of buffers.
*
* A scale of one equals a lack of scaling, where the communicated values
* define both logical coordinates and pixels.
* A scale greater than one describes that for every logical coordinate,
* more than one pixel is used, and a scale less than one describes that
* multiple logical coordinates make up one pixel.
* In mathematical terms, logical coordinates can be obtained by dividing
* the provided values by the currently active scale.
*
* The initial compositor and client coordinate scale factors are 1.
* @section page_iface_xx_fractional_scale_v2_api API
* See @ref iface_xx_fractional_scale_v2.
*/
/**
* @defgroup iface_xx_fractional_scale_v2 The xx_fractional_scale_v2 interface
*
* An additional interface for a wl_surface object that allows compositor and
* client to communicate in a different coordinate space, in order to enable
* them to accurately describe coordinates and sizes in pixels.
* The two coordinate spaces in consideration are logical and pixels, where
* logical coordinates describe the size content should have and pixels
* describe the size of buffers.
*
* A scale of one equals a lack of scaling, where the communicated values
* define both logical coordinates and pixels.
* A scale greater than one describes that for every logical coordinate,
* more than one pixel is used, and a scale less than one describes that
* multiple logical coordinates make up one pixel.
* In mathematical terms, logical coordinates can be obtained by dividing
* the provided values by the currently active scale.
*
* The initial compositor and client coordinate scale factors are 1.
*/
extern const struct wl_interface xx_fractional_scale_v2_interface;
#endif
#ifndef XX_FRACTIONAL_SCALE_MANAGER_V2_ERROR_ENUM
# define XX_FRACTIONAL_SCALE_MANAGER_V2_ERROR_ENUM
enum xx_fractional_scale_manager_v2_error {
/**
* xx_fractional_scale_v2 for the surface already exists
*/
XX_FRACTIONAL_SCALE_MANAGER_V2_ERROR_FRACTIONAL_SCALE_EXISTS = 0,
};
#endif /* XX_FRACTIONAL_SCALE_MANAGER_V2_ERROR_ENUM */
#define XX_FRACTIONAL_SCALE_MANAGER_V2_DESTROY 0
#define XX_FRACTIONAL_SCALE_MANAGER_V2_GET_FRACTIONAL_SCALE 1
/**
* @ingroup iface_xx_fractional_scale_manager_v2
*/
#define XX_FRACTIONAL_SCALE_MANAGER_V2_DESTROY_SINCE_VERSION 1
/**
* @ingroup iface_xx_fractional_scale_manager_v2
*/
#define XX_FRACTIONAL_SCALE_MANAGER_V2_GET_FRACTIONAL_SCALE_SINCE_VERSION 1
/** @ingroup iface_xx_fractional_scale_manager_v2 */
static inline void xx_fractional_scale_manager_v2_set_user_data(
struct xx_fractional_scale_manager_v2* xx_fractional_scale_manager_v2,
void* user_data) {
wl_proxy_set_user_data((struct wl_proxy*)xx_fractional_scale_manager_v2,
user_data);
}
/** @ingroup iface_xx_fractional_scale_manager_v2 */
static inline void* xx_fractional_scale_manager_v2_get_user_data(
struct xx_fractional_scale_manager_v2* xx_fractional_scale_manager_v2) {
return wl_proxy_get_user_data(
(struct wl_proxy*)xx_fractional_scale_manager_v2);
}
static inline uint32_t xx_fractional_scale_manager_v2_get_version(
struct xx_fractional_scale_manager_v2* xx_fractional_scale_manager_v2) {
return wl_proxy_get_version((struct wl_proxy*)xx_fractional_scale_manager_v2);
}
/**
* @ingroup iface_xx_fractional_scale_manager_v2
*
* Informs the server that the client will not be using this protocol
* object anymore. This does not affect any other objects.
*/
static inline void xx_fractional_scale_manager_v2_destroy(
struct xx_fractional_scale_manager_v2* xx_fractional_scale_manager_v2) {
wl_proxy_marshal_flags(
(struct wl_proxy*)xx_fractional_scale_manager_v2,
XX_FRACTIONAL_SCALE_MANAGER_V2_DESTROY, NULL,
wl_proxy_get_version((struct wl_proxy*)xx_fractional_scale_manager_v2),
WL_MARSHAL_FLAG_DESTROY);
}
/**
* @ingroup iface_xx_fractional_scale_manager_v2
*
* Create an interface object for a wl_surface to communicate scale.
* If the given wl_surface already has a xx_fractional_scale_v2 object
* associated, the fractional_scale_exists protocol error is raised.
*/
static inline struct xx_fractional_scale_v2*
xx_fractional_scale_manager_v2_get_fractional_scale(
struct xx_fractional_scale_manager_v2* xx_fractional_scale_manager_v2,
struct wl_surface* surface) {
struct wl_proxy* id;
id = wl_proxy_marshal_flags(
(struct wl_proxy*)xx_fractional_scale_manager_v2,
XX_FRACTIONAL_SCALE_MANAGER_V2_GET_FRACTIONAL_SCALE,
&xx_fractional_scale_v2_interface,
wl_proxy_get_version((struct wl_proxy*)xx_fractional_scale_manager_v2), 0,
NULL, surface);
return (struct xx_fractional_scale_v2*)id;
}
#ifndef XX_FRACTIONAL_SCALE_V2_ERROR_ENUM
# define XX_FRACTIONAL_SCALE_V2_ERROR_ENUM
enum xx_fractional_scale_v2_error {
/**
* scale value is not valid
*/
XX_FRACTIONAL_SCALE_V2_ERROR_INVALID_SCALE = 0,
};
#endif /* XX_FRACTIONAL_SCALE_V2_ERROR_ENUM */
/**
* @ingroup iface_xx_fractional_scale_v2
* @struct xx_fractional_scale_v2_listener
*/
struct xx_fractional_scale_v2_listener {
/**
* set the compositor coordinate space scale factor
*
* This event sets a scale factor for the associated wl_surface
* that describes the coordinate system the compositor will use for
* events following xx_fractional_scale_v2.scale_factor.
*
* The scale factor is encoded in a 8.24 fixed point format.
*
* The compositor must not send a scale of zero.
*
* The client should re-render and commit a new buffer with the new
* scale as soon as possible, in order to avoid artifacts caused by
* the mismatch in compositor and client scales.
* @param scale_8_24 surface scale factor
*/
void (*scale_factor)(void* data,
struct xx_fractional_scale_v2* xx_fractional_scale_v2,
uint32_t scale_8_24);
};
/**
* @ingroup iface_xx_fractional_scale_v2
*/
static inline int xx_fractional_scale_v2_add_listener(
struct xx_fractional_scale_v2* xx_fractional_scale_v2,
const struct xx_fractional_scale_v2_listener* listener, void* data) {
return wl_proxy_add_listener((struct wl_proxy*)xx_fractional_scale_v2,
(void (**)(void))listener, data);
}
#define XX_FRACTIONAL_SCALE_V2_SET_SCALE_FACTOR 0
#define XX_FRACTIONAL_SCALE_V2_DESTROY 1
/**
* @ingroup iface_xx_fractional_scale_v2
*/
#define XX_FRACTIONAL_SCALE_V2_SCALE_FACTOR_SINCE_VERSION 1
/**
* @ingroup iface_xx_fractional_scale_v2
*/
#define XX_FRACTIONAL_SCALE_V2_SET_SCALE_FACTOR_SINCE_VERSION 1
/**
* @ingroup iface_xx_fractional_scale_v2
*/
#define XX_FRACTIONAL_SCALE_V2_DESTROY_SINCE_VERSION 1
/** @ingroup iface_xx_fractional_scale_v2 */
static inline void xx_fractional_scale_v2_set_user_data(
struct xx_fractional_scale_v2* xx_fractional_scale_v2, void* user_data) {
wl_proxy_set_user_data((struct wl_proxy*)xx_fractional_scale_v2, user_data);
}
/** @ingroup iface_xx_fractional_scale_v2 */
static inline void* xx_fractional_scale_v2_get_user_data(
struct xx_fractional_scale_v2* xx_fractional_scale_v2) {
return wl_proxy_get_user_data((struct wl_proxy*)xx_fractional_scale_v2);
}
static inline uint32_t xx_fractional_scale_v2_get_version(
struct xx_fractional_scale_v2* xx_fractional_scale_v2) {
return wl_proxy_get_version((struct wl_proxy*)xx_fractional_scale_v2);
}
/**
* @ingroup iface_xx_fractional_scale_v2
*
* This request sets a scale factor for the associated wl_surface that
* describes the coordinate system the client uses for requests following
* xx_fractional_scale_v2.set_scale_factor.
*
* The scale factor is encoded in a 8.24 fixed point format.
*
* If this scale factor does not match the scale factor provided by the
* compositor with xx_fractional_scale_v2.scale_factor, the compositor may
* apply transformations to the wl_surface that can result in blurriness
* or other artifacts.
*
* If scale_8_24 is zero, the error invalid_scale will be raised.
*/
static inline void xx_fractional_scale_v2_set_scale_factor(
struct xx_fractional_scale_v2* xx_fractional_scale_v2,
uint32_t scale_8_24) {
wl_proxy_marshal_flags(
(struct wl_proxy*)xx_fractional_scale_v2,
XX_FRACTIONAL_SCALE_V2_SET_SCALE_FACTOR, NULL,
wl_proxy_get_version((struct wl_proxy*)xx_fractional_scale_v2), 0,
scale_8_24);
}
/**
* @ingroup iface_xx_fractional_scale_v2
*
* The wl_surface's xx_fractional_scale_v2 object is destroyed, and the
* associated scale is reset to 1.
*/
static inline void xx_fractional_scale_v2_destroy(
struct xx_fractional_scale_v2* xx_fractional_scale_v2) {
wl_proxy_marshal_flags(
(struct wl_proxy*)xx_fractional_scale_v2, XX_FRACTIONAL_SCALE_V2_DESTROY,
NULL, wl_proxy_get_version((struct wl_proxy*)xx_fractional_scale_v2),
WL_MARSHAL_FLAG_DESTROY);
}
#ifdef __cplusplus
}
#endif
#endif