chromium/out/Default/gen/components/exo/wayland/protocol/chrome-color-management-client-protocol.h

/* Generated by wayland-scanner 1.23.0 */

#ifndef CHROME_COLOR_MANAGEMENT_CLIENT_PROTOCOL_H
#define CHROME_COLOR_MANAGEMENT_CLIENT_PROTOCOL_H

#include <stdint.h>
#include <stddef.h>
#include "wayland-client.h"

#ifdef  __cplusplus
extern "C" {
#endif

/**
 * @page page_chrome_color_management The chrome_color_management protocol
 * color management protocol
 *
 * @section page_desc_chrome_color_management Description
 *
 * This protocol specifies a way for a client to set the color space and
 * HDR metadata of a surface and to get information about the color spaces
 * and HDR capabilities of outputs.
 *
 * This protocol is based on a proposed upstream protocol, which we will migrate
 * to once it is approved. It may diverge from the proposed upstream protocol
 * over the course of our development.
 *
 * @section page_ifaces_chrome_color_management Interfaces
 * - @subpage page_iface_zcr_color_manager_v1 - color manager singleton
 * - @subpage page_iface_zcr_color_management_output_v1 - output color properties
 * - @subpage page_iface_zcr_color_management_surface_v1 - color management extension to a surface
 * - @subpage page_iface_zcr_color_space_creator_v1 - color space creator
 * - @subpage page_iface_zcr_color_space_v1 - color space
 * @section page_copyright_chrome_color_management Copyright
 * <pre>
 *
 * Copyright 2019 Sebastian Wick
 * Copyright 2019 Erwin Burema
 * Copyright 2020 AMD
 * Copyright 2020 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_output;
struct wl_surface;
struct zcr_color_management_output_v1;
struct zcr_color_management_surface_v1;
struct zcr_color_manager_v1;
struct zcr_color_space_creator_v1;
struct zcr_color_space_v1;

#ifndef ZCR_COLOR_MANAGER_V1_INTERFACE
#define ZCR_COLOR_MANAGER_V1_INTERFACE
/**
 * @page page_iface_zcr_color_manager_v1 zcr_color_manager_v1
 * @section page_iface_zcr_color_manager_v1_desc Description
 *
 * A global interface used for getting color management surface and color
 * management output objects as well as creating color space objects from
 * ICC profiles, parameters, or enumerated names.
 * @section page_iface_zcr_color_manager_v1_api API
 * See @ref iface_zcr_color_manager_v1.
 */
/**
 * @defgroup iface_zcr_color_manager_v1 The zcr_color_manager_v1 interface
 *
 * A global interface used for getting color management surface and color
 * management output objects as well as creating color space objects from
 * ICC profiles, parameters, or enumerated names.
 */
extern const struct wl_interface zcr_color_manager_v1_interface;
#endif
#ifndef ZCR_COLOR_MANAGEMENT_OUTPUT_V1_INTERFACE
#define ZCR_COLOR_MANAGEMENT_OUTPUT_V1_INTERFACE
/**
 * @page page_iface_zcr_color_management_output_v1 zcr_color_management_output_v1
 * @section page_iface_zcr_color_management_output_v1_desc Description
 *
 * A zcr_color_management_output_v1 describes the color properties of an
 * output.
 *
 * When zcr_color_management_output_v1 object is created, it will send
 * its initial events followed by a wl_output.done event. When creating
 * wl_output and its extension objects, use a final wl_display.sync to
 * guarantee that all output events have been received across all
 * extensions.
 *
 * If the wl_output associated with the zcr_color_management_output_v1 is
 * destroyed, the zcr_color_management_output_v1 object becomes inert.
 * @section page_iface_zcr_color_management_output_v1_api API
 * See @ref iface_zcr_color_management_output_v1.
 */
/**
 * @defgroup iface_zcr_color_management_output_v1 The zcr_color_management_output_v1 interface
 *
 * A zcr_color_management_output_v1 describes the color properties of an
 * output.
 *
 * When zcr_color_management_output_v1 object is created, it will send
 * its initial events followed by a wl_output.done event. When creating
 * wl_output and its extension objects, use a final wl_display.sync to
 * guarantee that all output events have been received across all
 * extensions.
 *
 * If the wl_output associated with the zcr_color_management_output_v1 is
 * destroyed, the zcr_color_management_output_v1 object becomes inert.
 */
extern const struct wl_interface zcr_color_management_output_v1_interface;
#endif
#ifndef ZCR_COLOR_MANAGEMENT_SURFACE_V1_INTERFACE
#define ZCR_COLOR_MANAGEMENT_SURFACE_V1_INTERFACE
/**
 * @page page_iface_zcr_color_management_surface_v1 zcr_color_management_surface_v1
 * @section page_iface_zcr_color_management_surface_v1_desc Description
 *
 * A zcr_color_management_surface_v1 allows the client to set the color
 * space and HDR properties of a surface.
 *
 * If the wl_surface associated with the zcr_color_management_surface_v1 is
 * destroyed, the zcr_color_management_surface_v1 object becomes inert.
 * @section page_iface_zcr_color_management_surface_v1_api API
 * See @ref iface_zcr_color_management_surface_v1.
 */
/**
 * @defgroup iface_zcr_color_management_surface_v1 The zcr_color_management_surface_v1 interface
 *
 * A zcr_color_management_surface_v1 allows the client to set the color
 * space and HDR properties of a surface.
 *
 * If the wl_surface associated with the zcr_color_management_surface_v1 is
 * destroyed, the zcr_color_management_surface_v1 object becomes inert.
 */
extern const struct wl_interface zcr_color_management_surface_v1_interface;
#endif
#ifndef ZCR_COLOR_SPACE_CREATOR_V1_INTERFACE
#define ZCR_COLOR_SPACE_CREATOR_V1_INTERFACE
/**
 * @page page_iface_zcr_color_space_creator_v1 zcr_color_space_creator_v1
 * @section page_iface_zcr_color_space_creator_v1_desc Description
 *
 * A zcr_color_space_creator_v1 object returns a created color space
 * or the error which occured during creation.
 *
 * Once a zcr_color_space_creator_v1 object has delivered a 'created'
 * or 'error' event it is automatically destroyed.
 * @section page_iface_zcr_color_space_creator_v1_api API
 * See @ref iface_zcr_color_space_creator_v1.
 */
/**
 * @defgroup iface_zcr_color_space_creator_v1 The zcr_color_space_creator_v1 interface
 *
 * A zcr_color_space_creator_v1 object returns a created color space
 * or the error which occured during creation.
 *
 * Once a zcr_color_space_creator_v1 object has delivered a 'created'
 * or 'error' event it is automatically destroyed.
 */
extern const struct wl_interface zcr_color_space_creator_v1_interface;
#endif
#ifndef ZCR_COLOR_SPACE_V1_INTERFACE
#define ZCR_COLOR_SPACE_V1_INTERFACE
/**
 * @page page_iface_zcr_color_space_v1 zcr_color_space_v1
 * @section page_iface_zcr_color_space_v1_desc Description
 *
 * Refers to a color space which can be attached to a surface
 * (zcr_color_management_surface_v1.set_color_space). It may provide
 * information like the ICC profile and the well-known names to allow
 * clients to know the color space and do color transformations of their
 * own.
 *
 * Once created and regardless of how it was created, a zcr_color_space_v1
 * object always refers to one fixed color space.
 *
 * The client can create a zcr_color_space_v1 object with
 * zcr_color_manager_v1 requests or from an output by calling
 * zcr_color_management_output_v1.get_color_space.
 *
 * Other extensions may define more zcr_color_space_v1 factory interfaces.
 * Those interfaces must explicitly specify the interface version for the
 * object created, otherwise versioning zcr_color_space_v1 correctly
 * becomes impossible. Using a 'new_id' argument without 'interface'
 * attribute defined in XML forces code generators to add two explicit
 * arguments: interface and version. Version is the explicit version
 * number needed, and interface should be required to be
 * "zcr_color_space_v1". The compositor supported zcr_color_space_v1
 * versions are defined by the advertised zcr_color_manager_v1 in
 * wl_registry.
 * @section page_iface_zcr_color_space_v1_api API
 * See @ref iface_zcr_color_space_v1.
 */
/**
 * @defgroup iface_zcr_color_space_v1 The zcr_color_space_v1 interface
 *
 * Refers to a color space which can be attached to a surface
 * (zcr_color_management_surface_v1.set_color_space). It may provide
 * information like the ICC profile and the well-known names to allow
 * clients to know the color space and do color transformations of their
 * own.
 *
 * Once created and regardless of how it was created, a zcr_color_space_v1
 * object always refers to one fixed color space.
 *
 * The client can create a zcr_color_space_v1 object with
 * zcr_color_manager_v1 requests or from an output by calling
 * zcr_color_management_output_v1.get_color_space.
 *
 * Other extensions may define more zcr_color_space_v1 factory interfaces.
 * Those interfaces must explicitly specify the interface version for the
 * object created, otherwise versioning zcr_color_space_v1 correctly
 * becomes impossible. Using a 'new_id' argument without 'interface'
 * attribute defined in XML forces code generators to add two explicit
 * arguments: interface and version. Version is the explicit version
 * number needed, and interface should be required to be
 * "zcr_color_space_v1". The compositor supported zcr_color_space_v1
 * versions are defined by the advertised zcr_color_manager_v1 in
 * wl_registry.
 */
extern const struct wl_interface zcr_color_space_v1_interface;
#endif

#ifndef ZCR_COLOR_MANAGER_V1_EOTF_NAMES_ENUM
#define ZCR_COLOR_MANAGER_V1_EOTF_NAMES_ENUM
/**
 * @ingroup iface_zcr_color_manager_v1
 * well-known EOTF names
 *
 * Names that describe a well-known EOTF.
 *
 * A compositor must support all of these based on the protocol interface
 * version.
 */
enum zcr_color_manager_v1_eotf_names {};
/**
 * @ingroup iface_zcr_color_manager_v1
 */
#define ZCR_COLOR_MANAGER_V1_EOTF_NAMES_HLG_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_manager_v1
 */
#define ZCR_COLOR_MANAGER_V1_EOTF_NAMES_BT709_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_manager_v1
 */
#define ZCR_COLOR_MANAGER_V1_EOTF_NAMES_EXTENDEDSRGB10_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_manager_v1
 */
#define ZCR_COLOR_MANAGER_V1_EOTF_NAMES_SMPTE170M_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_manager_v1
 */
#define ZCR_COLOR_MANAGER_V1_EOTF_NAMES_SMPTE240M_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_manager_v1
 */
#define ZCR_COLOR_MANAGER_V1_EOTF_NAMES_SMPTEST428_1_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_manager_v1
 */
#define ZCR_COLOR_MANAGER_V1_EOTF_NAMES_LOG_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_manager_v1
 */
#define ZCR_COLOR_MANAGER_V1_EOTF_NAMES_LOG_SQRT_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_manager_v1
 */
#define ZCR_COLOR_MANAGER_V1_EOTF_NAMES_IEC61966_2_4_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_manager_v1
 */
#define ZCR_COLOR_MANAGER_V1_EOTF_NAMES_BT1361_ECG_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_manager_v1
 */
#define ZCR_COLOR_MANAGER_V1_EOTF_NAMES_BT2020_10_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_manager_v1
 */
#define ZCR_COLOR_MANAGER_V1_EOTF_NAMES_BT2020_12_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_manager_v1
 */
#define ZCR_COLOR_MANAGER_V1_EOTF_NAMES_SCRGB_LINEAR_80_NITS_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_manager_v1
 */
#define ZCR_COLOR_MANAGER_V1_EOTF_NAMES_GAMMA18_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_manager_v1
 */
#define ZCR_COLOR_MANAGER_V1_EOTF_NAMES_GAMMA28_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_manager_v1
 */
#define ZCR_COLOR_MANAGER_V1_EOTF_NAMES_SRGB_HDR_SINCE_VERSION
#endif /* ZCR_COLOR_MANAGER_V1_EOTF_NAMES_ENUM */

#ifndef ZCR_COLOR_MANAGER_V1_CHROMATICITY_NAMES_ENUM
#define ZCR_COLOR_MANAGER_V1_CHROMATICITY_NAMES_ENUM
/**
 * @ingroup iface_zcr_color_manager_v1
 * well-known chromaticity names
 *
 * Names that describe well-known chromaticities.
 *
 * A compositor must support all of these based on the protocol interface
 * version.
 */
enum zcr_color_manager_v1_chromaticity_names {};
/**
 * @ingroup iface_zcr_color_manager_v1
 */
#define ZCR_COLOR_MANAGER_V1_CHROMATICITY_NAMES_WIDE_GAMUT_COLOR_SPIN_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_manager_v1
 */
#define ZCR_COLOR_MANAGER_V1_CHROMATICITY_NAMES_BT470M_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_manager_v1
 */
#define ZCR_COLOR_MANAGER_V1_CHROMATICITY_NAMES_SMPTE240M_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_manager_v1
 */
#define ZCR_COLOR_MANAGER_V1_CHROMATICITY_NAMES_XYZ_D50_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_manager_v1
 */
#define ZCR_COLOR_MANAGER_V1_CHROMATICITY_NAMES_SMPTEST428_1_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_manager_v1
 */
#define ZCR_COLOR_MANAGER_V1_CHROMATICITY_NAMES_SMPTEST431_2_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_manager_v1
 */
#define ZCR_COLOR_MANAGER_V1_CHROMATICITY_NAMES_FILM_SINCE_VERSION
#endif /* ZCR_COLOR_MANAGER_V1_CHROMATICITY_NAMES_ENUM */

#ifndef ZCR_COLOR_MANAGER_V1_WHITEPOINT_NAMES_ENUM
#define ZCR_COLOR_MANAGER_V1_WHITEPOINT_NAMES_ENUM
/**
 * @ingroup iface_zcr_color_manager_v1
 * well-known whitepoint names
 *
 * Names that describe well-known whitepoints.
 *
 * A compositor must support all of these based on the protocol interface
 * version.
 */
enum zcr_color_manager_v1_whitepoint_names {};
#endif /* ZCR_COLOR_MANAGER_V1_WHITEPOINT_NAMES_ENUM */

#ifndef ZCR_COLOR_MANAGER_V1_ERROR_ENUM
#define ZCR_COLOR_MANAGER_V1_ERROR_ENUM
enum zcr_color_manager_v1_error {};
#endif /* ZCR_COLOR_MANAGER_V1_ERROR_ENUM */

#ifndef ZCR_COLOR_MANAGER_V1_MATRIX_NAMES_ENUM
#define ZCR_COLOR_MANAGER_V1_MATRIX_NAMES_ENUM
/**
 * @ingroup iface_zcr_color_manager_v1
 * For specifying color matrices
 *
 * Names that describe typical ColorSpace Matrix IDs
 *
 */
enum zcr_color_manager_v1_matrix_names {};
/**
 * @ingroup iface_zcr_color_manager_v1
 */
#define ZCR_COLOR_MANAGER_V1_MATRIX_NAMES_YDZDX_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_manager_v1
 */
#define ZCR_COLOR_MANAGER_V1_MATRIX_NAMES_BT470BG_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_manager_v1
 */
#define ZCR_COLOR_MANAGER_V1_MATRIX_NAMES_GBR_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_manager_v1
 */
#define ZCR_COLOR_MANAGER_V1_MATRIX_NAMES_YCOCG_SINCE_VERSION
#endif /* ZCR_COLOR_MANAGER_V1_MATRIX_NAMES_ENUM */

#ifndef ZCR_COLOR_MANAGER_V1_RANGE_NAMES_ENUM
#define ZCR_COLOR_MANAGER_V1_RANGE_NAMES_ENUM
/**
 * @ingroup iface_zcr_color_manager_v1
 * For specifying RGB ranges
 *
 * Names that describe typical RGB value ranges.
 *
 */
enum zcr_color_manager_v1_range_names {};
#endif /* ZCR_COLOR_MANAGER_V1_RANGE_NAMES_ENUM */

#define ZCR_COLOR_MANAGER_V1_CREATE_COLOR_SPACE_FROM_ICC
#define ZCR_COLOR_MANAGER_V1_CREATE_COLOR_SPACE_FROM_NAMES
#define ZCR_COLOR_MANAGER_V1_CREATE_COLOR_SPACE_FROM_PARAMS
#define ZCR_COLOR_MANAGER_V1_GET_COLOR_MANAGEMENT_OUTPUT
#define ZCR_COLOR_MANAGER_V1_GET_COLOR_MANAGEMENT_SURFACE
#define ZCR_COLOR_MANAGER_V1_DESTROY
#define ZCR_COLOR_MANAGER_V1_CREATE_COLOR_SPACE_FROM_COMPLETE_NAMES
#define ZCR_COLOR_MANAGER_V1_CREATE_COLOR_SPACE_FROM_COMPLETE_PARAMS


/**
 * @ingroup iface_zcr_color_manager_v1
 */
#define ZCR_COLOR_MANAGER_V1_CREATE_COLOR_SPACE_FROM_ICC_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_manager_v1
 */
#define ZCR_COLOR_MANAGER_V1_CREATE_COLOR_SPACE_FROM_NAMES_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_manager_v1
 */
#define ZCR_COLOR_MANAGER_V1_CREATE_COLOR_SPACE_FROM_PARAMS_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_manager_v1
 */
#define ZCR_COLOR_MANAGER_V1_GET_COLOR_MANAGEMENT_OUTPUT_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_manager_v1
 */
#define ZCR_COLOR_MANAGER_V1_GET_COLOR_MANAGEMENT_SURFACE_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_manager_v1
 */
#define ZCR_COLOR_MANAGER_V1_DESTROY_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_manager_v1
 */
#define ZCR_COLOR_MANAGER_V1_CREATE_COLOR_SPACE_FROM_COMPLETE_NAMES_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_manager_v1
 */
#define ZCR_COLOR_MANAGER_V1_CREATE_COLOR_SPACE_FROM_COMPLETE_PARAMS_SINCE_VERSION

/** @ingroup iface_zcr_color_manager_v1 */
static inline void
zcr_color_manager_v1_set_user_data(struct zcr_color_manager_v1 *zcr_color_manager_v1, void *user_data)
{}

/** @ingroup iface_zcr_color_manager_v1 */
static inline void *
zcr_color_manager_v1_get_user_data(struct zcr_color_manager_v1 *zcr_color_manager_v1)
{}

static inline uint32_t
zcr_color_manager_v1_get_version(struct zcr_color_manager_v1 *zcr_color_manager_v1)
{}

/**
 * @ingroup iface_zcr_color_manager_v1
 *
 * Create a color space object from an ICC profile. This request returns
 * a zcr_color_space_creator_v1 object which either returns an error
 * or the successfully created zcr_color_space_v1 object.
 *
 * The description of the color space to create is sent in the form of an
 * ICC profile as a file descriptor in the argument icc.
 *
 * The fd must be seekable and the maximum size of the ICC profile is 4 MB.
 * Violating these requirements will raise an icc_fd protocol error. A
 * compositor must not modify the contents of the file, and the fd may be
 * sealed for writes and size changes.
 *
 * The file contents must represent a valid ICC profile.
 * The ICC profile version must be 2 or 4, it must be a 3 channel profile
 * and the class must be 'input', 'output', 'abstract' or 'display'.
 * Violating these requirements will not result in a protocol error but
 * raise the zcr_color_space_creator_v1.error event.
 *
 * See the zcr_color_space_v1 and zcr_color_space_creator_v1 interface for
 * more details about the created object.
 *
 * See the specification from International Color Consortium for more
 * details about ICC profiles, also known as ISO 15076-1:2010.
 */
static inline struct zcr_color_space_creator_v1 *
zcr_color_manager_v1_create_color_space_from_icc(struct zcr_color_manager_v1 *zcr_color_manager_v1, int32_t icc)
{}

/**
 * @ingroup iface_zcr_color_manager_v1
 *
 * [Deprecated] Create a color space object from well-known names. This request returns
 * a zcr_color_space_creator_v1 object which either returns an error
 * or the successfully created zcr_color_space_v1 object.
 *
 * EOTF, chromaticity and whitepoint must not be unknown. Otherwise, or
 * if a given value is not listed in the enumeration, the protocol error
 * bad_enum is raised.
 *
 * See the zcr_color_space_v1 and zcr_color_space_creator_v1 interface for
 * more details about the created object. Use create_color_space_from_complete_names
 * instead.
 */
static inline struct zcr_color_space_creator_v1 *
zcr_color_manager_v1_create_color_space_from_names(struct zcr_color_manager_v1 *zcr_color_manager_v1, uint32_t eotf, uint32_t chromaticity, uint32_t whitepoint)
{}

/**
 * @ingroup iface_zcr_color_manager_v1
 *
 * [Deprecated] Create a color space object from parameters. This request returns
 * a zcr_color_space_creator_v1 object which either returns an error
 * or the successfully created zcr_color_space_v1 object.
 *
 * EOTF must not be unknown. Otherwise, or if a given EOTF is not listed
 * in the enumeration, the protocol error bad_enum is raised.
 *
 * The white point must be inside the triangle created by the red, green
 * and blue primaries. Otherwise the bad_param protocol error is raised.
 *
 * All the chromaticity values are multiplied by 10000 to produce the
 * integers carried by the protocol.
 *
 * See the zcr_color_space_v1 and zcr_color_space_creator_v1 interface for
 * more details about the created object. Use create_color_space_from_complete_params
 * instead.
 */
static inline struct zcr_color_space_creator_v1 *
zcr_color_manager_v1_create_color_space_from_params(struct zcr_color_manager_v1 *zcr_color_manager_v1, uint32_t eotf, uint32_t primary_r_x, uint32_t primary_r_y, uint32_t primary_g_x, uint32_t primary_g_y, uint32_t primary_b_x, uint32_t primary_b_y, uint32_t white_point_x, uint32_t white_point_y)
{}

/**
 * @ingroup iface_zcr_color_manager_v1
 *
 * This creates a new zcr_color_management_output_v1 object for the
 * given wl_output.
 *
 * See the zcr_color_management_output_v1 interface for more details.
 */
static inline struct zcr_color_management_output_v1 *
zcr_color_manager_v1_get_color_management_output(struct zcr_color_manager_v1 *zcr_color_manager_v1, struct wl_output *output)
{}

/**
 * @ingroup iface_zcr_color_manager_v1
 *
 * This creates a new color zcr_color_management_surface_v1 object for the
 * given wl_surface.
 *
 * See the zcr_color_management_surface_v1 interface for more details.
 */
static inline struct zcr_color_management_surface_v1 *
zcr_color_manager_v1_get_color_management_surface(struct zcr_color_manager_v1 *zcr_color_manager_v1, struct wl_surface *surface)
{}

/**
 * @ingroup iface_zcr_color_manager_v1
 *
 * Destroy the zcr_color_manager_v1 object. This does not affect any other
 * objects in any way.
 */
static inline void
zcr_color_manager_v1_destroy(struct zcr_color_manager_v1 *zcr_color_manager_v1)
{}

/**
 * @ingroup iface_zcr_color_manager_v1
 *
 * Create a color space object from well-known names. This request returns
 * a zcr_color_space_creator_v1 object which either returns an error
 * or the successfully created zcr_color_space_v1 object.
 *
 * EOTF, chromaticity and whitepoint must not be unknown. Otherwise, or
 * if a given value is not listed in the enumeration, the protocol error
 * bad_enum is raised.
 *
 * This request additionally includes matrix and range information.
 *
 * See the zcr_color_space_v1 and zcr_color_space_creator_v1 interface for
 * more details about the created object.
 */
static inline struct zcr_color_space_creator_v1 *
zcr_color_manager_v1_create_color_space_from_complete_names(struct zcr_color_manager_v1 *zcr_color_manager_v1, uint32_t eotf, uint32_t chromaticity, uint32_t whitepoint, uint32_t matrix, uint32_t range)
{}

/**
 * @ingroup iface_zcr_color_manager_v1
 *
 * Create a color space object from parameters. This request returns
 * a zcr_color_space_creator_v1 object which either returns an error
 * or the successfully created zcr_color_space_v1 object.
 *
 * EOTF must not be unknown. Otherwise, or if a given EOTF is not listed
 * in the enumeration, the protocol error bad_enum is raised.
 *
 * The white point must be inside the triangle created by the red, green
 * and blue primaries. Otherwise the bad_param protocol error is raised.
 *
 * All the chromaticity values are multiplied by 10000 to produce the
 * integers carried by the protocol.
 *
 * This request additionally includes matrix and range information.
 *
 * See the zcr_color_space_v1 and zcr_color_space_creator_v1 interface for
 * more details about the created object.
 */
static inline struct zcr_color_space_creator_v1 *
zcr_color_manager_v1_create_color_space_from_complete_params(struct zcr_color_manager_v1 *zcr_color_manager_v1, uint32_t eotf, uint32_t matrix, uint32_t range, uint32_t primary_r_x, uint32_t primary_r_y, uint32_t primary_g_x, uint32_t primary_g_y, uint32_t primary_b_x, uint32_t primary_b_y, uint32_t white_point_x, uint32_t white_point_y)
{}

/**
 * @ingroup iface_zcr_color_management_output_v1
 * @struct zcr_color_management_output_v1_listener
 */
struct zcr_color_management_output_v1_listener {};

/**
 * @ingroup iface_zcr_color_management_output_v1
 */
static inline int
zcr_color_management_output_v1_add_listener(struct zcr_color_management_output_v1 *zcr_color_management_output_v1,
					    const struct zcr_color_management_output_v1_listener *listener, void *data)
{}

#define ZCR_COLOR_MANAGEMENT_OUTPUT_V1_GET_COLOR_SPACE
#define ZCR_COLOR_MANAGEMENT_OUTPUT_V1_DESTROY

/**
 * @ingroup iface_zcr_color_management_output_v1
 */
#define ZCR_COLOR_MANAGEMENT_OUTPUT_V1_COLOR_SPACE_CHANGED_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_management_output_v1
 */
#define ZCR_COLOR_MANAGEMENT_OUTPUT_V1_EXTENDED_DYNAMIC_RANGE_SINCE_VERSION

/**
 * @ingroup iface_zcr_color_management_output_v1
 */
#define ZCR_COLOR_MANAGEMENT_OUTPUT_V1_GET_COLOR_SPACE_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_management_output_v1
 */
#define ZCR_COLOR_MANAGEMENT_OUTPUT_V1_DESTROY_SINCE_VERSION

/** @ingroup iface_zcr_color_management_output_v1 */
static inline void
zcr_color_management_output_v1_set_user_data(struct zcr_color_management_output_v1 *zcr_color_management_output_v1, void *user_data)
{}

/** @ingroup iface_zcr_color_management_output_v1 */
static inline void *
zcr_color_management_output_v1_get_user_data(struct zcr_color_management_output_v1 *zcr_color_management_output_v1)
{}

static inline uint32_t
zcr_color_management_output_v1_get_version(struct zcr_color_management_output_v1 *zcr_color_management_output_v1)
{}

/**
 * @ingroup iface_zcr_color_management_output_v1
 *
 * This creates a new zcr_color_space_v1 object for the current color space
 * of the output. There always is exactly one color space active for an
 * output so the client should destroy the color space created by earlier
 * invocations of this request. This request is usually sent as a reaction
 * to the color_space_changed event or when creating a
 * zcr_color_management_output_v1 object.
 *
 * The created zcr_color_space_v1 object preserves the color space
 * of the output from the time the object was created.
 *
 * The resulting color space object allows get_information request.
 *
 * See the zcr_color_space_v1 interface for more details.
 */
static inline struct zcr_color_space_v1 *
zcr_color_management_output_v1_get_color_space(struct zcr_color_management_output_v1 *zcr_color_management_output_v1)
{}

/**
 * @ingroup iface_zcr_color_management_output_v1
 *
 * Destroy the color zcr_color_management_output_v1 object. This does not
 * affect any remaining protocol objects.
 */
static inline void
zcr_color_management_output_v1_destroy(struct zcr_color_management_output_v1 *zcr_color_management_output_v1)
{}

#ifndef ZCR_COLOR_MANAGEMENT_SURFACE_V1_RENDER_INTENT_ENUM
#define ZCR_COLOR_MANAGEMENT_SURFACE_V1_RENDER_INTENT_ENUM
/**
 * @ingroup iface_zcr_color_management_surface_v1
 * render intent
 *
 *
 * Rendering intent allow the client to hint at how to perform color space
 * transformations.
 *
 * See the ICC specification for more details about rendering intent.
 */
enum zcr_color_management_surface_v1_render_intent {};
#endif /* ZCR_COLOR_MANAGEMENT_SURFACE_V1_RENDER_INTENT_ENUM */

#ifndef ZCR_COLOR_MANAGEMENT_SURFACE_V1_ALPHA_MODE_ENUM
#define ZCR_COLOR_MANAGEMENT_SURFACE_V1_ALPHA_MODE_ENUM
/**
 * @ingroup iface_zcr_color_management_surface_v1
 * alpha mode
 *
 * Specifies whether alpha is pre-multiplied into color channels or not.
 * If pre-multiplied, the linear alpha value is already multiplied with the
 * (non-linear) color channel code values in the color channels.
 */
enum zcr_color_management_surface_v1_alpha_mode {};
#endif /* ZCR_COLOR_MANAGEMENT_SURFACE_V1_ALPHA_MODE_ENUM */

/**
 * @ingroup iface_zcr_color_management_surface_v1
 * @struct zcr_color_management_surface_v1_listener
 */
struct zcr_color_management_surface_v1_listener {};

/**
 * @ingroup iface_zcr_color_management_surface_v1
 */
static inline int
zcr_color_management_surface_v1_add_listener(struct zcr_color_management_surface_v1 *zcr_color_management_surface_v1,
					     const struct zcr_color_management_surface_v1_listener *listener, void *data)
{}

#define ZCR_COLOR_MANAGEMENT_SURFACE_V1_SET_ALPHA_MODE
#define ZCR_COLOR_MANAGEMENT_SURFACE_V1_SET_EXTENDED_DYNAMIC_RANGE
#define ZCR_COLOR_MANAGEMENT_SURFACE_V1_SET_COLOR_SPACE
#define ZCR_COLOR_MANAGEMENT_SURFACE_V1_SET_DEFAULT_COLOR_SPACE
#define ZCR_COLOR_MANAGEMENT_SURFACE_V1_DESTROY

/**
 * @ingroup iface_zcr_color_management_surface_v1
 */
#define ZCR_COLOR_MANAGEMENT_SURFACE_V1_PREFERRED_COLOR_SPACE_SINCE_VERSION

/**
 * @ingroup iface_zcr_color_management_surface_v1
 */
#define ZCR_COLOR_MANAGEMENT_SURFACE_V1_SET_ALPHA_MODE_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_management_surface_v1
 */
#define ZCR_COLOR_MANAGEMENT_SURFACE_V1_SET_EXTENDED_DYNAMIC_RANGE_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_management_surface_v1
 */
#define ZCR_COLOR_MANAGEMENT_SURFACE_V1_SET_COLOR_SPACE_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_management_surface_v1
 */
#define ZCR_COLOR_MANAGEMENT_SURFACE_V1_SET_DEFAULT_COLOR_SPACE_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_management_surface_v1
 */
#define ZCR_COLOR_MANAGEMENT_SURFACE_V1_DESTROY_SINCE_VERSION

/** @ingroup iface_zcr_color_management_surface_v1 */
static inline void
zcr_color_management_surface_v1_set_user_data(struct zcr_color_management_surface_v1 *zcr_color_management_surface_v1, void *user_data)
{}

/** @ingroup iface_zcr_color_management_surface_v1 */
static inline void *
zcr_color_management_surface_v1_get_user_data(struct zcr_color_management_surface_v1 *zcr_color_management_surface_v1)
{}

static inline uint32_t
zcr_color_management_surface_v1_get_version(struct zcr_color_management_surface_v1 *zcr_color_management_surface_v1)
{}

/**
 * @ingroup iface_zcr_color_management_surface_v1
 *
 * Assuming an alpha channel exists, it is always linear. The alpha mode
 * determines whether the color channels include alpha pre-multiplied or
 * not. Using straight alpha might have performance benefits.
 *
 * Alpha mode is double buffered, and will be applied at the time
 * wl_surface.commit of the corresponding wl_surface is called.
 *
 * By default, a surface is assumed to have pre-multiplied alpha.
 */
static inline void
zcr_color_management_surface_v1_set_alpha_mode(struct zcr_color_management_surface_v1 *zcr_color_management_surface_v1, uint32_t alpha_mode)
{}

/**
 * @ingroup iface_zcr_color_management_surface_v1
 *
 * Set the extended dynamic range (EDR) value for the underlying surface.
 * The EDR value is double buffered, and will be applied at the time
 * wl_surface.commit of the corresponding wl_surface is called.
 *
 * The EDR value describes how much dynamic range is encoded relative to
 * the SDR maximum white. EDR value is proportional to luminance, using
 * the luminance of black as the zero level. A value of 1.0 means that the
 * SDR maximum white is the highest possible luminance of the surface. A
 * value of 3.0 means that the SDR maximum white is one third of the
 * highest possible luminance of the surface.
 *
 * The color space attached to the surface can make the code values in the
 * buffer non-linear in regards to the luminance. The code value to produce
 * a third of the luminance of the biggest code value therefore might not
 * be one third of the biggest code value.
 *
 * For the definition of the SDR maximum white on an output, see
 * zcr_color_management_output_v1.extended_dynamic_range. Content
 * producers are free to choose their SDR maximum white level. How it
 * shall be displayed depends on the monitor capabilities and the output
 * EDR value.
 *
 * By default the EDR value is 1.0. The compositor will tone map the image
 * to match the EDR of each output the surface is shown on. The aim for
 * the EDR-EDR mapping is to produce a relative luminance mapping that
 * looks equally good regardless of the viewing conditions and the monitor
 * capabilities, assuming the output EDR value was tuned to the output
 * capabilities and the viewing environment. There might be performance
 * and image quality benefits from providing content readily tone mapped to
 * the EDR value of the output the surface is shown on.
 *
 * The EDR value is multiplied by 1000 to produce the integer value
 * carried by the protocol.
 */
static inline void
zcr_color_management_surface_v1_set_extended_dynamic_range(struct zcr_color_management_surface_v1 *zcr_color_management_surface_v1, uint32_t value)
{}

/**
 * @ingroup iface_zcr_color_management_surface_v1
 *
 * Set the color space of the underlying surface. The color space and
 * render intent are double buffered, and will be applied
 * at the time wl_surface.commit of the corresponding wl_surface is called.
 *
 *
 * The render intent gives the compositor a hint what to optimize for in
 * color space transformations.
 *
 * By default, a surface is assumed to have the sRGB color space and an
 * arbitrary render intent.
 *
 * If the color space of the surface matches the color space of an output
 * it is shown on the performance and color accuracy might improve. To find
 * those color spaces the client can listen to the preferred_color_space or
 * the wl_surface.enter/leave events. This improvement may require using
 * the color space object created by
 * zcr_color_management_output_v1.get_color_space.
 */
static inline void
zcr_color_management_surface_v1_set_color_space(struct zcr_color_management_surface_v1 *zcr_color_management_surface_v1, struct zcr_color_space_v1 *color_space, uint32_t render_intent)
{}

/**
 * @ingroup iface_zcr_color_management_surface_v1
 *
 * This request sets the surface color space to the defaults, see
 * set_color_space. The setting will be applied at the time
 * wl_surface.commit of the corresponding wl_surface is called.
 */
static inline void
zcr_color_management_surface_v1_set_default_color_space(struct zcr_color_management_surface_v1 *zcr_color_management_surface_v1)
{}

/**
 * @ingroup iface_zcr_color_management_surface_v1
 *
 * Destroy the zcr_color_management_surface_v1 object.
 *
 * When the last zcr_color_management_surface_v1 object for a wl_surface
 * is destroyed, the destruction will pend unsetting the wl_surface's
 * color space, render intent and alpha mode similar to set_color_space
 * will pend a set.
 */
static inline void
zcr_color_management_surface_v1_destroy(struct zcr_color_management_surface_v1 *zcr_color_management_surface_v1)
{}

#ifndef ZCR_COLOR_SPACE_CREATOR_V1_CREATION_ERROR_ENUM
#define ZCR_COLOR_SPACE_CREATOR_V1_CREATION_ERROR_ENUM
/**
 * @ingroup iface_zcr_color_space_creator_v1
 * color space creation error
 *
 * Bitmask of errors which occured while trying to create a color space
 */
enum zcr_color_space_creator_v1_creation_error {};
#endif /* ZCR_COLOR_SPACE_CREATOR_V1_CREATION_ERROR_ENUM */

/**
 * @ingroup iface_zcr_color_space_creator_v1
 * @struct zcr_color_space_creator_v1_listener
 */
struct zcr_color_space_creator_v1_listener {};

/**
 * @ingroup iface_zcr_color_space_creator_v1
 */
static inline int
zcr_color_space_creator_v1_add_listener(struct zcr_color_space_creator_v1 *zcr_color_space_creator_v1,
					const struct zcr_color_space_creator_v1_listener *listener, void *data)
{}

/**
 * @ingroup iface_zcr_color_space_creator_v1
 */
#define ZCR_COLOR_SPACE_CREATOR_V1_CREATED_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_space_creator_v1
 */
#define ZCR_COLOR_SPACE_CREATOR_V1_ERROR_SINCE_VERSION


/** @ingroup iface_zcr_color_space_creator_v1 */
static inline void
zcr_color_space_creator_v1_set_user_data(struct zcr_color_space_creator_v1 *zcr_color_space_creator_v1, void *user_data)
{}

/** @ingroup iface_zcr_color_space_creator_v1 */
static inline void *
zcr_color_space_creator_v1_get_user_data(struct zcr_color_space_creator_v1 *zcr_color_space_creator_v1)
{}

static inline uint32_t
zcr_color_space_creator_v1_get_version(struct zcr_color_space_creator_v1 *zcr_color_space_creator_v1)
{}

/** @ingroup iface_zcr_color_space_creator_v1 */
static inline void
zcr_color_space_creator_v1_destroy(struct zcr_color_space_creator_v1 *zcr_color_space_creator_v1)
{}

#ifndef ZCR_COLOR_SPACE_V1_ERROR_ENUM
#define ZCR_COLOR_SPACE_V1_ERROR_ENUM
enum zcr_color_space_v1_error {};
#endif /* ZCR_COLOR_SPACE_V1_ERROR_ENUM */

/**
 * @ingroup iface_zcr_color_space_v1
 * @struct zcr_color_space_v1_listener
 */
struct zcr_color_space_v1_listener {};

/**
 * @ingroup iface_zcr_color_space_v1
 */
static inline int
zcr_color_space_v1_add_listener(struct zcr_color_space_v1 *zcr_color_space_v1,
				const struct zcr_color_space_v1_listener *listener, void *data)
{}

#define ZCR_COLOR_SPACE_V1_GET_INFORMATION
#define ZCR_COLOR_SPACE_V1_DESTROY

/**
 * @ingroup iface_zcr_color_space_v1
 */
#define ZCR_COLOR_SPACE_V1_ICC_FILE_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_space_v1
 */
#define ZCR_COLOR_SPACE_V1_NAMES_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_space_v1
 */
#define ZCR_COLOR_SPACE_V1_PARAMS_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_space_v1
 */
#define ZCR_COLOR_SPACE_V1_DONE_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_space_v1
 */
#define ZCR_COLOR_SPACE_V1_COMPLETE_NAMES_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_space_v1
 */
#define ZCR_COLOR_SPACE_V1_COMPLETE_PARAMS_SINCE_VERSION

/**
 * @ingroup iface_zcr_color_space_v1
 */
#define ZCR_COLOR_SPACE_V1_GET_INFORMATION_SINCE_VERSION
/**
 * @ingroup iface_zcr_color_space_v1
 */
#define ZCR_COLOR_SPACE_V1_DESTROY_SINCE_VERSION

/** @ingroup iface_zcr_color_space_v1 */
static inline void
zcr_color_space_v1_set_user_data(struct zcr_color_space_v1 *zcr_color_space_v1, void *user_data)
{}

/** @ingroup iface_zcr_color_space_v1 */
static inline void *
zcr_color_space_v1_get_user_data(struct zcr_color_space_v1 *zcr_color_space_v1)
{}

static inline uint32_t
zcr_color_space_v1_get_version(struct zcr_color_space_v1 *zcr_color_space_v1)
{}

/**
 * @ingroup iface_zcr_color_space_v1
 *
 * As a reply to this request, the compositor will send all available
 * information events describing this color space object and finally
 * the 'done' event. Other extensions may define more events to be sent
 * before 'done'.
 *
 * This request is allowed only on zcr_color_space_v1 objects where the
 * message that created the object specifies that get_information is
 * allowed. Otherwise protocol error no_information is raised.
 *
 * Every get_information request on the same object will always return the
 * exact same data.
 *
 * See zcr_color_management_output_v1.get_color_space and
 * zcr_color_space_creator_v1.created.
 */
static inline void
zcr_color_space_v1_get_information(struct zcr_color_space_v1 *zcr_color_space_v1)
{}

/**
 * @ingroup iface_zcr_color_space_v1
 *
 * Destroy the zcr_color_space_v1 object.
 *
 * Destroying the zcr_color_space_v1 which is active on a surface or an
 * output does not change the color space of those objects.
 */
static inline void
zcr_color_space_v1_destroy(struct zcr_color_space_v1 *zcr_color_space_v1)
{}

#ifdef  __cplusplus
}
#endif

#endif