<root>
<enum name="GdkAnchorHints">
<description>
Positioning hints for aligning a surface relative to a rectangle.

These hints determine how the surface should be positioned in the case that
the surface would fall off-screen if placed in its ideal position.

For example, %GDK_ANCHOR_FLIP_X will replace %GDK_GRAVITY_NORTH_WEST with
%GDK_GRAVITY_NORTH_EAST and vice versa if the surface extends beyond the left
or right edges of the monitor.

If %GDK_ANCHOR_SLIDE_X is set, the surface can be shifted horizontally to fit
on-screen. If %GDK_ANCHOR_RESIZE_X is set, the surface can be shrunken
horizontally to fit.

In general, when multiple flags are set, flipping should take precedence over
sliding, which should take precedence over resizing.

</description>
<parameters>
<parameter name="GDK_ANCHOR_FLIP_X">
<parameter_description> allow flipping anchors horizontally
</parameter_description>
</parameter>
<parameter name="GDK_ANCHOR_FLIP_Y">
<parameter_description> allow flipping anchors vertically
</parameter_description>
</parameter>
<parameter name="GDK_ANCHOR_SLIDE_X">
<parameter_description> allow sliding surface horizontally
</parameter_description>
</parameter>
<parameter name="GDK_ANCHOR_SLIDE_Y">
<parameter_description> allow sliding surface vertically
</parameter_description>
</parameter>
<parameter name="GDK_ANCHOR_RESIZE_X">
<parameter_description> allow resizing surface horizontally
</parameter_description>
</parameter>
<parameter name="GDK_ANCHOR_RESIZE_Y">
<parameter_description> allow resizing surface vertically
</parameter_description>
</parameter>
<parameter name="GDK_ANCHOR_FLIP">
<parameter_description> allow flipping anchors on both axes
</parameter_description>
</parameter>
<parameter name="GDK_ANCHOR_SLIDE">
<parameter_description> allow sliding surface on both axes
</parameter_description>
</parameter>
<parameter name="GDK_ANCHOR_RESIZE">
<parameter_description> allow resizing surface on both axes
</parameter_description>
</parameter>
</parameters>
</enum>

<property name="GdkAppLaunchContext:display">
<description>
The display that the `GdkAppLaunchContext` is on.

</description>
</property>

<enum name="GdkAxisFlags">
<description>
Flags describing the current capabilities of a device/tool.

</description>
<parameters>
<parameter name="GDK_AXIS_FLAG_X">
<parameter_description> X axis is present
</parameter_description>
</parameter>
<parameter name="GDK_AXIS_FLAG_Y">
<parameter_description> Y axis is present
</parameter_description>
</parameter>
<parameter name="GDK_AXIS_FLAG_DELTA_X">
<parameter_description> Scroll X delta axis is present
</parameter_description>
</parameter>
<parameter name="GDK_AXIS_FLAG_DELTA_Y">
<parameter_description> Scroll Y delta axis is present
</parameter_description>
</parameter>
<parameter name="GDK_AXIS_FLAG_PRESSURE">
<parameter_description> Pressure axis is present
</parameter_description>
</parameter>
<parameter name="GDK_AXIS_FLAG_XTILT">
<parameter_description> X tilt axis is present
</parameter_description>
</parameter>
<parameter name="GDK_AXIS_FLAG_YTILT">
<parameter_description> Y tilt axis is present
</parameter_description>
</parameter>
<parameter name="GDK_AXIS_FLAG_WHEEL">
<parameter_description> Wheel axis is present
</parameter_description>
</parameter>
<parameter name="GDK_AXIS_FLAG_DISTANCE">
<parameter_description> Distance axis is present
</parameter_description>
</parameter>
<parameter name="GDK_AXIS_FLAG_ROTATION">
<parameter_description> Z-axis rotation is present
</parameter_description>
</parameter>
<parameter name="GDK_AXIS_FLAG_SLIDER">
<parameter_description> Slider axis is present
</parameter_description>
</parameter>
</parameters>
</enum>

<enum name="GdkAxisUse">
<description>
Defines how device axes are interpreted by GTK.

Note that the X and Y axes are not really needed; pointer devices
report their location via the x/y members of events regardless. Whether
X and Y are present as axes depends on the GDK backend.

</description>
<parameters>
<parameter name="GDK_AXIS_IGNORE">
<parameter_description> the axis is ignored.
</parameter_description>
</parameter>
<parameter name="GDK_AXIS_X">
<parameter_description> the axis is used as the x axis.
</parameter_description>
</parameter>
<parameter name="GDK_AXIS_Y">
<parameter_description> the axis is used as the y axis.
</parameter_description>
</parameter>
<parameter name="GDK_AXIS_DELTA_X">
<parameter_description> the axis is used as the scroll x delta
</parameter_description>
</parameter>
<parameter name="GDK_AXIS_DELTA_Y">
<parameter_description> the axis is used as the scroll y delta
</parameter_description>
</parameter>
<parameter name="GDK_AXIS_PRESSURE">
<parameter_description> the axis is used for pressure information.
</parameter_description>
</parameter>
<parameter name="GDK_AXIS_XTILT">
<parameter_description> the axis is used for x tilt information.
</parameter_description>
</parameter>
<parameter name="GDK_AXIS_YTILT">
<parameter_description> the axis is used for y tilt information.
</parameter_description>
</parameter>
<parameter name="GDK_AXIS_WHEEL">
<parameter_description> the axis is used for wheel information.
</parameter_description>
</parameter>
<parameter name="GDK_AXIS_DISTANCE">
<parameter_description> the axis is used for pen/tablet distance information
</parameter_description>
</parameter>
<parameter name="GDK_AXIS_ROTATION">
<parameter_description> the axis is used for pen rotation information
</parameter_description>
</parameter>
<parameter name="GDK_AXIS_SLIDER">
<parameter_description> the axis is used for pen slider information
</parameter_description>
</parameter>
<parameter name="GDK_AXIS_LAST">
<parameter_description> a constant equal to the numerically highest axis value.
</parameter_description>
</parameter>
</parameters>
</enum>

<signal name="GdkClipboard::changed">
<description>
Emitted when the clipboard changes ownership.

</description>
<parameters>
<parameter name="clipboard">
<parameter_description> the object on which the signal was emitted
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<property name="GdkClipboard:content">
<description>
The `GdkContentProvider` or %NULL if the clipboard is empty or contents are
provided otherwise.

</description>
</property>

<property name="GdkClipboard:display">
<description>
The `GdkDisplay` that the clipboard belongs to.

</description>
</property>

<property name="GdkClipboard:formats">
<description>
The possible formats that the clipboard can provide its data in.

</description>
</property>

<property name="GdkClipboard:local">
<description>
%TRUE if the contents of the clipboard are owned by this process.

</description>
</property>

<enum name="GdkColorspace">
<description>
This enumeration defines the color spaces that are supported by
the gdk-pixbuf library.

Currently only RGB is supported.

</description>
<parameters>
<parameter name="GDK_COLORSPACE_RGB">
<parameter_description> Indicates a red/green/blue additive color space.
</parameter_description>
</parameter>
</parameters>
</enum>

<signal name="GdkContentProvider::content-changed">
<description>
Emitted whenever the content provided by this provider has changed.

</description>
<parameters>
</parameters>
<return></return>
</signal>

<property name="GdkContentProvider:formats">
<description>
The possible formats that the provider can provide its data in.

</description>
</property>

<property name="GdkContentProvider:storable-formats">
<description>
The subset of formats that clipboard managers should store this provider's data in.

</description>
</property>

<enum name="GdkCrossingMode">
<description>
Specifies the crossing mode for enter and leave events.

</description>
<parameters>
<parameter name="GDK_CROSSING_NORMAL">
<parameter_description> crossing because of pointer motion.
</parameter_description>
</parameter>
<parameter name="GDK_CROSSING_GRAB">
<parameter_description> crossing because a grab is activated.
</parameter_description>
</parameter>
<parameter name="GDK_CROSSING_UNGRAB">
<parameter_description> crossing because a grab is deactivated.
</parameter_description>
</parameter>
<parameter name="GDK_CROSSING_GTK_GRAB">
<parameter_description> crossing because a GTK grab is activated.
</parameter_description>
</parameter>
<parameter name="GDK_CROSSING_GTK_UNGRAB">
<parameter_description> crossing because a GTK grab is deactivated.
</parameter_description>
</parameter>
<parameter name="GDK_CROSSING_STATE_CHANGED">
<parameter_description> crossing because a GTK widget changed
state (e.g. sensitivity).
</parameter_description>
</parameter>
<parameter name="GDK_CROSSING_TOUCH_BEGIN">
<parameter_description> crossing because a touch sequence has begun,
this event is synthetic as the pointer might have not left the surface.
</parameter_description>
</parameter>
<parameter name="GDK_CROSSING_TOUCH_END">
<parameter_description> crossing because a touch sequence has ended,
this event is synthetic as the pointer might have not left the surface.
</parameter_description>
</parameter>
<parameter name="GDK_CROSSING_DEVICE_SWITCH">
<parameter_description> crossing because of a device switch (i.e.
a mouse taking control of the pointer after a touch device), this event
is synthetic as the pointer didn’t leave the surface.
</parameter_description>
</parameter>
</parameters>
</enum>

<property name="GdkCursor:fallback">
<description>
Cursor to fall back to if this cursor cannot be displayed.

</description>
</property>

<property name="GdkCursor:hotspot-x">
<description>
X position of the cursor hotspot in the cursor image.

</description>
</property>

<property name="GdkCursor:hotspot-y">
<description>
Y position of the cursor hotspot in the cursor image.

</description>
</property>

<property name="GdkCursor:name">
<description>
Name of this this cursor.

The name will be %NULL if the cursor was created from a texture.

</description>
</property>

<property name="GdkCursor:texture">
<description>
The texture displayed by this cursor.

The texture will be %NULL if the cursor was created from a name.

</description>
</property>

<signal name="GdkDevice::changed">
<description>
Emitted either when the number of either axes or keys changes.

On X11 this will normally happen when the physical device
routing events through the logical device changes (for
example, user switches from the USB mouse to a tablet); in
that case the logical device will change to reflect the axes
and keys on the new physical device.

</description>
<parameters>
<parameter name="device">
<parameter_description> the `GdkDevice`
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<signal name="GdkDevice::tool-changed">
<description>
Emitted on pen/eraser devices whenever tools enter or leave proximity.

</description>
<parameters>
<parameter name="device">
<parameter_description> the `GdkDevice`
</parameter_description>
</parameter>
<parameter name="tool">
<parameter_description> The new current tool
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<property name="GdkDevice:caps-lock-state">
<description>
Whether Caps Lock is on.

This is only relevant for keyboard devices.

</description>
</property>

<property name="GdkDevice:direction">
<description>
The direction of the current layout.

This is only relevant for keyboard devices.

</description>
</property>

<property name="GdkDevice:display">
<description>
The `GdkDisplay` the `GdkDevice` pertains to.

</description>
</property>

<property name="GdkDevice:has-bidi-layouts">
<description>
Whether the device has both right-to-left and left-to-right layouts.

This is only relevant for keyboard devices.

</description>
</property>

<property name="GdkDevice:has-cursor">
<description>
Whether the device is represented by a cursor on the screen.

</description>
</property>

<property name="GdkDevice:modifier-state">
<description>
The current modifier state of the device.

This is only relevant for keyboard devices.

</description>
</property>

<property name="GdkDevice:n-axes">
<description>
Number of axes in the device.

</description>
</property>

<property name="GdkDevice:name">
<description>
The device name.

</description>
</property>

<property name="GdkDevice:num-lock-state">
<description>
Whether Num Lock is on.

This is only relevant for keyboard devices.

</description>
</property>

<property name="GdkDevice:num-touches">
<description>
The maximal number of concurrent touches on a touch device.

Will be 0 if the device is not a touch device or if the number
of touches is unknown.

</description>
</property>

<property name="GdkDevice:product-id">
<description>
Product ID of this device.

See [method@Gdk.Device.get_product_id].

</description>
</property>

<property name="GdkDevice:scroll-lock-state">
<description>
Whether Scroll Lock is on.

This is only relevant for keyboard devices.

</description>
</property>

<property name="GdkDevice:seat">
<description>
`GdkSeat` of this device.

</description>
</property>

<property name="GdkDevice:source">
<description>
Source type for the device.

</description>
</property>

<property name="GdkDevice:tool">
<description>
The `GdkDeviceTool` that is currently used with this device.

</description>
</property>

<property name="GdkDevice:vendor-id">
<description>
Vendor ID of this device.

See [method@Gdk.Device.get_vendor_id].

</description>
</property>

<enum name="GdkDevicePadFeature">
<description>
A pad feature.

</description>
<parameters>
<parameter name="GDK_DEVICE_PAD_FEATURE_BUTTON">
<parameter_description> a button
</parameter_description>
</parameter>
<parameter name="GDK_DEVICE_PAD_FEATURE_RING">
<parameter_description> a ring-shaped interactive area
</parameter_description>
</parameter>
<parameter name="GDK_DEVICE_PAD_FEATURE_STRIP">
<parameter_description> a straight interactive area
</parameter_description>
</parameter>
</parameters>
</enum>

<property name="GdkDeviceTool:axes">
<description>
The axes of the tool.

</description>
</property>

<property name="GdkDeviceTool:hardware-id">
<description>
The hardware ID of the tool.

</description>
</property>

<property name="GdkDeviceTool:serial">
<description>
The serial number of the tool.

</description>
</property>

<property name="GdkDeviceTool:tool-type">
<description>
The type of the tool.

</description>
</property>

<enum name="GdkDeviceToolType">
<description>
Indicates the specific type of tool being used being a tablet. Such as an
airbrush, pencil, etc.

</description>
<parameters>
<parameter name="GDK_DEVICE_TOOL_TYPE_UNKNOWN">
<parameter_description> Tool is of an unknown type.
</parameter_description>
</parameter>
<parameter name="GDK_DEVICE_TOOL_TYPE_PEN">
<parameter_description> Tool is a standard tablet stylus.
</parameter_description>
</parameter>
<parameter name="GDK_DEVICE_TOOL_TYPE_ERASER">
<parameter_description> Tool is standard tablet eraser.
</parameter_description>
</parameter>
<parameter name="GDK_DEVICE_TOOL_TYPE_BRUSH">
<parameter_description> Tool is a brush stylus.
</parameter_description>
</parameter>
<parameter name="GDK_DEVICE_TOOL_TYPE_PENCIL">
<parameter_description> Tool is a pencil stylus.
</parameter_description>
</parameter>
<parameter name="GDK_DEVICE_TOOL_TYPE_AIRBRUSH">
<parameter_description> Tool is an airbrush stylus.
</parameter_description>
</parameter>
<parameter name="GDK_DEVICE_TOOL_TYPE_MOUSE">
<parameter_description> Tool is a mouse.
</parameter_description>
</parameter>
<parameter name="GDK_DEVICE_TOOL_TYPE_LENS">
<parameter_description> Tool is a lens cursor.
</parameter_description>
</parameter>
</parameters>
</enum>

<signal name="GdkDisplay::closed">
<description>
Emitted when the connection to the windowing system for @display is closed.

</description>
<parameters>
<parameter name="display">
<parameter_description> the object on which the signal is emitted
</parameter_description>
</parameter>
<parameter name="is_error">
<parameter_description> %TRUE if the display was closed due to an error
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<signal name="GdkDisplay::opened">
<description>
Emitted when the connection to the windowing system for @display is opened.

</description>
<parameters>
<parameter name="display">
<parameter_description> the object on which the signal is emitted
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<signal name="GdkDisplay::seat-added">
<description>
Emitted whenever a new seat is made known to the windowing system.

</description>
<parameters>
<parameter name="display">
<parameter_description> the object on which the signal is emitted
</parameter_description>
</parameter>
<parameter name="seat">
<parameter_description> the seat that was just added
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<signal name="GdkDisplay::seat-removed">
<description>
Emitted whenever a seat is removed by the windowing system.

</description>
<parameters>
<parameter name="display">
<parameter_description> the object on which the signal is emitted
</parameter_description>
</parameter>
<parameter name="seat">
<parameter_description> the seat that was just removed
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<signal name="GdkDisplay::setting-changed">
<description>
Emitted whenever a setting changes its value.

</description>
<parameters>
<parameter name="display">
<parameter_description> the object on which the signal is emitted
</parameter_description>
</parameter>
<parameter name="setting">
<parameter_description> the name of the setting that changed
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<property name="GdkDisplay:composited">
<description>
%TRUE if the display properly composites the alpha channel.

</description>
</property>

<property name="GdkDisplay:dmabuf-formats">
<description>
The dma-buf formats that are supported on this display

Since: 4.14

</description>
</property>

<property name="GdkDisplay:input-shapes">
<description>
%TRUE if the display supports input shapes.

</description>
</property>

<property name="GdkDisplay:rgba">
<description>
%TRUE if the display supports an alpha channel.

</description>
</property>

<property name="GdkDisplay:shadow-width">
<description>
%TRUE if the display supports extensible frames.

Since: 4.14

</description>
</property>

<signal name="GdkDisplayManager::display-opened">
<description>
Emitted when a display is opened.

</description>
<parameters>
<parameter name="manager">
<parameter_description> the object on which the signal is emitted
</parameter_description>
</parameter>
<parameter name="display">
<parameter_description> the opened display
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<property name="GdkDisplayManager:default-display">
<description>
The default display.

</description>
</property>

<enum name="GdkDmabufError">
<description>
Error enumeration for `GdkDmabufTexture`.

Since: 4.14

</description>
<parameters>
<parameter name="GDK_DMABUF_ERROR_NOT_AVAILABLE">
<parameter_description> Dmabuf support is not available, because the OS
is not Linux, or it was explicitly disabled at compile- or runtime
</parameter_description>
</parameter>
<parameter name="GDK_DMABUF_ERROR_UNSUPPORTED_FORMAT">
<parameter_description> The requested format is not supported
</parameter_description>
</parameter>
<parameter name="GDK_DMABUF_ERROR_CREATION_FAILED">
<parameter_description> GTK failed to create the resource for other
reasons
</parameter_description>
</parameter>
</parameters>
</enum>

<property name="GdkDmabufTextureBuilder:display">
<description>
The display that this texture will be used on.

Since: 4.14

</description>
</property>

<property name="GdkDmabufTextureBuilder:fourcc">
<description>
The format of the texture, as a fourcc value.

Since: 4.14

</description>
</property>

<property name="GdkDmabufTextureBuilder:height">
<description>
The height of the texture.

Since: 4.14

</description>
</property>

<property name="GdkDmabufTextureBuilder:modifier">
<description>
The modifier.

Since: 4.14

</description>
</property>

<property name="GdkDmabufTextureBuilder:n-planes">
<description>
The number of planes of the texture.

Note that you can set properties for other planes,
but they will be ignored when constructing the texture.

Since: 4.14

</description>
</property>

<property name="GdkDmabufTextureBuilder:premultiplied">
<description>
Whether the alpha channel is premultiplied into the others.

Only relevant if the format has alpha.

Since: 4.14

</description>
</property>

<property name="GdkDmabufTextureBuilder:update-region">
<description>
The update region for [property@Gdk.GLTextureBuilder:update-texture].

Since: 4.14

</description>
</property>

<property name="GdkDmabufTextureBuilder:update-texture">
<description>
The texture [property@Gdk.DmabufTextureBuilder:update-region] is an update for.

Since: 4.14

</description>
</property>

<property name="GdkDmabufTextureBuilder:width">
<description>
The width of the texture.

Since: 4.14

</description>
</property>

<signal name="GdkDrag::cancel">
<description>
Emitted when the drag operation is cancelled.

</description>
<parameters>
<parameter name="drag">
<parameter_description> The object on which the signal is emitted
</parameter_description>
</parameter>
<parameter name="reason">
<parameter_description> The reason the drag was cancelled
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<signal name="GdkDrag::dnd-finished">
<description>
Emitted when the destination side has finished reading all data.

The drag object can now free all miscellaneous data.

</description>
<parameters>
<parameter name="drag">
<parameter_description> The object on which the signal is emitted
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<signal name="GdkDrag::drop-performed">
<description>
Emitted when the drop operation is performed on an accepting client.

</description>
<parameters>
<parameter name="drag">
<parameter_description> The object on which the signal is emitted
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<property name="GdkDrag:actions">
<description>
The possible actions of this drag.

</description>
</property>

<property name="GdkDrag:content">
<description>
The `GdkContentProvider`.

</description>
</property>

<property name="GdkDrag:device">
<description>
The `GdkDevice` that is performing the drag.

</description>
</property>

<property name="GdkDrag:display">
<description>
The `GdkDisplay` that the drag belongs to.

</description>
</property>

<property name="GdkDrag:formats">
<description>
The possible formats that the drag can provide its data in.

</description>
</property>

<property name="GdkDrag:selected-action">
<description>
The currently selected action of the drag.

</description>
</property>

<property name="GdkDrag:surface">
<description>
The surface where the drag originates.

</description>
</property>

<enum name="GdkDragAction">
<description>
Used in `GdkDrop` and `GdkDrag` to indicate the actions that the
destination can and should do with the dropped data.

</description>
<parameters>
<parameter name="GDK_ACTION_COPY">
<parameter_description> Copy the data.
</parameter_description>
</parameter>
<parameter name="GDK_ACTION_MOVE">
<parameter_description> Move the data, i.e. first copy it, then delete
it from the source using the DELETE target of the X selection protocol.
</parameter_description>
</parameter>
<parameter name="GDK_ACTION_LINK">
<parameter_description> Add a link to the data. Note that this is only
useful if source and destination agree on what it means, and is not
supported on all platforms.
</parameter_description>
</parameter>
<parameter name="GDK_ACTION_ASK">
<parameter_description> Ask the user what to do with the data.
</parameter_description>
</parameter>
</parameters>
</enum>

<enum name="GdkDragCancelReason">
<description>
Used in `GdkDrag` to the reason of a cancelled DND operation.

</description>
<parameters>
<parameter name="GDK_DRAG_CANCEL_NO_TARGET">
<parameter_description> There is no suitable drop target.
</parameter_description>
</parameter>
<parameter name="GDK_DRAG_CANCEL_USER_CANCELLED">
<parameter_description> Drag cancelled by the user
</parameter_description>
</parameter>
<parameter name="GDK_DRAG_CANCEL_ERROR">
<parameter_description> Unspecified error.
</parameter_description>
</parameter>
</parameters>
</enum>

<signal name="GdkDragSurface::compute-size">
<description>
Emitted when the size for the surface needs to be computed, when it is
present.

This signal will normally be emitted during the native surface layout
cycle when the surface size needs to be recomputed.

It is the responsibility of the drag surface user to handle this signal
and compute the desired size of the surface, storing the computed size
in the [struct@Gdk.DragSurfaceSize] object that is passed to the signal
handler, using [method@Gdk.DragSurfaceSize.set_size].

Failing to set a size so will result in an arbitrary size being used as
a result.

Since: 4.12

</description>
<parameters>
<parameter name="surface">
<parameter_description> a `GdkDragSurface`
</parameter_description>
</parameter>
<parameter name="size">
<parameter_description> the size of the drag surface
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<property name="GdkDrawContext:display">
<description>
The `GdkDisplay` used to create the `GdkDrawContext`.

</description>
</property>

<property name="GdkDrawContext:surface">
<description>
The `GdkSurface` the context is bound to.

</description>
</property>

<property name="GdkDrop:actions">
<description>
The possible actions for this drop

</description>
</property>

<property name="GdkDrop:device">
<description>
The `GdkDevice` performing the drop

</description>
</property>

<property name="GdkDrop:display">
<description>
The `GdkDisplay` that the drop belongs to.

</description>
</property>

<property name="GdkDrop:drag">
<description>
The `GdkDrag` that initiated this drop

</description>
</property>

<property name="GdkDrop:formats">
<description>
The possible formats that the drop can provide its data in.

</description>
</property>

<property name="GdkDrop:surface">
<description>
The `GdkSurface` the drop happens on

</description>
</property>

<enum name="GdkEventType">
<description>
Specifies the type of the event.

</description>
<parameters>
<parameter name="GDK_DELETE">
<parameter_description> the window manager has requested that the toplevel surface be
hidden or destroyed, usually when the user clicks on a special icon in the
title bar.
</parameter_description>
</parameter>
<parameter name="GDK_MOTION_NOTIFY">
<parameter_description> the pointer (usually a mouse) has moved.
</parameter_description>
</parameter>
<parameter name="GDK_BUTTON_PRESS">
<parameter_description> a mouse button has been pressed.
</parameter_description>
</parameter>
<parameter name="GDK_BUTTON_RELEASE">
<parameter_description> a mouse button has been released.
</parameter_description>
</parameter>
<parameter name="GDK_KEY_PRESS">
<parameter_description> a key has been pressed.
</parameter_description>
</parameter>
<parameter name="GDK_KEY_RELEASE">
<parameter_description> a key has been released.
</parameter_description>
</parameter>
<parameter name="GDK_ENTER_NOTIFY">
<parameter_description> the pointer has entered the surface.
</parameter_description>
</parameter>
<parameter name="GDK_LEAVE_NOTIFY">
<parameter_description> the pointer has left the surface.
</parameter_description>
</parameter>
<parameter name="GDK_FOCUS_CHANGE">
<parameter_description> the keyboard focus has entered or left the surface.
</parameter_description>
</parameter>
<parameter name="GDK_PROXIMITY_IN">
<parameter_description> an input device has moved into contact with a sensing
surface (e.g. a touchscreen or graphics tablet).
</parameter_description>
</parameter>
<parameter name="GDK_PROXIMITY_OUT">
<parameter_description> an input device has moved out of contact with a sensing
surface.
</parameter_description>
</parameter>
<parameter name="GDK_DRAG_ENTER">
<parameter_description> the mouse has entered the surface while a drag is in progress.
</parameter_description>
</parameter>
<parameter name="GDK_DRAG_LEAVE">
<parameter_description> the mouse has left the surface while a drag is in progress.
</parameter_description>
</parameter>
<parameter name="GDK_DRAG_MOTION">
<parameter_description> the mouse has moved in the surface while a drag is in
progress.
</parameter_description>
</parameter>
<parameter name="GDK_DROP_START">
<parameter_description> a drop operation onto the surface has started.
</parameter_description>
</parameter>
<parameter name="GDK_SCROLL">
<parameter_description> the scroll wheel was turned
</parameter_description>
</parameter>
<parameter name="GDK_GRAB_BROKEN">
<parameter_description> a pointer or keyboard grab was broken.
</parameter_description>
</parameter>
<parameter name="GDK_TOUCH_BEGIN">
<parameter_description> A new touch event sequence has just started.
</parameter_description>
</parameter>
<parameter name="GDK_TOUCH_UPDATE">
<parameter_description> A touch event sequence has been updated.
</parameter_description>
</parameter>
<parameter name="GDK_TOUCH_END">
<parameter_description> A touch event sequence has finished.
</parameter_description>
</parameter>
<parameter name="GDK_TOUCH_CANCEL">
<parameter_description> A touch event sequence has been canceled.
</parameter_description>
</parameter>
<parameter name="GDK_TOUCHPAD_SWIPE">
<parameter_description> A touchpad swipe gesture event, the current state
is determined by its phase field.
</parameter_description>
</parameter>
<parameter name="GDK_TOUCHPAD_PINCH">
<parameter_description> A touchpad pinch gesture event, the current state
is determined by its phase field.
</parameter_description>
</parameter>
<parameter name="GDK_PAD_BUTTON_PRESS">
<parameter_description> A tablet pad button press event.
</parameter_description>
</parameter>
<parameter name="GDK_PAD_BUTTON_RELEASE">
<parameter_description> A tablet pad button release event.
</parameter_description>
</parameter>
<parameter name="GDK_PAD_RING">
<parameter_description> A tablet pad axis event from a &quot;ring&quot;.
</parameter_description>
</parameter>
<parameter name="GDK_PAD_STRIP">
<parameter_description> A tablet pad axis event from a &quot;strip&quot;.
</parameter_description>
</parameter>
<parameter name="GDK_PAD_GROUP_MODE">
<parameter_description> A tablet pad group mode change.
</parameter_description>
</parameter>
<parameter name="GDK_EVENT_LAST">
<parameter_description> marks the end of the GdkEventType enumeration.
</parameter_description>
</parameter>
</parameters>
</enum>

<signal name="GdkFrameClock::after-paint">
<description>
This signal ends processing of the frame.

Applications should generally not handle this signal.

</description>
<parameters>
<parameter name="clock">
<parameter_description> the frame clock emitting the signal
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<signal name="GdkFrameClock::before-paint">
<description>
Begins processing of the frame.

Applications should generally not handle this signal.

</description>
<parameters>
<parameter name="clock">
<parameter_description> the frame clock emitting the signal
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<signal name="GdkFrameClock::flush-events">
<description>
Used to flush pending motion events that are being batched up and
compressed together.

Applications should not handle this signal.

</description>
<parameters>
<parameter name="clock">
<parameter_description> the frame clock emitting the signal
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<signal name="GdkFrameClock::layout">
<description>
Emitted as the second step of toolkit and application processing
of the frame.

Any work to update sizes and positions of application elements
should be performed. GTK normally handles this internally.

</description>
<parameters>
<parameter name="clock">
<parameter_description> the frame clock emitting the signal
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<signal name="GdkFrameClock::paint">
<description>
Emitted as the third step of toolkit and application processing
of the frame.

The frame is repainted. GDK normally handles this internally and
emits [signal@Gdk.Surface::render] signals which are turned into
[GtkWidget::snapshot](../gtk4/signal.Widget.snapshot.html) signals
by GTK.

</description>
<parameters>
<parameter name="clock">
<parameter_description> the frame clock emitting the signal
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<signal name="GdkFrameClock::resume-events">
<description>
Emitted after processing of the frame is finished.

This signal is handled internally by GTK to resume normal
event processing. Applications should not handle this signal.

</description>
<parameters>
<parameter name="clock">
<parameter_description> the frame clock emitting the signal
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<signal name="GdkFrameClock::update">
<description>
Emitted as the first step of toolkit and application processing
of the frame.

Animations should be updated using [method@Gdk.FrameClock.get_frame_time].
Applications can connect directly to this signal, or use
[gtk_widget_add_tick_callback()](../gtk4/method.Widget.add_tick_callback.html)
as a more convenient interface.

</description>
<parameters>
<parameter name="clock">
<parameter_description> the frame clock emitting the signal
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<enum name="GdkFrameClockPhase">
<description>
Used to represent the different paint clock phases that can be requested.

The elements of the enumeration correspond to the signals of `GdkFrameClock`.

</description>
<parameters>
<parameter name="GDK_FRAME_CLOCK_PHASE_NONE">
<parameter_description> no phase
</parameter_description>
</parameter>
<parameter name="GDK_FRAME_CLOCK_PHASE_FLUSH_EVENTS">
<parameter_description> corresponds to GdkFrameClock::flush-events. Should not be handled by applications.
</parameter_description>
</parameter>
<parameter name="GDK_FRAME_CLOCK_PHASE_BEFORE_PAINT">
<parameter_description> corresponds to GdkFrameClock::before-paint. Should not be handled by applications.
</parameter_description>
</parameter>
<parameter name="GDK_FRAME_CLOCK_PHASE_UPDATE">
<parameter_description> corresponds to GdkFrameClock::update.
</parameter_description>
</parameter>
<parameter name="GDK_FRAME_CLOCK_PHASE_LAYOUT">
<parameter_description> corresponds to GdkFrameClock::layout. Should not be handled by applications.
</parameter_description>
</parameter>
<parameter name="GDK_FRAME_CLOCK_PHASE_PAINT">
<parameter_description> corresponds to GdkFrameClock::paint.
</parameter_description>
</parameter>
<parameter name="GDK_FRAME_CLOCK_PHASE_RESUME_EVENTS">
<parameter_description> corresponds to GdkFrameClock::resume-events. Should not be handled by applications.
</parameter_description>
</parameter>
<parameter name="GDK_FRAME_CLOCK_PHASE_AFTER_PAINT">
<parameter_description> corresponds to GdkFrameClock::after-paint. Should not be handled by applications.
</parameter_description>
</parameter>
</parameters>
</enum>

<enum name="GdkFullscreenMode">
<description>
Indicates which monitor a surface should span over when in fullscreen mode.

</description>
<parameters>
<parameter name="GDK_FULLSCREEN_ON_CURRENT_MONITOR">
<parameter_description> Fullscreen on current monitor only.
</parameter_description>
</parameter>
<parameter name="GDK_FULLSCREEN_ON_ALL_MONITORS">
<parameter_description> Span across all monitors when fullscreen.
</parameter_description>
</parameter>
</parameters>
</enum>

<enum name="GdkGLAPI">
<description>
The list of the different APIs that GdkGLContext can potentially support.

Since: 4.6

</description>
<parameters>
<parameter name="GDK_GL_API_GL">
<parameter_description> The OpenGL API
</parameter_description>
</parameter>
<parameter name="GDK_GL_API_GLES">
<parameter_description> The OpenGL ES API
</parameter_description>
</parameter>
</parameters>
</enum>

<property name="GdkGLContext:allowed-apis">
<description>
The allowed APIs.

Since: 4.6

</description>
</property>

<property name="GdkGLContext:api">
<description>
The API currently in use.

Since: 4.6

</description>
</property>

<property name="GdkGLContext:shared-context">
<description>
Always %NULL

As many contexts can share data now and no single shared context exists
anymore, this function has been deprecated and now always returns %NULL.

Deprecated: 4.4: Use [method@Gdk.GLContext.is_shared] to check if contexts
can be shared.

</description>
</property>

<enum name="GdkGLError">
<description>
Error enumeration for `GdkGLContext`.

</description>
<parameters>
<parameter name="GDK_GL_ERROR_NOT_AVAILABLE">
<parameter_description> OpenGL support is not available
</parameter_description>
</parameter>
<parameter name="GDK_GL_ERROR_UNSUPPORTED_FORMAT">
<parameter_description> The requested visual format is not supported
</parameter_description>
</parameter>
<parameter name="GDK_GL_ERROR_UNSUPPORTED_PROFILE">
<parameter_description> The requested profile is not supported
</parameter_description>
</parameter>
<parameter name="GDK_GL_ERROR_COMPILATION_FAILED">
<parameter_description> The shader compilation failed
</parameter_description>
</parameter>
<parameter name="GDK_GL_ERROR_LINK_FAILED">
<parameter_description> The shader linking failed
</parameter_description>
</parameter>
</parameters>
</enum>

<property name="GdkGLTextureBuilder:context">
<description>
The context owning the texture.

Since: 4.12

</description>
</property>

<property name="GdkGLTextureBuilder:format">
<description>
The format when downloading the texture.

Since: 4.12

</description>
</property>

<property name="GdkGLTextureBuilder:has-mipmap">
<description>
If the texture has a mipmap.

Since: 4.12

</description>
</property>

<property name="GdkGLTextureBuilder:height">
<description>
The height of the texture.

Since: 4.12

</description>
</property>

<property name="GdkGLTextureBuilder:id">
<description>
The texture ID to use.

Since: 4.12

</description>
</property>

<property name="GdkGLTextureBuilder:sync">
<description>
An optional `GLSync` object.

If this is set, GTK will wait on it before using the texture.

Since: 4.12

</description>
</property>

<property name="GdkGLTextureBuilder:update-region">
<description>
The update region for [property@Gdk.GLTextureBuilder:update-texture].

Since: 4.12

</description>
</property>

<property name="GdkGLTextureBuilder:update-texture">
<description>
The texture [property@Gdk.GLTextureBuilder:update-region] is an update for.

Since: 4.12

</description>
</property>

<property name="GdkGLTextureBuilder:width">
<description>
The width of the texture.

Since: 4.12

</description>
</property>

<enum name="GdkGravity">
<description>
Defines the reference point of a surface and is used in `GdkPopupLayout`.

</description>
<parameters>
<parameter name="GDK_GRAVITY_NORTH_WEST">
<parameter_description> the reference point is at the top left corner.
</parameter_description>
</parameter>
<parameter name="GDK_GRAVITY_NORTH">
<parameter_description> the reference point is in the middle of the top edge.
</parameter_description>
</parameter>
<parameter name="GDK_GRAVITY_NORTH_EAST">
<parameter_description> the reference point is at the top right corner.
</parameter_description>
</parameter>
<parameter name="GDK_GRAVITY_WEST">
<parameter_description> the reference point is at the middle of the left edge.
</parameter_description>
</parameter>
<parameter name="GDK_GRAVITY_CENTER">
<parameter_description> the reference point is at the center of the surface.
</parameter_description>
</parameter>
<parameter name="GDK_GRAVITY_EAST">
<parameter_description> the reference point is at the middle of the right edge.
</parameter_description>
</parameter>
<parameter name="GDK_GRAVITY_SOUTH_WEST">
<parameter_description> the reference point is at the lower left corner.
</parameter_description>
</parameter>
<parameter name="GDK_GRAVITY_SOUTH">
<parameter_description> the reference point is at the middle of the lower edge.
</parameter_description>
</parameter>
<parameter name="GDK_GRAVITY_SOUTH_EAST">
<parameter_description> the reference point is at the lower right corner.
</parameter_description>
</parameter>
<parameter name="GDK_GRAVITY_STATIC">
<parameter_description> the reference point is at the top left corner of the
surface itself, ignoring window manager decorations.
</parameter_description>
</parameter>
</parameters>
</enum>

<enum name="GdkInputSource">
<description>
An enumeration describing the type of an input device in general terms.

</description>
<parameters>
<parameter name="GDK_SOURCE_MOUSE">
<parameter_description> the device is a mouse. (This will be reported for the core
pointer, even if it is something else, such as a trackball.)
</parameter_description>
</parameter>
<parameter name="GDK_SOURCE_PEN">
<parameter_description> the device is a stylus of a graphics tablet or similar device.
</parameter_description>
</parameter>
<parameter name="GDK_SOURCE_KEYBOARD">
<parameter_description> the device is a keyboard.
</parameter_description>
</parameter>
<parameter name="GDK_SOURCE_TOUCHSCREEN">
<parameter_description> the device is a direct-input touch device, such
as a touchscreen or tablet
</parameter_description>
</parameter>
<parameter name="GDK_SOURCE_TOUCHPAD">
<parameter_description> the device is an indirect touch device, such
as a touchpad
</parameter_description>
</parameter>
<parameter name="GDK_SOURCE_TRACKPOINT">
<parameter_description> the device is a trackpoint
</parameter_description>
</parameter>
<parameter name="GDK_SOURCE_TABLET_PAD">
<parameter_description> the device is a &quot;pad&quot;, a collection of buttons,
rings and strips found in drawing tablets
</parameter_description>
</parameter>
</parameters>
</enum>

<enum name="GdkInterpType">
<description>
Interpolation modes for scaling functions.

The `GDK_INTERP_NEAREST` mode is the fastest scaling method, but has
horrible quality when scaling down; `GDK_INTERP_BILINEAR` is the best
choice if you aren't sure what to choose, it has a good speed/quality
balance.

**Note**: Cubic filtering is missing from the list; hyperbolic
interpolation is just as fast and results in higher quality.

</description>
<parameters>
<parameter name="GDK_INTERP_NEAREST">
<parameter_description> Nearest neighbor sampling; this is the fastest
and lowest quality mode. Quality is normally unacceptable when scaling 
down, but may be OK when scaling up.
</parameter_description>
</parameter>
<parameter name="GDK_INTERP_TILES">
<parameter_description> This is an accurate simulation of the PostScript
image operator without any interpolation enabled.  Each pixel is
rendered as a tiny parallelogram of solid color, the edges of which
are implemented with antialiasing.  It resembles nearest neighbor for
enlargement, and bilinear for reduction.
</parameter_description>
</parameter>
<parameter name="GDK_INTERP_BILINEAR">
<parameter_description> Best quality/speed balance; use this mode by
default. Bilinear interpolation.  For enlargement, it is
equivalent to point-sampling the ideal bilinear-interpolated image.
For reduction, it is equivalent to laying down small tiles and
integrating over the coverage area.
</parameter_description>
</parameter>
<parameter name="GDK_INTERP_HYPER">
<parameter_description> This is the slowest and highest quality
reconstruction function. It is derived from the hyperbolic filters in
Wolberg's &quot;Digital Image Warping&quot;, and is formally defined as the
hyperbolic-filter sampling the ideal hyperbolic-filter interpolated
image (the filter is designed to be idempotent for 1:1 pixel mapping).
**Deprecated**: this interpolation filter is deprecated, as in reality
it has a lower quality than the @GDK_INTERP_BILINEAR filter
(Since: 2.38)
</parameter_description>
</parameter>
</parameters>
</enum>

<enum name="GdkKeyMatch">
<description>
Describes how well an event matches a given keyval and modifiers.

`GdkKeyMatch` values are returned by [method@Gdk.KeyEvent.matches].

</description>
<parameters>
<parameter name="GDK_KEY_MATCH_NONE">
<parameter_description> The key event does not match
</parameter_description>
</parameter>
<parameter name="GDK_KEY_MATCH_PARTIAL">
<parameter_description> The key event matches if keyboard state
(specifically, the currently active group) is ignored
</parameter_description>
</parameter>
<parameter name="GDK_KEY_MATCH_EXACT">
<parameter_description> The key event matches
</parameter_description>
</parameter>
</parameters>
</enum>

<signal name="GdkKeymap::direction-changed">
<description>
Emitted when the direction of the keymap changes.

See gdk_keymap_get_direction().

</description>
<parameters>
<parameter name="keymap">
<parameter_description> the object on which the signal is emitted
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<signal name="GdkKeymap::keys-changed">
<description>
The ::keys-changed signal is emitted when the mapping represented by
@keymap changes.

</description>
<parameters>
<parameter name="keymap">
<parameter_description> the object on which the signal is emitted
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<signal name="GdkKeymap::state-changed">
<description>
The ::state-changed signal is emitted when the state of the
keyboard changes, e.g when Caps Lock is turned on or off.
See gdk_keymap_get_caps_lock_state().

</description>
<parameters>
<parameter name="keymap">
<parameter_description> the object on which the signal is emitted
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<enum name="GdkMemoryFormat">
<description>
`GdkMemoryFormat` describes formats that image data can have in memory.

It describes formats by listing the contents of the memory passed to it.
So `GDK_MEMORY_A8R8G8B8` will be 1 byte (8 bits) of alpha, followed by a
byte each of red, green and blue. It is not endian-dependent, so
`CAIRO_FORMAT_ARGB32` is represented by different `GdkMemoryFormats`
on architectures with different endiannesses.

Its naming is modelled after
[VkFormat](https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkFormat)
for details).

</description>
<parameters>
<parameter name="GDK_MEMORY_B8G8R8A8_PREMULTIPLIED">
<parameter_description> 4 bytes; for blue, green, red, alpha.
The color values are premultiplied with the alpha value.
</parameter_description>
</parameter>
<parameter name="GDK_MEMORY_A8R8G8B8_PREMULTIPLIED">
<parameter_description> 4 bytes; for alpha, red, green, blue.
The color values are premultiplied with the alpha value.
</parameter_description>
</parameter>
<parameter name="GDK_MEMORY_R8G8B8A8_PREMULTIPLIED">
<parameter_description> 4 bytes; for red, green, blue, alpha
The color values are premultiplied with the alpha value.
</parameter_description>
</parameter>
<parameter name="GDK_MEMORY_B8G8R8A8">
<parameter_description> 4 bytes; for blue, green, red, alpha.
</parameter_description>
</parameter>
<parameter name="GDK_MEMORY_A8R8G8B8">
<parameter_description> 4 bytes; for alpha, red, green, blue.
</parameter_description>
</parameter>
<parameter name="GDK_MEMORY_R8G8B8A8">
<parameter_description> 4 bytes; for red, green, blue, alpha.
</parameter_description>
</parameter>
<parameter name="GDK_MEMORY_A8B8G8R8">
<parameter_description> 4 bytes; for alpha, blue, green, red.
</parameter_description>
</parameter>
<parameter name="GDK_MEMORY_R8G8B8">
<parameter_description> 3 bytes; for red, green, blue. The data is opaque.
</parameter_description>
</parameter>
<parameter name="GDK_MEMORY_B8G8R8">
<parameter_description> 3 bytes; for blue, green, red. The data is opaque.
</parameter_description>
</parameter>
<parameter name="GDK_MEMORY_N_FORMATS">
<parameter_description> The number of formats. This value will change as
more formats get added, so do not rely on its concrete integer.
</parameter_description>
</parameter>
<parameter name="GDK_MEMORY_R32G32B32_FLOAT">
<parameter_description> 3 float values; for red, green, blue.
</parameter_description>
</parameter>
</parameters>
</enum>

<enum name="GdkModifierType">
<description>
Flags to indicate the state of modifier keys and mouse buttons
in events.

Typical modifier keys are Shift, Control, Meta, Super, Hyper, Alt, Compose,
Apple, CapsLock or ShiftLock.

Note that GDK may add internal values to events which include values outside
of this enumeration. Your code should preserve and ignore them.  You can use
%GDK_MODIFIER_MASK to remove all private values.

</description>
<parameters>
<parameter name="GDK_SHIFT_MASK">
<parameter_description> the Shift key.
</parameter_description>
</parameter>
<parameter name="GDK_LOCK_MASK">
<parameter_description> a Lock key (depending on the modifier mapping of the
X server this may either be CapsLock or ShiftLock).
</parameter_description>
</parameter>
<parameter name="GDK_CONTROL_MASK">
<parameter_description> the Control key.
</parameter_description>
</parameter>
<parameter name="GDK_ALT_MASK">
<parameter_description> the fourth modifier key (it depends on the modifier
mapping of the X server which key is interpreted as this modifier, but
normally it is the Alt key).
</parameter_description>
</parameter>
<parameter name="GDK_BUTTON1_MASK">
<parameter_description> the first mouse button.
</parameter_description>
</parameter>
<parameter name="GDK_BUTTON2_MASK">
<parameter_description> the second mouse button.
</parameter_description>
</parameter>
<parameter name="GDK_BUTTON3_MASK">
<parameter_description> the third mouse button.
</parameter_description>
</parameter>
<parameter name="GDK_BUTTON4_MASK">
<parameter_description> the fourth mouse button.
</parameter_description>
</parameter>
<parameter name="GDK_BUTTON5_MASK">
<parameter_description> the fifth mouse button.
</parameter_description>
</parameter>
<parameter name="GDK_SUPER_MASK">
<parameter_description> the Super modifier
</parameter_description>
</parameter>
<parameter name="GDK_HYPER_MASK">
<parameter_description> the Hyper modifier
</parameter_description>
</parameter>
<parameter name="GDK_META_MASK">
<parameter_description> the Meta modifier
</parameter_description>
</parameter>
</parameters>
</enum>

<signal name="GdkMonitor::invalidate">
<description>
Emitted when the output represented by @monitor gets disconnected.

</description>
<parameters>
<parameter name="monitor">
<parameter_description> the object on which this signal was emitted
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<property name="GdkMonitor:connector">
<description>
The connector name.

</description>
</property>

<property name="GdkMonitor:description">
<description>
A short description of the monitor, meant for display to the user.

Since: 4.10

</description>
</property>

<property name="GdkMonitor:display">
<description>
The `GdkDisplay` of the monitor.

</description>
</property>

<property name="GdkMonitor:geometry">
<description>
The geometry of the monitor.

</description>
</property>

<property name="GdkMonitor:height-mm">
<description>
The height of the monitor, in millimeters.

</description>
</property>

<property name="GdkMonitor:manufacturer">
<description>
The manufacturer name.

</description>
</property>

<property name="GdkMonitor:model">
<description>
The model name.

</description>
</property>

<property name="GdkMonitor:refresh-rate">
<description>
The refresh rate, in milli-Hertz.

</description>
</property>

<property name="GdkMonitor:scale">
<description>
The scale of the monitor.

Since: 4.14

</description>
</property>

<property name="GdkMonitor:scale-factor">
<description>
The scale factor.

The scale factor is the next larger integer,
compared to [property@Gdk.Surface:scale].

</description>
</property>

<property name="GdkMonitor:subpixel-layout">
<description>
The subpixel layout.

</description>
</property>

<property name="GdkMonitor:valid">
<description>
Whether the object is still valid.

</description>
</property>

<property name="GdkMonitor:width-mm">
<description>
The width of the monitor, in millimeters.

</description>
</property>

<enum name="GdkNotifyType">
<description>
Specifies the kind of crossing for enter and leave events.

See the X11 protocol specification of LeaveNotify for
full details of crossing event generation.

</description>
<parameters>
<parameter name="GDK_NOTIFY_ANCESTOR">
<parameter_description> the surface is entered from an ancestor or
left towards an ancestor.
</parameter_description>
</parameter>
<parameter name="GDK_NOTIFY_VIRTUAL">
<parameter_description> the pointer moves between an ancestor and an
inferior of the surface.
</parameter_description>
</parameter>
<parameter name="GDK_NOTIFY_INFERIOR">
<parameter_description> the surface is entered from an inferior or
left towards an inferior.
</parameter_description>
</parameter>
<parameter name="GDK_NOTIFY_NONLINEAR">
<parameter_description> the surface is entered from or left towards
a surface which is neither an ancestor nor an inferior.
</parameter_description>
</parameter>
<parameter name="GDK_NOTIFY_NONLINEAR_VIRTUAL">
<parameter_description> the pointer moves between two surfaces
which are not ancestors of each other and the surface is part of
the ancestor chain between one of these surfaces and their least
common ancestor.
</parameter_description>
</parameter>
<parameter name="GDK_NOTIFY_UNKNOWN">
<parameter_description> an unknown type of enter/leave event occurred.
</parameter_description>
</parameter>
</parameters>
</enum>

<signal name="GdkPaintable::invalidate-contents">
<description>
Emitted when the contents of the @paintable change.

Examples for such an event would be videos changing to the next frame or
the icon theme for an icon changing.

</description>
<parameters>
<parameter name="paintable">
<parameter_description> a `GdkPaintable`
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<signal name="GdkPaintable::invalidate-size">
<description>
Emitted when the intrinsic size of the @paintable changes.

This means the values reported by at least one of
[method@Gdk.Paintable.get_intrinsic_width],
[method@Gdk.Paintable.get_intrinsic_height] or
[method@Gdk.Paintable.get_intrinsic_aspect_ratio]
has changed.

Examples for such an event would be a paintable displaying
the contents of a toplevel surface being resized.

</description>
<parameters>
<parameter name="paintable">
<parameter_description> a `GdkPaintable`
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<enum name="GdkPaintableFlags">
<description>
Flags about a paintable object.

Implementations use these for optimizations such as caching.

</description>
<parameters>
<parameter name="GDK_PAINTABLE_STATIC_SIZE">
<parameter_description> The size is immutable.
The [signal@Gdk.Paintable::invalidate-size] signal will never be
emitted.
</parameter_description>
</parameter>
<parameter name="GDK_PAINTABLE_STATIC_CONTENTS">
<parameter_description> The content is immutable.
The [signal@Gdk.Paintable::invalidate-contents] signal will never be
emitted.
</parameter_description>
</parameter>
</parameters>
</enum>

<signal name="GdkPixbuf::pixel-bytes">
<description>
If set, this pixbuf was created from read-only #GBytes.

Replaces GdkPixbuf::pixels.

Since: 2.32

</description>
<parameters>
</parameters>
<return></return>
</signal>

<property name="GdkPixbuf:bits-per-sample">
<description>
The number of bits per sample. 

Currently only 8 bit per sample are supported.

</description>
</property>

<property name="GdkPixbuf:colorspace">
<description>
The color space of the pixbuf.

Currently, only `GDK_COLORSPACE_RGB` is supported.

</description>
</property>

<property name="GdkPixbuf:has-alpha">
<description>
Whether the pixbuf has an alpha channel.

</description>
</property>

<property name="GdkPixbuf:height">
<description>
The number of rows of the pixbuf.

</description>
</property>

<property name="GdkPixbuf:n-channels">
<description>
The number of samples per pixel.

Currently, only 3 or 4 samples per pixel are supported.

</description>
</property>

<property name="GdkPixbuf:pixels">
<description>
A pointer to the pixel data of the pixbuf.

</description>
</property>

<property name="GdkPixbuf:rowstride">
<description>
The number of bytes between the start of a row and 
the start of the next row.

This number must (obviously) be at least as large as the
width of the pixbuf.

</description>
</property>

<property name="GdkPixbuf:width">
<description>
The number of columns of the pixbuf.

</description>
</property>

<enum name="GdkPixbufAlphaMode">
<description>
Control the alpha channel for drawables.

These values can be passed to gdk_pixbuf_xlib_render_to_drawable_alpha()
in gdk-pixbuf-xlib to control how the alpha channel of an image should
be handled.

This function can create a bilevel clipping mask (black and white) and use
it while painting the image.

In the future, when the X Window System gets an alpha channel extension,
it will be possible to do full alpha compositing onto arbitrary drawables.
For now both cases fall back to a bilevel clipping mask.

Deprecated: 2.42: There is no user of GdkPixbufAlphaMode in GdkPixbuf,
and the Xlib utility functions have been split out to their own
library, gdk-pixbuf-xlib

</description>
<parameters>
<parameter name="GDK_PIXBUF_ALPHA_BILEVEL">
<parameter_description> A bilevel clipping mask (black and white)
will be created and used to draw the image.  Pixels below 0.5 opacity
will be considered fully transparent, and all others will be
considered fully opaque.
</parameter_description>
</parameter>
<parameter name="GDK_PIXBUF_ALPHA_FULL">
<parameter_description> For now falls back to #GDK_PIXBUF_ALPHA_BILEVEL.
In the future it will do full alpha compositing.
</parameter_description>
</parameter>
</parameters>
</enum>

<enum name="GdkPixbufError">
<description>
An error code in the `GDK_PIXBUF_ERROR` domain.

Many gdk-pixbuf operations can cause errors in this domain, or in
the `G_FILE_ERROR` domain.

</description>
<parameters>
<parameter name="GDK_PIXBUF_ERROR_CORRUPT_IMAGE">
<parameter_description> An image file was broken somehow.
</parameter_description>
</parameter>
<parameter name="GDK_PIXBUF_ERROR_INSUFFICIENT_MEMORY">
<parameter_description> Not enough memory.
</parameter_description>
</parameter>
<parameter name="GDK_PIXBUF_ERROR_BAD_OPTION">
<parameter_description> A bad option was passed to a pixbuf save module.
</parameter_description>
</parameter>
<parameter name="GDK_PIXBUF_ERROR_UNKNOWN_TYPE">
<parameter_description> Unknown image type.
</parameter_description>
</parameter>
<parameter name="GDK_PIXBUF_ERROR_UNSUPPORTED_OPERATION">
<parameter_description> Don't know how to perform the
given operation on the type of image at hand.
</parameter_description>
</parameter>
<parameter name="GDK_PIXBUF_ERROR_FAILED">
<parameter_description> Generic failure code, something went wrong.
</parameter_description>
</parameter>
<parameter name="GDK_PIXBUF_ERROR_INCOMPLETE_ANIMATION">
<parameter_description> Only part of the animation was loaded.
</parameter_description>
</parameter>
</parameters>
</enum>

<enum name="GdkPixbufFormatFlags">
<description>
Flags which allow a module to specify further details about the supported
operations.

Since: 2.2

</description>
<parameters>
<parameter name="GDK_PIXBUF_FORMAT_WRITABLE">
<parameter_description> the module can write out images in the format.
</parameter_description>
</parameter>
<parameter name="GDK_PIXBUF_FORMAT_SCALABLE">
<parameter_description> the image format is scalable
</parameter_description>
</parameter>
<parameter name="GDK_PIXBUF_FORMAT_THREADSAFE">
<parameter_description> the module is threadsafe. gdk-pixbuf
ignores modules that are not marked as threadsafe. (Since 2.28).
</parameter_description>
</parameter>
</parameters>
</enum>

<signal name="GdkPixbufLoader::area-prepared">
<description>
This signal is emitted when the pixbuf loader has allocated the 
pixbuf in the desired size.

After this signal is emitted, applications can call
gdk_pixbuf_loader_get_pixbuf() to fetch the partially-loaded
pixbuf.

</description>
<parameters>
<parameter name="loader">
<parameter_description> the object which received the signal.
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<signal name="GdkPixbufLoader::area-updated">
<description>
This signal is emitted when a significant area of the image being
loaded has been updated.

Normally it means that a complete scanline has been read in, but
it could be a different area as well.

Applications can use this signal to know when to repaint
areas of an image that is being loaded.

</description>
<parameters>
<parameter name="loader">
<parameter_description> the object which received the signal.
</parameter_description>
</parameter>
<parameter name="x">
<parameter_description> X offset of upper-left corner of the updated area.
</parameter_description>
</parameter>
<parameter name="y">
<parameter_description> Y offset of upper-left corner of the updated area.
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> Width of updated area.
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> Height of updated area.
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<signal name="GdkPixbufLoader::closed">
<description>
This signal is emitted when gdk_pixbuf_loader_close() is called.

It can be used by different parts of an application to receive
notification when an image loader is closed by the code that
drives it.

</description>
<parameters>
<parameter name="loader">
<parameter_description> the object which received the signal.
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<signal name="GdkPixbufLoader::size-prepared">
<description>
This signal is emitted when the pixbuf loader has been fed the
initial amount of data that is required to figure out the size
of the image that it will create.

Applications can call gdk_pixbuf_loader_set_size() in response
to this signal to set the desired size to which the image
should be scaled.

</description>
<parameters>
<parameter name="loader">
<parameter_description> the object which received the signal.
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> the original width of the image
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> the original height of the image
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<enum name="GdkPixbufRotation">
<description>
The possible rotations which can be passed to gdk_pixbuf_rotate_simple().

To make them easier to use, their numerical values are the actual degrees.

</description>
<parameters>
<parameter name="GDK_PIXBUF_ROTATE_NONE">
<parameter_description> No rotation.
</parameter_description>
</parameter>
<parameter name="GDK_PIXBUF_ROTATE_COUNTERCLOCKWISE">
<parameter_description> Rotate by 90 degrees.
</parameter_description>
</parameter>
<parameter name="GDK_PIXBUF_ROTATE_UPSIDEDOWN">
<parameter_description> Rotate by 180 degrees.
</parameter_description>
</parameter>
<parameter name="GDK_PIXBUF_ROTATE_CLOCKWISE">
<parameter_description> Rotate by 270 degrees.
</parameter_description>
</parameter>
</parameters>
</enum>

<property name="GdkPixbufSimpleAnim:loop">
<description>
Whether the animation should loop when it reaches the end.

Since: 2.18

</description>
</property>

<enum name="GdkPixdataDumpType">
<description>
An enumeration which is used by gdk_pixdata_to_csource() to
determine the form of C source to be generated. The three values
@GDK_PIXDATA_DUMP_PIXDATA_STREAM, @GDK_PIXDATA_DUMP_PIXDATA_STRUCT
and @GDK_PIXDATA_DUMP_MACROS are mutually exclusive, as are
@GDK_PIXBUF_DUMP_GTYPES and @GDK_PIXBUF_DUMP_CTYPES. The remaining
elements are optional flags that can be freely added.

Deprecated: 2.32

</description>
<parameters>
<parameter name="GDK_PIXDATA_DUMP_PIXDATA_STREAM">
<parameter_description> Generate pixbuf data stream (a single 
string containing a serialized #GdkPixdata structure in network byte 
order).
</parameter_description>
</parameter>
<parameter name="GDK_PIXDATA_DUMP_PIXDATA_STRUCT">
<parameter_description> Generate #GdkPixdata structure (needs 
the #GdkPixdata structure definition from gdk-pixdata.h).
</parameter_description>
</parameter>
<parameter name="GDK_PIXDATA_DUMP_MACROS">
<parameter_description> Generate &lt;function&gt;*_ROWSTRIDE&lt;/function&gt;,     
&lt;function&gt;*_WIDTH&lt;/function&gt;, &lt;function&gt;*_HEIGHT&lt;/function&gt;,
&lt;function&gt;*_BYTES_PER_PIXEL&lt;/function&gt; and 
&lt;function&gt;*_RLE_PIXEL_DATA&lt;/function&gt; or &lt;function&gt;*_PIXEL_DATA&lt;/function&gt;
macro definitions for the image.
</parameter_description>
</parameter>
<parameter name="GDK_PIXDATA_DUMP_GTYPES">
<parameter_description> Generate GLib data types instead of 
standard C data types.
</parameter_description>
</parameter>
<parameter name="GDK_PIXDATA_DUMP_CTYPES">
<parameter_description> Generate standard C data types instead of 
GLib data types.
</parameter_description>
</parameter>
<parameter name="GDK_PIXDATA_DUMP_STATIC">
<parameter_description> Generate static symbols.
</parameter_description>
</parameter>
<parameter name="GDK_PIXDATA_DUMP_CONST">
<parameter_description> Generate const symbols.
</parameter_description>
</parameter>
<parameter name="GDK_PIXDATA_DUMP_RLE_DECODER">
<parameter_description> Provide a &lt;function&gt;*_RUN_LENGTH_DECODE(image_buf, rle_data, size, bpp)&lt;/function&gt; 
macro definition  to  decode  run-length encoded image data.
</parameter_description>
</parameter>
</parameters>
</enum>

<enum name="GdkPixdataType">
<description>
An enumeration containing three sets of flags for a #GdkPixdata struct: 
one for the used colorspace, one for the width of the samples and one 
for the encoding of the pixel data.

Deprecated: 2.32

</description>
<parameters>
<parameter name="GDK_PIXDATA_COLOR_TYPE_RGB">
<parameter_description>  each pixel has red, green and blue samples.
</parameter_description>
</parameter>
<parameter name="GDK_PIXDATA_COLOR_TYPE_RGBA">
<parameter_description> each pixel has red, green and blue samples 
and an alpha value.
</parameter_description>
</parameter>
<parameter name="GDK_PIXDATA_COLOR_TYPE_MASK">
<parameter_description> mask for the colortype flags of the enum.
</parameter_description>
</parameter>
<parameter name="GDK_PIXDATA_SAMPLE_WIDTH_8">
<parameter_description> each sample has 8 bits.
</parameter_description>
</parameter>
<parameter name="GDK_PIXDATA_SAMPLE_WIDTH_MASK">
<parameter_description> mask for the sample width flags of the enum.
</parameter_description>
</parameter>
<parameter name="GDK_PIXDATA_ENCODING_RAW">
<parameter_description> the pixel data is in raw form. 
</parameter_description>
</parameter>
<parameter name="GDK_PIXDATA_ENCODING_RLE">
<parameter_description> the pixel data is run-length encoded. Runs may 
be up to 127 bytes long; their length is stored in a single byte 
preceding the pixel data for the run. If a run is constant, its length
byte has the high bit set and the pixel data consists of a single pixel
which must be repeated. 
</parameter_description>
</parameter>
<parameter name="GDK_PIXDATA_ENCODING_MASK">
<parameter_description> mask for the encoding flags of the enum.
</parameter_description>
</parameter>
</parameters>
</enum>

<property name="GdkPopup:autohide">
<description>
Whether to hide on outside clicks.

</description>
</property>

<property name="GdkPopup:parent">
<description>
The parent surface.

</description>
</property>

<enum name="GdkScrollDirection">
<description>
Specifies the direction for scroll events.

</description>
<parameters>
<parameter name="GDK_SCROLL_UP">
<parameter_description> the surface is scrolled up.
</parameter_description>
</parameter>
<parameter name="GDK_SCROLL_DOWN">
<parameter_description> the surface is scrolled down.
</parameter_description>
</parameter>
<parameter name="GDK_SCROLL_LEFT">
<parameter_description> the surface is scrolled to the left.
</parameter_description>
</parameter>
<parameter name="GDK_SCROLL_RIGHT">
<parameter_description> the surface is scrolled to the right.
</parameter_description>
</parameter>
<parameter name="GDK_SCROLL_SMOOTH">
<parameter_description> the scrolling is determined by the delta values
in scroll events. See gdk_scroll_event_get_deltas()
</parameter_description>
</parameter>
</parameters>
</enum>

<enum name="GdkScrollUnit">
<description>
Specifies the unit of scroll deltas.

When you get %GDK_SCROLL_UNIT_WHEEL, a delta of 1.0 means 1 wheel detent
click in the south direction, 2.0 means 2 wheel detent clicks in the south
direction... This is the same logic for negative values but in the north
direction.

If you get %GDK_SCROLL_UNIT_SURFACE, are managing a scrollable view and get a
value of 123, you have to scroll 123 surface logical pixels right if it's
@delta_x or down if it's @delta_y. This is the same logic for negative values
but you have to scroll left instead of right if it's @delta_x and up instead
of down if it's @delta_y.

1 surface logical pixel is equal to 1 real screen pixel multiplied by the
final scale factor of your graphical interface (the product of the desktop
scale factor and eventually a custom scale factor in your app).

Since: 4.8

</description>
<parameters>
<parameter name="GDK_SCROLL_UNIT_WHEEL">
<parameter_description> The delta is in number of wheel clicks.
</parameter_description>
</parameter>
<parameter name="GDK_SCROLL_UNIT_SURFACE">
<parameter_description> The delta is in surface pixels to scroll directly
on screen.
</parameter_description>
</parameter>
</parameters>
</enum>

<signal name="GdkSeat::device-added">
<description>
Emitted when a new input device is related to this seat.

</description>
<parameters>
<parameter name="seat">
<parameter_description> the object on which the signal is emitted
</parameter_description>
</parameter>
<parameter name="device">
<parameter_description> the newly added `GdkDevice`.
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<signal name="GdkSeat::device-removed">
<description>
Emitted when an input device is removed (e.g. unplugged).

</description>
<parameters>
<parameter name="seat">
<parameter_description> the object on which the signal is emitted
</parameter_description>
</parameter>
<parameter name="device">
<parameter_description> the just removed `GdkDevice`.
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<signal name="GdkSeat::tool-added">
<description>
Emitted whenever a new tool is made known to the seat.

The tool may later be assigned to a device (i.e. on
proximity with a tablet). The device will emit the
[signal@Gdk.Device::tool-changed] signal accordingly.

A same tool may be used by several devices.

</description>
<parameters>
<parameter name="seat">
<parameter_description> the object on which the signal is emitted
</parameter_description>
</parameter>
<parameter name="tool">
<parameter_description> the new `GdkDeviceTool` known to the seat
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<signal name="GdkSeat::tool-removed">
<description>
Emitted whenever a tool is no longer known to this @seat.

</description>
<parameters>
<parameter name="seat">
<parameter_description> the object on which the signal is emitted
</parameter_description>
</parameter>
<parameter name="tool">
<parameter_description> the just removed `GdkDeviceTool`
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<property name="GdkSeat:display">
<description>
`GdkDisplay` of this seat.

</description>
</property>

<enum name="GdkSeatCapabilities">
<description>
Flags describing the seat capabilities.

</description>
<parameters>
<parameter name="GDK_SEAT_CAPABILITY_NONE">
<parameter_description> No input capabilities
</parameter_description>
</parameter>
<parameter name="GDK_SEAT_CAPABILITY_POINTER">
<parameter_description> The seat has a pointer (e.g. mouse)
</parameter_description>
</parameter>
<parameter name="GDK_SEAT_CAPABILITY_TOUCH">
<parameter_description> The seat has touchscreen(s) attached
</parameter_description>
</parameter>
<parameter name="GDK_SEAT_CAPABILITY_TABLET_STYLUS">
<parameter_description> The seat has drawing tablet(s) attached
</parameter_description>
</parameter>
<parameter name="GDK_SEAT_CAPABILITY_KEYBOARD">
<parameter_description> The seat has keyboard(s) attached
</parameter_description>
</parameter>
<parameter name="GDK_SEAT_CAPABILITY_TABLET_PAD">
<parameter_description> The seat has drawing tablet pad(s) attached
</parameter_description>
</parameter>
<parameter name="GDK_SEAT_CAPABILITY_ALL_POINTING">
<parameter_description> The union of all pointing capabilities
</parameter_description>
</parameter>
<parameter name="GDK_SEAT_CAPABILITY_ALL">
<parameter_description> The union of all capabilities
</parameter_description>
</parameter>
</parameters>
</enum>

<enum name="GdkSubpixelLayout">
<description>
This enumeration describes how the red, green and blue components
of physical pixels on an output device are laid out.

</description>
<parameters>
<parameter name="GDK_SUBPIXEL_LAYOUT_UNKNOWN">
<parameter_description> The layout is not known
</parameter_description>
</parameter>
<parameter name="GDK_SUBPIXEL_LAYOUT_NONE">
<parameter_description> Not organized in this way
</parameter_description>
</parameter>
<parameter name="GDK_SUBPIXEL_LAYOUT_HORIZONTAL_RGB">
<parameter_description> The layout is horizontal, the order is RGB
</parameter_description>
</parameter>
<parameter name="GDK_SUBPIXEL_LAYOUT_HORIZONTAL_BGR">
<parameter_description> The layout is horizontal, the order is BGR
</parameter_description>
</parameter>
<parameter name="GDK_SUBPIXEL_LAYOUT_VERTICAL_RGB">
<parameter_description> The layout is vertical, the order is RGB
</parameter_description>
</parameter>
<parameter name="GDK_SUBPIXEL_LAYOUT_VERTICAL_BGR">
<parameter_description> The layout is vertical, the order is BGR
</parameter_description>
</parameter>
</parameters>
</enum>

<signal name="GdkSurface::enter-monitor">
<description>
Emitted when @surface starts being present on the monitor.

</description>
<parameters>
<parameter name="surface">
<parameter_description> the `GdkSurface`
</parameter_description>
</parameter>
<parameter name="monitor">
<parameter_description> the monitor
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<signal name="GdkSurface::event">
<description>
Emitted when GDK receives an input event for @surface.


</description>
<parameters>
<parameter name="surface">
<parameter_description> the `GdkSurface`
</parameter_description>
</parameter>
<parameter name="event">
<parameter_description> an input event
</parameter_description>
</parameter>
</parameters>
<return> %TRUE to indicate that the event has been handled
</return>
</signal>

<signal name="GdkSurface::layout">
<description>
Emitted when the size of @surface is changed, or when relayout should
be performed.

Surface size is reported in ”application pixels”, not
”device pixels” (see gdk_surface_get_scale_factor()).

</description>
<parameters>
<parameter name="surface">
<parameter_description> the `GdkSurface`
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> the current width
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> the current height
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<signal name="GdkSurface::leave-monitor">
<description>
Emitted when @surface stops being present on the monitor.

</description>
<parameters>
<parameter name="surface">
<parameter_description> the `GdkSurface`
</parameter_description>
</parameter>
<parameter name="monitor">
<parameter_description> the monitor
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<signal name="GdkSurface::render">
<description>
Emitted when part of the surface needs to be redrawn.


</description>
<parameters>
<parameter name="surface">
<parameter_description> the `GdkSurface`
</parameter_description>
</parameter>
<parameter name="region">
<parameter_description> the region that needs to be redrawn
</parameter_description>
</parameter>
</parameters>
<return> %TRUE to indicate that the signal has been handled
</return>
</signal>

<property name="GdkSurface:cursor">
<description>
The mouse pointer for the `GdkSurface`.

</description>
</property>

<property name="GdkSurface:display">
<description>
The `GdkDisplay` connection of the surface.

</description>
</property>

<property name="GdkSurface:frame-clock">
<description>
The `GdkFrameClock` of the surface.

</description>
</property>

<property name="GdkSurface:height">
<description>
The height of the surface, in pixels.

</description>
</property>

<property name="GdkSurface:mapped">
<description>
Whether the surface is mapped.

</description>
</property>

<property name="GdkSurface:scale">
<description>
The scale of the surface.

Since: 4.12

</description>
</property>

<property name="GdkSurface:scale-factor">
<description>
The scale factor of the surface.

The scale factor is the next larger integer,
compared to [property@Gdk.Surface:scale].

</description>
</property>

<property name="GdkSurface:width">
<description>
The width of the surface in pixels.

</description>
</property>

<enum name="GdkSurfaceEdge">
<description>
Determines a surface edge or corner.

</description>
<parameters>
<parameter name="GDK_SURFACE_EDGE_NORTH_WEST">
<parameter_description> the top left corner.
</parameter_description>
</parameter>
<parameter name="GDK_SURFACE_EDGE_NORTH">
<parameter_description> the top edge.
</parameter_description>
</parameter>
<parameter name="GDK_SURFACE_EDGE_NORTH_EAST">
<parameter_description> the top right corner.
</parameter_description>
</parameter>
<parameter name="GDK_SURFACE_EDGE_WEST">
<parameter_description> the left edge.
</parameter_description>
</parameter>
<parameter name="GDK_SURFACE_EDGE_EAST">
<parameter_description> the right edge.
</parameter_description>
</parameter>
<parameter name="GDK_SURFACE_EDGE_SOUTH_WEST">
<parameter_description> the lower left corner.
</parameter_description>
</parameter>
<parameter name="GDK_SURFACE_EDGE_SOUTH">
<parameter_description> the lower edge.
</parameter_description>
</parameter>
<parameter name="GDK_SURFACE_EDGE_SOUTH_EAST">
<parameter_description> the lower right corner.
</parameter_description>
</parameter>
</parameters>
</enum>

<property name="GdkTexture:height">
<description>
The height of the texture, in pixels.

</description>
</property>

<property name="GdkTexture:width">
<description>
The width of the texture, in pixels.

</description>
</property>

<enum name="GdkTextureError">
<description>
Possible errors that can be returned by `GdkTexture` constructors.

Since: 4.6

</description>
<parameters>
<parameter name="GDK_TEXTURE_ERROR_TOO_LARGE">
<parameter_description> Not enough memory to handle this image
</parameter_description>
</parameter>
<parameter name="GDK_TEXTURE_ERROR_CORRUPT_IMAGE">
<parameter_description> The image data appears corrupted
</parameter_description>
</parameter>
<parameter name="GDK_TEXTURE_ERROR_UNSUPPORTED_CONTENT">
<parameter_description> The image contains features
that cannot be loaded
</parameter_description>
</parameter>
<parameter name="GDK_TEXTURE_ERROR_UNSUPPORTED_FORMAT">
<parameter_description> The image format is not supported
</parameter_description>
</parameter>
</parameters>
</enum>

<enum name="GdkTitlebarGesture">
<description>
Since: 4.4

</description>
<parameters>
<parameter name="GDK_TITLEBAR_GESTURE_DOUBLE_CLICK">
<parameter_description>
</parameter_description>
</parameter>
<parameter name="GDK_TITLEBAR_GESTURE_RIGHT_CLICK">
<parameter_description>
</parameter_description>
</parameter>
<parameter name="GDK_TITLEBAR_GESTURE_MIDDLE_CLICK">
<parameter_description>
</parameter_description>
</parameter>
</parameters>
</enum>

<signal name="GdkToplevel::compute-size">
<description>
Emitted when the size for the surface needs to be computed, when
it is present.

This signal will normally be emitted during or after a call to
[method@Gdk.Toplevel.present], depending on the configuration
received by the windowing system. It may also be emitted at any
other point in time, in response to the windowing system
spontaneously changing the configuration of the toplevel surface.

It is the responsibility of the toplevel user to handle this signal
and compute the desired size of the toplevel, given the information
passed via the [struct@Gdk.ToplevelSize] object. Failing to do so
will result in an arbitrary size being used as a result.

</description>
<parameters>
<parameter name="toplevel">
<parameter_description> a `GdkToplevel`
</parameter_description>
</parameter>
<parameter name="size">
<parameter_description> a `GdkToplevelSize`
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<property name="GdkToplevel:autohide">
<description>
Whether the toplevel should be modal with respect to its parent.

</description>
</property>

<property name="GdkToplevel:decorated">
<description>
Whether the window manager should add decorations.

</description>
</property>

<property name="GdkToplevel:deletable">
<description>
Whether the window manager should allow to close the surface.

</description>
</property>

<property name="GdkToplevel:fullscreen-mode">
<description>
The fullscreen mode of the surface.

</description>
</property>

<property name="GdkToplevel:icon-list">
<description>
A list of textures to use as icon.

</description>
</property>

<property name="GdkToplevel:modal">
<description>
Whether the surface is modal.

</description>
</property>

<property name="GdkToplevel:parent">
<description>
The parent surface of the toplevel.

</description>
</property>

<property name="GdkToplevel:shortcuts-inhibited">
<description>
Whether the surface should inhibit keyboard shortcuts.

</description>
</property>

<property name="GdkToplevel:startup-id">
<description>
The startup ID of the surface.

See [class@Gdk.AppLaunchContext] for more information about
startup feedback.

</description>
</property>

<property name="GdkToplevel:state">
<description>
The state of the toplevel.

</description>
</property>

<property name="GdkToplevel:title">
<description>
The title of the surface.

</description>
</property>

<property name="GdkToplevel:transient-for">
<description>
The transient parent of the surface.

</description>
</property>

<enum name="GdkToplevelState">
<description>
Specifies the state of a toplevel surface.

On platforms that support information about individual edges, the
%GDK_TOPLEVEL_STATE_TILED state will be set whenever any of the individual
tiled states is set. On platforms that lack that support, the tiled state
will give an indication of tiledness without any of the per-edge states
being set.

</description>
<parameters>
<parameter name="GDK_TOPLEVEL_STATE_MINIMIZED">
<parameter_description> the surface is minimized
</parameter_description>
</parameter>
<parameter name="GDK_TOPLEVEL_STATE_MAXIMIZED">
<parameter_description> the surface is maximized
</parameter_description>
</parameter>
<parameter name="GDK_TOPLEVEL_STATE_STICKY">
<parameter_description> the surface is sticky
</parameter_description>
</parameter>
<parameter name="GDK_TOPLEVEL_STATE_FULLSCREEN">
<parameter_description> the surface is maximized without decorations
</parameter_description>
</parameter>
<parameter name="GDK_TOPLEVEL_STATE_ABOVE">
<parameter_description> the surface is kept above other surfaces
</parameter_description>
</parameter>
<parameter name="GDK_TOPLEVEL_STATE_BELOW">
<parameter_description> the surface is kept below other surfaces
</parameter_description>
</parameter>
<parameter name="GDK_TOPLEVEL_STATE_FOCUSED">
<parameter_description> the surface is presented as focused (with active decorations)
</parameter_description>
</parameter>
<parameter name="GDK_TOPLEVEL_STATE_TILED">
<parameter_description> the surface is in a tiled state
</parameter_description>
</parameter>
<parameter name="GDK_TOPLEVEL_STATE_TOP_TILED">
<parameter_description> whether the top edge is tiled
</parameter_description>
</parameter>
<parameter name="GDK_TOPLEVEL_STATE_TOP_RESIZABLE">
<parameter_description> whether the top edge is resizable
</parameter_description>
</parameter>
<parameter name="GDK_TOPLEVEL_STATE_RIGHT_TILED">
<parameter_description> whether the right edge is tiled
</parameter_description>
</parameter>
<parameter name="GDK_TOPLEVEL_STATE_RIGHT_RESIZABLE">
<parameter_description> whether the right edge is resizable
</parameter_description>
</parameter>
<parameter name="GDK_TOPLEVEL_STATE_BOTTOM_TILED">
<parameter_description> whether the bottom edge is tiled
</parameter_description>
</parameter>
<parameter name="GDK_TOPLEVEL_STATE_BOTTOM_RESIZABLE">
<parameter_description> whether the bottom edge is resizable
</parameter_description>
</parameter>
<parameter name="GDK_TOPLEVEL_STATE_LEFT_TILED">
<parameter_description> whether the left edge is tiled
</parameter_description>
</parameter>
<parameter name="GDK_TOPLEVEL_STATE_LEFT_RESIZABLE">
<parameter_description> whether the left edge is resizable
</parameter_description>
</parameter>
<parameter name="GDK_TOPLEVEL_STATE_SUSPENDED">
<parameter_description> the surface is not visible to the user
</parameter_description>
</parameter>
</parameters>
</enum>

<enum name="GdkTouchpadGesturePhase">
<description>
Specifies the current state of a touchpad gesture.

All gestures are guaranteed to begin with an event with phase
%GDK_TOUCHPAD_GESTURE_PHASE_BEGIN, followed by 0 or several events
with phase %GDK_TOUCHPAD_GESTURE_PHASE_UPDATE.

A finished gesture may have 2 possible outcomes, an event with phase
%GDK_TOUCHPAD_GESTURE_PHASE_END will be emitted when the gesture is
considered successful, this should be used as the hint to perform any
permanent changes.

Cancelled gestures may be so for a variety of reasons, due to hardware
or the compositor, or due to the gesture recognition layers hinting the
gesture did not finish resolutely (eg. a 3rd finger being added during
a pinch gesture). In these cases, the last event will report the phase
%GDK_TOUCHPAD_GESTURE_PHASE_CANCEL, this should be used as a hint
to undo any visible/permanent changes that were done throughout the
progress of the gesture.

</description>
<parameters>
<parameter name="GDK_TOUCHPAD_GESTURE_PHASE_BEGIN">
<parameter_description> The gesture has begun.
</parameter_description>
</parameter>
<parameter name="GDK_TOUCHPAD_GESTURE_PHASE_UPDATE">
<parameter_description> The gesture has been updated.
</parameter_description>
</parameter>
<parameter name="GDK_TOUCHPAD_GESTURE_PHASE_END">
<parameter_description> The gesture was finished, changes
should be permanently applied.
</parameter_description>
</parameter>
<parameter name="GDK_TOUCHPAD_GESTURE_PHASE_CANCEL">
<parameter_description> The gesture was cancelled, all
changes should be undone.
</parameter_description>
</parameter>
</parameters>
</enum>

<signal name="GdkVulkanContext::images-updated">
<description>
Emitted when the images managed by this context have changed.

Usually this means that the swapchain had to be recreated,
for example in response to a change of the surface size.

</description>
<parameters>
<parameter name="context">
<parameter_description> the object on which the signal is emitted
</parameter_description>
</parameter>
</parameters>
<return></return>
</signal>

<enum name="GdkVulkanError">
<description>
Error enumeration for `GdkVulkanContext`.

</description>
<parameters>
<parameter name="GDK_VULKAN_ERROR_UNSUPPORTED">
<parameter_description> Vulkan is not supported on this backend or has not been
compiled in.
</parameter_description>
</parameter>
<parameter name="GDK_VULKAN_ERROR_NOT_AVAILABLE">
<parameter_description> Vulkan support is not available on this Surface
</parameter_description>
</parameter>
</parameters>
</enum>

<function name="gdk_app_launch_context_get_display">
<description>
Gets the `GdkDisplay` that @context is for.


</description>
<parameters>
<parameter name="context">
<parameter_description> a `GdkAppLaunchContext`
</parameter_description>
</parameter>
</parameters>
<return> the display of @context
</return>
</function>

<function name="gdk_app_launch_context_set_desktop">
<description>
Sets the workspace on which applications will be launched.

This only works when running under a window manager that
supports multiple workspaces, as described in the
[Extended Window Manager Hints](http://www.freedesktop.org/Standards/wm-spec).
Specifically this sets the `_NET_WM_DESKTOP` property described
in that spec.

This only works when using the X11 backend.

When the workspace is not specified or @desktop is set to -1,
it is up to the window manager to pick one, typically it will
be the current workspace.

</description>
<parameters>
<parameter name="context">
<parameter_description> a `GdkAppLaunchContext`
</parameter_description>
</parameter>
<parameter name="desktop">
<parameter_description> the number of a workspace, or -1
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_app_launch_context_set_icon">
<description>
Sets the icon for applications that are launched with this
context.

Window Managers can use this information when displaying startup
notification.

See also [method@Gdk.AppLaunchContext.set_icon_name].

</description>
<parameters>
<parameter name="context">
<parameter_description> a `GdkAppLaunchContext`
</parameter_description>
</parameter>
<parameter name="icon">
<parameter_description> a `GIcon`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_app_launch_context_set_icon_name">
<description>
Sets the icon for applications that are launched with this context.

The @icon_name will be interpreted in the same way as the Icon field
in desktop files. See also [method@Gdk.AppLaunchContext.set_icon].

If both @icon and @icon_name are set, the @icon_name takes priority.
If neither @icon or @icon_name is set, the icon is taken from either
the file that is passed to launched application or from the `GAppInfo`
for the launched application itself.

</description>
<parameters>
<parameter name="context">
<parameter_description> a `GdkAppLaunchContext`
</parameter_description>
</parameter>
<parameter name="icon_name">
<parameter_description> an icon name
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_app_launch_context_set_timestamp">
<description>
Sets the timestamp of @context.

The timestamp should ideally be taken from the event that
triggered the launch.

Window managers can use this information to avoid moving the
focus to the newly launched application when the user is busy
typing in another window. This is also known as 'focus stealing
prevention'.

</description>
<parameters>
<parameter name="context">
<parameter_description> a `GdkAppLaunchContext`
</parameter_description>
</parameter>
<parameter name="timestamp">
<parameter_description> a timestamp
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_button_event_get_button">
<description>
Extract the button number from a button event.


</description>
<parameters>
<parameter name="event">
<parameter_description> a button event
</parameter_description>
</parameter>
</parameters>
<return> the button of @event
</return>
</function>

<function name="gdk_cairo_context_cairo_create">
<description>
Retrieves a Cairo context to be used to draw on the `GdkSurface`
of @context.

A call to [method@Gdk.DrawContext.begin_frame] with this
@context must have been done or this function will return %NULL.

The returned context is guaranteed to be valid until
[method@Gdk.DrawContext.end_frame] is called.


</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkCairoContext` that is currently drawing
</parameter_description>
</parameter>
</parameters>
<return> a Cairo context
to draw on `GdkSurface
</return>
</function>

<function name="gdk_cairo_draw_from_gl">
<description>
The main way to not draw GL content in GTK.

It takes a render buffer ID (@source_type == GL_RENDERBUFFER) or a texture
id (@source_type == GL_TEXTURE) and draws it onto @cr with an OVER operation,
respecting the current clip. The top left corner of the rectangle specified
by @x, @y, @width and @height will be drawn at the current (0,0) position of
the `cairo_t`.

This will work for *all* `cairo_t`, as long as @surface is realized, but the
fallback implementation that reads back the pixels from the buffer may be
used in the general case. In the case of direct drawing to a surface with
no special effects applied to @cr it will however use a more efficient
approach.

For GL_RENDERBUFFER the code will always fall back to software for buffers
with alpha components, so make sure you use GL_TEXTURE if using alpha.

Calling this may change the current GL context.

Deprecated: 4.6: The function is overly complex and produces broken output
in various combinations of arguments. If you want to draw with GL textures
in GTK, use [ctor@Gdk.GLTexture.new]; if you want to use that texture in
Cairo, use [method@Gdk.Texture.download] to download the data into a Cairo
image surface.

</description>
<parameters>
<parameter name="cr">
<parameter_description> a cairo context
</parameter_description>
</parameter>
<parameter name="surface">
<parameter_description> The surface we're rendering for (not necessarily into)
</parameter_description>
</parameter>
<parameter name="source">
<parameter_description> The GL ID of the source buffer
</parameter_description>
</parameter>
<parameter name="source_type">
<parameter_description> The type of the @source
</parameter_description>
</parameter>
<parameter name="buffer_scale">
<parameter_description> The scale-factor that the @source buffer is allocated for
</parameter_description>
</parameter>
<parameter name="x">
<parameter_description> The source x position in @source to start copying from in GL coordinates
</parameter_description>
</parameter>
<parameter name="y">
<parameter_description> The source y position in @source to start copying from in GL coordinates
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> The width of the region to draw
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> The height of the region to draw
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_cairo_rectangle">
<description>
Adds the given rectangle to the current path of @cr.

</description>
<parameters>
<parameter name="cr">
<parameter_description> a cairo context
</parameter_description>
</parameter>
<parameter name="rectangle">
<parameter_description> a `GdkRectangle`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_cairo_region">
<description>
Adds the given region to the current path of @cr.

</description>
<parameters>
<parameter name="cr">
<parameter_description> a cairo context
</parameter_description>
</parameter>
<parameter name="region">
<parameter_description> a `cairo_region_t`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_cairo_region_create_from_surface">
<description>
Creates region that covers the area where the given
@surface is more than 50% opaque.

This function takes into account device offsets that might be
set with cairo_surface_set_device_offset().


</description>
<parameters>
<parameter name="surface">
<parameter_description> a cairo surface
</parameter_description>
</parameter>
</parameters>
<return> A `cairo_region_t`
</return>
</function>

<function name="gdk_cairo_set_source_pixbuf">
<description>
Sets the given pixbuf as the source pattern for @cr.

The pattern has an extend mode of %CAIRO_EXTEND_NONE and is aligned
so that the origin of @pixbuf is @pixbuf_x, @pixbuf_y.

</description>
<parameters>
<parameter name="cr">
<parameter_description> a cairo context
</parameter_description>
</parameter>
<parameter name="pixbuf">
<parameter_description> a `GdkPixbuf`
</parameter_description>
</parameter>
<parameter name="pixbuf_x">
<parameter_description> X coordinate of location to place upper left corner of @pixbuf
</parameter_description>
</parameter>
<parameter name="pixbuf_y">
<parameter_description> Y coordinate of location to place upper left corner of @pixbuf
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_cairo_set_source_rgba">
<description>
Sets the specified `GdkRGBA` as the source color of @cr.

</description>
<parameters>
<parameter name="cr">
<parameter_description> a cairo context
</parameter_description>
</parameter>
<parameter name="rgba">
<parameter_description> a `GdkRGBA`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_clipboard_get_content">
<description>
Returns the `GdkContentProvider` currently set on @clipboard.

If the @clipboard is empty or its contents are not owned by the
current process, %NULL will be returned.


</description>
<parameters>
<parameter name="clipboard">
<parameter_description> a `GdkClipboard`
</parameter_description>
</parameter>
</parameters>
<return> The content of a clipboard
if the clipboard does not maintain any content
</return>
</function>

<function name="gdk_clipboard_get_display">
<description>
Gets the `GdkDisplay` that the clipboard was created for.


</description>
<parameters>
<parameter name="clipboard">
<parameter_description> a `GdkClipboard`
</parameter_description>
</parameter>
</parameters>
<return> a `GdkDisplay`
</return>
</function>

<function name="gdk_clipboard_get_formats">
<description>
Gets the formats that the clipboard can provide its current contents in.


</description>
<parameters>
<parameter name="clipboard">
<parameter_description> a `GdkClipboard`
</parameter_description>
</parameter>
</parameters>
<return> The formats of the clipboard
</return>
</function>

<function name="gdk_clipboard_is_local">
<description>
Returns if the clipboard is local.

A clipboard is considered local if it was last claimed
by the running application.

Note that [method@Gdk.Clipboard.get_content] may return %NULL
even on a local clipboard. In this case the clipboard is empty.


</description>
<parameters>
<parameter name="clipboard">
<parameter_description> a `GdkClipboard`
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the clipboard is local
</return>
</function>

<function name="gdk_clipboard_read_async">
<description>
Asynchronously requests an input stream to read the @clipboard's
contents from.

When the operation is finished @callback will be called. You must then
call [method@Gdk.Clipboard.read_finish] to get the result of the operation.

The clipboard will choose the most suitable mime type from the given list
to fulfill the request, preferring the ones listed first.

</description>
<parameters>
<parameter name="clipboard">
<parameter_description> a `GdkClipboard`
</parameter_description>
</parameter>
<parameter name="mime_types">
<parameter_description> a %NULL-terminated array of mime types to choose from
</parameter_description>
</parameter>
<parameter name="io_priority">
<parameter_description> the I/O priority of the request
</parameter_description>
</parameter>
<parameter name="cancellable">
<parameter_description> optional `GCancellable` object
</parameter_description>
</parameter>
<parameter name="callback">
<parameter_description> callback to call when the request is satisfied
</parameter_description>
</parameter>
<parameter name="user_data">
<parameter_description> the data to pass to callback function
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_clipboard_read_finish">
<description>
Finishes an asynchronous clipboard read.

See [method@Gdk.Clipboard.read_async].


</description>
<parameters>
<parameter name="clipboard">
<parameter_description> a `GdkClipboard`
</parameter_description>
</parameter>
<parameter name="result">
<parameter_description> a `GAsyncResult`
</parameter_description>
</parameter>
<parameter name="out_mime_type">
<parameter_description> location to store
the chosen mime type
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> a `GError` location to store the error occurring
</parameter_description>
</parameter>
</parameters>
<return> a `GInputStream`
</return>
</function>

<function name="gdk_clipboard_read_text_async">
<description>
Asynchronously request the @clipboard contents converted to a string.

When the operation is finished @callback will be called. You must then
call [method@Gdk.Clipboard.read_text_finish] to get the result.

This is a simple wrapper around [method@Gdk.Clipboard.read_value_async].
Use that function or [method@Gdk.Clipboard.read_async] directly if you
need more control over the operation.

</description>
<parameters>
<parameter name="clipboard">
<parameter_description> a `GdkClipboard`
</parameter_description>
</parameter>
<parameter name="cancellable">
<parameter_description> optional `GCancellable` object
</parameter_description>
</parameter>
<parameter name="callback">
<parameter_description> callback to call when the request is satisfied
</parameter_description>
</parameter>
<parameter name="user_data">
<parameter_description> the data to pass to callback function
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_clipboard_read_text_finish">
<description>
Finishes an asynchronous clipboard read.

See [method@Gdk.Clipboard.read_text_async].


</description>
<parameters>
<parameter name="clipboard">
<parameter_description> a `GdkClipboard`
</parameter_description>
</parameter>
<parameter name="result">
<parameter_description> a `GAsyncResult`
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> a `GError` location to store the error occurring
</parameter_description>
</parameter>
</parameters>
<return> a new string
</return>
</function>

<function name="gdk_clipboard_read_texture_async">
<description>
Asynchronously request the @clipboard contents converted to a `GdkPixbuf`.

When the operation is finished @callback will be called. You must then
call [method@Gdk.Clipboard.read_texture_finish] to get the result.

This is a simple wrapper around [method@Gdk.Clipboard.read_value_async].
Use that function or [method@Gdk.Clipboard.read_async] directly if you
need more control over the operation.

</description>
<parameters>
<parameter name="clipboard">
<parameter_description> a `GdkClipboard`
</parameter_description>
</parameter>
<parameter name="cancellable">
<parameter_description> optional `GCancellable` object, %NULL to ignore.
</parameter_description>
</parameter>
<parameter name="callback">
<parameter_description> callback to call when the request is satisfied
</parameter_description>
</parameter>
<parameter name="user_data">
<parameter_description> the data to pass to callback function
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_clipboard_read_texture_finish">
<description>
Finishes an asynchronous clipboard read.

See [method@Gdk.Clipboard.read_texture_async].


</description>
<parameters>
<parameter name="clipboard">
<parameter_description> a `GdkClipboard`
</parameter_description>
</parameter>
<parameter name="result">
<parameter_description> a `GAsyncResult`
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> a `GError` location to store the error occurring
</parameter_description>
</parameter>
</parameters>
<return> a new `GdkTexture`
</return>
</function>

<function name="gdk_clipboard_read_value_async">
<description>
Asynchronously request the @clipboard contents converted to the given
@type.

When the operation is finished @callback will be called. You must then call
[method@Gdk.Clipboard.read_value_finish] to get the resulting `GValue`.

For local clipboard contents that are available in the given `GType`,
the value will be copied directly. Otherwise, GDK will try to use
[func@content_deserialize_async] to convert the clipboard's data.

</description>
<parameters>
<parameter name="clipboard">
<parameter_description> a `GdkClipboard`
</parameter_description>
</parameter>
<parameter name="type">
<parameter_description> a `GType` to read
</parameter_description>
</parameter>
<parameter name="io_priority">
<parameter_description> the I/O priority of the request
</parameter_description>
</parameter>
<parameter name="cancellable">
<parameter_description> optional `GCancellable` object
</parameter_description>
</parameter>
<parameter name="callback">
<parameter_description> callback to call when the request is satisfied
</parameter_description>
</parameter>
<parameter name="user_data">
<parameter_description> the data to pass to callback function
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_clipboard_read_value_finish">
<description>
Finishes an asynchronous clipboard read.

See [method@Gdk.Clipboard.read_value_async].


</description>
<parameters>
<parameter name="clipboard">
<parameter_description> a `GdkClipboard`
</parameter_description>
</parameter>
<parameter name="result">
<parameter_description> a `GAsyncResult`
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> a GError` location to store the error occurring
</parameter_description>
</parameter>
</parameters>
<return> a `GValue` containing the result.
</return>
</function>

<function name="gdk_clipboard_set">
<description>
Sets the clipboard to contain the value collected from the given varargs.

Values should be passed the same way they are passed to other value
collecting APIs, such as [method@GObject.Object.set] or
[func@GObject.signal_emit].

```c
gdk_clipboard_set (clipboard, GTK_TYPE_STRING, &quot;Hello World&quot;);

gdk_clipboard_set (clipboard, GDK_TYPE_TEXTURE, some_texture);
```

</description>
<parameters>
<parameter name="clipboard">
<parameter_description> a `GdkClipboard`
</parameter_description>
</parameter>
<parameter name="type">
<parameter_description> type of value to set
</parameter_description>
</parameter>
<parameter name="Varargs">
<parameter_description> value contents conforming to @type
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_clipboard_set_content">
<description>
Sets a new content provider on @clipboard.

The clipboard will claim the `GdkDisplay`'s resources and advertise
these new contents to other applications.

In the rare case of a failure, this function will return %FALSE. The
clipboard will then continue reporting its old contents and ignore
@provider.

If the contents are read by either an external application or the
@clipboard's read functions, @clipboard will select the best format to
transfer the contents and then request that format from @provider.


</description>
<parameters>
<parameter name="clipboard">
<parameter_description> a `GdkClipboard`
</parameter_description>
</parameter>
<parameter name="provider">
<parameter_description> the new contents of @clipboard
or %NULL to clear the clipboard
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if setting the clipboard succeeded
</return>
</function>

<function name="gdk_clipboard_set_text">
<description>
Puts the given @text into the clipboard.

</description>
<parameters>
<parameter name="clipboard">
<parameter_description> a `GdkClipboard`
</parameter_description>
</parameter>
<parameter name="text">
<parameter_description> Text to put into the clipboard
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_clipboard_set_texture">
<description>
Puts the given @texture into the clipboard.

</description>
<parameters>
<parameter name="clipboard">
<parameter_description> a `GdkClipboard`
</parameter_description>
</parameter>
<parameter name="texture">
<parameter_description> a `GdkTexture` to put into the clipboard
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_clipboard_set_valist">
<description>
Sets the clipboard to contain the value collected from the given @args.

</description>
<parameters>
<parameter name="clipboard">
<parameter_description> a `GdkClipboard`
</parameter_description>
</parameter>
<parameter name="type">
<parameter_description> type of value to set
</parameter_description>
</parameter>
<parameter name="args">
<parameter_description> varargs containing the value of @type
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_clipboard_set_value">
<description>
Sets the @clipboard to contain the given @value.

</description>
<parameters>
<parameter name="clipboard">
<parameter_description> a `GdkClipboard`
</parameter_description>
</parameter>
<parameter name="value">
<parameter_description> a `GValue` to set
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_clipboard_store_async">
<description>
Asynchronously instructs the @clipboard to store its contents remotely.

If the clipboard is not local, this function does nothing but report success.

The @callback must call [method@Gdk.Clipboard.store_finish].

The purpose of this call is to preserve clipboard contents beyond the
lifetime of an application, so this function is typically called on
exit. Depending on the platform, the functionality may not be available
unless a &quot;clipboard manager&quot; is running.

This function is called automatically when a
[GtkApplication](../gtk4/class.Application.html)
is shut down, so you likely don't need to call it.

</description>
<parameters>
<parameter name="clipboard">
<parameter_description> a `GdkClipboard`
</parameter_description>
</parameter>
<parameter name="io_priority">
<parameter_description> the I/O priority of the request
</parameter_description>
</parameter>
<parameter name="cancellable">
<parameter_description> optional `GCancellable` object
</parameter_description>
</parameter>
<parameter name="callback">
<parameter_description> callback to call when the request is satisfied
</parameter_description>
</parameter>
<parameter name="user_data">
<parameter_description> the data to pass to callback function
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_clipboard_store_finish">
<description>
Finishes an asynchronous clipboard store.

See [method@Gdk.Clipboard.store_async].


</description>
<parameters>
<parameter name="clipboard">
<parameter_description> a `GdkClipboard`
</parameter_description>
</parameter>
<parameter name="result">
<parameter_description> a `GAsyncResult`
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> a `GError` location to store the error occurring
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if storing was successful.
</return>
</function>

<function name="gdk_content_deserialize_async">
<description>
Read content from the given input stream and deserialize it, asynchronously.

The default I/O priority is %G_PRIORITY_DEFAULT (i.e. 0), and lower numbers
indicate a higher priority.

When the operation is finished, @callback will be called. You must then
call [func@Gdk.content_deserialize_finish] to get the result of the operation.

</description>
<parameters>
<parameter name="stream">
<parameter_description> a `GInputStream` to read the serialized content from
</parameter_description>
</parameter>
<parameter name="mime_type">
<parameter_description> the mime type to deserialize from
</parameter_description>
</parameter>
<parameter name="type">
<parameter_description> the GType to deserialize from
</parameter_description>
</parameter>
<parameter name="io_priority">
<parameter_description> the I/O priority of the operation
</parameter_description>
</parameter>
<parameter name="cancellable">
<parameter_description> optional `GCancellable` object
</parameter_description>
</parameter>
<parameter name="callback">
<parameter_description> callback to call when the operation is done
</parameter_description>
</parameter>
<parameter name="user_data">
<parameter_description> data to pass to the callback function
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_content_deserialize_finish">
<description>
Finishes a content deserialization operation.


</description>
<parameters>
<parameter name="result">
<parameter_description> the `GAsyncResult`
</parameter_description>
</parameter>
<parameter name="value">
<parameter_description> return location for the result of the operation
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> return location for an error
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the operation was successful. In this case,
@value is set. %FALSE if an error occurred. In this case,
@error is set
</return>
</function>

<function name="gdk_content_deserializer_get_cancellable">
<description>
Gets the cancellable for the current operation.

This is the `GCancellable` that was passed to [func@Gdk.content_deserialize_async].


</description>
<parameters>
<parameter name="deserializer">
<parameter_description> a `GdkContentDeserializer`
</parameter_description>
</parameter>
</parameters>
<return> the cancellable for the current operation
</return>
</function>

<function name="gdk_content_deserializer_get_gtype">
<description>
Gets the `GType` to create an instance of.


</description>
<parameters>
<parameter name="deserializer">
<parameter_description> a `GdkContentDeserializer`
</parameter_description>
</parameter>
</parameters>
<return> the `GType` for the current operation
</return>
</function>

<function name="gdk_content_deserializer_get_input_stream">
<description>
Gets the input stream for the current operation.

This is the stream that was passed to [func@Gdk.content_deserialize_async].


</description>
<parameters>
<parameter name="deserializer">
<parameter_description> a `GdkContentDeserializer`
</parameter_description>
</parameter>
</parameters>
<return> the input stream for the current operation
</return>
</function>

<function name="gdk_content_deserializer_get_mime_type">
<description>
Gets the mime type to deserialize from.


</description>
<parameters>
<parameter name="deserializer">
<parameter_description> a `GdkContentDeserializer`
</parameter_description>
</parameter>
</parameters>
<return> the mime type for the current operation
</return>
</function>

<function name="gdk_content_deserializer_get_priority">
<description>
Gets the I/O priority for the current operation.

This is the priority that was passed to [func@Gdk.content_deserialize_async].


</description>
<parameters>
<parameter name="deserializer">
<parameter_description> a `GdkContentDeserializer`
</parameter_description>
</parameter>
</parameters>
<return> the I/O priority for the current operation
</return>
</function>

<function name="gdk_content_deserializer_get_task_data">
<description>
Gets the data that was associated with the current operation.

See [method@Gdk.ContentDeserializer.set_task_data].


</description>
<parameters>
<parameter name="deserializer">
<parameter_description> a `GdkContentDeserializer`
</parameter_description>
</parameter>
</parameters>
<return> the task data for @deserializer
</return>
</function>

<function name="gdk_content_deserializer_get_user_data">
<description>
Gets the user data that was passed when the deserializer was registered.


</description>
<parameters>
<parameter name="deserializer">
<parameter_description> a `GdkContentDeserializer`
</parameter_description>
</parameter>
</parameters>
<return> the user data for this deserializer
</return>
</function>

<function name="gdk_content_deserializer_get_value">
<description>
Gets the `GValue` to store the deserialized object in.


</description>
<parameters>
<parameter name="deserializer">
<parameter_description> a `GdkContentDeserializer`
</parameter_description>
</parameter>
</parameters>
<return> the `GValue` for the current operation
</return>
</function>

<function name="gdk_content_deserializer_return_error">
<description>
Indicate that the deserialization has ended with an error.

This function consumes @error.

</description>
<parameters>
<parameter name="deserializer">
<parameter_description> a `GdkContentDeserializer`
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> a `GError`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_content_deserializer_return_success">
<description>
Indicate that the deserialization has been successfully completed.

</description>
<parameters>
<parameter name="deserializer">
<parameter_description> a `GdkContentDeserializer`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_content_deserializer_set_task_data">
<description>
Associate data with the current deserialization operation.

</description>
<parameters>
<parameter name="deserializer">
<parameter_description> a `GdkContentDeserializer`
</parameter_description>
</parameter>
<parameter name="data">
<parameter_description> data to associate with this operation
</parameter_description>
</parameter>
<parameter name="notify">
<parameter_description> destroy notify for @data
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_content_formats_builder_add_formats">
<description>
Appends all formats from @formats to @builder, skipping those that
already exist.

</description>
<parameters>
<parameter name="builder">
<parameter_description> a `GdkContentFormatsBuilder`
</parameter_description>
</parameter>
<parameter name="formats">
<parameter_description> the formats to add
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_content_formats_builder_add_gtype">
<description>
Appends @type to @builder if it has not already been added.

</description>
<parameters>
<parameter name="builder">
<parameter_description> a `GdkContentFormats`Builder
</parameter_description>
</parameter>
<parameter name="type">
<parameter_description> a `GType`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_content_formats_builder_add_mime_type">
<description>
Appends @mime_type to @builder if it has not already been added.

</description>
<parameters>
<parameter name="builder">
<parameter_description> a `GdkContentFormatsBuilder`
</parameter_description>
</parameter>
<parameter name="mime_type">
<parameter_description> a mime type
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_content_formats_builder_free_to_formats">
<description>
Creates a new `GdkContentFormats` from the current state of the
given @builder, and frees the @builder instance.


</description>
<parameters>
<parameter name="builder">
<parameter_description> a `GdkContentFormatsBuilder`
</parameter_description>
</parameter>
</parameters>
<return> the newly created `GdkContentFormats`
with all the formats added to @builder
</return>
</function>

<function name="gdk_content_formats_builder_new">
<description>
Create a new `GdkContentFormatsBuilder` object.

The resulting builder would create an empty `GdkContentFormats`.
Use addition functions to add types to it.


</description>
<parameters>
</parameters>
<return> a new `GdkContentFormatsBuilder`
</return>
</function>

<function name="gdk_content_formats_builder_ref">
<description>
Acquires a reference on the given @builder.

This function is intended primarily for bindings.
`GdkContentFormatsBuilder` objects should not be kept around.


</description>
<parameters>
<parameter name="builder">
<parameter_description> a `GdkContentFormatsBuilder`
</parameter_description>
</parameter>
</parameters>
<return> the given `GdkContentFormatsBuilder`
with its reference count increased
</return>
</function>

<function name="gdk_content_formats_builder_to_formats">
<description>
Creates a new `GdkContentFormats` from the given @builder.

The given `GdkContentFormatsBuilder` is reset once this function returns;
you cannot call this function multiple times on the same @builder instance.

This function is intended primarily for bindings. C code should use
[method@Gdk.ContentFormatsBuilder.free_to_formats].


</description>
<parameters>
<parameter name="builder">
<parameter_description> a `GdkContentFormats`Builder
</parameter_description>
</parameter>
</parameters>
<return> the newly created `GdkContentFormats`
with all the formats added to @builder
</return>
</function>

<function name="gdk_content_formats_builder_unref">
<description>
Releases a reference on the given @builder.

</description>
<parameters>
<parameter name="builder">
<parameter_description> a `GdkContentFormatsBuilder`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_content_formats_contain_gtype">
<description>
Checks if a given `GType` is part of the given @formats.


</description>
<parameters>
<parameter name="formats">
<parameter_description> a `GdkContentFormats`
</parameter_description>
</parameter>
<parameter name="type">
<parameter_description> the `GType` to search for
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the `GType` was found
</return>
</function>

<function name="gdk_content_formats_contain_mime_type">
<description>
Checks if a given mime type is part of the given @formats.


</description>
<parameters>
<parameter name="formats">
<parameter_description> a `GdkContentFormats`
</parameter_description>
</parameter>
<parameter name="mime_type">
<parameter_description> the mime type to search for
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the mime_type was found
</return>
</function>

<function name="gdk_content_formats_get_gtypes">
<description>
Gets the `GType`s included in @formats.

Note that @formats may not contain any `GType`s, in particular when
they are empty. In that case %NULL will be returned.


</description>
<parameters>
<parameter name="formats">
<parameter_description> a `GdkContentFormats`
</parameter_description>
</parameter>
<parameter name="n_gtypes">
<parameter_description> optional pointer to take the
number of `GType`s contained in the return value
</parameter_description>
</parameter>
</parameters>
<return>
%G_TYPE_INVALID-terminated array of types included in @formats
</return>
</function>

<function name="gdk_content_formats_get_mime_types">
<description>
Gets the mime types included in @formats.

Note that @formats may not contain any mime types, in particular
when they are empty. In that case %NULL will be returned.


</description>
<parameters>
<parameter name="formats">
<parameter_description> a `GdkContentFormats`
</parameter_description>
</parameter>
<parameter name="n_mime_types">
<parameter_description> optional pointer to take the
number of mime types contained in the return value
</parameter_description>
</parameter>
</parameters>
<return>
%NULL-terminated array of interned strings of mime types included
in @formats
</return>
</function>

<function name="gdk_content_formats_match">
<description>
Checks if @first and @second have any matching formats.


</description>
<parameters>
<parameter name="first">
<parameter_description> the primary `GdkContentFormats` to intersect
</parameter_description>
</parameter>
<parameter name="second">
<parameter_description> the `GdkContentFormats` to intersect with
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if a matching format was found.
</return>
</function>

<function name="gdk_content_formats_match_gtype">
<description>
Finds the first `GType` from @first that is also contained
in @second.

If no matching `GType` is found, %G_TYPE_INVALID is returned.


</description>
<parameters>
<parameter name="first">
<parameter_description> the primary `GdkContentFormats` to intersect
</parameter_description>
</parameter>
<parameter name="second">
<parameter_description> the `GdkContentFormats` to intersect with
</parameter_description>
</parameter>
</parameters>
<return> The first common `GType` or %G_TYPE_INVALID if none.
</return>
</function>

<function name="gdk_content_formats_match_mime_type">
<description>
Finds the first mime type from @first that is also contained
in @second.

If no matching mime type is found, %NULL is returned.


</description>
<parameters>
<parameter name="first">
<parameter_description> the primary `GdkContentFormats` to intersect
</parameter_description>
</parameter>
<parameter name="second">
<parameter_description> the `GdkContentFormats` to intersect with
</parameter_description>
</parameter>
</parameters>
<return> The first common mime type or %NULL if none
</return>
</function>

<function name="gdk_content_formats_new">
<description>
Creates a new `GdkContentFormats` from an array of mime types.

The mime types must be valid and different from each other or the
behavior of the return value is undefined. If you cannot guarantee
this, use [struct@Gdk.ContentFormatsBuilder] instead.


</description>
<parameters>
<parameter name="mime_types">
<parameter_description> Pointer to an
array of mime types
</parameter_description>
</parameter>
<parameter name="n_mime_types">
<parameter_description> number of entries in @mime_types.
</parameter_description>
</parameter>
</parameters>
<return> the new `GdkContentFormats`.
</return>
</function>

<function name="gdk_content_formats_new_for_gtype">
<description>
Creates a new `GdkContentFormats` for a given `GType`.


</description>
<parameters>
<parameter name="type">
<parameter_description> a `GType`
</parameter_description>
</parameter>
</parameters>
<return> a new `GdkContentFormats`
</return>
</function>

<function name="gdk_content_formats_parse">
<description>
Parses the given @string into `GdkContentFormats` and
returns the formats.

Strings printed via [method@Gdk.ContentFormats.to_string]
can be read in again successfully using this function.

If @string does not describe valid content formats, %NULL
is returned.

Since: 4.4

</description>
<parameters>
<parameter name="string">
<parameter_description> the string to parse
</parameter_description>
</parameter>
</parameters>
<return> the content formats if @string is valid

</return>
</function>

<function name="gdk_content_formats_print">
<description>
Prints the given @formats into a string for human consumption.

The result of this function can later be parsed with
[func@Gdk.ContentFormats.parse].

</description>
<parameters>
<parameter name="formats">
<parameter_description> a `GdkContentFormats`
</parameter_description>
</parameter>
<parameter name="string">
<parameter_description> a `GString` to print into
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_content_formats_ref">
<description>
Increases the reference count of a `GdkContentFormats` by one.


</description>
<parameters>
<parameter name="formats">
<parameter_description>  a `GdkContentFormats`
</parameter_description>
</parameter>
</parameters>
<return> the passed in `GdkContentFormats`.
</return>
</function>

<function name="gdk_content_formats_to_string">
<description>
Prints the given @formats into a human-readable string.

The resulting string can be parsed with [func@Gdk.ContentFormats.parse].

This is a small wrapper around [method@Gdk.ContentFormats.print]
to help when debugging.


</description>
<parameters>
<parameter name="formats">
<parameter_description> a `GdkContentFormats`
</parameter_description>
</parameter>
</parameters>
<return> a new string
</return>
</function>

<function name="gdk_content_formats_union">
<description>
Append all missing types from @second to @first, in the order
they had in @second.


</description>
<parameters>
<parameter name="first">
<parameter_description> the `GdkContentFormats` to merge into
</parameter_description>
</parameter>
<parameter name="second">
<parameter_description> the `GdkContentFormats` to merge from
</parameter_description>
</parameter>
</parameters>
<return> a new `GdkContentFormats`
</return>
</function>

<function name="gdk_content_formats_union_deserialize_gtypes">
<description>
Add GTypes for mime types in @formats for which deserializers are
registered.

Return: a new `GdkContentFormats`

</description>
<parameters>
<parameter name="formats">
<parameter_description> a `GdkContentFormats`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_content_formats_union_deserialize_mime_types">
<description>
Add mime types for GTypes in @formats for which deserializers are
registered.

Return: a new `GdkContentFormats`

</description>
<parameters>
<parameter name="formats">
<parameter_description> a `GdkContentFormats`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_content_formats_union_serialize_gtypes">
<description>
Add GTypes for the mime types in @formats for which serializers are
registered.

Return: a new `GdkContentFormats`

</description>
<parameters>
<parameter name="formats">
<parameter_description> a `GdkContentFormats`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_content_formats_union_serialize_mime_types">
<description>
Add mime types for GTypes in @formats for which serializers are
registered.

Return: a new `GdkContentFormats`

</description>
<parameters>
<parameter name="formats">
<parameter_description>  a `GdkContentFormats`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_content_formats_unref">
<description>
Decreases the reference count of a `GdkContentFormats` by one.

If the resulting reference count is zero, frees the formats.

</description>
<parameters>
<parameter name="formats">
<parameter_description> a `GdkContentFormats`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_content_provider_content_changed">
<description>
Emits the ::content-changed signal.

</description>
<parameters>
<parameter name="provider">
<parameter_description> a `GdkContentProvider`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_content_provider_get_value">
<description>
Gets the contents of @provider stored in @value.

The @value will have been initialized to the `GType` the value should be
provided in. This given `GType` does not need to be listed in the formats
returned by [method@Gdk.ContentProvider.ref_formats]. However, if the
given `GType` is not supported, this operation can fail and
`G_IO_ERROR_NOT_SUPPORTED` will be reported.


</description>
<parameters>
<parameter name="provider">
<parameter_description> a `GdkContentProvider`
</parameter_description>
</parameter>
<parameter name="value">
<parameter_description> the `GValue` to fill
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> a `GError` location to store the error occurring
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the value was set successfully. Otherwise
@error will be set to describe the failure.
</return>
</function>

<function name="gdk_content_provider_new_for_bytes">
<description>
Create a content provider that provides the given @bytes as data for
the given @mime_type.


</description>
<parameters>
<parameter name="mime_type">
<parameter_description> the mime type
</parameter_description>
</parameter>
<parameter name="bytes">
<parameter_description> a `GBytes` with the data for @mime_type
</parameter_description>
</parameter>
</parameters>
<return> a new `GdkContentProvider`
</return>
</function>

<function name="gdk_content_provider_new_for_value">
<description>
Create a content provider that provides the given @value.


</description>
<parameters>
<parameter name="value">
<parameter_description> a `GValue`
</parameter_description>
</parameter>
</parameters>
<return> a new `GdkContentProvider`
</return>
</function>

<function name="gdk_content_provider_new_typed">
<description>
Create a content provider that provides the value of the given
@type.

The value is provided using G_VALUE_COLLECT(), so the same rules
apply as when calling g_object_new() or g_object_set().


</description>
<parameters>
<parameter name="type">
<parameter_description> Type of value to follow
</parameter_description>
</parameter>
<parameter name="Varargs">
<parameter_description> value
</parameter_description>
</parameter>
</parameters>
<return> a new `GdkContentProvider`
</return>
</function>

<function name="gdk_content_provider_new_union">
<description>
Creates a content provider that represents all the given @providers.

Whenever data needs to be written, the union provider will try the given
@providers in the given order and the first one supporting a format will
be chosen to provide it.

This allows an easy way to support providing data in different formats.
For example, an image may be provided by its file and by the image
contents with a call such as
```c
gdk_content_provider_new_union ((GdkContentProvider *[2]) {
gdk_content_provider_new_typed (G_TYPE_FILE, file),
gdk_content_provider_new_typed (G_TYPE_TEXTURE, texture)
}, 2);
```


</description>
<parameters>
<parameter name="providers">
<parameter_description>
The `GdkContentProvider`s to present the union of
</parameter_description>
</parameter>
<parameter name="n_providers">
<parameter_description> the number of providers
</parameter_description>
</parameter>
</parameters>
<return> a new `GdkContentProvider`
</return>
</function>

<function name="gdk_content_provider_ref_formats">
<description>
Gets the formats that the provider can provide its current contents in.


</description>
<parameters>
<parameter name="provider">
<parameter_description> a `GdkContentProvider`
</parameter_description>
</parameter>
</parameters>
<return> The formats of the provider
</return>
</function>

<function name="gdk_content_provider_ref_storable_formats">
<description>
Gets the formats that the provider suggests other applications to store
the data in.

An example of such an application would be a clipboard manager.

This can be assumed to be a subset of [method@Gdk.ContentProvider.ref_formats].


</description>
<parameters>
<parameter name="provider">
<parameter_description> a `GdkContentProvider`
</parameter_description>
</parameter>
</parameters>
<return> The storable formats of the provider
</return>
</function>

<function name="gdk_content_provider_write_mime_type_async">
<description>
Asynchronously writes the contents of @provider to @stream in the given
@mime_type.

When the operation is finished @callback will be called. You must then call
[method@Gdk.ContentProvider.write_mime_type_finish] to get the result
of the operation.

The given mime type does not need to be listed in the formats returned by
[method@Gdk.ContentProvider.ref_formats]. However, if the given `GType` is
not supported, `G_IO_ERROR_NOT_SUPPORTED` will be reported.

The given @stream will not be closed.

</description>
<parameters>
<parameter name="provider">
<parameter_description> a `GdkContentProvider`
</parameter_description>
</parameter>
<parameter name="mime_type">
<parameter_description> the mime type to provide the data in
</parameter_description>
</parameter>
<parameter name="stream">
<parameter_description> the `GOutputStream` to write to
</parameter_description>
</parameter>
<parameter name="io_priority">
<parameter_description> I/O priority of the request.
</parameter_description>
</parameter>
<parameter name="cancellable">
<parameter_description> optional `GCancellable` object, %NULL to ignore.
</parameter_description>
</parameter>
<parameter name="callback">
<parameter_description> callback to call when the request is satisfied
</parameter_description>
</parameter>
<parameter name="user_data">
<parameter_description> the data to pass to callback function
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_content_provider_write_mime_type_finish">
<description>
Finishes an asynchronous write operation.

See [method@Gdk.ContentProvider.write_mime_type_async].


</description>
<parameters>
<parameter name="provider">
<parameter_description> a `GdkContentProvider`
</parameter_description>
</parameter>
<parameter name="result">
<parameter_description> a `GAsyncResult`
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> a `GError` location to store the error occurring
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the operation was completed successfully. Otherwise
@error will be set to describe the failure.
</return>
</function>

<function name="gdk_content_register_deserializer">
<description>
Registers a function to deserialize object of a given type.

</description>
<parameters>
<parameter name="mime_type">
<parameter_description> the mime type which the function can deserialize from
</parameter_description>
</parameter>
<parameter name="type">
<parameter_description> the type of objects that the function creates
</parameter_description>
</parameter>
<parameter name="deserialize">
<parameter_description> the callback
</parameter_description>
</parameter>
<parameter name="data">
<parameter_description> data that @deserialize can access
</parameter_description>
</parameter>
<parameter name="notify">
<parameter_description> destroy notify for @data
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_content_register_serializer">
<description>
Registers a function to serialize objects of a given type.

</description>
<parameters>
<parameter name="type">
<parameter_description> the type of objects that the function can serialize
</parameter_description>
</parameter>
<parameter name="mime_type">
<parameter_description> the mime type to serialize to
</parameter_description>
</parameter>
<parameter name="serialize">
<parameter_description> the callback
</parameter_description>
</parameter>
<parameter name="data">
<parameter_description> data that @serialize can access
</parameter_description>
</parameter>
<parameter name="notify">
<parameter_description> destroy notify for @data
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_content_serialize_async">
<description>
Serialize content and write it to the given output stream, asynchronously.

The default I/O priority is %G_PRIORITY_DEFAULT (i.e. 0), and lower numbers
indicate a higher priority.

When the operation is finished, @callback will be called. You must then
call [func@Gdk.content_serialize_finish] to get the result of the operation.

</description>
<parameters>
<parameter name="stream">
<parameter_description> a `GOutputStream` to write the serialized content to
</parameter_description>
</parameter>
<parameter name="mime_type">
<parameter_description> the mime type to serialize to
</parameter_description>
</parameter>
<parameter name="value">
<parameter_description> the content to serialize
</parameter_description>
</parameter>
<parameter name="io_priority">
<parameter_description> the I/O priority of the operation
</parameter_description>
</parameter>
<parameter name="cancellable">
<parameter_description> optional `GCancellable` object
</parameter_description>
</parameter>
<parameter name="callback">
<parameter_description> callback to call when the operation is done
</parameter_description>
</parameter>
<parameter name="user_data">
<parameter_description> data to pass to the callback function
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_content_serialize_finish">
<description>
Finishes a content serialization operation.


</description>
<parameters>
<parameter name="result">
<parameter_description> the `GAsyncResult`
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> return location for an error
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the operation was successful, %FALSE if an
error occurred. In this case, @error is set
</return>
</function>

<function name="gdk_content_serializer_get_cancellable">
<description>
Gets the cancellable for the current operation.

This is the `GCancellable` that was passed to [func@content_serialize_async].


</description>
<parameters>
<parameter name="serializer">
<parameter_description> a `GdkContentSerializer`
</parameter_description>
</parameter>
</parameters>
<return> the cancellable for the current operation
</return>
</function>

<function name="gdk_content_serializer_get_gtype">
<description>
Gets the `GType` to of the object to serialize.


</description>
<parameters>
<parameter name="serializer">
<parameter_description> a `GdkContentSerializer`
</parameter_description>
</parameter>
</parameters>
<return> the `GType` for the current operation
</return>
</function>

<function name="gdk_content_serializer_get_mime_type">
<description>
Gets the mime type to serialize to.


</description>
<parameters>
<parameter name="serializer">
<parameter_description> a `GdkContentSerializer`
</parameter_description>
</parameter>
</parameters>
<return> the mime type for the current operation
</return>
</function>

<function name="gdk_content_serializer_get_output_stream">
<description>
Gets the output stream for the current operation.

This is the stream that was passed to [func@content_serialize_async].


</description>
<parameters>
<parameter name="serializer">
<parameter_description> a `GdkContentSerializer`
</parameter_description>
</parameter>
</parameters>
<return> the output stream for the current operation
</return>
</function>

<function name="gdk_content_serializer_get_priority">
<description>
Gets the I/O priority for the current operation.

This is the priority that was passed to [func@content_serialize_async].


</description>
<parameters>
<parameter name="serializer">
<parameter_description> a `GdkContentSerializer`
</parameter_description>
</parameter>
</parameters>
<return> the I/O priority for the current operation
</return>
</function>

<function name="gdk_content_serializer_get_task_data">
<description>
Gets the data that was associated with the current operation.

See [method@Gdk.ContentSerializer.set_task_data].


</description>
<parameters>
<parameter name="serializer">
<parameter_description> a `GdkContentSerializer`
</parameter_description>
</parameter>
</parameters>
<return> the task data for @serializer
</return>
</function>

<function name="gdk_content_serializer_get_user_data">
<description>
Gets the user data that was passed when the serializer was registered.


</description>
<parameters>
<parameter name="serializer">
<parameter_description> a `GdkContentSerializer`
</parameter_description>
</parameter>
</parameters>
<return> the user data for this serializer
</return>
</function>

<function name="gdk_content_serializer_get_value">
<description>
Gets the `GValue` to read the object to serialize from.


</description>
<parameters>
<parameter name="serializer">
<parameter_description> a `GdkContentSerializer`
</parameter_description>
</parameter>
</parameters>
<return> the `GValue` for the current operation
</return>
</function>

<function name="gdk_content_serializer_return_error">
<description>
Indicate that the serialization has ended with an error.

This function consumes @error.

</description>
<parameters>
<parameter name="serializer">
<parameter_description> a `GdkContentSerializer`
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> a `GError`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_content_serializer_return_success">
<description>
Indicate that the serialization has been successfully completed.

</description>
<parameters>
<parameter name="serializer">
<parameter_description> a `GdkContentSerializer`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_content_serializer_set_task_data">
<description>
Associate data with the current serialization operation.

</description>
<parameters>
<parameter name="serializer">
<parameter_description> a `GdkContentSerializer`
</parameter_description>
</parameter>
<parameter name="data">
<parameter_description> data to associate with this operation
</parameter_description>
</parameter>
<parameter name="notify">
<parameter_description> destroy notify for @data
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_crossing_event_get_detail">
<description>
Extracts the notify detail from a crossing event.


</description>
<parameters>
<parameter name="event">
<parameter_description> a crossing event
</parameter_description>
</parameter>
</parameters>
<return> the notify detail of @event
</return>
</function>

<function name="gdk_crossing_event_get_focus">
<description>
Checks if the @event surface is the focus surface.


</description>
<parameters>
<parameter name="event">
<parameter_description> a crossing event
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the surface is the focus surface
</return>
</function>

<function name="gdk_crossing_event_get_mode">
<description>
Extracts the crossing mode from a crossing event.


</description>
<parameters>
<parameter name="event">
<parameter_description> a crossing event
</parameter_description>
</parameter>
</parameters>
<return> the mode of @event
</return>
</function>

<function name="gdk_cursor_get_fallback">
<description>
Returns the fallback for this @cursor.

The fallback will be used if this cursor is not available on a given
`GdkDisplay`. For named cursors, this can happen when using nonstandard
names or when using an incomplete cursor theme. For textured cursors,
this can happen when the texture is too large or when the `GdkDisplay`
it is used on does not support textured cursors.


</description>
<parameters>
<parameter name="cursor">
<parameter_description> a `GdkCursor`
</parameter_description>
</parameter>
</parameters>
<return> the fallback of the cursor or %NULL
to use the default cursor as fallback
</return>
</function>

<function name="gdk_cursor_get_hotspot_x">
<description>
Returns the horizontal offset of the hotspot.

The hotspot indicates the pixel that will be directly above the cursor.

Note that named cursors may have a nonzero hotspot, but this function
will only return the hotspot position for cursors created with
[ctor@Gdk.Cursor.new_from_texture].


</description>
<parameters>
<parameter name="cursor">
<parameter_description> a `GdkCursor`
</parameter_description>
</parameter>
</parameters>
<return> the horizontal offset of the hotspot or 0 for named cursors
</return>
</function>

<function name="gdk_cursor_get_hotspot_y">
<description>
Returns the vertical offset of the hotspot.

The hotspot indicates the pixel that will be directly above the cursor.

Note that named cursors may have a nonzero hotspot, but this function
will only return the hotspot position for cursors created with
[ctor@Gdk.Cursor.new_from_texture].


</description>
<parameters>
<parameter name="cursor">
<parameter_description> a `GdkCursor`
</parameter_description>
</parameter>
</parameters>
<return> the vertical offset of the hotspot or 0 for named cursors
</return>
</function>

<function name="gdk_cursor_get_name">
<description>
Returns the name of the cursor.

If the cursor is not a named cursor, %NULL will be returned.


</description>
<parameters>
<parameter name="cursor">
<parameter_description> a `GdkCursor`
</parameter_description>
</parameter>
</parameters>
<return> the name of the cursor or %NULL
if it is not a named cursor
</return>
</function>

<function name="gdk_cursor_get_texture">
<description>
Returns the texture for the cursor.

If the cursor is a named cursor, %NULL will be returned.


</description>
<parameters>
<parameter name="cursor">
<parameter_description> a `GdkCursor`
</parameter_description>
</parameter>
</parameters>
<return> the texture for cursor or %NULL
if it is a named cursor
</return>
</function>

<function name="gdk_cursor_new_from_name">
<description>
Creates a new cursor by looking up @name in the current cursor
theme.

A recommended set of cursor names that will work across different
platforms can be found in the CSS specification:

| | | | |
| --- | --- | ---- | --- |
| &quot;none&quot; | ![](default_cursor.png) &quot;default&quot; | ![](help_cursor.png) &quot;help&quot; | ![](pointer_cursor.png) &quot;pointer&quot; |
| ![](context_menu_cursor.png) &quot;context-menu&quot; | ![](progress_cursor.png) &quot;progress&quot; | ![](wait_cursor.png) &quot;wait&quot; | ![](cell_cursor.png) &quot;cell&quot; |
| ![](crosshair_cursor.png) &quot;crosshair&quot; | ![](text_cursor.png) &quot;text&quot; | ![](vertical_text_cursor.png) &quot;vertical-text&quot; | ![](alias_cursor.png) &quot;alias&quot; |
| ![](copy_cursor.png) &quot;copy&quot; | ![](no_drop_cursor.png) &quot;no-drop&quot; | ![](move_cursor.png) &quot;move&quot; | ![](not_allowed_cursor.png) &quot;not-allowed&quot; |
| ![](grab_cursor.png) &quot;grab&quot; | ![](grabbing_cursor.png) &quot;grabbing&quot; | ![](all_scroll_cursor.png) &quot;all-scroll&quot; | ![](col_resize_cursor.png) &quot;col-resize&quot; |
| ![](row_resize_cursor.png) &quot;row-resize&quot; | ![](n_resize_cursor.png) &quot;n-resize&quot; | ![](e_resize_cursor.png) &quot;e-resize&quot; | ![](s_resize_cursor.png) &quot;s-resize&quot; |
| ![](w_resize_cursor.png) &quot;w-resize&quot; | ![](ne_resize_cursor.png) &quot;ne-resize&quot; | ![](nw_resize_cursor.png) &quot;nw-resize&quot; | ![](sw_resize_cursor.png) &quot;sw-resize&quot; |
| ![](se_resize_cursor.png) &quot;se-resize&quot; | ![](ew_resize_cursor.png) &quot;ew-resize&quot; | ![](ns_resize_cursor.png) &quot;ns-resize&quot; | ![](nesw_resize_cursor.png) &quot;nesw-resize&quot; |
| ![](nwse_resize_cursor.png) &quot;nwse-resize&quot; | ![](zoom_in_cursor.png) &quot;zoom-in&quot; | ![](zoom_out_cursor.png) &quot;zoom-out&quot; | |


</description>
<parameters>
<parameter name="name">
<parameter_description> the name of the cursor
</parameter_description>
</parameter>
<parameter name="fallback">
<parameter_description> %NULL or the `GdkCursor` to fall back to when
this one cannot be supported
</parameter_description>
</parameter>
</parameters>
<return> a new `GdkCursor`, or %NULL if there is no
cursor with the given name
</return>
</function>

<function name="gdk_cursor_new_from_texture">
<description>
Creates a new cursor from a `GdkTexture`.


</description>
<parameters>
<parameter name="texture">
<parameter_description> the texture providing the pixel data
</parameter_description>
</parameter>
<parameter name="hotspot_x">
<parameter_description> the horizontal offset of the “hotspot” of the cursor
</parameter_description>
</parameter>
<parameter name="hotspot_y">
<parameter_description> the vertical offset of the “hotspot” of the cursor
</parameter_description>
</parameter>
<parameter name="fallback">
<parameter_description> the `GdkCursor` to fall back to when
this one cannot be supported
</parameter_description>
</parameter>
</parameters>
<return> a new `GdkCursor`
</return>
</function>

<function name="gdk_device_get_axis_use">
<description>
Returns the axis use for @index_.


</description>
<parameters>
<parameter name="device">
<parameter_description> a pointer `GdkDevice`
</parameter_description>
</parameter>
<parameter name="index_">
<parameter_description> the index of the axi.
</parameter_description>
</parameter>
</parameters>
<return> a `GdkAxisUse` specifying how the axis is used.
</return>
</function>

<function name="gdk_device_get_caps_lock_state">
<description>
Retrieves whether the Caps Lock modifier of the keyboard is locked.

This is only relevant for keyboard devices.


</description>
<parameters>
<parameter name="device">
<parameter_description> a `GdkDevice`
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if Caps Lock is on for @device
</return>
</function>

<function name="gdk_device_get_device_tool">
<description>
Retrieves the current tool for @device.


</description>
<parameters>
<parameter name="device">
<parameter_description> a `GdkDevice`
</parameter_description>
</parameter>
</parameters>
<return> the `GdkDeviceTool`
</return>
</function>

<function name="gdk_device_get_direction">
<description>
Returns the direction of effective layout of the keyboard.

This is only relevant for keyboard devices.

The direction of a layout is the direction of the majority
of its symbols. See [func@Pango.unichar_direction].


</description>
<parameters>
<parameter name="device">
<parameter_description> a `GdkDevice`
</parameter_description>
</parameter>
</parameters>
<return> %PANGO_DIRECTION_LTR or %PANGO_DIRECTION_RTL
if it can determine the direction. %PANGO_DIRECTION_NEUTRAL
otherwise
</return>
</function>

<function name="gdk_device_get_display">
<description>
Returns the `GdkDisplay` to which @device pertains.


</description>
<parameters>
<parameter name="device">
<parameter_description> a `GdkDevice`
</parameter_description>
</parameter>
</parameters>
<return> a `GdkDisplay`
</return>
</function>

<function name="gdk_device_get_has_cursor">
<description>
Determines whether the pointer follows device motion.

This is not meaningful for keyboard devices, which
don't have a pointer.


</description>
<parameters>
<parameter name="device">
<parameter_description> a `GdkDevice`
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the pointer follows device motion
</return>
</function>

<function name="gdk_device_get_modifier_state">
<description>
Retrieves the current modifier state of the keyboard.

This is only relevant for keyboard devices.


</description>
<parameters>
<parameter name="device">
<parameter_description> a `GdkDevice`
</parameter_description>
</parameter>
</parameters>
<return> the current modifier state
</return>
</function>

<function name="gdk_device_get_name">
<description>
The name of the device, suitable for showing in a user interface.


</description>
<parameters>
<parameter name="device">
<parameter_description> a GdkDevice`
</parameter_description>
</parameter>
</parameters>
<return> a name
</return>
</function>

<function name="gdk_device_get_num_lock_state">
<description>
Retrieves whether the Num Lock modifier of the keyboard is locked.

This is only relevant for keyboard devices.


</description>
<parameters>
<parameter name="device">
<parameter_description> a ``GdkDevice`
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if Num Lock is on for @device
</return>
</function>

<function name="gdk_device_get_num_touches">
<description>
Retrieves the number of touch points associated to @device.


</description>
<parameters>
<parameter name="device">
<parameter_description> a `GdkDevice`
</parameter_description>
</parameter>
</parameters>
<return> the number of touch points
</return>
</function>

<function name="gdk_device_get_product_id">
<description>
Returns the product ID of this device.

This ID is retrieved from the device, and does not change.
See [method@Gdk.Device.get_vendor_id] for more information.


</description>
<parameters>
<parameter name="device">
<parameter_description> a physical `GdkDevice`
</parameter_description>
</parameter>
</parameters>
<return> the product ID
</return>
</function>

<function name="gdk_device_get_scroll_lock_state">
<description>
Retrieves whether the Scroll Lock modifier of the keyboard is locked.

This is only relevant for keyboard devices.


</description>
<parameters>
<parameter name="device">
<parameter_description> a `GdkDevice`
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if Scroll Lock is on for @device
</return>
</function>

<function name="gdk_device_get_seat">
<description>
Returns the `GdkSeat` the device belongs to.


</description>
<parameters>
<parameter name="device">
<parameter_description> A `GdkDevice`
</parameter_description>
</parameter>
</parameters>
<return> a `GdkSeat`
</return>
</function>

<function name="gdk_device_get_source">
<description>
Determines the type of the device.


</description>
<parameters>
<parameter name="device">
<parameter_description> a `GdkDevice`
</parameter_description>
</parameter>
</parameters>
<return> a `GdkInputSource`
</return>
</function>

<function name="gdk_device_get_surface_at_position">
<description>
Obtains the surface underneath @device, returning the location of the
device in @win_x and @win_y.


</description>
<parameters>
<parameter name="device">
<parameter_description> pointer `GdkDevice` to query info to
</parameter_description>
</parameter>
<parameter name="win_x">
<parameter_description> return location for the X coordinate
of the device location relative to the surface origin
</parameter_description>
</parameter>
<parameter name="win_y">
<parameter_description> return location for the Y coordinate
of the device location relative to the surface origin
</parameter_description>
</parameter>
</parameters>
<return> the `GdkSurface` under the
device position
</return>
</function>

<function name="gdk_device_get_timestamp">
<description>
Returns the timestamp of the last activity for this device.

In practice, this means the timestamp of the last event that was
received from the OS for this device. (GTK may occasionally produce
events for a device that are not received from the OS, and will not
update the timestamp).

Since: 4.2

</description>
<parameters>
<parameter name="device">
<parameter_description> a `GdkDevice`
</parameter_description>
</parameter>
</parameters>
<return> the timestamp of the last activity for this device

</return>
</function>

<function name="gdk_device_get_vendor_id">
<description>
Returns the vendor ID of this device.

This ID is retrieved from the device, and does not change.

This function, together with [method@Gdk.Device.get_product_id],
can be used to eg. compose `GSettings` paths to store settings
for this device.

```c
static GSettings *
get_device_settings (GdkDevice *device)
{
const char *vendor, *product;
GSettings *settings;
GdkDevice *device;
char *path;

vendor = gdk_device_get_vendor_id (device);
product = gdk_device_get_product_id (device);

path = g_strdup_printf (&quot;/org/example/app/devices/%s:%s/&quot;, vendor, product);
settings = g_settings_new_with_path (DEVICE_SCHEMA, path);
g_free (path);

return settings;
}
```


</description>
<parameters>
<parameter name="device">
<parameter_description> a physical `GdkDevice`
</parameter_description>
</parameter>
</parameters>
<return> the vendor ID
</return>
</function>

<function name="gdk_device_has_bidi_layouts">
<description>
Determines if layouts for both right-to-left and
left-to-right languages are in use on the keyboard.

This is only relevant for keyboard devices.


</description>
<parameters>
<parameter name="device">
<parameter_description> a `GdkDevice`
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if there are layouts with both directions, %FALSE otherwise
</return>
</function>

<function name="gdk_device_pad_get_feature_group">
<description>
Returns the group the given @feature and @idx belong to.

f the feature or index do not exist in @pad, -1 is returned.


</description>
<parameters>
<parameter name="pad">
<parameter_description> a `GdkDevicePad`
</parameter_description>
</parameter>
<parameter name="feature">
<parameter_description> the feature type to get the group from
</parameter_description>
</parameter>
<parameter name="feature_idx">
<parameter_description> the index of the feature to get the group from
</parameter_description>
</parameter>
</parameters>
<return> The group number of the queried pad feature.
</return>
</function>

<function name="gdk_device_pad_get_group_n_modes">
<description>
Returns the number of modes that @group may have.


</description>
<parameters>
<parameter name="pad">
<parameter_description> a `GdkDevicePad`
</parameter_description>
</parameter>
<parameter name="group_idx">
<parameter_description> group to get the number of available modes from
</parameter_description>
</parameter>
</parameters>
<return> The number of modes available in @group.
</return>
</function>

<function name="gdk_device_pad_get_n_features">
<description>
Returns the number of features a tablet pad has.


</description>
<parameters>
<parameter name="pad">
<parameter_description> a `GdkDevicePad`
</parameter_description>
</parameter>
<parameter name="feature">
<parameter_description> a pad feature
</parameter_description>
</parameter>
</parameters>
<return> The amount of elements of type @feature that this pad has.
</return>
</function>

<function name="gdk_device_pad_get_n_groups">
<description>
Returns the number of groups this pad device has.

Pads have at least one group. A pad group is a subcollection of
buttons/strip/rings that is affected collectively by a same
current mode.


</description>
<parameters>
<parameter name="pad">
<parameter_description> a `GdkDevicePad`
</parameter_description>
</parameter>
</parameters>
<return> The number of button/ring/strip groups in the pad.
</return>
</function>

<function name="gdk_device_tool_get_axes">
<description>
Gets the axes of the tool.


</description>
<parameters>
<parameter name="tool">
<parameter_description> a `GdkDeviceTool`
</parameter_description>
</parameter>
</parameters>
<return> the axes of @tool
</return>
</function>

<function name="gdk_device_tool_get_hardware_id">
<description>
Gets the hardware ID of this tool, or 0 if it's not known.

When non-zero, the identifier is unique for the given tool model,
meaning that two identical tools will share the same @hardware_id,
but will have different serial numbers (see
[method@Gdk.DeviceTool.get_serial]).

This is a more concrete (and device specific) method to identify
a `GdkDeviceTool` than [method@Gdk.DeviceTool.get_tool_type],
as a tablet may support multiple devices with the same
`GdkDeviceToolType`, but different hardware identifiers.


</description>
<parameters>
<parameter name="tool">
<parameter_description> a `GdkDeviceTool`
</parameter_description>
</parameter>
</parameters>
<return> The hardware identifier of this tool.
</return>
</function>

<function name="gdk_device_tool_get_serial">
<description>
Gets the serial number of this tool.

This value can be used to identify a physical tool
(eg. a tablet pen) across program executions.


</description>
<parameters>
<parameter name="tool">
<parameter_description> a `GdkDeviceTool`
</parameter_description>
</parameter>
</parameters>
<return> The serial ID for this tool
</return>
</function>

<function name="gdk_device_tool_get_tool_type">
<description>
Gets the `GdkDeviceToolType` of the tool.


</description>
<parameters>
<parameter name="tool">
<parameter_description> a `GdkDeviceTool`
</parameter_description>
</parameter>
</parameters>
<return> The physical type for this tool. This can be used to
figure out what sort of pen is being used, such as an airbrush
or a pencil.
</return>
</function>

<function name="gdk_display_beep">
<description>
Emits a short beep on @display

</description>
<parameters>
<parameter name="display">
<parameter_description> a `GdkDisplay`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_display_close">
<description>
Closes the connection to the windowing system for the given display.

This cleans up associated resources.

</description>
<parameters>
<parameter name="display">
<parameter_description> a `GdkDisplay`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_display_create_gl_context">
<description>
Creates a new `GdkGLContext` for the `GdkDisplay`.

The context is disconnected from any particular surface or surface
and cannot be used to draw to any surface. It can only be used to
draw to non-surface framebuffers like textures.

If the creation of the `GdkGLContext` failed, @error will be set.
Before using the returned `GdkGLContext`, you will need to
call [method@Gdk.GLContext.make_current] or [method@Gdk.GLContext.realize].

Since: 4.6

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDisplay`
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> return location for an error
</parameter_description>
</parameter>
</parameters>
<return> the newly created `GdkGLContext`

</return>
</function>

<function name="gdk_display_device_is_grabbed">
<description>
Returns %TRUE if there is an ongoing grab on @device for @display.


</description>
<parameters>
<parameter name="display">
<parameter_description> a `GdkDisplay`
</parameter_description>
</parameter>
<parameter name="device">
<parameter_description> a `GdkDevice`
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if there is a grab in effect for @device.
</return>
</function>

<function name="gdk_display_flush">
<description>
Flushes any requests queued for the windowing system.

This happens automatically when the main loop blocks waiting for new events,
but if your application is drawing without returning control to the main loop,
you may need to call this function explicitly. A common case where this function
needs to be called is when an application is executing drawing commands
from a thread other than the thread where the main loop is running.

This is most useful for X11. On windowing systems where requests are
handled synchronously, this function will do nothing.

</description>
<parameters>
<parameter name="display">
<parameter_description> a `GdkDisplay`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_display_get_app_launch_context">
<description>
Returns a `GdkAppLaunchContext` suitable for launching
applications on the given display.


</description>
<parameters>
<parameter name="display">
<parameter_description> a `GdkDisplay`
</parameter_description>
</parameter>
</parameters>
<return> a new `GdkAppLaunchContext` for @display
</return>
</function>

<function name="gdk_display_get_clipboard">
<description>
Gets the clipboard used for copy/paste operations.


</description>
<parameters>
<parameter name="display">
<parameter_description> a `GdkDisplay`
</parameter_description>
</parameter>
</parameters>
<return> the display's clipboard
</return>
</function>

<function name="gdk_display_get_default">
<description>
Gets the default `GdkDisplay`.

This is a convenience function for:

gdk_display_manager_get_default_display (gdk_display_manager_get ())


</description>
<parameters>
</parameters>
<return> a `GdkDisplay`, or %NULL if
there is no default display
</return>
</function>

<function name="gdk_display_get_default_seat">
<description>
Returns the default `GdkSeat` for this display.

Note that a display may not have a seat. In this case,
this function will return %NULL.


</description>
<parameters>
<parameter name="display">
<parameter_description> a `GdkDisplay`
</parameter_description>
</parameter>
</parameters>
<return> the default seat.
</return>
</function>

<function name="gdk_display_get_dmabuf_formats">
<description>
Returns the dma-buf formats that are supported on this display.

GTK may use OpenGL or Vulkan to support some formats.
Calling this function will then initialize them if they aren't yet.

The formats returned by this function can be used for negotiating
buffer formats with producers such as v4l, pipewire or GStreamer.

To learn more about dma-bufs, see [class@Gdk.DmabufTextureBuilder].

Since: 4.14

</description>
<parameters>
<parameter name="display">
<parameter_description> a `GdkDisplay`
</parameter_description>
</parameter>
</parameters>
<return> a `GdkDmabufFormats` object

</return>
</function>

<function name="gdk_display_get_monitor_at_surface">
<description>
Gets the monitor in which the largest area of @surface
resides.


</description>
<parameters>
<parameter name="display">
<parameter_description> a `GdkDisplay`
</parameter_description>
</parameter>
<parameter name="surface">
<parameter_description> a `GdkSurface`
</parameter_description>
</parameter>
</parameters>
<return> the monitor with the largest
overlap with @surface
</return>
</function>

<function name="gdk_display_get_monitors">
<description>
Gets the list of monitors associated with this display.

Subsequent calls to this function will always return the
same list for the same display.

You can listen to the GListModel::items-changed signal on
this list to monitor changes to the monitor of this display.


</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDisplay`
</parameter_description>
</parameter>
</parameters>
<return> a `GListModel` of `GdkMonitor`
</return>
</function>

<function name="gdk_display_get_name">
<description>
Gets the name of the display.


</description>
<parameters>
<parameter name="display">
<parameter_description> a `GdkDisplay`
</parameter_description>
</parameter>
</parameters>
<return> a string representing the display name. This string is owned
by GDK and should not be modified or freed.
</return>
</function>

<function name="gdk_display_get_primary_clipboard">
<description>
Gets the clipboard used for the primary selection.

On backends where the primary clipboard is not supported natively,
GDK emulates this clipboard locally.


</description>
<parameters>
<parameter name="display">
<parameter_description> a `GdkDisplay`
</parameter_description>
</parameter>
</parameters>
<return> the primary clipboard
</return>
</function>

<function name="gdk_display_get_setting">
<description>
Retrieves a desktop-wide setting such as double-click time
for the @display.


</description>
<parameters>
<parameter name="display">
<parameter_description> a `GdkDisplay`
</parameter_description>
</parameter>
<parameter name="name">
<parameter_description> the name of the setting
</parameter_description>
</parameter>
<parameter name="value">
<parameter_description> location to store the value of the setting
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the setting existed and a value was stored
in @value, %FALSE otherwise
</return>
</function>

<function name="gdk_display_get_startup_notification_id">
<description>
Gets the startup notification ID for a Wayland display, or %NULL
if no ID has been defined.

Deprecated: 4.10

</description>
<parameters>
<parameter name="display">
<parameter_description> a `GdkDisplay`
</parameter_description>
</parameter>
</parameters>
<return> the startup notification ID for @display

</return>
</function>

<function name="gdk_display_is_closed">
<description>
Finds out if the display has been closed.


</description>
<parameters>
<parameter name="display">
<parameter_description> a `GdkDisplay`
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the display is closed.
</return>
</function>

<function name="gdk_display_is_composited">
<description>
Returns whether surfaces can reasonably be expected to have
their alpha channel drawn correctly on the screen.

Check [method@Gdk.Display.is_rgba] for whether the display
supports an alpha channel.

On X11 this function returns whether a compositing manager is
compositing on @display.

On modern displays, this value is always %TRUE.


</description>
<parameters>
<parameter name="display">
<parameter_description> a `GdkDisplay`
</parameter_description>
</parameter>
</parameters>
<return> Whether surfaces with RGBA visuals can reasonably
be expected to have their alpha channels drawn correctly
on the screen.
</return>
</function>

<function name="gdk_display_is_rgba">
<description>
Returns whether surfaces on this @display are created with an
alpha channel.

Even if a %TRUE is returned, it is possible that the
surface’s alpha channel won’t be honored when displaying the
surface on the screen: in particular, for X an appropriate
windowing manager and compositing manager must be running to
provide appropriate display. Use [method@Gdk.Display.is_composited]
to check if that is the case.

On modern displays, this value is always %TRUE.


</description>
<parameters>
<parameter name="display">
<parameter_description> a `GdkDisplay`
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if surfaces are created with an alpha channel or
%FALSE if the display does not support this functionality.
</return>
</function>

<function name="gdk_display_list_seats">
<description>
Returns the list of seats known to @display.


</description>
<parameters>
<parameter name="display">
<parameter_description> a `GdkDisplay`
</parameter_description>
</parameter>
</parameters>
<return> the
list of seats known to the `GdkDisplay`
</return>
</function>

<function name="gdk_display_manager_get">
<description>
Gets the singleton `GdkDisplayManager` object.

When called for the first time, this function consults the
`GDK_BACKEND` environment variable to find out which of the
supported GDK backends to use (in case GDK has been compiled
with multiple backends).

Applications can use [func@set_allowed_backends] to limit what
backends will be used.


</description>
<parameters>
</parameters>
<return> The global `GdkDisplayManager` singleton
</return>
</function>

<function name="gdk_display_manager_get_default_display">
<description>
Gets the default `GdkDisplay`.


</description>
<parameters>
<parameter name="manager">
<parameter_description> a `GdkDisplayManager`
</parameter_description>
</parameter>
</parameters>
<return> a `GdkDisplay`
</return>
</function>

<function name="gdk_display_manager_list_displays">
<description>
List all currently open displays.


</description>
<parameters>
<parameter name="manager">
<parameter_description> a `GdkDisplayManager`
</parameter_description>
</parameter>
</parameters>
<return> a newly
allocated `GSList` of `GdkDisplay` objects
</return>
</function>

<function name="gdk_display_manager_open_display">
<description>
Opens a display.


</description>
<parameters>
<parameter name="manager">
<parameter_description> a `GdkDisplayManager`
</parameter_description>
</parameter>
<parameter name="name">
<parameter_description> the name of the display to open
</parameter_description>
</parameter>
</parameters>
<return> a `GdkDisplay`, or %NULL
if the display could not be opened
</return>
</function>

<function name="gdk_display_manager_set_default_display">
<description>
Sets @display as the default display.

</description>
<parameters>
<parameter name="manager">
<parameter_description> a `GdkDisplayManager`
</parameter_description>
</parameter>
<parameter name="display">
<parameter_description> a `GdkDisplay`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_display_map_keycode">
<description>
Returns the keyvals bound to @keycode.

The Nth `GdkKeymapKey` in @keys is bound to the Nth keyval in @keyvals.

When a keycode is pressed by the user, the keyval from
this list of entries is selected by considering the effective
keyboard group and level.

Free the returned arrays with g_free().


</description>
<parameters>
<parameter name="display">
<parameter_description> a `GdkDisplay`
</parameter_description>
</parameter>
<parameter name="keycode">
<parameter_description> a keycode
</parameter_description>
</parameter>
<parameter name="keys">
<parameter_description> return
location for array of `GdkKeymapKey`
</parameter_description>
</parameter>
<parameter name="keyvals">
<parameter_description> return
location for array of keyvals
</parameter_description>
</parameter>
<parameter name="n_entries">
<parameter_description> length of @keys and @keyvals
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if there were any entries
</return>
</function>

<function name="gdk_display_map_keyval">
<description>
Obtains a list of keycode/group/level combinations that will
generate @keyval.

Groups and levels are two kinds of keyboard mode; in general, the level
determines whether the top or bottom symbol on a key is used, and the
group determines whether the left or right symbol is used.

On US keyboards, the shift key changes the keyboard level, and there
are no groups. A group switch key might convert a keyboard between
Hebrew to English modes, for example.

`GdkEventKey` contains a %group field that indicates the active
keyboard group. The level is computed from the modifier mask.

The returned array should be freed with g_free().


</description>
<parameters>
<parameter name="display">
<parameter_description> a `GdkDisplay`
</parameter_description>
</parameter>
<parameter name="keyval">
<parameter_description> a keyval, such as %GDK_KEY_a, %GDK_KEY_Up, %GDK_KEY_Return, etc.
</parameter_description>
</parameter>
<parameter name="keys">
<parameter_description> return location
for an array of `GdkKeymapKey`
</parameter_description>
</parameter>
<parameter name="n_keys">
<parameter_description> return location for number of elements in returned array
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if keys were found and returned
</return>
</function>

<function name="gdk_display_notify_startup_complete">
<description>
Indicates to the GUI environment that the application has
finished loading, using a given identifier.

GTK will call this function automatically for [GtkWindow](../gtk4/class.Window.html)
with custom startup-notification identifier unless
[gtk_window_set_auto_startup_notification()](../gtk4/method.Window.set_auto_startup_notification.html)
is called to disable that feature.

Deprecated: 4.10: Using [method@Gdk.Toplevel.set_startup_id] is sufficient

</description>
<parameters>
<parameter name="display">
<parameter_description> a `GdkDisplay`
</parameter_description>
</parameter>
<parameter name="startup_id">
<parameter_description> a startup-notification identifier, for which
notification process should be completed
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_display_open">
<description>
Opens a display.

If opening the display fails, `NULL` is returned.


</description>
<parameters>
<parameter name="display_name">
<parameter_description> the name of the display to open
</parameter_description>
</parameter>
</parameters>
<return> a `GdkDisplay`
</return>
</function>

<function name="gdk_display_prepare_gl">
<description>
Checks that OpenGL is available for @self and ensures that it is
properly initialized.
When this fails, an @error will be set describing the error and this
function returns %FALSE.

Note that even if this function succeeds, creating a `GdkGLContext`
may still fail.

This function is idempotent. Calling it multiple times will just
return the same value or error.

You never need to call this function, GDK will call it automatically
as needed. But you can use it as a check when setting up code that
might make use of OpenGL.

Since: 4.4

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDisplay`
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> return location for a `GError`
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the display supports OpenGL

</return>
</function>

<function name="gdk_display_put_event">
<description>
Adds the given event to the event queue for @display.

Deprecated: 4.10: This function is only useful in very
special situations and should not be used by applications.

</description>
<parameters>
<parameter name="display">
<parameter_description> a `GdkDisplay`
</parameter_description>
</parameter>
<parameter name="event">
<parameter_description> a `GdkEvent`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_display_supports_input_shapes">
<description>
Returns %TRUE if the display supports input shapes.

This means that [method@Gdk.Surface.set_input_region] can
be used to modify the input shape of surfaces on @display.

On modern displays, this value is always %TRUE.


</description>
<parameters>
<parameter name="display">
<parameter_description> a `GdkDisplay`
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if surfaces with modified input shape are supported
</return>
</function>

<function name="gdk_display_supports_shadow_width">
<description>
Returns whether it's possible for a surface to draw outside of the window area.

If %TRUE is returned the application decides if it wants to draw shadows.
If %FALSE is returned, the compositor decides if it wants to draw shadows.

Since: 4.14

</description>
<parameters>
<parameter name="display">
<parameter_description> a `GdkDisplay`
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if surfaces can draw shadows or
%FALSE if the display does not support this functionality.

</return>
</function>

<function name="gdk_display_sync">
<description>
Flushes any requests queued for the windowing system and waits until all
requests have been handled.

This is often used for making sure that the display is synchronized
with the current state of the program. Calling [method@Gdk.Display.sync]
before [method@GdkX11.Display.error_trap_pop] makes sure that any errors
generated from earlier requests are handled before the error trap is removed.

This is most useful for X11. On windowing systems where requests are
handled synchronously, this function will do nothing.

</description>
<parameters>
<parameter name="display">
<parameter_description> a `GdkDisplay`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_display_translate_key">
<description>
Translates the contents of a `GdkEventKey` into a keyval, effective group,
and level.

Modifiers that affected the translation and are thus unavailable for
application use are returned in @consumed_modifiers.

The @effective_group is the group that was actually used for the
translation; some keys such as Enter are not affected by the active
keyboard group. The @level is derived from @state.

@consumed_modifiers gives modifiers that should be masked out
from @state when comparing this key press to a keyboard shortcut.
For instance, on a US keyboard, the `plus` symbol is shifted, so
when comparing a key press to a `&lt;Control&gt;plus` accelerator `&lt;Shift&gt;`
should be masked out.

This function should rarely be needed, since `GdkEventKey` already
contains the translated keyval. It is exported for the benefit of
virtualized test environments.


</description>
<parameters>
<parameter name="display">
<parameter_description> a `GdkDisplay`
</parameter_description>
</parameter>
<parameter name="keycode">
<parameter_description> a keycode
</parameter_description>
</parameter>
<parameter name="state">
<parameter_description> a modifier state
</parameter_description>
</parameter>
<parameter name="group">
<parameter_description> active keyboard group
</parameter_description>
</parameter>
<parameter name="keyval">
<parameter_description> return location for keyval
</parameter_description>
</parameter>
<parameter name="effective_group">
<parameter_description> return location for effective group
</parameter_description>
</parameter>
<parameter name="level">
<parameter_description> return location for level
</parameter_description>
</parameter>
<parameter name="consumed">
<parameter_description> return location for modifiers that were used
to determine the group or level
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if there was a keyval bound to keycode/state/group.
</return>
</function>

<function name="gdk_dmabuf_formats_contains">
<description>
Returns whether a given format is contained in @formats.

Since: 4.14

</description>
<parameters>
<parameter name="formats">
<parameter_description> a `GdkDmabufFormats`
</parameter_description>
</parameter>
<parameter name="fourcc">
<parameter_description> a format code
</parameter_description>
</parameter>
<parameter name="modifier">
<parameter_description> a format modifier
</parameter_description>
</parameter>
</parameters>
<return> `TRUE` if the format specified by the arguments
is part of @formats

</return>
</function>

<function name="gdk_dmabuf_formats_equal">
<description>
Returns whether @formats1 and @formats2 contain the
same dmabuf formats, in the same order.

Since: 4.14

</description>
<parameters>
<parameter name="formats1">
<parameter_description> a `GdkDmabufFormats`
</parameter_description>
</parameter>
<parameter name="formats2">
<parameter_description> another `GdkDmabufFormats`
</parameter_description>
</parameter>
</parameters>
<return> `TRUE` if @formats1 and @formats2 are equal

</return>
</function>

<function name="gdk_dmabuf_formats_get_format">
<description>
Gets the fourcc code and modifier for a format
that is contained in @formats.

Since: 4.14

</description>
<parameters>
<parameter name="formats">
<parameter_description> a `GdkDmabufFormats`
</parameter_description>
</parameter>
<parameter name="idx">
<parameter_description> the index of the format to return
</parameter_description>
</parameter>
<parameter name="fourcc">
<parameter_description> return location for the format code
</parameter_description>
</parameter>
<parameter name="modifier">
<parameter_description> return location for the format modifier
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_dmabuf_formats_get_n_formats">
<description>
Returns the number of formats that the @formats object
contains.

Note that DMA buffers are a Linux concept, so on other
platforms, [method@Gdk.DmabufFormats.get_n_formats] will
always return zero.

Since: 4.14

</description>
<parameters>
<parameter name="formats">
<parameter_description> a `GdkDmabufFormats`
</parameter_description>
</parameter>
</parameters>
<return> the number of formats

</return>
</function>

<function name="gdk_dmabuf_formats_ref">
<description>
Increases the reference count of @formats.

Since: 4.14

</description>
<parameters>
<parameter name="formats">
<parameter_description> a `GdkDmabufFormats`
</parameter_description>
</parameter>
</parameters>
<return> the passed-in object

</return>
</function>

<function name="gdk_dmabuf_formats_unref">
<description>
Decreases the reference count of @formats.

When the reference count reaches zero,
the object is freed.

Since: 4.14

</description>
<parameters>
<parameter name="formats">
<parameter_description> a `GdkDmabufFormats`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_dmabuf_texture_builder_build">
<description>
Builds a new `GdkTexture` with the values set up in the builder.

It is a programming error to call this function if any mandatory
property has not been set.

If the dmabuf is not supported by GTK, %NULL will be returned and @error will be set.

The `destroy` function gets called when the returned texture gets released.

It is possible to call this function multiple times to create multiple textures,
possibly with changing properties in between.

It is the responsibility of the caller to keep the file descriptors for the planes
open until the created texture is no longer used, and close them afterwards (possibly
using the @destroy notify).

Not all formats defined in the `drm_fourcc.h` header are supported. You can use
[method@Gdk.Display.get_dmabuf_formats] to get a list of supported formats.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDmabufTextureBuilder`
</parameter_description>
</parameter>
<parameter name="destroy">
<parameter_description> destroy function to be called when the texture is
released
</parameter_description>
</parameter>
<parameter name="data">
<parameter_description> user data to pass to the destroy function
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> Return location for an error
</parameter_description>
</parameter>
</parameters>
<return> a newly built `GdkTexture` or `NULL`
if the format is not supported

</return>
</function>

<function name="gdk_dmabuf_texture_builder_get_display">
<description>
Returns the display that this texture builder is
associated with.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDmabufTextureBuilder
</parameter_description>
</parameter>
</parameters>
<return> the display

</return>
</function>

<function name="gdk_dmabuf_texture_builder_get_fd">
<description>
Gets the file descriptor for a plane.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDmabufTextureBuilder`
</parameter_description>
</parameter>
<parameter name="plane">
<parameter_description> the plane to get the fd for
</parameter_description>
</parameter>
</parameters>
<return> the file descriptor

</return>
</function>

<function name="gdk_dmabuf_texture_builder_get_fourcc">
<description>
Gets the format previously set via gdk_dmabuf_texture_builder_set_fourcc()
or 0 if the format wasn't set.

The format is specified as a fourcc code.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDmabufTextureBuilder`
</parameter_description>
</parameter>
</parameters>
<return> The format

</return>
</function>

<function name="gdk_dmabuf_texture_builder_get_height">
<description>
Gets the height previously set via gdk_dmabuf_texture_builder_set_height() or
0 if the height wasn't set.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDmabufTextureBuilder`
</parameter_description>
</parameter>
</parameters>
<return> The height

</return>
</function>

<function name="gdk_dmabuf_texture_builder_get_modifier">
<description>
Gets the modifier value.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDmabufTextureBuilder`
</parameter_description>
</parameter>
</parameters>
<return> the modifier

</return>
</function>

<function name="gdk_dmabuf_texture_builder_get_n_planes">
<description>
Gets the number of planes.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDmabufTextureBuilder`
</parameter_description>
</parameter>
</parameters>
<return> The number of planes

</return>
</function>

<function name="gdk_dmabuf_texture_builder_get_offset">
<description>
Gets the offset value for a plane.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDmabufTextureBuilder`
</parameter_description>
</parameter>
<parameter name="plane">
<parameter_description> the plane to get the offset for
</parameter_description>
</parameter>
</parameters>
<return> the offset

</return>
</function>

<function name="gdk_dmabuf_texture_builder_get_premultiplied">
<description>
Whether the data is premultiplied.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDmabufTextureBuilder`
</parameter_description>
</parameter>
</parameters>
<return> whether the data is premultiplied

</return>
</function>

<function name="gdk_dmabuf_texture_builder_get_stride">
<description>
Gets the stride value for a plane.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDmabufTextureBuilder`
</parameter_description>
</parameter>
<parameter name="plane">
<parameter_description> the plane to get the stride for
</parameter_description>
</parameter>
</parameters>
<return> the stride

</return>
</function>

<function name="gdk_dmabuf_texture_builder_get_update_region">
<description>
Gets the region previously set via gdk_dmabuf_texture_builder_set_update_region() or
%NULL if none was set.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDmabufTextureBuilder`
</parameter_description>
</parameter>
</parameters>
<return> The region

</return>
</function>

<function name="gdk_dmabuf_texture_builder_get_update_texture">
<description>
Gets the texture previously set via gdk_dmabuf_texture_builder_set_update_texture() or
%NULL if none was set.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDmabufTextureBuilder`
</parameter_description>
</parameter>
</parameters>
<return> The texture

</return>
</function>

<function name="gdk_dmabuf_texture_builder_get_width">
<description>
Gets the width previously set via gdk_dmabuf_texture_builder_set_width() or
0 if the width wasn't set.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDmabufTextureBuilder`
</parameter_description>
</parameter>
</parameters>
<return> The width

</return>
</function>

<function name="gdk_dmabuf_texture_builder_set_display">
<description>
Sets the display that this texture builder is
associated with.

The display is used to determine the supported
dma-buf formats.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDmabufTextureBuilder
</parameter_description>
</parameter>
<parameter name="display">
<parameter_description> the display
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_dmabuf_texture_builder_set_fd">
<description>
Sets the file descriptor for a plane.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDmabufTextureBuilder`
</parameter_description>
</parameter>
<parameter name="plane">
<parameter_description> the plane to set the fd for
</parameter_description>
</parameter>
<parameter name="fd">
<parameter_description> the file descriptor
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_dmabuf_texture_builder_set_fourcc">
<description>
Sets the format of the texture.

The format is specified as a fourcc code.

The format must be set before calling [method@Gdk.GLTextureBuilder.build].

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDmabufTextureBuilder`
</parameter_description>
</parameter>
<parameter name="fourcc">
<parameter_description> the texture's format or 0 to unset
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_dmabuf_texture_builder_set_height">
<description>
Sets the height of the texture.

The height must be set before calling [method@Gdk.GLTextureBuilder.build].

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDmabufTextureBuilder`
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> the texture's height or 0 to unset
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_dmabuf_texture_builder_set_modifier">
<description>
Sets the modifier.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDmabufTextureBuilder`
</parameter_description>
</parameter>
<parameter name="modifier">
<parameter_description> the modifier value
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_dmabuf_texture_builder_set_n_planes">
<description>
Sets the number of planes of the texture.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDmabufTextureBuilder`
</parameter_description>
</parameter>
<parameter name="n_planes">
<parameter_description> the number of planes
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_dmabuf_texture_builder_set_offset">
<description>
Sets the offset for a plane.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDmabufTextureBuilder`
</parameter_description>
</parameter>
<parameter name="plane">
<parameter_description> the plane to set the offset for
</parameter_description>
</parameter>
<parameter name="offset">
<parameter_description> the offset value
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_dmabuf_texture_builder_set_premultiplied">
<description>
Sets whether the data is premultiplied.

Unless otherwise specified, all formats including alpha channels are assumed
to be premultiplied.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDmabufTextureBuilder`
</parameter_description>
</parameter>
<parameter name="premultiplied">
<parameter_description> whether the data is premultiplied
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_dmabuf_texture_builder_set_stride">
<description>
Sets the stride for a plane.

The stride must be set for all planes before calling [method@Gdk.GLTextureBuilder.build].

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDmabufTextureBuilder`
</parameter_description>
</parameter>
<parameter name="plane">
<parameter_description> the plane to set the stride for
</parameter_description>
</parameter>
<parameter name="stride">
<parameter_description> the stride value
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_dmabuf_texture_builder_set_update_region">
<description>
Sets the region to be updated by this texture. Together with
[property@Gdk.DmabufTextureBuilder:update-texture] this describes an
update of a previous texture.

When rendering animations of large textures, it is possible that
consecutive textures are only updating contents in parts of the texture.
It is then possible to describe this update via these two properties,
so that GTK can avoid rerendering parts that did not change.

An example would be a screen recording where only the mouse pointer moves.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDmabufTextureBuilder`
</parameter_description>
</parameter>
<parameter name="region">
<parameter_description> the region to update
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_dmabuf_texture_builder_set_update_texture">
<description>
Sets the texture to be updated by this texture. See
[method@Gdk.DmabufTextureBuilder.set_update_region] for an explanation.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDmabufTextureBuilder`
</parameter_description>
</parameter>
<parameter name="texture">
<parameter_description> the texture to update
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_dmabuf_texture_builder_set_width">
<description>
Sets the width of the texture.

The width must be set before calling [method@Gdk.GLTextureBuilder.build].

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDmabufTextureBuilder`
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> The texture's width or 0 to unset
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_dnd_event_get_drop">
<description>
Gets the `GdkDrop` object from a DND event.


</description>
<parameters>
<parameter name="event">
<parameter_description> a DND event
</parameter_description>
</parameter>
</parameters>
<return> the drop
</return>
</function>

<function name="gdk_drag_action_is_unique">
<description>
Checks if @action represents a single action or includes
multiple actions.

When @action is 0 - ie no action was given, %TRUE
is returned.


</description>
<parameters>
<parameter name="action">
<parameter_description> a `GdkDragAction`
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if exactly one action was given
</return>
</function>

<function name="gdk_drag_begin">
<description>
Starts a drag and creates a new drag context for it.

This function is called by the drag source. After this call, you
probably want to set up the drag icon using the surface returned
by [method@Gdk.Drag.get_drag_surface].

This function returns a reference to the [class@Gdk.Drag] object,
but GTK keeps its own reference as well, as long as the DND operation
is going on.

Note: if @actions include %GDK_ACTION_MOVE, you need to listen for
the [signal@Gdk.Drag::dnd-finished] signal and delete the data at
the source if [method@Gdk.Drag.get_selected_action] returns
%GDK_ACTION_MOVE.


</description>
<parameters>
<parameter name="surface">
<parameter_description> the source surface for this drag
</parameter_description>
</parameter>
<parameter name="device">
<parameter_description> the device that controls this drag
</parameter_description>
</parameter>
<parameter name="content">
<parameter_description> the offered content
</parameter_description>
</parameter>
<parameter name="actions">
<parameter_description> the actions supported by this drag
</parameter_description>
</parameter>
<parameter name="dx">
<parameter_description> the x offset to @device's position where the drag nominally started
</parameter_description>
</parameter>
<parameter name="dy">
<parameter_description> the y offset to @device's position where the drag nominally started
</parameter_description>
</parameter>
</parameters>
<return> a newly created `GdkDrag`
</return>
</function>

<function name="gdk_drag_drop_done">
<description>
Informs GDK that the drop ended.

Passing %FALSE for @success may trigger a drag cancellation
animation.

This function is called by the drag source, and should be the
last call before dropping the reference to the @drag.

The `GdkDrag` will only take the first [method@Gdk.Drag.drop_done]
call as effective, if this function is called multiple times,
all subsequent calls will be ignored.

</description>
<parameters>
<parameter name="drag">
<parameter_description> a `GdkDrag`
</parameter_description>
</parameter>
<parameter name="success">
<parameter_description> whether the drag was ultimatively successful
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_drag_get_actions">
<description>
Determines the bitmask of possible actions proposed by the source.


</description>
<parameters>
<parameter name="drag">
<parameter_description> a `GdkDrag`
</parameter_description>
</parameter>
</parameters>
<return> the `GdkDragAction` flags
</return>
</function>

<function name="gdk_drag_get_content">
<description>
Returns the `GdkContentProvider` associated to the `GdkDrag` object.


</description>
<parameters>
<parameter name="drag">
<parameter_description> a `GdkDrag`
</parameter_description>
</parameter>
</parameters>
<return> The `GdkContentProvider` associated to @drag.
</return>
</function>

<function name="gdk_drag_get_device">
<description>
Returns the `GdkDevice` associated to the `GdkDrag` object.


</description>
<parameters>
<parameter name="drag">
<parameter_description> a `GdkDrag`
</parameter_description>
</parameter>
</parameters>
<return> The `GdkDevice` associated to @drag.
</return>
</function>

<function name="gdk_drag_get_display">
<description>
Gets the `GdkDisplay` that the drag object was created for.


</description>
<parameters>
<parameter name="drag">
<parameter_description> a `GdkDrag`
</parameter_description>
</parameter>
</parameters>
<return> a `GdkDisplay`
</return>
</function>

<function name="gdk_drag_get_drag_surface">
<description>
Returns the surface on which the drag icon should be rendered
during the drag operation.

Note that the surface may not be available until the drag operation
has begun. GDK will move the surface in accordance with the ongoing
drag operation. The surface is owned by @drag and will be destroyed
when the drag operation is over.


</description>
<parameters>
<parameter name="drag">
<parameter_description> a `GdkDrag`
</parameter_description>
</parameter>
</parameters>
<return> the drag surface
</return>
</function>

<function name="gdk_drag_get_formats">
<description>
Retrieves the formats supported by this `GdkDrag` object.


</description>
<parameters>
<parameter name="drag">
<parameter_description> a `GdkDrag`
</parameter_description>
</parameter>
</parameters>
<return> a `GdkContentFormats`
</return>
</function>

<function name="gdk_drag_get_selected_action">
<description>
Determines the action chosen by the drag destination.


</description>
<parameters>
<parameter name="drag">
<parameter_description> a `GdkDrag`
</parameter_description>
</parameter>
</parameters>
<return> a `GdkDragAction` value
</return>
</function>

<function name="gdk_drag_get_surface">
<description>
Returns the `GdkSurface` where the drag originates.


</description>
<parameters>
<parameter name="drag">
<parameter_description> a `GdkDrag`
</parameter_description>
</parameter>
</parameters>
<return> The `GdkSurface` where the drag originates
</return>
</function>

<function name="gdk_drag_set_hotspot">
<description>
Sets the position of the drag surface that will be kept
under the cursor hotspot.

Initially, the hotspot is at the top left corner of the drag surface.

</description>
<parameters>
<parameter name="drag">
<parameter_description> a `GdkDrag`
</parameter_description>
</parameter>
<parameter name="hot_x">
<parameter_description> x coordinate of the drag surface hotspot
</parameter_description>
</parameter>
<parameter name="hot_y">
<parameter_description> y coordinate of the drag surface hotspot
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_drag_surface_present">
<description>
Present @drag_surface.


</description>
<parameters>
<parameter name="drag_surface">
<parameter_description> the `GdkDragSurface` to show
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> the unconstrained drag_surface width to layout
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> the unconstrained drag_surface height to layout
</parameter_description>
</parameter>
</parameters>
<return> %FALSE if it failed to be presented, otherwise %TRUE.
</return>
</function>

<function name="gdk_drag_surface_size_set_size">
<description>
Sets the size the drag surface prefers to be resized to.

Since: 4.12

</description>
<parameters>
<parameter name="size">
<parameter_description> a `GdkDragSurfaceSize`
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> the width
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> the height
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_draw_context_begin_frame">
<description>
Indicates that you are beginning the process of redrawing @region
on the @context's surface.

Calling this function begins a drawing operation using @context on the
surface that @context was created from. The actual requirements and
guarantees for the drawing operation vary for different implementations
of drawing, so a [class@Gdk.CairoContext] and a [class@Gdk.GLContext]
need to be treated differently.

A call to this function is a requirement for drawing and must be
followed by a call to [method@Gdk.DrawContext.end_frame], which will
complete the drawing operation and ensure the contents become visible
on screen.

Note that the @region passed to this function is the minimum region that
needs to be drawn and depending on implementation, windowing system and
hardware in use, it might be necessary to draw a larger region. Drawing
implementation must use [method@Gdk.DrawContext.get_frame_region] to
query the region that must be drawn.

When using GTK, the widget system automatically places calls to
gdk_draw_context_begin_frame() and gdk_draw_context_end_frame() via the
use of [GskRenderer](../gsk4/class.Renderer.html)s, so application code
does not need to call these functions explicitly.

</description>
<parameters>
<parameter name="context">
<parameter_description> the `GdkDrawContext` used to draw the frame. The context must
have a surface.
</parameter_description>
</parameter>
<parameter name="region">
<parameter_description> minimum region that should be drawn
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_draw_context_end_frame">
<description>
Ends a drawing operation started with gdk_draw_context_begin_frame().

This makes the drawing available on screen.
See [method@Gdk.DrawContext.begin_frame] for more details about drawing.

When using a [class@Gdk.GLContext], this function may call `glFlush()`
implicitly before returning; it is not recommended to call `glFlush()`
explicitly before calling this function.

</description>
<parameters>
<parameter name="context">
<parameter_description> a `GdkDrawContext`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_draw_context_get_display">
<description>
Retrieves the `GdkDisplay` the @context is created for


</description>
<parameters>
<parameter name="context">
<parameter_description> a `GdkDrawContext`
</parameter_description>
</parameter>
</parameters>
<return> the `GdkDisplay`
</return>
</function>

<function name="gdk_draw_context_get_frame_region">
<description>
Retrieves the region that is currently being repainted.

After a call to [method@Gdk.DrawContext.begin_frame] this function will
return a union of the region passed to that function and the area of the
surface that the @context determined needs to be repainted.

If @context is not in between calls to [method@Gdk.DrawContext.begin_frame]
and [method@Gdk.DrawContext.end_frame], %NULL will be returned.


</description>
<parameters>
<parameter name="context">
<parameter_description> a `GdkDrawContext`
</parameter_description>
</parameter>
</parameters>
<return> a Cairo region
</return>
</function>

<function name="gdk_draw_context_get_surface">
<description>
Retrieves the surface that @context is bound to.


</description>
<parameters>
<parameter name="context">
<parameter_description> a `GdkDrawContext`
</parameter_description>
</parameter>
</parameters>
<return> a `GdkSurface`
</return>
</function>

<function name="gdk_draw_context_is_in_frame">
<description>
Returns %TRUE if @context is in the process of drawing to its surface.

This is the case between calls to [method@Gdk.DrawContext.begin_frame]
and [method@Gdk.DrawContext.end_frame]. In this situation, drawing commands
may be effecting the contents of the @context's surface.


</description>
<parameters>
<parameter name="context">
<parameter_description> a `GdkDrawContext`
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the context is between [method@Gdk.DrawContext.begin_frame]
and [method@Gdk.DrawContext.end_frame] calls.
</return>
</function>

<function name="gdk_drop_finish">
<description>
Ends the drag operation after a drop.

The @action must be a single action selected from the actions
available via [method@Gdk.Drop.get_actions].

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDrop`
</parameter_description>
</parameter>
<parameter name="action">
<parameter_description> the action performed by the destination or 0 if the drop failed
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_drop_get_actions">
<description>
Returns the possible actions for this `GdkDrop`.

If this value contains multiple actions - i.e.
[func@Gdk.DragAction.is_unique] returns %FALSE for the result -
[method@Gdk.Drop.finish] must choose the action to use when
accepting the drop. This will only happen if you passed
%GDK_ACTION_ASK as one of the possible actions in
[method@Gdk.Drop.status]. %GDK_ACTION_ASK itself will not
be included in the actions returned by this function.

This value may change over the lifetime of the [class@Gdk.Drop]
both as a response to source side actions as well as to calls to
[method@Gdk.Drop.status] or [method@Gdk.Drop.finish]. The source
side will not change this value anymore once a drop has started.


</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDrop`
</parameter_description>
</parameter>
</parameters>
<return> The possible `GdkDragActions`
</return>
</function>

<function name="gdk_drop_get_device">
<description>
Returns the `GdkDevice` performing the drop.


</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDrop`
</parameter_description>
</parameter>
</parameters>
<return> The `GdkDevice` performing the drop.
</return>
</function>

<function name="gdk_drop_get_display">
<description>
Gets the `GdkDisplay` that @self was created for.


</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDrop`
</parameter_description>
</parameter>
</parameters>
<return> a `GdkDisplay`
</return>
</function>

<function name="gdk_drop_get_drag">
<description>
If this is an in-app drag-and-drop operation, returns the `GdkDrag`
that corresponds to this drop.

If it is not, %NULL is returned.


</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDrop`
</parameter_description>
</parameter>
</parameters>
<return> the corresponding `GdkDrag`
</return>
</function>

<function name="gdk_drop_get_formats">
<description>
Returns the `GdkContentFormats` that the drop offers the data
to be read in.


</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDrop`
</parameter_description>
</parameter>
</parameters>
<return> The possible `GdkContentFormats`
</return>
</function>

<function name="gdk_drop_get_surface">
<description>
Returns the `GdkSurface` performing the drop.


</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDrop`
</parameter_description>
</parameter>
</parameters>
<return> The `GdkSurface` performing the drop.
</return>
</function>

<function name="gdk_drop_read_async">
<description>
Asynchronously read the dropped data from a `GdkDrop`
in a format that complies with one of the mime types.

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDrop`
</parameter_description>
</parameter>
<parameter name="mime_types">
<parameter_description>
pointer to an array of mime types
</parameter_description>
</parameter>
<parameter name="io_priority">
<parameter_description> the I/O priority for the read operation
</parameter_description>
</parameter>
<parameter name="cancellable">
<parameter_description> optional `GCancellable` object
</parameter_description>
</parameter>
<parameter name="callback">
<parameter_description> a `GAsyncReadyCallback` to call when
the request is satisfied
</parameter_description>
</parameter>
<parameter name="user_data">
<parameter_description> the data to pass to @callback
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_drop_read_finish">
<description>
Finishes an async drop read operation.

Note that you must not use blocking read calls on the returned stream
in the GTK thread, since some platforms might require communication with
GTK to complete the data transfer. You can use async APIs such as
g_input_stream_read_bytes_async().

See [method@Gdk.Drop.read_async].


</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDrop`
</parameter_description>
</parameter>
<parameter name="result">
<parameter_description> a `GAsyncResult`
</parameter_description>
</parameter>
<parameter name="out_mime_type">
<parameter_description> return location for the used mime type
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> location to store error information on failure
</parameter_description>
</parameter>
</parameters>
<return> the `GInputStream`
</return>
</function>

<function name="gdk_drop_read_value_async">
<description>
Asynchronously request the drag operation's contents converted
to the given @type.

When the operation is finished @callback will be called. You must
then call [method@Gdk.Drop.read_value_finish] to get the resulting
`GValue`.

For local drag-and-drop operations that are available in the given
`GType`, the value will be copied directly. Otherwise, GDK will
try to use [func@Gdk.content_deserialize_async] to convert the data.

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDrop`
</parameter_description>
</parameter>
<parameter name="type">
<parameter_description> a `GType` to read
</parameter_description>
</parameter>
<parameter name="io_priority">
<parameter_description> the I/O priority of the request.
</parameter_description>
</parameter>
<parameter name="cancellable">
<parameter_description> optional `GCancellable` object, %NULL to ignore.
</parameter_description>
</parameter>
<parameter name="callback">
<parameter_description> callback to call when the request is satisfied
</parameter_description>
</parameter>
<parameter name="user_data">
<parameter_description> the data to pass to callback function
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_drop_read_value_finish">
<description>
Finishes an async drop read.

See [method@Gdk.Drop.read_value_async].


</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDrop`
</parameter_description>
</parameter>
<parameter name="result">
<parameter_description> a `GAsyncResult`
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> a `GError` location to store the error occurring
</parameter_description>
</parameter>
</parameters>
<return> a `GValue` containing the result.
</return>
</function>

<function name="gdk_drop_status">
<description>
Selects all actions that are potentially supported by the destination.

When calling this function, do not restrict the passed in actions to
the ones provided by [method@Gdk.Drop.get_actions]. Those actions may
change in the future, even depending on the actions you provide here.

The @preferred action is a hint to the drag-and-drop mechanism about which
action to use when multiple actions are possible.

This function should be called by drag destinations in response to
%GDK_DRAG_ENTER or %GDK_DRAG_MOTION events. If the destination does
not yet know the exact actions it supports, it should set any possible
actions first and then later call this function again.

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkDrop`
</parameter_description>
</parameter>
<parameter name="actions">
<parameter_description> Supported actions of the destination, or 0 to indicate
that a drop will not be accepted
</parameter_description>
</parameter>
<parameter name="preferred">
<parameter_description> A unique action that's a member of @actions indicating the
preferred action
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_event_get_axes">
<description>
Extracts all axis values from an event.

To find out which axes are used, use [method@Gdk.DeviceTool.get_axes]
on the device tool returned by [method@Gdk.Event.get_device_tool].


</description>
<parameters>
<parameter name="event">
<parameter_description> a `GdkEvent`
</parameter_description>
</parameter>
<parameter name="axes">
<parameter_description> the array of values for all axes
</parameter_description>
</parameter>
<parameter name="n_axes">
<parameter_description> the length of array
</parameter_description>
</parameter>
</parameters>
<return> %TRUE on success, otherwise %FALSE
</return>
</function>

<function name="gdk_event_get_axis">
<description>
Extract the axis value for a particular axis use from
an event structure.

To find out which axes are used, use [method@Gdk.DeviceTool.get_axes]
on the device tool returned by [method@Gdk.Event.get_device_tool].


</description>
<parameters>
<parameter name="event">
<parameter_description> a `GdkEvent`
</parameter_description>
</parameter>
<parameter name="axis_use">
<parameter_description> the axis use to look for
</parameter_description>
</parameter>
<parameter name="value">
<parameter_description> location to store the value found
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the specified axis was found, otherwise %FALSE
</return>
</function>

<function name="gdk_event_get_device">
<description>
Returns the device of an event.


</description>
<parameters>
<parameter name="event">
<parameter_description> a `GdkEvent`.
</parameter_description>
</parameter>
</parameters>
<return> a `GdkDevice`
</return>
</function>

<function name="gdk_event_get_device_tool">
<description>
Returns a `GdkDeviceTool` representing the tool that
caused the event.

If the was not generated by a device that supports
different tools (such as a tablet), this function will
return %NULL.

Note: the `GdkDeviceTool` will be constant during
the application lifetime, if settings must be stored
persistently across runs, see [method@Gdk.DeviceTool.get_serial].


</description>
<parameters>
<parameter name="event">
<parameter_description> a `GdkEvent`
</parameter_description>
</parameter>
</parameters>
<return> The current device tool
</return>
</function>

<function name="gdk_event_get_display">
<description>
Retrieves the display associated to the @event.


</description>
<parameters>
<parameter name="event">
<parameter_description> a `GdkEvent`
</parameter_description>
</parameter>
</parameters>
<return> a `GdkDisplay`
</return>
</function>

<function name="gdk_event_get_event_sequence">
<description>
Returns the event sequence to which the event belongs.

Related touch events are connected in a sequence. Other
events typically don't have event sequence information.


</description>
<parameters>
<parameter name="event">
<parameter_description> a `GdkEvent`
</parameter_description>
</parameter>
</parameters>
<return> the event sequence that the event belongs to
</return>
</function>

<function name="gdk_event_get_event_type">
<description>
Retrieves the type of the event.


</description>
<parameters>
<parameter name="event">
<parameter_description> a `GdkEvent`
</parameter_description>
</parameter>
</parameters>
<return> a `GdkEvent`Type
</return>
</function>

<function name="gdk_event_get_history">
<description>
Retrieves the history of the device that @event is for, as a list of
time and coordinates.

The history includes positions that are not delivered as separate events
to the application because they occurred in the same frame as @event.

Note that only motion and scroll events record history, and motion
events do it only if one of the mouse buttons is down, or the device
has a tool.


</description>
<parameters>
<parameter name="event">
<parameter_description> a motion or scroll event
</parameter_description>
</parameter>
<parameter name="out_n_coords">
<parameter_description> Return location for the length of the returned array
</parameter_description>
</parameter>
</parameters>
<return> an
array of time and coordinates
</return>
</function>

<function name="gdk_event_get_modifier_state">
<description>
Returns the modifier state field of an event.


</description>
<parameters>
<parameter name="event">
<parameter_description> a `GdkEvent`
</parameter_description>
</parameter>
</parameters>
<return> the modifier state of @event
</return>
</function>

<function name="gdk_event_get_pointer_emulated">
<description>
Returns whether this event is an 'emulated' pointer event.

Emulated pointer events typically originate from a touch events.


</description>
<parameters>
<parameter name="event">
<parameter_description> a `GdkEvent`
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if this event is emulated
</return>
</function>

<function name="gdk_event_get_position">
<description>
Extract the event surface relative x/y coordinates from an event.

This position is in [surface coordinates](coordinates.html).

</description>
<parameters>
<parameter name="event">
<parameter_description> a `GdkEvent`
</parameter_description>
</parameter>
<parameter name="x">
<parameter_description> location to put event surface x coordinate
</parameter_description>
</parameter>
<parameter name="y">
<parameter_description> location to put event surface y coordinate
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_event_get_seat">
<description>
Returns the seat that originated the event.


</description>
<parameters>
<parameter name="event">
<parameter_description> a `GdkEvent`
</parameter_description>
</parameter>
</parameters>
<return> a `GdkSeat`.
</return>
</function>

<function name="gdk_event_get_surface">
<description>
Extracts the surface associated with an event.


</description>
<parameters>
<parameter name="event">
<parameter_description> a `GdkEvent`
</parameter_description>
</parameter>
</parameters>
<return> The `GdkSurface` associated with the event
</return>
</function>

<function name="gdk_event_get_time">
<description>
Returns the timestamp of @event.

Not all events have timestamps. In that case, this function
returns %GDK_CURRENT_TIME.


</description>
<parameters>
<parameter name="event">
<parameter_description> a `GdkEvent`
</parameter_description>
</parameter>
</parameters>
<return> timestamp field from @event
</return>
</function>

<function name="gdk_event_ref">
<description>
Increase the ref count of @event.


</description>
<parameters>
<parameter name="event">
<parameter_description> a `GdkEvent`
</parameter_description>
</parameter>
</parameters>
<return> @event
</return>
</function>

<function name="gdk_event_triggers_context_menu">
<description>
Returns whether a `GdkEvent` should trigger a context menu,
according to platform conventions.

The right mouse button typically triggers context menus.

This function should always be used instead of simply checking for
event-&gt;button == %GDK_BUTTON_SECONDARY.


</description>
<parameters>
<parameter name="event">
<parameter_description> a `GdkEvent`, currently only button events are meaningful values
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the event should trigger a context menu.
</return>
</function>

<function name="gdk_event_unref">
<description>
Decrease the ref count of @event.

If the last reference is dropped, the structure is freed.

</description>
<parameters>
<parameter name="event">
<parameter_description> a `GdkEvent`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_events_get_angle">
<description>
Returns the relative angle from @event1 to @event2.

The relative angle is the angle between the X axis and the line
through both events' positions. The rotation direction for positive
angles is from the positive X axis towards the positive Y axis.

This assumes that both events have X/Y information.
If not, this function returns %FALSE.


</description>
<parameters>
<parameter name="event1">
<parameter_description> first `GdkEvent`
</parameter_description>
</parameter>
<parameter name="event2">
<parameter_description> second `GdkEvent`
</parameter_description>
</parameter>
<parameter name="angle">
<parameter_description> return location for the relative angle between both events
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the angle could be calculated.
</return>
</function>

<function name="gdk_events_get_center">
<description>
Returns the point halfway between the events' positions.

This assumes that both events have X/Y information.
If not, this function returns %FALSE.


</description>
<parameters>
<parameter name="event1">
<parameter_description> first `GdkEvent`
</parameter_description>
</parameter>
<parameter name="event2">
<parameter_description> second `GdkEvent`
</parameter_description>
</parameter>
<parameter name="x">
<parameter_description> return location for the X coordinate of the center
</parameter_description>
</parameter>
<parameter name="y">
<parameter_description> return location for the Y coordinate of the center
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the center could be calculated.
</return>
</function>

<function name="gdk_events_get_distance">
<description>
Returns the distance between the event locations.

This assumes that both events have X/Y information.
If not, this function returns %FALSE.


</description>
<parameters>
<parameter name="event1">
<parameter_description> first `GdkEvent`
</parameter_description>
</parameter>
<parameter name="event2">
<parameter_description> second `GdkEvent`
</parameter_description>
</parameter>
<parameter name="distance">
<parameter_description> return location for the distance
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the distance could be calculated.
</return>
</function>

<function name="gdk_file_list_get_files">
<description>
Retrieves the list of files inside a `GdkFileList`.

This function is meant for language bindings.

Since: 4.6

</description>
<parameters>
<parameter name="file_list">
<parameter_description> the file list
</parameter_description>
</parameter>
</parameters>
<return> the files inside the list

</return>
</function>

<function name="gdk_file_list_new_from_array">
<description>
Creates a new `GdkFileList` for the given array of files.

This function is meant to be used by language bindings.

Since: 4.8

</description>
<parameters>
<parameter name="files">
<parameter_description> the files to add to the list
</parameter_description>
</parameter>
<parameter name="n_files">
<parameter_description> the number of files in the array
</parameter_description>
</parameter>
</parameters>
<return> the newly create files list

</return>
</function>

<function name="gdk_file_list_new_from_list">
<description>
Creates a new files list container from a singly linked list of
`GFile` instances.

This function is meant to be used by language bindings

Since: 4.8

</description>
<parameters>
<parameter name="files">
<parameter_description> a list of files
</parameter_description>
</parameter>
</parameters>
<return> the newly created files list

</return>
</function>

<function name="gdk_focus_event_get_in">
<description>
Extracts whether this event is about focus entering or
leaving the surface.


</description>
<parameters>
<parameter name="event">
<parameter_description> a focus change event
</parameter_description>
</parameter>
</parameters>
<return> %TRUE of the focus is entering
</return>
</function>

<function name="gdk_frame_clock_begin_updating">
<description>
Starts updates for an animation.

Until a matching call to [method@Gdk.FrameClock.end_updating] is made,
the frame clock will continually request a new frame with the
%GDK_FRAME_CLOCK_PHASE_UPDATE phase. This function may be called multiple
times and frames will be requested until gdk_frame_clock_end_updating()
is called the same number of times.

</description>
<parameters>
<parameter name="frame_clock">
<parameter_description> a `GdkFrameClock`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_frame_clock_end_updating">
<description>
Stops updates for an animation.

See the documentation for [method@Gdk.FrameClock.begin_updating].

</description>
<parameters>
<parameter name="frame_clock">
<parameter_description> a `GdkFrameClock`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_frame_clock_get_current_timings">
<description>
Gets the frame timings for the current frame.


</description>
<parameters>
<parameter name="frame_clock">
<parameter_description> a `GdkFrameClock`
</parameter_description>
</parameter>
</parameters>
<return> the `GdkFrameTimings` for the
frame currently being processed, or even no frame is being
processed, for the previous frame. Before any frames have been
processed, returns %NULL.
</return>
</function>

<function name="gdk_frame_clock_get_fps">
<description>
Calculates the current frames-per-second, based on the
frame timings of @frame_clock.


</description>
<parameters>
<parameter name="frame_clock">
<parameter_description> a `GdkFrameClock`
</parameter_description>
</parameter>
</parameters>
<return> the current fps, as a `double`
</return>
</function>

<function name="gdk_frame_clock_get_frame_counter">
<description>
`GdkFrameClock` maintains a 64-bit counter that increments for
each frame drawn.


</description>
<parameters>
<parameter name="frame_clock">
<parameter_description> a `GdkFrameClock`
</parameter_description>
</parameter>
</parameters>
<return> inside frame processing, the value of the frame counter
for the current frame. Outside of frame processing, the frame
counter for the last frame.
</return>
</function>

<function name="gdk_frame_clock_get_frame_time">
<description>
Gets the time that should currently be used for animations.

Inside the processing of a frame, it’s the time used to compute the
animation position of everything in a frame. Outside of a frame, it's
the time of the conceptual “previous frame,” which may be either
the actual previous frame time, or if that’s too old, an updated
time.


</description>
<parameters>
<parameter name="frame_clock">
<parameter_description> a `GdkFrameClock`
</parameter_description>
</parameter>
</parameters>
<return> a timestamp in microseconds, in the timescale of
of g_get_monotonic_time().
</return>
</function>

<function name="gdk_frame_clock_get_history_start">
<description>
Returns the frame counter for the oldest frame available in history.

`GdkFrameClock` internally keeps a history of `GdkFrameTimings`
objects for recent frames that can be retrieved with
[method@Gdk.FrameClock.get_timings]. The set of stored frames
is the set from the counter values given by
[method@Gdk.FrameClock.get_history_start] and
[method@Gdk.FrameClock.get_frame_counter], inclusive.


</description>
<parameters>
<parameter name="frame_clock">
<parameter_description> a `GdkFrameClock`
</parameter_description>
</parameter>
</parameters>
<return> the frame counter value for the oldest frame
that is available in the internal frame history of the
`GdkFrameClock`
</return>
</function>

<function name="gdk_frame_clock_get_refresh_info">
<description>
Predicts a presentation time, based on history.

Using the frame history stored in the frame clock, finds the last
known presentation time and refresh interval, and assuming that
presentation times are separated by the refresh interval,
predicts a presentation time that is a multiple of the refresh
interval after the last presentation time, and later than @base_time.

</description>
<parameters>
<parameter name="frame_clock">
<parameter_description> a `GdkFrameClock`
</parameter_description>
</parameter>
<parameter name="base_time">
<parameter_description> base time for determining a presentaton time
</parameter_description>
</parameter>
<parameter name="refresh_interval_return">
<parameter_description> a location to store the
determined refresh interval, or %NULL. A default refresh interval of
1/60th of a second will be stored if no history is present.
</parameter_description>
</parameter>
<parameter name="presentation_time_return">
<parameter_description> a location to store the next
candidate presentation time after the given base time.
0 will be will be stored if no history is present.
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_frame_clock_get_timings">
<description>
Retrieves a `GdkFrameTimings` object holding timing information
for the current frame or a recent frame.

The `GdkFrameTimings` object may not yet be complete: see
[method@Gdk.FrameTimings.get_complete] and
[method@Gdk.FrameClock.get_history_start].


</description>
<parameters>
<parameter name="frame_clock">
<parameter_description> a `GdkFrameClock`
</parameter_description>
</parameter>
<parameter name="frame_counter">
<parameter_description> the frame counter value identifying the frame to
be received
</parameter_description>
</parameter>
</parameters>
<return> the `GdkFrameTimings` object
for the specified frame, or %NULL if it is not available
</return>
</function>

<function name="gdk_frame_clock_request_phase">
<description>
Asks the frame clock to run a particular phase.

The signal corresponding the requested phase will be emitted the next
time the frame clock processes. Multiple calls to
gdk_frame_clock_request_phase() will be combined together
and only one frame processed. If you are displaying animated
content and want to continually request the
%GDK_FRAME_CLOCK_PHASE_UPDATE phase for a period of time,
you should use [method@Gdk.FrameClock.begin_updating] instead,
since this allows GTK to adjust system parameters to get maximally
smooth animations.

</description>
<parameters>
<parameter name="frame_clock">
<parameter_description> a `GdkFrameClock`
</parameter_description>
</parameter>
<parameter name="phase">
<parameter_description> the phase that is requested
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_frame_timings_get_complete">
<description>
Returns whether @timings are complete.

The timing information in a `GdkFrameTimings` is filled in
incrementally as the frame as drawn and passed off to the
window system for processing and display to the user. The
accessor functions for `GdkFrameTimings` can return 0 to
indicate an unavailable value for two reasons: either because
the information is not yet available, or because it isn't
available at all.

Once this function returns %TRUE for a frame, you can be
certain that no further values will become available and be
stored in the `GdkFrameTimings`.


</description>
<parameters>
<parameter name="timings">
<parameter_description> a `GdkFrameTimings`
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if all information that will be available
for the frame has been filled in.
</return>
</function>

<function name="gdk_frame_timings_get_frame_counter">
<description>
Gets the frame counter value of the `GdkFrameClock` when
this frame was drawn.


</description>
<parameters>
<parameter name="timings">
<parameter_description> a `GdkFrameTimings`
</parameter_description>
</parameter>
</parameters>
<return> the frame counter value for this frame
</return>
</function>

<function name="gdk_frame_timings_get_frame_time">
<description>
Returns the frame time for the frame.

This is the time value that is typically used to time
animations for the frame. See [method@Gdk.FrameClock.get_frame_time].


</description>
<parameters>
<parameter name="timings">
<parameter_description> A `GdkFrameTimings`
</parameter_description>
</parameter>
</parameters>
<return> the frame time for the frame, in the timescale
of g_get_monotonic_time()
</return>
</function>

<function name="gdk_frame_timings_get_predicted_presentation_time">
<description>
Gets the predicted time at which this frame will be displayed.

Although no predicted time may be available, if one is available,
it will be available while the frame is being generated, in contrast
to [method@Gdk.FrameTimings.get_presentation_time], which is only
available after the frame has been presented.

In general, if you are simply animating, you should use
[method@Gdk.FrameClock.get_frame_time] rather than this function,
but this function is useful for applications that want exact control
over latency. For example, a movie player may want this information
for Audio/Video synchronization.


</description>
<parameters>
<parameter name="timings">
<parameter_description> a `GdkFrameTimings`
</parameter_description>
</parameter>
</parameters>
<return> The predicted time at which the frame will be presented,
in the timescale of g_get_monotonic_time(), or 0 if no predicted
presentation time is available.
</return>
</function>

<function name="gdk_frame_timings_get_presentation_time">
<description>
Reurns the presentation time.

This is the time at which the frame became visible to the user.


</description>
<parameters>
<parameter name="timings">
<parameter_description> a `GdkFrameTimings`
</parameter_description>
</parameter>
</parameters>
<return> the time the frame was displayed to the user, in the
timescale of g_get_monotonic_time(), or 0 if no presentation
time is available. See [method@Gdk.FrameTimings.get_complete]
</return>
</function>

<function name="gdk_frame_timings_get_refresh_interval">
<description>
Gets the natural interval between presentation times for
the display that this frame was displayed on.

Frame presentation usually happens during the “vertical
blanking interval”.


</description>
<parameters>
<parameter name="timings">
<parameter_description> a `GdkFrameTimings`
</parameter_description>
</parameter>
</parameters>
<return> the refresh interval of the display, in microseconds,
or 0 if the refresh interval is not available.
See [method@Gdk.FrameTimings.get_complete].
</return>
</function>

<function name="gdk_frame_timings_ref">
<description>
Increases the reference count of @timings.


</description>
<parameters>
<parameter name="timings">
<parameter_description> a `GdkFrameTimings`
</parameter_description>
</parameter>
</parameters>
<return> @timings
</return>
</function>

<function name="gdk_frame_timings_unref">
<description>
Decreases the reference count of @timings.

If @timings is no longer referenced, it will be freed.

</description>
<parameters>
<parameter name="timings">
<parameter_description> a `GdkFrameTimings`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_gl_context_clear_current">
<description>
Clears the current `GdkGLContext`.

Any OpenGL call after this function returns will be ignored
until [method@Gdk.GLContext.make_current] is called.

</description>
<parameters>
</parameters>
<return></return>
</function>

<function name="gdk_gl_context_get_allowed_apis">
<description>
Gets the allowed APIs set via gdk_gl_context_set_allowed_apis().

Since: 4.6

</description>
<parameters>
<parameter name="self">
<parameter_description> a GL context
</parameter_description>
</parameter>
</parameters>
<return> the allowed APIs

</return>
</function>

<function name="gdk_gl_context_get_api">
<description>
Gets the API currently in use.

If the renderer has not been realized yet, 0 is returned.

Since: 4.6

</description>
<parameters>
<parameter name="self">
<parameter_description> a GL context
</parameter_description>
</parameter>
</parameters>
<return> the currently used API

</return>
</function>

<function name="gdk_gl_context_get_current">
<description>
Retrieves the current `GdkGLContext`.


</description>
<parameters>
</parameters>
<return> the current `GdkGLContext`
</return>
</function>

<function name="gdk_gl_context_get_debug_enabled">
<description>
Retrieves whether the context is doing extra validations and runtime checking.

See [method@Gdk.GLContext.set_debug_enabled].


</description>
<parameters>
<parameter name="context">
<parameter_description> a `GdkGLContext`
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if debugging is enabled
</return>
</function>

<function name="gdk_gl_context_get_display">
<description>
Retrieves the display the @context is created for


</description>
<parameters>
<parameter name="context">
<parameter_description> a `GdkGLContext`
</parameter_description>
</parameter>
</parameters>
<return> a `GdkDisplay`
</return>
</function>

<function name="gdk_gl_context_get_forward_compatible">
<description>
Retrieves whether the context is forward-compatible.

See [method@Gdk.GLContext.set_forward_compatible].


</description>
<parameters>
<parameter name="context">
<parameter_description> a `GdkGLContext`
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the context should be forward-compatible
</return>
</function>

<function name="gdk_gl_context_get_required_version">
<description>
Retrieves required OpenGL version set as a requirement for the @context
realization. It will not change even if a greater OpenGL version is supported
and used after the @context is realized. See
[method@Gdk.GLContext.get_version] for the real version in use.

See [method@Gdk.GLContext.set_required_version].

</description>
<parameters>
<parameter name="context">
<parameter_description> a `GdkGLContext`
</parameter_description>
</parameter>
<parameter name="major">
<parameter_description> return location for the major version to request
</parameter_description>
</parameter>
<parameter name="minor">
<parameter_description> return location for the minor version to request
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_gl_context_get_shared_context">
<description>
Used to retrieves the `GdkGLContext` that this @context share data with.

As many contexts can share data now and no single shared context exists
anymore, this function has been deprecated and now always returns %NULL.

Deprecated: 4.4: Use [method@Gdk.GLContext.is_shared] to check if contexts
can be shared.

</description>
<parameters>
<parameter name="context">
<parameter_description> a `GdkGLContext`
</parameter_description>
</parameter>
</parameters>
<return> %NULL

</return>
</function>

<function name="gdk_gl_context_get_surface">
<description>
Retrieves the surface used by the @context.


</description>
<parameters>
<parameter name="context">
<parameter_description> a `GdkGLContext`
</parameter_description>
</parameter>
</parameters>
<return> a `GdkSurface`
</return>
</function>

<function name="gdk_gl_context_get_use_es">
<description>
Checks whether the @context is using an OpenGL or OpenGL ES profile.


</description>
<parameters>
<parameter name="context">
<parameter_description> a `GdkGLContext`
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the `GdkGLContext` is using an OpenGL ES profile;
%FALSE if other profile is in use of if the @context has not yet
been realized.
</return>
</function>

<function name="gdk_gl_context_get_version">
<description>
Retrieves the OpenGL version of the @context.

The @context must be realized prior to calling this function.

</description>
<parameters>
<parameter name="context">
<parameter_description> a `GdkGLContext`
</parameter_description>
</parameter>
<parameter name="major">
<parameter_description> return location for the major version
</parameter_description>
</parameter>
<parameter name="minor">
<parameter_description> return location for the minor version
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_gl_context_is_legacy">
<description>
Whether the `GdkGLContext` is in legacy mode or not.

The `GdkGLContext` must be realized before calling this function.

When realizing a GL context, GDK will try to use the OpenGL 3.2 core
profile; this profile removes all the OpenGL API that was deprecated
prior to the 3.2 version of the specification. If the realization is
successful, this function will return %FALSE.

If the underlying OpenGL implementation does not support core profiles,
GDK will fall back to a pre-3.2 compatibility profile, and this function
will return %TRUE.

You can use the value returned by this function to decide which kind
of OpenGL API to use, or whether to do extension discovery, or what
kind of shader programs to load.


</description>
<parameters>
<parameter name="context">
<parameter_description> a `GdkGLContext`
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the GL context is in legacy mode
</return>
</function>

<function name="gdk_gl_context_is_shared">
<description>
Checks if the two GL contexts can share resources.

When they can, the texture IDs from @other can be used in @self. This
is particularly useful when passing `GdkGLTexture` objects between
different contexts.

Contexts created for the same display with the same properties will
always be compatible, even if they are created for different surfaces.
For other contexts it depends on the GL backend.

Both contexts must be realized for this check to succeed. If either one
is not, this function will return %FALSE.

Since: 4.4

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkGLContext`
</parameter_description>
</parameter>
<parameter name="other">
<parameter_description> the `GdkGLContext` that should be compatible with @self
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the two GL contexts are compatible.

</return>
</function>

<function name="gdk_gl_context_make_current">
<description>
Makes the @context the current one.

</description>
<parameters>
<parameter name="context">
<parameter_description> a `GdkGLContext`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_gl_context_realize">
<description>
Realizes the given `GdkGLContext`.

It is safe to call this function on a realized `GdkGLContext`.


</description>
<parameters>
<parameter name="context">
<parameter_description> a `GdkGLContext`
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> return location for a `GError`
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the context is realized
</return>
</function>

<function name="gdk_gl_context_set_allowed_apis">
<description>
Sets the allowed APIs. When gdk_gl_context_realize() is called, only the
allowed APIs will be tried. If you set this to 0, realizing will always fail.

If you set it on a realized context, the property will not have any effect.
It is only relevant during gdk_gl_context_realize().

By default, all APIs are allowed.

Since: 4.6

</description>
<parameters>
<parameter name="self">
<parameter_description> a GL context
</parameter_description>
</parameter>
<parameter name="apis">
<parameter_description> the allowed APIs
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_gl_context_set_debug_enabled">
<description>
Sets whether the `GdkGLContext` should perform extra validations and
runtime checking.

This is useful during development, but has additional overhead.

The `GdkGLContext` must not be realized or made current prior to
calling this function.

</description>
<parameters>
<parameter name="context">
<parameter_description> a `GdkGLContext`
</parameter_description>
</parameter>
<parameter name="enabled">
<parameter_description> whether to enable debugging in the context
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_gl_context_set_forward_compatible">
<description>
Sets whether the `GdkGLContext` should be forward-compatible.

Forward-compatible contexts must not support OpenGL functionality that
has been marked as deprecated in the requested version; non-forward
compatible contexts, on the other hand, must support both deprecated and
non deprecated functionality.

The `GdkGLContext` must not be realized or made current prior to calling
this function.

</description>
<parameters>
<parameter name="context">
<parameter_description> a `GdkGLContext`
</parameter_description>
</parameter>
<parameter name="compatible">
<parameter_description> whether the context should be forward-compatible
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_gl_context_set_required_version">
<description>
Sets the major and minor version of OpenGL to request.

Setting @major and @minor to zero will use the default values.

Setting @major and @minor lower than the minimum versions required
by GTK will result in the context choosing the minimum version.

The @context must not be realized or made current prior to calling
this function.

</description>
<parameters>
<parameter name="context">
<parameter_description> a `GdkGLContext`
</parameter_description>
</parameter>
<parameter name="major">
<parameter_description> the major version to request
</parameter_description>
</parameter>
<parameter name="minor">
<parameter_description> the minor version to request
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_gl_context_set_use_es">
<description>
Requests that GDK create an OpenGL ES context instead of an OpenGL one.

Not all platforms support OpenGL ES.

The @context must not have been realized.

By default, GDK will attempt to automatically detect whether the
underlying GL implementation is OpenGL or OpenGL ES once the @context
is realized.

You should check the return value of [method@Gdk.GLContext.get_use_es]
after calling [method@Gdk.GLContext.realize] to decide whether to use
the OpenGL or OpenGL ES API, extensions, or shaders.

</description>
<parameters>
<parameter name="context">
<parameter_description> a `GdkGLContext`
</parameter_description>
</parameter>
<parameter name="use_es">
<parameter_description> whether the context should use OpenGL ES instead of OpenGL,
or -1 to allow auto-detection
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_gl_texture_builder_build">
<description>
Builds a new `GdkTexture` with the values set up in the builder.

The `destroy` function gets called when the returned texture gets released;
either when the texture is finalized or by an explicit call to
[method@Gdk.GLTexture.release]. It should release all GL resources associated
with the texture, such as the [property@Gdk.GLTextureBuilder:id] and the
[property@Gdk.GLTextureBuilder:sync].

Note that it is a programming error to call this function if any mandatory
property has not been set.

It is possible to call this function multiple times to create multiple textures,
possibly with changing properties in between.

Since: 4.12

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkGLTextureBuilder`
</parameter_description>
</parameter>
<parameter name="destroy">
<parameter_description> destroy function to be called when the texture is
released
</parameter_description>
</parameter>
<parameter name="data">
<parameter_description> user data to pass to the destroy function
</parameter_description>
</parameter>
</parameters>
<return> a newly built `GdkTexture`

</return>
</function>

<function name="gdk_gl_texture_builder_get_context">
<description>
Gets the context previously set via gdk_gl_texture_builder_set_context() or
%NULL if none was set.

Since: 4.12

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkGLTextureBuilder`
</parameter_description>
</parameter>
</parameters>
<return> The context

</return>
</function>

<function name="gdk_gl_texture_builder_get_format">
<description>
Gets the format previously set via gdk_gl_texture_builder_set_format().

Since: 4.12

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkGLTextureBuilder`
</parameter_description>
</parameter>
</parameters>
<return> The format

</return>
</function>

<function name="gdk_gl_texture_builder_get_has_mipmap">
<description>
Gets whether the texture has a mipmap.

Since: 4.12

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkGLTextureBuilder`
</parameter_description>
</parameter>
</parameters>
<return> Whether the texture has a mipmap

</return>
</function>

<function name="gdk_gl_texture_builder_get_height">
<description>
Gets the height previously set via gdk_gl_texture_builder_set_height() or
0 if the height wasn't set.

Since: 4.12

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkGLTextureBuilder`
</parameter_description>
</parameter>
</parameters>
<return> The height

</return>
</function>

<function name="gdk_gl_texture_builder_get_id">
<description>
Gets the texture id previously set via gdk_gl_texture_builder_set_id() or
0 if the id wasn't set.

Since: 4.12

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkGLTextureBuilder`
</parameter_description>
</parameter>
</parameters>
<return> The id

</return>
</function>

<function name="gdk_gl_texture_builder_get_sync">
<description>
Gets the `GLsync` previously set via gdk_gl_texture_builder_set_sync().

Since: 4.12

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkGLTextureBuilder`
</parameter_description>
</parameter>
</parameters>
<return> the `GLSync`

</return>
</function>

<function name="gdk_gl_texture_builder_get_update_region">
<description>
Gets the region previously set via gdk_gl_texture_builder_set_update_region() or
%NULL if none was set.

Since: 4.12

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkGLTextureBuilder`
</parameter_description>
</parameter>
</parameters>
<return> The region 

</return>
</function>

<function name="gdk_gl_texture_builder_get_update_texture">
<description>
Gets the texture previously set via gdk_gl_texture_builder_set_update_texture() or
%NULL if none was set.

Since: 4.12

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkGLTextureBuilder`
</parameter_description>
</parameter>
</parameters>
<return> The texture 

</return>
</function>

<function name="gdk_gl_texture_builder_get_width">
<description>
Gets the width previously set via gdk_gl_texture_builder_set_width() or
0 if the width wasn't set.

Since: 4.12

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkGLTextureBuilder`
</parameter_description>
</parameter>
</parameters>
<return> The width

</return>
</function>

<function name="gdk_gl_texture_builder_set_context">
<description>
Sets the context to be used for the texture. This is the context that owns
the texture.

The context must be set before calling [method@Gdk.GLTextureBuilder.build].

Since: 4.12

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkGLTextureBuilder`
</parameter_description>
</parameter>
<parameter name="context">
<parameter_description> The context the texture beongs to or %NULL to unset
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_gl_texture_builder_set_format">
<description>
Sets the format of the texture. The default is `GDK_MEMORY_R8G8B8A8_PREMULTIPLIED`.

The format is the preferred format the texture data should be downloaded to. The
format must be supported by the GL version of [property@Gdk.GLTextureBuilder:context].

GDK's texture download code assumes that the format corresponds to the storage
parameters of the GL texture in an obvious way. For example, a format of
`GDK_MEMORY_R16G16B16A16_PREMULTIPLIED` is expected to be stored as `GL_RGBA16`
texture, and `GDK_MEMORY_G8A8` is expected to be stored as `GL_RG8` texture.

Setting the right format is particularly useful when using high bit depth textures
to preserve the bit depth, to set the correct value for unpremultiplied textures
and to make sure opaque textures are treated as such.

Non-RGBA textures need to have swizzling parameters set up properly to be usable
in GSK's shaders.

Since: 4.12

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkGLTextureBuilder`
</parameter_description>
</parameter>
<parameter name="format">
<parameter_description> The texture's format
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_gl_texture_builder_set_has_mipmap">
<description>
Sets whether the texture has a mipmap. This allows the renderer and other users of the
generated texture to use a higher quality downscaling.

Typically, the `glGenerateMipmap` function is used to generate a mimap.

Since: 4.12

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkGLTextureBuilder`
</parameter_description>
</parameter>
<parameter name="has_mipmap">
<parameter_description> Whether the texture has a mipmap
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_gl_texture_builder_set_height">
<description>
Sets the height of the texture.

The height must be set before calling [method@Gdk.GLTextureBuilder.build].

Since: 4.12

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkGLTextureBuilder`
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> The texture's height or 0 to unset
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_gl_texture_builder_set_id">
<description>
Sets the texture id of the texture. The texture id must remain unmodified
until the texture was finalized. See [method@Gdk.GLTextureBuilder.build]
for a longer discussion.

The id must be set before calling [method@Gdk.GLTextureBuilder.build].

Since: 4.12

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkGLTextureBuilder`
</parameter_description>
</parameter>
<parameter name="id">
<parameter_description> The texture id to be used for creating the texture
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_gl_texture_builder_set_sync">
<description>
Sets the GLSync object to use for the texture.

GTK will wait on this object before using the created `GdkTexture`.

The `destroy` function that is passed to [method@Gdk.GLTextureBuilder.build]
is responsible for freeing the sync object when it is no longer needed.
The texture builder does not destroy it and it is the callers
responsibility to make sure it doesn't leak.

Since: 4.12

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkGLTextureBuilder`
</parameter_description>
</parameter>
<parameter name="sync">
<parameter_description> the GLSync object
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_gl_texture_builder_set_update_region">
<description>
Sets the region to be updated by this texture. Together with
[property@Gdk.GLTextureBuilder:update-texture] this describes an
update of a previous texture.

When rendering animations of large textures, it is possible that
consecutive textures are only updating contents in parts of the texture.
It is then possible to describe this update via these two properties,
so that GTK can avoid rerendering parts that did not change.

An example would be a screen recording where only the mouse pointer moves.

Since: 4.12

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkGLTextureBuilder`
</parameter_description>
</parameter>
<parameter name="region">
<parameter_description> the region to update
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_gl_texture_builder_set_update_texture">
<description>
Sets the texture to be updated by this texture. See
[method@Gdk.GLTextureBuilder.set_update_region] for an explanation.

Since: 4.12

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkGLTextureBuilder`
</parameter_description>
</parameter>
<parameter name="texture">
<parameter_description> the texture to update
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_gl_texture_builder_set_width">
<description>
Sets the width of the texture.

The width must be set before calling [method@Gdk.GLTextureBuilder.build].

Since: 4.12

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkGLTextureBuilder`
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> The texture's width or 0 to unset
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_gl_texture_new">
<description>
Creates a new texture for an existing GL texture.

Note that the GL texture must not be modified until @destroy is called,
which will happen when the GdkTexture object is finalized, or due to
an explicit call of [method@Gdk.GLTexture.release].

Deprecated: 4.12: [class@Gdk.GLTextureBuilder] supersedes this function
and provides extended functionality for creating GL textures.

</description>
<parameters>
<parameter name="context">
<parameter_description> a `GdkGLContext`
</parameter_description>
</parameter>
<parameter name="id">
<parameter_description> the ID of a texture that was created with @context
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> the nominal width of the texture
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> the nominal height of the texture
</parameter_description>
</parameter>
<parameter name="destroy">
<parameter_description> a destroy notify that will be called when the GL resources
are released
</parameter_description>
</parameter>
<parameter name="data">
<parameter_description> data that gets passed to @destroy
</parameter_description>
</parameter>
</parameters>
<return> A newly-created
`GdkTexture`

</return>
</function>

<function name="gdk_gl_texture_release">
<description>
Releases the GL resources held by a `GdkGLTexture`.

The texture contents are still available via the
[method@Gdk.Texture.download] function, after this
function has been called.

</description>
<parameters>
<parameter name="self">
<parameter_description> a `GdkTexture` wrapping a GL texture
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_grab_broken_event_get_grab_surface">
<description>
Extracts the grab surface from a grab broken event.


</description>
<parameters>
<parameter name="event">
<parameter_description> a grab broken event
</parameter_description>
</parameter>
</parameters>
<return> the grab surface of @event
</return>
</function>

<function name="gdk_grab_broken_event_get_implicit">
<description>
Checks whether the grab broken event is for an implicit grab.


</description>
<parameters>
<parameter name="event">
<parameter_description> a grab broken event
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the an implicit grab was broken
</return>
</function>

<function name="gdk_intern_mime_type">
<description>
Canonicalizes the given mime type and interns the result.

If @string is not a valid mime type, %NULL is returned instead.
See RFC 2048 for the syntax if mime types.


</description>
<parameters>
<parameter name="string">
<parameter_description> string of a potential mime type
</parameter_description>
</parameter>
</parameters>
<return> An interned string for the canonicalized
mime type or %NULL if the string wasn't a valid mime type
</return>
</function>

<function name="gdk_key_event_get_consumed_modifiers">
<description>
Extracts the consumed modifiers from a key event.


</description>
<parameters>
<parameter name="event">
<parameter_description> a key event
</parameter_description>
</parameter>
</parameters>
<return> the consumed modifiers or @event
</return>
</function>

<function name="gdk_key_event_get_keycode">
<description>
Extracts the keycode from a key event.


</description>
<parameters>
<parameter name="event">
<parameter_description> a key event
</parameter_description>
</parameter>
</parameters>
<return> the keycode of @event
</return>
</function>

<function name="gdk_key_event_get_keyval">
<description>
Extracts the keyval from a key event.


</description>
<parameters>
<parameter name="event">
<parameter_description> a key event
</parameter_description>
</parameter>
</parameters>
<return> the keyval of @event
</return>
</function>

<function name="gdk_key_event_get_layout">
<description>
Extracts the layout from a key event.


</description>
<parameters>
<parameter name="event">
<parameter_description> a key event
</parameter_description>
</parameter>
</parameters>
<return> the layout of @event
</return>
</function>

<function name="gdk_key_event_get_level">
<description>
Extracts the shift level from a key event.


</description>
<parameters>
<parameter name="event">
<parameter_description> a key event
</parameter_description>
</parameter>
</parameters>
<return> the shift level of @event
</return>
</function>

<function name="gdk_key_event_get_match">
<description>
Gets a keyval and modifier combination that will match
the event.

See [method@Gdk.KeyEvent.matches].


</description>
<parameters>
<parameter name="event">
<parameter_description> a key `GdkEvent`
</parameter_description>
</parameter>
<parameter name="keyval">
<parameter_description> return location for a keyval
</parameter_description>
</parameter>
<parameter name="modifiers">
<parameter_description> return location for modifiers
</parameter_description>
</parameter>
</parameters>
<return> %TRUE on success
</return>
</function>

<function name="gdk_key_event_is_modifier">
<description>
Extracts whether the key event is for a modifier key.


</description>
<parameters>
<parameter name="event">
<parameter_description> a key event
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the @event is for a modifier key
</return>
</function>

<function name="gdk_key_event_matches">
<description>
Matches a key event against a keyval and modifiers.

This is typically used to trigger keyboard shortcuts such as Ctrl-C.

Partial matches are possible where the combination matches
if the currently active group is ignored.

Note that we ignore Caps Lock for matching.


</description>
<parameters>
<parameter name="event">
<parameter_description> a key `GdkEvent`
</parameter_description>
</parameter>
<parameter name="keyval">
<parameter_description> the keyval to match
</parameter_description>
</parameter>
<parameter name="modifiers">
<parameter_description> the modifiers to match
</parameter_description>
</parameter>
</parameters>
<return> a `GdkKeyMatch` value describing whether @event matches
</return>
</function>

<function name="gdk_keyval_convert_case">
<description>
Obtains the upper- and lower-case versions of the keyval @symbol.

Examples of keyvals are `GDK_KEY_a`, `GDK_KEY_Enter`, `GDK_KEY_F1`, etc.

</description>
<parameters>
<parameter name="symbol">
<parameter_description> a keyval
</parameter_description>
</parameter>
<parameter name="lower">
<parameter_description> return location for lowercase version of @symbol
</parameter_description>
</parameter>
<parameter name="upper">
<parameter_description> return location for uppercase version of @symbol
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_keyval_from_name">
<description>
Converts a key name to a key value.

The names are the same as those in the
`gdk/gdkkeysyms.h` header file
but without the leading “GDK_KEY_”.


</description>
<parameters>
<parameter name="keyval_name">
<parameter_description> a key name
</parameter_description>
</parameter>
</parameters>
<return> the corresponding key value, or %GDK_KEY_VoidSymbol
if the key name is not a valid key
</return>
</function>

<function name="gdk_keyval_is_lower">
<description>
Returns %TRUE if the given key value is in lower case.


</description>
<parameters>
<parameter name="keyval">
<parameter_description> a key value.
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if @keyval is in lower case, or if @keyval is not
subject to case conversion.
</return>
</function>

<function name="gdk_keyval_is_upper">
<description>
Returns %TRUE if the given key value is in upper case.


</description>
<parameters>
<parameter name="keyval">
<parameter_description> a key value.
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if @keyval is in upper case, or if @keyval is not subject to
case conversion.
</return>
</function>

<function name="gdk_keyval_name">
<description>
Converts a key value into a symbolic name.

The names are the same as those in the
`gdk/gdkkeysyms.h` header file
but without the leading “GDK_KEY_”.


</description>
<parameters>
<parameter name="keyval">
<parameter_description> a key value
</parameter_description>
</parameter>
</parameters>
<return> a string containing the name
of the key
</return>
</function>

<function name="gdk_keyval_to_lower">
<description>
Converts a key value to lower case, if applicable.


</description>
<parameters>
<parameter name="keyval">
<parameter_description> a key value.
</parameter_description>
</parameter>
</parameters>
<return> the lower case form of @keyval, or @keyval itself if it is already
in lower case or it is not subject to case conversion.
</return>
</function>

<function name="gdk_keyval_to_unicode">
<description>
Convert from a GDK key symbol to the corresponding Unicode
character.

Note that the conversion does not take the current locale
into consideration, which might be expected for particular
keyvals, such as %GDK_KEY_KP_Decimal.


</description>
<parameters>
<parameter name="keyval">
<parameter_description> a GDK key symbol
</parameter_description>
</parameter>
</parameters>
<return> the corresponding unicode character, or 0 if there
is no corresponding character.
</return>
</function>

<function name="gdk_keyval_to_upper">
<description>
Converts a key value to upper case, if applicable.


</description>
<parameters>
<parameter name="keyval">
<parameter_description> a key value.
</parameter_description>
</parameter>
</parameters>
<return> the upper case form of @keyval, or @keyval itself if it is already
in upper case or it is not subject to case conversion.
</return>
</function>

<function name="gdk_memory_texture_new">
<description>
Creates a new texture for a blob of image data.

The `GBytes` must contain @stride × @height pixels
in the given format.


</description>
<parameters>
<parameter name="width">
<parameter_description> the width of the texture
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> the height of the texture
</parameter_description>
</parameter>
<parameter name="format">
<parameter_description> the format of the data
</parameter_description>
</parameter>
<parameter name="bytes">
<parameter_description> the `GBytes` containing the pixel data
</parameter_description>
</parameter>
<parameter name="stride">
<parameter_description> rowstride for the data
</parameter_description>
</parameter>
</parameters>
<return> A newly-created `GdkTexture`
</return>
</function>

<function name="gdk_monitor_get_connector">
<description>
Gets the name of the monitor's connector, if available.

These are strings such as &quot;eDP-1&quot;, or &quot;HDMI-2&quot;. They depend
on software and hardware configuration, and should not be
relied on as stable identifiers of a specific monitor.


</description>
<parameters>
<parameter name="monitor">
<parameter_description> a `GdkMonitor`
</parameter_description>
</parameter>
</parameters>
<return> the name of the connector
</return>
</function>

<function name="gdk_monitor_get_description">
<description>
Gets a string describing the monitor, if available.

This can be used to identify a monitor in the UI.

Since: 4.10

</description>
<parameters>
<parameter name="monitor">
<parameter_description> a `GdkMonitor`
</parameter_description>
</parameter>
</parameters>
<return> the monitor description

</return>
</function>

<function name="gdk_monitor_get_display">
<description>
Gets the display that this monitor belongs to.


</description>
<parameters>
<parameter name="monitor">
<parameter_description> a `GdkMonitor`
</parameter_description>
</parameter>
</parameters>
<return> the display
</return>
</function>

<function name="gdk_monitor_get_geometry">
<description>
Retrieves the size and position of the monitor within the
display coordinate space.

The returned geometry is in  ”application pixels”, not in
”device pixels” (see [method@Gdk.Monitor.get_scale]).

</description>
<parameters>
<parameter name="monitor">
<parameter_description> a `GdkMonitor`
</parameter_description>
</parameter>
<parameter name="geometry">
<parameter_description> a `GdkRectangle` to be filled with the monitor geometry
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_monitor_get_height_mm">
<description>
Gets the height in millimeters of the monitor.


</description>
<parameters>
<parameter name="monitor">
<parameter_description> a `GdkMonitor`
</parameter_description>
</parameter>
</parameters>
<return> the physical height of the monitor
</return>
</function>

<function name="gdk_monitor_get_manufacturer">
<description>
Gets the name or PNP ID of the monitor's manufacturer.

Note that this value might also vary depending on actual
display backend.

The PNP ID registry is located at
[https://uefi.org/pnp_id_list](https://uefi.org/pnp_id_list).


</description>
<parameters>
<parameter name="monitor">
<parameter_description> a `GdkMonitor`
</parameter_description>
</parameter>
</parameters>
<return> the name of the manufacturer
</return>
</function>

<function name="gdk_monitor_get_model">
<description>
Gets the string identifying the monitor model, if available.


</description>
<parameters>
<parameter name="monitor">
<parameter_description> a `GdkMonitor`
</parameter_description>
</parameter>
</parameters>
<return> the monitor model
</return>
</function>

<function name="gdk_monitor_get_refresh_rate">
<description>
Gets the refresh rate of the monitor, if available.

The value is in milli-Hertz, so a refresh rate of 60Hz
is returned as 60000.


</description>
<parameters>
<parameter name="monitor">
<parameter_description> a `GdkMonitor`
</parameter_description>
</parameter>
</parameters>
<return> the refresh rate in milli-Hertz, or 0
</return>
</function>

<function name="gdk_monitor_get_scale">
<description>
Gets the internal scale factor that maps from monitor coordinates
to device pixels.

This can be used if you want to create pixel based data for a
particular monitor, but most of the time you’re drawing to a surface
where it is better to use [method@Gdk.Surface.get_scale] instead.

Since: 4.14

</description>
<parameters>
<parameter name="monitor">
<parameter_description> a `GdkMonitor`
</parameter_description>
</parameter>
</parameters>
<return> the scale

</return>
</function>

<function name="gdk_monitor_get_scale_factor">
<description>
Gets the internal scale factor that maps from monitor coordinates
to device pixels.

On traditional systems this is 1, but on very high density outputs
it can be a higher value (often 2).

This can be used if you want to create pixel based data for a
particular monitor, but most of the time you’re drawing to a surface
where it is better to use [method@Gdk.Surface.get_scale_factor] instead.


</description>
<parameters>
<parameter name="monitor">
<parameter_description> a `GdkMonitor`
</parameter_description>
</parameter>
</parameters>
<return> the scale factor
</return>
</function>

<function name="gdk_monitor_get_subpixel_layout">
<description>
Gets information about the layout of red, green and blue
primaries for pixels.


</description>
<parameters>
<parameter name="monitor">
<parameter_description> a `GdkMonitor`
</parameter_description>
</parameter>
</parameters>
<return> the subpixel layout
</return>
</function>

<function name="gdk_monitor_get_width_mm">
<description>
Gets the width in millimeters of the monitor.


</description>
<parameters>
<parameter name="monitor">
<parameter_description> a `GdkMonitor`
</parameter_description>
</parameter>
</parameters>
<return> the physical width of the monitor
</return>
</function>

<function name="gdk_monitor_is_valid">
<description>
Returns %TRUE if the @monitor object corresponds to a
physical monitor.

The @monitor becomes invalid when the physical monitor
is unplugged or removed.


</description>
<parameters>
<parameter name="monitor">
<parameter_description> a `GdkMonitor`
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the object corresponds to a physical monitor
</return>
</function>

<function name="gdk_pad_event_get_axis_value">
<description>
Extracts the information from a pad strip or ring event.

</description>
<parameters>
<parameter name="event">
<parameter_description> a pad strip or ring event
</parameter_description>
</parameter>
<parameter name="index">
<parameter_description> Return location for the axis index
</parameter_description>
</parameter>
<parameter name="value">
<parameter_description> Return location for the axis value
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_pad_event_get_button">
<description>
Extracts information about the pressed button from
a pad event.


</description>
<parameters>
<parameter name="event">
<parameter_description> a pad button event
</parameter_description>
</parameter>
</parameters>
<return> the button of @event
</return>
</function>

<function name="gdk_pad_event_get_group_mode">
<description>
Extracts group and mode information from a pad event.

</description>
<parameters>
<parameter name="event">
<parameter_description> a pad event
</parameter_description>
</parameter>
<parameter name="group">
<parameter_description> return location for the group
</parameter_description>
</parameter>
<parameter name="mode">
<parameter_description> return location for the mode
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_paintable_compute_concrete_size">
<description>
Compute a concrete size for the `GdkPaintable`.

Applies the sizing algorithm outlined in the
[CSS Image spec](https://drafts.csswg.org/css-images-3/#default-sizing)
to the given @paintable. See that link for more details.

It is not necessary to call this function when both @specified_width
and @specified_height are known, but it is useful to call this
function in GtkWidget:measure implementations to compute the
other dimension when only one dimension is given.

</description>
<parameters>
<parameter name="paintable">
<parameter_description> a `GdkPaintable`
</parameter_description>
</parameter>
<parameter name="specified_width">
<parameter_description> the width @paintable could be drawn into or
0.0 if unknown
</parameter_description>
</parameter>
<parameter name="specified_height">
<parameter_description> the height @paintable could be drawn into or
0.0 if unknown
</parameter_description>
</parameter>
<parameter name="default_width">
<parameter_description> the width @paintable would be drawn into if
no other constraints were given
</parameter_description>
</parameter>
<parameter name="default_height">
<parameter_description> the height @paintable would be drawn into if
no other constraints were given
</parameter_description>
</parameter>
<parameter name="concrete_width">
<parameter_description> will be set to the concrete width computed
</parameter_description>
</parameter>
<parameter name="concrete_height">
<parameter_description> will be set to the concrete height computed
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_paintable_get_current_image">
<description>
Gets an immutable paintable for the current contents displayed by @paintable.

This is useful when you want to retain the current state of an animation,
for example to take a screenshot of a running animation.

If the @paintable is already immutable, it will return itself.


</description>
<parameters>
<parameter name="paintable">
<parameter_description> a `GdkPaintable`
</parameter_description>
</parameter>
</parameters>
<return> An immutable paintable for the current
contents of @paintable
</return>
</function>

<function name="gdk_paintable_get_flags">
<description>
Get flags for the paintable.

This is oftentimes useful for optimizations.

See [flags@Gdk.PaintableFlags] for the flags and what they mean.


</description>
<parameters>
<parameter name="paintable">
<parameter_description> a `GdkPaintable`
</parameter_description>
</parameter>
</parameters>
<return> The `GdkPaintableFlags` for this paintable
</return>
</function>

<function name="gdk_paintable_get_intrinsic_aspect_ratio">
<description>
Gets the preferred aspect ratio the @paintable would like to be displayed at.

The aspect ratio is the width divided by the height, so a value of 0.5
means that the @paintable prefers to be displayed twice as high as it
is wide. Consumers of this interface can use this to preserve aspect
ratio when displaying the paintable.

This is a purely informational value and does not in any way limit the
values that may be passed to [method@Gdk.Paintable.snapshot].

Usually when a @paintable returns nonzero values from
[method@Gdk.Paintable.get_intrinsic_width] and
[method@Gdk.Paintable.get_intrinsic_height] the aspect ratio
should conform to those values, though that is not required.

If the @paintable does not have a preferred aspect ratio,
it returns 0. Negative values are never returned.


</description>
<parameters>
<parameter name="paintable">
<parameter_description> a `GdkPaintable`
</parameter_description>
</parameter>
</parameters>
<return> the intrinsic aspect ratio of @paintable or 0 if none.
</return>
</function>

<function name="gdk_paintable_get_intrinsic_height">
<description>
Gets the preferred height the @paintable would like to be displayed at.

Consumers of this interface can use this to reserve enough space to draw
the paintable.

This is a purely informational value and does not in any way limit the
values that may be passed to [method@Gdk.Paintable.snapshot].

If the @paintable does not have a preferred height, it returns 0.
Negative values are never returned.


</description>
<parameters>
<parameter name="paintable">
<parameter_description> a `GdkPaintable`
</parameter_description>
</parameter>
</parameters>
<return> the intrinsic height of @paintable or 0 if none.
</return>
</function>

<function name="gdk_paintable_get_intrinsic_width">
<description>
Gets the preferred width the @paintable would like to be displayed at.

Consumers of this interface can use this to reserve enough space to draw
the paintable.

This is a purely informational value and does not in any way limit the
values that may be passed to [method@Gdk.Paintable.snapshot].

If the @paintable does not have a preferred width, it returns 0.
Negative values are never returned.


</description>
<parameters>
<parameter name="paintable">
<parameter_description> a `GdkPaintable`
</parameter_description>
</parameter>
</parameters>
<return> the intrinsic width of @paintable or 0 if none.
</return>
</function>

<function name="gdk_paintable_invalidate_contents">
<description>
Called by implementations of `GdkPaintable` to invalidate their contents.

Unless the contents are invalidated, implementations must guarantee that
multiple calls of [method@Gdk.Paintable.snapshot] produce the same output.

This function will emit the [signal@Gdk.Paintable::invalidate-contents]
signal.

If a @paintable reports the %GDK_PAINTABLE_STATIC_CONTENTS flag,
it must not call this function.

</description>
<parameters>
<parameter name="paintable">
<parameter_description> a `GdkPaintable`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_paintable_invalidate_size">
<description>
Called by implementations of `GdkPaintable` to invalidate their size.

As long as the size is not invalidated, @paintable must return the same
values for its intrinsic width, height and aspect ratio.

This function will emit the [signal@Gdk.Paintable::invalidate-size]
signal.

If a @paintable reports the %GDK_PAINTABLE_STATIC_SIZE flag,
it must not call this function.

</description>
<parameters>
<parameter name="paintable">
<parameter_description> a `GdkPaintable`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_paintable_new_empty">
<description>
Returns a paintable that has the given intrinsic size and draws nothing.

This is often useful for implementing the
[vfunc@Gdk.Paintable.get_current_image] virtual function
when the paintable is in an incomplete state (like a
[GtkMediaStream](../gtk4/class.MediaStream.html) before receiving
the first frame).


</description>
<parameters>
<parameter name="intrinsic_width">
<parameter_description> The intrinsic width to report. Can be 0 for no width.
</parameter_description>
</parameter>
<parameter name="intrinsic_height">
<parameter_description> The intrinsic height to report. Can be 0 for no height.
</parameter_description>
</parameter>
</parameters>
<return> a `GdkPaintable`
</return>
</function>

<function name="gdk_paintable_snapshot">
<description>
Snapshots the given paintable with the given @width and @height.

The paintable is drawn at the current (0,0) offset of the @snapshot.
If @width and @height are not larger than zero, this function will
do nothing.

</description>
<parameters>
<parameter name="paintable">
<parameter_description> a `GdkPaintable`
</parameter_description>
</parameter>
<parameter name="snapshot">
<parameter_description> a `GdkSnapshot` to snapshot to
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> width to snapshot in
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> height to snapshot in
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_pango_layout_get_clip_region">
<description>
Obtains a clip region which contains the areas where the given ranges
of text would be drawn.

@x_origin and @y_origin are the top left point to center the layout.
@index_ranges should contain ranges of bytes in the layout’s text.

Note that the regions returned correspond to logical extents of the text
ranges, not ink extents. So the drawn layout may in fact touch areas out of
the clip region.  The clip region is mainly useful for highlightling parts
of text, such as when text is selected.


</description>
<parameters>
<parameter name="layout">
<parameter_description> a `PangoLayout`
</parameter_description>
</parameter>
<parameter name="x_origin">
<parameter_description> X pixel where you intend to draw the layout with this clip
</parameter_description>
</parameter>
<parameter name="y_origin">
<parameter_description> Y pixel where you intend to draw the layout with this clip
</parameter_description>
</parameter>
<parameter name="index_ranges">
<parameter_description> array of byte indexes into the layout, where even members of array are start indexes and odd elements are end indexes
</parameter_description>
</parameter>
<parameter name="n_ranges">
<parameter_description> number of ranges in @index_ranges, i.e. half the size of @index_ranges
</parameter_description>
</parameter>
</parameters>
<return> a clip region containing the given ranges
</return>
</function>

<function name="gdk_pango_layout_line_get_clip_region">
<description>
Obtains a clip region which contains the areas where the given
ranges of text would be drawn.

@x_origin and @y_origin are the top left position of the layout.
@index_ranges should contain ranges of bytes in the layout’s text.
The clip region will include space to the left or right of the line
(to the layout bounding box) if you have indexes above or below the
indexes contained inside the line. This is to draw the selection all
the way to the side of the layout. However, the clip region is in line
coordinates, not layout coordinates.

Note that the regions returned correspond to logical extents of the text
ranges, not ink extents. So the drawn line may in fact touch areas out of
the clip region.  The clip region is mainly useful for highlightling parts
of text, such as when text is selected.


</description>
<parameters>
<parameter name="line">
<parameter_description> a `PangoLayoutLine`
</parameter_description>
</parameter>
<parameter name="x_origin">
<parameter_description> X pixel where you intend to draw the layout line with this clip
</parameter_description>
</parameter>
<parameter name="y_origin">
<parameter_description> baseline pixel where you intend to draw the layout line with this clip
</parameter_description>
</parameter>
<parameter name="index_ranges">
<parameter_description> array of byte indexes into the layout, where even
members of array are start indexes and odd elements are end indexes
</parameter_description>
</parameter>
<parameter name="n_ranges">
<parameter_description> number of ranges in @index_ranges, i.e. half the size of @index_ranges
</parameter_description>
</parameter>
</parameters>
<return> a clip region containing the given ranges
</return>
</function>

<function name="gdk_pipe_io_stream_new">
<description>
Creates a `GIOStream` whose input- and output-stream behave like a pipe.

Data written into the output stream becomes available for reading on
the input stream.

Note that this is data transfer in the opposite direction to
g_output_stream_splice().


</description>
<parameters>
</parameters>
<return> a new `GIOStream`
</return>
</function>

<function name="gdk_pixbuf_add_alpha">
<description>
Takes an existing pixbuf and adds an alpha channel to it.

If the existing pixbuf already had an alpha channel, the channel
values are copied from the original; otherwise, the alpha channel
is initialized to 255 (full opacity).

If `substitute_color` is `TRUE`, then the color specified by the
(`r`, `g`, `b`) arguments will be assigned zero opacity. That is,
if you pass `(255, 255, 255)` for the substitute color, all white
pixels will become fully transparent.

If `substitute_color` is `FALSE`, then the (`r`, `g`, `b`) arguments
will be ignored.


</description>
<parameters>
<parameter name="pixbuf">
<parameter_description> A #GdkPixbuf.
</parameter_description>
</parameter>
<parameter name="substitute_color">
<parameter_description> Whether to set a color to zero opacity.
</parameter_description>
</parameter>
<parameter name="r">
<parameter_description> Red value to substitute.
</parameter_description>
</parameter>
<parameter name="g">
<parameter_description> Green value to substitute.
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> Blue value to substitute.
</parameter_description>
</parameter>
</parameters>
<return> A newly-created pixbuf
</return>
</function>

<function name="gdk_pixbuf_animation_get_height">
<description>
Queries the height of the bounding box of a pixbuf animation.


</description>
<parameters>
<parameter name="animation">
<parameter_description> An animation.
</parameter_description>
</parameter>
</parameters>
<return> Height of the bounding box of the animation.
</return>
</function>

<function name="gdk_pixbuf_animation_get_iter">
<description>
Get an iterator for displaying an animation.

The iterator provides the frames that should be displayed at a
given time.

@start_time would normally come from g_get_current_time(), and marks
the beginning of animation playback. After creating an iterator, you
should immediately display the pixbuf returned by
gdk_pixbuf_animation_iter_get_pixbuf(). Then, you should install
a timeout (with g_timeout_add()) or by some other mechanism ensure
that you'll update the image after
gdk_pixbuf_animation_iter_get_delay_time() milliseconds. Each time
the image is updated, you should reinstall the timeout with the new,
possibly-changed delay time.

As a shortcut, if @start_time is `NULL`, the result of
g_get_current_time() will be used automatically.

To update the image (i.e. possibly change the result of
gdk_pixbuf_animation_iter_get_pixbuf() to a new frame of the animation),
call gdk_pixbuf_animation_iter_advance().

If you're using #GdkPixbufLoader, in addition to updating the image
after the delay time, you should also update it whenever you
receive the area_updated signal and
gdk_pixbuf_animation_iter_on_currently_loading_frame() returns
`TRUE`. In this case, the frame currently being fed into the loader
has received new data, so needs to be refreshed. The delay time for
a frame may also be modified after an area_updated signal, for
example if the delay time for a frame is encoded in the data after
the frame itself. So your timeout should be reinstalled after any
area_updated signal.

A delay time of -1 is possible, indicating &quot;infinite&quot;.


</description>
<parameters>
<parameter name="animation">
<parameter_description> a #GdkPixbufAnimation
</parameter_description>
</parameter>
<parameter name="start_time">
<parameter_description> time when the animation starts playing
</parameter_description>
</parameter>
</parameters>
<return> an iterator to move over the animation
</return>
</function>

<function name="gdk_pixbuf_animation_get_static_image">
<description>
Retrieves a static image for the animation.

If an animation is really just a plain image (has only one frame),
this function returns that image.

If the animation is an animation, this function returns a reasonable
image to use as a static unanimated image, which might be the first
frame, or something more sophisticated depending on the file format.

If an animation hasn't loaded any frames yet, this function will
return `NULL`.


</description>
<parameters>
<parameter name="animation">
<parameter_description> a #GdkPixbufAnimation
</parameter_description>
</parameter>
</parameters>
<return> unanimated image representing the animation
</return>
</function>

<function name="gdk_pixbuf_animation_get_width">
<description>
Queries the width of the bounding box of a pixbuf animation.


</description>
<parameters>
<parameter name="animation">
<parameter_description> An animation.
</parameter_description>
</parameter>
</parameters>
<return> Width of the bounding box of the animation.
</return>
</function>

<function name="gdk_pixbuf_animation_is_static_image">
<description>
Checks whether the animation is a static image.

If you load a file with gdk_pixbuf_animation_new_from_file() and it
turns out to be a plain, unanimated image, then this function will
return `TRUE`. Use gdk_pixbuf_animation_get_static_image() to retrieve
the image.


</description>
<parameters>
<parameter name="animation">
<parameter_description> a #GdkPixbufAnimation
</parameter_description>
</parameter>
</parameters>
<return> `TRUE` if the &quot;animation&quot; was really just an image
</return>
</function>

<function name="gdk_pixbuf_animation_iter_advance">
<description>
Possibly advances an animation to a new frame.

Chooses the frame based on the start time passed to
gdk_pixbuf_animation_get_iter().

@current_time would normally come from g_get_current_time(), and
must be greater than or equal to the time passed to
gdk_pixbuf_animation_get_iter(), and must increase or remain
unchanged each time gdk_pixbuf_animation_iter_get_pixbuf() is
called. That is, you can't go backward in time; animations only
play forward.

As a shortcut, pass `NULL` for the current time and g_get_current_time()
will be invoked on your behalf. So you only need to explicitly pass
@current_time if you're doing something odd like playing the animation
at double speed.

If this function returns `FALSE`, there's no need to update the animation
display, assuming the display had been rendered prior to advancing;
if `TRUE`, you need to call gdk_pixbuf_animation_iter_get_pixbuf()
and update the display with the new pixbuf.


</description>
<parameters>
<parameter name="iter">
<parameter_description> a #GdkPixbufAnimationIter
</parameter_description>
</parameter>
<parameter name="current_time">
<parameter_description> current time
</parameter_description>
</parameter>
</parameters>
<return> `TRUE` if the image may need updating
</return>
</function>

<function name="gdk_pixbuf_animation_iter_get_delay_time">
<description>
Gets the number of milliseconds the current pixbuf should be displayed,
or -1 if the current pixbuf should be displayed forever.

The `g_timeout_add()` function conveniently takes a timeout in milliseconds,
so you can use a timeout to schedule the next update.

Note that some formats, like GIF, might clamp the timeout values in the
image file to avoid updates that are just too quick. The minimum timeout
for GIF images is currently 20 milliseconds.


</description>
<parameters>
<parameter name="iter">
<parameter_description> an animation iterator
</parameter_description>
</parameter>
</parameters>
<return> delay time in milliseconds (thousandths of a second)
</return>
</function>

<function name="gdk_pixbuf_animation_iter_get_pixbuf">
<description>
Gets the current pixbuf which should be displayed.

The pixbuf might not be the same size as the animation itself
(gdk_pixbuf_animation_get_width(), gdk_pixbuf_animation_get_height()).

This pixbuf should be displayed for gdk_pixbuf_animation_iter_get_delay_time()
milliseconds.

The caller of this function does not own a reference to the returned
pixbuf; the returned pixbuf will become invalid when the iterator
advances to the next frame, which may happen anytime you call
gdk_pixbuf_animation_iter_advance().

Copy the pixbuf to keep it (don't just add a reference), as it may get
recycled as you advance the iterator.


</description>
<parameters>
<parameter name="iter">
<parameter_description> an animation iterator
</parameter_description>
</parameter>
</parameters>
<return> the pixbuf to be displayed
</return>
</function>

<function name="gdk_pixbuf_animation_iter_on_currently_loading_frame">
<description>
Used to determine how to respond to the area_updated signal on
#GdkPixbufLoader when loading an animation.

The `::area_updated` signal is emitted for an area of the frame currently
streaming in to the loader. So if you're on the currently loading frame,
you will need to redraw the screen for the updated area.


</description>
<parameters>
<parameter name="iter">
<parameter_description> a #GdkPixbufAnimationIter
</parameter_description>
</parameter>
</parameters>
<return> `TRUE` if the frame we're on is partially loaded, or the last frame
</return>
</function>

<function name="gdk_pixbuf_animation_new_from_file">
<description>
Creates a new animation by loading it from a file.

The file format is detected automatically.

If the file's format does not support multi-frame images, then an animation
with a single frame will be created.

Possible errors are in the `GDK_PIXBUF_ERROR` and `G_FILE_ERROR` domains.


</description>
<parameters>
<parameter name="filename">
<parameter_description> Name of file to load, in the GLib file
name encoding
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> return location for error
</parameter_description>
</parameter>
</parameters>
<return> A newly-created animation
</return>
</function>

<function name="gdk_pixbuf_animation_new_from_file_utf8">
<description>
Same as gdk_pixbuf_animation_new_from_file()


</description>
<parameters>
<parameter name="filename">
<parameter_description> Name of file to load, in the GLib file name encoding
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> return location for error
</parameter_description>
</parameter>
</parameters>
<return> A newly-created animation with a reference count of 1, or `NULL`
if any of several error conditions ocurred:  the file could not be opened,
there was no loader for the file's format, there was not enough memory to
allocate the image buffer, or the image file contained invalid data.
</return>
</function>

<function name="gdk_pixbuf_animation_new_from_resource">
<description>
Creates a new pixbuf animation by loading an image from an resource.

The file format is detected automatically. If `NULL` is returned, then
@error will be set.

Since: 2.28

</description>
<parameters>
<parameter name="resource_path">
<parameter_description> the path of the resource file
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> Return location for an error
</parameter_description>
</parameter>
</parameters>
<return> A newly-created animation

</return>
</function>

<function name="gdk_pixbuf_animation_new_from_stream">
<description>
Creates a new animation by loading it from an input stream.

The file format is detected automatically.

If `NULL` is returned, then @error will be set.

The @cancellable can be used to abort the operation from another thread.
If the operation was cancelled, the error `G_IO_ERROR_CANCELLED` will be
returned. Other possible errors are in the `GDK_PIXBUF_ERROR` and
`G_IO_ERROR` domains.

The stream is not closed.

Since: 2.28

</description>
<parameters>
<parameter name="stream">
<parameter_description>  a `GInputStream` to load the pixbuf from
</parameter_description>
</parameter>
<parameter name="cancellable">
<parameter_description> optional `GCancellable` object
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> Return location for an error
</parameter_description>
</parameter>
</parameters>
<return> A newly-created animation

</return>
</function>

<function name="gdk_pixbuf_animation_new_from_stream_async">
<description>
Creates a new animation by asynchronously loading an image from an input stream.

For more details see gdk_pixbuf_new_from_stream(), which is the synchronous
version of this function.

When the operation is finished, `callback` will be called in the main thread.
You can then call gdk_pixbuf_animation_new_from_stream_finish() to get the
result of the operation.

Since: 2.28

</description>
<parameters>
<parameter name="stream">
<parameter_description> a #GInputStream from which to load the animation
</parameter_description>
</parameter>
<parameter name="cancellable">
<parameter_description> optional #GCancellable object
</parameter_description>
</parameter>
<parameter name="callback">
<parameter_description> a `GAsyncReadyCallback` to call when the pixbuf is loaded
</parameter_description>
</parameter>
<parameter name="user_data">
<parameter_description> the data to pass to the callback function
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_pixbuf_animation_new_from_stream_finish">
<description>
Finishes an asynchronous pixbuf animation creation operation started with
[func@GdkPixbuf.PixbufAnimation.new_from_stream_async].

Since: 2.28

</description>
<parameters>
<parameter name="async_result">
<parameter_description> a #GAsyncResult
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> a #GError, or `NULL`
</parameter_description>
</parameter>
</parameters>
<return> the newly created animation

</return>
</function>

<function name="gdk_pixbuf_animation_ref">
<description>
Adds a reference to an animation.

Deprecated: 2.0: Use g_object_ref().

</description>
<parameters>
<parameter name="animation">
<parameter_description> An animation.
</parameter_description>
</parameter>
</parameters>
<return> The same as the @animation argument.

</return>
</function>

<function name="gdk_pixbuf_animation_unref">
<description>
Removes a reference from an animation.

Deprecated: 2.0: Use g_object_unref().

</description>
<parameters>
<parameter name="animation">
<parameter_description> An animation.
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_pixbuf_apply_embedded_orientation">
<description>
Takes an existing pixbuf and checks for the presence of an
associated &quot;orientation&quot; option.

The orientation option may be provided by the JPEG loader (which
reads the exif orientation tag) or the TIFF loader (which reads
the TIFF orientation tag, and compensates it for the partial
transforms performed by libtiff).

If an orientation option/tag is present, the appropriate transform
will be performed so that the pixbuf is oriented correctly.

Return: (transfer full) (nullable): A newly-created pixbuf

Since: 2.12

</description>
<parameters>
<parameter name="src">
<parameter_description> a pixbuf with an orientation option
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_pixbuf_buffer_queue_clear">
<description>
Resets @queue into to initial state. All buffers it contains will be 
released and the offset will be reset to 0.

</description>
<parameters>
<parameter name="queue">
<parameter_description> a #GdkPixbufBufferQueue
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_pixbuf_buffer_queue_flush">
<description>
Removes the first @n_bytes bytes from the queue.

</description>
<parameters>
<parameter name="queue">
<parameter_description> a #GdkPixbufBufferQueue
</parameter_description>
</parameter>
<parameter name="n_bytes">
<parameter_description> amount of bytes to flush from the queue
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_pixbuf_buffer_queue_get_offset">
<description>
Queries the amount of bytes that has already been pulled out of
@queue using functions like gdk_pixbuf_buffer_queue_pull().


</description>
<parameters>
<parameter name="queue">
<parameter_description> a #GdkPixbufBufferQueue
</parameter_description>
</parameter>
</parameters>
<return> Number of bytes that were already pulled from this queue.
</return>
</function>

<function name="gdk_pixbuf_buffer_queue_get_size">
<description>
Returns the number of bytes currently in @queue.


</description>
<parameters>
<parameter name="queue">
<parameter_description> a #GdkPixbufBufferQueue
</parameter_description>
</parameter>
</parameters>
<return> amount of bytes in @queue.
</return>
</function>

<function name="gdk_pixbuf_buffer_queue_new">
<description>
Creates a new empty buffer queue.


</description>
<parameters>
</parameters>
<return> a new buffer queue. Use gdk_pixbuf_buffer_queue_unref () to free it.
</return>
</function>

<function name="gdk_pixbuf_buffer_queue_peek">
<description>
Creates a new buffer with the first @length bytes from @queue, but unlike 
gdk_pixbuf_buffer_queue_pull(), does not remove them from @queue.


</description>
<parameters>
<parameter name="queue">
<parameter_description> a #GdkPixbufBufferQueue to read from
</parameter_description>
</parameter>
<parameter name="length">
<parameter_description> amount of bytes to peek
</parameter_description>
</parameter>
</parameters>
<return> NULL if the requested amount of data wasn't available or a new 
#GBytes. Use g_bytes_unref() after use.
</return>
</function>

<function name="gdk_pixbuf_buffer_queue_peek_buffer">
<description>
Gets the first buffer out of @queue and returns it. This function is 
equivalent to calling gdk_pixbuf_buffer_queue_peek() with the size of the
first buffer in it.


</description>
<parameters>
<parameter name="queue">
<parameter_description> a #GdkPixbufBufferQueue
</parameter_description>
</parameter>
</parameters>
<return> The first buffer in @queue or %NULL if @queue is empty. Use 
g_bytes_unref() after use.
</return>
</function>

<function name="gdk_pixbuf_buffer_queue_pull">
<description>
If enough data is still available in @queue, the first @length bytes are 
put into a new buffer and that buffer is returned. The @length bytes are
removed from the head of the queue. If not enough data is available, %NULL
is returned.


</description>
<parameters>
<parameter name="queue">
<parameter_description> a #GdkPixbufBufferQueue
</parameter_description>
</parameter>
<parameter name="length">
<parameter_description> amount of bytes to pull
</parameter_description>
</parameter>
</parameters>
<return> a new #GBytes or %NULL
</return>
</function>

<function name="gdk_pixbuf_buffer_queue_pull_buffer">
<description>
Pulls the first buffer out of @queue and returns it. This function is 
equivalent to calling gdk_pixbuf_buffer_queue_pull() with the size of the
first buffer in it.


</description>
<parameters>
<parameter name="queue">
<parameter_description> a #GdkPixbufBufferQueue
</parameter_description>
</parameter>
</parameters>
<return> The first buffer in @queue or %NULL if @queue is empty.
</return>
</function>

<function name="gdk_pixbuf_buffer_queue_push">
<description>
Appends the given @bytes to the buffers already in @queue. This function
will take ownership of the given @buffer. Use g_bytes_ref () before
calling this function to keep a reference.

</description>
<parameters>
<parameter name="queue">
<parameter_description> a #GdkPixbufBufferQueue
</parameter_description>
</parameter>
<parameter name="bytes">
<parameter_description> #GBytes to append to @queue
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_pixbuf_buffer_queue_ref">
<description>
increases the reference count of @queue by one.


</description>
<parameters>
<parameter name="queue">
<parameter_description> a #GdkPixbufBufferQueue
</parameter_description>
</parameter>
</parameters>
<return> The passed in @queue.
</return>
</function>

<function name="gdk_pixbuf_buffer_queue_unref">
<description>
Decreases the reference count of @queue by one. If no reference 
to this buffer exists anymore, the buffer and the memory 
it manages are freed.

</description>
<parameters>
<parameter name="queue">
<parameter_description> a #GdkPixbufBufferQueue
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_pixbuf_calculate_rowstride">
<description>
Calculates the rowstride that an image created with those values would
have.

This function is useful for front-ends and backends that want to check
image values without needing to create a `GdkPixbuf`.

Since: 2.36.8

</description>
<parameters>
<parameter name="colorspace">
<parameter_description> Color space for image
</parameter_description>
</parameter>
<parameter name="has_alpha">
<parameter_description> Whether the image should have transparency information
</parameter_description>
</parameter>
<parameter name="bits_per_sample">
<parameter_description> Number of bits per color sample
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> Width of image in pixels, must be &gt; 0
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> Height of image in pixels, must be &gt; 0
</parameter_description>
</parameter>
</parameters>
<return> the rowstride for the given values, or -1 in case of error.

</return>
</function>

<function name="gdk_pixbuf_composite">
<description>
Creates a transformation of the source image @src by scaling by
@scale_x and @scale_y then translating by @offset_x and @offset_y.

This gives an image in the coordinates of the destination pixbuf.
The rectangle (@dest_x, @dest_y, @dest_width, @dest_height)
is then alpha blended onto the corresponding rectangle of the
original destination image.

When the destination rectangle contains parts not in the source 
image, the data at the edges of the source image is replicated
to infinity. 

![](composite.png)

</description>
<parameters>
<parameter name="src">
<parameter_description> a #GdkPixbuf
</parameter_description>
</parameter>
<parameter name="dest">
<parameter_description> the #GdkPixbuf into which to render the results
</parameter_description>
</parameter>
<parameter name="dest_x">
<parameter_description> the left coordinate for region to render
</parameter_description>
</parameter>
<parameter name="dest_y">
<parameter_description> the top coordinate for region to render
</parameter_description>
</parameter>
<parameter name="dest_width">
<parameter_description> the width of the region to render
</parameter_description>
</parameter>
<parameter name="dest_height">
<parameter_description> the height of the region to render
</parameter_description>
</parameter>
<parameter name="offset_x">
<parameter_description> the offset in the X direction (currently rounded to an integer)
</parameter_description>
</parameter>
<parameter name="offset_y">
<parameter_description> the offset in the Y direction (currently rounded to an integer)
</parameter_description>
</parameter>
<parameter name="scale_x">
<parameter_description> the scale factor in the X direction
</parameter_description>
</parameter>
<parameter name="scale_y">
<parameter_description> the scale factor in the Y direction
</parameter_description>
</parameter>
<parameter name="interp_type">
<parameter_description> the interpolation type for the transformation.
</parameter_description>
</parameter>
<parameter name="overall_alpha">
<parameter_description> overall alpha for source image (0..255)
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_pixbuf_composite_color">
<description>
Creates a transformation of the source image @src by scaling by
@scale_x and @scale_y then translating by @offset_x and @offset_y,
then alpha blends the rectangle (@dest_x ,@dest_y, @dest_width,
@dest_height) of the resulting image with a checkboard of the
colors @color1 and @color2 and renders it onto the destination
image.

If the source image has no alpha channel, and @overall_alpha is 255, a fast
path is used which omits the alpha blending and just performs the scaling.

See gdk_pixbuf_composite_color_simple() for a simpler variant of this
function suitable for many tasks.

</description>
<parameters>
<parameter name="src">
<parameter_description> a #GdkPixbuf
</parameter_description>
</parameter>
<parameter name="dest">
<parameter_description> the #GdkPixbuf into which to render the results
</parameter_description>
</parameter>
<parameter name="dest_x">
<parameter_description> the left coordinate for region to render
</parameter_description>
</parameter>
<parameter name="dest_y">
<parameter_description> the top coordinate for region to render
</parameter_description>
</parameter>
<parameter name="dest_width">
<parameter_description> the width of the region to render
</parameter_description>
</parameter>
<parameter name="dest_height">
<parameter_description> the height of the region to render
</parameter_description>
</parameter>
<parameter name="offset_x">
<parameter_description> the offset in the X direction (currently rounded to an integer)
</parameter_description>
</parameter>
<parameter name="offset_y">
<parameter_description> the offset in the Y direction (currently rounded to an integer)
</parameter_description>
</parameter>
<parameter name="scale_x">
<parameter_description> the scale factor in the X direction
</parameter_description>
</parameter>
<parameter name="scale_y">
<parameter_description> the scale factor in the Y direction
</parameter_description>
</parameter>
<parameter name="interp_type">
<parameter_description> the interpolation type for the transformation.
</parameter_description>
</parameter>
<parameter name="overall_alpha">
<parameter_description> overall alpha for source image (0..255)
</parameter_description>
</parameter>
<parameter name="check_x">
<parameter_description> the X offset for the checkboard (origin of checkboard is at -@check_x, -@check_y)
</parameter_description>
</parameter>
<parameter name="check_y">
<parameter_description> the Y offset for the checkboard 
</parameter_description>
</parameter>
<parameter name="check_size">
<parameter_description> the size of checks in the checkboard (must be a power of two)
</parameter_description>
</parameter>
<parameter name="color1">
<parameter_description> the color of check at upper left
</parameter_description>
</parameter>
<parameter name="color2">
<parameter_description> the color of the other check
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_pixbuf_composite_color_simple">
<description>
Creates a new pixbuf by scaling `src` to `dest_width` x `dest_height`
and alpha blending the result with a checkboard of colors `color1`
and `color2`.


</description>
<parameters>
<parameter name="src">
<parameter_description> a #GdkPixbuf
</parameter_description>
</parameter>
<parameter name="dest_width">
<parameter_description> the width of destination image
</parameter_description>
</parameter>
<parameter name="dest_height">
<parameter_description> the height of destination image
</parameter_description>
</parameter>
<parameter name="interp_type">
<parameter_description> the interpolation type for the transformation.
</parameter_description>
</parameter>
<parameter name="overall_alpha">
<parameter_description> overall alpha for source image (0..255)
</parameter_description>
</parameter>
<parameter name="check_size">
<parameter_description> the size of checks in the checkboard (must be a power of two)
</parameter_description>
</parameter>
<parameter name="color1">
<parameter_description> the color of check at upper left
</parameter_description>
</parameter>
<parameter name="color2">
<parameter_description> the color of the other check
</parameter_description>
</parameter>
</parameters>
<return> the new pixbuf
</return>
</function>

<function name="gdk_pixbuf_copy">
<description>
Creates a new `GdkPixbuf` with a copy of the information in the specified
`pixbuf`.

Note that this does not copy the options set on the original `GdkPixbuf`,
use gdk_pixbuf_copy_options() for this.


</description>
<parameters>
<parameter name="pixbuf">
<parameter_description> A pixbuf.
</parameter_description>
</parameter>
</parameters>
<return> A newly-created pixbuf
</return>
</function>

<function name="gdk_pixbuf_copy_area">
<description>
Copies a rectangular area from `src_pixbuf` to `dest_pixbuf`.

Conversion of pixbuf formats is done automatically.

If the source rectangle overlaps the destination rectangle on the
same pixbuf, it will be overwritten during the copy operation.
Therefore, you can not use this function to scroll a pixbuf.

</description>
<parameters>
<parameter name="src_pixbuf">
<parameter_description> Source pixbuf.
</parameter_description>
</parameter>
<parameter name="src_x">
<parameter_description> Source X coordinate within @src_pixbuf.
</parameter_description>
</parameter>
<parameter name="src_y">
<parameter_description> Source Y coordinate within @src_pixbuf.
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> Width of the area to copy.
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> Height of the area to copy.
</parameter_description>
</parameter>
<parameter name="dest_pixbuf">
<parameter_description> Destination pixbuf.
</parameter_description>
</parameter>
<parameter name="dest_x">
<parameter_description> X coordinate within @dest_pixbuf.
</parameter_description>
</parameter>
<parameter name="dest_y">
<parameter_description> Y coordinate within @dest_pixbuf.
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_pixbuf_copy_options">
<description>
Copies the key/value pair options attached to a `GdkPixbuf` to another
`GdkPixbuf`.

This is useful to keep original metadata after having manipulated
a file. However be careful to remove metadata which you've already
applied, such as the &quot;orientation&quot; option after rotating the image.

Since: 2.36

</description>
<parameters>
<parameter name="src_pixbuf">
<parameter_description> the source pixbuf
</parameter_description>
</parameter>
<parameter name="dest_pixbuf">
<parameter_description> the destination pixbuf
</parameter_description>
</parameter>
</parameters>
<return> `TRUE` on success.

</return>
</function>

<function name="gdk_pixbuf_fill">
<description>
Clears a pixbuf to the given RGBA value, converting the RGBA value into
the pixbuf's pixel format.

The alpha component will be ignored if the pixbuf doesn't have an alpha
channel.

</description>
<parameters>
<parameter name="pixbuf">
<parameter_description> a `GdkPixbuf`
</parameter_description>
</parameter>
<parameter name="pixel">
<parameter_description> RGBA pixel to used to clear (`0xffffffff` is opaque white,
`0x00000000` transparent black)
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_pixbuf_flip">
<description>
Flips a pixbuf horizontally or vertically and returns the
result in a new pixbuf.

Since: 2.6

</description>
<parameters>
<parameter name="src">
<parameter_description> a #GdkPixbuf
</parameter_description>
</parameter>
<parameter name="horizontal">
<parameter_description> `TRUE` to flip horizontally, `FALSE` to flip vertically
</parameter_description>
</parameter>
</parameters>
<return> the new pixbuf

</return>
</function>

<function name="gdk_pixbuf_format_copy">
<description>
Creates a copy of `format`.

Since: 2.22

</description>
<parameters>
<parameter name="format">
<parameter_description> a pixbuf format
</parameter_description>
</parameter>
</parameters>
<return> the newly allocated copy of a `GdkPixbufFormat`. Use
gdk_pixbuf_format_free() to free the resources when done

</return>
</function>

<function name="gdk_pixbuf_format_free">
<description>
Frees the resources allocated when copying a `GdkPixbufFormat`
using gdk_pixbuf_format_copy()

Since: 2.22

</description>
<parameters>
<parameter name="format">
<parameter_description> a pixbuf format
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_pixbuf_format_get_description">
<description>
Returns a description of the format.

Since: 2.2

</description>
<parameters>
<parameter name="format">
<parameter_description> a `GdkPixbufFormat`
</parameter_description>
</parameter>
</parameters>
<return> a description of the format.

</return>
</function>

<function name="gdk_pixbuf_format_get_extensions">
<description>
Returns the filename extensions typically used for files in the 
given format.

Since: 2.2

</description>
<parameters>
<parameter name="format">
<parameter_description> a `GdkPixbufFormat`
</parameter_description>
</parameter>
</parameters>
<return> an array of
filename extensions

</return>
</function>

<function name="gdk_pixbuf_format_get_license">
<description>
Returns information about the license of the image loader for the format.

The returned string should be a shorthand for a well known license, e.g.
&quot;LGPL&quot;, &quot;GPL&quot;, &quot;QPL&quot;, &quot;GPL/QPL&quot;, or &quot;other&quot; to indicate some other license.

Since: 2.6

</description>
<parameters>
<parameter name="format">
<parameter_description> a pixbuf format
</parameter_description>
</parameter>
</parameters>
<return> a string describing the license of the pixbuf format

</return>
</function>

<function name="gdk_pixbuf_format_get_mime_types">
<description>
Returns the mime types supported by the format.

Since: 2.2

</description>
<parameters>
<parameter name="format">
<parameter_description> a `GdkPixbufFormat`
</parameter_description>
</parameter>
</parameters>
<return> an array of mime types

</return>
</function>

<function name="gdk_pixbuf_format_get_name">
<description>
Returns the name of the format.

Since: 2.2

</description>
<parameters>
<parameter name="format">
<parameter_description> a `GdkPixbufFormat`
</parameter_description>
</parameter>
</parameters>
<return> the name of the format. 

</return>
</function>

<function name="gdk_pixbuf_format_is_disabled">
<description>
Returns whether this image format is disabled.

See gdk_pixbuf_format_set_disabled().

Since: 2.6

</description>
<parameters>
<parameter name="format">
<parameter_description> a `GdkPixbufFormat`
</parameter_description>
</parameter>
</parameters>
<return> whether this image format is disabled.

</return>
</function>

<function name="gdk_pixbuf_format_is_save_option_supported">
<description>
Returns `TRUE` if the save option specified by @option_key is supported when
saving a pixbuf using the module implementing @format.

See gdk_pixbuf_save() for more information about option keys.

Since: 2.36

</description>
<parameters>
<parameter name="format">
<parameter_description> a pixbuf format
</parameter_description>
</parameter>
<parameter name="option_key">
<parameter_description> the name of an option
</parameter_description>
</parameter>
</parameters>
<return> `TRUE` if the specified option is supported

</return>
</function>

<function name="gdk_pixbuf_format_is_scalable">
<description>
Returns whether this image format is scalable.

If a file is in a scalable format, it is preferable to load it at
the desired size, rather than loading it at the default size and
scaling the resulting pixbuf to the desired size.

Since: 2.6

</description>
<parameters>
<parameter name="format">
<parameter_description> a `GdkPixbufFormat`
</parameter_description>
</parameter>
</parameters>
<return> whether this image format is scalable.

</return>
</function>

<function name="gdk_pixbuf_format_is_writable">
<description>
Returns whether pixbufs can be saved in the given format.

Since: 2.2

</description>
<parameters>
<parameter name="format">
<parameter_description> a `GdkPixbufFormat`
</parameter_description>
</parameter>
</parameters>
<return> whether pixbufs can be saved in the given format.

</return>
</function>

<function name="gdk_pixbuf_format_set_disabled">
<description>
Disables or enables an image format.

If a format is disabled, GdkPixbuf won't use the image loader for
this format to load images.

Applications can use this to avoid using image loaders with an
inappropriate license, see gdk_pixbuf_format_get_license().

Since: 2.6

</description>
<parameters>
<parameter name="format">
<parameter_description> a `GdkPixbufFormat`
</parameter_description>
</parameter>
<parameter name="disabled">
<parameter_description> `TRUE` to disable the format @format
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_pixbuf_from_pixdata">
<description>
Converts a `GdkPixdata` to a `GdkPixbuf`.

If `copy_pixels` is `TRUE` or if the pixel data is run-length-encoded,
the pixel data is copied into newly-allocated memory; otherwise it is
reused.

Deprecated: 2.32: Use `GResource` instead.

</description>
<parameters>
<parameter name="pixdata">
<parameter_description> a #GdkPixdata to convert into a `GdkPixbuf`.
</parameter_description>
</parameter>
<parameter name="copy_pixels">
<parameter_description> whether to copy raw pixel data; run-length encoded
pixel data is always copied.
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> location to store possible errors.
</parameter_description>
</parameter>
</parameters>
<return> a new pixbuf

</return>
</function>

<function name="gdk_pixbuf_get_bits_per_sample">
<description>
Queries the number of bits per color sample in a pixbuf.


</description>
<parameters>
<parameter name="pixbuf">
<parameter_description> A pixbuf.
</parameter_description>
</parameter>
</parameters>
<return> Number of bits per color sample.
</return>
</function>

<function name="gdk_pixbuf_get_byte_length">
<description>
Returns the length of the pixel data, in bytes.

Since: 2.26

</description>
<parameters>
<parameter name="pixbuf">
<parameter_description> A pixbuf
</parameter_description>
</parameter>
</parameters>
<return> The length of the pixel data.

</return>
</function>

<function name="gdk_pixbuf_get_colorspace">
<description>
Queries the color space of a pixbuf.


</description>
<parameters>
<parameter name="pixbuf">
<parameter_description> A pixbuf.
</parameter_description>
</parameter>
</parameters>
<return> Color space.
</return>
</function>

<function name="gdk_pixbuf_get_file_info">
<description>
Parses an image file far enough to determine its format and size.

Since: 2.4

</description>
<parameters>
<parameter name="filename">
<parameter_description> The name of the file to identify.
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> Return location for the width of the image
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> Return location for the height of the image
</parameter_description>
</parameter>
</parameters>
<return> A `GdkPixbufFormat` describing
the image format of the file

</return>
</function>

<function name="gdk_pixbuf_get_file_info_async">
<description>
Asynchronously parses an image file far enough to determine its
format and size.

For more details see gdk_pixbuf_get_file_info(), which is the synchronous
version of this function.

When the operation is finished, @callback will be called in the
main thread. You can then call gdk_pixbuf_get_file_info_finish() to
get the result of the operation.

Since: 2.32

</description>
<parameters>
<parameter name="filename">
<parameter_description> The name of the file to identify
</parameter_description>
</parameter>
<parameter name="cancellable">
<parameter_description> optional `GCancellable` object, `NULL` to ignore
</parameter_description>
</parameter>
<parameter name="callback">
<parameter_description> a `GAsyncReadyCallback` to call when the file info is available
</parameter_description>
</parameter>
<parameter name="user_data">
<parameter_description> the data to pass to the callback function
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_pixbuf_get_file_info_finish">
<description>
Finishes an asynchronous pixbuf parsing operation started with
gdk_pixbuf_get_file_info_async().

Since: 2.32

</description>
<parameters>
<parameter name="async_result">
<parameter_description> a `GAsyncResult`
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> Return location for the width of the image, or `NULL`
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> Return location for the height of the image, or `NULL`
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> a `GError`, or `NULL`
</parameter_description>
</parameter>
</parameters>
<return> A `GdkPixbufFormat` describing the
image format of the file

</return>
</function>

<function name="gdk_pixbuf_get_formats">
<description>
Obtains the available information about the image formats supported
by GdkPixbuf.

Since: 2.2

</description>
<parameters>
</parameters>
<return> A list of
support image formats.

</return>
</function>

<function name="gdk_pixbuf_get_from_surface">
<description>
Transfers image data from a `cairo_surface_t` and converts it
to a `GdkPixbuf`.

This allows you to efficiently read individual pixels from cairo surfaces.

This function will create an RGB pixbuf with 8 bits per channel.
The pixbuf will contain an alpha channel if the @surface contains one.

Deprecated: 4.12: Use [class@Gdk.Texture] and subclasses instead
cairo surfaces and pixbufs

</description>
<parameters>
<parameter name="surface">
<parameter_description> surface to copy from
</parameter_description>
</parameter>
<parameter name="src_x">
<parameter_description> Source X coordinate within @surface
</parameter_description>
</parameter>
<parameter name="src_y">
<parameter_description> Source Y coordinate within @surface
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> Width in pixels of region to get
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> Height in pixels of region to get
</parameter_description>
</parameter>
</parameters>
<return> A newly-created pixbuf with a
reference count of 1

</return>
</function>

<function name="gdk_pixbuf_get_from_texture">
<description>
Creates a new pixbuf from @texture.

This should generally not be used in newly written code as later
stages will almost certainly convert the pixbuf back into a texture
to draw it on screen.

Deprecated: 4.12: Use [class@Gdk.Texture] and subclasses instead
cairo surfaces and pixbufs

</description>
<parameters>
<parameter name="texture">
<parameter_description> a `GdkTexture`
</parameter_description>
</parameter>
</parameters>
<return> a new `GdkPixbuf`

</return>
</function>

<function name="gdk_pixbuf_get_has_alpha">
<description>
Queries whether a pixbuf has an alpha channel (opacity information).


</description>
<parameters>
<parameter name="pixbuf">
<parameter_description> A pixbuf.
</parameter_description>
</parameter>
</parameters>
<return> `TRUE` if it has an alpha channel, `FALSE` otherwise.
</return>
</function>

<function name="gdk_pixbuf_get_height">
<description>
Queries the height of a pixbuf.


</description>
<parameters>
<parameter name="pixbuf">
<parameter_description> A pixbuf.
</parameter_description>
</parameter>
</parameters>
<return> Height in pixels.
</return>
</function>

<function name="gdk_pixbuf_get_n_channels">
<description>
Queries the number of channels of a pixbuf.


</description>
<parameters>
<parameter name="pixbuf">
<parameter_description> A pixbuf.
</parameter_description>
</parameter>
</parameters>
<return> Number of channels.
</return>
</function>

<function name="gdk_pixbuf_get_option">
<description>
Looks up @key in the list of options that may have been attached to the
@pixbuf when it was loaded, or that may have been attached by another
function using gdk_pixbuf_set_option().

For instance, the ANI loader provides &quot;Title&quot; and &quot;Artist&quot; options. 
The ICO, XBM, and XPM loaders provide &quot;x_hot&quot; and &quot;y_hot&quot; hot-spot 
options for cursor definitions. The PNG loader provides the tEXt ancillary
chunk key/value pairs as options. Since 2.12, the TIFF and JPEG loaders
return an &quot;orientation&quot; option string that corresponds to the embedded 
TIFF/Exif orientation tag (if present). Since 2.32, the TIFF loader sets
the &quot;multipage&quot; option string to &quot;yes&quot; when a multi-page TIFF is loaded.
Since 2.32 the JPEG and PNG loaders set &quot;x-dpi&quot; and &quot;y-dpi&quot; if the file
contains image density information in dots per inch.
Since 2.36.6, the JPEG loader sets the &quot;comment&quot; option with the comment
EXIF tag.


</description>
<parameters>
<parameter name="pixbuf">
<parameter_description> a `GdkPixbuf`
</parameter_description>
</parameter>
<parameter name="key">
<parameter_description> a nul-terminated string.
</parameter_description>
</parameter>
</parameters>
<return> the value associated with `key`
</return>
</function>

<function name="gdk_pixbuf_get_options">
<description>
Returns a `GHashTable` with a list of all the options that may have been
attached to the `pixbuf` when it was loaded, or that may have been
attached by another function using [method@GdkPixbuf.Pixbuf.set_option].

Since: 2.32

</description>
<parameters>
<parameter name="pixbuf">
<parameter_description> a `GdkPixbuf`
</parameter_description>
</parameter>
</parameters>
<return> a #GHashTable
of key/values pairs

</return>
</function>

<function name="gdk_pixbuf_get_pixels">
<description>
Queries a pointer to the pixel data of a pixbuf.

This function will cause an implicit copy of the pixbuf data if the
pixbuf was created from read-only data.

Please see the section on [image data](class.Pixbuf.html#image-data) for information
about how the pixel data is stored in memory.


</description>
<parameters>
<parameter name="pixbuf">
<parameter_description> A pixbuf.
</parameter_description>
</parameter>
</parameters>
<return> A pointer to the pixbuf's pixel data.
</return>
</function>

<function name="gdk_pixbuf_get_pixels_with_length">
<description>
Queries a pointer to the pixel data of a pixbuf.

This function will cause an implicit copy of the pixbuf data if the
pixbuf was created from read-only data.

Please see the section on [image data](class.Pixbuf.html#image-data) for information
about how the pixel data is stored in memory.

Since: 2.26

</description>
<parameters>
<parameter name="pixbuf">
<parameter_description> A pixbuf.
</parameter_description>
</parameter>
<parameter name="length">
<parameter_description> The length of the binary data.
</parameter_description>
</parameter>
</parameters>
<return> A pointer to the pixbuf's
pixel data.

</return>
</function>

<function name="gdk_pixbuf_get_rowstride">
<description>
Queries the rowstride of a pixbuf, which is the number of bytes between
the start of a row and the start of the next row.


</description>
<parameters>
<parameter name="pixbuf">
<parameter_description> A pixbuf.
</parameter_description>
</parameter>
</parameters>
<return> Distance between row starts.
</return>
</function>

<function name="gdk_pixbuf_get_width">
<description>
Queries the width of a pixbuf.


</description>
<parameters>
<parameter name="pixbuf">
<parameter_description> A pixbuf.
</parameter_description>
</parameter>
</parameters>
<return> Width in pixels.
</return>
</function>

<function name="gdk_pixbuf_init_modules">
<description>
Initalizes the gdk-pixbuf loader modules referenced by the `loaders.cache`
file present inside that directory.

This is to be used by applications that want to ship certain loaders
in a different location from the system ones.

This is needed when the OS or runtime ships a minimal number of loaders
so as to reduce the potential attack surface of carefully crafted image
files, especially for uncommon file types. Applications that require
broader image file types coverage, such as image viewers, would be
expected to ship the gdk-pixbuf modules in a separate location, bundled
with the application in a separate directory from the OS or runtime-
provided modules.

Since: 2.40

</description>
<parameters>
<parameter name="path">
<parameter_description> Path to directory where the `loaders.cache` is installed
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> return location for a `GError`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_pixbuf_loader_close">
<description>
Informs a pixbuf loader that no further writes with
gdk_pixbuf_loader_write() will occur, so that it can free its
internal loading structures.

This function also tries to parse any data that hasn't yet been parsed;
if the remaining data is partial or corrupt, an error will be returned.

If `FALSE` is returned, `error` will be set to an error from the
`GDK_PIXBUF_ERROR` or `G_FILE_ERROR` domains.

If you're just cancelling a load rather than expecting it to be finished,
passing `NULL` for `error` to ignore it is reasonable.

Remember that this function does not release a reference on the loader, so
you will need to explicitly release any reference you hold.


</description>
<parameters>
<parameter name="loader">
<parameter_description> A pixbuf loader.
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> return location for a #GError, or `NULL` to ignore errors
</parameter_description>
</parameter>
</parameters>
<return> `TRUE` if all image data written so far was successfully
passed out via the update_area signal
</return>
</function>

<function name="gdk_pixbuf_loader_get_animation">
<description>
Queries the #GdkPixbufAnimation that a pixbuf loader is currently creating.

In general it only makes sense to call this function after the
[signal@GdkPixbuf.PixbufLoader::area-prepared] signal has been emitted by
the loader.

If the loader doesn't have enough bytes yet, and hasn't emitted the `area-prepared`
signal, this function will return `NULL`.


</description>
<parameters>
<parameter name="loader">
<parameter_description> A pixbuf loader
</parameter_description>
</parameter>
</parameters>
<return> The animation that the loader is
currently loading
</return>
</function>

<function name="gdk_pixbuf_loader_get_format">
<description>
Obtains the available information about the format of the 
currently loading image file.

Since: 2.2

</description>
<parameters>
<parameter name="loader">
<parameter_description> A pixbuf loader.
</parameter_description>
</parameter>
</parameters>
<return> A #GdkPixbufFormat

</return>
</function>

<function name="gdk_pixbuf_loader_get_pixbuf">
<description>
Queries the #GdkPixbuf that a pixbuf loader is currently creating.

In general it only makes sense to call this function after the
[signal@GdkPixbuf.PixbufLoader::area-prepared] signal has been
emitted by the loader; this means that enough data has been read
to know the size of the image that will be allocated.

If the loader has not received enough data via gdk_pixbuf_loader_write(),
then this function returns `NULL`.

The returned pixbuf will be the same in all future calls to the loader,
so if you want to keep using it, you should acquire a reference to it.

Additionally, if the loader is an animation, it will return the &quot;static
image&quot; of the animation (see gdk_pixbuf_animation_get_static_image()).


</description>
<parameters>
<parameter name="loader">
<parameter_description> A pixbuf loader.
</parameter_description>
</parameter>
</parameters>
<return> The pixbuf that the loader is
creating
</return>
</function>

<function name="gdk_pixbuf_loader_new">
<description>
Creates a new pixbuf loader object.


</description>
<parameters>
</parameters>
<return> A newly-created pixbuf loader.
</return>
</function>

<function name="gdk_pixbuf_loader_new_with_mime_type">
<description>
Creates a new pixbuf loader object that always attempts to parse
image data as if it were an image of MIME type @mime_type, instead of
identifying the type automatically.

This function is useful if you want an error if the image isn't the
expected MIME type; for loading image formats that can't be reliably
identified by looking at the data; or if the user manually forces a
specific MIME type.

The list of supported mime types depends on what image loaders
are installed, but typically &quot;image/png&quot;, &quot;image/jpeg&quot;, &quot;image/gif&quot;, 
&quot;image/tiff&quot; and &quot;image/x-xpixmap&quot; are among the supported mime types. 
To obtain the full list of supported mime types, call 
gdk_pixbuf_format_get_mime_types() on each of the #GdkPixbufFormat 
structs returned by gdk_pixbuf_get_formats().

Since: 2.4

</description>
<parameters>
<parameter name="mime_type">
<parameter_description> the mime type to be loaded 
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> return location for an allocated #GError, or `NULL` to ignore errors
</parameter_description>
</parameter>
</parameters>
<return> A newly-created pixbuf loader.

</return>
</function>

<function name="gdk_pixbuf_loader_new_with_type">
<description>
Creates a new pixbuf loader object that always attempts to parse
image data as if it were an image of type @image_type, instead of
identifying the type automatically.

This function is useful if you want an error if the image isn't the
expected type; for loading image formats that can't be reliably
identified by looking at the data; or if the user manually forces
a specific type.

The list of supported image formats depends on what image loaders
are installed, but typically &quot;png&quot;, &quot;jpeg&quot;, &quot;gif&quot;, &quot;tiff&quot; and 
&quot;xpm&quot; are among the supported formats. To obtain the full list of
supported image formats, call gdk_pixbuf_format_get_name() on each 
of the #GdkPixbufFormat structs returned by gdk_pixbuf_get_formats().


</description>
<parameters>
<parameter name="image_type">
<parameter_description> name of the image format to be loaded with the image
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> return location for an allocated #GError, or `NULL` to ignore errors
</parameter_description>
</parameter>
</parameters>
<return> A newly-created pixbuf loader.
</return>
</function>

<function name="gdk_pixbuf_loader_set_size">
<description>
Causes the image to be scaled while it is loaded.

The desired image size can be determined relative to the original
size of the image by calling gdk_pixbuf_loader_set_size() from a
signal handler for the ::size-prepared signal.

Attempts to set the desired image size  are ignored after the 
emission of the ::size-prepared signal.

Since: 2.2

</description>
<parameters>
<parameter name="loader">
<parameter_description> A pixbuf loader.
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> The desired width of the image being loaded.
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> The desired height of the image being loaded.
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_pixbuf_loader_write">
<description>
Parses the next `count` bytes in the given image buffer.


</description>
<parameters>
<parameter name="loader">
<parameter_description> A pixbuf loader.
</parameter_description>
</parameter>
<parameter name="buf">
<parameter_description> Pointer to image data.
</parameter_description>
</parameter>
<parameter name="count">
<parameter_description> Length of the @buf buffer in bytes.
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> return location for errors
</parameter_description>
</parameter>
</parameters>
<return> `TRUE` if the write was successful, or
`FALSE` if the loader cannot parse the buffer
</return>
</function>

<function name="gdk_pixbuf_loader_write_bytes">
<description>
Parses the next contents of the given image buffer.

Since: 2.30

</description>
<parameters>
<parameter name="loader">
<parameter_description> A pixbuf loader.
</parameter_description>
</parameter>
<parameter name="buffer">
<parameter_description> The image data as a `GBytes` buffer.
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> return location for errors
</parameter_description>
</parameter>
</parameters>
<return> `TRUE` if the write was successful, or `FALSE` if
the loader cannot parse the buffer

</return>
</function>

<function name="gdk_pixbuf_major_version">
<description>
The major version number of the gdk-pixbuf library.  (e.g. in 
gdk-pixbuf version 1.2.5 this is 1.) 


This variable is in the library, so represents the
gdk-pixbuf library you have linked against. Contrast with the
`GDK_PIXBUF_MAJOR` macro, which represents the major version of the
gdk-pixbuf headers you have included.

</description>
<parameters>
</parameters>
<return></return>
</function>

<function name="gdk_pixbuf_micro_version">
<description>
The micro version number of the gdk-pixbuf library.  (e.g. in 
gdk-pixbuf version 1.2.5 this is 5.) 


This variable is in the library, so represents the
gdk-pixbuf library you have linked against. Contrast with the
`GDK_PIXBUF_MICRO` macro, which represents the micro version of the
gdk-pixbuf headers you have included.

</description>
<parameters>
</parameters>
<return></return>
</function>

<function name="gdk_pixbuf_minor_version">
<description>
The minor version number of the gdk-pixbuf library.  (e.g. in 
gdk-pixbuf version 1.2.5 this is 2.) 


This variable is in the library, so represents the
gdk-pixbuf library you have linked against. Contrast with the
`GDK_PIXBUF_MINOR` macro, which represents the minor version of the
gdk-pixbuf headers you have included.

</description>
<parameters>
</parameters>
<return></return>
</function>

<function name="gdk_pixbuf_new">
<description>
Creates a new `GdkPixbuf` structure and allocates a buffer for it.

If the allocation of the buffer failed, this function will return `NULL`.

The buffer has an optimal rowstride. Note that the buffer is not cleared;
you will have to fill it completely yourself.


</description>
<parameters>
<parameter name="colorspace">
<parameter_description> Color space for image
</parameter_description>
</parameter>
<parameter name="has_alpha">
<parameter_description> Whether the image should have transparency information
</parameter_description>
</parameter>
<parameter name="bits_per_sample">
<parameter_description> Number of bits per color sample
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> Width of image in pixels, must be &gt; 0
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> Height of image in pixels, must be &gt; 0
</parameter_description>
</parameter>
</parameters>
<return> A newly-created pixel buffer
</return>
</function>

<function name="gdk_pixbuf_new_from_bytes">
<description>
Creates a new #GdkPixbuf out of in-memory readonly image data.

Currently only RGB images with 8 bits per sample are supported.

This is the `GBytes` variant of gdk_pixbuf_new_from_data(), useful
for language bindings.

Since: 2.32

</description>
<parameters>
<parameter name="data">
<parameter_description> Image data in 8-bit/sample packed format inside a #GBytes
</parameter_description>
</parameter>
<parameter name="colorspace">
<parameter_description> Colorspace for the image data
</parameter_description>
</parameter>
<parameter name="has_alpha">
<parameter_description> Whether the data has an opacity channel
</parameter_description>
</parameter>
<parameter name="bits_per_sample">
<parameter_description> Number of bits per sample
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> Width of the image in pixels, must be &gt; 0
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> Height of the image in pixels, must be &gt; 0
</parameter_description>
</parameter>
<parameter name="rowstride">
<parameter_description> Distance in bytes between row starts
</parameter_description>
</parameter>
</parameters>
<return> A newly-created pixbuf

</return>
</function>

<function name="gdk_pixbuf_new_from_data">
<description>
Creates a new #GdkPixbuf out of in-memory image data.

Currently only RGB images with 8 bits per sample are supported.

Since you are providing a pre-allocated pixel buffer, you must also
specify a way to free that data.  This is done with a function of
type `GdkPixbufDestroyNotify`.  When a pixbuf created with is
finalized, your destroy notification function will be called, and
it is its responsibility to free the pixel array.

See also: [ctor@GdkPixbuf.Pixbuf.new_from_bytes]


</description>
<parameters>
<parameter name="data">
<parameter_description> Image data in 8-bit/sample packed format
</parameter_description>
</parameter>
<parameter name="colorspace">
<parameter_description> Colorspace for the image data
</parameter_description>
</parameter>
<parameter name="has_alpha">
<parameter_description> Whether the data has an opacity channel
</parameter_description>
</parameter>
<parameter name="bits_per_sample">
<parameter_description> Number of bits per sample
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> Width of the image in pixels, must be &gt; 0
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> Height of the image in pixels, must be &gt; 0
</parameter_description>
</parameter>
<parameter name="rowstride">
<parameter_description> Distance in bytes between row starts
</parameter_description>
</parameter>
<parameter name="destroy_fn">
<parameter_description> Function used to free the data when the pixbuf's reference count
drops to zero, or %NULL if the data should not be freed
</parameter_description>
</parameter>
<parameter name="destroy_fn_data">
<parameter_description> Closure data to pass to the destroy notification function
</parameter_description>
</parameter>
</parameters>
<return> A newly-created pixbuf
</return>
</function>

<function name="gdk_pixbuf_new_from_file">
<description>
Creates a new pixbuf by loading an image from a file.

The file format is detected automatically.

If `NULL` is returned, then @error will be set. Possible errors are:

- the file could not be opened
- there is no loader for the file's format
- there is not enough memory to allocate the image buffer
- the image buffer contains invalid data

The error domains are `GDK_PIXBUF_ERROR` and `G_FILE_ERROR`.


</description>
<parameters>
<parameter name="filename">
<parameter_description> Name of file to load, in the GLib file
name encoding
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> Return location for an error
</parameter_description>
</parameter>
</parameters>
<return> A newly-created pixbuf
</return>
</function>

<function name="gdk_pixbuf_new_from_file_at_scale">
<description>
Creates a new pixbuf by loading an image from a file.

The file format is detected automatically.

If `NULL` is returned, then @error will be set. Possible errors are:

- the file could not be opened
- there is no loader for the file's format
- there is not enough memory to allocate the image buffer
- the image buffer contains invalid data

The error domains are `GDK_PIXBUF_ERROR` and `G_FILE_ERROR`.

The image will be scaled to fit in the requested size, optionally preserving
the image's aspect ratio. 

When preserving the aspect ratio, a `width` of -1 will cause the image
to be scaled to the exact given height, and a `height` of -1 will cause
the image to be scaled to the exact given width. When not preserving
aspect ratio, a `width` or `height` of -1 means to not scale the image
at all in that dimension. Negative values for `width` and `height` are
allowed since 2.8.

Since: 2.6

</description>
<parameters>
<parameter name="filename">
<parameter_description> Name of file to load, in the GLib file
name encoding
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> The width the image should have or -1 to not constrain the width
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> The height the image should have or -1 to not constrain the height
</parameter_description>
</parameter>
<parameter name="preserve_aspect_ratio">
<parameter_description> `TRUE` to preserve the image's aspect ratio
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> Return location for an error
</parameter_description>
</parameter>
</parameters>
<return> A newly-created pixbuf

</return>
</function>

<function name="gdk_pixbuf_new_from_file_at_scale_utf8">
<description>
Same as gdk_pixbuf_new_from_file_at_scale().

Since: 2.6

</description>
<parameters>
<parameter name="filename">
<parameter_description> Name of file to load, in the GLib file name encoding
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> The width the image should have or -1 to not constrain the width
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> The height the image should have or -1 to not constrain the height
</parameter_description>
</parameter>
<parameter name="preserve_aspect_ratio">
<parameter_description> `TRUE` to preserve the image's aspect ratio
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> Return location for an error
</parameter_description>
</parameter>
</parameters>
<return> A newly-created pixbuf with a reference count of 1,
or `NULL` if any of several error conditions occurred:  the file could not be opened,
there was no loader for the file's format, there was not enough memory to
allocate the image buffer, or the image file contained invalid data.

</return>
</function>

<function name="gdk_pixbuf_new_from_file_at_size">
<description>
Creates a new pixbuf by loading an image from a file.

The file format is detected automatically.

If `NULL` is returned, then @error will be set. Possible errors are:

- the file could not be opened
- there is no loader for the file's format
- there is not enough memory to allocate the image buffer
- the image buffer contains invalid data

The error domains are `GDK_PIXBUF_ERROR` and `G_FILE_ERROR`.

The image will be scaled to fit in the requested size, preserving
the image's aspect ratio. Note that the returned pixbuf may be smaller
than `width` x `height`, if the aspect ratio requires it. To load
and image at the requested size, regardless of aspect ratio, use
[ctor@GdkPixbuf.Pixbuf.new_from_file_at_scale].

Since: 2.4

</description>
<parameters>
<parameter name="filename">
<parameter_description> Name of file to load, in the GLib file
name encoding
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> The width the image should have or -1 to not constrain the width
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> The height the image should have or -1 to not constrain the height
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> Return location for an error
</parameter_description>
</parameter>
</parameters>
<return> A newly-created pixbuf

</return>
</function>

<function name="gdk_pixbuf_new_from_file_at_size_utf8">
<description>
Same as gdk_pixbuf_new_from_file_at_size()

Since: 2.4

</description>
<parameters>
<parameter name="filename">
<parameter_description> Name of file to load, in the GLib file name encoding
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> The width the image should have or -1 to not constrain the width
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> The height the image should have or -1 to not constrain the height
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> Return location for an error
</parameter_description>
</parameter>
</parameters>
<return> A newly-created pixbuf with a reference count of 1, or
`NULL` if any of several error conditions occurred:  the file could not
be opened, there was no loader for the file's format, there was not
enough memory to allocate the image buffer, or the image file contained
invalid data.

</return>
</function>

<function name="gdk_pixbuf_new_from_file_utf8">
<description>
Same as gdk_pixbuf_new_from_file()


</description>
<parameters>
<parameter name="filename">
<parameter_description> Name of file to load, in the GLib file name encoding
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> Return location for an error
</parameter_description>
</parameter>
</parameters>
<return> A newly-created pixbuf with a reference count of 1,
or `NULL` if any of several error conditions occurred:  the file could not be opened,
there was no loader for the file's format, there was not enough memory to
allocate the image buffer, or the image file contained invalid data.
</return>
</function>

<function name="gdk_pixbuf_new_from_inline">
<description>
Creates a `GdkPixbuf` from a flat representation that is suitable for
storing as inline data in a program.

This is useful if you want to ship a program with images, but don't want
to depend on any external files.

GdkPixbuf ships with a program called `gdk-pixbuf-csource`, which allows
for conversion of `GdkPixbuf`s into such a inline representation.

In almost all cases, you should pass the `--raw` option to
`gdk-pixbuf-csource`. A sample invocation would be:

```
gdk-pixbuf-csource --raw --name=myimage_inline myimage.png
```

For the typical case where the inline pixbuf is read-only static data,
you don't need to copy the pixel data unless you intend to write to
it, so you can pass `FALSE` for `copy_pixels`. If you pass `--rle` to
`gdk-pixbuf-csource`, a copy will be made even if `copy_pixels` is `FALSE`,
so using this option is generally a bad idea.

If you create a pixbuf from const inline data compiled into your
program, it's probably safe to ignore errors and disable length checks, 
since things will always succeed:

```c
pixbuf = gdk_pixbuf_new_from_inline (-1, myimage_inline, FALSE, NULL);
```

For non-const inline data, you could get out of memory. For untrusted 
inline data located at runtime, you could have corrupt inline data in 
addition.

Deprecated: 2.32: Use `GResource` instead.

</description>
<parameters>
<parameter name="data_length">
<parameter_description> Length in bytes of the `data` argument or -1 to 
disable length checks
</parameter_description>
</parameter>
<parameter name="data">
<parameter_description> Byte data containing a
serialized `GdkPixdata` structure
</parameter_description>
</parameter>
<parameter name="copy_pixels">
<parameter_description> Whether to copy the pixel data, or use direct pointers
`data` for the resulting pixbuf
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> #GError return location, may be `NULL` to ignore errors
</parameter_description>
</parameter>
</parameters>
<return> A newly-created pixbuf

</return>
</function>

<function name="gdk_pixbuf_new_from_resource">
<description>
Creates a new pixbuf by loading an image from an resource.

The file format is detected automatically. If `NULL` is returned, then
@error will be set.

Since: 2.26

</description>
<parameters>
<parameter name="resource_path">
<parameter_description> the path of the resource file
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> Return location for an error
</parameter_description>
</parameter>
</parameters>
<return> A newly-created pixbuf

</return>
</function>

<function name="gdk_pixbuf_new_from_resource_at_scale">
<description>
Creates a new pixbuf by loading an image from an resource.

The file format is detected automatically. If `NULL` is returned, then
@error will be set.

The image will be scaled to fit in the requested size, optionally
preserving the image's aspect ratio. When preserving the aspect ratio,
a @width of -1 will cause the image to be scaled to the exact given
height, and a @height of -1 will cause the image to be scaled to the
exact given width. When not preserving aspect ratio, a @width or
@height of -1 means to not scale the image at all in that dimension.

The stream is not closed.

Since: 2.26

</description>
<parameters>
<parameter name="resource_path">
<parameter_description> the path of the resource file
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> The width the image should have or -1 to not constrain the width
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> The height the image should have or -1 to not constrain the height
</parameter_description>
</parameter>
<parameter name="preserve_aspect_ratio">
<parameter_description> `TRUE` to preserve the image's aspect ratio
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> Return location for an error
</parameter_description>
</parameter>
</parameters>
<return> A newly-created pixbuf

</return>
</function>

<function name="gdk_pixbuf_new_from_stream">
<description>
Creates a new pixbuf by loading an image from an input stream.  

The file format is detected automatically.

If `NULL` is returned, then `error` will be set.

The `cancellable` can be used to abort the operation from another thread.
If the operation was cancelled, the error `G_IO_ERROR_CANCELLED` will be
returned. Other possible errors are in the `GDK_PIXBUF_ERROR` and
`G_IO_ERROR` domains.

The stream is not closed.

Since: 2.14

</description>
<parameters>
<parameter name="stream">
<parameter_description>  a `GInputStream` to load the pixbuf from
</parameter_description>
</parameter>
<parameter name="cancellable">
<parameter_description> optional `GCancellable` object, `NULL` to ignore
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> Return location for an error
</parameter_description>
</parameter>
</parameters>
<return> A newly-created pixbuf

</return>
</function>

<function name="gdk_pixbuf_new_from_stream_async">
<description>
Creates a new pixbuf by asynchronously loading an image from an input stream.

For more details see gdk_pixbuf_new_from_stream(), which is the synchronous
version of this function.

When the operation is finished, @callback will be called in the main thread.
You can then call gdk_pixbuf_new_from_stream_finish() to get the result of
the operation.

Since: 2.24

</description>
<parameters>
<parameter name="stream">
<parameter_description> a `GInputStream` from which to load the pixbuf
</parameter_description>
</parameter>
<parameter name="cancellable">
<parameter_description> optional `GCancellable` object, `NULL` to ignore
</parameter_description>
</parameter>
<parameter name="callback">
<parameter_description> a `GAsyncReadyCallback` to call when the pixbuf is loaded
</parameter_description>
</parameter>
<parameter name="user_data">
<parameter_description> the data to pass to the callback function
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_pixbuf_new_from_stream_at_scale">
<description>
Creates a new pixbuf by loading an image from an input stream.  

The file format is detected automatically. If `NULL` is returned, then
@error will be set. The @cancellable can be used to abort the operation
from another thread. If the operation was cancelled, the error 
`G_IO_ERROR_CANCELLED` will be returned. Other possible errors are in
the `GDK_PIXBUF_ERROR` and `G_IO_ERROR` domains.

The image will be scaled to fit in the requested size, optionally 
preserving the image's aspect ratio.

When preserving the aspect ratio, a `width` of -1 will cause the image to be
scaled to the exact given height, and a `height` of -1 will cause the image
to be scaled to the exact given width. If both `width` and `height` are
given, this function will behave as if the smaller of the two values
is passed as -1.

When not preserving aspect ratio, a `width` or `height` of -1 means to not
scale the image at all in that dimension.

The stream is not closed.

Since: 2.14

</description>
<parameters>
<parameter name="stream">
<parameter_description>  a `GInputStream` to load the pixbuf from
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> The width the image should have or -1 to not constrain the width
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> The height the image should have or -1 to not constrain the height
</parameter_description>
</parameter>
<parameter name="preserve_aspect_ratio">
<parameter_description> `TRUE` to preserve the image's aspect ratio
</parameter_description>
</parameter>
<parameter name="cancellable">
<parameter_description> optional `GCancellable` object, `NULL` to ignore
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> Return location for an error
</parameter_description>
</parameter>
</parameters>
<return> A newly-created pixbuf

</return>
</function>

<function name="gdk_pixbuf_new_from_stream_at_scale_async">
<description>
Creates a new pixbuf by asynchronously loading an image from an input stream.

For more details see gdk_pixbuf_new_from_stream_at_scale(), which is the synchronous
version of this function.

When the operation is finished, @callback will be called in the main thread.
You can then call gdk_pixbuf_new_from_stream_finish() to get the result of the operation.

Since: 2.24

</description>
<parameters>
<parameter name="stream">
<parameter_description> a `GInputStream` from which to load the pixbuf
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> the width the image should have or -1 to not constrain the width
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> the height the image should have or -1 to not constrain the height
</parameter_description>
</parameter>
<parameter name="preserve_aspect_ratio">
<parameter_description> `TRUE` to preserve the image's aspect ratio
</parameter_description>
</parameter>
<parameter name="cancellable">
<parameter_description> optional `GCancellable` object, `NULL` to ignore
</parameter_description>
</parameter>
<parameter name="callback">
<parameter_description> a `GAsyncReadyCallback` to call when the pixbuf is loaded
</parameter_description>
</parameter>
<parameter name="user_data">
<parameter_description> the data to pass to the callback function
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_pixbuf_new_from_stream_finish">
<description>
Finishes an asynchronous pixbuf creation operation started with
gdk_pixbuf_new_from_stream_async().

Since: 2.24

</description>
<parameters>
<parameter name="async_result">
<parameter_description> a `GAsyncResult`
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> a `GError`, or `NULL`
</parameter_description>
</parameter>
</parameters>
<return> the newly created pixbuf

</return>
</function>

<function name="gdk_pixbuf_new_from_xpm_data">
<description>
Creates a new pixbuf by parsing XPM data in memory.

This data is commonly the result of including an XPM file into a
program's C source.


</description>
<parameters>
<parameter name="data">
<parameter_description> Pointer to inline XPM data.
</parameter_description>
</parameter>
</parameters>
<return> A newly-created pixbuf
</return>
</function>

<function name="gdk_pixbuf_new_subpixbuf">
<description>
Creates a new pixbuf which represents a sub-region of `src_pixbuf`.

The new pixbuf shares its pixels with the original pixbuf, so
writing to one affects both.  The new pixbuf holds a reference to
`src_pixbuf`, so `src_pixbuf` will not be finalized until the new
pixbuf is finalized.

Note that if `src_pixbuf` is read-only, this function will force it
to be mutable.


</description>
<parameters>
<parameter name="src_pixbuf">
<parameter_description> a `GdkPixbuf`
</parameter_description>
</parameter>
<parameter name="src_x">
<parameter_description> X coord in @src_pixbuf
</parameter_description>
</parameter>
<parameter name="src_y">
<parameter_description> Y coord in @src_pixbuf
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> width of region in @src_pixbuf
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> height of region in @src_pixbuf
</parameter_description>
</parameter>
</parameters>
<return> a new pixbuf 
</return>
</function>

<function name="gdk_pixbuf_read_pixel_bytes">
<description>
Provides a #GBytes buffer containing the raw pixel data; the data
must not be modified.

This function allows skipping the implicit copy that must be made
if gdk_pixbuf_get_pixels() is called on a read-only pixbuf.

Since: 2.32

</description>
<parameters>
<parameter name="pixbuf">
<parameter_description> A pixbuf
</parameter_description>
</parameter>
</parameters>
<return> A new reference to a read-only copy of
the pixel data.  Note that for mutable pixbufs, this function will
incur a one-time copy of the pixel data for conversion into the
returned #GBytes.

</return>
</function>

<function name="gdk_pixbuf_read_pixels">
<description>
Provides a read-only pointer to the raw pixel data.

This function allows skipping the implicit copy that must be made
if gdk_pixbuf_get_pixels() is called on a read-only pixbuf.

Since: 2.32

</description>
<parameters>
<parameter name="pixbuf">
<parameter_description> A pixbuf
</parameter_description>
</parameter>
</parameters>
<return> a read-only pointer to the raw pixel data

</return>
</function>

<function name="gdk_pixbuf_ref">
<description>
Adds a reference to a pixbuf.

Deprecated: 2.0: Use g_object_ref().

</description>
<parameters>
<parameter name="pixbuf">
<parameter_description> A pixbuf.
</parameter_description>
</parameter>
</parameters>
<return> The same as the @pixbuf argument.

</return>
</function>

<function name="gdk_pixbuf_remove_option">
<description>
Removes the key/value pair option attached to a `GdkPixbuf`.

Since: 2.36

</description>
<parameters>
<parameter name="pixbuf">
<parameter_description> a `GdkPixbuf`
</parameter_description>
</parameter>
<parameter name="key">
<parameter_description> a nul-terminated string representing the key to remove.
</parameter_description>
</parameter>
</parameters>
<return> `TRUE` if an option was removed, `FALSE` if not.

</return>
</function>

<function name="gdk_pixbuf_rotate_simple">
<description>
Rotates a pixbuf by a multiple of 90 degrees, and returns the
result in a new pixbuf.

If `angle` is 0, this function will return a copy of `src`.

Since: 2.6

</description>
<parameters>
<parameter name="src">
<parameter_description> a #GdkPixbuf
</parameter_description>
</parameter>
<parameter name="angle">
<parameter_description> the angle to rotate by
</parameter_description>
</parameter>
</parameters>
<return> the new pixbuf

</return>
</function>

<function name="gdk_pixbuf_saturate_and_pixelate">
<description>
Modifies saturation and optionally pixelates `src`, placing the result in
`dest`.

The `src` and `dest` pixbufs must have the same image format, size, and
rowstride.

The `src` and `dest` arguments may be the same pixbuf with no ill effects.

If `saturation` is 1.0 then saturation is not changed. If it's less than 1.0,
saturation is reduced (the image turns toward grayscale); if greater than
1.0, saturation is increased (the image gets more vivid colors).

If `pixelate` is `TRUE`, then pixels are faded in a checkerboard pattern to
create a pixelated image.


</description>
<parameters>
<parameter name="src">
<parameter_description> source image
</parameter_description>
</parameter>
<parameter name="dest">
<parameter_description> place to write modified version of @src
</parameter_description>
</parameter>
<parameter name="saturation">
<parameter_description> saturation factor
</parameter_description>
</parameter>
<parameter name="pixelate">
<parameter_description> whether to pixelate
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_pixbuf_save">
<description>
Saves pixbuf to a file in format @type. By default, &quot;jpeg&quot;, &quot;png&quot;, &quot;ico&quot; 
and &quot;bmp&quot; are possible file formats to save in, but more formats may be
installed. The list of all writable formats can be determined in the 
following way:

```c
void add_if_writable (GdkPixbufFormat *data, GSList **list)
{
if (gdk_pixbuf_format_is_writable (data))
*list = g_slist_prepend (*list, data);
}

GSList *formats = gdk_pixbuf_get_formats ();
GSList *writable_formats = NULL;
g_slist_foreach (formats, add_if_writable, &amp;writable_formats);
g_slist_free (formats);
```

If `error` is set, `FALSE` will be returned. Possible errors include
those in the `GDK_PIXBUF_ERROR` domain and those in the `G_FILE_ERROR`
domain.

The variable argument list should be `NULL`-terminated; if not empty,
it should contain pairs of strings that modify the save
parameters. For example:

```c
gdk_pixbuf_save (pixbuf, handle, &quot;jpeg&quot;, &amp;error, &quot;quality&quot;, &quot;100&quot;, NULL);
```

Currently only few parameters exist.

JPEG images can be saved with a &quot;quality&quot; parameter; its value should be
in the range `[0, 100]`. JPEG and PNG density can be set by setting the
&quot;x-dpi&quot; and &quot;y-dpi&quot; parameters to the appropriate values in dots per inch.

Text chunks can be attached to PNG images by specifying parameters of
the form &quot;tEXt::key&quot;, where key is an ASCII string of length 1-79.
The values are UTF-8 encoded strings. The PNG compression level can
be specified using the &quot;compression&quot; parameter; it's value is in an
integer in the range of `[0, 9]`.

ICC color profiles can also be embedded into PNG, JPEG and TIFF images.
The &quot;icc-profile&quot; value should be the complete ICC profile encoded
into base64.

```c
char *contents;
gsize length;

// icm_path is set elsewhere
g_file_get_contents (icm_path, &amp;contents, &amp;length, NULL);

char *contents_encode = g_base64_encode ((const guchar *) contents, length);

gdk_pixbuf_save (pixbuf, handle, &quot;png&quot;, &amp;error, &quot;icc-profile&quot;, contents_encode, NULL);
```

TIFF images recognize:

1. a &quot;bits-per-sample&quot; option (integer) which can be either 1 for saving
bi-level CCITTFAX4 images, or 8 for saving 8-bits per sample
2. a &quot;compression&quot; option (integer) which can be 1 for no compression,
2 for Huffman, 5 for LZW, 7 for JPEG and 8 for DEFLATE (see the libtiff
documentation and tiff.h for all supported codec values)
3. an &quot;icc-profile&quot; option (zero-terminated string) containing a base64
encoded ICC color profile.

ICO images can be saved in depth 16, 24, or 32, by using the &quot;depth&quot;
parameter. When the ICO saver is given &quot;x_hot&quot; and &quot;y_hot&quot; parameters,
it produces a CUR instead of an ICO.


</description>
<parameters>
<parameter name="pixbuf">
<parameter_description> a `GdkPixbuf`.
</parameter_description>
</parameter>
<parameter name="filename">
<parameter_description> name of file to save.
</parameter_description>
</parameter>
<parameter name="type">
<parameter_description> name of file format.
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> return location for error
</parameter_description>
</parameter>
<parameter name="Varargs">
<parameter_description> list of key-value save options, followed by `NULL`
</parameter_description>
</parameter>
</parameters>
<return> `TRUE` on success, and `FALSE` otherwise
</return>
</function>

<function name="gdk_pixbuf_save_to_buffer">
<description>
Saves pixbuf to a new buffer in format `type`, which is currently &quot;jpeg&quot;,
&quot;png&quot;, &quot;tiff&quot;, &quot;ico&quot; or &quot;bmp&quot;.

This is a convenience function that uses `gdk_pixbuf_save_to_callback()`
to do the real work.

Note that the buffer is not `NUL`-terminated and may contain embedded `NUL`
characters.

If @error is set, `FALSE` will be returned and @buffer will be set to
`NULL`. Possible errors include those in the `GDK_PIXBUF_ERROR`
domain.

See `gdk_pixbuf_save()` for more details.

Since: 2.4

</description>
<parameters>
<parameter name="pixbuf">
<parameter_description> a `GdkPixbuf`.
</parameter_description>
</parameter>
<parameter name="buffer">
<parameter_description> location to receive a pointer
to the new buffer.
</parameter_description>
</parameter>
<parameter name="buffer_size">
<parameter_description> location to receive the size of the new buffer.
</parameter_description>
</parameter>
<parameter name="type">
<parameter_description> name of file format.
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> return location for error, or `NULL`
</parameter_description>
</parameter>
<parameter name="Varargs">
<parameter_description> list of key-value save options
</parameter_description>
</parameter>
</parameters>
<return> whether an error was set

</return>
</function>

<function name="gdk_pixbuf_save_to_bufferv">
<description>
Vector version of `gdk_pixbuf_save_to_buffer()`.

Saves pixbuf to a new buffer in format @type, which is currently &quot;jpeg&quot;,
&quot;tiff&quot;, &quot;png&quot;, &quot;ico&quot; or &quot;bmp&quot;.

See [method@GdkPixbuf.Pixbuf.save_to_buffer] for more details.

Since: 2.4

</description>
<parameters>
<parameter name="pixbuf">
<parameter_description> a `GdkPixbuf`.
</parameter_description>
</parameter>
<parameter name="buffer">
<parameter_description>
location to receive a pointer to the new buffer.
</parameter_description>
</parameter>
<parameter name="buffer_size">
<parameter_description> location to receive the size of the new buffer.
</parameter_description>
</parameter>
<parameter name="type">
<parameter_description> name of file format.
</parameter_description>
</parameter>
<parameter name="option_keys">
<parameter_description> name of options to set
</parameter_description>
</parameter>
<parameter name="option_values">
<parameter_description> values for named options
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> return location for error, or `NULL`
</parameter_description>
</parameter>
</parameters>
<return> whether an error was set

</return>
</function>

<function name="gdk_pixbuf_save_to_callback">
<description>
Saves pixbuf in format `type` by feeding the produced data to a
callback.

This function can be used when you want to store the image to something
other than a file, such as an in-memory buffer or a socket.

If @error is set, `FALSE` will be returned. Possible errors
include those in the `GDK_PIXBUF_ERROR` domain and whatever the save
function generates.

See [method@GdkPixbuf.Pixbuf.save] for more details.

Since: 2.4

</description>
<parameters>
<parameter name="pixbuf">
<parameter_description> a `GdkPixbuf`.
</parameter_description>
</parameter>
<parameter name="save_func">
<parameter_description> a function that is called to save each block of data that
the save routine generates.
</parameter_description>
</parameter>
<parameter name="user_data">
<parameter_description> user data to pass to the save function.
</parameter_description>
</parameter>
<parameter name="type">
<parameter_description> name of file format.
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> return location for error, or `NULL`
</parameter_description>
</parameter>
<parameter name="Varargs">
<parameter_description> list of key-value save options
</parameter_description>
</parameter>
</parameters>
<return> whether an error was set

</return>
</function>

<function name="gdk_pixbuf_save_to_callbackv">
<description>
Vector version of `gdk_pixbuf_save_to_callback()`.

Saves pixbuf to a callback in format @type, which is currently &quot;jpeg&quot;,
&quot;png&quot;, &quot;tiff&quot;, &quot;ico&quot; or &quot;bmp&quot;.

If @error is set, `FALSE` will be returned.

See [method@GdkPixbuf.Pixbuf.save_to_callback] for more details.

Since: 2.4

</description>
<parameters>
<parameter name="pixbuf">
<parameter_description> a `GdkPixbuf`.
</parameter_description>
</parameter>
<parameter name="save_func">
<parameter_description> a function that is called to save each block of data that
the save routine generates.
</parameter_description>
</parameter>
<parameter name="user_data">
<parameter_description> user data to pass to the save function.
</parameter_description>
</parameter>
<parameter name="type">
<parameter_description> name of file format.
</parameter_description>
</parameter>
<parameter name="option_keys">
<parameter_description> name of options to set
</parameter_description>
</parameter>
<parameter name="option_values">
<parameter_description> values for named options
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> return location for error, or `NULL`
</parameter_description>
</parameter>
</parameters>
<return> whether an error was set

</return>
</function>

<function name="gdk_pixbuf_save_to_stream">
<description>
Saves `pixbuf` to an output stream.

Supported file formats are currently &quot;jpeg&quot;, &quot;tiff&quot;, &quot;png&quot;, &quot;ico&quot; or 
&quot;bmp&quot;. See `gdk_pixbuf_save_to_buffer()` for more details.

The `cancellable` can be used to abort the operation from another
thread. If the operation was cancelled, the error `G_IO_ERROR_CANCELLED`
will be returned. Other possible errors are in the `GDK_PIXBUF_ERROR`
and `G_IO_ERROR` domains.

The stream is not closed at the end of this call.

Since: 2.14

</description>
<parameters>
<parameter name="pixbuf">
<parameter_description> a `GdkPixbuf`
</parameter_description>
</parameter>
<parameter name="stream">
<parameter_description> a `GOutputStream` to save the pixbuf to
</parameter_description>
</parameter>
<parameter name="type">
<parameter_description> name of file format
</parameter_description>
</parameter>
<parameter name="cancellable">
<parameter_description> optional `GCancellable` object, `NULL` to ignore
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> return location for error, or `NULL`
</parameter_description>
</parameter>
<parameter name="Varargs">
<parameter_description> list of key-value save options
</parameter_description>
</parameter>
</parameters>
<return> `TRUE` if the pixbuf was saved successfully, `FALSE` if an
error was set.

</return>
</function>

<function name="gdk_pixbuf_save_to_stream_async">
<description>
Saves `pixbuf` to an output stream asynchronously.

For more details see gdk_pixbuf_save_to_stream(), which is the synchronous
version of this function.

When the operation is finished, `callback` will be called in the main thread.

You can then call gdk_pixbuf_save_to_stream_finish() to get the result of
the operation.

Since: 2.24

</description>
<parameters>
<parameter name="pixbuf">
<parameter_description> a `GdkPixbuf`
</parameter_description>
</parameter>
<parameter name="stream">
<parameter_description> a `GOutputStream` to which to save the pixbuf
</parameter_description>
</parameter>
<parameter name="type">
<parameter_description> name of file format
</parameter_description>
</parameter>
<parameter name="cancellable">
<parameter_description> optional `GCancellable` object, `NULL` to ignore
</parameter_description>
</parameter>
<parameter name="callback">
<parameter_description> a `GAsyncReadyCallback` to call when the pixbuf is saved
</parameter_description>
</parameter>
<parameter name="user_data">
<parameter_description> the data to pass to the callback function
</parameter_description>
</parameter>
<parameter name="Varargs">
<parameter_description> list of key-value save options
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_pixbuf_save_to_stream_finish">
<description>
Finishes an asynchronous pixbuf save operation started with
gdk_pixbuf_save_to_stream_async().

Since: 2.24

</description>
<parameters>
<parameter name="async_result">
<parameter_description> a `GAsyncResult`
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> a `GError`, or `NULL`
</parameter_description>
</parameter>
</parameters>
<return> `TRUE` if the pixbuf was saved successfully, `FALSE` if an error was set.

</return>
</function>

<function name="gdk_pixbuf_save_to_streamv">
<description>
Saves `pixbuf` to an output stream.

Supported file formats are currently &quot;jpeg&quot;, &quot;tiff&quot;, &quot;png&quot;, &quot;ico&quot; or
&quot;bmp&quot;.

See [method@GdkPixbuf.Pixbuf.save_to_stream] for more details.

Since: 2.36

</description>
<parameters>
<parameter name="pixbuf">
<parameter_description> a `GdkPixbuf`
</parameter_description>
</parameter>
<parameter name="stream">
<parameter_description> a `GOutputStream` to save the pixbuf to
</parameter_description>
</parameter>
<parameter name="type">
<parameter_description> name of file format
</parameter_description>
</parameter>
<parameter name="option_keys">
<parameter_description> name of options to set
</parameter_description>
</parameter>
<parameter name="option_values">
<parameter_description> values for named options
</parameter_description>
</parameter>
<parameter name="cancellable">
<parameter_description> optional `GCancellable` object, `NULL` to ignore
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> return location for error
</parameter_description>
</parameter>
</parameters>
<return> `TRUE` if the pixbuf was saved successfully, `FALSE` if an
error was set.

</return>
</function>

<function name="gdk_pixbuf_save_to_streamv_async">
<description>
Saves `pixbuf` to an output stream asynchronously.

For more details see gdk_pixbuf_save_to_streamv(), which is the synchronous
version of this function.

When the operation is finished, `callback` will be called in the main thread.

You can then call gdk_pixbuf_save_to_stream_finish() to get the result of
the operation.

Since: 2.36

</description>
<parameters>
<parameter name="pixbuf">
<parameter_description> a `GdkPixbuf`
</parameter_description>
</parameter>
<parameter name="stream">
<parameter_description> a `GOutputStream` to which to save the pixbuf
</parameter_description>
</parameter>
<parameter name="type">
<parameter_description> name of file format
</parameter_description>
</parameter>
<parameter name="option_keys">
<parameter_description> name of options to set
</parameter_description>
</parameter>
<parameter name="option_values">
<parameter_description> values for named options
</parameter_description>
</parameter>
<parameter name="cancellable">
<parameter_description> optional `GCancellable` object, `NULL` to ignore
</parameter_description>
</parameter>
<parameter name="callback">
<parameter_description> a `GAsyncReadyCallback` to call when the pixbuf is saved
</parameter_description>
</parameter>
<parameter name="user_data">
<parameter_description> the data to pass to the callback function
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_pixbuf_savev">
<description>
Vector version of `gdk_pixbuf_save()`.

Saves pixbuf to a file in `type`, which is currently &quot;jpeg&quot;, &quot;png&quot;, &quot;tiff&quot;, &quot;ico&quot; or &quot;bmp&quot;.

If @error is set, `FALSE` will be returned.

See [method@GdkPixbuf.Pixbuf.save] for more details.


</description>
<parameters>
<parameter name="pixbuf">
<parameter_description> a `GdkPixbuf`.
</parameter_description>
</parameter>
<parameter name="filename">
<parameter_description> name of file to save.
</parameter_description>
</parameter>
<parameter name="type">
<parameter_description> name of file format.
</parameter_description>
</parameter>
<parameter name="option_keys">
<parameter_description> name of options to set
</parameter_description>
</parameter>
<parameter name="option_values">
<parameter_description> values for named options
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> return location for error, or `NULL`
</parameter_description>
</parameter>
</parameters>
<return> whether an error was set
</return>
</function>

<function name="gdk_pixbuf_savev_utf8">
<description>
Same as gdk_pixbuf_savev()


</description>
<parameters>
<parameter name="pixbuf">
<parameter_description> a `GdkPixbuf`.
</parameter_description>
</parameter>
<parameter name="filename">
<parameter_description> name of file to save.
</parameter_description>
</parameter>
<parameter name="type">
<parameter_description> name of file format.
</parameter_description>
</parameter>
<parameter name="option_keys">
<parameter_description> name of options to set
</parameter_description>
</parameter>
<parameter name="option_values">
<parameter_description> values for named options
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> return location for error, or `NULL`
</parameter_description>
</parameter>
</parameters>
<return> whether an error was set
</return>
</function>

<function name="gdk_pixbuf_scale">
<description>
Creates a transformation of the source image @src by scaling by
@scale_x and @scale_y then translating by @offset_x and @offset_y,
then renders the rectangle (@dest_x, @dest_y, @dest_width,
@dest_height) of the resulting image onto the destination image
replacing the previous contents.

Try to use gdk_pixbuf_scale_simple() first; this function is
the industrial-strength power tool you can fall back to, if
gdk_pixbuf_scale_simple() isn't powerful enough.

If the source rectangle overlaps the destination rectangle on the
same pixbuf, it will be overwritten during the scaling which
results in rendering artifacts.

</description>
<parameters>
<parameter name="src">
<parameter_description> a #GdkPixbuf
</parameter_description>
</parameter>
<parameter name="dest">
<parameter_description> the #GdkPixbuf into which to render the results
</parameter_description>
</parameter>
<parameter name="dest_x">
<parameter_description> the left coordinate for region to render
</parameter_description>
</parameter>
<parameter name="dest_y">
<parameter_description> the top coordinate for region to render
</parameter_description>
</parameter>
<parameter name="dest_width">
<parameter_description> the width of the region to render
</parameter_description>
</parameter>
<parameter name="dest_height">
<parameter_description> the height of the region to render
</parameter_description>
</parameter>
<parameter name="offset_x">
<parameter_description> the offset in the X direction (currently rounded to an integer)
</parameter_description>
</parameter>
<parameter name="offset_y">
<parameter_description> the offset in the Y direction (currently rounded to an integer)
</parameter_description>
</parameter>
<parameter name="scale_x">
<parameter_description> the scale factor in the X direction
</parameter_description>
</parameter>
<parameter name="scale_y">
<parameter_description> the scale factor in the Y direction
</parameter_description>
</parameter>
<parameter name="interp_type">
<parameter_description> the interpolation type for the transformation.
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_pixbuf_scale_simple">
<description>
Create a new pixbuf containing a copy of `src` scaled to
`dest_width` x `dest_height`.

This function leaves `src` unaffected.

The `interp_type` should be `GDK_INTERP_NEAREST` if you want maximum
speed (but when scaling down `GDK_INTERP_NEAREST` is usually unusably
ugly). The default `interp_type` should be `GDK_INTERP_BILINEAR` which
offers reasonable quality and speed.

You can scale a sub-portion of `src` by creating a sub-pixbuf
pointing into `src`; see [method@GdkPixbuf.Pixbuf.new_subpixbuf].

If `dest_width` and `dest_height` are equal to the width and height of
`src`, this function will return an unscaled copy of `src`.

For more complicated scaling/alpha blending see [method@GdkPixbuf.Pixbuf.scale]
and [method@GdkPixbuf.Pixbuf.composite].


</description>
<parameters>
<parameter name="src">
<parameter_description> a #GdkPixbuf
</parameter_description>
</parameter>
<parameter name="dest_width">
<parameter_description> the width of destination image
</parameter_description>
</parameter>
<parameter name="dest_height">
<parameter_description> the height of destination image
</parameter_description>
</parameter>
<parameter name="interp_type">
<parameter_description> the interpolation type for the transformation.
</parameter_description>
</parameter>
</parameters>
<return> the new pixbuf
</return>
</function>

<function name="gdk_pixbuf_set_option">
<description>
Attaches a key/value pair as an option to a `GdkPixbuf`.

If `key` already exists in the list of options attached to the `pixbuf`,
the new value is ignored and `FALSE` is returned.

Since: 2.2

</description>
<parameters>
<parameter name="pixbuf">
<parameter_description> a `GdkPixbuf`
</parameter_description>
</parameter>
<parameter name="key">
<parameter_description> a nul-terminated string.
</parameter_description>
</parameter>
<parameter name="value">
<parameter_description> a nul-terminated string.
</parameter_description>
</parameter>
</parameters>
<return> `TRUE` on success

</return>
</function>

<function name="gdk_pixbuf_simple_anim_add_frame">
<description>
Adds a new frame to @animation. The @pixbuf must
have the dimensions specified when the animation 
was constructed.

Since: 2.8

</description>
<parameters>
<parameter name="animation">
<parameter_description> a #GdkPixbufSimpleAnim
</parameter_description>
</parameter>
<parameter name="pixbuf">
<parameter_description> the pixbuf to add 
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_pixbuf_simple_anim_get_loop">
<description>
Gets whether @animation should loop indefinitely when it reaches the end.

Since: 2.18

</description>
<parameters>
<parameter name="animation">
<parameter_description> a #GdkPixbufSimpleAnim
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the animation loops forever, %FALSE otherwise

</return>
</function>

<function name="gdk_pixbuf_simple_anim_new">
<description>
Creates a new, empty animation.

Since: 2.8

</description>
<parameters>
<parameter name="width">
<parameter_description> the width of the animation
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> the height of the animation
</parameter_description>
</parameter>
<parameter name="rate">
<parameter_description> the speed of the animation, in frames per second
</parameter_description>
</parameter>
</parameters>
<return> a newly allocated #GdkPixbufSimpleAnim 

</return>
</function>

<function name="gdk_pixbuf_simple_anim_set_loop">
<description>
Sets whether @animation should loop indefinitely when it reaches the end.

Since: 2.18

</description>
<parameters>
<parameter name="animation">
<parameter_description> a #GdkPixbufSimpleAnim
</parameter_description>
</parameter>
<parameter name="loop">
<parameter_description> whether to loop the animation
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_pixbuf_unref">
<description>
Removes a reference from a pixbuf.

Deprecated: 2.0: Use g_object_unref().

</description>
<parameters>
<parameter name="pixbuf">
<parameter_description> A pixbuf.
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_pixbuf_version">
<description>
Contains the full version of the gdk-pixbuf library as a string.
This is the version currently in use by a running program.

</description>
<parameters>
</parameters>
<return></return>
</function>

<function name="gdk_pixdata_deserialize">
<description>
Deserializes (reconstruct) a #GdkPixdata structure from a byte stream.

The byte stream consists of a straightforward writeout of the
`GdkPixdata` fields in network byte order, plus the `pixel_data`
bytes the structure points to.

The `pixdata` contents are reconstructed byte by byte and are checked
for validity.

This function may fail with `GDK_PIXBUF_ERROR_CORRUPT_IMAGE`
or `GDK_PIXBUF_ERROR_UNKNOWN_TYPE`.

Deprecated: 2.32: Use `GResource` instead.

</description>
<parameters>
<parameter name="pixdata">
<parameter_description> a #GdkPixdata structure to be filled in.
</parameter_description>
</parameter>
<parameter name="stream_length">
<parameter_description> length of the stream used for deserialization.
</parameter_description>
</parameter>
<parameter name="stream">
<parameter_description> stream of bytes containing a
serialized #GdkPixdata structure.
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> #GError location to indicate failures (maybe `NULL` to ignore errors).
</parameter_description>
</parameter>
</parameters>
<return> Upon successful deserialization `TRUE` is returned,
`FALSE` otherwise.

</return>
</function>

<function name="gdk_pixdata_from_pixbuf">
<description>
Converts a `GdkPixbuf` to a `GdkPixdata`.

If `use_rle` is `TRUE`, the pixel data is run-length encoded into
newly-allocated memory and a pointer to that memory is returned. 

Deprecated: 2.32: Use #GResource instead.

</description>
<parameters>
<parameter name="pixdata">
<parameter_description> a `GdkPixdata` to fill.
</parameter_description>
</parameter>
<parameter name="pixbuf">
<parameter_description> the data to fill `pixdata` with.
</parameter_description>
</parameter>
<parameter name="use_rle">
<parameter_description> whether to use run-length encoding for the pixel data.
</parameter_description>
</parameter>
</parameters>
<return> If `use_rle` is
`TRUE`, a pointer to the newly-allocated memory for the run-length
encoded pixel data, otherwise `NULL`.

</return>
</function>

<function name="gdk_pixdata_serialize">
<description>
Serializes a #GdkPixdata structure into a byte stream.
The byte stream consists of a straightforward writeout of the
#GdkPixdata fields in network byte order, plus the @pixel_data
bytes the structure points to.

Deprecated: 2.32: Use #GResource instead.

</description>
<parameters>
<parameter name="pixdata">
<parameter_description> a valid #GdkPixdata structure to serialize.
</parameter_description>
</parameter>
<parameter name="stream_length_p">
<parameter_description> location to store the resulting stream length in.
</parameter_description>
</parameter>
</parameters>
<return> A
newly-allocated string containing the serialized #GdkPixdata
structure.

</return>
</function>

<function name="gdk_pixdata_to_csource">
<description>
Generates C source code suitable for compiling images directly 
into programs. 

GdkPixbuf ships with a program called `gdk-pixbuf-csource`, which offers
a command line interface to this function.

Deprecated: 2.32: Use #GResource instead.

</description>
<parameters>
<parameter name="pixdata">
<parameter_description> a `GdkPixdata` to convert to C source
</parameter_description>
</parameter>
<parameter name="name">
<parameter_description> used for naming generated data structures or macros
</parameter_description>
</parameter>
<parameter name="dump_type">
<parameter_description> the kind of C source to be generated
</parameter_description>
</parameter>
</parameters>
<return> a newly-allocated string buffer containing
the C source form of `pixdata`.

</return>
</function>

<function name="gdk_popup_get_autohide">
<description>
Returns whether this popup is set to hide on outside clicks.


</description>
<parameters>
<parameter name="popup">
<parameter_description> a `GdkPopup`
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if @popup will autohide
</return>
</function>

<function name="gdk_popup_get_parent">
<description>
Returns the parent surface of a popup.


</description>
<parameters>
<parameter name="popup">
<parameter_description> a `GdkPopup`
</parameter_description>
</parameter>
</parameters>
<return> the parent surface
</return>
</function>

<function name="gdk_popup_get_position_x">
<description>
Obtains the position of the popup relative to its parent.


</description>
<parameters>
<parameter name="popup">
<parameter_description> a `GdkPopup`
</parameter_description>
</parameter>
</parameters>
<return> the X coordinate of @popup position
</return>
</function>

<function name="gdk_popup_get_position_y">
<description>
Obtains the position of the popup relative to its parent.


</description>
<parameters>
<parameter name="popup">
<parameter_description> a `GdkPopup`
</parameter_description>
</parameter>
</parameters>
<return> the Y coordinate of @popup position
</return>
</function>

<function name="gdk_popup_get_rect_anchor">
<description>
Gets the current popup rectangle anchor.

The value returned may change after calling [method@Gdk.Popup.present],
or after the [signal@Gdk.Surface::layout] signal is emitted.


</description>
<parameters>
<parameter name="popup">
<parameter_description> a `GdkPopup`
</parameter_description>
</parameter>
</parameters>
<return> the current rectangle anchor value of @popup
</return>
</function>

<function name="gdk_popup_get_surface_anchor">
<description>
Gets the current popup surface anchor.

The value returned may change after calling [method@Gdk.Popup.present],
or after the [signal@Gdk.Surface::layout] signal is emitted.


</description>
<parameters>
<parameter name="popup">
<parameter_description> a `GdkPopup`
</parameter_description>
</parameter>
</parameters>
<return> the current surface anchor value of @popup
</return>
</function>

<function name="gdk_popup_layout_copy">
<description>
Makes a copy of @layout.


</description>
<parameters>
<parameter name="layout">
<parameter_description> a `GdkPopupLayout`
</parameter_description>
</parameter>
</parameters>
<return> a copy of @layout.
</return>
</function>

<function name="gdk_popup_layout_equal">
<description>
Check whether @layout and @other has identical layout properties.


</description>
<parameters>
<parameter name="layout">
<parameter_description> a `GdkPopupLayout`
</parameter_description>
</parameter>
<parameter name="other">
<parameter_description> another `GdkPopupLayout`
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if @layout and @other have identical layout properties,
otherwise %FALSE.
</return>
</function>

<function name="gdk_popup_layout_get_anchor_hints">
<description>
Get the `GdkAnchorHints`.


</description>
<parameters>
<parameter name="layout">
<parameter_description> a `GdkPopupLayout`
</parameter_description>
</parameter>
</parameters>
<return> the `GdkAnchorHints`
</return>
</function>

<function name="gdk_popup_layout_get_anchor_rect">
<description>
Get the anchor rectangle.


</description>
<parameters>
<parameter name="layout">
<parameter_description> a `GdkPopupLayout`
</parameter_description>
</parameter>
</parameters>
<return> The anchor rectangle
</return>
</function>

<function name="gdk_popup_layout_get_offset">
<description>
Retrieves the offset for the anchor rectangle.

</description>
<parameters>
<parameter name="layout">
<parameter_description> a `GdkPopupLayout`
</parameter_description>
</parameter>
<parameter name="dx">
<parameter_description> return location for the delta X coordinate
</parameter_description>
</parameter>
<parameter name="dy">
<parameter_description> return location for the delta Y coordinate
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_popup_layout_get_rect_anchor">
<description>
Returns the anchor position on the anchor rectangle.


</description>
<parameters>
<parameter name="layout">
<parameter_description> a `GdkPopupLayout`
</parameter_description>
</parameter>
</parameters>
<return> the anchor on the anchor rectangle.
</return>
</function>

<function name="gdk_popup_layout_get_shadow_width">
<description>
Obtains the shadow widths of this layout.

Since: 4.2

</description>
<parameters>
<parameter name="layout">
<parameter_description> a `GdkPopupLayout`
</parameter_description>
</parameter>
<parameter name="left">
<parameter_description> return location for the left shadow width
</parameter_description>
</parameter>
<parameter name="right">
<parameter_description> return location for the right shadow width
</parameter_description>
</parameter>
<parameter name="top">
<parameter_description> return location for the top shadow width
</parameter_description>
</parameter>
<parameter name="bottom">
<parameter_description> return location for the bottom shadow width
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_popup_layout_get_surface_anchor">
<description>
Returns the anchor position on the popup surface.


</description>
<parameters>
<parameter name="layout">
<parameter_description> a `GdkPopupLayout`
</parameter_description>
</parameter>
</parameters>
<return> the anchor on the popup surface.
</return>
</function>

<function name="gdk_popup_layout_new">
<description>
Create a popup layout description.

Used together with [method@Gdk.Popup.present] to describe how a popup
surface should be placed and behave on-screen.

@anchor_rect is relative to the top-left corner of the surface's parent.
@rect_anchor and @surface_anchor determine anchor points on @anchor_rect
and surface to pin together.

The position of @anchor_rect's anchor point can optionally be offset using
[method@Gdk.PopupLayout.set_offset], which is equivalent to offsetting the
position of surface.


</description>
<parameters>
<parameter name="anchor_rect">
<parameter_description> the anchor `GdkRectangle` to align @surface with
</parameter_description>
</parameter>
<parameter name="rect_anchor">
<parameter_description> the point on @anchor_rect to align with @surface's anchor point
</parameter_description>
</parameter>
<parameter name="surface_anchor">
<parameter_description> the point on @surface to align with @rect's anchor point
</parameter_description>
</parameter>
</parameters>
<return> newly created instance of `GdkPopupLayout`
</return>
</function>

<function name="gdk_popup_layout_ref">
<description>
Increases the reference count of @value.


</description>
<parameters>
<parameter name="layout">
<parameter_description> a `GdkPopupLayout`
</parameter_description>
</parameter>
</parameters>
<return> the same @layout
</return>
</function>

<function name="gdk_popup_layout_set_anchor_hints">
<description>
Set new anchor hints.

The set @anchor_hints determines how @surface will be moved
if the anchor points cause it to move off-screen. For example,
%GDK_ANCHOR_FLIP_X will replace %GDK_GRAVITY_NORTH_WEST with
%GDK_GRAVITY_NORTH_EAST and vice versa if @surface extends
beyond the left or right edges of the monitor.

</description>
<parameters>
<parameter name="layout">
<parameter_description> a `GdkPopupLayout`
</parameter_description>
</parameter>
<parameter name="anchor_hints">
<parameter_description> the new `GdkAnchorHints`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_popup_layout_set_anchor_rect">
<description>
Set the anchor rectangle.

</description>
<parameters>
<parameter name="layout">
<parameter_description> a `GdkPopupLayout`
</parameter_description>
</parameter>
<parameter name="anchor_rect">
<parameter_description> the new anchor rectangle
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_popup_layout_set_offset">
<description>
Offset the position of the anchor rectangle with the given delta.

</description>
<parameters>
<parameter name="layout">
<parameter_description> a `GdkPopupLayout`
</parameter_description>
</parameter>
<parameter name="dx">
<parameter_description> x delta to offset the anchor rectangle with
</parameter_description>
</parameter>
<parameter name="dy">
<parameter_description> y delta to offset the anchor rectangle with
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_popup_layout_set_rect_anchor">
<description>
Set the anchor on the anchor rectangle.

</description>
<parameters>
<parameter name="layout">
<parameter_description> a `GdkPopupLayout`
</parameter_description>
</parameter>
<parameter name="anchor">
<parameter_description> the new rect anchor
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_popup_layout_set_shadow_width">
<description>
Sets the shadow width of the popup.

The shadow width corresponds to the part of the computed
surface size that would consist of the shadow margin
surrounding the window, would there be any.

Since: 4.2

</description>
<parameters>
<parameter name="layout">
<parameter_description> a `GdkPopupLayout`
</parameter_description>
</parameter>
<parameter name="left">
<parameter_description> width of the left part of the shadow
</parameter_description>
</parameter>
<parameter name="right">
<parameter_description> width of the right part of the shadow
</parameter_description>
</parameter>
<parameter name="top">
<parameter_description> height of the top part of the shadow
</parameter_description>
</parameter>
<parameter name="bottom">
<parameter_description> height of the bottom part of the shadow
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_popup_layout_set_surface_anchor">
<description>
Set the anchor on the popup surface.

</description>
<parameters>
<parameter name="layout">
<parameter_description> a `GdkPopupLayout`
</parameter_description>
</parameter>
<parameter name="anchor">
<parameter_description> the new popup surface anchor
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_popup_layout_unref">
<description>
Decreases the reference count of @value.

</description>
<parameters>
<parameter name="layout">
<parameter_description> a `GdkPopupLayout`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_popup_present">
<description>
Present @popup after having processed the `GdkPopupLayout` rules.

If the popup was previously now showing, it will be showed,
otherwise it will change position according to @layout.

After calling this function, the result should be handled in response
to the [signal@Gdk.Surface::layout] signal being emitted. The resulting
popup position can be queried using [method@Gdk.Popup.get_position_x],
[method@Gdk.Popup.get_position_y], and the resulting size will be sent as
parameters in the layout signal. Use [method@Gdk.Popup.get_rect_anchor]
and [method@Gdk.Popup.get_surface_anchor] to get the resulting anchors.

Presenting may fail, for example if the @popup is set to autohide
and is immediately hidden upon being presented. If presenting failed,
the [signal@Gdk.Surface::layout] signal will not me emitted.


</description>
<parameters>
<parameter name="popup">
<parameter_description> the `GdkPopup` to show
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> the unconstrained popup width to layout
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> the unconstrained popup height to layout
</parameter_description>
</parameter>
<parameter name="layout">
<parameter_description> the `GdkPopupLayout` object used to layout
</parameter_description>
</parameter>
</parameters>
<return> %FALSE if it failed to be presented, otherwise %TRUE.
</return>
</function>

<function name="gdk_rectangle_contains_point">
<description>
Returns %TRUE if @rect contains the point described by @x and @y.


</description>
<parameters>
<parameter name="rect">
<parameter_description> a `GdkRectangle`
</parameter_description>
</parameter>
<parameter name="x">
<parameter_description> X coordinate
</parameter_description>
</parameter>
<parameter name="y">
<parameter_description> Y coordinate
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if @rect contains the point
</return>
</function>

<function name="gdk_rectangle_equal">
<description>
Checks if the two given rectangles are equal.


</description>
<parameters>
<parameter name="rect1">
<parameter_description> a `GdkRectangle`
</parameter_description>
</parameter>
<parameter name="rect2">
<parameter_description> a `GdkRectangle`
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the rectangles are equal.
</return>
</function>

<function name="gdk_rectangle_intersect">
<description>
Calculates the intersection of two rectangles.

It is allowed for @dest to be the same as either @src1 or @src2.
If the rectangles do not intersect, @dest’s width and height is set
to 0 and its x and y values are undefined. If you are only interested
in whether the rectangles intersect, but not in the intersecting area
itself, pass %NULL for @dest.


</description>
<parameters>
<parameter name="src1">
<parameter_description> a `GdkRectangle`
</parameter_description>
</parameter>
<parameter name="src2">
<parameter_description> a `GdkRectangle`
</parameter_description>
</parameter>
<parameter name="dest">
<parameter_description> return location for the
intersection of @src1 and @src2
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the rectangles intersect.
</return>
</function>

<function name="gdk_rectangle_union">
<description>
Calculates the union of two rectangles.

The union of rectangles @src1 and @src2 is the smallest rectangle which
includes both @src1 and @src2 within it. It is allowed for @dest to be
the same as either @src1 or @src2.

Note that this function does not ignore 'empty' rectangles (ie. with
zero width or height).

</description>
<parameters>
<parameter name="src1">
<parameter_description> a `GdkRectangle`
</parameter_description>
</parameter>
<parameter name="src2">
<parameter_description> a `GdkRectangle`
</parameter_description>
</parameter>
<parameter name="dest">
<parameter_description> return location for the union of @src1 and @src2
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_rgba_copy">
<description>
Makes a copy of a `GdkRGBA`.

The result must be freed through [method@Gdk.RGBA.free].


</description>
<parameters>
<parameter name="rgba">
<parameter_description> a `GdkRGBA`
</parameter_description>
</parameter>
</parameters>
<return> A newly allocated `GdkRGBA`, with the same contents as @rgba
</return>
</function>

<function name="gdk_rgba_equal">
<description>
Compares two `GdkRGBA` colors.


</description>
<parameters>
<parameter name="p1">
<parameter_description> a `GdkRGBA`
</parameter_description>
</parameter>
<parameter name="p2">
<parameter_description> another `GdkRGBA`
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the two colors compare equal
</return>
</function>

<function name="gdk_rgba_free">
<description>
Frees a `GdkRGBA`.

</description>
<parameters>
<parameter name="rgba">
<parameter_description> a `GdkRGBA`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_rgba_hash">
<description>
A hash function suitable for using for a hash
table that stores `GdkRGBA`s.


</description>
<parameters>
<parameter name="p">
<parameter_description> a `GdkRGBA`
</parameter_description>
</parameter>
</parameters>
<return> The hash value for @p
</return>
</function>

<function name="gdk_rgba_is_clear">
<description>
Checks if an @rgba value is transparent.

That is, drawing with the value would not produce any change.


</description>
<parameters>
<parameter name="rgba">
<parameter_description> a `GdkRGBA`
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the @rgba is clear
</return>
</function>

<function name="gdk_rgba_is_opaque">
<description>
Checks if an @rgba value is opaque.

That is, drawing with the value will not retain any results
from previous contents.


</description>
<parameters>
<parameter name="rgba">
<parameter_description> a `GdkRGBA`
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the @rgba is opaque
</return>
</function>

<function name="gdk_rgba_parse">
<description>
Parses a textual representation of a color.

The string can be either one of:

- A standard name (Taken from the CSS specification).
- A hexadecimal value in the form “\#rgb”, “\#rrggbb”,
“\#rrrgggbbb” or ”\#rrrrggggbbbb”
- A hexadecimal value in the form “\#rgba”, “\#rrggbbaa”,
or ”\#rrrrggggbbbbaaaa”
- A RGB color in the form “rgb(r,g,b)” (In this case the color
will have full opacity)
- A RGBA color in the form “rgba(r,g,b,a)”
- A HSL color in the form &quot;hsl(hue, saturation, lightness)&quot;
- A HSLA color in the form &quot;hsla(hue, saturation, lightness, alpha)&quot;

Where “r”, “g”, “b” and “a” are respectively the red, green,
blue and alpha color values. In the last two cases, “r”, “g”,
and “b” are either integers in the range 0 to 255 or percentage
values in the range 0% to 100%, and a is a floating point value
in the range 0 to 1.


</description>
<parameters>
<parameter name="rgba">
<parameter_description> the `GdkRGBA` to fill in
</parameter_description>
</parameter>
<parameter name="spec">
<parameter_description> the string specifying the color
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the parsing succeeded
</return>
</function>

<function name="gdk_rgba_to_string">
<description>
Returns a textual specification of @rgba in the form
`rgb(r,g,b)` or `rgba(r,g,b,a)`, where “r”, “g”, “b” and
“a” represent the red, green, blue and alpha values
respectively. “r”, “g”, and “b” are represented as integers
in the range 0 to 255, and “a” is represented as a floating
point value in the range 0 to 1.

These string forms are string forms that are supported by
the CSS3 colors module, and can be parsed by [method@Gdk.RGBA.parse].

Note that this string representation may lose some precision,
since “r”, “g” and “b” are represented as 8-bit integers. If
this is a concern, you should use a different representation.


</description>
<parameters>
<parameter name="rgba">
<parameter_description> a `GdkRGBA`
</parameter_description>
</parameter>
</parameters>
<return> A newly allocated text string
</return>
</function>

<function name="gdk_scroll_event_get_deltas">
<description>
Extracts the scroll deltas of a scroll event.

The deltas will be zero unless the scroll direction
is %GDK_SCROLL_SMOOTH.

For the representation unit of these deltas, see
[method@Gdk.ScrollEvent.get_unit].

</description>
<parameters>
<parameter name="event">
<parameter_description> a scroll event
</parameter_description>
</parameter>
<parameter name="delta_x">
<parameter_description> return location for x scroll delta
</parameter_description>
</parameter>
<parameter name="delta_y">
<parameter_description> return location for y scroll delta
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_scroll_event_get_direction">
<description>
Extracts the direction of a scroll event.


</description>
<parameters>
<parameter name="event">
<parameter_description> a scroll event
</parameter_description>
</parameter>
</parameters>
<return> the scroll direction of @event
</return>
</function>

<function name="gdk_scroll_event_get_unit">
<description>
Extracts the scroll delta unit of a scroll event.

The unit will always be %GDK_SCROLL_UNIT_WHEEL if the scroll direction is not
%GDK_SCROLL_SMOOTH.

Since: 4.8

</description>
<parameters>
<parameter name="event">
<parameter_description> a scroll event.
</parameter_description>
</parameter>
</parameters>
<return> the scroll unit.

</return>
</function>

<function name="gdk_scroll_event_is_stop">
<description>
Check whether a scroll event is a stop scroll event.

Scroll sequences with smooth scroll information may provide
a stop scroll event once the interaction with the device finishes,
e.g. by lifting a finger. This stop scroll event is the signal
that a widget may trigger kinetic scrolling based on the current
velocity.

Stop scroll events always have a delta of 0/0.


</description>
<parameters>
<parameter name="event">
<parameter_description> a scroll event
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the event is a scroll stop event
</return>
</function>

<function name="gdk_seat_get_capabilities">
<description>
Returns the capabilities this `GdkSeat` currently has.


</description>
<parameters>
<parameter name="seat">
<parameter_description> a `GdkSeat`
</parameter_description>
</parameter>
</parameters>
<return> the seat capabilities
</return>
</function>

<function name="gdk_seat_get_devices">
<description>
Returns the devices that match the given capabilities.


</description>
<parameters>
<parameter name="seat">
<parameter_description> a `GdkSeat`
</parameter_description>
</parameter>
<parameter name="capabilities">
<parameter_description> capabilities to get devices for
</parameter_description>
</parameter>
</parameters>
<return> A list
of `GdkDevices`. The list must be freed with g_list_free(),
the elements are owned by GTK and must not be freed.
</return>
</function>

<function name="gdk_seat_get_display">
<description>
Returns the `GdkDisplay` this seat belongs to.


</description>
<parameters>
<parameter name="seat">
<parameter_description> a `GdkSeat`
</parameter_description>
</parameter>
</parameters>
<return> a `GdkDisplay`. This object
is owned by GTK and must not be freed.
</return>
</function>

<function name="gdk_seat_get_keyboard">
<description>
Returns the device that routes keyboard events.


</description>
<parameters>
<parameter name="seat">
<parameter_description> a `GdkSeat`
</parameter_description>
</parameter>
</parameters>
<return> a `GdkDevice` with keyboard
capabilities. This object is owned by GTK and must not be freed.
</return>
</function>

<function name="gdk_seat_get_pointer">
<description>
Returns the device that routes pointer events.


</description>
<parameters>
<parameter name="seat">
<parameter_description> a `GdkSeat`
</parameter_description>
</parameter>
</parameters>
<return> a `GdkDevice` with pointer
capabilities. This object is owned by GTK and must not be freed.
</return>
</function>

<function name="gdk_seat_get_tools">
<description>
Returns all `GdkDeviceTools` that are known to the application.


</description>
<parameters>
<parameter name="seat">
<parameter_description> a `GdkSeat`
</parameter_description>
</parameter>
</parameters>
<return>
A list of tools. Free with g_list_free().
</return>
</function>

<function name="gdk_set_allowed_backends">
<description>
Sets a list of backends that GDK should try to use.

This can be useful if your application does not
work with certain GDK backends.

By default, GDK tries all included backends.

For example:

```c
gdk_set_allowed_backends (&quot;wayland,macos,*&quot;);
```

instructs GDK to try the Wayland backend first, followed by the
MacOs backend, and then all others.

If the `GDK_BACKEND` environment variable is set, it determines
what backends are tried in what order, while still respecting the
set of allowed backends that are specified by this function.

The possible backend names are:

- `broadway`
- `macos`
- `wayland`.
- `win32`
- `x11`

You can also include a `*` in the list to try all remaining backends.

This call must happen prior to functions that open a display, such
as [func@Gdk.Display.open], `gtk_init()`, or `gtk_init_check()`
in order to take effect.

</description>
<parameters>
<parameter name="backends">
<parameter_description> a comma-separated list of backends
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_surface_beep">
<description>
Emits a short beep associated to @surface.

If the display of @surface does not support per-surface beeps,
emits a short beep on the display just as [method@Gdk.Display.beep].

</description>
<parameters>
<parameter name="surface">
<parameter_description> a toplevel `GdkSurface`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_surface_create_cairo_context">
<description>
Creates a new `GdkCairoContext` for rendering on @surface.


</description>
<parameters>
<parameter name="surface">
<parameter_description> a `GdkSurface`
</parameter_description>
</parameter>
</parameters>
<return> the newly created `GdkCairoContext`
</return>
</function>

<function name="gdk_surface_create_gl_context">
<description>
Creates a new `GdkGLContext` for the `GdkSurface`.

The context is disconnected from any particular surface or surface.
If the creation of the `GdkGLContext` failed, @error will be set.
Before using the returned `GdkGLContext`, you will need to
call [method@Gdk.GLContext.make_current] or [method@Gdk.GLContext.realize].


</description>
<parameters>
<parameter name="surface">
<parameter_description> a `GdkSurface`
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> return location for an error
</parameter_description>
</parameter>
</parameters>
<return> the newly created `GdkGLContext`
</return>
</function>

<function name="gdk_surface_create_similar_surface">
<description>
Create a new Cairo surface that is as compatible as possible with the
given @surface.

For example the new surface will have the same fallback resolution
and font options as @surface. Generally, the new surface will also
use the same backend as @surface, unless that is not possible for
some reason. The type of the returned surface may be examined with
cairo_surface_get_type().

Initially the surface contents are all 0 (transparent if contents
have transparency, black otherwise.)

This function always returns a valid pointer, but it will return a
pointer to a “nil” surface if @other is already in an error state
or any other error occurs.

Deprecated: 4.12: Create a suitable cairo image surface yourself

</description>
<parameters>
<parameter name="surface">
<parameter_description> surface to make new surface similar to
</parameter_description>
</parameter>
<parameter name="content">
<parameter_description> the content for the new surface
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> width of the new surface
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> height of the new surface
</parameter_description>
</parameter>
</parameters>
<return> a pointer to the newly allocated surface. The caller
owns the surface and should call cairo_surface_destroy() when done
with it.

</return>
</function>

<function name="gdk_surface_create_vulkan_context">
<description>
Sets an error and returns %NULL.

Deprecated: 4.14: GTK does not expose any Vulkan internals. This
function is a leftover that was accidentally exposed.

</description>
<parameters>
<parameter name="surface">
<parameter_description> a `GdkSurface`
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> return location for an error
</parameter_description>
</parameter>
</parameters>
<return> %NULL

</return>
</function>

<function name="gdk_surface_destroy">
<description>
Destroys the window system resources associated with @surface and
decrements @surface's reference count.

The window system resources for all children of @surface are also
destroyed, but the children’s reference counts are not decremented.

Note that a surface will not be destroyed automatically when its
reference count reaches zero. You must call this function yourself
before that happens.

</description>
<parameters>
<parameter name="surface">
<parameter_description> a `GdkSurface`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_surface_get_cursor">
<description>
Retrieves a `GdkCursor` pointer for the cursor currently set on the
`GdkSurface`.

If the return value is %NULL then there is no custom cursor set on
the surface, and it is using the cursor for its parent surface.

Use [method@Gdk.Surface.set_cursor] to unset the cursor of the surface.


</description>
<parameters>
<parameter name="surface">
<parameter_description> a `GdkSurface`
</parameter_description>
</parameter>
</parameters>
<return> a `GdkCursor`
</return>
</function>

<function name="gdk_surface_get_device_cursor">
<description>
Retrieves a `GdkCursor` pointer for the @device currently set on the
specified `GdkSurface`.

If the return value is %NULL then there is no custom cursor set on the
specified surface, and it is using the cursor for its parent surface.

Use [method@Gdk.Surface.set_cursor] to unset the cursor of the surface.


</description>
<parameters>
<parameter name="surface">
<parameter_description> a `GdkSurface`
</parameter_description>
</parameter>
<parameter name="device">
<parameter_description> a pointer `GdkDevice`
</parameter_description>
</parameter>
</parameters>
<return> a `GdkCursor`
</return>
</function>

<function name="gdk_surface_get_device_position">
<description>
Obtains the current device position and modifier state.

The position is given in coordinates relative to the upper
left corner of @surface.

Return: %TRUE if the device is over the surface

</description>
<parameters>
<parameter name="surface">
<parameter_description> a `GdkSurface`
</parameter_description>
</parameter>
<parameter name="device">
<parameter_description> pointer `GdkDevice` to query to
</parameter_description>
</parameter>
<parameter name="x">
<parameter_description> return location for the X coordinate of @device
</parameter_description>
</parameter>
<parameter name="y">
<parameter_description> return location for the Y coordinate of @device
</parameter_description>
</parameter>
<parameter name="mask">
<parameter_description> return location for the modifier mask
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_surface_get_display">
<description>
Gets the `GdkDisplay` associated with a `GdkSurface`.


</description>
<parameters>
<parameter name="surface">
<parameter_description> a `GdkSurface`
</parameter_description>
</parameter>
</parameters>
<return> the `GdkDisplay` associated with @surface
</return>
</function>

<function name="gdk_surface_get_frame_clock">
<description>
Gets the frame clock for the surface.

The frame clock for a surface never changes unless the surface is
reparented to a new toplevel surface.


</description>
<parameters>
<parameter name="surface">
<parameter_description> surface to get frame clock for
</parameter_description>
</parameter>
</parameters>
<return> the frame clock
</return>
</function>

<function name="gdk_surface_get_height">
<description>
Returns the height of the given @surface.

Surface size is reported in ”application pixels”, not
”device pixels” (see [method@Gdk.Surface.get_scale_factor]).


</description>
<parameters>
<parameter name="surface">
<parameter_description> a `GdkSurface`
</parameter_description>
</parameter>
</parameters>
<return> The height of @surface
</return>
</function>

<function name="gdk_surface_get_mapped">
<description>
Checks whether the surface has been mapped.

A surface is mapped with [method@Gdk.Toplevel.present]
or [method@Gdk.Popup.present].


</description>
<parameters>
<parameter name="surface">
<parameter_description> a `GdkSurface`
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the surface is mapped
</return>
</function>

<function name="gdk_surface_get_scale">
<description>
Returns the internal scale that maps from surface coordinates
to the actual device pixels.

When the scale is bigger than 1, the windowing system prefers to get
buffers with a resolution that is bigger than the surface size (e.g.
to show the surface on a high-resolution display, or in a magnifier).

Compare with [method@Gdk.Surface.get_scale_factor], which returns the
next larger integer.

The scale may change during the lifetime of the surface.

Since: 4.12

</description>
<parameters>
<parameter name="surface">
<parameter_description> surface to get scale for
</parameter_description>
</parameter>
</parameters>
<return> the scale

</return>
</function>

<function name="gdk_surface_get_scale_factor">
<description>
Returns the internal scale factor that maps from surface coordinates
to the actual device pixels.

On traditional systems this is 1, but on very high density outputs
this can be a higher value (often 2). A higher value means that drawing
is automatically scaled up to a higher resolution, so any code doing
drawing will automatically look nicer. However, if you are supplying
pixel-based data the scale value can be used to determine whether to
use a pixel resource with higher resolution data.

The scale factor may change during the lifetime of the surface.


</description>
<parameters>
<parameter name="surface">
<parameter_description> surface to get scale factor for
</parameter_description>
</parameter>
</parameters>
<return> the scale factor
</return>
</function>

<function name="gdk_surface_get_width">
<description>
Returns the width of the given @surface.

Surface size is reported in ”application pixels”, not
”device pixels” (see [method@Gdk.Surface.get_scale_factor]).


</description>
<parameters>
<parameter name="surface">
<parameter_description> a `GdkSurface`
</parameter_description>
</parameter>
</parameters>
<return> The width of @surface
</return>
</function>

<function name="gdk_surface_hide">
<description>
Hide the surface.

For toplevel surfaces, withdraws them, so they will no longer be
known to the window manager; for all surfaces, unmaps them, so
they won’t be displayed. Normally done automatically as
part of [gtk_widget_hide()](../gtk4/method.Widget.hide.html).

</description>
<parameters>
<parameter name="surface">
<parameter_description> a `GdkSurface`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_surface_is_destroyed">
<description>
Check to see if a surface is destroyed.


</description>
<parameters>
<parameter name="surface">
<parameter_description> a `GdkSurface`
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the surface is destroyed
</return>
</function>

<function name="gdk_surface_new_popup">
<description>
Create a new popup surface.

The surface will be attached to @parent and can be positioned
relative to it using [method@Gdk.Popup.present].


</description>
<parameters>
<parameter name="parent">
<parameter_description> the parent surface to attach the surface to
</parameter_description>
</parameter>
<parameter name="autohide">
<parameter_description> whether to hide the surface on outside clicks
</parameter_description>
</parameter>
</parameters>
<return> a new `GdkSurface`
</return>
</function>

<function name="gdk_surface_new_toplevel">
<description>
Creates a new toplevel surface.


</description>
<parameters>
<parameter name="display">
<parameter_description> the display to create the surface on
</parameter_description>
</parameter>
</parameters>
<return> the new `GdkSurface`
</return>
</function>

<function name="gdk_surface_queue_render">
<description>
Forces a [signal@Gdk.Surface::render] signal emission for @surface
to be scheduled.

This function is useful for implementations that track invalid
regions on their own.

</description>
<parameters>
<parameter name="surface">
<parameter_description> a `GdkSurface`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_surface_request_layout">
<description>
Request a layout phase from the surface's frame clock.

See [method@Gdk.FrameClock.request_phase].

</description>
<parameters>
<parameter name="surface">
<parameter_description> a `GdkSurface`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_surface_set_cursor">
<description>
Sets the default mouse pointer for a `GdkSurface`.

Passing %NULL for the @cursor argument means that @surface will use
the cursor of its parent surface. Most surfaces should use this default.
Note that @cursor must be for the same display as @surface.

Use [ctor@Gdk.Cursor.new_from_name] or [ctor@Gdk.Cursor.new_from_texture]
to create the cursor. To make the cursor invisible, use %GDK_BLANK_CURSOR.

</description>
<parameters>
<parameter name="surface">
<parameter_description> a `GdkSurface`
</parameter_description>
</parameter>
<parameter name="cursor">
<parameter_description> a `GdkCursor`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_surface_set_device_cursor">
<description>
Sets a specific `GdkCursor` for a given device when it gets inside @surface.

Passing %NULL for the @cursor argument means that @surface will use the
cursor of its parent surface. Most surfaces should use this default.

Use [ctor@Gdk.Cursor.new_from_name] or [ctor@Gdk.Cursor.new_from_texture]
to create the cursor. To make the cursor invisible, use %GDK_BLANK_CURSOR.

</description>
<parameters>
<parameter name="surface">
<parameter_description> a `GdkSurface`
</parameter_description>
</parameter>
<parameter name="device">
<parameter_description> a pointer `GdkDevice`
</parameter_description>
</parameter>
<parameter name="cursor">
<parameter_description> a `GdkCursor`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_surface_set_input_region">
<description>
Apply the region to the surface for the purpose of event
handling.

Mouse events which happen while the pointer position corresponds
to an unset bit in the mask will be passed on the surface below
@surface.

An input region is typically used with RGBA surfaces. The alpha
channel of the surface defines which pixels are invisible and
allows for nicely antialiased borders, and the input region
controls where the surface is “clickable”.

Use [method@Gdk.Display.supports_input_shapes] to find out if
a particular backend supports input regions.

</description>
<parameters>
<parameter name="surface">
<parameter_description> a `GdkSurface`
</parameter_description>
</parameter>
<parameter name="region">
<parameter_description> region of surface to be reactive
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_surface_set_opaque_region">
<description>
Marks a region of the `GdkSurface` as opaque.

For optimisation purposes, compositing window managers may
like to not draw obscured regions of surfaces, or turn off blending
during for these regions. With RGB windows with no transparency,
this is just the shape of the window, but with ARGB32 windows, the
compositor does not know what regions of the window are transparent
or not.

This function only works for toplevel surfaces.

GTK will update this property automatically if the @surface background
is opaque, as we know where the opaque regions are. If your surface
background is not opaque, please update this property in your
[GtkWidgetClass.css_changed](../gtk4/vfunc.Widget.css_changed.html) handler.

</description>
<parameters>
<parameter name="surface">
<parameter_description> a top-level `GdkSurface`
</parameter_description>
</parameter>
<parameter name="region">
<parameter_description> a region, or %NULL to make the entire
surface opaque
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_surface_translate_coordinates">
<description>
Translates coordinates between two surfaces.

Note that this only works if @to and @from are popups or
transient-for to the same toplevel (directly or indirectly).


</description>
<parameters>
<parameter name="from">
<parameter_description> the origin surface
</parameter_description>
</parameter>
<parameter name="to">
<parameter_description> the target surface
</parameter_description>
</parameter>
<parameter name="x">
<parameter_description> coordinates to translate
</parameter_description>
</parameter>
<parameter name="y">
<parameter_description> coordinates to translate
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the coordinates were successfully translated
</return>
</function>

<function name="gdk_texture_download">
<description>
Downloads the @texture into local memory.

This may be an expensive operation, as the actual texture data
may reside on a GPU or on a remote display server.

The data format of the downloaded data is equivalent to
%CAIRO_FORMAT_ARGB32, so every downloaded pixel requires
4 bytes of memory.

Downloading a texture into a Cairo image surface:
```c
surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
gdk_texture_get_width (texture),
gdk_texture_get_height (texture));
gdk_texture_download (texture,
cairo_image_surface_get_data (surface),
cairo_image_surface_get_stride (surface));
cairo_surface_mark_dirty (surface);
```

For more flexible download capabilities, see
[struct@Gdk.TextureDownloader].

</description>
<parameters>
<parameter name="texture">
<parameter_description> a `GdkTexture`
</parameter_description>
</parameter>
<parameter name="data">
<parameter_description> pointer to enough memory to be filled with the
downloaded data of @texture
</parameter_description>
</parameter>
<parameter name="stride">
<parameter_description> rowstride in bytes
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_texture_downloader_copy">
<description>
Creates a copy of the downloader.

This function is meant for language bindings.

Since: 4.10

</description>
<parameters>
<parameter name="self">
<parameter_description> the downloader to copy
</parameter_description>
</parameter>
</parameters>
<return> A copy of the downloader

</return>
</function>

<function name="gdk_texture_downloader_download_bytes">
<description>
Downloads the given texture pixels into a `GBytes`. The rowstride will
be stored in the stride value.

This function will abort if it tries to download a large texture and
fails to allocate memory. If you think that may happen, you should handle
memory allocation yourself and use [method@Gdk.TextureDownloader.download_into]
once allocation succeeded.

Since: 4.10

</description>
<parameters>
<parameter name="self">
<parameter_description> the downloader
</parameter_description>
</parameter>
<parameter name="out_stride">
<parameter_description> The stride of the resulting data in bytes
</parameter_description>
</parameter>
</parameters>
<return> The downloaded pixels

</return>
</function>

<function name="gdk_texture_downloader_download_into">
<description>
Downloads the @texture into local memory.

Since: 4.10

</description>
<parameters>
<parameter name="self">
<parameter_description> a texture downloader
</parameter_description>
</parameter>
<parameter name="data">
<parameter_description> pointer to enough memory to be filled with the
downloaded data of the texture
</parameter_description>
</parameter>
<parameter name="stride">
<parameter_description> rowstride in bytes
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_texture_downloader_free">
<description>
Frees the given downloader and all its associated resources.

Since: 4.10

</description>
<parameters>
<parameter name="self">
<parameter_description> texture downloader to free
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_texture_downloader_get_format">
<description>
Gets the format that the data will be downloaded in.

Since: 4.10

</description>
<parameters>
<parameter name="self">
<parameter_description> a texture downloader
</parameter_description>
</parameter>
</parameters>
<return> The format of the download

</return>
</function>

<function name="gdk_texture_downloader_get_texture">
<description>
Gets the texture that the downloader will download.

Since: 4.10

</description>
<parameters>
<parameter name="self">
<parameter_description> a texture downloader
</parameter_description>
</parameter>
</parameters>
<return> The texture to download

</return>
</function>

<function name="gdk_texture_downloader_new">
<description>
Creates a new texture downloader for @texture.

Since: 4.10

</description>
<parameters>
<parameter name="texture">
<parameter_description> texture to download
</parameter_description>
</parameter>
</parameters>
<return> A new texture downloader

</return>
</function>

<function name="gdk_texture_downloader_set_format">
<description>
Sets the format the downloader will download.

By default, GDK_MEMORY_DEFAULT is set.

Since: 4.10

</description>
<parameters>
<parameter name="self">
<parameter_description> a texture downloader
</parameter_description>
</parameter>
<parameter name="format">
<parameter_description> the format to use
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_texture_downloader_set_texture">
<description>
Changes the texture the downloader will download.

Since: 4.10

</description>
<parameters>
<parameter name="self">
<parameter_description> a texture downloader
</parameter_description>
</parameter>
<parameter name="texture">
<parameter_description> the new texture to download
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_texture_get_format">
<description>
Gets the memory format most closely associated with the data of
the texture.

Note that it may not be an exact match for texture data
stored on the GPU or with compression.

The format can give an indication about the bit depth and opacity
of the texture and is useful to determine the best format for
downloading the texture.

Since: 4.10

</description>
<parameters>
<parameter name="self">
<parameter_description> a GdkTexture
</parameter_description>
</parameter>
</parameters>
<return> the preferred format for the texture's data

</return>
</function>

<function name="gdk_texture_get_height">
<description>
Returns the height of the @texture, in pixels.


</description>
<parameters>
<parameter name="texture">
<parameter_description> a `GdkTexture`
</parameter_description>
</parameter>
</parameters>
<return> the height of the `GdkTexture`
</return>
</function>

<function name="gdk_texture_get_width">
<description>
Returns the width of @texture, in pixels.


</description>
<parameters>
<parameter name="texture">
<parameter_description> a `GdkTexture`
</parameter_description>
</parameter>
</parameters>
<return> the width of the `GdkTexture`
</return>
</function>

<function name="gdk_texture_new_for_pixbuf">
<description>
Creates a new texture object representing the `GdkPixbuf`.

This function is threadsafe, so that you can e.g. use GTask
and [method@Gio.Task.run_in_thread] to avoid blocking the main thread
while loading a big image.


</description>
<parameters>
<parameter name="pixbuf">
<parameter_description> a `GdkPixbuf`
</parameter_description>
</parameter>
</parameters>
<return> a new `GdkTexture`
</return>
</function>

<function name="gdk_texture_new_for_surface">
<description>
Creates a new texture object representing the surface.

The @surface must be an image surface with format `CAIRO_FORMAT_ARGB32`.

The newly created texture will acquire a reference on the @surface.


</description>
<parameters>
<parameter name="surface">
<parameter_description> a cairo image surface
</parameter_description>
</parameter>
</parameters>
<return> a new `GdkTexture`
</return>
</function>

<function name="gdk_texture_new_from_bytes">
<description>
Creates a new texture by loading an image from memory,

The file format is detected automatically. The supported formats
are PNG, JPEG and TIFF, though more formats might be available.

If %NULL is returned, then @error will be set.

This function is threadsafe, so that you can e.g. use GTask
and [method@Gio.Task.run_in_thread] to avoid blocking the main thread
while loading a big image.

Since: 4.6

</description>
<parameters>
<parameter name="bytes">
<parameter_description> a `GBytes` containing the data to load
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> Return location for an error
</parameter_description>
</parameter>
</parameters>
<return> A newly-created `GdkTexture`

</return>
</function>

<function name="gdk_texture_new_from_file">
<description>
Creates a new texture by loading an image from a file.

The file format is detected automatically. The supported formats
are PNG, JPEG and TIFF, though more formats might be available.

If %NULL is returned, then @error will be set.

This function is threadsafe, so that you can e.g. use GTask
and [method@Gio.Task.run_in_thread] to avoid blocking the main thread
while loading a big image.


</description>
<parameters>
<parameter name="file">
<parameter_description> `GFile` to load
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> Return location for an error
</parameter_description>
</parameter>
</parameters>
<return> A newly-created `GdkTexture`
</return>
</function>

<function name="gdk_texture_new_from_filename">
<description>
Creates a new texture by loading an image from a file.

The file format is detected automatically. The supported formats
are PNG, JPEG and TIFF, though more formats might be available.

If %NULL is returned, then @error will be set.

This function is threadsafe, so that you can e.g. use GTask
and [method@Gio.Task.run_in_thread] to avoid blocking the main thread
while loading a big image.

Since: 4.6

</description>
<parameters>
<parameter name="path">
<parameter_description> the filename to load
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> Return location for an error
</parameter_description>
</parameter>
</parameters>
<return> A newly-created `GdkTexture`

</return>
</function>

<function name="gdk_texture_new_from_resource">
<description>
Creates a new texture by loading an image from a resource.

The file format is detected automatically. The supported formats
are PNG and JPEG, though more formats might be available.

It is a fatal error if @resource_path does not specify a valid
image resource and the program will abort if that happens.
If you are unsure about the validity of a resource, use
[ctor@Gdk.Texture.new_from_file] to load it.

This function is threadsafe, so that you can e.g. use GTask
and [method@Gio.Task.run_in_thread] to avoid blocking the main thread
while loading a big image.


</description>
<parameters>
<parameter name="resource_path">
<parameter_description> the path of the resource file
</parameter_description>
</parameter>
</parameters>
<return> A newly-created `GdkTexture`
</return>
</function>

<function name="gdk_texture_save_to_png">
<description>
Store the given @texture to the @filename as a PNG file.

This is a utility function intended for debugging and testing.
If you want more control over formats, proper error handling or
want to store to a [iface@Gio.File] or other location, you might want to
use [method@Gdk.Texture.save_to_png_bytes] or look into the
gdk-pixbuf library.


</description>
<parameters>
<parameter name="texture">
<parameter_description> a `GdkTexture`
</parameter_description>
</parameter>
<parameter name="filename">
<parameter_description> the filename to store to
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if saving succeeded, %FALSE on failure.
</return>
</function>

<function name="gdk_texture_save_to_png_bytes">
<description>
Store the given @texture in memory as a PNG file.

Use [ctor@Gdk.Texture.new_from_bytes] to read it back.

If you want to serialize a texture, this is a convenient and
portable way to do that.

If you need more control over the generated image, such as
attaching metadata, you should look into an image handling
library such as the gdk-pixbuf library.

If you are dealing with high dynamic range float data, you
might also want to consider [method@Gdk.Texture.save_to_tiff_bytes]
instead.

Since: 4.6

</description>
<parameters>
<parameter name="texture">
<parameter_description> a `GdkTexture`
</parameter_description>
</parameter>
</parameters>
<return> a newly allocated `GBytes` containing PNG data

</return>
</function>

<function name="gdk_texture_save_to_tiff">
<description>
Store the given @texture to the @filename as a TIFF file.

GTK will attempt to store data without loss.
Since: 4.6

</description>
<parameters>
<parameter name="texture">
<parameter_description> a `GdkTexture`
</parameter_description>
</parameter>
<parameter name="filename">
<parameter_description> the filename to store to
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if saving succeeded, %FALSE on failure.

</return>
</function>

<function name="gdk_texture_save_to_tiff_bytes">
<description>
Store the given @texture in memory as a TIFF file.

Use [ctor@Gdk.Texture.new_from_bytes] to read it back.

This function is intended to store a representation of the
texture's data that is as accurate as possible. This is
particularly relevant when working with high dynamic range
images and floating-point texture data.

If that is not your concern and you are interested in a
smaller size and a more portable format, you might want to
use [method@Gdk.Texture.save_to_png_bytes].

Since: 4.6

</description>
<parameters>
<parameter name="texture">
<parameter_description> a `GdkTexture`
</parameter_description>
</parameter>
</parameters>
<return> a newly allocated `GBytes` containing TIFF data

</return>
</function>

<function name="gdk_toplevel_begin_move">
<description>
Begins an interactive move operation.

You might use this function to implement draggable titlebars.

</description>
<parameters>
<parameter name="toplevel">
<parameter_description> a `GdkToplevel`
</parameter_description>
</parameter>
<parameter name="device">
<parameter_description> the device used for the operation
</parameter_description>
</parameter>
<parameter name="button">
<parameter_description> the button being used to drag, or 0 for a keyboard-initiated drag
</parameter_description>
</parameter>
<parameter name="x">
<parameter_description> surface X coordinate of mouse click that began the drag
</parameter_description>
</parameter>
<parameter name="y">
<parameter_description> surface Y coordinate of mouse click that began the drag
</parameter_description>
</parameter>
<parameter name="timestamp">
<parameter_description> timestamp of mouse click that began the drag (use
[method@Gdk.Event.get_time])
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_toplevel_begin_resize">
<description>
Begins an interactive resize operation.

You might use this function to implement a “window resize grip.”

</description>
<parameters>
<parameter name="toplevel">
<parameter_description> a `GdkToplevel`
</parameter_description>
</parameter>
<parameter name="edge">
<parameter_description> the edge or corner from which the drag is started
</parameter_description>
</parameter>
<parameter name="device">
<parameter_description> the device used for the operation
</parameter_description>
</parameter>
<parameter name="button">
<parameter_description> the button being used to drag, or 0 for a keyboard-initiated drag
</parameter_description>
</parameter>
<parameter name="x">
<parameter_description> surface X coordinate of mouse click that began the drag
</parameter_description>
</parameter>
<parameter name="y">
<parameter_description> surface Y coordinate of mouse click that began the drag
</parameter_description>
</parameter>
<parameter name="timestamp">
<parameter_description> timestamp of mouse click that began the drag (use
[method@Gdk.Event.get_time])
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_toplevel_focus">
<description>
Sets keyboard focus to @surface.

In most cases, [gtk_window_present_with_time()](../gtk4/method.Window.present_with_time.html)
should be used on a [GtkWindow](../gtk4/class.Window.html), rather than
calling this function.

</description>
<parameters>
<parameter name="toplevel">
<parameter_description> a `GdkToplevel`
</parameter_description>
</parameter>
<parameter name="timestamp">
<parameter_description> timestamp of the event triggering the surface focus
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_toplevel_get_state">
<description>
Gets the bitwise or of the currently active surface state flags,
from the `GdkToplevelState` enumeration.


</description>
<parameters>
<parameter name="toplevel">
<parameter_description> a `GdkToplevel`
</parameter_description>
</parameter>
</parameters>
<return> surface state bitfield
</return>
</function>

<function name="gdk_toplevel_inhibit_system_shortcuts">
<description>
Requests that the @toplevel inhibit the system shortcuts.

This is asking the desktop environment/windowing system to let all
keyboard events reach the surface, as long as it is focused, instead
of triggering system actions.

If granted, the rerouting remains active until the default shortcuts
processing is restored with [method@Gdk.Toplevel.restore_system_shortcuts],
or the request is revoked by the desktop environment, windowing system
or the user.

A typical use case for this API is remote desktop or virtual machine
viewers which need to inhibit the default system keyboard shortcuts
so that the remote session or virtual host gets those instead of the
local environment.

The windowing system or desktop environment may ask the user to grant
or deny the request or even choose to ignore the request entirely.

The caller can be notified whenever the request is granted or revoked
by listening to the [property@Gdk.Toplevel:shortcuts-inhibited] property.

</description>
<parameters>
<parameter name="toplevel">
<parameter_description> a `GdkToplevel`
</parameter_description>
</parameter>
<parameter name="event">
<parameter_description> the `GdkEvent` that is triggering the inhibit
request, or %NULL if none is available
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_toplevel_layout_copy">
<description>
Create a new `GdkToplevelLayout` and copy the contents of @layout into it.


</description>
<parameters>
<parameter name="layout">
<parameter_description> a `GdkToplevelLayout`
</parameter_description>
</parameter>
</parameters>
<return> a copy of @layout.
</return>
</function>

<function name="gdk_toplevel_layout_equal">
<description>
Check whether @layout and @other has identical layout properties.


</description>
<parameters>
<parameter name="layout">
<parameter_description> a `GdkToplevelLayout`
</parameter_description>
</parameter>
<parameter name="other">
<parameter_description> another `GdkToplevelLayout`
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if @layout and @other have identical layout properties,
otherwise %FALSE.
</return>
</function>

<function name="gdk_toplevel_layout_get_fullscreen">
<description>
If the layout specifies whether to the toplevel should go fullscreen,
the value pointed to by @fullscreen is set to %TRUE if it should go
fullscreen, or %FALSE, if it should go unfullscreen.


</description>
<parameters>
<parameter name="layout">
<parameter_description> a ``GdkToplevelLayout`
</parameter_description>
</parameter>
<parameter name="fullscreen">
<parameter_description> location to store whether the toplevel should be fullscreen
</parameter_description>
</parameter>
</parameters>
<return> whether the @layout specifies the fullscreen state for the toplevel
</return>
</function>

<function name="gdk_toplevel_layout_get_fullscreen_monitor">
<description>
Returns the monitor that the layout is fullscreening
the surface on.


</description>
<parameters>
<parameter name="layout">
<parameter_description> a `GdkToplevelLayout`
</parameter_description>
</parameter>
</parameters>
<return> the monitor on which @layout fullscreens
</return>
</function>

<function name="gdk_toplevel_layout_get_maximized">
<description>
If the layout specifies whether to the toplevel should go maximized,
the value pointed to by @maximized is set to %TRUE if it should go
fullscreen, or %FALSE, if it should go unmaximized.


</description>
<parameters>
<parameter name="layout">
<parameter_description> a `GdkToplevelLayout`
</parameter_description>
</parameter>
<parameter name="maximized">
<parameter_description> set to %TRUE if the toplevel should be maximized
</parameter_description>
</parameter>
</parameters>
<return> whether the @layout specifies the maximized state for the toplevel
</return>
</function>

<function name="gdk_toplevel_layout_get_resizable">
<description>
Returns whether the layout should allow the user
to resize the surface.


</description>
<parameters>
<parameter name="layout">
<parameter_description> a `GdkToplevelLayout`
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the layout is resizable
</return>
</function>

<function name="gdk_toplevel_layout_new">
<description>
Create a toplevel layout description.

Used together with gdk_toplevel_present() to describe
how a toplevel surface should be placed and behave on-screen.

The size is in ”application pixels”, not
”device pixels” (see gdk_surface_get_scale_factor()).


</description>
<parameters>
</parameters>
<return> newly created instance of `GdkToplevelLayout`
</return>
</function>

<function name="gdk_toplevel_layout_ref">
<description>
Increases the reference count of @layout.


</description>
<parameters>
<parameter name="layout">
<parameter_description> a `GdkToplevelLayout`
</parameter_description>
</parameter>
</parameters>
<return> the same @layout
</return>
</function>

<function name="gdk_toplevel_layout_set_fullscreen">
<description>
Sets whether the layout should cause the surface
to be fullscreen when presented.

</description>
<parameters>
<parameter name="layout">
<parameter_description> a `GdkToplevelLayout`
</parameter_description>
</parameter>
<parameter name="fullscreen">
<parameter_description> %TRUE to fullscreen the surface
</parameter_description>
</parameter>
<parameter name="monitor">
<parameter_description> the monitor to fullscreen on
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_toplevel_layout_set_maximized">
<description>
Sets whether the layout should cause the surface
to be maximized when presented.

</description>
<parameters>
<parameter name="layout">
<parameter_description> a `GdkToplevelLayout`
</parameter_description>
</parameter>
<parameter name="maximized">
<parameter_description> %TRUE to maximize
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_toplevel_layout_set_resizable">
<description>
Sets whether the layout should allow the user
to resize the surface after it has been presented.

</description>
<parameters>
<parameter name="layout">
<parameter_description> a `GdkToplevelLayout`
</parameter_description>
</parameter>
<parameter name="resizable">
<parameter_description> %TRUE to allow resizing
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_toplevel_layout_unref">
<description>
Decreases the reference count of @layout.

</description>
<parameters>
<parameter name="layout">
<parameter_description> a `GdkToplevelLayout`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_toplevel_lower">
<description>
Asks to lower the @toplevel below other windows.

The windowing system may choose to ignore the request.


</description>
<parameters>
<parameter name="toplevel">
<parameter_description> a `GdkToplevel`
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the surface was lowered
</return>
</function>

<function name="gdk_toplevel_minimize">
<description>
Asks to minimize the @toplevel.

The windowing system may choose to ignore the request.


</description>
<parameters>
<parameter name="toplevel">
<parameter_description> a `GdkToplevel`
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the surface was minimized
</return>
</function>

<function name="gdk_toplevel_present">
<description>
Present @toplevel after having processed the `GdkToplevelLayout` rules.

If the toplevel was previously not showing, it will be showed,
otherwise it will change layout according to @layout.

GDK may emit the [signal@Gdk.Toplevel::compute-size] signal to let
the user of this toplevel compute the preferred size of the toplevel
surface.

Presenting is asynchronous and the specified layout parameters are not
guaranteed to be respected.

</description>
<parameters>
<parameter name="toplevel">
<parameter_description> the `GdkToplevel` to show
</parameter_description>
</parameter>
<parameter name="layout">
<parameter_description> the `GdkToplevelLayout` object used to layout
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_toplevel_restore_system_shortcuts">
<description>
Restore default system keyboard shortcuts which were previously
inhibited.

This undoes the effect of [method@Gdk.Toplevel.inhibit_system_shortcuts].

</description>
<parameters>
<parameter name="toplevel">
<parameter_description> a `GdkToplevel`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_toplevel_set_decorated">
<description>
Sets the toplevel to be decorated.

Setting @decorated to %FALSE hints the desktop environment
that the surface has its own, client-side decorations and
does not need to have window decorations added.

</description>
<parameters>
<parameter name="toplevel">
<parameter_description> a `GdkToplevel`
</parameter_description>
</parameter>
<parameter name="decorated">
<parameter_description> %TRUE to request decorations
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_toplevel_set_deletable">
<description>
Sets the toplevel to be deletable.

Setting @deletable to %TRUE hints the desktop environment
that it should offer the user a way to close the surface.

</description>
<parameters>
<parameter name="toplevel">
<parameter_description> a `GdkToplevel`
</parameter_description>
</parameter>
<parameter name="deletable">
<parameter_description> %TRUE to request a delete button
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_toplevel_set_icon_list">
<description>
Sets a list of icons for the surface.

One of these will be used to represent the surface in iconic form.
The icon may be shown in window lists or task bars. Which icon
size is shown depends on the window manager. The window manager
can scale the icon but setting several size icons can give better
image quality.

Note that some platforms don't support surface icons.

</description>
<parameters>
<parameter name="toplevel">
<parameter_description> a `GdkToplevel`
</parameter_description>
</parameter>
<parameter name="surfaces">
<parameter_description>
A list of textures to use as icon, of different sizes
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_toplevel_set_modal">
<description>
Sets the toplevel to be modal.

The application can use this hint to tell the
window manager that a certain surface has modal
behaviour. The window manager can use this information
to handle modal surfaces in a special way.

You should only use this on surfaces for which you have
previously called [method@Gdk.Toplevel.set_transient_for].

</description>
<parameters>
<parameter name="toplevel">
<parameter_description> a `GdkToplevel`
</parameter_description>
</parameter>
<parameter name="modal">
<parameter_description> %TRUE if the surface is modal, %FALSE otherwise.
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_toplevel_set_startup_id">
<description>
Sets the startup notification ID.

When using GTK, typically you should use
[gtk_window_set_startup_id()](../gtk4/method.Window.set_startup_id.html)
instead of this low-level function.

</description>
<parameters>
<parameter name="toplevel">
<parameter_description> a `GdkToplevel`
</parameter_description>
</parameter>
<parameter name="startup_id">
<parameter_description> a string with startup-notification identifier
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_toplevel_set_title">
<description>
Sets the title of a toplevel surface.

The title maybe be displayed in the titlebar,
in lists of windows, etc.

</description>
<parameters>
<parameter name="toplevel">
<parameter_description> a `GdkToplevel`
</parameter_description>
</parameter>
<parameter name="title">
<parameter_description> title of @surface
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_toplevel_set_transient_for">
<description>
Sets a transient-for parent.

Indicates to the window manager that @surface is a transient
dialog associated with the application surface @parent. This
allows the window manager to do things like center @surface
on @parent and keep @surface above @parent.

See [gtk_window_set_transient_for()](../gtk4/method.Window.set_transient_for.html)
if you’re using [GtkWindow](../gtk4/class.Window.html).

</description>
<parameters>
<parameter name="toplevel">
<parameter_description> a `GdkToplevel`
</parameter_description>
</parameter>
<parameter name="parent">
<parameter_description> another toplevel `GdkSurface`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_toplevel_show_window_menu">
<description>
Asks the windowing system to show the window menu.

The window menu is the menu shown when right-clicking the titlebar
on traditional windows managed by the window manager. This is useful
for windows using client-side decorations, activating it with a
right-click on the window decorations.


</description>
<parameters>
<parameter name="toplevel">
<parameter_description> a `GdkToplevel`
</parameter_description>
</parameter>
<parameter name="event">
<parameter_description> a `GdkEvent` to show the menu for
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the window menu was shown and %FALSE otherwise.
</return>
</function>

<function name="gdk_toplevel_size_get_bounds">
<description>
Retrieves the bounds the toplevel is placed within.

The bounds represent the largest size a toplevel may have while still being
able to fit within some type of boundary. Depending on the backend, this may
be equivalent to the dimensions of the work area or the monitor on which the
window is being presented on, or something else that limits the way a
toplevel can be presented.

</description>
<parameters>
<parameter name="size">
<parameter_description> a `GdkToplevelSize`
</parameter_description>
</parameter>
<parameter name="bounds_width">
<parameter_description> return location for width
</parameter_description>
</parameter>
<parameter name="bounds_height">
<parameter_description> return location for height
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_toplevel_size_set_min_size">
<description>
Sets the minimum size of the toplevel.

The minimum size corresponds to the limitations the toplevel can be shrunk
to, without resulting in incorrect painting. A user of a `GdkToplevel` should
calculate these given both the existing size, and the bounds retrieved from
the `GdkToplevelSize` object.

The minimum size should be within the bounds (see
[method@Gdk.ToplevelSize.get_bounds]).

</description>
<parameters>
<parameter name="size">
<parameter_description> a `GdkToplevelSize`
</parameter_description>
</parameter>
<parameter name="min_width">
<parameter_description> the minimum width
</parameter_description>
</parameter>
<parameter name="min_height">
<parameter_description> the minimum height
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_toplevel_size_set_shadow_width">
<description>
Sets the shadows size of the toplevel.

The shadow width corresponds to the part of the computed surface size
that would consist of the shadow margin surrounding the window, would
there be any.

Shadow width should only be set if
[method@Gtk.Display.supports_shadow_width] is %TRUE.

</description>
<parameters>
<parameter name="size">
<parameter_description> a `GdkToplevelSize`
</parameter_description>
</parameter>
<parameter name="left">
<parameter_description> width of the left part of the shadow
</parameter_description>
</parameter>
<parameter name="right">
<parameter_description> width of the right part of the shadow
</parameter_description>
</parameter>
<parameter name="top">
<parameter_description> height of the top part of the shadow
</parameter_description>
</parameter>
<parameter name="bottom">
<parameter_description> height of the bottom part of the shadow
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_toplevel_size_set_size">
<description>
Sets the size the toplevel prefers to be resized to.

The size should be within the bounds (see
[method@Gdk.ToplevelSize.get_bounds]). The set size should
be considered as a hint, and should not be assumed to be
respected by the windowing system, or backend.

</description>
<parameters>
<parameter name="size">
<parameter_description> a `GdkToplevelSize`
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> the width
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> the height
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_toplevel_supports_edge_constraints">
<description>
Returns whether the desktop environment supports
tiled window states.


</description>
<parameters>
<parameter name="toplevel">
<parameter_description> a `GdkToplevel`
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the desktop environment supports tiled window states
</return>
</function>

<function name="gdk_toplevel_titlebar_gesture">
<description>
Since: 4.4

</description>
<parameters>
<parameter name="toplevel">
<parameter_description> a `GdkToplevel`
</parameter_description>
</parameter>
<parameter name="gesture">
<parameter_description> a `GdkTitlebarGesture`
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_touch_event_get_emulating_pointer">
<description>
Extracts whether a touch event is emulating a pointer event.


</description>
<parameters>
<parameter name="event">
<parameter_description> a touch event
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if @event is emulating
</return>
</function>

<function name="gdk_touchpad_event_get_deltas">
<description>
Extracts delta information from a touchpad event.

</description>
<parameters>
<parameter name="event">
<parameter_description> a touchpad event
</parameter_description>
</parameter>
<parameter name="dx">
<parameter_description> return location for x
</parameter_description>
</parameter>
<parameter name="dy">
<parameter_description> return location for y
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gdk_touchpad_event_get_gesture_phase">
<description>
Extracts the touchpad gesture phase from a touchpad event.


</description>
<parameters>
<parameter name="event">
<parameter_description> a touchpad event
</parameter_description>
</parameter>
</parameters>
<return> the gesture phase of @event
</return>
</function>

<function name="gdk_touchpad_event_get_n_fingers">
<description>
Extracts the number of fingers from a touchpad event.


</description>
<parameters>
<parameter name="event">
<parameter_description> a touchpad event
</parameter_description>
</parameter>
</parameters>
<return> the number of fingers for @event
</return>
</function>

<function name="gdk_touchpad_event_get_pinch_angle_delta">
<description>
Extracts the angle delta from a touchpad pinch event.


</description>
<parameters>
<parameter name="event">
<parameter_description> a touchpad pinch event
</parameter_description>
</parameter>
</parameters>
<return> the angle delta of @event
</return>
</function>

<function name="gdk_touchpad_event_get_pinch_scale">
<description>
Extracts the scale from a touchpad pinch event.


</description>
<parameters>
<parameter name="event">
<parameter_description> a touchpad pinch event
</parameter_description>
</parameter>
</parameters>
<return> the scale of @event
</return>
</function>

<function name="gdk_unicode_to_keyval">
<description>
Convert from a Unicode character to a key symbol.


</description>
<parameters>
<parameter name="wc">
<parameter_description> a Unicode character
</parameter_description>
</parameter>
</parameters>
<return> the corresponding GDK key symbol, if one exists.
or, if there is no corresponding symbol, wc | 0x01000000
</return>
</function>

<function name="gdk_vulkan_context_get_device">
<description>
Gets the Vulkan device that this context is using.


</description>
<parameters>
<parameter name="context">
<parameter_description> a `GdkVulkanContext`
</parameter_description>
</parameter>
</parameters>
<return> the VkDevice
</return>
</function>

<function name="gdk_vulkan_context_get_draw_index">
<description>
Gets the index of the image that is currently being drawn.

This function can only be used between [method@Gdk.DrawContext.begin_frame]
and [method@Gdk.DrawContext.end_frame] calls.


</description>
<parameters>
<parameter name="context">
<parameter_description> a `GdkVulkanContext`
</parameter_description>
</parameter>
</parameters>
<return> the index of the images that is being drawn
</return>
</function>

<function name="gdk_vulkan_context_get_draw_semaphore">
<description>
Gets the Vulkan semaphore that protects access to the image that is
currently being drawn.

This function can only be used between [method@Gdk.DrawContext.begin_frame]
and [method@Gdk.DrawContext.end_frame] calls.


</description>
<parameters>
<parameter name="context">
<parameter_description> a `GdkVulkanContext`
</parameter_description>
</parameter>
</parameters>
<return> the VkSemaphore
</return>
</function>

<function name="gdk_vulkan_context_get_image">
<description>
Gets the image with index @id that this context is using.


</description>
<parameters>
<parameter name="context">
<parameter_description> a `GdkVulkanContext`
</parameter_description>
</parameter>
<parameter name="id">
<parameter_description> the index of the image to return
</parameter_description>
</parameter>
</parameters>
<return> the VkImage
</return>
</function>

<function name="gdk_vulkan_context_get_image_format">
<description>
Gets the image format that this context is using.


</description>
<parameters>
<parameter name="context">
<parameter_description> a `GdkVulkanContext`
</parameter_description>
</parameter>
</parameters>
<return> the VkFormat
</return>
</function>

<function name="gdk_vulkan_context_get_instance">
<description>
Gets the Vulkan instance that is associated with @context.


</description>
<parameters>
<parameter name="context">
<parameter_description> a `GdkVulkanContext`
</parameter_description>
</parameter>
</parameters>
<return> the VkInstance
</return>
</function>

<function name="gdk_vulkan_context_get_n_images">
<description>
Gets the number of images that this context is using in its swap chain.


</description>
<parameters>
<parameter name="context">
<parameter_description> a `GdkVulkanContext`
</parameter_description>
</parameter>
</parameters>
<return> the number of images
</return>
</function>

<function name="gdk_vulkan_context_get_physical_device">
<description>
Gets the Vulkan physical device that this context is using.


</description>
<parameters>
<parameter name="context">
<parameter_description> a `GdkVulkanContext`
</parameter_description>
</parameter>
</parameters>
<return> the VkPhysicalDevice
</return>
</function>

<function name="gdk_vulkan_context_get_queue">
<description>
Gets the Vulkan queue that this context is using.


</description>
<parameters>
<parameter name="context">
<parameter_description> a `GdkVulkanContext`
</parameter_description>
</parameter>
</parameters>
<return> the VkQueue
</return>
</function>

<function name="gdk_vulkan_context_get_queue_family_index">
<description>
Gets the family index for the queue that this context is using.

See vkGetPhysicalDeviceQueueFamilyProperties().


</description>
<parameters>
<parameter name="context">
<parameter_description> a `GdkVulkanContext`
</parameter_description>
</parameter>
</parameters>
<return> the index
</return>
</function>

<function name="graphene_box_alloc">
<description>
Allocates a new #graphene_box_t.

The contents of the returned structure are undefined.

Since: 1.2

</description>
<parameters>
</parameters>
<return> the newly allocated #graphene_box_t structure.
Use graphene_box_free() to free the resources allocated by this function

</return>
</function>

<function name="graphene_box_contains_box">
<description>
Checks whether the #graphene_box_t @a contains the given
#graphene_box_t @b.

Since: 1.2

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_box_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_box_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the box is contained in the given box

</return>
</function>

<function name="graphene_box_contains_point">
<description>
Checks whether @box contains the given @point.

Since: 1.2

</description>
<parameters>
<parameter name="box">
<parameter_description> a #graphene_box_t
</parameter_description>
</parameter>
<parameter name="point">
<parameter_description> the coordinates to check
</parameter_description>
</parameter>
</parameters>
<return> `true` if the point is contained in the given box

</return>
</function>

<function name="graphene_box_empty">
<description>
A degenerate #graphene_box_t that can only be expanded.

The returned value is owned by Graphene and should not be modified or freed.

Since: 1.2

</description>
<parameters>
</parameters>
<return> a #graphene_box_t

</return>
</function>

<function name="graphene_box_equal">
<description>
Checks whether the two given boxes are equal.

Since: 1.2

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_box_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_box_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the boxes are equal

</return>
</function>

<function name="graphene_box_expand">
<description>
Expands the dimensions of @box to include the coordinates at @point.

Since: 1.2

</description>
<parameters>
<parameter name="box">
<parameter_description> a #graphene_box_t
</parameter_description>
</parameter>
<parameter name="point">
<parameter_description> the coordinates of the point to include
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the expanded box
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_box_expand_scalar">
<description>
Expands the dimensions of @box by the given @scalar value.

If @scalar is positive, the #graphene_box_t will grow; if @scalar is
negative, the #graphene_box_t will shrink.

Since: 1.2

</description>
<parameters>
<parameter name="box">
<parameter_description> a #graphene_box_t
</parameter_description>
</parameter>
<parameter name="scalar">
<parameter_description> a scalar value
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the expanded box
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_box_expand_vec3">
<description>
Expands the dimensions of @box to include the coordinates of the
given vector.

Since: 1.2

</description>
<parameters>
<parameter name="box">
<parameter_description> a #graphene_box_t
</parameter_description>
</parameter>
<parameter name="vec">
<parameter_description> the coordinates of the point to include, as a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the expanded box
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_box_free">
<description>
Frees the resources allocated by graphene_box_alloc().

Since: 1.2

</description>
<parameters>
<parameter name="box">
<parameter_description> a #graphene_box_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_box_get_bounding_sphere">
<description>
Computes the bounding #graphene_sphere_t capable of containing the given
#graphene_box_t.

Since: 1.2

</description>
<parameters>
<parameter name="box">
<parameter_description> a #graphene_box_t
</parameter_description>
</parameter>
<parameter name="sphere">
<parameter_description> return location for the bounding sphere
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_box_get_center">
<description>
Retrieves the coordinates of the center of a #graphene_box_t.

Since: 1.2

</description>
<parameters>
<parameter name="box">
<parameter_description> a #graphene_box_t
</parameter_description>
</parameter>
<parameter name="center">
<parameter_description> return location for the coordinates of
the center
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_box_get_depth">
<description>
Retrieves the size of the @box on the Z axis.

Since: 1.2

</description>
<parameters>
<parameter name="box">
<parameter_description> a #graphene_box_t
</parameter_description>
</parameter>
</parameters>
<return> the depth of the box

</return>
</function>

<function name="graphene_box_get_height">
<description>
Retrieves the size of the @box on the Y axis.

Since: 1.2

</description>
<parameters>
<parameter name="box">
<parameter_description> a #graphene_box_t
</parameter_description>
</parameter>
</parameters>
<return> the height of the box

</return>
</function>

<function name="graphene_box_get_max">
<description>
Retrieves the coordinates of the maximum point of the given
#graphene_box_t.

Since: 1.2

</description>
<parameters>
<parameter name="box">
<parameter_description> a #graphene_box_t
</parameter_description>
</parameter>
<parameter name="max">
<parameter_description> return location for the maximum point
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_box_get_min">
<description>
Retrieves the coordinates of the minimum point of the given
#graphene_box_t.

Since: 1.2

</description>
<parameters>
<parameter name="box">
<parameter_description> a #graphene_box_t
</parameter_description>
</parameter>
<parameter name="min">
<parameter_description> return location for the minimum point
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_box_get_size">
<description>
Retrieves the size of the box on all three axes, and stores
it into the given @size vector.

Since: 1.2

</description>
<parameters>
<parameter name="box">
<parameter_description> a #graphene_box_t
</parameter_description>
</parameter>
<parameter name="size">
<parameter_description> return location for the size
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_box_get_vertices">
<description>
Computes the vertices of the given #graphene_box_t.

Since: 1.2

</description>
<parameters>
<parameter name="box">
<parameter_description> a #graphene_box_t
</parameter_description>
</parameter>
<parameter name="vertices">
<parameter_description> return location for an array
of 8 #graphene_vec3_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_box_get_width">
<description>
Retrieves the size of the @box on the X axis.

Since: 1.2

</description>
<parameters>
<parameter name="box">
<parameter_description> a #graphene_box_t
</parameter_description>
</parameter>
</parameters>
<return> the width of the box

</return>
</function>

<function name="graphene_box_infinite">
<description>
A degenerate #graphene_box_t that cannot be expanded.

The returned value is owned by Graphene and should not be modified or freed.

Since: 1.2

</description>
<parameters>
</parameters>
<return> a #graphene_box_t

</return>
</function>

<function name="graphene_box_init">
<description>
Initializes the given #graphene_box_t with two vertices.

Since: 1.2

</description>
<parameters>
<parameter name="box">
<parameter_description> the #graphene_box_t to initialize
</parameter_description>
</parameter>
<parameter name="min">
<parameter_description> the coordinates of the minimum vertex
</parameter_description>
</parameter>
<parameter name="max">
<parameter_description> the coordinates of the maximum vertex
</parameter_description>
</parameter>
</parameters>
<return> the initialized #graphene_box_t

</return>
</function>

<function name="graphene_box_init_from_box">
<description>
Initializes the given #graphene_box_t with the vertices of
another #graphene_box_t.

Since: 1.2

</description>
<parameters>
<parameter name="box">
<parameter_description> the #graphene_box_t to initialize
</parameter_description>
</parameter>
<parameter name="src">
<parameter_description> a #graphene_box_t
</parameter_description>
</parameter>
</parameters>
<return> the initialized #graphene_box_t

</return>
</function>

<function name="graphene_box_init_from_points">
<description>
Initializes the given #graphene_box_t with the given array
of vertices.

If @n_points is 0, the returned box is initialized with
graphene_box_empty().

Since: 1.2

</description>
<parameters>
<parameter name="box">
<parameter_description> the #graphene_box_t to initialize
</parameter_description>
</parameter>
<parameter name="n_points">
<parameter_description> the number #graphene_point3d_t in the @points array
</parameter_description>
</parameter>
<parameter name="points">
<parameter_description> an array of #graphene_point3d_t
</parameter_description>
</parameter>
</parameters>
<return> the initialized #graphene_box_t

</return>
</function>

<function name="graphene_box_init_from_vec3">
<description>
Initializes the given #graphene_box_t with two vertices
stored inside #graphene_vec3_t.

Since: 1.2

</description>
<parameters>
<parameter name="box">
<parameter_description> the #graphene_box_t to initialize
</parameter_description>
</parameter>
<parameter name="min">
<parameter_description> the coordinates of the minimum vertex
</parameter_description>
</parameter>
<parameter name="max">
<parameter_description> the coordinates of the maximum vertex
</parameter_description>
</parameter>
</parameters>
<return> the initialized #graphene_box_t

</return>
</function>

<function name="graphene_box_init_from_vectors">
<description>
Initializes the given #graphene_box_t with the given array
of vertices.

If @n_vectors is 0, the returned box is initialized with
graphene_box_empty().

Since: 1.2

</description>
<parameters>
<parameter name="box">
<parameter_description> the #graphene_box_t to initialize
</parameter_description>
</parameter>
<parameter name="n_vectors">
<parameter_description> the number #graphene_point3d_t in the @vectors array
</parameter_description>
</parameter>
<parameter name="vectors">
<parameter_description> an array of #graphene_vec3_t
</parameter_description>
</parameter>
</parameters>
<return> the initialized #graphene_box_t

</return>
</function>

<function name="graphene_box_intersection">
<description>
Intersects the two given #graphene_box_t.

If the two boxes do not intersect, @res will contain a degenerate box
initialized with graphene_box_empty().

Since: 1.2

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_box_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_box_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the result
</parameter_description>
</parameter>
</parameters>
<return> true if the two boxes intersect

</return>
</function>

<function name="graphene_box_minus_one">
<description>
A #graphene_box_t with the minimum vertex set at (-1, -1, -1) and the
maximum vertex set at (0, 0, 0).

The returned value is owned by Graphene and should not be modified or freed.

Since: 1.2

</description>
<parameters>
</parameters>
<return> a #graphene_box_t

</return>
</function>

<function name="graphene_box_one">
<description>
A #graphene_box_t with the minimum vertex set at (0, 0, 0) and the
maximum vertex set at (1, 1, 1).

The returned value is owned by Graphene and should not be modified or freed.

Since: 1.2

</description>
<parameters>
</parameters>
<return> a #graphene_box_t

</return>
</function>

<function name="graphene_box_one_minus_one">
<description>
A #graphene_box_t with the minimum vertex set at (-1, -1, -1) and the
maximum vertex set at (1, 1, 1).

The returned value is owned by Graphene and should not be modified or freed.

Since: 1.2

</description>
<parameters>
</parameters>
<return> a #graphene_box_t

</return>
</function>

<function name="graphene_box_union">
<description>
Unions the two given #graphene_box_t.

Since: 1.2

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_box_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> the box to union to @a
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the result
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_box_zero">
<description>
A #graphene_box_t with both the minimum and maximum vertices set at (0, 0, 0).

The returned value is owned by Graphene and should not be modified or freed.

Since: 1.2

</description>
<parameters>
</parameters>
<return> a #graphene_box_t

</return>
</function>

<function name="graphene_euler_alloc">
<description>
Allocates a new #graphene_euler_t.

The contents of the returned structure are undefined.

Since: 1.2

</description>
<parameters>
</parameters>
<return> the newly allocated #graphene_euler_t

</return>
</function>

<function name="graphene_euler_equal">
<description>
Checks if two #graphene_euler_t are equal.

Since: 1.2

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_euler_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_euler_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the two #graphene_euler_t are equal

</return>
</function>

<function name="graphene_euler_free">
<description>
Frees the resources allocated by graphene_euler_alloc().

Since: 1.2

</description>
<parameters>
<parameter name="e">
<parameter_description> a #graphene_euler_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_euler_get_alpha">
<description>
Retrieves the first component of the Euler angle vector,
depending on the order of rotation.

See also: graphene_euler_get_x()

Since: 1.10

</description>
<parameters>
<parameter name="e">
<parameter_description> a #graphene_euler_t
</parameter_description>
</parameter>
</parameters>
<return> the first component of the Euler angle vector, in radians

</return>
</function>

<function name="graphene_euler_get_beta">
<description>
Retrieves the second component of the Euler angle vector,
depending on the order of rotation.

See also: graphene_euler_get_y()

Since: 1.10

</description>
<parameters>
<parameter name="e">
<parameter_description> a #graphene_euler_t
</parameter_description>
</parameter>
</parameters>
<return> the second component of the Euler angle vector, in radians

</return>
</function>

<function name="graphene_euler_get_gamma">
<description>
Retrieves the third component of the Euler angle vector,
depending on the order of rotation.

See also: graphene_euler_get_z()

Since: 1.10

</description>
<parameters>
<parameter name="e">
<parameter_description> a #graphene_euler_t
</parameter_description>
</parameter>
</parameters>
<return> the third component of the Euler angle vector, in radians

</return>
</function>

<function name="graphene_euler_get_order">
<description>
Retrieves the order used to apply the rotations described in the
#graphene_euler_t structure, when converting to and from other
structures, like #graphene_quaternion_t and #graphene_matrix_t.

This function does not return the %GRAPHENE_EULER_ORDER_DEFAULT
enumeration value; it will return the effective order of rotation
instead.

Since: 1.2

</description>
<parameters>
<parameter name="e">
<parameter_description> a #graphene_euler_t
</parameter_description>
</parameter>
</parameters>
<return> the order used to apply the rotations

</return>
</function>

<function name="graphene_euler_get_x">
<description>
Retrieves the rotation angle on the X axis, in degrees.

Since: 1.2

</description>
<parameters>
<parameter name="e">
<parameter_description> a #graphene_euler_t
</parameter_description>
</parameter>
</parameters>
<return> the rotation angle

</return>
</function>

<function name="graphene_euler_get_y">
<description>
Retrieves the rotation angle on the Y axis, in degrees.

Since: 1.2

</description>
<parameters>
<parameter name="e">
<parameter_description> a #graphene_euler_t
</parameter_description>
</parameter>
</parameters>
<return> the rotation angle

</return>
</function>

<function name="graphene_euler_get_z">
<description>
Retrieves the rotation angle on the Z axis, in degrees.

Since: 1.2

</description>
<parameters>
<parameter name="e">
<parameter_description> a #graphene_euler_t
</parameter_description>
</parameter>
</parameters>
<return> the rotation angle

</return>
</function>

<function name="graphene_euler_init">
<description>
Initializes a #graphene_euler_t using the given angles.

The order of the rotations is %GRAPHENE_EULER_ORDER_DEFAULT.

Since: 1.2

</description>
<parameters>
<parameter name="e">
<parameter_description> the #graphene_euler_t to initialize
</parameter_description>
</parameter>
<parameter name="x">
<parameter_description> rotation angle on the X axis, in degrees
</parameter_description>
</parameter>
<parameter name="y">
<parameter_description> rotation angle on the Y axis, in degrees
</parameter_description>
</parameter>
<parameter name="z">
<parameter_description> rotation angle on the Z axis, in degrees
</parameter_description>
</parameter>
</parameters>
<return> the initialized #graphene_euler_t

</return>
</function>

<function name="graphene_euler_init_from_euler">
<description>
Initializes a #graphene_euler_t using the angles and order of
another #graphene_euler_t.

If the #graphene_euler_t @src is %NULL, this function is equivalent
to calling graphene_euler_init() with all angles set to 0.

Since: 1.2

</description>
<parameters>
<parameter name="e">
<parameter_description> the #graphene_euler_t to initialize
</parameter_description>
</parameter>
<parameter name="src">
<parameter_description> a #graphene_euler_t
</parameter_description>
</parameter>
</parameters>
<return> the initialized #graphene_euler_t

</return>
</function>

<function name="graphene_euler_init_from_matrix">
<description>
Initializes a #graphene_euler_t using the given rotation matrix.

If the #graphene_matrix_t @m is %NULL, the #graphene_euler_t will
be initialized with all angles set to 0.

Since: 1.2

</description>
<parameters>
<parameter name="e">
<parameter_description> the #graphene_euler_t to initialize
</parameter_description>
</parameter>
<parameter name="m">
<parameter_description> a rotation matrix
</parameter_description>
</parameter>
<parameter name="order">
<parameter_description> the order used to apply the rotations
</parameter_description>
</parameter>
</parameters>
<return> the initialized #graphene_euler_t

</return>
</function>

<function name="graphene_euler_init_from_quaternion">
<description>
Initializes a #graphene_euler_t using the given normalized quaternion.

If the #graphene_quaternion_t @q is %NULL, the #graphene_euler_t will
be initialized with all angles set to 0.

Since: 1.2

</description>
<parameters>
<parameter name="e">
<parameter_description> a #graphene_euler_t
</parameter_description>
</parameter>
<parameter name="q">
<parameter_description> a normalized #graphene_quaternion_t
</parameter_description>
</parameter>
<parameter name="order">
<parameter_description> the order used to apply the rotations
</parameter_description>
</parameter>
</parameters>
<return> the initialized #graphene_euler_t

</return>
</function>

<function name="graphene_euler_init_from_radians">
<description>
Initializes a #graphene_euler_t using the given angles
and order of rotation.

Since: 1.10

</description>
<parameters>
<parameter name="e">
<parameter_description> the #graphene_euler_t to initialize
</parameter_description>
</parameter>
<parameter name="x">
<parameter_description> rotation angle on the X axis, in radians
</parameter_description>
</parameter>
<parameter name="y">
<parameter_description> rotation angle on the Y axis, in radians
</parameter_description>
</parameter>
<parameter name="z">
<parameter_description> rotation angle on the Z axis, in radians
</parameter_description>
</parameter>
<parameter name="order">
<parameter_description> order of rotations
</parameter_description>
</parameter>
</parameters>
<return> the initialized #graphene_euler_t

</return>
</function>

<function name="graphene_euler_init_from_vec3">
<description>
Initializes a #graphene_euler_t using the angles contained in a
#graphene_vec3_t.

If the #graphene_vec3_t @v is %NULL, the #graphene_euler_t will be
initialized with all angles set to 0.

Since: 1.2

</description>
<parameters>
<parameter name="e">
<parameter_description> the #graphene_euler_t to initialize
</parameter_description>
</parameter>
<parameter name="v">
<parameter_description> a #graphene_vec3_t containing the rotation
angles in degrees
</parameter_description>
</parameter>
<parameter name="order">
<parameter_description> the order used to apply the rotations
</parameter_description>
</parameter>
</parameters>
<return> the initialized #graphene_euler_t

</return>
</function>

<function name="graphene_euler_init_with_order">
<description>
Initializes a #graphene_euler_t with the given angles and @order.

Since: 1.2

</description>
<parameters>
<parameter name="e">
<parameter_description> the #graphene_euler_t to initialize
</parameter_description>
</parameter>
<parameter name="x">
<parameter_description> rotation angle on the X axis, in degrees
</parameter_description>
</parameter>
<parameter name="y">
<parameter_description> rotation angle on the Y axis, in degrees
</parameter_description>
</parameter>
<parameter name="z">
<parameter_description> rotation angle on the Z axis, in degrees
</parameter_description>
</parameter>
<parameter name="order">
<parameter_description> the order used to apply the rotations
</parameter_description>
</parameter>
</parameters>
<return> the initialized #graphene_euler_t

</return>
</function>

<function name="graphene_euler_reorder">
<description>
Reorders a #graphene_euler_t using @order.

This function is equivalent to creating a #graphene_quaternion_t from the
given #graphene_euler_t, and then converting the quaternion into another
#graphene_euler_t.

Since: 1.2

</description>
<parameters>
<parameter name="e">
<parameter_description> a #graphene_euler_t
</parameter_description>
</parameter>
<parameter name="order">
<parameter_description> the new order
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the reordered
#graphene_euler_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_euler_to_matrix">
<description>
Converts a #graphene_euler_t into a transformation matrix expressing
the extrinsic composition of rotations described by the Euler angles.

The rotations are applied over the reference frame axes in the order
associated with the #graphene_euler_t; for instance, if the order
used to initialize @e is %GRAPHENE_EULER_ORDER_XYZ:

* the first rotation moves the body around the X axis with
an angle φ
* the second rotation moves the body around the Y axis with
an angle of ϑ
* the third rotation moves the body around the Z axis with
an angle of ψ

The rotation sign convention is right-handed, to preserve compatibility
between Euler-based, quaternion-based, and angle-axis-based rotations.

Since: 1.2

</description>
<parameters>
<parameter name="e">
<parameter_description> a #graphene_euler_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for a #graphene_matrix_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_euler_to_quaternion">
<description>
Converts a #graphene_euler_t into a #graphene_quaternion_t.

Since: 1.10

</description>
<parameters>
<parameter name="e">
<parameter_description> a #graphene_euler_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for a #graphene_quaternion_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_euler_to_vec3">
<description>
Retrieves the angles of a #graphene_euler_t and initializes a
#graphene_vec3_t with them.

Since: 1.2

</description>
<parameters>
<parameter name="e">
<parameter_description> a #graphene_euler_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for a #graphene_vec3_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_frustum_alloc">
<description>
Allocates a new #graphene_frustum_t structure.

The contents of the returned structure are undefined.

Since: 1.2

</description>
<parameters>
</parameters>
<return> the newly allocated #graphene_frustum_t
structure. Use graphene_frustum_free() to free the resources
allocated by this function.

</return>
</function>

<function name="graphene_frustum_contains_point">
<description>
Checks whether a point is inside the volume defined by the given
#graphene_frustum_t.

Since: 1.2

</description>
<parameters>
<parameter name="f">
<parameter_description> a #graphene_frustum_t
</parameter_description>
</parameter>
<parameter name="point">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the point is inside the frustum

</return>
</function>

<function name="graphene_frustum_equal">
<description>
Checks whether the two given #graphene_frustum_t are equal.

Since: 1.6

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_frustum_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_frustum_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the given frustums are equal

</return>
</function>

<function name="graphene_frustum_free">
<description>
Frees the resources allocated by graphene_frustum_alloc().

Since: 1.2

</description>
<parameters>
<parameter name="f">
<parameter_description> a #graphene_frustum_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_frustum_get_planes">
<description>
Retrieves the planes that define the given #graphene_frustum_t.

Since: 1.2

</description>
<parameters>
<parameter name="f">
<parameter_description> a #graphene_frustum_t
</parameter_description>
</parameter>
<parameter name="planes">
<parameter_description> return location for an array
of 6 #graphene_plane_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_frustum_init">
<description>
Initializes the given #graphene_frustum_t using the provided
clipping planes.

Since: 1.2

</description>
<parameters>
<parameter name="f">
<parameter_description> the #graphene_frustum_t to initialize
</parameter_description>
</parameter>
<parameter name="p0">
<parameter_description> a clipping plane
</parameter_description>
</parameter>
<parameter name="p1">
<parameter_description> a clipping plane
</parameter_description>
</parameter>
<parameter name="p2">
<parameter_description> a clipping plane
</parameter_description>
</parameter>
<parameter name="p3">
<parameter_description> a clipping plane
</parameter_description>
</parameter>
<parameter name="p4">
<parameter_description> a clipping plane
</parameter_description>
</parameter>
<parameter name="p5">
<parameter_description> a clipping plane
</parameter_description>
</parameter>
</parameters>
<return> the initialized frustum

</return>
</function>

<function name="graphene_frustum_init_from_frustum">
<description>
Initializes the given #graphene_frustum_t using the clipping
planes of another #graphene_frustum_t.

Since: 1.2

</description>
<parameters>
<parameter name="f">
<parameter_description> the #graphene_frustum_t to initialize
</parameter_description>
</parameter>
<parameter name="src">
<parameter_description> a #graphene_frustum_t
</parameter_description>
</parameter>
</parameters>
<return> the initialized frustum

</return>
</function>

<function name="graphene_frustum_init_from_matrix">
<description>
Initializes a #graphene_frustum_t using the given @matrix.

Since: 1.2

</description>
<parameters>
<parameter name="f">
<parameter_description> a #graphene_frustum_t
</parameter_description>
</parameter>
<parameter name="matrix">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
</parameters>
<return> the initialized frustum

</return>
</function>

<function name="graphene_frustum_intersects_box">
<description>
Checks whether the given @box intersects a plane of
a #graphene_frustum_t.

Since: 1.2

</description>
<parameters>
<parameter name="f">
<parameter_description> a #graphene_frustum_t
</parameter_description>
</parameter>
<parameter name="box">
<parameter_description> a #graphene_box_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the box intersects the frustum

</return>
</function>

<function name="graphene_frustum_intersects_sphere">
<description>
Checks whether the given @sphere intersects a plane of
a #graphene_frustum_t.

Since: 1.2

</description>
<parameters>
<parameter name="f">
<parameter_description> a #graphene_frustum_t
</parameter_description>
</parameter>
<parameter name="sphere">
<parameter_description> a #graphene_sphere_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the sphere intersects the frustum

</return>
</function>

<function name="graphene_matrix_alloc">
<description>
Allocates a new #graphene_matrix_t.

Since: 1.0

</description>
<parameters>
</parameters>
<return> the newly allocated matrix

</return>
</function>

<function name="graphene_matrix_decompose">
<description>
Decomposes a transformation matrix into its component transformations.

The algorithm for decomposing a matrix is taken from the
[CSS3 Transforms specification](http://dev.w3.org/csswg/css-transforms/);
specifically, the decomposition code is based on the equivalent code
published in &quot;Graphics Gems II&quot;, edited by Jim Arvo, and
[available online](http://web.archive.org/web/20150512160205/http://tog.acm.org/resources/GraphicsGems/gemsii/unmatrix.c).


</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="translate">
<parameter_description> the translation vector
</parameter_description>
</parameter>
<parameter name="scale">
<parameter_description> the scale vector
</parameter_description>
</parameter>
<parameter name="rotate">
<parameter_description> the rotation quaternion
</parameter_description>
</parameter>
<parameter name="shear">
<parameter_description> the shear vector
</parameter_description>
</parameter>
<parameter name="perspective">
<parameter_description> the perspective vector
</parameter_description>
</parameter>
</parameters>
<return> `true` if the matrix could be decomposed
</return>
</function>

<function name="graphene_matrix_determinant">
<description>
Computes the determinant of the given matrix.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
</parameters>
<return> the value of the determinant

</return>
</function>

<function name="graphene_matrix_equal">
<description>
Checks whether the two given #graphene_matrix_t matrices are equal.

Since: 1.10

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the two matrices are equal, and `false` otherwise

</return>
</function>

<function name="graphene_matrix_equal_fast">
<description>
Checks whether the two given #graphene_matrix_t matrices are
byte-by-byte equal.

While this function is faster than graphene_matrix_equal(), it
can also return false negatives, so it should be used in
conjuction with either graphene_matrix_equal() or
graphene_matrix_near(). For instance:

|[&lt;!-- language=&quot;C&quot; --&gt;
if (graphene_matrix_equal_fast (a, b))
{
// matrices are definitely the same
}
else
{
if (graphene_matrix_equal (a, b))
// matrices contain the same values within an epsilon of FLT_EPSILON
else if (graphene_matrix_near (a, b, 0.0001))
// matrices contain the same values within an epsilon of 0.0001
else
// matrices are not equal
}
]|

Since: 1.10

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the matrices are equal. and `false` otherwise

</return>
</function>

<function name="graphene_matrix_free">
<description>
Frees the resources allocated by graphene_matrix_alloc().

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_matrix_get_row">
<description>
Retrieves the given row vector at @index_ inside a matrix.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="index_">
<parameter_description> the index of the row vector, between 0 and 3
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the #graphene_vec4_t
that is used to store the row vector
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_matrix_get_value">
<description>
Retrieves the value at the given @row and @col index.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="row">
<parameter_description> the row index
</parameter_description>
</parameter>
<parameter name="col">
<parameter_description> the column index
</parameter_description>
</parameter>
</parameters>
<return> the value at the given indices

</return>
</function>

<function name="graphene_matrix_get_x_scale">
<description>
Retrieves the scaling factor on the X axis in @m.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
</parameters>
<return> the value of the scaling factor

</return>
</function>

<function name="graphene_matrix_get_x_translation">
<description>
Retrieves the translation component on the X axis from @m.

Since: 1.10

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
</parameters>
<return> the translation component

</return>
</function>

<function name="graphene_matrix_get_y_scale">
<description>
Retrieves the scaling factor on the Y axis in @m.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
</parameters>
<return> the value of the scaling factor

</return>
</function>

<function name="graphene_matrix_get_y_translation">
<description>
Retrieves the translation component on the Y axis from @m.

Since: 1.10

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
</parameters>
<return> the translation component

</return>
</function>

<function name="graphene_matrix_get_z_scale">
<description>
Retrieves the scaling factor on the Z axis in @m.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
</parameters>
<return> the value of the scaling factor

</return>
</function>

<function name="graphene_matrix_get_z_translation">
<description>
Retrieves the translation component on the Z axis from @m.

Since: 1.10

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
</parameters>
<return> the translation component

</return>
</function>

<function name="graphene_matrix_init_from_2d">
<description>
Initializes a #graphene_matrix_t from the values of an affine
transformation matrix.

The arguments map to the following matrix layout:

|[&lt;!-- language=&quot;plain&quot; --&gt;
⎛ xx  yx ⎞   ⎛  a   b  0 ⎞
⎜ xy  yy ⎟ = ⎜  c   d  0 ⎟
⎝ x0  y0 ⎠   ⎝ tx  ty  1 ⎠
]|

This function can be used to convert between an affine matrix type
from other libraries and a #graphene_matrix_t.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="xx">
<parameter_description> the xx member
</parameter_description>
</parameter>
<parameter name="yx">
<parameter_description> the yx member
</parameter_description>
</parameter>
<parameter name="xy">
<parameter_description> the xy member
</parameter_description>
</parameter>
<parameter name="yy">
<parameter_description> the yy member
</parameter_description>
</parameter>
<parameter name="x_0">
<parameter_description> the x0 member
</parameter_description>
</parameter>
<parameter name="y_0">
<parameter_description> the y0 member
</parameter_description>
</parameter>
</parameters>
<return> the initialized matrix

</return>
</function>

<function name="graphene_matrix_init_from_float">
<description>
Initializes a #graphene_matrix_t with the given array of floating
point values.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="v">
<parameter_description> an array of at least 16 floating
point values
</parameter_description>
</parameter>
</parameters>
<return> the initialized matrix

</return>
</function>

<function name="graphene_matrix_init_from_matrix">
<description>
Initializes a #graphene_matrix_t using the values of the
given matrix.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="src">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
</parameters>
<return> the initialized matrix

</return>
</function>

<function name="graphene_matrix_init_from_vec4">
<description>
Initializes a #graphene_matrix_t with the given four row
vectors.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="v0">
<parameter_description> the first row vector
</parameter_description>
</parameter>
<parameter name="v1">
<parameter_description> the second row vector
</parameter_description>
</parameter>
<parameter name="v2">
<parameter_description> the third row vector
</parameter_description>
</parameter>
<parameter name="v3">
<parameter_description> the fourth row vector
</parameter_description>
</parameter>
</parameters>
<return> the initialized matrix

</return>
</function>

<function name="graphene_matrix_init_frustum">
<description>
Initializes a #graphene_matrix_t compatible with #graphene_frustum_t.

See also: graphene_frustum_init_from_matrix()

Since: 1.2

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="left">
<parameter_description> distance of the left clipping plane
</parameter_description>
</parameter>
<parameter name="right">
<parameter_description> distance of the right clipping plane
</parameter_description>
</parameter>
<parameter name="bottom">
<parameter_description> distance of the bottom clipping plane
</parameter_description>
</parameter>
<parameter name="top">
<parameter_description> distance of the top clipping plane
</parameter_description>
</parameter>
<parameter name="z_near">
<parameter_description> distance of the near clipping plane
</parameter_description>
</parameter>
<parameter name="z_far">
<parameter_description> distance of the far clipping plane
</parameter_description>
</parameter>
</parameters>
<return> the initialized matrix

</return>
</function>

<function name="graphene_matrix_init_identity">
<description>
Initializes a #graphene_matrix_t with the identity matrix.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
</parameters>
<return> the initialized matrix

</return>
</function>

<function name="graphene_matrix_init_look_at">
<description>
Initializes a #graphene_matrix_t so that it positions the &quot;camera&quot;
at the given @eye coordinates towards an object at the @center
coordinates. The top of the camera is aligned to the direction
of the @up vector.

Before the transform, the camera is assumed to be placed at the
origin, looking towards the negative Z axis, with the top side of
the camera facing in the direction of the Y axis and the right
side in the direction of the X axis.

In theory, one could use @m to transform a model of such a camera
into world-space. However, it is more common to use the inverse of
@m to transform another object from world coordinates to the view
coordinates of the camera. Typically you would then apply the
camera projection transform to get from view to screen
coordinates.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="eye">
<parameter_description> the vector describing the position to look from
</parameter_description>
</parameter>
<parameter name="center">
<parameter_description> the vector describing the position to look at
</parameter_description>
</parameter>
<parameter name="up">
<parameter_description> the vector describing the world's upward direction; usually,
this is the graphene_vec3_y_axis() vector
</parameter_description>
</parameter>
</parameters>
<return> the initialized matrix

</return>
</function>

<function name="graphene_matrix_init_ortho">
<description>
Initializes a #graphene_matrix_t with an orthographic projection.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="left">
<parameter_description> the left edge of the clipping plane
</parameter_description>
</parameter>
<parameter name="right">
<parameter_description> the right edge of the clipping plane
</parameter_description>
</parameter>
<parameter name="top">
<parameter_description> the top edge of the clipping plane
</parameter_description>
</parameter>
<parameter name="bottom">
<parameter_description> the bottom edge of the clipping plane
</parameter_description>
</parameter>
<parameter name="z_near">
<parameter_description> the distance of the near clipping plane
</parameter_description>
</parameter>
<parameter name="z_far">
<parameter_description> the distance of the far clipping plane
</parameter_description>
</parameter>
</parameters>
<return> the initialized matrix

</return>
</function>

<function name="graphene_matrix_init_perspective">
<description>
Initializes a #graphene_matrix_t with a perspective projection.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="fovy">
<parameter_description> the field of view angle, in degrees
</parameter_description>
</parameter>
<parameter name="aspect">
<parameter_description> the aspect value
</parameter_description>
</parameter>
<parameter name="z_near">
<parameter_description> the near Z plane
</parameter_description>
</parameter>
<parameter name="z_far">
<parameter_description> the far Z plane
</parameter_description>
</parameter>
</parameters>
<return> the initialized matrix

</return>
</function>

<function name="graphene_matrix_init_rotate">
<description>
Initializes @m to represent a rotation of @angle degrees on
the axis represented by the @axis vector.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="angle">
<parameter_description> the rotation angle, in degrees
</parameter_description>
</parameter>
<parameter name="axis">
<parameter_description> the axis vector as a #graphene_vec3_t
</parameter_description>
</parameter>
</parameters>
<return> the initialized matrix

</return>
</function>

<function name="graphene_matrix_init_scale">
<description>
Initializes a #graphene_matrix_t with the given scaling factors.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="x">
<parameter_description> the scale factor on the X axis
</parameter_description>
</parameter>
<parameter name="y">
<parameter_description> the scale factor on the Y axis
</parameter_description>
</parameter>
<parameter name="z">
<parameter_description> the scale factor on the Z axis
</parameter_description>
</parameter>
</parameters>
<return> the initialized matrix

</return>
</function>

<function name="graphene_matrix_init_skew">
<description>
Initializes a #graphene_matrix_t with a skew transformation
with the given factors.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="x_skew">
<parameter_description> skew factor, in radians, on the X axis
</parameter_description>
</parameter>
<parameter name="y_skew">
<parameter_description> skew factor, in radians, on the Y axis
</parameter_description>
</parameter>
</parameters>
<return> the initialized matrix

</return>
</function>

<function name="graphene_matrix_init_translate">
<description>
Initializes a #graphene_matrix_t with a translation to the
given coordinates.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="p">
<parameter_description> the translation coordinates
</parameter_description>
</parameter>
</parameters>
<return> the initialized matrix

</return>
</function>

<function name="graphene_matrix_interpolate">
<description>
Linearly interpolates the two given #graphene_matrix_t by
interpolating the decomposed transformations separately.

If either matrix cannot be reduced to their transformations
then the interpolation cannot be performed, and this function
will return an identity matrix.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="factor">
<parameter_description> the linear interpolation factor
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the
interpolated matrix
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_matrix_inverse">
<description>
Inverts the given matrix.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the
inverse matrix
</parameter_description>
</parameter>
</parameters>
<return> `true` if the matrix is invertible

</return>
</function>

<function name="graphene_matrix_is_2d">
<description>
Checks whether the given #graphene_matrix_t is compatible with an
a 2D affine transformation matrix.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the matrix is compatible with an affine
transformation matrix

</return>
</function>

<function name="graphene_matrix_is_backface_visible">
<description>
Checks whether a #graphene_matrix_t has a visible back face.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the back face of the matrix is visible

</return>
</function>

<function name="graphene_matrix_is_identity">
<description>
Checks whether the given #graphene_matrix_t is the identity matrix.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the matrix is the identity matrix

</return>
</function>

<function name="graphene_matrix_is_singular">
<description>
Checks whether a matrix is singular.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the matrix is singular

</return>
</function>

<function name="graphene_matrix_multiply">
<description>
Multiplies two #graphene_matrix_t.

Matrix multiplication is not commutative in general; the order of the factors matters.
The product of this multiplication is (@a × @b)

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the matrix
result
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_matrix_near">
<description>
Compares the two given #graphene_matrix_t matrices and checks
whether their values are within the given @epsilon of each
other.

Since: 1.10

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="epsilon">
<parameter_description> the threshold between the two matrices
</parameter_description>
</parameter>
</parameters>
<return> `true` if the two matrices are near each other, and
`false` otherwise

</return>
</function>

<function name="graphene_matrix_normalize">
<description>
Normalizes the given #graphene_matrix_t.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the normalized matrix
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_matrix_perspective">
<description>
Applies a perspective of @depth to the matrix.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="depth">
<parameter_description> the depth of the perspective
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the
perspective matrix
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_matrix_print">
<description>
Prints the contents of a matrix to the standard error stream.

This function is only useful for debugging; there are no guarantees
made on the format of the output.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> The matrix to print
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_matrix_project_point">
<description>
Projects a #graphene_point_t using the matrix @m.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="p">
<parameter_description> a #graphene_point_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the projected
point
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_matrix_project_rect">
<description>
Projects all corners of a #graphene_rect_t using the given matrix.

See also: graphene_matrix_project_point()

Since: 1.2

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="r">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the projected
rectangle
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_matrix_project_rect_bounds">
<description>
Projects a #graphene_rect_t using the given matrix.

The resulting rectangle is the axis aligned bounding rectangle capable
of fully containing the projected rectangle.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="r">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the projected
rectangle
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_matrix_rotate">
<description>
Adds a rotation transformation to @m, using the given @angle
and @axis vector.

This is the equivalent of calling graphene_matrix_init_rotate() and
then multiplying the matrix @m with the rotation matrix.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="angle">
<parameter_description> the rotation angle, in degrees
</parameter_description>
</parameter>
<parameter name="axis">
<parameter_description> the rotation axis, as a #graphene_vec3_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_matrix_rotate_euler">
<description>
Adds a rotation transformation to @m, using the given
#graphene_euler_t.

Since: 1.2

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="e">
<parameter_description> a rotation described by a #graphene_euler_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_matrix_rotate_quaternion">
<description>
Adds a rotation transformation to @m, using the given
#graphene_quaternion_t.

This is the equivalent of calling graphene_quaternion_to_matrix() and
then multiplying @m with the rotation matrix.

Since: 1.2

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="q">
<parameter_description> a rotation described by a #graphene_quaternion_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_matrix_rotate_x">
<description>
Adds a rotation transformation around the X axis to @m, using
the given @angle.

See also: graphene_matrix_rotate()

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="angle">
<parameter_description> the rotation angle, in degrees
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_matrix_rotate_y">
<description>
Adds a rotation transformation around the Y axis to @m, using
the given @angle.

See also: graphene_matrix_rotate()

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="angle">
<parameter_description> the rotation angle, in degrees
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_matrix_rotate_z">
<description>
Adds a rotation transformation around the Z axis to @m, using
the given @angle.

See also: graphene_matrix_rotate()

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="angle">
<parameter_description> the rotation angle, in degrees
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_matrix_scale">
<description>
Adds a scaling transformation to @m, using the three
given factors.

This is the equivalent of calling graphene_matrix_init_scale() and then
multiplying the matrix @m with the scale matrix.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="factor_x">
<parameter_description> scaling factor on the X axis
</parameter_description>
</parameter>
<parameter name="factor_y">
<parameter_description> scaling factor on the Y axis
</parameter_description>
</parameter>
<parameter name="factor_z">
<parameter_description> scaling factor on the Z axis
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_matrix_skew_xy">
<description>
Adds a skew of @factor on the X and Y axis to the given matrix.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="factor">
<parameter_description> skew factor
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_matrix_skew_xz">
<description>
Adds a skew of @factor on the X and Z axis to the given matrix.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="factor">
<parameter_description> skew factor
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_matrix_skew_yz">
<description>
Adds a skew of @factor on the Y and Z axis to the given matrix.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="factor">
<parameter_description> skew factor
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_matrix_to_2d">
<description>
Converts a #graphene_matrix_t to an affine transformation
matrix, if the given matrix is compatible.

The returned values have the following layout:

|[&lt;!-- language=&quot;plain&quot; --&gt;
⎛ xx  yx ⎞   ⎛  a   b  0 ⎞
⎜ xy  yy ⎟ = ⎜  c   d  0 ⎟
⎝ x0  y0 ⎠   ⎝ tx  ty  1 ⎠
]|

This function can be used to convert between a #graphene_matrix_t
and an affine matrix type from other libraries.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="xx">
<parameter_description> return location for the xx member
</parameter_description>
</parameter>
<parameter name="yx">
<parameter_description> return location for the yx member
</parameter_description>
</parameter>
<parameter name="xy">
<parameter_description> return location for the xy member
</parameter_description>
</parameter>
<parameter name="yy">
<parameter_description> return location for the yy member
</parameter_description>
</parameter>
<parameter name="x_0">
<parameter_description> return location for the x0 member
</parameter_description>
</parameter>
<parameter name="y_0">
<parameter_description> return location for the y0 member
</parameter_description>
</parameter>
</parameters>
<return> `true` if the matrix is compatible with an affine
transformation matrix

</return>
</function>

<function name="graphene_matrix_to_float">
<description>
Converts a #graphene_matrix_t to an array of floating point
values.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="v">
<parameter_description> return location
for an array of floating point values. The array must be capable
of holding at least 16 values.
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_matrix_transform_bounds">
<description>
Transforms each corner of a #graphene_rect_t using the given matrix @m.

The result is the axis aligned bounding rectangle containing the coplanar
quadrilateral.

See also: graphene_matrix_transform_point()

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="r">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the bounds
of the transformed rectangle
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_matrix_transform_box">
<description>
Transforms the vertices of a #graphene_box_t using the given matrix @m.

The result is the axis aligned bounding box containing the transformed
vertices.

Since: 1.2

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_box_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the bounds
of the transformed box
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_matrix_transform_point">
<description>
Transforms the given #graphene_point_t using the matrix @m.

Unlike graphene_matrix_transform_vec3(), this function will take into
account the fourth row vector of the #graphene_matrix_t when computing
the dot product of each row vector of the matrix.

See also: graphene_simd4x4f_point3_mul()

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="p">
<parameter_description> a #graphene_point_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the
transformed #graphene_point_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_matrix_transform_point3d">
<description>
Transforms the given #graphene_point3d_t using the matrix @m.

Unlike graphene_matrix_transform_vec3(), this function will take into
account the fourth row vector of the #graphene_matrix_t when computing
the dot product of each row vector of the matrix.

See also: graphene_simd4x4f_point3_mul()

Since: 1.2

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="p">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the result
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_matrix_transform_ray">
<description>
Transform a #graphene_ray_t using the given matrix @m.

Since: 1.4

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="r">
<parameter_description> a #graphene_ray_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the
transformed ray
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_matrix_transform_rect">
<description>
Transforms each corner of a #graphene_rect_t using the given matrix @m.

The result is a coplanar quadrilateral.

See also: graphene_matrix_transform_point()

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="r">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the
transformed quad
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_matrix_transform_sphere">
<description>
Transforms a #graphene_sphere_t using the given matrix @m. The
result is the bounding sphere containing the transformed sphere.

Since: 1.2

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="s">
<parameter_description> a #graphene_sphere_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the bounds
of the transformed sphere
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_matrix_transform_vec3">
<description>
Transforms the given #graphene_vec3_t using the matrix @m.

This function will multiply the X, Y, and Z row vectors of the matrix @m
with the corresponding components of the vector @v. The W row vector will
be ignored.

See also: graphene_simd4x4f_vec3_mul()

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="v">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for a #graphene_vec3_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_matrix_transform_vec4">
<description>
Transforms the given #graphene_vec4_t using the matrix @m.

See also: graphene_simd4x4f_vec4_mul()

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="v">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for a #graphene_vec4_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_matrix_translate">
<description>
Adds a translation transformation to @m using the coordinates
of the given #graphene_point3d_t.

This is the equivalent of calling graphene_matrix_init_translate() and
then multiplying @m with the translation matrix.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="pos">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_matrix_transpose">
<description>
Transposes the given matrix.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the
transposed matrix
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_matrix_unproject_point3d">
<description>
Unprojects the given @point using the @projection matrix and
a @modelview matrix.

Since: 1.2

</description>
<parameters>
<parameter name="projection">
<parameter_description> a #graphene_matrix_t for the projection matrix
</parameter_description>
</parameter>
<parameter name="modelview">
<parameter_description> a #graphene_matrix_t for the modelview matrix; this is
the inverse of the modelview used when projecting the point
</parameter_description>
</parameter>
<parameter name="point">
<parameter_description> a #graphene_point3d_t with the coordinates of the point
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the unprojected
point
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_matrix_untransform_bounds">
<description>
Undoes the transformation on the corners of a #graphene_rect_t using the
given matrix, within the given axis aligned rectangular @bounds.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="r">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
<parameter name="bounds">
<parameter_description> the bounds of the transformation
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the
untransformed rectangle
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_matrix_untransform_point">
<description>
Undoes the transformation of a #graphene_point_t using the
given matrix, within the given axis aligned rectangular @bounds.

Since: 1.0

</description>
<parameters>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="p">
<parameter_description> a #graphene_point_t
</parameter_description>
</parameter>
<parameter name="bounds">
<parameter_description> the bounds of the transformation
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the
untransformed point
</parameter_description>
</parameter>
</parameters>
<return> `true` if the point was successfully untransformed

</return>
</function>

<function name="graphene_plane_alloc">
<description>
Allocates a new #graphene_plane_t structure.

The contents of the returned structure are undefined.

Since: 1.2

</description>
<parameters>
</parameters>
<return> the newly allocated #graphene_plane_t.
Use graphene_plane_free() to free the resources allocated by
this function

</return>
</function>

<function name="graphene_plane_distance">
<description>
Computes the distance of @point from a #graphene_plane_t.

Since: 1.2

</description>
<parameters>
<parameter name="p">
<parameter_description> a #graphene_plane_t
</parameter_description>
</parameter>
<parameter name="point">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
</parameters>
<return> the distance of the given #graphene_point3d_t from the plane

</return>
</function>

<function name="graphene_plane_equal">
<description>
Checks whether the two given #graphene_plane_t are equal.

Since: 1.2

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_plane_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_plane_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the given planes are equal

</return>
</function>

<function name="graphene_plane_free">
<description>
Frees the resources allocated by graphene_plane_alloc().

Since: 1.2

</description>
<parameters>
<parameter name="p">
<parameter_description> a #graphene_plane_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_plane_get_constant">
<description>
Retrieves the distance along the normal vector of the
given #graphene_plane_t from the origin.

Since: 1.2

</description>
<parameters>
<parameter name="p">
<parameter_description> a #graphene_plane_t
</parameter_description>
</parameter>
</parameters>
<return> the constant value of the plane

</return>
</function>

<function name="graphene_plane_get_normal">
<description>
Retrieves the normal vector pointing towards the origin of the
given #graphene_plane_t.

Since: 1.2

</description>
<parameters>
<parameter name="p">
<parameter_description> a #graphene_plane_t
</parameter_description>
</parameter>
<parameter name="normal">
<parameter_description> return location for the normal vector
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_plane_init">
<description>
Initializes the given #graphene_plane_t using the given @normal vector
and @constant values.

Since: 1.2

</description>
<parameters>
<parameter name="p">
<parameter_description> the #graphene_plane_t to initialize
</parameter_description>
</parameter>
<parameter name="normal">
<parameter_description> a unit length normal vector defining the plane
pointing towards the origin; if unset, we use the X axis by default
</parameter_description>
</parameter>
<parameter name="constant">
<parameter_description> the distance from the origin to the plane along the
normal vector; the sign determines the half-space occupied by the
plane
</parameter_description>
</parameter>
</parameters>
<return> the initialized plane

</return>
</function>

<function name="graphene_plane_init_from_plane">
<description>
Initializes the given #graphene_plane_t using the normal
vector and constant of another #graphene_plane_t.

Since: 1.2

</description>
<parameters>
<parameter name="p">
<parameter_description> the #graphene_plane_t to initialize
</parameter_description>
</parameter>
<parameter name="src">
<parameter_description> a #graphene_plane_t
</parameter_description>
</parameter>
</parameters>
<return> the initialized plane

</return>
</function>

<function name="graphene_plane_init_from_point">
<description>
Initializes the given #graphene_plane_t using the given normal vector
and an arbitrary co-planar point.

Since: 1.2

</description>
<parameters>
<parameter name="p">
<parameter_description> the #graphene_plane_t to initialize
</parameter_description>
</parameter>
<parameter name="normal">
<parameter_description> a normal vector defining the plane pointing towards the origin
</parameter_description>
</parameter>
<parameter name="point">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
</parameters>
<return> the initialized plane

</return>
</function>

<function name="graphene_plane_init_from_points">
<description>
Initializes the given #graphene_plane_t using the 3 provided co-planar
points.

The winding order is counter-clockwise, and determines which direction
the normal vector will point.

Since: 1.2

</description>
<parameters>
<parameter name="p">
<parameter_description> the #graphene_plane_t to initialize
</parameter_description>
</parameter>
<parameter name="a">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
<parameter name="c">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
</parameters>
<return> the initialized plane

</return>
</function>

<function name="graphene_plane_init_from_vec4">
<description>
Initializes the given #graphene_plane_t using the components of
the given #graphene_vec4_t vector.

Since: 1.2

</description>
<parameters>
<parameter name="p">
<parameter_description> the #graphene_plane_t to initialize
</parameter_description>
</parameter>
<parameter name="src">
<parameter_description> a #graphene_vec4_t containing the normal vector in its first
three components, and the distance in its fourth component
</parameter_description>
</parameter>
</parameters>
<return> the initialized plane

</return>
</function>

<function name="graphene_plane_negate">
<description>
Negates the normal vector and constant of a #graphene_plane_t, effectively
mirroring the plane across the origin.

Since: 1.2

</description>
<parameters>
<parameter name="p">
<parameter_description> a #graphene_plane_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the negated plane
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_plane_normalize">
<description>
Normalizes the vector of the given #graphene_plane_t,
and adjusts the constant accordingly.

Since: 1.2

</description>
<parameters>
<parameter name="p">
<parameter_description> a #graphene_plane_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the normalized plane
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_plane_transform">
<description>
Transforms a #graphene_plane_t @p using the given @matrix
and @normal_matrix.

If @normal_matrix is %NULL, a transformation matrix for the plane
normal will be computed from @matrix. If you are transforming
multiple planes using the same @matrix it's recommended to compute
the normal matrix beforehand to avoid incurring in the cost of
recomputing it every time.

Since: 1.10

</description>
<parameters>
<parameter name="p">
<parameter_description> a #graphene_plane_t
</parameter_description>
</parameter>
<parameter name="matrix">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="normal_matrix">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> the transformed plane
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_point3d_alloc">
<description>
Allocates a #graphene_point3d_t structure.

Since: 1.0

</description>
<parameters>
</parameters>
<return> the newly allocated structure.
Use graphene_point3d_free() to free the resources
allocated by this function.

</return>
</function>

<function name="graphene_point3d_cross">
<description>
Computes the cross product of the two given #graphene_point3d_t.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the cross
product
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_point3d_distance">
<description>
Computes the distance between the two given #graphene_point3d_t.

Since: 1.4

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
<parameter name="delta">
<parameter_description> return location for the distance
components on the X, Y, and Z axis
</parameter_description>
</parameter>
</parameters>
<return> the distance between two points

</return>
</function>

<function name="graphene_point3d_dot">
<description>
Computes the dot product of the two given #graphene_point3d_t.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
</parameters>
<return> the value of the dot product

</return>
</function>

<function name="graphene_point3d_equal">
<description>
Checks whether two given points are equal.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the points are equal

</return>
</function>

<function name="graphene_point3d_free">
<description>
Frees the resources allocated via graphene_point3d_alloc().

Since: 1.0

</description>
<parameters>
<parameter name="p">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_point3d_init">
<description>
Initializes a #graphene_point3d_t with the given coordinates.

Since: 1.0

</description>
<parameters>
<parameter name="p">
<parameter_description> the #graphene_point3d_t to initialize
</parameter_description>
</parameter>
<parameter name="x">
<parameter_description> the X coordinate of the point
</parameter_description>
</parameter>
<parameter name="y">
<parameter_description> the Y coordinate of the point
</parameter_description>
</parameter>
<parameter name="z">
<parameter_description> the Z coordinate of the point
</parameter_description>
</parameter>
</parameters>
<return> the initialized #graphene_point3d_t

</return>
</function>

<function name="graphene_point3d_init_from_point">
<description>
Initializes a #graphene_point3d_t using the coordinates of
another #graphene_point3d_t.

Since: 1.0

</description>
<parameters>
<parameter name="p">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
<parameter name="src">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
</parameters>
<return> the initialized point

</return>
</function>

<function name="graphene_point3d_init_from_vec3">
<description>
Initializes a #graphene_point3d_t using the components
of a #graphene_vec3_t.

Since: 1.0

</description>
<parameters>
<parameter name="p">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
<parameter name="v">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
</parameters>
<return> the initialized #graphene_point3d_t

</return>
</function>

<function name="graphene_point3d_interpolate">
<description>
Linearly interpolates each component of @a and @b using the
provided @factor, and places the result in @res.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
<parameter name="factor">
<parameter_description> the interpolation factor
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> the return location for the
interpolated #graphene_point3d_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_point3d_length">
<description>
Computes the length of the vector represented by the
coordinates of the given #graphene_point3d_t.

Since: 1.0

</description>
<parameters>
<parameter name="p">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
</parameters>
<return> the length of the vector represented by the point

</return>
</function>

<function name="graphene_point3d_near">
<description>
Checks whether the two points are near each other, within
an @epsilon factor.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
<parameter name="epsilon">
<parameter_description> fuzzyness factor
</parameter_description>
</parameter>
</parameters>
<return> `true` if the points are near each other

</return>
</function>

<function name="graphene_point3d_normalize">
<description>
Computes the normalization of the vector represented by the
coordinates of the given #graphene_point3d_t.

Since: 1.0

</description>
<parameters>
<parameter name="p">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the normalized
#graphene_point3d_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_point3d_normalize_viewport">
<description>
Normalizes the coordinates of a #graphene_point3d_t using the
given viewport and clipping planes.

The coordinates of the resulting #graphene_point3d_t will be
in the [ -1, 1 ] range.

Since: 1.4

</description>
<parameters>
<parameter name="p">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
<parameter name="viewport">
<parameter_description> a #graphene_rect_t representing a viewport
</parameter_description>
</parameter>
<parameter name="z_near">
<parameter_description> the coordinate of the near clipping plane, or 0 for
the default near clipping plane
</parameter_description>
</parameter>
<parameter name="z_far">
<parameter_description> the coordinate of the far clipping plane, or 1 for the
default far clipping plane
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> the return location for the
normalized #graphene_point3d_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_point3d_scale">
<description>
Scales the coordinates of the given #graphene_point3d_t by
the given @factor.

Since: 1.0

</description>
<parameters>
<parameter name="p">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
<parameter name="factor">
<parameter_description> the scaling factor
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the scaled point
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_point3d_to_vec3">
<description>
Stores the coordinates of a #graphene_point3d_t into a
#graphene_vec3_t.

Since: 1.0

</description>
<parameters>
<parameter name="p">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
<parameter name="v">
<parameter_description> return location for a #graphene_vec3_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_point3d_zero">
<description>
Retrieves a constant point with all three coordinates set to 0.

Since: 1.0

</description>
<parameters>
</parameters>
<return> a zero point

</return>
</function>

<function name="graphene_point_alloc">
<description>
Allocates a new #graphene_point_t structure.

The coordinates of the returned point are (0, 0).

It's possible to chain this function with graphene_point_init()
or graphene_point_init_from_point(), e.g.:

|[&lt;!-- language=&quot;C&quot; --&gt;
graphene_point_t *
point_new (float x, float y)
{
return graphene_point_init (graphene_point_alloc (), x, y);
}

graphene_point_t *
point_copy (const graphene_point_t *p)
{
return graphene_point_init_from_point (graphene_point_alloc (), p);
}
]|

Since: 1.0

</description>
<parameters>
</parameters>
<return> the newly allocated #graphene_point_t.
Use graphene_point_free() to free the resources allocated by
this function.

</return>
</function>

<function name="graphene_point_distance">
<description>
Computes the distance between @a and @b.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_point_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_point_t
</parameter_description>
</parameter>
<parameter name="d_x">
<parameter_description> distance component on the X axis
</parameter_description>
</parameter>
<parameter name="d_y">
<parameter_description> distance component on the Y axis
</parameter_description>
</parameter>
</parameters>
<return> the distance between the two points

</return>
</function>

<function name="graphene_point_distance_squared">
<description>
Computes the squared distance between @a and @b.

Since: 1.12

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_point_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_point_t
</parameter_description>
</parameter>
</parameters>
<return> the distance between the two points, squared

</return>
</function>

<function name="graphene_point_equal">
<description>
Checks if the two points @a and @b point to the same
coordinates.

This function accounts for floating point fluctuations; if
you want to control the fuzziness of the match, you can use
graphene_point_near() instead.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_point_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_point_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the points have the same coordinates

</return>
</function>

<function name="graphene_point_free">
<description>
Frees the resources allocated by graphene_point_alloc().

Since: 1.0

</description>
<parameters>
<parameter name="p">
<parameter_description> a #graphene_point_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_point_init">
<description>
Initializes @p to the given @x and @y coordinates.

It's safe to call this function multiple times.

Since: 1.0

</description>
<parameters>
<parameter name="p">
<parameter_description> a #graphene_point_t
</parameter_description>
</parameter>
<parameter name="x">
<parameter_description> the X coordinate
</parameter_description>
</parameter>
<parameter name="y">
<parameter_description> the Y coordinate
</parameter_description>
</parameter>
</parameters>
<return> the initialized point

</return>
</function>

<function name="graphene_point_init_from_point">
<description>
Initializes @p with the same coordinates of @src.

Since: 1.0

</description>
<parameters>
<parameter name="p">
<parameter_description> a #graphene_point_t
</parameter_description>
</parameter>
<parameter name="src">
<parameter_description> the #graphene_point_t to use
</parameter_description>
</parameter>
</parameters>
<return> the initialized point

</return>
</function>

<function name="graphene_point_init_from_vec2">
<description>
Initializes @p with the coordinates inside the given #graphene_vec2_t.

Since: 1.4

</description>
<parameters>
<parameter name="p">
<parameter_description> the #graphene_point_t to initialize
</parameter_description>
</parameter>
<parameter name="src">
<parameter_description> a #graphene_vec2_t
</parameter_description>
</parameter>
</parameters>
<return> the initialized point

</return>
</function>

<function name="graphene_point_interpolate">
<description>
Linearly interpolates the coordinates of @a and @b using the
given @factor.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_point_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_point_t
</parameter_description>
</parameter>
<parameter name="factor">
<parameter_description> the linear interpolation factor
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the interpolated
point
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_point_near">
<description>
Checks whether the two points @a and @b are within
the threshold of @epsilon.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_point_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_point_t
</parameter_description>
</parameter>
<parameter name="epsilon">
<parameter_description> threshold between the two points
</parameter_description>
</parameter>
</parameters>
<return> `true` if the distance is within @epsilon

</return>
</function>

<function name="graphene_point_to_vec2">
<description>
Stores the coordinates of the given #graphene_point_t into a
#graphene_vec2_t.

Since: 1.4

</description>
<parameters>
<parameter name="p">
<parameter_description> a #graphene_point_t
</parameter_description>
</parameter>
<parameter name="v">
<parameter_description> return location for the vertex
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_point_zero">
<description>
Returns a point fixed at (0, 0).

Since: 1.0

</description>
<parameters>
</parameters>
<return> a fixed point

</return>
</function>

<function name="graphene_quad_alloc">
<description>
Allocates a new #graphene_quad_t instance.

The contents of the returned instance are undefined.

Since: 1.0

</description>
<parameters>
</parameters>
<return> the newly created #graphene_quad_t instance

</return>
</function>

<function name="graphene_quad_bounds">
<description>
Computes the bounding rectangle of @q and places it into @r.

Since: 1.0

</description>
<parameters>
<parameter name="q">
<parameter_description> a #graphene_quad_t
</parameter_description>
</parameter>
<parameter name="r">
<parameter_description> return location for a #graphene_rect_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_quad_contains">
<description>
Checks if the given #graphene_quad_t contains the given #graphene_point_t.

Since: 1.0

</description>
<parameters>
<parameter name="q">
<parameter_description> a #graphene_quad_t
</parameter_description>
</parameter>
<parameter name="p">
<parameter_description> a #graphene_point_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the point is inside the #graphene_quad_t

</return>
</function>

<function name="graphene_quad_free">
<description>
Frees the resources allocated by graphene_quad_alloc()

Since: 1.0

</description>
<parameters>
<parameter name="q">
<parameter_description> a #graphene_quad_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_quad_get_point">
<description>
Retrieves the point of a #graphene_quad_t at the given index.

Since: 1.0

</description>
<parameters>
<parameter name="q">
<parameter_description> a #graphene_quad_t
</parameter_description>
</parameter>
<parameter name="index_">
<parameter_description> the index of the point to retrieve
</parameter_description>
</parameter>
</parameters>
<return> a #graphene_point_t

</return>
</function>

<function name="graphene_quad_init">
<description>
Initializes a #graphene_quad_t with the given points.

Since: 1.0

</description>
<parameters>
<parameter name="q">
<parameter_description> the #graphene_quad_t to initialize
</parameter_description>
</parameter>
<parameter name="p1">
<parameter_description> the first point of the quadrilateral
</parameter_description>
</parameter>
<parameter name="p2">
<parameter_description> the second point of the quadrilateral
</parameter_description>
</parameter>
<parameter name="p3">
<parameter_description> the third point of the quadrilateral
</parameter_description>
</parameter>
<parameter name="p4">
<parameter_description> the fourth point of the quadrilateral
</parameter_description>
</parameter>
</parameters>
<return> the initialized #graphene_quad_t

</return>
</function>

<function name="graphene_quad_init_from_points">
<description>
Initializes a #graphene_quad_t using an array of points.

Since: 1.2

</description>
<parameters>
<parameter name="q">
<parameter_description> the #graphene_quad_t to initialize
</parameter_description>
</parameter>
<parameter name="points">
<parameter_description> an array of 4 #graphene_point_t
</parameter_description>
</parameter>
</parameters>
<return> the initialized #graphene_quad_t

</return>
</function>

<function name="graphene_quad_init_from_rect">
<description>
Initializes a #graphene_quad_t using the four corners of the
given #graphene_rect_t.

Since: 1.0

</description>
<parameters>
<parameter name="q">
<parameter_description> the #graphene_quad_t to initialize
</parameter_description>
</parameter>
<parameter name="r">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
</parameters>
<return> the initialized #graphene_quad_t

</return>
</function>

<function name="graphene_quaternion_add">
<description>
Adds two #graphene_quaternion_t @a and @b.

Since: 1.10

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_quaternion_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_quaternion_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> the result of the operation
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_quaternion_alloc">
<description>
Allocates a new #graphene_quaternion_t.

The contents of the returned value are undefined.

Since: 1.0

</description>
<parameters>
</parameters>
<return> the newly allocated #graphene_quaternion_t

</return>
</function>

<function name="graphene_quaternion_dot">
<description>
Computes the dot product of two #graphene_quaternion_t.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_quaternion_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_quaternion_t
</parameter_description>
</parameter>
</parameters>
<return> the value of the dot products

</return>
</function>

<function name="graphene_quaternion_equal">
<description>
Checks whether the given quaternions are equal.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_quaternion_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_quaternion_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the quaternions are equal

</return>
</function>

<function name="graphene_quaternion_free">
<description>
Releases the resources allocated by graphene_quaternion_alloc().

Since: 1.0

</description>
<parameters>
<parameter name="q">
<parameter_description> a #graphene_quaternion_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_quaternion_init">
<description>
Initializes a #graphene_quaternion_t using the given four values.

Since: 1.0

</description>
<parameters>
<parameter name="q">
<parameter_description> a #graphene_quaternion_t
</parameter_description>
</parameter>
<parameter name="x">
<parameter_description> the first component of the quaternion
</parameter_description>
</parameter>
<parameter name="y">
<parameter_description> the second component of the quaternion
</parameter_description>
</parameter>
<parameter name="z">
<parameter_description> the third component of the quaternion
</parameter_description>
</parameter>
<parameter name="w">
<parameter_description> the fourth component of the quaternion
</parameter_description>
</parameter>
</parameters>
<return> the initialized quaternion

</return>
</function>

<function name="graphene_quaternion_init_from_angle_vec3">
<description>
Initializes a #graphene_quaternion_t using an @angle on a
specific @axis.

Since: 1.0

</description>
<parameters>
<parameter name="q">
<parameter_description> a #graphene_quaternion_t
</parameter_description>
</parameter>
<parameter name="angle">
<parameter_description> the rotation on a given axis, in degrees
</parameter_description>
</parameter>
<parameter name="axis">
<parameter_description> the axis of rotation, expressed as a vector
</parameter_description>
</parameter>
</parameters>
<return> the initialized quaternion

</return>
</function>

<function name="graphene_quaternion_init_from_angles">
<description>
Initializes a #graphene_quaternion_t using the values of
the [Euler angles](http://en.wikipedia.org/wiki/Euler_angles)
on each axis.

See also: graphene_quaternion_init_from_euler()

Since: 1.0

</description>
<parameters>
<parameter name="q">
<parameter_description> a #graphene_quaternion_t
</parameter_description>
</parameter>
<parameter name="deg_x">
<parameter_description> rotation angle on the X axis (yaw), in degrees
</parameter_description>
</parameter>
<parameter name="deg_y">
<parameter_description> rotation angle on the Y axis (pitch), in degrees
</parameter_description>
</parameter>
<parameter name="deg_z">
<parameter_description> rotation angle on the Z axis (roll), in degrees
</parameter_description>
</parameter>
</parameters>
<return> the initialized quaternion

</return>
</function>

<function name="graphene_quaternion_init_from_euler">
<description>
Initializes a #graphene_quaternion_t using the given #graphene_euler_t.

Since: 1.2

</description>
<parameters>
<parameter name="q">
<parameter_description> the #graphene_quaternion_t to initialize
</parameter_description>
</parameter>
<parameter name="e">
<parameter_description> a #graphene_euler_t
</parameter_description>
</parameter>
</parameters>
<return> the initialized #graphene_quaternion_t

</return>
</function>

<function name="graphene_quaternion_init_from_matrix">
<description>
Initializes a #graphene_quaternion_t using the rotation components
of a transformation matrix.

Since: 1.0

</description>
<parameters>
<parameter name="q">
<parameter_description> a #graphene_quaternion_t
</parameter_description>
</parameter>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
</parameters>
<return> the initialized quaternion

</return>
</function>

<function name="graphene_quaternion_init_from_quaternion">
<description>
Initializes a #graphene_quaternion_t with the values from @src.

Since: 1.0

</description>
<parameters>
<parameter name="q">
<parameter_description> a #graphene_quaternion_t
</parameter_description>
</parameter>
<parameter name="src">
<parameter_description> a #graphene_quaternion_t
</parameter_description>
</parameter>
</parameters>
<return> the initialized quaternion

</return>
</function>

<function name="graphene_quaternion_init_from_radians">
<description>
Initializes a #graphene_quaternion_t using the values of
the [Euler angles](http://en.wikipedia.org/wiki/Euler_angles)
on each axis.

See also: graphene_quaternion_init_from_euler()

Since: 1.0

</description>
<parameters>
<parameter name="q">
<parameter_description> a #graphene_quaternion_t
</parameter_description>
</parameter>
<parameter name="rad_x">
<parameter_description> rotation angle on the X axis (yaw), in radians
</parameter_description>
</parameter>
<parameter name="rad_y">
<parameter_description> rotation angle on the Y axis (pitch), in radians
</parameter_description>
</parameter>
<parameter name="rad_z">
<parameter_description> rotation angle on the Z axis (roll), in radians
</parameter_description>
</parameter>
</parameters>
<return> the initialized quaternion

</return>
</function>

<function name="graphene_quaternion_init_from_vec4">
<description>
Initializes a #graphene_quaternion_t with the values from @src.

Since: 1.0

</description>
<parameters>
<parameter name="q">
<parameter_description> a #graphene_quaternion_t
</parameter_description>
</parameter>
<parameter name="src">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
</parameters>
<return> the initialized quaternion

</return>
</function>

<function name="graphene_quaternion_init_identity">
<description>
Initializes a #graphene_quaternion_t using the identity
transformation.

Since: 1.0

</description>
<parameters>
<parameter name="q">
<parameter_description> a #graphene_quaternion_t
</parameter_description>
</parameter>
</parameters>
<return> the initialized quaternion

</return>
</function>

<function name="graphene_quaternion_invert">
<description>
Inverts a #graphene_quaternion_t, and returns the conjugate
quaternion of @q.

Since: 1.0

</description>
<parameters>
<parameter name="q">
<parameter_description> a #graphene_quaternion_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the inverted
quaternion
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_quaternion_multiply">
<description>
Multiplies two #graphene_quaternion_t @a and @b.

Since: 1.10

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_quaternion_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_quaternion_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> the result of the operation
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_quaternion_normalize">
<description>
Normalizes a #graphene_quaternion_t.

Since: 1.0

</description>
<parameters>
<parameter name="q">
<parameter_description> a #graphene_quaternion_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the normalized
quaternion
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_quaternion_scale">
<description>
Scales all the elements of a #graphene_quaternion_t @q using
the given scalar factor.

Since: 1.10

</description>
<parameters>
<parameter name="q">
<parameter_description> a #graphene_quaternion_t
</parameter_description>
</parameter>
<parameter name="factor">
<parameter_description> a scaling factor
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> the result of the operation
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_quaternion_slerp">
<description>
Interpolates between the two given quaternions using a spherical
linear interpolation, or [SLERP](http://en.wikipedia.org/wiki/Slerp),
using the given interpolation @factor.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_quaternion_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_quaternion_t
</parameter_description>
</parameter>
<parameter name="factor">
<parameter_description> the linear interpolation factor
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the interpolated
quaternion
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_quaternion_to_angle_vec3">
<description>
Converts a quaternion into an @angle, @axis pair.

Since: 1.0

</description>
<parameters>
<parameter name="q">
<parameter_description> a #graphene_quaternion_t
</parameter_description>
</parameter>
<parameter name="angle">
<parameter_description> return location for the angle, in degrees
</parameter_description>
</parameter>
<parameter name="axis">
<parameter_description> return location for the rotation axis
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_quaternion_to_angles">
<description>
Converts a #graphene_quaternion_t to its corresponding rotations
on the [Euler angles](http://en.wikipedia.org/wiki/Euler_angles)
on each axis.

Since: 1.2

</description>
<parameters>
<parameter name="q">
<parameter_description> a #graphene_quaternion_t
</parameter_description>
</parameter>
<parameter name="deg_x">
<parameter_description> return location for the rotation angle on
the X axis (yaw), in degrees
</parameter_description>
</parameter>
<parameter name="deg_y">
<parameter_description> return location for the rotation angle on
the Y axis (pitch), in degrees
</parameter_description>
</parameter>
<parameter name="deg_z">
<parameter_description> return location for the rotation angle on
the Z axis (roll), in degrees
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_quaternion_to_matrix">
<description>
Converts a quaternion into a transformation matrix expressing
the rotation defined by the #graphene_quaternion_t.

Since: 1.0

</description>
<parameters>
<parameter name="q">
<parameter_description> a #graphene_quaternion_t
</parameter_description>
</parameter>
<parameter name="m">
<parameter_description> a #graphene_matrix_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_quaternion_to_radians">
<description>
Converts a #graphene_quaternion_t to its corresponding rotations
on the [Euler angles](http://en.wikipedia.org/wiki/Euler_angles)
on each axis.

Since: 1.2

</description>
<parameters>
<parameter name="q">
<parameter_description> a #graphene_quaternion_t
</parameter_description>
</parameter>
<parameter name="rad_x">
<parameter_description> return location for the rotation angle on
the X axis (yaw), in radians
</parameter_description>
</parameter>
<parameter name="rad_y">
<parameter_description> return location for the rotation angle on
the Y axis (pitch), in radians
</parameter_description>
</parameter>
<parameter name="rad_z">
<parameter_description> return location for the rotation angle on
the Z axis (roll), in radians
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_quaternion_to_vec4">
<description>
Copies the components of a #graphene_quaternion_t into a
#graphene_vec4_t.

Since: 1.0

</description>
<parameters>
<parameter name="q">
<parameter_description> a #graphene_quaternion_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for a
#graphene_vec4_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_ray_alloc">
<description>
Allocates a new #graphene_ray_t structure.

The contents of the returned structure are undefined.

Since: 1.4

</description>
<parameters>
</parameters>
<return> the newly allocated #graphene_ray_t.
Use graphene_ray_free() to free the resources allocated by
this function

</return>
</function>

<function name="graphene_ray_equal">
<description>
Checks whether the two given #graphene_ray_t are equal.

Since: 1.4

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_ray_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_ray_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the given rays are equal

</return>
</function>

<function name="graphene_ray_free">
<description>
Frees the resources allocated by graphene_ray_alloc().

Since: 1.4

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_ray_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_ray_get_closest_point_to_point">
<description>
Computes the point on the given #graphene_ray_t that is closest to the
given point @p.

Since: 1.4

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_ray_t
</parameter_description>
</parameter>
<parameter name="p">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the closest point3d
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_ray_get_direction">
<description>
Retrieves the direction of the given #graphene_ray_t.

Since: 1.4

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_ray_t
</parameter_description>
</parameter>
<parameter name="direction">
<parameter_description> return location for the direction
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_ray_get_distance_to_plane">
<description>
Computes the distance of the origin of the given #graphene_ray_t from the
given plane.

If the ray does not intersect the plane, this function returns `INFINITY`.

Since: 1.4

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_ray_t
</parameter_description>
</parameter>
<parameter name="p">
<parameter_description> a #graphene_plane_t
</parameter_description>
</parameter>
</parameters>
<return> the distance of the origin of the ray from the plane

</return>
</function>

<function name="graphene_ray_get_distance_to_point">
<description>
Computes the distance of the closest approach between the
given #graphene_ray_t @r and the point @p.

The closest approach to a ray from a point is the distance
between the point and the projection of the point on the
ray itself.

Since: 1.4

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_ray_t
</parameter_description>
</parameter>
<parameter name="p">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
</parameters>
<return> the distance of the point

</return>
</function>

<function name="graphene_ray_get_origin">
<description>
Retrieves the origin of the given #graphene_ray_t.

Since: 1.4

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_ray_t
</parameter_description>
</parameter>
<parameter name="origin">
<parameter_description> return location for the origin
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_ray_get_position_at">
<description>
Retrieves the coordinates of a point at the distance @t along the
given #graphene_ray_t.

Since: 1.4

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_ray_t
</parameter_description>
</parameter>
<parameter name="t">
<parameter_description> the distance along the ray
</parameter_description>
</parameter>
<parameter name="position">
<parameter_description> return location for the position
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_ray_init">
<description>
Initializes the given #graphene_ray_t using the given @origin
and @direction values.

Since: 1.4

</description>
<parameters>
<parameter name="r">
<parameter_description> the #graphene_ray_t to initialize
</parameter_description>
</parameter>
<parameter name="origin">
<parameter_description> the origin of the ray
</parameter_description>
</parameter>
<parameter name="direction">
<parameter_description> the direction vector
</parameter_description>
</parameter>
</parameters>
<return> the initialized ray

</return>
</function>

<function name="graphene_ray_init_from_ray">
<description>
Initializes the given #graphene_ray_t using the origin and direction
values of another #graphene_ray_t.

Since: 1.4

</description>
<parameters>
<parameter name="r">
<parameter_description> the #graphene_ray_t to initialize
</parameter_description>
</parameter>
<parameter name="src">
<parameter_description> a #graphene_ray_t
</parameter_description>
</parameter>
</parameters>
<return> the initialized ray

</return>
</function>

<function name="graphene_ray_init_from_vec3">
<description>
Initializes the given #graphene_ray_t using the given vectors.

Since: 1.4

</description>
<parameters>
<parameter name="r">
<parameter_description> the #graphene_ray_t to initialize
</parameter_description>
</parameter>
<parameter name="origin">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="direction">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
</parameters>
<return> the initialized ray

</return>
</function>

<function name="graphene_ray_intersect_box">
<description>
Intersects the given #graphene_ray_t @r with the given
#graphene_box_t @b.

Since: 1.10

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_ray_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_box_t
</parameter_description>
</parameter>
<parameter name="t_out">
<parameter_description> the distance of the point on the ray that intersects the box
</parameter_description>
</parameter>
</parameters>
<return> the type of intersection

</return>
</function>

<function name="graphene_ray_intersect_sphere">
<description>
Intersects the given #graphene_ray_t @r with the given
#graphene_sphere_t @s.

Since: 1.10

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_ray_t
</parameter_description>
</parameter>
<parameter name="s">
<parameter_description> a #graphene_sphere_t
</parameter_description>
</parameter>
<parameter name="t_out">
<parameter_description> the distance of the point on the ray that intersects the sphere
</parameter_description>
</parameter>
</parameters>
<return> the type of intersection

</return>
</function>

<function name="graphene_ray_intersect_triangle">
<description>
Intersects the given #graphene_ray_t @r with the given
#graphene_triangle_t @t.

Since: 1.10

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_ray_t
</parameter_description>
</parameter>
<parameter name="t">
<parameter_description> a #graphene_triangle_t
</parameter_description>
</parameter>
<parameter name="t_out">
<parameter_description> the distance of the point on the ray that intersects the triangle
</parameter_description>
</parameter>
</parameters>
<return> the type of intersection

</return>
</function>

<function name="graphene_ray_intersects_box">
<description>
Checks whether the given #graphene_ray_t @r intersects the
given #graphene_box_t @b.

See also: graphene_ray_intersect_box()

Since: 1.10

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_ray_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_box_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the ray intersects the box

</return>
</function>

<function name="graphene_ray_intersects_sphere">
<description>
Checks if the given #graphene_ray_t @r intersects the
given #graphene_sphere_t @s.

See also: graphene_ray_intersect_sphere()

Since: 1.10

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_ray_t
</parameter_description>
</parameter>
<parameter name="s">
<parameter_description> a #graphene_sphere_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the ray intersects the sphere

</return>
</function>

<function name="graphene_ray_intersects_triangle">
<description>
Checks whether the given #graphene_ray_t @r intersects the
given #graphene_triangle_t @b.

See also: graphene_ray_intersect_triangle()

Since: 1.10

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_ray_t
</parameter_description>
</parameter>
<parameter name="t">
<parameter_description> a #graphene_triangle_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the ray intersects the triangle

</return>
</function>

<function name="graphene_rect_alloc">
<description>
Allocates a new #graphene_rect_t.

The contents of the returned rectangle are undefined.

Since: 1.0

</description>
<parameters>
</parameters>
<return> the newly allocated rectangle

</return>
</function>

<function name="graphene_rect_contains_point">
<description>
Checks whether a #graphene_rect_t contains the given coordinates.

Since: 1.0

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
<parameter name="p">
<parameter_description> a #graphene_point_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the rectangle contains the point

</return>
</function>

<function name="graphene_rect_contains_rect">
<description>
Checks whether a #graphene_rect_t fully contains the given
rectangle.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the rectangle @a fully contains @b

</return>
</function>

<function name="graphene_rect_equal">
<description>
Checks whether the two given rectangle are equal.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the rectangles are equal

</return>
</function>

<function name="graphene_rect_expand">
<description>
Expands a #graphene_rect_t to contain the given #graphene_point_t.

Since: 1.4

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
<parameter name="p">
<parameter_description> a #graphene_point_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the expanded rectangle
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_rect_free">
<description>
Frees the resources allocated by graphene_rect_alloc().

Since: 1.0

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_rect_get_area">
<description>
Compute the area of given normalized rectangle.

Since: 1.10

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
</parameters>
<return> the area of the normalized rectangle

</return>
</function>

<function name="graphene_rect_get_bottom_left">
<description>
Retrieves the coordinates of the bottom-left corner of the given rectangle.

Since: 1.0

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
<parameter name="p">
<parameter_description> return location for a #graphene_point_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_rect_get_bottom_right">
<description>
Retrieves the coordinates of the bottom-right corner of the given rectangle.

Since: 1.0

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
<parameter name="p">
<parameter_description> return location for a #graphene_point_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_rect_get_center">
<description>
Retrieves the coordinates of the center of the given rectangle.

Since: 1.0

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
<parameter name="p">
<parameter_description> return location for a #graphene_point_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_rect_get_height">
<description>
Retrieves the normalized height of the given rectangle.

Since: 1.0

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
</parameters>
<return> the normalized height of the rectangle

</return>
</function>

<function name="graphene_rect_get_top_left">
<description>
Retrieves the coordinates of the top-left corner of the given rectangle.

Since: 1.0

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
<parameter name="p">
<parameter_description> return location for a #graphene_point_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_rect_get_top_right">
<description>
Retrieves the coordinates of the top-right corner of the given rectangle.

Since: 1.0

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
<parameter name="p">
<parameter_description> return location for a #graphene_point_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_rect_get_vertices">
<description>
Computes the four vertices of a #graphene_rect_t.

Since: 1.4

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
<parameter name="vertices">
<parameter_description> return location for an array
of 4 #graphene_vec2_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_rect_get_width">
<description>
Retrieves the normalized width of the given rectangle.

Since: 1.0

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
</parameters>
<return> the normalized width of the rectangle

</return>
</function>

<function name="graphene_rect_get_x">
<description>
Retrieves the normalized X coordinate of the origin of the given
rectangle.

Since: 1.0

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
</parameters>
<return> the normalized X coordinate of the rectangle

</return>
</function>

<function name="graphene_rect_get_y">
<description>
Retrieves the normalized Y coordinate of the origin of the given
rectangle.

Since: 1.0

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
</parameters>
<return> the normalized Y coordinate of the rectangle

</return>
</function>

<function name="graphene_rect_init">
<description>
Initializes the given #graphene_rect_t with the given values.

This function will implicitly normalize the #graphene_rect_t
before returning.

Since: 1.0

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
<parameter name="x">
<parameter_description> the X coordinate of the @graphene_rect_t.origin
</parameter_description>
</parameter>
<parameter name="y">
<parameter_description> the Y coordinate of the @graphene_rect_t.origin
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> the width of the @graphene_rect_t.size
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> the height of the @graphene_rect_t.size
</parameter_description>
</parameter>
</parameters>
<return> the initialized rectangle

</return>
</function>

<function name="graphene_rect_init_from_rect">
<description>
Initializes @r using the given @src rectangle.

This function will implicitly normalize the #graphene_rect_t
before returning.

Since: 1.0

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
<parameter name="src">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
</parameters>
<return> the initialized rectangle

</return>
</function>

<function name="graphene_rect_inset">
<description>
Changes the given rectangle to be smaller, or larger depending on the
given inset parameters.

To create an inset rectangle, use positive @d_x or @d_y values; to
create a larger, encompassing rectangle, use negative @d_x or @d_y
values.

The origin of the rectangle is offset by @d_x and @d_y, while the size
is adjusted by `(2 * @d_x, 2 * @d_y)`. If @d_x and @d_y are positive
values, the size of the rectangle is decreased; if @d_x and @d_y are
negative values, the size of the rectangle is increased.

If the size of the resulting inset rectangle has a negative width or
height then the size will be set to zero.

Since: 1.0

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
<parameter name="d_x">
<parameter_description> the horizontal inset
</parameter_description>
</parameter>
<parameter name="d_y">
<parameter_description> the vertical inset
</parameter_description>
</parameter>
</parameters>
<return> the inset rectangle

</return>
</function>

<function name="graphene_rect_inset_r">
<description>
Changes the given rectangle to be smaller, or larger depending on the
given inset parameters.

To create an inset rectangle, use positive @d_x or @d_y values; to
create a larger, encompassing rectangle, use negative @d_x or @d_y
values.

The origin of the rectangle is offset by @d_x and @d_y, while the size
is adjusted by `(2 * @d_x, 2 * @d_y)`. If @d_x and @d_y are positive
values, the size of the rectangle is decreased; if @d_x and @d_y are
negative values, the size of the rectangle is increased.

If the size of the resulting inset rectangle has a negative width or
height then the size will be set to zero.

Since: 1.4

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
<parameter name="d_x">
<parameter_description> the horizontal inset
</parameter_description>
</parameter>
<parameter name="d_y">
<parameter_description> the vertical inset
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the inset rectangle
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_rect_interpolate">
<description>
Linearly interpolates the origin and size of the two given
rectangles.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
<parameter name="factor">
<parameter_description> the linear interpolation factor
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the
interpolated rectangle
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_rect_intersection">
<description>
Computes the intersection of the two given rectangles.

![](rectangle-intersection.png)

The intersection in the image above is the blue outline.

If the two rectangles do not intersect, @res will contain
a degenerate rectangle with origin in (0, 0) and a size of 0.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for
a #graphene_rect_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the two rectangles intersect

</return>
</function>

<function name="graphene_rect_normalize">
<description>
Normalizes the passed rectangle.

This function ensures that the size of the rectangle is made of
positive values, and that the origin is the top-left corner of
the rectangle.

Since: 1.0

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
</parameters>
<return> the normalized rectangle

</return>
</function>

<function name="graphene_rect_normalize_r">
<description>
Normalizes the passed rectangle.

This function ensures that the size of the rectangle is made of
positive values, and that the origin is in the top-left corner
of the rectangle.

Since: 1.4

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> the return location for the
normalized rectangle
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_rect_offset">
<description>
Offsets the origin by @d_x and @d_y.

The size of the rectangle is unchanged.

Since: 1.0

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
<parameter name="d_x">
<parameter_description> the horizontal offset
</parameter_description>
</parameter>
<parameter name="d_y">
<parameter_description> the vertical offset
</parameter_description>
</parameter>
</parameters>
<return> the offset rectangle

</return>
</function>

<function name="graphene_rect_offset_r">
<description>
Offsets the origin of the given rectangle by @d_x and @d_y.

The size of the rectangle is left unchanged.

Since: 1.4

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
<parameter name="d_x">
<parameter_description> the horizontal offset
</parameter_description>
</parameter>
<parameter name="d_y">
<parameter_description> the vertical offset
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the offset
rectangle
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_rect_round">
<description>
Rounds the origin and size of the given rectangle to
their nearest integer values; the rounding is guaranteed
to be large enough to have an area bigger or equal to the
original rectangle, but might not fully contain its extents.
Use graphene_rect_round_extents() in case you need to round
to a rectangle that covers fully the original one.

This function is the equivalent of calling `floor` on
the coordinates of the origin, and `ceil` on the size.

Since: 1.4

Deprecated: 1.10: Use graphene_rect_round_extents() instead

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the
rounded rectangle
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_rect_round_extents">
<description>
Rounds the origin of the given rectangle to its nearest
integer value and and recompute the size so that the
rectangle is large enough to contain all the conrners
of the original rectangle.

This function is the equivalent of calling `floor` on
the coordinates of the origin, and recomputing the size
calling `ceil` on the bottom-right coordinates.

If you want to be sure that the rounded rectangle
completely covers the area that was covered by the
original rectangle — i.e. you want to cover the area
including all its corners — this function will make sure
that the size is recomputed taking into account the ceiling
of the coordinates of the bottom-right corner.
If the difference between the original coordinates and the
coordinates of the rounded rectangle is greater than the
difference between the original size and and the rounded
size, then the move of the origin would not be compensated
by a move in the anti-origin, leaving the corners of the
original rectangle outside the rounded one.

Since: 1.10

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the
rectangle with rounded extents
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_rect_round_to_pixel">
<description>
Rounds the origin and the size of the given rectangle to
their nearest integer values; the rounding is guaranteed
to be large enough to contain the original rectangle.

Since: 1.0

Deprecated: 1.4: Use graphene_rect_round() instead

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
</parameters>
<return> the pixel-aligned rectangle.

</return>
</function>

<function name="graphene_rect_scale">
<description>
Scales the size and origin of a rectangle horizontaly by @s_h,
and vertically by @s_v. The result @res is normalized.

Since: 1.10

</description>
<parameters>
<parameter name="r">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
<parameter name="s_h">
<parameter_description> horizontal scale factor
</parameter_description>
</parameter>
<parameter name="s_v">
<parameter_description> vertical scale factor
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the
scaled rectangle
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_rect_union">
<description>
Computes the union of the two given rectangles.

![](rectangle-union.png)

The union in the image above is the blue outline.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_rect_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for a #graphene_rect_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_rect_zero">
<description>
Returns a degenerate rectangle with origin fixed at (0, 0) and
a size of 0, 0.

Since: 1.4

</description>
<parameters>
</parameters>
<return> a fixed rectangle

</return>
</function>

<function name="graphene_simd4f_add">
<description>
Creates a new #graphene_simd4f_t vector where each
component is the sum of the respective components
in @a and @b.

|[&lt;!-- lanugage=&quot;plain&quot; --&gt;
{
.x = a.x + b.x,
.y = a.y + b.y,
.z = a.z + b.z,
.w = a.w + b.w
}
]|

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> the sum vector

</return>
</function>

<function name="graphene_simd4f_ceil">
<description>
Rounds each component of the vector @s up to the nearest integer value.

Since: 1.12

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> the rounded up vector

</return>
</function>

<function name="graphene_simd4f_cmp_eq">
<description>
Checks if the two given #graphene_simd4f_t are equal.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the values of the vectors are equal

</return>
</function>

<function name="graphene_simd4f_cmp_ge">
<description>
Compares two #graphene_simd4f_t and checks if all components
of the vector @a are greater than or equal to the respective
components of the vector @b.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if vector @a is greater than or equal to @b

</return>
</function>

<function name="graphene_simd4f_cmp_gt">
<description>
Compares two #graphene_simd4f_t and checks if all components
of the vector @a are greater than the respective components of
the vector @b.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if vector @a is greater than @b

</return>
</function>

<function name="graphene_simd4f_cmp_le">
<description>
Compares two #graphene_simd4f_t and checks if all components
of the vector @a are less than or equal to the respective components
of the vector @b.

Since: 1.2

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if vector @a is less than or equal to @b

</return>
</function>

<function name="graphene_simd4f_cmp_lt">
<description>
Compares two #graphene_simd4f_t and checks if all components
of the vector @a are less than the respective components of
the vector @b.

Since: 1.2

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if vector @a is less than @b

</return>
</function>

<function name="graphene_simd4f_cmp_neq">
<description>
Checks if the two given #graphene_simd4f_t are not equal.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the values of the vectors are not equal

</return>
</function>

<function name="graphene_simd4f_cross3">
<description>
Creates a new #graphene_simd4f_t vector where each
component contains the 3-way cross product of the
given @a and @b vectors.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> the cross3 vector

</return>
</function>

<function name="graphene_simd4f_div">
<description>
Creates a new #graphene_simd4f_t vector where each
component is the division of the respective components
in @a and @b.

|[&lt;!-- lanugage=&quot;plain&quot; --&gt;
{
.x = a.x / b.x,
.y = a.y / b.y,
.z = a.z / b.z,
.w = a.w / b.w
}
]|

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> the division vector

</return>
</function>

<function name="graphene_simd4f_dot3">
<description>
Computes the dot product of the first three components of the
two given #graphene_simd4f_t.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> a vector whose components are all set to the
dot product of the components of the two operands

</return>
</function>

<function name="graphene_simd4f_dot3_scalar">
<description>
Computes the dot product of the first three components of the
two given #graphene_simd4f_t.

Since: 1.4

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> the dot product of the two vectors, as a scalar value.

</return>
</function>

<function name="graphene_simd4f_dup_2f">
<description>
Copies the contents of a #graphene_simd4f_t into an
array of floating points.

Since: 1.0

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
<parameter name="v">
<parameter_description> return location for an
array of at least 2 floating point values
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_simd4f_dup_3f">
<description>
Copies the contents of a #graphene_simd4f_t into an
array of floating points.

Since: 1.0

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
<parameter name="v">
<parameter_description> return location for an
array of at least 3 floating point values
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_simd4f_dup_4f">
<description>
Copies the contents of a #graphene_simd4f_t into an
array of floating points.

Since: 1.0

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
<parameter name="v">
<parameter_description> return location for an
array of at least 4 floating point values
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_simd4f_flip_sign_0101">
<description>
Flips the signs of the second and fourth components of
the given vector @s.

Since: 1.0

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> the new vector, with the changed signs

</return>
</function>

<function name="graphene_simd4f_flip_sign_1010">
<description>
Flips the signs of the first and third components of
the given vector @s.

Since: 1.0

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> the new vector, with the changed signs

</return>
</function>

<function name="graphene_simd4f_floor">
<description>
Rounds each component of the vector @s down to the nearest integer value.

Since: 1.12

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> the rounded down vector

</return>
</function>

<function name="graphene_simd4f_get">
<description>
Retrieves the given component of a #graphene_simd4f_t.

Since: 1.2

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
<parameter name="i">
<parameter_description> the index of the component to retrieve
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_simd4f_get_w">
<description>
Retrieves the fourth component of @s.

Since: 1.0

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> the fourth component of a #graphene_simd4f_t

</return>
</function>

<function name="graphene_simd4f_get_x">
<description>
Retrieves the first component of @s.

Since: 1.0

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> the first component of a #graphene_simd4f_t

</return>
</function>

<function name="graphene_simd4f_get_y">
<description>
Retrieves the second component of @s.

Since: 1.0

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> the second component of a #graphene_simd4f_t

</return>
</function>

<function name="graphene_simd4f_get_z">
<description>
Retrieves the third component of @s.

Since: 1.0

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> the third component of a #graphene_simd4f_t

</return>
</function>

<function name="graphene_simd4f_init">
<description>
Initializes a #graphene_simd4f_t with the given values.

Since: 1.0

</description>
<parameters>
<parameter name="x">
<parameter_description> the first component of the vector
</parameter_description>
</parameter>
<parameter name="y">
<parameter_description> the second component of the vector
</parameter_description>
</parameter>
<parameter name="z">
<parameter_description> the third component of the vector
</parameter_description>
</parameter>
<parameter name="w">
<parameter_description> the fourth component of the vector
</parameter_description>
</parameter>
</parameters>
<return> the initialized #graphene_simd4f_t

</return>
</function>

<function name="graphene_simd4f_init_2f">
<description>
Initializes a #graphene_simd4f_t using an array of 2 floating
point values.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> an array of at least 2 floating
point values
</parameter_description>
</parameter>
</parameters>
<return> the initialized #graphene_simd4f_t

</return>
</function>

<function name="graphene_simd4f_init_3f">
<description>
Initializes a #graphene_simd4f_t using an array of 3 floating
point values.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> an array of at least 3 floating
point values
</parameter_description>
</parameter>
</parameters>
<return> the initialized #graphene_simd4f_t

</return>
</function>

<function name="graphene_simd4f_init_4f">
<description>
Initializes a #graphene_simd4f_t using an array of 4 floating
point values.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> an array of at least 4 floating
point values
</parameter_description>
</parameter>
</parameters>
<return> the initialized #graphene_simd4f_t

</return>
</function>

<function name="graphene_simd4f_init_zero">
<description>
Initializes a #graphene_simd4f_t with 0 in all components.

Since: 1.0

</description>
<parameters>
</parameters>
<return> the initialized #graphene_simd4f_t

</return>
</function>

<function name="graphene_simd4f_max">
<description>
Creates a new #graphene_simd4f_t that contains the
maximum value of each component of @a and @b.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> the new maximum vector

</return>
</function>

<function name="graphene_simd4f_merge_high">
<description>
Creates a new #graphene_simd4f_t that contains the
last two components of the vector @a and the last
two components of the vector @b.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> the new vector

</return>
</function>

<function name="graphene_simd4f_merge_low">
<description>
Creates a new #graphene_simd4f_t that contains the
first two components of the vector @a and the first
two components of the vector @b.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> the new vector

</return>
</function>

<function name="graphene_simd4f_merge_w">
<description>
Creates a new #graphene_simd4f_t that contains the
same values of the given @s vector, except for the
W component, which is set to @v.

Since: 1.0

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
<parameter name="v">
<parameter_description> the new value of the W component
</parameter_description>
</parameter>
</parameters>
<return> the new vector

</return>
</function>

<function name="graphene_simd4f_min">
<description>
Creates a new #graphene_simd4f_t that contains the
minimum value of each component of @a and @b.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> the new minimum vector

</return>
</function>

<function name="graphene_simd4f_mul">
<description>
Creates a new #graphene_simd4f_t vector where each
component is the multiplication of the respective components
in @a and @b.

|[&lt;!-- lanugage=&quot;plain&quot; --&gt;
{
.x = a.x * b.x,
.y = a.y * b.y,
.z = a.z * b.z,
.w = a.w * b.w
}
]|

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> the multiplication vector

</return>
</function>

<function name="graphene_simd4f_neg">
<description>
Negates the values of @s.

Since: 1.0

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> the negated vector

</return>
</function>

<function name="graphene_simd4f_reciprocal">
<description>
Computes the reciprocal of every component of @s.
The reciprocals of positive and negative 0 are defined
as positive and negative infinity, respectively.

|[&lt;!-- language=&quot;plain&quot; --&gt;
{
.x = 1.0 / s.x,
.y = 1.0 / s.y,
.z = 1.0 / s.z,
.w = 1.0 / s.w
}
]|

Since: 1.0

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> a vector containing the reciprocal of the
passed vector

</return>
</function>

<function name="graphene_simd4f_rsqrt">
<description>
Computes the reciprocal square root of every component
of @s.

|[&lt;!-- language=&quot;plain&quot; --&gt;
{
.x = 1.0 / sqrt (s.x),
.y = 1.0 / sqrt (s.y),
.z = 1.0 / sqrt (s.z),
.w = 1.0 / sqrt (s.w)
}
]|

Since: 1.0

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> a vector containing the reciprocal square root
of the passed vector

</return>
</function>

<function name="graphene_simd4f_shuffle_wxyz">
<description>
Creates a new #graphene_simd4f_t that contains the
re-ordered values of the W, X, Y, and Z components
of @s.

Since: 1.0

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> the new vector

</return>
</function>

<function name="graphene_simd4f_shuffle_yzwx">
<description>
Creates a new #graphene_simd4f_t that contains the
re-ordered values of the Y, Z, W, and X components
of @s.

Since: 1.0

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> the new vector

</return>
</function>

<function name="graphene_simd4f_shuffle_zwxy">
<description>
Creates a new #graphene_simd4f_t that contains the
re-ordered values of the Z, W, X, and Y components
of @s.

Since: 1.0

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> the new vector

</return>
</function>

<function name="graphene_simd4f_splat">
<description>
Sets all the components of a new #graphene_simd4f_t to the
same value @v:

|[&lt;!-- language=&quot;plain&quot; --&gt;
{
.x = v,
.y = v,
.z = v,
.w = v
};
]|

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a floating point value
</parameter_description>
</parameter>
</parameters>
<return> the initialized #graphene_simd4f_t

</return>
</function>

<function name="graphene_simd4f_splat_w">
<description>
Sets all the components of a #graphene_simd4f_t to the
same value of the fourth component of the passed vector:

|[&lt;!-- language=&quot;plain&quot; --&gt;
{
.x = s.w,
.y = s.w,
.z = s.w,
.w = s.w
}
]|

Since: 1.0

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> the initialized #graphene_simd4f_t

</return>
</function>

<function name="graphene_simd4f_splat_x">
<description>
Sets all the components of a new #graphene_simd4f_t to the
same value of the first component of the passed vector:

|[&lt;!-- language=&quot;plain&quot; --&gt;
{
.x = s.x,
.y = s.x,
.z = s.x,
.w = s.x
}
]|

Since: 1.0

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> the initialized #graphene_simd4f_t

</return>
</function>

<function name="graphene_simd4f_splat_y">
<description>
Sets all the components of a new #graphene_simd4f_t to the
same value of the second component of the passed vector:

|[&lt;!-- language=&quot;plain&quot; --&gt;
{
.x = s.y,
.y = s.y,
.z = s.y,
.w = s.y
}
]|

Since: 1.0

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> the initialized #graphene_simd4f_t

</return>
</function>

<function name="graphene_simd4f_splat_z">
<description>
Sets all the components of a #graphene_simd4f_t to the
same value of the third component of the passed vector:

|[&lt;!-- language=&quot;plain&quot; --&gt;
{
.x = s.z,
.y = s.z,
.z = s.z,
.w = s.z
}
]|

Since: 1.0

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> the initialized #graphene_simd4f_t

</return>
</function>

<function name="graphene_simd4f_sqrt">
<description>
Computes the square root of every component of @s.

|[&lt;!-- language=&quot;plain&quot; --&gt;
{
.x = sqrt (s.x),
.y = sqrt (s.y),
.z = sqrt (s.z),
.w = sqrt (s.w)
}
]|

Since: 1.0

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> a vector containing the square root of the
passed vector

</return>
</function>

<function name="graphene_simd4f_sub">
<description>
Creates a new #graphene_simd4f_t vector where each
component is the subtraction of the respective components
in @a and @b.

|[&lt;!-- lanugage=&quot;plain&quot; --&gt;
{
.x = a.x - b.x,
.y = a.y - b.y,
.z = a.z - b.z,
.w = a.w - b.w
}
]|

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> the subtraction vector

</return>
</function>

<function name="graphene_simd4f_t">
<description>
A vector type containing four floating point values.

The contents of the #graphene_simd4f_t type are private and
cannot be directly accessed; use the provided API instead.

Since: 1.0

</description>
<parameters>
</parameters>
<return></return>
</function>

<function name="graphene_simd4f_zero_w">
<description>
Creates a new #graphene_simd4f_t that contains the
same values of the given @s vector, except for the
W component, which is set to 0.

Since: 1.0

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> the new vector

</return>
</function>

<function name="graphene_simd4f_zero_zw">
<description>
Creates a new #graphene_simd4f_t that contains the
same values of the given @s vector, except for the
Z and W components, which are set to 0.

Since: 1.0

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_simd4f_t
</parameter_description>
</parameter>
</parameters>
<return> the new vector

</return>
</function>

<function name="graphene_simd4x4f_transpose_in_place">
<description>
Transposes @s in place.

Since: 1.0

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_simd4x4f_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_size_alloc">
<description>
Allocates a new #graphene_size_t.

The contents of the returned value are undefined.

Since: 1.0

</description>
<parameters>
</parameters>
<return> the newly allocated #graphene_size_t

</return>
</function>

<function name="graphene_size_equal">
<description>
Checks whether the two give #graphene_size_t are equal.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_size_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_size_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the sizes are equal

</return>
</function>

<function name="graphene_size_free">
<description>
Frees the resources allocated by graphene_size_alloc().

Since: 1.0

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_size_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_size_init">
<description>
Initializes a #graphene_size_t using the given @width and @height.

Since: 1.0

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_size_t
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> the width
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> the height
</parameter_description>
</parameter>
</parameters>
<return> the initialized #graphene_size_t

</return>
</function>

<function name="graphene_size_init_from_size">
<description>
Initializes a #graphene_size_t using the width and height of
the given @src.

Since: 1.0

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_size_t
</parameter_description>
</parameter>
<parameter name="src">
<parameter_description> a #graphene_size_t
</parameter_description>
</parameter>
</parameters>
<return> the initialized #graphene_size_t

</return>
</function>

<function name="graphene_size_interpolate">
<description>
Linearly interpolates the two given #graphene_size_t using the given
interpolation @factor.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_size_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_size_t
</parameter_description>
</parameter>
<parameter name="factor">
<parameter_description> the linear interpolation factor
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the interpolated size
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_size_scale">
<description>
Scales the components of a #graphene_size_t using the given @factor.

Since: 1.0

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_size_t
</parameter_description>
</parameter>
<parameter name="factor">
<parameter_description> the scaling factor
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the scaled size
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_size_zero">
<description>
A constant pointer to a zero #graphene_size_t, useful for
equality checks and interpolations.

Since: 1.0

</description>
<parameters>
</parameters>
<return> a constant size

</return>
</function>

<function name="graphene_sphere_alloc">
<description>
Allocates a new #graphene_sphere_t.

The contents of the newly allocated structure are undefined.

Since: 1.2

</description>
<parameters>
</parameters>
<return> the newly allocated #graphene_sphere_t. Use
graphene_sphere_free() to free the resources allocated by this function

</return>
</function>

<function name="graphene_sphere_contains_point">
<description>
Checks whether the given @point is contained in the volume
of a #graphene_sphere_t.

Since: 1.2

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_sphere_t
</parameter_description>
</parameter>
<parameter name="point">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the sphere contains the point

</return>
</function>

<function name="graphene_sphere_distance">
<description>
Computes the distance of the given @point from the surface of
a #graphene_sphere_t.

Since: 1.2

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_sphere_t
</parameter_description>
</parameter>
<parameter name="point">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
</parameters>
<return> the distance of the point

</return>
</function>

<function name="graphene_sphere_equal">
<description>
Checks whether two #graphene_sphere_t are equal.

Since: 1.2

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_sphere_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_sphere_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the spheres are equal

</return>
</function>

<function name="graphene_sphere_free">
<description>
Frees the resources allocated by graphene_sphere_alloc().

Since: 1.2

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_sphere_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_sphere_get_bounding_box">
<description>
Computes the bounding box capable of containing the
given #graphene_sphere_t.

Since: 1.2

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_sphere_t
</parameter_description>
</parameter>
<parameter name="box">
<parameter_description> return location for the bounding box
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_sphere_get_center">
<description>
Retrieves the coordinates of the center of a #graphene_sphere_t.

Since: 1.2

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_sphere_t
</parameter_description>
</parameter>
<parameter name="center">
<parameter_description> return location for the coordinates of
the center
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_sphere_get_radius">
<description>
Retrieves the radius of a #graphene_sphere_t.

Since: 1.2

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_sphere_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_sphere_init">
<description>
Initializes the given #graphene_sphere_t with the given @center and @radius.

Since: 1.2

</description>
<parameters>
<parameter name="s">
<parameter_description> the #graphene_sphere_t to initialize
</parameter_description>
</parameter>
<parameter name="center">
<parameter_description> the coordinates of the center of the sphere, or %NULL
for a center in (0, 0, 0)
</parameter_description>
</parameter>
<parameter name="radius">
<parameter_description> the radius of the sphere
</parameter_description>
</parameter>
</parameters>
<return> the initialized #graphene_sphere_t

</return>
</function>

<function name="graphene_sphere_init_from_points">
<description>
Initializes the given #graphene_sphere_t using the given array
of 3D coordinates so that the sphere includes them.

The center of the sphere can either be specified, or will be center
of the 3D volume that encompasses all @points.

Since: 1.2

</description>
<parameters>
<parameter name="s">
<parameter_description> the #graphene_sphere_t to initialize
</parameter_description>
</parameter>
<parameter name="n_points">
<parameter_description> the number of #graphene_point3d_t in the @points array
</parameter_description>
</parameter>
<parameter name="points">
<parameter_description> an array of #graphene_point3d_t
</parameter_description>
</parameter>
<parameter name="center">
<parameter_description> the center of the sphere
</parameter_description>
</parameter>
</parameters>
<return> the initialized #graphene_sphere_t

</return>
</function>

<function name="graphene_sphere_init_from_vectors">
<description>
Initializes the given #graphene_sphere_t using the given array
of 3D coordinates so that the sphere includes them.

The center of the sphere can either be specified, or will be center
of the 3D volume that encompasses all @vectors.

Since: 1.2

</description>
<parameters>
<parameter name="s">
<parameter_description> the #graphene_sphere_t to initialize
</parameter_description>
</parameter>
<parameter name="n_vectors">
<parameter_description> the number of #graphene_vec3_t in the @vectors array
</parameter_description>
</parameter>
<parameter name="vectors">
<parameter_description> an array of #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="center">
<parameter_description> the center of the sphere
</parameter_description>
</parameter>
</parameters>
<return> the initialized #graphene_sphere_t

</return>
</function>

<function name="graphene_sphere_is_empty">
<description>
Checks whether the sphere has a zero radius.

Since: 1.2

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_sphere_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the sphere is empty

</return>
</function>

<function name="graphene_sphere_translate">
<description>
Translates the center of the given #graphene_sphere_t using the @point
coordinates as the delta of the translation.

Since: 1.2

</description>
<parameters>
<parameter name="s">
<parameter_description> a #graphene_sphere_t
</parameter_description>
</parameter>
<parameter name="point">
<parameter_description> the coordinates of the translation
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the translated sphere
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_triangle_alloc">
<description>
Allocates a new #graphene_triangle_t.

The contents of the returned structure are undefined.

Since: 1.2

</description>
<parameters>
</parameters>
<return> the newly allocated #graphene_triangle_t
structure. Use graphene_triangle_free() to free the resources
allocated by this function

</return>
</function>

<function name="graphene_triangle_contains_point">
<description>
Checks whether the given triangle @t contains the point @p.

Since: 1.2

</description>
<parameters>
<parameter name="t">
<parameter_description> a #graphene_triangle_t
</parameter_description>
</parameter>
<parameter name="p">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the point is inside the triangle

</return>
</function>

<function name="graphene_triangle_equal">
<description>
Checks whether the two given #graphene_triangle_t are equal.

Since: 1.2

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_triangle_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_triangle_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the triangles are equal

</return>
</function>

<function name="graphene_triangle_free">
<description>
Frees the resources allocated by graphene_triangle_alloc().

Since: 1.2

</description>
<parameters>
<parameter name="t">
<parameter_description> a #graphene_triangle_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_triangle_get_area">
<description>
Computes the area of the given #graphene_triangle_t.

Since: 1.2

</description>
<parameters>
<parameter name="t">
<parameter_description> a #graphene_triangle_t
</parameter_description>
</parameter>
</parameters>
<return> the area of the triangle

</return>
</function>

<function name="graphene_triangle_get_barycoords">
<description>
Computes the [barycentric coordinates](http://en.wikipedia.org/wiki/Barycentric_coordinate_system)
of the given point @p.

The point @p must lie on the same plane as the triangle @t; if the
point is not coplanar, the result of this function is undefined.

If we place the origin in the coordinates of the triangle's A point,
the barycentric coordinates are `u`, which is on the AC vector; and `v`
which is on the AB vector:

![](triangle-barycentric.png)

The returned #graphene_vec2_t contains the following values, in order:

- `res.x = u`
- `res.y = v`

Since: 1.2

</description>
<parameters>
<parameter name="t">
<parameter_description> a #graphene_triangle_t
</parameter_description>
</parameter>
<parameter name="p">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the vector
with the barycentric coordinates
</parameter_description>
</parameter>
</parameters>
<return> `true` if the barycentric coordinates are valid

</return>
</function>

<function name="graphene_triangle_get_bounding_box">
<description>
Computes the bounding box of the given #graphene_triangle_t.

Since: 1.2

</description>
<parameters>
<parameter name="t">
<parameter_description> a #graphene_triangle_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the box
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_triangle_get_midpoint">
<description>
Computes the coordinates of the midpoint of the given #graphene_triangle_t.

The midpoint G is the [centroid](https://en.wikipedia.org/wiki/Centroid#Triangle_centroid)
of the triangle, i.e. the intersection of its medians.

Since: 1.2

</description>
<parameters>
<parameter name="t">
<parameter_description> a #graphene_triangle_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the coordinates of
the midpoint
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_triangle_get_normal">
<description>
Computes the normal vector of the given #graphene_triangle_t.

Since: 1.2

</description>
<parameters>
<parameter name="t">
<parameter_description> a #graphene_triangle_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the normal vector
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_triangle_get_plane">
<description>
Computes the plane based on the vertices of the given #graphene_triangle_t.

Since: 1.2

</description>
<parameters>
<parameter name="t">
<parameter_description> a #graphene_triangle_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the plane
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_triangle_get_points">
<description>
Retrieves the three vertices of the given #graphene_triangle_t and returns
their coordinates as #graphene_point3d_t.

Since: 1.2

</description>
<parameters>
<parameter name="t">
<parameter_description> a #graphene_triangle_t
</parameter_description>
</parameter>
<parameter name="a">
<parameter_description> return location for the coordinates
of the first vertex
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> return location for the coordinates
of the second vertex
</parameter_description>
</parameter>
<parameter name="c">
<parameter_description> return location for the coordinates
of the third vertex
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_triangle_get_uv">
<description>
Computes the UV coordinates of the given point @p.

The point @p must lie on the same plane as the triangle @t; if the point
is not coplanar, the result of this function is undefined. If @p is %NULL,
the point will be set in (0, 0, 0).

The UV coordinates will be placed in the @res vector:

- `res.x = u`
- `res.y = v`

See also: graphene_triangle_get_barycoords()

Since: 1.10

</description>
<parameters>
<parameter name="t">
<parameter_description> a #graphene_triangle_t
</parameter_description>
</parameter>
<parameter name="p">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
<parameter name="uv_a">
<parameter_description> the UV coordinates of the first point
</parameter_description>
</parameter>
<parameter name="uv_b">
<parameter_description> the UV coordinates of the second point
</parameter_description>
</parameter>
<parameter name="uv_c">
<parameter_description> the UV coordinates of the third point
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> a vector containing the UV coordinates
of the given point @p
</parameter_description>
</parameter>
</parameters>
<return> `true` if the coordinates are valid

</return>
</function>

<function name="graphene_triangle_get_vertices">
<description>
Retrieves the three vertices of the given #graphene_triangle_t.

Since: 1.2

</description>
<parameters>
<parameter name="t">
<parameter_description> a #graphene_triangle_t
</parameter_description>
</parameter>
<parameter name="a">
<parameter_description> return location for the first vertex
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> return location for the second vertex
</parameter_description>
</parameter>
<parameter name="c">
<parameter_description> return location for the third vertex
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_triangle_init_from_float">
<description>
Initializes a #graphene_triangle_t using the three given arrays
of floating point values, each representing the coordinates of
a point in 3D space.

Since: 1.10

</description>
<parameters>
<parameter name="t">
<parameter_description> the #graphene_triangle_t to initialize
</parameter_description>
</parameter>
<parameter name="a">
<parameter_description> an array of 3 floating point values
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> an array of 3 floating point values
</parameter_description>
</parameter>
<parameter name="c">
<parameter_description> an array of 3 floating point values
</parameter_description>
</parameter>
</parameters>
<return> the initialized #graphene_triangle_t

</return>
</function>

<function name="graphene_triangle_init_from_point3d">
<description>
Initializes a #graphene_triangle_t using the three given 3D points.

Since: 1.2

</description>
<parameters>
<parameter name="t">
<parameter_description> the #graphene_triangle_t to initialize
</parameter_description>
</parameter>
<parameter name="a">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
<parameter name="c">
<parameter_description> a #graphene_point3d_t
</parameter_description>
</parameter>
</parameters>
<return> the initialized #graphene_triangle_t

</return>
</function>

<function name="graphene_triangle_init_from_vec3">
<description>
Initializes a #graphene_triangle_t using the three given vectors.

Since: 1.2

</description>
<parameters>
<parameter name="t">
<parameter_description> the #graphene_triangle_t to initialize
</parameter_description>
</parameter>
<parameter name="a">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="c">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
</parameters>
<return> the initialized #graphene_triangle_t

</return>
</function>

<function name="graphene_vec2_add">
<description>
Adds each component of the two passed vectors and places
each result into the components of @res.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_vec2_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_vec2_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the result
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec2_alloc">
<description>
Allocates a new #graphene_vec2_t structure.

The contents of the returned structure are undefined.

Use graphene_vec2_init() to initialize the vector.

Since: 1.0

</description>
<parameters>
</parameters>
<return> the newly allocated #graphene_vec2_t
structure. Use graphene_vec2_free() to free the resources allocated
by this function.

</return>
</function>

<function name="graphene_vec2_divide">
<description>
Divides each component of the first operand @a by the corresponding
component of the second operand @b, and places the results into the
vector @res.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_vec2_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_vec2_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the result
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec2_dot">
<description>
Computes the dot product of the two given vectors.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_vec2_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_vec2_t
</parameter_description>
</parameter>
</parameters>
<return> the dot product of the vectors

</return>
</function>

<function name="graphene_vec2_equal">
<description>
Checks whether the two given #graphene_vec2_t are equal.

Since: 1.2

</description>
<parameters>
<parameter name="v1">
<parameter_description> a #graphene_vec2_t
</parameter_description>
</parameter>
<parameter name="v2">
<parameter_description> a #graphene_vec2_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the two vectors are equal, and false otherwise

</return>
</function>

<function name="graphene_vec2_free">
<description>
Frees the resources allocated by @v

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec2_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec2_get_x">
<description>
Retrieves the X component of the #graphene_vec2_t.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec2_t
</parameter_description>
</parameter>
</parameters>
<return> the value of the X component

</return>
</function>

<function name="graphene_vec2_get_y">
<description>
Retrieves the Y component of the #graphene_vec2_t.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec2_t
</parameter_description>
</parameter>
</parameters>
<return> the value of the Y component

</return>
</function>

<function name="graphene_vec2_init">
<description>
Initializes a #graphene_vec2_t using the given values.

This function can be called multiple times.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec2_t
</parameter_description>
</parameter>
<parameter name="x">
<parameter_description> the X field of the vector
</parameter_description>
</parameter>
<parameter name="y">
<parameter_description> the Y field of the vector
</parameter_description>
</parameter>
</parameters>
<return> the initialized vector

</return>
</function>

<function name="graphene_vec2_init_from_float">
<description>
Initializes @v with the contents of the given array.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec2_t
</parameter_description>
</parameter>
<parameter name="src">
<parameter_description> an array of floating point values
with at least two elements
</parameter_description>
</parameter>
</parameters>
<return> the initialized vector

</return>
</function>

<function name="graphene_vec2_init_from_vec2">
<description>
Copies the contents of @src into @v.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec2_t
</parameter_description>
</parameter>
<parameter name="src">
<parameter_description> a #graphene_vec2_t
</parameter_description>
</parameter>
</parameters>
<return> the initialized vector

</return>
</function>

<function name="graphene_vec2_interpolate">
<description>
Linearly interpolates @v1 and @v2 using the given @factor.

Since: 1.10

</description>
<parameters>
<parameter name="v1">
<parameter_description> a #graphene_vec2_t
</parameter_description>
</parameter>
<parameter name="v2">
<parameter_description> a #graphene_vec2_t
</parameter_description>
</parameter>
<parameter name="factor">
<parameter_description> the interpolation factor
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> the interpolated vector
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec2_length">
<description>
Computes the length of the given vector.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec2_t
</parameter_description>
</parameter>
</parameters>
<return> the length of the vector

</return>
</function>

<function name="graphene_vec2_max">
<description>
Compares the two given vectors and places the maximum
values of each component into @res.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_vec2_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_vec2_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> the resulting vector
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec2_min">
<description>
Compares the two given vectors and places the minimum
values of each component into @res.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_vec2_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_vec2_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> the resulting vector
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec2_multiply">
<description>
Multiplies each component of the two passed vectors and places
each result into the components of @res.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_vec2_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_vec2_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the result
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec2_near">
<description>
Compares the two given #graphene_vec2_t vectors and checks
whether their values are within the given @epsilon.

Since: 1.2

</description>
<parameters>
<parameter name="v1">
<parameter_description> a #graphene_vec2_t
</parameter_description>
</parameter>
<parameter name="v2">
<parameter_description> a #graphene_vec2_t
</parameter_description>
</parameter>
<parameter name="epsilon">
<parameter_description> the threshold between the two vectors
</parameter_description>
</parameter>
</parameters>
<return> `true` if the two vectors are near each other

</return>
</function>

<function name="graphene_vec2_negate">
<description>
Negates the given #graphene_vec2_t.

Since: 1.2

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec2_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the result vector
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec2_normalize">
<description>
Computes the normalized vector for the given vector @v.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec2_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the
normalized vector
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec2_one">
<description>
Retrieves a constant vector with (1, 1) components.

Since: 1.0

</description>
<parameters>
</parameters>
<return> the one vector

</return>
</function>

<function name="graphene_vec2_scale">
<description>
Multiplies all components of the given vector with the given scalar @factor.

Since: 1.2

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec2_t
</parameter_description>
</parameter>
<parameter name="factor">
<parameter_description> the scalar factor
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the result vector
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec2_subtract">
<description>
Subtracts from each component of the first operand @a the
corresponding component of the second operand @b and places
each result into the components of @res.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_vec2_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_vec2_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the result
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec2_to_float">
<description>
Stores the components of @v into an array.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec2_t
</parameter_description>
</parameter>
<parameter name="dest">
<parameter_description> return location
for an array of floating point values with at least 2 elements
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec2_x_axis">
<description>
Retrieves a constant vector with (1, 0) components.

Since: 1.0

</description>
<parameters>
</parameters>
<return> the X axis vector

</return>
</function>

<function name="graphene_vec2_y_axis">
<description>
Retrieves a constant vector with (0, 1) components.

Since: 1.0

</description>
<parameters>
</parameters>
<return> the Y axis vector

</return>
</function>

<function name="graphene_vec2_zero">
<description>
Retrieves a constant vector with (0, 0) components.

Since: 1.0

</description>
<parameters>
</parameters>
<return> the zero vector

</return>
</function>

<function name="graphene_vec3_add">
<description>
Adds each component of the two given vectors.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the resulting vector
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec3_alloc">
<description>
Allocates a new #graphene_vec3_t structure.

The contents of the returned structure are undefined.

Use graphene_vec3_init() to initialize the vector.

Since: 1.0

</description>
<parameters>
</parameters>
<return> the newly allocated #graphene_vec3_t
structure. Use graphene_vec3_free() to free the resources allocated
by this function.

</return>
</function>

<function name="graphene_vec3_cross">
<description>
Computes the cross product of the two given vectors.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the resulting vector
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec3_divide">
<description>
Divides each component of the first operand @a by the corresponding
component of the second operand @b, and places the results into the
vector @res.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the resulting vector
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec3_dot">
<description>
Computes the dot product of the two given vectors.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
</parameters>
<return> the value of the dot product

</return>
</function>

<function name="graphene_vec3_equal">
<description>
Checks whether the two given #graphene_vec3_t are equal.

Since: 1.2

</description>
<parameters>
<parameter name="v1">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="v2">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the two vectors are equal, and false otherwise

</return>
</function>

<function name="graphene_vec3_free">
<description>
Frees the resources allocated by @v

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec3_get_x">
<description>
Retrieves the first component of the given vector @v.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
</parameters>
<return> the value of the first component of the vector

</return>
</function>

<function name="graphene_vec3_get_xy">
<description>
Creates a #graphene_vec2_t that contains the first and second
components of the given #graphene_vec3_t.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for a #graphene_vec2_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec3_get_xy0">
<description>
Creates a #graphene_vec3_t that contains the first two components of
the given #graphene_vec3_t, and the third component set to 0.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for a #graphene_vec3_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec3_get_xyz0">
<description>
Converts a #graphene_vec3_t in a #graphene_vec4_t using 0.0
as the value for the fourth component of the resulting vector.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the vector
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec3_get_xyz1">
<description>
Converts a #graphene_vec3_t in a #graphene_vec4_t using 1.0
as the value for the fourth component of the resulting vector.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the vector
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec3_get_xyzw">
<description>
Converts a #graphene_vec3_t in a #graphene_vec4_t using @w as
the value of the fourth component of the resulting vector.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="w">
<parameter_description> the value of the W component
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the vector
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec3_get_y">
<description>
Retrieves the second component of the given vector @v.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
</parameters>
<return> the value of the second component of the vector

</return>
</function>

<function name="graphene_vec3_get_z">
<description>
Retrieves the third component of the given vector @v.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
</parameters>
<return> the value of the third component of the vector

</return>
</function>

<function name="graphene_vec3_init">
<description>
Initializes a #graphene_vec3_t using the given values.

This function can be called multiple times.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="x">
<parameter_description> the X field of the vector
</parameter_description>
</parameter>
<parameter name="y">
<parameter_description> the Y field of the vector
</parameter_description>
</parameter>
<parameter name="z">
<parameter_description> the Z field of the vector
</parameter_description>
</parameter>
</parameters>
<return> a pointer to the initialized
vector

</return>
</function>

<function name="graphene_vec3_init_from_float">
<description>
Initializes a #graphene_vec3_t with the values from an array.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="src">
<parameter_description> an array of 3 floating point values
</parameter_description>
</parameter>
</parameters>
<return> the initialized vector

</return>
</function>

<function name="graphene_vec3_init_from_vec3">
<description>
Initializes a #graphene_vec3_t with the values of another
#graphene_vec3_t.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="src">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
</parameters>
<return> the initialized vector

</return>
</function>

<function name="graphene_vec3_interpolate">
<description>
Linearly interpolates @v1 and @v2 using the given @factor.

Since: 1.10

</description>
<parameters>
<parameter name="v1">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="v2">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="factor">
<parameter_description> the interpolation factor
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> the interpolated vector
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec3_length">
<description>
Retrieves the length of the given vector @v.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
</parameters>
<return> the value of the length of the vector

</return>
</function>

<function name="graphene_vec3_max">
<description>
Compares each component of the two given vectors and creates a
vector that contains the maximum values.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the result vector
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec3_min">
<description>
Compares each component of the two given vectors and creates a
vector that contains the minimum values.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the result vector
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec3_multiply">
<description>
Multiplies each component of the two given vectors.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the resulting vector
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec3_near">
<description>
Compares the two given #graphene_vec3_t vectors and checks
whether their values are within the given @epsilon.

Since: 1.2

</description>
<parameters>
<parameter name="v1">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="v2">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="epsilon">
<parameter_description> the threshold between the two vectors
</parameter_description>
</parameter>
</parameters>
<return> `true` if the two vectors are near each other

</return>
</function>

<function name="graphene_vec3_negate">
<description>
Negates the given #graphene_vec3_t.

Since: 1.2

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the result vector
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec3_normalize">
<description>
Normalizes the given #graphene_vec3_t.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the normalized vector
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec3_one">
<description>
Provides a constant pointer to a vector with three components,
all sets to 1.

Since: 1.0

</description>
<parameters>
</parameters>
<return> a constant vector

</return>
</function>

<function name="graphene_vec3_scale">
<description>
Multiplies all components of the given vector with the given scalar @factor.

Since: 1.2

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="factor">
<parameter_description> the scalar factor
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the result vector
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec3_subtract">
<description>
Subtracts from each component of the first operand @a the
corresponding component of the second operand @b and places
each result into the components of @res.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the resulting vector
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec3_to_float">
<description>
Copies the components of a #graphene_vec3_t into the given array.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="dest">
<parameter_description> return location for
an array of floating point values
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec3_x_axis">
<description>
Provides a constant pointer to a vector with three components
with values set to (1, 0, 0).

Since: 1.0

</description>
<parameters>
</parameters>
<return> a constant vector

</return>
</function>

<function name="graphene_vec3_y_axis">
<description>
Provides a constant pointer to a vector with three components
with values set to (0, 1, 0).

Since: 1.0

</description>
<parameters>
</parameters>
<return> a constant vector

</return>
</function>

<function name="graphene_vec3_z_axis">
<description>
Provides a constant pointer to a vector with three components
with values set to (0, 0, 1).

Since: 1.0

</description>
<parameters>
</parameters>
<return> a constant vector

</return>
</function>

<function name="graphene_vec3_zero">
<description>
Provides a constant pointer to a vector with three components,
all sets to 0.

Since: 1.0

</description>
<parameters>
</parameters>
<return> a constant vector

</return>
</function>

<function name="graphene_vec4_add">
<description>
Adds each component of the two given vectors.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the resulting vector
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec4_alloc">
<description>
Allocates a new #graphene_vec4_t structure.

The contents of the returned structure are undefined.

Use graphene_vec4_init() to initialize the vector.

Since: 1.0

</description>
<parameters>
</parameters>
<return> the newly allocated #graphene_vec4_t
structure. Use graphene_vec4_free() to free the resources allocated
by this function.

</return>
</function>

<function name="graphene_vec4_divide">
<description>
Divides each component of the first operand @a by the corresponding
component of the second operand @b, and places the results into the
vector @res.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the resulting vector
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec4_dot">
<description>
Computes the dot product of the two given vectors.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
</parameters>
<return> the value of the dot product

</return>
</function>

<function name="graphene_vec4_equal">
<description>
Checks whether the two given #graphene_vec4_t are equal.

Since: 1.2

</description>
<parameters>
<parameter name="v1">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
<parameter name="v2">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
</parameters>
<return> `true` if the two vectors are equal, and false otherwise

</return>
</function>

<function name="graphene_vec4_free">
<description>
Frees the resources allocated by @v

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec4_get_w">
<description>
Retrieves the value of the fourth component of the given #graphene_vec4_t.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
</parameters>
<return> the value of the fourth component

</return>
</function>

<function name="graphene_vec4_get_x">
<description>
Retrieves the value of the first component of the given #graphene_vec4_t.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
</parameters>
<return> the value of the first component

</return>
</function>

<function name="graphene_vec4_get_xy">
<description>
Creates a #graphene_vec2_t that contains the first two components
of the given #graphene_vec4_t.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for a #graphene_vec2_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec4_get_xyz">
<description>
Creates a #graphene_vec3_t that contains the first three components
of the given #graphene_vec4_t.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for a graphene_vec3_t
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec4_get_y">
<description>
Retrieves the value of the second component of the given #graphene_vec4_t.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
</parameters>
<return> the value of the second component

</return>
</function>

<function name="graphene_vec4_get_z">
<description>
Retrieves the value of the third component of the given #graphene_vec4_t.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
</parameters>
<return> the value of the third component

</return>
</function>

<function name="graphene_vec4_init">
<description>
Initializes a #graphene_vec4_t using the given values.

This function can be called multiple times.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
<parameter name="x">
<parameter_description> the X field of the vector
</parameter_description>
</parameter>
<parameter name="y">
<parameter_description> the Y field of the vector
</parameter_description>
</parameter>
<parameter name="z">
<parameter_description> the Z field of the vector
</parameter_description>
</parameter>
<parameter name="w">
<parameter_description> the W field of the vector
</parameter_description>
</parameter>
</parameters>
<return> a pointer to the initialized
vector

</return>
</function>

<function name="graphene_vec4_init_from_float">
<description>
Initializes a #graphene_vec4_t with the values inside the given array.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
<parameter name="src">
<parameter_description> an array of four floating point values
</parameter_description>
</parameter>
</parameters>
<return> the initialized vector

</return>
</function>

<function name="graphene_vec4_init_from_vec2">
<description>
Initializes a #graphene_vec4_t using the components of a
#graphene_vec2_t and the values of @z and @w.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
<parameter name="src">
<parameter_description> a #graphene_vec2_t
</parameter_description>
</parameter>
<parameter name="z">
<parameter_description> the value for the third component of @v
</parameter_description>
</parameter>
<parameter name="w">
<parameter_description> the value for the fourth component of @v
</parameter_description>
</parameter>
</parameters>
<return> the initialized vector

</return>
</function>

<function name="graphene_vec4_init_from_vec3">
<description>
Initializes a #graphene_vec4_t using the components of a
#graphene_vec3_t and the value of @w.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
<parameter name="src">
<parameter_description> a #graphene_vec3_t
</parameter_description>
</parameter>
<parameter name="w">
<parameter_description> the value for the fourth component of @v
</parameter_description>
</parameter>
</parameters>
<return> the initialized vector

</return>
</function>

<function name="graphene_vec4_init_from_vec4">
<description>
Initializes a #graphene_vec4_t using the components of
another #graphene_vec4_t.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
<parameter name="src">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
</parameters>
<return> the initialized vector

</return>
</function>

<function name="graphene_vec4_interpolate">
<description>
Linearly interpolates @v1 and @v2 using the given @factor.

Since: 1.10

</description>
<parameters>
<parameter name="v1">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
<parameter name="v2">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
<parameter name="factor">
<parameter_description> the interpolation factor
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> the interpolated vector
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec4_length">
<description>
Computes the length of the given #graphene_vec4_t.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
</parameters>
<return> the length of the vector

</return>
</function>

<function name="graphene_vec4_max">
<description>
Compares each component of the two given vectors and creates a
vector that contains the maximum values.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the result vector
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec4_min">
<description>
Compares each component of the two given vectors and creates a
vector that contains the minimum values.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the result vector
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec4_multiply">
<description>
Multiplies each component of the two given vectors.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the resulting vector
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec4_near">
<description>
Compares the two given #graphene_vec4_t vectors and checks
whether their values are within the given @epsilon.

Since: 1.2

</description>
<parameters>
<parameter name="v1">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
<parameter name="v2">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
<parameter name="epsilon">
<parameter_description> the threshold between the two vectors
</parameter_description>
</parameter>
</parameters>
<return> `true` if the two vectors are near each other

</return>
</function>

<function name="graphene_vec4_negate">
<description>
Negates the given #graphene_vec4_t.

Since: 1.2

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the result vector
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec4_normalize">
<description>
Normalizes the given #graphene_vec4_t.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the normalized
vector
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec4_one">
<description>
Retrieves a pointer to a #graphene_vec4_t with all its
components set to 1.

Since: 1.0

</description>
<parameters>
</parameters>
<return> a constant vector

</return>
</function>

<function name="graphene_vec4_scale">
<description>
Multiplies all components of the given vector with the given scalar @factor.

Since: 1.2

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
<parameter name="factor">
<parameter_description> the scalar factor
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the result vector
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec4_subtract">
<description>
Subtracts from each component of the first operand @a the
corresponding component of the second operand @b and places
each result into the components of @res.

Since: 1.0

</description>
<parameters>
<parameter name="a">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> return location for the resulting vector
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec4_to_float">
<description>
Stores the components of the given #graphene_vec4_t into an array
of floating point values.

Since: 1.0

</description>
<parameters>
<parameter name="v">
<parameter_description> a #graphene_vec4_t
</parameter_description>
</parameter>
<parameter name="dest">
<parameter_description> return location for
an array of floating point values
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="graphene_vec4_w_axis">
<description>
Retrieves a pointer to a #graphene_vec4_t with its
components set to (0, 0, 0, 1).

Since: 1.0

</description>
<parameters>
</parameters>
<return> a constant vector

</return>
</function>

<function name="graphene_vec4_x_axis">
<description>
Retrieves a pointer to a #graphene_vec4_t with its
components set to (1, 0, 0, 0).

Since: 1.0

</description>
<parameters>
</parameters>
<return> a constant vector

</return>
</function>

<function name="graphene_vec4_y_axis">
<description>
Retrieves a pointer to a #graphene_vec4_t with its
components set to (0, 1, 0, 0).

Since: 1.0

</description>
<parameters>
</parameters>
<return> a constant vector

</return>
</function>

<function name="graphene_vec4_z_axis">
<description>
Retrieves a pointer to a #graphene_vec4_t with its
components set to (0, 0, 1, 0).

Since: 1.0

</description>
<parameters>
</parameters>
<return> a constant vector

</return>
</function>

<function name="graphene_vec4_zero">
<description>
Retrieves a pointer to a #graphene_vec4_t with all its
components set to 0.

Since: 1.0

</description>
<parameters>
</parameters>
<return> a constant vector

</return>
</function>

</root>
