/* Generated by wayland-scanner 1.26.0 */

#ifndef TREELAND_WALLPAPER_COLOR_V1_CLIENT_PROTOCOL_H
#define TREELAND_WALLPAPER_COLOR_V1_CLIENT_PROTOCOL_H

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

#ifdef  __cplusplus
extern "C" {
#endif

/**
 * @page page_treeland_wallpaper_color_v1 The treeland_wallpaper_color_v1 protocol
 * wallpaper color monitoring
 *
 * @section page_desc_treeland_wallpaper_color_v1 Description
 *
 * Warning! This protocol is EXPERIMENTAL and under active development.
 * It may change at any time, including in backward-incompatible ways,
 * without incrementing the interface major version and without prior
 * notice. No compatibility guarantees of any kind are provided. Clients
 * and compositors must track the upstream definition in treeland-protocols
 * and must not rely on the current interface names, requests, events, or
 * semantics remaining stable across releases.
 *
 * @section page_ifaces_treeland_wallpaper_color_v1 Interfaces
 * - @subpage page_iface_treeland_wallpaper_color_manager_v1 - 
 * @section page_copyright_treeland_wallpaper_color_v1 Copyright
 * <pre>
 *
 * SPDX-FileCopyrightText: 2024 UnionTech Software Technology Co., Ltd.
 * SPDX-License-Identifier: MIT
 * </pre>
 */
struct treeland_wallpaper_color_manager_v1;

#ifndef TREELAND_WALLPAPER_COLOR_MANAGER_V1_INTERFACE
#define TREELAND_WALLPAPER_COLOR_MANAGER_V1_INTERFACE
/**
 * @page page_iface_treeland_wallpaper_color_manager_v1 treeland_wallpaper_color_manager_v1
 * @section page_iface_treeland_wallpaper_color_manager_v1_api API
 * See @ref iface_treeland_wallpaper_color_manager_v1.
 */
/**
 * @defgroup iface_treeland_wallpaper_color_manager_v1 The treeland_wallpaper_color_manager_v1 interface
 */
extern const struct wl_interface treeland_wallpaper_color_manager_v1_interface;
#endif

/**
 * @ingroup iface_treeland_wallpaper_color_manager_v1
 * @struct treeland_wallpaper_color_manager_v1_listener
 */
struct treeland_wallpaper_color_manager_v1_listener {
	/**
	 * output color changed
	 *
	 * Tell the client that the wallpaper color of the screen it is
	 * monitoring has changed. This event will also be sent immediately
	 * when the client requests a watch.
	 * @param output system output name
	 */
	void (*output_color)(void *data,
			     struct treeland_wallpaper_color_manager_v1 *treeland_wallpaper_color_manager_v1,
			     const char *output,
			     uint32_t isdark);
};

/**
 * @ingroup iface_treeland_wallpaper_color_manager_v1
 */
static inline int
treeland_wallpaper_color_manager_v1_add_listener(struct treeland_wallpaper_color_manager_v1 *treeland_wallpaper_color_manager_v1,
						 const struct treeland_wallpaper_color_manager_v1_listener *listener, void *data)
{
	return wl_proxy_add_listener((struct wl_proxy *) treeland_wallpaper_color_manager_v1,
				     (void (**)(void)) listener, data);
}

#define TREELAND_WALLPAPER_COLOR_MANAGER_V1_WATCH 0
#define TREELAND_WALLPAPER_COLOR_MANAGER_V1_UNWATCH 1
#define TREELAND_WALLPAPER_COLOR_MANAGER_V1_DESTROY 2

/**
 * @ingroup iface_treeland_wallpaper_color_manager_v1
 */
#define TREELAND_WALLPAPER_COLOR_MANAGER_V1_OUTPUT_COLOR_SINCE_VERSION 1

/**
 * @ingroup iface_treeland_wallpaper_color_manager_v1
 */
#define TREELAND_WALLPAPER_COLOR_MANAGER_V1_WATCH_SINCE_VERSION 1
/**
 * @ingroup iface_treeland_wallpaper_color_manager_v1
 */
#define TREELAND_WALLPAPER_COLOR_MANAGER_V1_UNWATCH_SINCE_VERSION 1
/**
 * @ingroup iface_treeland_wallpaper_color_manager_v1
 */
#define TREELAND_WALLPAPER_COLOR_MANAGER_V1_DESTROY_SINCE_VERSION 1

/** @ingroup iface_treeland_wallpaper_color_manager_v1 */
static inline void
treeland_wallpaper_color_manager_v1_set_user_data(struct treeland_wallpaper_color_manager_v1 *treeland_wallpaper_color_manager_v1, void *user_data)
{
	wl_proxy_set_user_data((struct wl_proxy *) treeland_wallpaper_color_manager_v1, user_data);
}

/** @ingroup iface_treeland_wallpaper_color_manager_v1 */
static inline void *
treeland_wallpaper_color_manager_v1_get_user_data(struct treeland_wallpaper_color_manager_v1 *treeland_wallpaper_color_manager_v1)
{
	return wl_proxy_get_user_data((struct wl_proxy *) treeland_wallpaper_color_manager_v1);
}

static inline uint32_t
treeland_wallpaper_color_manager_v1_get_version(struct treeland_wallpaper_color_manager_v1 *treeland_wallpaper_color_manager_v1)
{
	return wl_proxy_get_version((struct wl_proxy *) treeland_wallpaper_color_manager_v1);
}

/**
 * @ingroup iface_treeland_wallpaper_color_manager_v1
 *
 * Monitor the wallpaper color of a given screen.
 */
static inline void
treeland_wallpaper_color_manager_v1_watch(struct treeland_wallpaper_color_manager_v1 *treeland_wallpaper_color_manager_v1, const char *output)
{
	wl_proxy_marshal_flags((struct wl_proxy *) treeland_wallpaper_color_manager_v1,
			 TREELAND_WALLPAPER_COLOR_MANAGER_V1_WATCH, NULL, wl_proxy_get_version((struct wl_proxy *) treeland_wallpaper_color_manager_v1), 0, output);
}

/**
 * @ingroup iface_treeland_wallpaper_color_manager_v1
 *
 * Stop monitor the wallpaper color for the given screen.
 */
static inline void
treeland_wallpaper_color_manager_v1_unwatch(struct treeland_wallpaper_color_manager_v1 *treeland_wallpaper_color_manager_v1, const char *output)
{
	wl_proxy_marshal_flags((struct wl_proxy *) treeland_wallpaper_color_manager_v1,
			 TREELAND_WALLPAPER_COLOR_MANAGER_V1_UNWATCH, NULL, wl_proxy_get_version((struct wl_proxy *) treeland_wallpaper_color_manager_v1), 0, output);
}

/**
 * @ingroup iface_treeland_wallpaper_color_manager_v1
 *
 * The client no longer cares about wallpaper_color.
 */
static inline void
treeland_wallpaper_color_manager_v1_destroy(struct treeland_wallpaper_color_manager_v1 *treeland_wallpaper_color_manager_v1)
{
	wl_proxy_marshal_flags((struct wl_proxy *) treeland_wallpaper_color_manager_v1,
			 TREELAND_WALLPAPER_COLOR_MANAGER_V1_DESTROY, NULL, wl_proxy_get_version((struct wl_proxy *) treeland_wallpaper_color_manager_v1), WL_MARSHAL_FLAG_DESTROY);
}

#ifdef  __cplusplus
}
#endif

#endif
