<?xml version="1.0" encoding="UTF-8"?>
<protocol name="scaler">

  <copyright>
    Copyright © 2013-2014 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.
  </copyright>

  <interface name="wl_scaler" version="2">
    <description summary="surface cropping and scaling">
      The global interface exposing surface cropping and scaling
      capabilities is used to instantiate an interface extension for a
      wl_surface object. This extended interface will then allow
      cropping and scaling the surface contents, effectively
      disconnecting the direct relationship between the buffer and the
      surface size.
    </description>

    <request name="destroy" type="destructor">
      <description summary="unbind from the cropping and scaling interface">
	Informs the server that the client will not be using this
	protocol object anymore. This does not affect any other objects,
	wl_viewport objects included.
      </description>
    </request>

    <enum name="error">
      <entry name="viewport_exists" value="0"
             summary="the surface already has a viewport object associated"/>
    </enum>

    <request name="get_viewport">
      <description summary="extend surface interface for crop and scale">
	Instantiate an interface extension for the given wl_surface to
	crop and scale its content. If the given wl_surface already has
	a wl_viewport object associated, the viewport_exists
	protocol error is raised.
      </description>

      <arg name="id" type="new_id" interface="wl_viewport"
           summary="the new viewport interface id"/>
      <arg name="surface" type="object" interface="wl_surface"
           summary="the surface"/>
    </request>
  </interface>

  <interface name="wl_viewport" version="2">
    <description summary="crop and scale interface to a wl_surface">
      An additional interface to a wl_surface object, which allows the
      client to specify the cropping and scaling of the surface
      contents.

      This interface allows to define the source rectangle (src_x,
      src_y, src_width, src_height) from where to take the wl_buffer
      contents, and scale that to destination size (dst_width,
      dst_height). This state is double-buffered, and is applied on the
      next wl_surface.commit.

      The two parts of crop and scale state are independent: the source
      rectangle, and the destination size. Initially both are unset, that
      is, no scaling is applied. The whole of the current wl_buffer is
      used as the source, and the surface size is as defined in
      wl_surface.attach.

      If the destination size is set, it causes the surface size to become
      dst_width, dst_height. The source (rectangle) is scaled to exactly
      this size. This overrides whatever the attached wl_buffer size is,
      unless the wl_buffer is NULL. If the wl_buffer is NULL, the surface
      has no content and therefore no size. Otherwise, the size is always
      at least 1x1 in surface coordinates.

      If the source rectangle is set, it defines what area of the
      wl_buffer is taken as the source. If the source rectangle is set and
      the destination size is not set, the surface size becomes the source
      rectangle size rounded up to the nearest integer. If the source size
      is already exactly integers, this results in cropping without scaling.

      The coordinate transformations from buffer pixel coordinates up to
      the surface-local coordinates happen in the following order:
        1. buffer_transform (wl_surface.set_buffer_transform)
        2. buffer_scale (wl_surface.set_buffer_scale)
        3. crop and scale (wl_viewport.set*)
      This means, that the source rectangle coordinates of crop and scale
      are given in the coordinates after the buffer transform and scale,
      i.e. in the coordinates that would be the surface-local coordinates
      if the crop and scale was not applied.

      If the source rectangle is partially or completely outside of the
      wl_buffer, then the surface contents are undefined (not void), and
      the surface size is still dst_width, dst_height.

      The x, y arguments of wl_surface.attach are applied as normal to
      the surface. They indicate how many pixels to remove from the
      surface size from the left and the top. In other words, they are
      still in the surface-local coordinate system, just like dst_width
      and dst_height are.

      If the wl_surface associated with the wl_viewport is destroyed,
      the wl_viewport object becomes inert.

      If the wl_viewport object is destroyed, the crop and scale
      state is removed from the wl_surface. The change will be applied
      on the next wl_surface.commit.
    </description>

    <request name="destroy" type="destructor">
      <description summary="remove scaling and cropping from the surface">
	The associated wl_surface's crop and scale state is removed.
	The change is applied on the next wl_surface.commit.
      </description>
    </request>

    <enum name="error">
      <entry name="bad_value" value="0"
             summary="negative or zero values in width or height"/>
    </enum>

    <request name="set">
      <description summary="set the crop and scale state">
	Set both source rectangle and destination size of the associated
	wl_surface. See wl_viewport for the description, and relation to
	the wl_buffer size.

	The bad_value protocol error is raised if src_width or
	src_height is negative, or if dst_width or dst_height is not
	positive.

	The crop and scale state is double-buffered state, and will be
	applied on the next wl_surface.commit.

	Arguments dst_x and dst_y do not exist here, use the x and y
	arguments to wl_surface.attach. The x, y, dst_width, and dst_height
	define the surface-local coordinate system irrespective of the
	attached wl_buffer size.
      </description>

      <arg name="src_x" type="fixed" summary="source rectangle x"/>
      <arg name="src_y" type="fixed" summary="source rectangle y"/>
      <arg name="src_width" type="fixed" summary="source rectangle width"/>
      <arg name="src_height" type="fixed" summary="source rectangle height"/>
      <arg name="dst_width" type="int" summary="surface width"/>
      <arg name="dst_height" type="int" summary="surface height"/>
    </request>

    <request name="set_source" since="2">
      <description summary="set the source rectangle for cropping">
	Set the source rectangle of the associated wl_surface. See
	wl_viewport for the description, and relation to the wl_buffer
	size.

	If width is -1.0 and height is -1.0, the destination size is unset
	instead. Any other pair of values for width and height that
	contains zero or negative values raises the bad_value protocol
	error.

	The crop and scale state is double-buffered state, and will be
	applied on the next wl_surface.commit.
      </description>

      <arg name="x" type="fixed" summary="source rectangle x"/>
      <arg name="y" type="fixed" summary="source rectangle y"/>
      <arg name="width" type="fixed" summary="source rectangle width"/>
      <arg name="height" type="fixed" summary="source rectangle height"/>
    </request>

    <request name="set_destination" since="2">
      <description summary="set the surface size for scaling">
	Set the destination size of the associated wl_surface. See
	wl_viewport for the description, and relation to the wl_buffer
	size.

	If width is -1 and height is -1, the destination size is unset
	instead. Any other pair of values for width and height that
	contains zero or negative values raises the bad_value protocol
	error.

	The crop and scale state is double-buffered state, and will be
	applied on the next wl_surface.commit.

	Arguments x and y do not exist here, use the x and y arguments to
	wl_surface.attach. The x, y, width, and height define the
	surface-local coordinate system irrespective of the attached
	wl_buffer size.
      </description>

      <arg name="width" type="int" summary="surface width"/>
      <arg name="height" type="int" summary="surface height"/>
    </request>
  </interface>
</protocol>
