All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.freedesktop.wayland.client.WlShellSurfaceProxy Maven / Gradle / Ivy

There is a newer version: 1.4.1
Show newest version
package org.freedesktop.wayland.client;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.freedesktop.wayland.util.Arguments;
import org.freedesktop.wayland.util.Interface;
import org.freedesktop.wayland.util.Message;
// 
//
//    Copyright © 2008-2011 Kristian Høgsberg
//    Copyright © 2010-2011 Intel Corporation
//    Copyright © 2012-2013 Collabora, Ltd.
//
//    Permission to use, copy, modify, distribute, and sell this
//    software and its documentation for any purpose is hereby granted
//    without fee, provided that the above copyright notice appear in
//    all copies and that both that copyright notice and this permission
//    notice appear in supporting documentation, and that the name of
//    the copyright holders not be used in advertising or publicity
//    pertaining to distribution of the software without specific,
//    written prior permission.  The copyright holders make no
//    representations about the suitability of this software for any
//    purpose.  It is provided "as is" without express or implied
//    warranty.
//
//    THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
//    SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
//    FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
//    SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
//    WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
//    AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
//    ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
//    THIS SOFTWARE.
//  
/**
 * desktop-style metadata 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 client side, * wl_shell_surface_destroy() must be called before destroying * the wl_surface object. * */ @Interface( methods = { @Message( types = { int.class }, signature = "u", functionName = "pong", name = "pong" ) , @Message( types = { org.freedesktop.wayland.client.WlSeatProxy.class, int.class }, signature = "ou", functionName = "move", name = "move" ) , @Message( types = { org.freedesktop.wayland.client.WlSeatProxy.class, int.class, int.class }, signature = "ouu", functionName = "resize", name = "resize" ) , @Message( types = { }, signature = "", functionName = "setToplevel", name = "set_toplevel" ) , @Message( types = { org.freedesktop.wayland.client.WlSurfaceProxy.class, int.class, int.class, int.class }, signature = "oiiu", functionName = "setTransient", name = "set_transient" ) , @Message( types = { int.class, int.class, org.freedesktop.wayland.client.WlOutputProxy.class }, signature = "uu?o", functionName = "setFullscreen", name = "set_fullscreen" ) , @Message( types = { org.freedesktop.wayland.client.WlSeatProxy.class, int.class, org.freedesktop.wayland.client.WlSurfaceProxy.class, int.class, int.class, int.class }, signature = "ouoiiu", functionName = "setPopup", name = "set_popup" ) , @Message( types = { org.freedesktop.wayland.client.WlOutputProxy.class }, signature = "?o", functionName = "setMaximized", name = "set_maximized" ) , @Message( types = { java.lang.String.class }, signature = "s", functionName = "setTitle", name = "set_title" ) , @Message( types = { java.lang.String.class }, signature = "s", functionName = "setClass", name = "set_class" ) }, name = "wl_shell_surface", version = 1, events = { @Message( types = { int.class }, signature = "u", functionName = "ping", name = "ping" ) , @Message( types = { int.class, int.class, int.class }, signature = "uii", functionName = "configure", name = "configure" ) , @Message( types = { }, signature = "", functionName = "popupDone", name = "popup_done" ) } ) public class WlShellSurfaceProxy extends Proxy { public static final String INTERFACE_NAME = "wl_shell_surface"; public WlShellSurfaceProxy(com.sun.jna.Pointer pointer, WlShellSurfaceEvents implementation, int version) { super(pointer, implementation, version); } public WlShellSurfaceProxy(com.sun.jna.Pointer pointer) { super(pointer); } /** * respond to a ping event *

* * A client must respond to a ping event with a pong request or * the client may be deemed unresponsive. * * @param serial serial of the ping event */ public void pong(int serial) { marshal(0, Arguments.create(1).set(0, serial)); } /** * start an interactive move *

* * Start a pointer-driven move of the surface. *

* This request must be used in response to a button press event. * The server may ignore move requests depending on the state of * the surface (e.g. fullscreen or maximized). * * @param seat the wl_seat whose pointer is used * @param serial serial of the implicit grab on the pointer */ public void move(@Nonnull WlSeatProxy seat, int serial) { marshal(1, Arguments.create(2).set(0, seat).set(1, serial)); } /** * start an interactive resize *

* * Start a pointer-driven resizing of the surface. *

* This request must be used in response to a button press event. * The server may ignore resize requests depending on the state of * the surface (e.g. fullscreen or maximized). * * @param seat the wl_seat whose pointer is used * @param serial serial of the implicit grab on the pointer * @param edges which edge or corner is being dragged */ public void resize(@Nonnull WlSeatProxy seat, int serial, int edges) { marshal(2, Arguments.create(3).set(0, seat).set(1, serial).set(2, edges)); } /** * make the surface a toplevel surface *

* * Map the surface as a toplevel surface. *

* A toplevel surface is not fullscreen, maximized or transient. * */ public void setToplevel() { marshal(3); } /** * make the surface a transient surface *

* * Map the surface relative to an existing surface. *

* The x and y arguments specify the locations of the upper left * corner of the surface relative to the upper left corner of the * parent surface, in surface local coordinates. *

* The flags argument controls details of the transient behaviour. * * @param parent * @param x * @param y * @param flags */ public void setTransient(@Nonnull WlSurfaceProxy parent, int x, int y, int flags) { marshal(4, Arguments.create(4).set(0, parent).set(1, x).set(2, y).set(3, flags)); } /** * make the surface a fullscreen surface *

* * Map the surface as a fullscreen surface. *

* If an output parameter is given then the surface will be made * fullscreen on that output. If the client does not specify the * output then the compositor will apply its policy - usually * choosing the output on which the surface has the biggest surface * area. *

* The client may specify a method to resolve a size conflict * between the output size and the surface size - this is provided * through the method parameter. *

* The framerate parameter is used only when the method is set * to "driver", to indicate the preferred framerate. A value of 0 * indicates that the app does not care about framerate. The * framerate is specified in mHz, that is framerate of 60000 is 60Hz. *

* A method of "scale" or "driver" implies a scaling operation of * the surface, either via a direct scaling operation or a change of * the output mode. This will override any kind of output scaling, so * that mapping a surface with a buffer size equal to the mode can * fill the screen independent of buffer_scale. *

* A method of "fill" means we don't scale up the buffer, however * any output scale is applied. This means that you may run into * an edge case where the application maps a buffer with the same * size of the output mode but buffer_scale 1 (thus making a * surface larger than the output). In this case it is allowed to * downscale the results to fit the screen. *

* The compositor must reply to this request with a configure event * with the dimensions for the output on which the surface will * be made fullscreen. * * @param method * @param framerate * @param output */ public void setFullscreen(int method, int framerate, @Nullable WlOutputProxy output) { marshal(5, Arguments.create(3).set(0, method).set(1, framerate).set(2, output)); } /** * make the surface a popup surface *

* * Map the surface as a popup. *

* A popup surface is a transient surface with an added pointer * grab. *

* An existing implicit grab will be changed to owner-events mode, * and the popup grab will continue after the implicit grab ends * (i.e. releasing the mouse button does not cause the popup to * be unmapped). *

* The popup grab continues until the window is destroyed or a * mouse button is pressed in any other clients window. A click * in any of the clients surfaces is reported as normal, however, * clicks in other clients surfaces will be discarded and trigger * the callback. *

* The x and y arguments specify the locations of the upper left * corner of the surface relative to the upper left corner of the * parent surface, in surface local coordinates. * * @param seat the wl_seat whose pointer is used * @param serial serial of the implicit grab on the pointer * @param parent * @param x * @param y * @param flags */ public void setPopup(@Nonnull WlSeatProxy seat, int serial, @Nonnull WlSurfaceProxy parent, int x, int y, int flags) { marshal(6, Arguments.create(6).set(0, seat).set(1, serial).set(2, parent).set(3, x).set(4, y).set(5, flags)); } /** * make the surface a maximized surface *

* * Map the surface as a maximized surface. *

* If an output parameter is given then the surface will be * maximized on that output. If the client does not specify the * output then the compositor will apply its policy - usually * choosing the output on which the surface has the biggest surface * area. *

* The compositor will reply with a configure event telling * the expected new surface size. The operation is completed * on the next buffer attach to this surface. *

* A maximized surface typically fills the entire output it is * bound to, except for desktop element such as panels. This is * the main difference between a maximized shell surface and a * fullscreen shell surface. *

* The details depend on the compositor implementation. * * @param output */ public void setMaximized(@Nullable WlOutputProxy output) { marshal(7, Arguments.create(1).set(0, output)); } /** * set surface title *

* * Set a short title for the surface. *

* This string may be used to identify the surface in a task bar, * window list, or other user interface elements provided by the * compositor. *

* The string must be encoded in UTF-8. * * @param title */ public void setTitle(@Nonnull String title) { marshal(8, Arguments.create(1).set(0, title)); } /** * set surface class *

* * Set a class for the surface. *

* The surface class identifies the general class of applications * to which the surface belongs. A common convention is to use the * file name (or the full path if it is a non-standard location) of * the application's .desktop file as the class. * * @param class_ */ public void setClass(@Nonnull String class_) { marshal(9, Arguments.create(1).set(0, class_)); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy