gioui.org/ui@v0.0.0-20190926171558-ce74bc0cbaea/app/wayland_xdg_decoration.h (about)

     1  /* Generated by wayland-scanner 1.16.0 */
     2  
     3  #ifndef XDG_DECORATION_UNSTABLE_V1_CLIENT_PROTOCOL_H
     4  #define XDG_DECORATION_UNSTABLE_V1_CLIENT_PROTOCOL_H
     5  
     6  #include <stdint.h>
     7  #include <stddef.h>
     8  #include "wayland-client.h"
     9  
    10  #ifdef  __cplusplus
    11  extern "C" {
    12  #endif
    13  
    14  /**
    15   * @page page_xdg_decoration_unstable_v1 The xdg_decoration_unstable_v1 protocol
    16   * @section page_ifaces_xdg_decoration_unstable_v1 Interfaces
    17   * - @subpage page_iface_zxdg_decoration_manager_v1 - window decoration manager
    18   * - @subpage page_iface_zxdg_toplevel_decoration_v1 - decoration object for a toplevel surface
    19   * @section page_copyright_xdg_decoration_unstable_v1 Copyright
    20   * <pre>
    21   *
    22   * Copyright © 2018 Simon Ser
    23   *
    24   * Permission is hereby granted, free of charge, to any person obtaining a
    25   * copy of this software and associated documentation files (the "Software"),
    26   * to deal in the Software without restriction, including without limitation
    27   * the rights to use, copy, modify, merge, publish, distribute, sublicense,
    28   * and/or sell copies of the Software, and to permit persons to whom the
    29   * Software is furnished to do so, subject to the following conditions:
    30   *
    31   * The above copyright notice and this permission notice (including the next
    32   * paragraph) shall be included in all copies or substantial portions of the
    33   * Software.
    34   *
    35   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    36   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    37   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
    38   * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    39   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
    40   * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
    41   * DEALINGS IN THE SOFTWARE.
    42   * </pre>
    43   */
    44  struct xdg_toplevel;
    45  struct zxdg_decoration_manager_v1;
    46  struct zxdg_toplevel_decoration_v1;
    47  
    48  /**
    49   * @page page_iface_zxdg_decoration_manager_v1 zxdg_decoration_manager_v1
    50   * @section page_iface_zxdg_decoration_manager_v1_desc Description
    51   *
    52   * This interface allows a compositor to announce support for server-side
    53   * decorations.
    54   *
    55   * A window decoration is a set of window controls as deemed appropriate by
    56   * the party managing them, such as user interface components used to move,
    57   * resize and change a window's state.
    58   *
    59   * A client can use this protocol to request being decorated by a supporting
    60   * compositor.
    61   *
    62   * If compositor and client do not negotiate the use of a server-side
    63   * decoration using this protocol, clients continue to self-decorate as they
    64   * see fit.
    65   *
    66   * Warning! The protocol described in this file is experimental and
    67   * backward incompatible changes may be made. Backward compatible changes
    68   * may be added together with the corresponding interface version bump.
    69   * Backward incompatible changes are done by bumping the version number in
    70   * the protocol and interface names and resetting the interface version.
    71   * Once the protocol is to be declared stable, the 'z' prefix and the
    72   * version number in the protocol and interface names are removed and the
    73   * interface version number is reset.
    74   * @section page_iface_zxdg_decoration_manager_v1_api API
    75   * See @ref iface_zxdg_decoration_manager_v1.
    76   */
    77  /**
    78   * @defgroup iface_zxdg_decoration_manager_v1 The zxdg_decoration_manager_v1 interface
    79   *
    80   * This interface allows a compositor to announce support for server-side
    81   * decorations.
    82   *
    83   * A window decoration is a set of window controls as deemed appropriate by
    84   * the party managing them, such as user interface components used to move,
    85   * resize and change a window's state.
    86   *
    87   * A client can use this protocol to request being decorated by a supporting
    88   * compositor.
    89   *
    90   * If compositor and client do not negotiate the use of a server-side
    91   * decoration using this protocol, clients continue to self-decorate as they
    92   * see fit.
    93   *
    94   * Warning! The protocol described in this file is experimental and
    95   * backward incompatible changes may be made. Backward compatible changes
    96   * may be added together with the corresponding interface version bump.
    97   * Backward incompatible changes are done by bumping the version number in
    98   * the protocol and interface names and resetting the interface version.
    99   * Once the protocol is to be declared stable, the 'z' prefix and the
   100   * version number in the protocol and interface names are removed and the
   101   * interface version number is reset.
   102   */
   103  extern const struct wl_interface zxdg_decoration_manager_v1_interface;
   104  /**
   105   * @page page_iface_zxdg_toplevel_decoration_v1 zxdg_toplevel_decoration_v1
   106   * @section page_iface_zxdg_toplevel_decoration_v1_desc Description
   107   *
   108   * The decoration object allows the compositor to toggle server-side window
   109   * decorations for a toplevel surface. The client can request to switch to
   110   * another mode.
   111   *
   112   * The xdg_toplevel_decoration object must be destroyed before its
   113   * xdg_toplevel.
   114   * @section page_iface_zxdg_toplevel_decoration_v1_api API
   115   * See @ref iface_zxdg_toplevel_decoration_v1.
   116   */
   117  /**
   118   * @defgroup iface_zxdg_toplevel_decoration_v1 The zxdg_toplevel_decoration_v1 interface
   119   *
   120   * The decoration object allows the compositor to toggle server-side window
   121   * decorations for a toplevel surface. The client can request to switch to
   122   * another mode.
   123   *
   124   * The xdg_toplevel_decoration object must be destroyed before its
   125   * xdg_toplevel.
   126   */
   127  extern const struct wl_interface zxdg_toplevel_decoration_v1_interface;
   128  
   129  #define ZXDG_DECORATION_MANAGER_V1_DESTROY 0
   130  #define ZXDG_DECORATION_MANAGER_V1_GET_TOPLEVEL_DECORATION 1
   131  
   132  
   133  /**
   134   * @ingroup iface_zxdg_decoration_manager_v1
   135   */
   136  #define ZXDG_DECORATION_MANAGER_V1_DESTROY_SINCE_VERSION 1
   137  /**
   138   * @ingroup iface_zxdg_decoration_manager_v1
   139   */
   140  #define ZXDG_DECORATION_MANAGER_V1_GET_TOPLEVEL_DECORATION_SINCE_VERSION 1
   141  
   142  /** @ingroup iface_zxdg_decoration_manager_v1 */
   143  static inline void
   144  zxdg_decoration_manager_v1_set_user_data(struct zxdg_decoration_manager_v1 *zxdg_decoration_manager_v1, void *user_data)
   145  {
   146  	wl_proxy_set_user_data((struct wl_proxy *) zxdg_decoration_manager_v1, user_data);
   147  }
   148  
   149  /** @ingroup iface_zxdg_decoration_manager_v1 */
   150  static inline void *
   151  zxdg_decoration_manager_v1_get_user_data(struct zxdg_decoration_manager_v1 *zxdg_decoration_manager_v1)
   152  {
   153  	return wl_proxy_get_user_data((struct wl_proxy *) zxdg_decoration_manager_v1);
   154  }
   155  
   156  static inline uint32_t
   157  zxdg_decoration_manager_v1_get_version(struct zxdg_decoration_manager_v1 *zxdg_decoration_manager_v1)
   158  {
   159  	return wl_proxy_get_version((struct wl_proxy *) zxdg_decoration_manager_v1);
   160  }
   161  
   162  /**
   163   * @ingroup iface_zxdg_decoration_manager_v1
   164   *
   165   * Destroy the decoration manager. This doesn't destroy objects created
   166   * with the manager.
   167   */
   168  static inline void
   169  zxdg_decoration_manager_v1_destroy(struct zxdg_decoration_manager_v1 *zxdg_decoration_manager_v1)
   170  {
   171  	wl_proxy_marshal((struct wl_proxy *) zxdg_decoration_manager_v1,
   172  			 ZXDG_DECORATION_MANAGER_V1_DESTROY);
   173  
   174  	wl_proxy_destroy((struct wl_proxy *) zxdg_decoration_manager_v1);
   175  }
   176  
   177  /**
   178   * @ingroup iface_zxdg_decoration_manager_v1
   179   *
   180   * Create a new decoration object associated with the given toplevel.
   181   *
   182   * Creating an xdg_toplevel_decoration from an xdg_toplevel which has a
   183   * buffer attached or committed is a client error, and any attempts by a
   184   * client to attach or manipulate a buffer prior to the first
   185   * xdg_toplevel_decoration.configure event must also be treated as
   186   * errors.
   187   */
   188  static inline struct zxdg_toplevel_decoration_v1 *
   189  zxdg_decoration_manager_v1_get_toplevel_decoration(struct zxdg_decoration_manager_v1 *zxdg_decoration_manager_v1, struct xdg_toplevel *toplevel)
   190  {
   191  	struct wl_proxy *id;
   192  
   193  	id = wl_proxy_marshal_constructor((struct wl_proxy *) zxdg_decoration_manager_v1,
   194  			 ZXDG_DECORATION_MANAGER_V1_GET_TOPLEVEL_DECORATION, &zxdg_toplevel_decoration_v1_interface, NULL, toplevel);
   195  
   196  	return (struct zxdg_toplevel_decoration_v1 *) id;
   197  }
   198  
   199  #ifndef ZXDG_TOPLEVEL_DECORATION_V1_ERROR_ENUM
   200  #define ZXDG_TOPLEVEL_DECORATION_V1_ERROR_ENUM
   201  enum zxdg_toplevel_decoration_v1_error {
   202  	/**
   203  	 * xdg_toplevel has a buffer attached before configure
   204  	 */
   205  	ZXDG_TOPLEVEL_DECORATION_V1_ERROR_UNCONFIGURED_BUFFER = 0,
   206  	/**
   207  	 * xdg_toplevel already has a decoration object
   208  	 */
   209  	ZXDG_TOPLEVEL_DECORATION_V1_ERROR_ALREADY_CONSTRUCTED = 1,
   210  	/**
   211  	 * xdg_toplevel destroyed before the decoration object
   212  	 */
   213  	ZXDG_TOPLEVEL_DECORATION_V1_ERROR_ORPHANED = 2,
   214  };
   215  #endif /* ZXDG_TOPLEVEL_DECORATION_V1_ERROR_ENUM */
   216  
   217  #ifndef ZXDG_TOPLEVEL_DECORATION_V1_MODE_ENUM
   218  #define ZXDG_TOPLEVEL_DECORATION_V1_MODE_ENUM
   219  /**
   220   * @ingroup iface_zxdg_toplevel_decoration_v1
   221   * window decoration modes
   222   *
   223   * These values describe window decoration modes.
   224   */
   225  enum zxdg_toplevel_decoration_v1_mode {
   226  	/**
   227  	 * no server-side window decoration
   228  	 */
   229  	ZXDG_TOPLEVEL_DECORATION_V1_MODE_CLIENT_SIDE = 1,
   230  	/**
   231  	 * server-side window decoration
   232  	 */
   233  	ZXDG_TOPLEVEL_DECORATION_V1_MODE_SERVER_SIDE = 2,
   234  };
   235  #endif /* ZXDG_TOPLEVEL_DECORATION_V1_MODE_ENUM */
   236  
   237  /**
   238   * @ingroup iface_zxdg_toplevel_decoration_v1
   239   * @struct zxdg_toplevel_decoration_v1_listener
   240   */
   241  struct zxdg_toplevel_decoration_v1_listener {
   242  	/**
   243  	 * suggest a surface change
   244  	 *
   245  	 * The configure event asks the client to change its decoration
   246  	 * mode. The configured state should not be applied immediately.
   247  	 * Clients must send an ack_configure in response to this event.
   248  	 * See xdg_surface.configure and xdg_surface.ack_configure for
   249  	 * details.
   250  	 *
   251  	 * A configure event can be sent at any time. The specified mode
   252  	 * must be obeyed by the client.
   253  	 * @param mode the decoration mode
   254  	 */
   255  	void (*configure)(void *data,
   256  			  struct zxdg_toplevel_decoration_v1 *zxdg_toplevel_decoration_v1,
   257  			  uint32_t mode);
   258  };
   259  
   260  /**
   261   * @ingroup iface_zxdg_toplevel_decoration_v1
   262   */
   263  static inline int
   264  zxdg_toplevel_decoration_v1_add_listener(struct zxdg_toplevel_decoration_v1 *zxdg_toplevel_decoration_v1,
   265  					 const struct zxdg_toplevel_decoration_v1_listener *listener, void *data)
   266  {
   267  	return wl_proxy_add_listener((struct wl_proxy *) zxdg_toplevel_decoration_v1,
   268  				     (void (**)(void)) listener, data);
   269  }
   270  
   271  #define ZXDG_TOPLEVEL_DECORATION_V1_DESTROY 0
   272  #define ZXDG_TOPLEVEL_DECORATION_V1_SET_MODE 1
   273  #define ZXDG_TOPLEVEL_DECORATION_V1_UNSET_MODE 2
   274  
   275  /**
   276   * @ingroup iface_zxdg_toplevel_decoration_v1
   277   */
   278  #define ZXDG_TOPLEVEL_DECORATION_V1_CONFIGURE_SINCE_VERSION 1
   279  
   280  /**
   281   * @ingroup iface_zxdg_toplevel_decoration_v1
   282   */
   283  #define ZXDG_TOPLEVEL_DECORATION_V1_DESTROY_SINCE_VERSION 1
   284  /**
   285   * @ingroup iface_zxdg_toplevel_decoration_v1
   286   */
   287  #define ZXDG_TOPLEVEL_DECORATION_V1_SET_MODE_SINCE_VERSION 1
   288  /**
   289   * @ingroup iface_zxdg_toplevel_decoration_v1
   290   */
   291  #define ZXDG_TOPLEVEL_DECORATION_V1_UNSET_MODE_SINCE_VERSION 1
   292  
   293  /** @ingroup iface_zxdg_toplevel_decoration_v1 */
   294  static inline void
   295  zxdg_toplevel_decoration_v1_set_user_data(struct zxdg_toplevel_decoration_v1 *zxdg_toplevel_decoration_v1, void *user_data)
   296  {
   297  	wl_proxy_set_user_data((struct wl_proxy *) zxdg_toplevel_decoration_v1, user_data);
   298  }
   299  
   300  /** @ingroup iface_zxdg_toplevel_decoration_v1 */
   301  static inline void *
   302  zxdg_toplevel_decoration_v1_get_user_data(struct zxdg_toplevel_decoration_v1 *zxdg_toplevel_decoration_v1)
   303  {
   304  	return wl_proxy_get_user_data((struct wl_proxy *) zxdg_toplevel_decoration_v1);
   305  }
   306  
   307  static inline uint32_t
   308  zxdg_toplevel_decoration_v1_get_version(struct zxdg_toplevel_decoration_v1 *zxdg_toplevel_decoration_v1)
   309  {
   310  	return wl_proxy_get_version((struct wl_proxy *) zxdg_toplevel_decoration_v1);
   311  }
   312  
   313  /**
   314   * @ingroup iface_zxdg_toplevel_decoration_v1
   315   *
   316   * Switch back to a mode without any server-side decorations at the next
   317   * commit.
   318   */
   319  static inline void
   320  zxdg_toplevel_decoration_v1_destroy(struct zxdg_toplevel_decoration_v1 *zxdg_toplevel_decoration_v1)
   321  {
   322  	wl_proxy_marshal((struct wl_proxy *) zxdg_toplevel_decoration_v1,
   323  			 ZXDG_TOPLEVEL_DECORATION_V1_DESTROY);
   324  
   325  	wl_proxy_destroy((struct wl_proxy *) zxdg_toplevel_decoration_v1);
   326  }
   327  
   328  /**
   329   * @ingroup iface_zxdg_toplevel_decoration_v1
   330   *
   331   * Set the toplevel surface decoration mode. This informs the compositor
   332   * that the client prefers the provided decoration mode.
   333   *
   334   * After requesting a decoration mode, the compositor will respond by
   335   * emitting a xdg_surface.configure event. The client should then update
   336   * its content, drawing it without decorations if the received mode is
   337   * server-side decorations. The client must also acknowledge the configure
   338   * when committing the new content (see xdg_surface.ack_configure).
   339   *
   340   * The compositor can decide not to use the client's mode and enforce a
   341   * different mode instead.
   342   *
   343   * Clients whose decoration mode depend on the xdg_toplevel state may send
   344   * a set_mode request in response to a xdg_surface.configure event and wait
   345   * for the next xdg_surface.configure event to prevent unwanted state.
   346   * Such clients are responsible for preventing configure loops and must
   347   * make sure not to send multiple successive set_mode requests with the
   348   * same decoration mode.
   349   */
   350  static inline void
   351  zxdg_toplevel_decoration_v1_set_mode(struct zxdg_toplevel_decoration_v1 *zxdg_toplevel_decoration_v1, uint32_t mode)
   352  {
   353  	wl_proxy_marshal((struct wl_proxy *) zxdg_toplevel_decoration_v1,
   354  			 ZXDG_TOPLEVEL_DECORATION_V1_SET_MODE, mode);
   355  }
   356  
   357  /**
   358   * @ingroup iface_zxdg_toplevel_decoration_v1
   359   *
   360   * Unset the toplevel surface decoration mode. This informs the compositor
   361   * that the client doesn't prefer a particular decoration mode.
   362   *
   363   * This request has the same semantics as set_mode.
   364   */
   365  static inline void
   366  zxdg_toplevel_decoration_v1_unset_mode(struct zxdg_toplevel_decoration_v1 *zxdg_toplevel_decoration_v1)
   367  {
   368  	wl_proxy_marshal((struct wl_proxy *) zxdg_toplevel_decoration_v1,
   369  			 ZXDG_TOPLEVEL_DECORATION_V1_UNSET_MODE);
   370  }
   371  
   372  #ifdef  __cplusplus
   373  }
   374  #endif
   375  
   376  #endif