<root>
<enum name="GskBlendMode">
<description>
The blend modes available for render nodes.

The implementation of each blend mode is deferred to the
rendering pipeline.

See &lt;https://www.w3.org/TR/compositing-1/#blending&gt; for more information
on blending and blend modes.

</description>
<parameters>
<parameter name="GSK_BLEND_MODE_DEFAULT">
<parameter_description> The default blend mode, which specifies no blending
</parameter_description>
</parameter>
<parameter name="GSK_BLEND_MODE_MULTIPLY">
<parameter_description> The source color is multiplied by the destination
and replaces the destination
</parameter_description>
</parameter>
<parameter name="GSK_BLEND_MODE_SCREEN">
<parameter_description> Multiplies the complements of the destination and source
color values, then complements the result.
</parameter_description>
</parameter>
<parameter name="GSK_BLEND_MODE_OVERLAY">
<parameter_description> Multiplies or screens the colors, depending on the
destination color value. This is the inverse of hard-list
</parameter_description>
</parameter>
<parameter name="GSK_BLEND_MODE_DARKEN">
<parameter_description> Selects the darker of the destination and source colors
</parameter_description>
</parameter>
<parameter name="GSK_BLEND_MODE_LIGHTEN">
<parameter_description> Selects the lighter of the destination and source colors
</parameter_description>
</parameter>
<parameter name="GSK_BLEND_MODE_COLOR_DODGE">
<parameter_description> Brightens the destination color to reflect the source color
</parameter_description>
</parameter>
<parameter name="GSK_BLEND_MODE_COLOR_BURN">
<parameter_description> Darkens the destination color to reflect the source color
</parameter_description>
</parameter>
<parameter name="GSK_BLEND_MODE_HARD_LIGHT">
<parameter_description> Multiplies or screens the colors, depending on the source color value
</parameter_description>
</parameter>
<parameter name="GSK_BLEND_MODE_SOFT_LIGHT">
<parameter_description> Darkens or lightens the colors, depending on the source color value
</parameter_description>
</parameter>
<parameter name="GSK_BLEND_MODE_DIFFERENCE">
<parameter_description> Subtracts the darker of the two constituent colors from the lighter color
</parameter_description>
</parameter>
<parameter name="GSK_BLEND_MODE_EXCLUSION">
<parameter_description> Produces an effect similar to that of the difference mode but lower in contrast
</parameter_description>
</parameter>
<parameter name="GSK_BLEND_MODE_COLOR">
<parameter_description> Creates a color with the hue and saturation of the source color and the luminosity of the destination color
</parameter_description>
</parameter>
<parameter name="GSK_BLEND_MODE_HUE">
<parameter_description> Creates a color with the hue of the source color and the saturation and luminosity of the destination color
</parameter_description>
</parameter>
<parameter name="GSK_BLEND_MODE_SATURATION">
<parameter_description> Creates a color with the saturation of the source color and the hue and luminosity of the destination color
</parameter_description>
</parameter>
<parameter name="GSK_BLEND_MODE_LUMINOSITY">
<parameter_description> Creates a color with the luminosity of the source color and the hue and saturation of the destination color
</parameter_description>
</parameter>
</parameters>
</enum>

<enum name="GskCorner">
<description>
The corner indices used by `GskRoundedRect`.

</description>
<parameters>
<parameter name="GSK_CORNER_TOP_LEFT">
<parameter_description> The top left corner
</parameter_description>
</parameter>
<parameter name="GSK_CORNER_TOP_RIGHT">
<parameter_description> The top right corner
</parameter_description>
</parameter>
<parameter name="GSK_CORNER_BOTTOM_RIGHT">
<parameter_description> The bottom right corner
</parameter_description>
</parameter>
<parameter name="GSK_CORNER_BOTTOM_LEFT">
<parameter_description> The bottom left corner
</parameter_description>
</parameter>
</parameters>
</enum>

<enum name="GskFillRule">
<description>
Specifies how paths are filled.

Whether or not a point is included in the fill is determined by taking
a ray from that point to infinity and looking at intersections with the
path. The ray can be in any direction, as long as it doesn't pass through
the end point of a segment or have a tricky intersection such as
intersecting tangent to the path.

(Note that filling is not actually implemented in this way. This
is just a description of the rule that is applied.)

New entries may be added in future versions.

Since: 4.14

</description>
<parameters>
<parameter name="GSK_FILL_RULE_WINDING">
<parameter_description> If the path crosses the ray from
left-to-right, counts +1. If the path crosses the ray
from right to left, counts -1. (Left and right are determined
from the perspective of looking along the ray from the starting
point.) If the total count is non-zero, the point will be filled.
</parameter_description>
</parameter>
<parameter name="GSK_FILL_RULE_EVEN_ODD">
<parameter_description> Counts the total number of
intersections, without regard to the orientation of the contour. If
the total number of intersections is odd, the point will be
filled.
</parameter_description>
</parameter>
</parameters>
</enum>

<enum name="GskFineTransformCategory">
<description>
The categories of matrices relevant for GSK and GTK.

Note that any category includes matrices of all later categories.
So if you want to for example check if a matrix is a 2D matrix,
`category &gt;= GSK_TRANSFORM_CATEGORY_2D` is the way to do this.

Also keep in mind that rounding errors may cause matrices to not
conform to their categories. Otherwise, matrix operations done via
multiplication will not worsen categories. So for the matrix
multiplication `C = A * B`, `category(C) = MIN (category(A), category(B))`.

</description>
<parameters>
<parameter name="GSK_FINE_TRANSFORM_CATEGORY_UNKNOWN">
<parameter_description> The category of the matrix has not been
determined.
</parameter_description>
</parameter>
<parameter name="GSK_FINE_TRANSFORM_CATEGORY_ANY">
<parameter_description> Analyzing the matrix concluded that it does
not fit in any other category.
</parameter_description>
</parameter>
<parameter name="GSK_FINE_TRANSFORM_CATEGORY_3D">
<parameter_description> The matrix is a 3D matrix. This means that
the w column (the last column) has the values (0, 0, 0, 1).
</parameter_description>
</parameter>
<parameter name="GSK_FINE_TRANSFORM_CATEGORY_2D">
<parameter_description> The matrix is a 2D matrix. This is equivalent
to graphene_matrix_is_2d() returning %TRUE. In particular, this
means that Cairo can deal with the matrix.
</parameter_description>
</parameter>
<parameter name="GSK_FINE_TRANSFORM_CATEGORY_2D_DIHEDRAL">
<parameter_description> The matrix is a combination of 2D scale,
2D translation, and 90 degree rotation operations. In particular, this means
that any rectangle can be transformed exactly using this matrix.
</parameter_description>
</parameter>
<parameter name="GSK_FINE_TRANSFORM_CATEGORY_2D_NEGATIVE_AFFINE">
<parameter_description> The matrix is a combination of
(positive or negative) 2D scale and 2D translation operations. This category
only exists to ease mapping to GskTransform.
</parameter_description>
</parameter>
<parameter name="GSK_FINE_TRANSFORM_CATEGORY_2D_AFFINE">
<parameter_description> The matrix is a combination of positive
2D scale and 2D translation operations. In particular, this means that any
rectangle can be transformed exactly using this matrix without flipping.
</parameter_description>
</parameter>
<parameter name="GSK_FINE_TRANSFORM_CATEGORY_2D_TRANSLATE">
<parameter_description> The matrix is a 2D translation.
</parameter_description>
</parameter>
<parameter name="GSK_FINE_TRANSFORM_CATEGORY_IDENTITY">
<parameter_description> The matrix is the identity matrix.
</parameter_description>
</parameter>
</parameters>
</enum>

<property name="GskGLShader:resource">
<description>
Resource containing the source code for the shader.

If the shader source is not coming from a resource, this
will be %NULL.

</description>
</property>

<property name="GskGLShader:source">
<description>
The source code for the shader, as a `GBytes`.

</description>
</property>

<enum name="GskGLUniformType">
<description>
Defines the types of the uniforms that `GskGLShaders` declare.

It defines both what the type is called in the GLSL shader
code, and what the corresponding C type is on the Gtk side.

Deprecated: 4.16

</description>
<parameters>
<parameter name="GSK_GL_UNIFORM_TYPE_NONE">
<parameter_description> No type, used for uninitialized or unspecified values.
</parameter_description>
</parameter>
<parameter name="GSK_GL_UNIFORM_TYPE_FLOAT">
<parameter_description> A float uniform
</parameter_description>
</parameter>
<parameter name="GSK_GL_UNIFORM_TYPE_INT">
<parameter_description> A GLSL int / gint32 uniform
</parameter_description>
</parameter>
<parameter name="GSK_GL_UNIFORM_TYPE_UINT">
<parameter_description> A GLSL uint / guint32 uniform
</parameter_description>
</parameter>
<parameter name="GSK_GL_UNIFORM_TYPE_BOOL">
<parameter_description> A GLSL bool / gboolean uniform
</parameter_description>
</parameter>
<parameter name="GSK_GL_UNIFORM_TYPE_VEC2">
<parameter_description> A GLSL vec2 / graphene_vec2_t uniform
</parameter_description>
</parameter>
<parameter name="GSK_GL_UNIFORM_TYPE_VEC3">
<parameter_description> A GLSL vec3 / graphene_vec3_t uniform
</parameter_description>
</parameter>
<parameter name="GSK_GL_UNIFORM_TYPE_VEC4">
<parameter_description> A GLSL vec4 / graphene_vec4_t uniform
</parameter_description>
</parameter>
</parameters>
</enum>

<enum name="GskIsolation">
<description>
These flags describe the types of isolations possible with a
[class@Gsk.IsolationNode].

More isolation options may be added in the future.

Since: 4.22

</description>
<parameters>
<parameter name="GSK_ISOLATION_NONE">
<parameter_description> No isolation is defined.
</parameter_description>
</parameter>
<parameter name="GSK_ISOLATION_BACKGROUND">
<parameter_description> If the background should be made available.
If the background is not available, future operations will be rendered
to a transparent background and added to the existing background later.
</parameter_description>
</parameter>
<parameter name="GSK_ISOLATION_COPY_PASTE">
<parameter_description> If copies should be available to paste nodes.
If copies are not available, paste nodes can only paste from copies that
are made inside the isolated contents.
</parameter_description>
</parameter>
<parameter name="GSK_ISOLATION_ALL">
<parameter_description> Isolate everything. This will include features that
are added in the future.
</parameter_description>
</parameter>
</parameters>
</enum>

<enum name="GskLineCap">
<description>
Specifies how to render the start and end points of contours or
dashes when stroking.

The default line cap style is `GSK_LINE_CAP_BUTT`.

New entries may be added in future versions.

&lt;figure&gt;
&lt;picture&gt;
&lt;source srcset=&quot;caps-dark.png&quot; media=&quot;(prefers-color-scheme: dark)&quot;&gt;
&lt;img alt=&quot;Line Cap Styles&quot; src=&quot;caps-light.png&quot;&gt;
&lt;/picture&gt;
&lt;figcaption&gt;GSK_LINE_CAP_BUTT, GSK_LINE_CAP_ROUND, GSK_LINE_CAP_SQUARE&lt;/figcaption&gt;
&lt;/figure&gt;

Since: 4.14

</description>
<parameters>
<parameter name="GSK_LINE_CAP_BUTT">
<parameter_description> Start and stop the line exactly at the start
and end point
</parameter_description>
</parameter>
<parameter name="GSK_LINE_CAP_ROUND">
<parameter_description> Use a round ending, the center of the circle
is the start or end point
</parameter_description>
</parameter>
<parameter name="GSK_LINE_CAP_SQUARE">
<parameter_description> use squared ending, the center of the square
is the start or end point
</parameter_description>
</parameter>
</parameters>
</enum>

<enum name="GskLineJoin">
<description>
Specifies how to render the junction of two lines when stroking.

The default line join style is `GSK_LINE_JOIN_MITER`.

New entries may be added in future versions.

&lt;figure&gt;
&lt;picture&gt;
&lt;source srcset=&quot;join-dark.png&quot; media=&quot;(prefers-color-scheme: dark)&quot;&gt;
&lt;img alt=&quot;Line Join Styles&quot; src=&quot;join-light.png&quot;&gt;
&lt;/picture&gt;
&lt;figcaption&gt;GSK_LINE_JOINT_MITER, GSK_LINE_JOINT_ROUND, GSK_LINE_JOIN_BEVEL&lt;/figcaption&gt;
&lt;/figure&gt;

Since: 4.14

</description>
<parameters>
<parameter name="GSK_LINE_JOIN_MITER">
<parameter_description> Use a sharp angled corner
</parameter_description>
</parameter>
<parameter name="GSK_LINE_JOIN_ROUND">
<parameter_description> Use a round join, the center of the circle is
the join point
</parameter_description>
</parameter>
<parameter name="GSK_LINE_JOIN_BEVEL">
<parameter_description> use a cut-off join, the join is cut off at half
the line width from the joint point
</parameter_description>
</parameter>
</parameters>
</enum>

<enum name="GskMaskMode">
<description>
The mask modes available for mask nodes.

Since: 4.10

</description>
<parameters>
<parameter name="GSK_MASK_MODE_ALPHA">
<parameter_description> Use the alpha channel of the mask
</parameter_description>
</parameter>
<parameter name="GSK_MASK_MODE_INVERTED_ALPHA">
<parameter_description> Use the inverted alpha channel of the mask
</parameter_description>
</parameter>
<parameter name="GSK_MASK_MODE_LUMINANCE">
<parameter_description> Use the luminance of the mask,
multiplied by mask alpha
</parameter_description>
</parameter>
<parameter name="GSK_MASK_MODE_INVERTED_LUMINANCE">
<parameter_description> Use the inverted luminance of the mask,
multiplied by mask alpha
</parameter_description>
</parameter>
</parameters>
</enum>

<enum name="GskPathDirection">
<description>
Used to pick one of the four tangents at a given point on the path.

Note that the directions for @GSK_PATH_FROM_START/@GSK_PATH_TO_END and
@GSK_PATH_TO_START/@GSK_PATH_FROM_END will coincide for smooth points.
Only sharp turns will exhibit four different directions.

&lt;picture&gt;
&lt;source srcset=&quot;directions-dark.png&quot; media=&quot;(prefers-color-scheme: dark)&quot;&gt;
&lt;img alt=&quot;Path Tangents&quot; src=&quot;directions-light.png&quot;&gt;
&lt;/picture&gt;

Since: 4.14

</description>
<parameters>
<parameter name="GSK_PATH_FROM_START">
<parameter_description> The tangent in path direction of the incoming side
of the path
</parameter_description>
</parameter>
<parameter name="GSK_PATH_TO_START">
<parameter_description> The tangent against path direction of the incoming side
of the path
</parameter_description>
</parameter>
<parameter name="GSK_PATH_TO_END">
<parameter_description> The tangent in path direction of the outgoing side
of the path
</parameter_description>
</parameter>
<parameter name="GSK_PATH_FROM_END">
<parameter_description> The tangent against path direction of the outgoing
side of the path
</parameter_description>
</parameter>
</parameters>
</enum>

<enum name="GskPathForeachFlags">
<description>
Flags that can be passed to gsk_path_foreach() to influence what
kinds of operations the path is decomposed into.

By default, [method@Gsk.Path.foreach] will only emit a path with all
operations flattened to straight lines to allow for maximum compatibility.
The only operations emitted will be `GSK_PATH_MOVE`, `GSK_PATH_LINE` and
`GSK_PATH_CLOSE`.

Since: 4.14

</description>
<parameters>
<parameter name="GSK_PATH_FOREACH_ALLOW_ONLY_LINES">
<parameter_description> The default behavior, only allow lines.
</parameter_description>
</parameter>
<parameter name="GSK_PATH_FOREACH_ALLOW_QUAD">
<parameter_description> Allow emission of `GSK_PATH_QUAD` operations
</parameter_description>
</parameter>
<parameter name="GSK_PATH_FOREACH_ALLOW_CUBIC">
<parameter_description> Allow emission of `GSK_PATH_CUBIC` operations.
</parameter_description>
</parameter>
<parameter name="GSK_PATH_FOREACH_ALLOW_CONIC">
<parameter_description> Allow emission of `GSK_PATH_CONIC` operations.
</parameter_description>
</parameter>
</parameters>
</enum>

<enum name="GskPathIntersection">
<description>
The values of this enumeration classify intersections
between paths.

Since: 4.20

</description>
<parameters>
<parameter name="GSK_PATH_INTERSECTION_NONE">
<parameter_description> No intersection
</parameter_description>
</parameter>
<parameter name="GSK_PATH_INTERSECTION_NORMAL">
<parameter_description> A normal intersection, where the two paths
cross each other
</parameter_description>
</parameter>
<parameter name="GSK_PATH_INTERSECTION_START">
<parameter_description> The start of a segment where the two paths coincide
</parameter_description>
</parameter>
<parameter name="GSK_PATH_INTERSECTION_END">
<parameter_description> The end of a segment where the two paths coincide
</parameter_description>
</parameter>
</parameters>
</enum>

<enum name="GskPathOperation">
<description>
Describes the segments of a `GskPath`.

More values may be added in the future.

Since: 4.14

</description>
<parameters>
<parameter name="GSK_PATH_MOVE">
<parameter_description> A move-to operation, with 1 point describing the target point.
</parameter_description>
</parameter>
<parameter name="GSK_PATH_CLOSE">
<parameter_description> A close operation ending the current contour with a line back
to the starting point. Two points describe the start and end of the line.
</parameter_description>
</parameter>
<parameter name="GSK_PATH_LINE">
<parameter_description> A line-to operation, with 2 points describing the start and
end point of a straight line.
</parameter_description>
</parameter>
<parameter name="GSK_PATH_QUAD">
<parameter_description> A curve-to operation describing a quadratic Bézier curve
with 3 points describing the start point, the control point and the end
point of the curve.
</parameter_description>
</parameter>
<parameter name="GSK_PATH_CUBIC">
<parameter_description> A curve-to operation describing a cubic Bézier curve with 4
points describing the start point, the two control points and the end point
of the curve.
</parameter_description>
</parameter>
<parameter name="GSK_PATH_CONIC">
<parameter_description> A rational quadratic Bézier curve with 3 points describing
the start point, control point and end point of the curve. A weight for the
curve will be passed, too.
</parameter_description>
</parameter>
</parameters>
</enum>

<enum name="GskRenderNodeType">
<description>
The type of a node determines what the node is rendering.

</description>
<parameters>
<parameter name="GSK_NOT_A_RENDER_NODE">
<parameter_description> Error type. No node will ever have this type.
</parameter_description>
</parameter>
<parameter name="GSK_CONTAINER_NODE">
<parameter_description> A node containing a stack of children
</parameter_description>
</parameter>
<parameter name="GSK_CAIRO_NODE">
<parameter_description> A node drawing a `cairo_surface_t`
</parameter_description>
</parameter>
<parameter name="GSK_COLOR_NODE">
<parameter_description> A node drawing a single color rectangle
</parameter_description>
</parameter>
<parameter name="GSK_LINEAR_GRADIENT_NODE">
<parameter_description> A node drawing a linear gradient
</parameter_description>
</parameter>
<parameter name="GSK_REPEATING_LINEAR_GRADIENT_NODE">
<parameter_description> A node drawing a repeating linear gradient
</parameter_description>
</parameter>
<parameter name="GSK_RADIAL_GRADIENT_NODE">
<parameter_description> A node drawing a radial gradient
</parameter_description>
</parameter>
<parameter name="GSK_REPEATING_RADIAL_GRADIENT_NODE">
<parameter_description> A node drawing a repeating radial gradient
</parameter_description>
</parameter>
<parameter name="GSK_CONIC_GRADIENT_NODE">
<parameter_description> A node drawing a conic gradient
</parameter_description>
</parameter>
<parameter name="GSK_BORDER_NODE">
<parameter_description> A node stroking a border around an area
</parameter_description>
</parameter>
<parameter name="GSK_TEXTURE_NODE">
<parameter_description> A node drawing a `GdkTexture`
</parameter_description>
</parameter>
<parameter name="GSK_INSET_SHADOW_NODE">
<parameter_description> A node drawing an inset shadow
</parameter_description>
</parameter>
<parameter name="GSK_OUTSET_SHADOW_NODE">
<parameter_description> A node drawing an outset shadow
</parameter_description>
</parameter>
<parameter name="GSK_TRANSFORM_NODE">
<parameter_description> A node that renders its child after applying a matrix transform
</parameter_description>
</parameter>
<parameter name="GSK_OPACITY_NODE">
<parameter_description> A node that changes the opacity of its child
</parameter_description>
</parameter>
<parameter name="GSK_COLOR_MATRIX_NODE">
<parameter_description> A node that applies a color matrix to every pixel
</parameter_description>
</parameter>
<parameter name="GSK_REPEAT_NODE">
<parameter_description> A node that repeats the child's contents
</parameter_description>
</parameter>
<parameter name="GSK_CLIP_NODE">
<parameter_description> A node that clips its child to a rectangular area
</parameter_description>
</parameter>
<parameter name="GSK_ROUNDED_CLIP_NODE">
<parameter_description> A node that clips its child to a rounded rectangle
</parameter_description>
</parameter>
<parameter name="GSK_SHADOW_NODE">
<parameter_description> A node that draws a shadow below its child
</parameter_description>
</parameter>
<parameter name="GSK_BLEND_NODE">
<parameter_description> A node that blends two children together
</parameter_description>
</parameter>
<parameter name="GSK_CROSS_FADE_NODE">
<parameter_description> A node that cross-fades between two children
</parameter_description>
</parameter>
<parameter name="GSK_TEXT_NODE">
<parameter_description> A node containing a glyph string
</parameter_description>
</parameter>
<parameter name="GSK_BLUR_NODE">
<parameter_description> A node that applies a blur
</parameter_description>
</parameter>
<parameter name="GSK_DEBUG_NODE">
<parameter_description> Debug information that does not affect the rendering
</parameter_description>
</parameter>
<parameter name="GSK_GL_SHADER_NODE">
<parameter_description> A node that uses OpenGL fragment shaders to render
</parameter_description>
</parameter>
<parameter name="GSK_TEXTURE_SCALE_NODE">
<parameter_description>A node drawing a `GdkTexture` scaled and filtered.

Since: 4.10
</parameter_description>
</parameter>
<parameter name="GSK_MASK_NODE">
<parameter_description>A node that masks one child with another.

Since: 4.10
</parameter_description>
</parameter>
<parameter name="GSK_STROKE_NODE">
<parameter_description>A node that strokes a path.

Since: 4.14
</parameter_description>
</parameter>
<parameter name="GSK_FILL_NODE">
<parameter_description>A node that fills a path.

Since: 4.14
</parameter_description>
</parameter>
<parameter name="GSK_SUBSURFACE_NODE">
<parameter_description>A node that possibly redirects part of the scene graph to a subsurface.

Since: 4.14
</parameter_description>
</parameter>
<parameter name="GSK_COMPONENT_TRANSFER_NODE">
<parameter_description>A node that applies some function to each color component.

Since: 4.20
</parameter_description>
</parameter>
<parameter name="GSK_COPY_NODE">
<parameter_description>A node that copies the rendering canvas to be pasted later.

Since: 4.22
</parameter_description>
</parameter>
<parameter name="GSK_PASTE_NODE">
<parameter_description>A node that pastes a previously copied canvas.

Since: 4.22
</parameter_description>
</parameter>
<parameter name="GSK_COMPOSITE_NODE">
<parameter_description>A node that combines a child with the background using Porter/Duff
operations.

Since: 4.22
</parameter_description>
</parameter>
<parameter name="GSK_ISOLATION_NODE">
<parameter_description>A node that isolated content of its child from previous content.

Since: 4.22
</parameter_description>
</parameter>
<parameter name="GSK_DISPLACEMENT_NODE">
<parameter_description>A node that displaces content according to some mask.

Since: 4.22
</parameter_description>
</parameter>
<parameter name="GSK_ARITHMETIC_NODE">
<parameter_description>A node that combines two child nodes in an arithmetic way.

Since: 4.22
</parameter_description>
</parameter>
</parameters>
</enum>

<property name="GskRenderer:realized">
<description>
Whether the renderer has been associated with a surface or draw context.

</description>
</property>

<property name="GskRenderer:surface">
<description>
The surface associated with renderer.

</description>
</property>

<enum name="GskScalingFilter">
<description>
The filters used when scaling texture data.

The actual implementation of each filter is deferred to the
rendering pipeline.

</description>
<parameters>
<parameter name="GSK_SCALING_FILTER_LINEAR">
<parameter_description> linear interpolation filter
</parameter_description>
</parameter>
<parameter name="GSK_SCALING_FILTER_NEAREST">
<parameter_description> nearest neighbor interpolation filter
</parameter_description>
</parameter>
<parameter name="GSK_SCALING_FILTER_TRILINEAR">
<parameter_description> linear interpolation along each axis,
plus mipmap generation, with linear interpolation along the mipmap
levels
</parameter_description>
</parameter>
</parameters>
</enum>

<enum name="GskSerializationError">
<description>
Errors that can happen during (de)serialization.

</description>
<parameters>
<parameter name="GSK_SERIALIZATION_UNSUPPORTED_FORMAT">
<parameter_description> The format can not be identified
</parameter_description>
</parameter>
<parameter name="GSK_SERIALIZATION_UNSUPPORTED_VERSION">
<parameter_description> The version of the data is not
understood
</parameter_description>
</parameter>
<parameter name="GSK_SERIALIZATION_INVALID_DATA">
<parameter_description> The given data may not exist in
a proper serialization
</parameter_description>
</parameter>
</parameters>
</enum>

<enum name="GskSide">
<description>
The sides of a rectangle as used by `GskRectSnap` or `GskBorderNode`.

This is the order used by CSS shorthand arguments.

Since: 4.24

</description>
<parameters>
<parameter name="GSK_SIDE_TOP">
<parameter_description> The top side
</parameter_description>
</parameter>
<parameter name="GSK_SIDE_RIGHT">
<parameter_description> The right side
</parameter_description>
</parameter>
<parameter name="GSK_SIDE_BOTTOM">
<parameter_description> The bottom side
</parameter_description>
</parameter>
<parameter name="GSK_SIDE_LEFT">
<parameter_description> The left side
</parameter_description>
</parameter>
</parameters>
</enum>

<enum name="GskSnapDirection">
<description>
Specifies how a coordinate should be snapped to the pixel grid.

Note that the top and left sides of rectangles need to be snapped
in the opposite direction from the bottom and right sides to make
the rectangle grow or shrink.

Since: 4.24

</description>
<parameters>
<parameter name="GSK_SNAP_NONE">
<parameter_description> Don't snap the value
</parameter_description>
</parameter>
<parameter name="GSK_SNAP_FLOOR">
<parameter_description> Use floor() to snap
</parameter_description>
</parameter>
<parameter name="GSK_SNAP_CEIL">
<parameter_description> Use ceil() to snap
</parameter_description>
</parameter>
<parameter name="GSK_SNAP_ROUND">
<parameter_description> Use round() to snap
</parameter_description>
</parameter>
</parameters>
</enum>

<enum name="GskTransformCategory">
<description>
The categories of matrices relevant for GSK and GTK.

Note that any category includes matrices of all later categories.
So if you want to for example check if a matrix is a 2D matrix,
`category &gt;= GSK_TRANSFORM_CATEGORY_2D` is the way to do this.

Also keep in mind that rounding errors may cause matrices to not
conform to their categories. Otherwise, matrix operations done via
multiplication will not worsen categories. So for the matrix
multiplication `C = A * B`, `category(C) = MIN (category(A), category(B))`.

</description>
<parameters>
<parameter name="GSK_TRANSFORM_CATEGORY_UNKNOWN">
<parameter_description> The category of the matrix has not been
determined.
</parameter_description>
</parameter>
<parameter name="GSK_TRANSFORM_CATEGORY_ANY">
<parameter_description> Analyzing the matrix concluded that it does
not fit in any other category.
</parameter_description>
</parameter>
<parameter name="GSK_TRANSFORM_CATEGORY_3D">
<parameter_description> The matrix is a 3D matrix. This means that
the w column (the last column) has the values (0, 0, 0, 1).
</parameter_description>
</parameter>
<parameter name="GSK_TRANSFORM_CATEGORY_2D">
<parameter_description> The matrix is a 2D matrix. This is equivalent
to graphene_matrix_is_2d() returning %TRUE. In particular, this
means that Cairo can deal with the matrix.
</parameter_description>
</parameter>
<parameter name="GSK_TRANSFORM_CATEGORY_2D_AFFINE">
<parameter_description> The matrix is a combination of 2D scale
and 2D translation operations. In particular, this means that any
rectangle can be transformed exactly using this matrix.
</parameter_description>
</parameter>
<parameter name="GSK_TRANSFORM_CATEGORY_2D_TRANSLATE">
<parameter_description> The matrix is a 2D translation.
</parameter_description>
</parameter>
<parameter name="GSK_TRANSFORM_CATEGORY_IDENTITY">
<parameter_description> The matrix is the identity matrix.
</parameter_description>
</parameter>
</parameters>
</enum>

<function name="gsk_blend_node_get_blend_mode">
<description>
Retrieves the blend mode used by @node.


</description>
<parameters>
<parameter name="node">
<parameter_description> a blending `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> the blend mode
</return>
</function>

<function name="gsk_blend_node_get_bottom_child">
<description>
Retrieves the bottom `GskRenderNode` child of the @node.


</description>
<parameters>
<parameter name="node">
<parameter_description> a blending `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> the bottom child node
</return>
</function>

<function name="gsk_blend_node_get_top_child">
<description>
Retrieves the top `GskRenderNode` child of the @node.


</description>
<parameters>
<parameter name="node">
<parameter_description> a blending `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> the top child node
</return>
</function>

<function name="gsk_blend_node_new">
<description>
Creates a `GskRenderNode` that will use @blend_mode to blend the @top
node onto the @bottom node.


</description>
<parameters>
<parameter name="bottom">
<parameter_description> The bottom node to be drawn
</parameter_description>
</parameter>
<parameter name="top">
<parameter_description> The node to be blended onto the @bottom node
</parameter_description>
</parameter>
<parameter name="blend_mode">
<parameter_description> The blend mode to use
</parameter_description>
</parameter>
</parameters>
<return> A new `GskRenderNode`
</return>
</function>

<function name="gsk_blur_node_get_child">
<description>
Retrieves the child `GskRenderNode` of the blur @node.


</description>
<parameters>
<parameter name="node">
<parameter_description> a blur `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> the blurred child node
</return>
</function>

<function name="gsk_blur_node_get_radius">
<description>
Retrieves the blur radius of the @node.


</description>
<parameters>
<parameter name="node">
<parameter_description> a blur `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> the blur radius
</return>
</function>

<function name="gsk_blur_node_new">
<description>
Creates a render node that blurs the child.


</description>
<parameters>
<parameter name="child">
<parameter_description> the child node to blur
</parameter_description>
</parameter>
<parameter name="radius">
<parameter_description> the blur radius. Must be positive
</parameter_description>
</parameter>
</parameters>
<return> a new `GskRenderNode`
</return>
</function>

<function name="gsk_border_node_get_border_snap">
<description>
Retrieves the snap value for the border

Since: 4.24

</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for a border
</parameter_description>
</parameter>
</parameters>
<return> the snap value

</return>
</function>

<function name="gsk_border_node_get_colors">
<description>
Retrieves the colors of the border.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for a border
</parameter_description>
</parameter>
</parameters>
<return> an array of 4 `GdkRGBA`
structs for the top, right, bottom and left color of the border
</return>
</function>

<function name="gsk_border_node_get_outline">
<description>
Retrieves the outline of the border.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for a border
</parameter_description>
</parameter>
</parameters>
<return> the outline of the border
</return>
</function>

<function name="gsk_border_node_get_snap">
<description>
Retrieves the snap value for this node

Since: 4.24

</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for a border
</parameter_description>
</parameter>
</parameters>
<return> the snap value

</return>
</function>

<function name="gsk_border_node_get_widths">
<description>
Retrieves the stroke widths of the border.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for a border
</parameter_description>
</parameter>
</parameters>
<return> an array of 4 floats
for the top, right, bottom and left stroke width of the border,
respectively
</return>
</function>

<function name="gsk_border_node_new">
<description>
Creates a `GskRenderNode` that will stroke a border rectangle inside the
given @outline.

The 4 sides of the border can have different widths and colors.


</description>
<parameters>
<parameter name="outline">
<parameter_description> a `GskRoundedRect` describing the outline of the border
</parameter_description>
</parameter>
<parameter name="border_width">
<parameter_description> the stroke width of the border on
the top, right, bottom and left side respectively.
</parameter_description>
</parameter>
<parameter name="border_color">
<parameter_description> the color used on the top, right,
bottom and left side.
</parameter_description>
</parameter>
</parameters>
<return> A new `GskRenderNode`
</return>
</function>

<function name="gsk_cairo_node_get_draw_context">
<description>
Creates a Cairo context for drawing using the surface associated
to the render node.

If no surface exists yet, a surface will be created optimized for
rendering to @renderer.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for a Cairo surface
</parameter_description>
</parameter>
</parameters>
<return> a Cairo context used for drawing; use
cairo_destroy() when done drawing
</return>
</function>

<function name="gsk_cairo_node_get_surface">
<description>
Retrieves the Cairo surface used by the render node.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for a Cairo surface
</parameter_description>
</parameter>
</parameters>
<return> a Cairo surface
</return>
</function>

<function name="gsk_cairo_node_new">
<description>
Creates a `GskRenderNode` that will render a cairo surface
into the area given by @bounds.

You can draw to the cairo surface using [method@Gsk.CairoNode.get_draw_context].


</description>
<parameters>
<parameter name="bounds">
<parameter_description> the rectangle to render to
</parameter_description>
</parameter>
</parameters>
<return> A new `GskRenderNode`
</return>
</function>

<function name="gsk_cairo_renderer_new">
<description>
Creates a new Cairo renderer.

The Cairo renderer is the fallback renderer drawing in ways similar
to how GTK 3 drew its content. Its primary use is as comparison tool.

The Cairo renderer is incomplete. It cannot render 3D transformed
content and will instead render an error marker. Its usage should be
avoided.


</description>
<parameters>
</parameters>
<return> a new Cairo renderer.
</return>
</function>

<function name="gsk_clip_node_get_child">
<description>
Gets the child node that is getting clipped by the given @node.


</description>
<parameters>
<parameter name="node">
<parameter_description> a clip @GskRenderNode
</parameter_description>
</parameter>
</parameters>
<return> The child that is getting clipped
</return>
</function>

<function name="gsk_clip_node_get_clip">
<description>
Retrieves the clip rectangle for @node.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskClipNode`
</parameter_description>
</parameter>
</parameters>
<return> a clip rectangle
</return>
</function>

<function name="gsk_clip_node_get_snap">
<description>
Retrieves the snap value for this node

Since: 4.24

</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskClipNode`
</parameter_description>
</parameter>
</parameters>
<return> the snap value

</return>
</function>

<function name="gsk_clip_node_new">
<description>
Creates a `GskRenderNode` that will clip the @child to the area
given by @clip.


</description>
<parameters>
<parameter name="child">
<parameter_description> The node to draw
</parameter_description>
</parameter>
<parameter name="clip">
<parameter_description> The clip to apply
</parameter_description>
</parameter>
</parameters>
<return> A new `GskRenderNode`
</return>
</function>

<function name="gsk_color_matrix_node_get_child">
<description>
Gets the child node that is getting its colors modified by the given @node.


</description>
<parameters>
<parameter name="node">
<parameter_description> a color matrix `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> The child that is getting its colors modified
</return>
</function>

<function name="gsk_color_matrix_node_get_color_matrix">
<description>
Retrieves the color matrix used by the @node.


</description>
<parameters>
<parameter name="node">
<parameter_description> a color matrix `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> a 4x4 color matrix
</return>
</function>

<function name="gsk_color_matrix_node_get_color_offset">
<description>
Retrieves the color offset used by the @node.


</description>
<parameters>
<parameter name="node">
<parameter_description> a color matrix `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> a color vector
</return>
</function>

<function name="gsk_color_matrix_node_get_snap">
<description>
Retrieves the snap value for this node

Since: 4.24

</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskColorMatrixNode`
</parameter_description>
</parameter>
</parameters>
<return> the snap value

</return>
</function>

<function name="gsk_color_matrix_node_new">
<description>
Creates a `GskRenderNode` that will drawn the @child with
@color_matrix.

In particular, the node will transform colors by applying

pixel = transpose(color_matrix) * pixel + color_offset

for every pixel. The transformation operates on unpremultiplied
colors, with color components ordered R, G, B, A.


</description>
<parameters>
<parameter name="child">
<parameter_description> The node to draw
</parameter_description>
</parameter>
<parameter name="color_matrix">
<parameter_description> The matrix to apply
</parameter_description>
</parameter>
<parameter name="color_offset">
<parameter_description> Values to add to the color
</parameter_description>
</parameter>
</parameters>
<return> A new `GskRenderNode`
</return>
</function>

<function name="gsk_color_node_get_color">
<description>
Retrieves the color of the given @node.

The value returned by this function will not be correct
if the render node was created for a non-sRGB color.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> the color of the node
</return>
</function>

<function name="gsk_color_node_get_snap">
<description>
Retrieves the snap value for this node

Since: 4.24

</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for textures
</parameter_description>
</parameter>
</parameters>
<return> the snap value

</return>
</function>

<function name="gsk_color_node_new">
<description>
Creates a `GskRenderNode` that will render the color specified by @rgba into
the area given by @bounds.


</description>
<parameters>
<parameter name="rgba">
<parameter_description> a `GdkRGBA` specifying a color
</parameter_description>
</parameter>
<parameter name="bounds">
<parameter_description> the rectangle to render the color into
</parameter_description>
</parameter>
</parameters>
<return> A new `GskRenderNode`
</return>
</function>

<function name="gsk_component_transfer_copy">
<description>
Creates a copy of @other.

Since: 4.20

</description>
<parameters>
<parameter name="other">
<parameter_description> a component transfer
</parameter_description>
</parameter>
</parameters>
<return> a newly allocated copy of @other

</return>
</function>

<function name="gsk_component_transfer_equal">
<description>
Compares two component transfers for equality.

Since: 4.20

</description>
<parameters>
<parameter name="self">
<parameter_description> a component transfer
</parameter_description>
</parameter>
<parameter name="other">
<parameter_description> another component transfer
</parameter_description>
</parameter>
</parameters>
<return> true if @self and @other are equal

</return>
</function>

<function name="gsk_component_transfer_free">
<description>
Frees a component transfer.

Since: 4.20

</description>
<parameters>
<parameter name="self">
<parameter_description> a component transfer
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_component_transfer_new_discrete">
<description>
Creates a new component transfer that applies
a step function.

The new value is computed as

C' = values[k]

where k is the smallest value such that

k / n &lt;= C &lt; (k + 1) / n

&lt;figure&gt;
&lt;picture&gt;
&lt;source srcset=&quot;discrete-dark.png&quot; media=&quot;(prefers-color-scheme: dark)&quot;&gt;
&lt;img alt=&quot;Component transfer: discrete&quot; src=&quot;discrete-light.png&quot;&gt;
&lt;/picture&gt;
&lt;/figure&gt;

Since: 4.20

</description>
<parameters>
<parameter name="n">
<parameter_description> Number of values
</parameter_description>
</parameter>
<parameter name="values">
<parameter_description> Values
</parameter_description>
</parameter>
</parameters>
<return> a new `GskComponentTransfer`

</return>
</function>

<function name="gsk_component_transfer_new_gamma">
<description>
Creates a new component transfer that applies
a gamma transform.

The new value is computed as

C' = amp * pow (C, exp) + ofs

&lt;figure&gt;
&lt;picture&gt;
&lt;source srcset=&quot;gamma-dark.png&quot; media=&quot;(prefers-color-scheme: dark)&quot;&gt;
&lt;img alt=&quot;Component transfer: gamma&quot; src=&quot;gamma-light.png&quot;&gt;
&lt;/picture&gt;
&lt;/figure&gt;

Since: 4.20

</description>
<parameters>
<parameter name="amp">
<parameter_description> Amplitude
</parameter_description>
</parameter>
<parameter name="exp">
<parameter_description> Exponent
</parameter_description>
</parameter>
<parameter name="ofs">
<parameter_description> Offset
</parameter_description>
</parameter>
</parameters>
<return> a new `GskComponentTransfer`

</return>
</function>

<function name="gsk_component_transfer_new_identity">
<description>
Creates a new component transfer that doesn't
change the component value.

&lt;figure&gt;
&lt;picture&gt;
&lt;source srcset=&quot;identity-dark.png&quot; media=&quot;(prefers-color-scheme: dark)&quot;&gt;
&lt;img alt=&quot;Component transfer: identity&quot; src=&quot;identity-light.png&quot;&gt;
&lt;/picture&gt;
&lt;/figure&gt;

Since: 4.20

</description>
<parameters>
</parameters>
<return> a new `GskComponentTransfer`

</return>
</function>

<function name="gsk_component_transfer_new_levels">
<description>
Creates a new component transfer that limits
the values of the component to `n` levels.

The new value is computed as

C' = (floor (C * n) + 0.5) / n

&lt;figure&gt;
&lt;picture&gt;
&lt;source srcset=&quot;levels-dark.png&quot; media=&quot;(prefers-color-scheme: dark)&quot;&gt;
&lt;img alt=&quot;Component transfer: levels&quot; src=&quot;levels-light.png&quot;&gt;
&lt;/picture&gt;
&lt;/figure&gt;

Since: 4.20

</description>
<parameters>
<parameter name="n">
<parameter_description> Number of levels
</parameter_description>
</parameter>
</parameters>
<return> a new `GskComponentTransfer`

</return>
</function>

<function name="gsk_component_transfer_new_linear">
<description>
Creates a new component transfer that applies
a linear transform.

The new value is computed as

C' = C * m + b

&lt;figure&gt;
&lt;picture&gt;
&lt;source srcset=&quot;linear-dark.png&quot; media=&quot;(prefers-color-scheme: dark)&quot;&gt;
&lt;img alt=&quot;Component transfer: linear&quot; src=&quot;linear-light.png&quot;&gt;
&lt;/picture&gt;
&lt;/figure&gt;

Since: 4.20

</description>
<parameters>
<parameter name="m">
<parameter_description> Slope
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> Offset
</parameter_description>
</parameter>
</parameters>
<return> a new `GskComponentTransfer`

</return>
</function>

<function name="gsk_component_transfer_new_table">
<description>
Creates a new component transfer that applies
a piecewise linear function.

The new value is computed as

C' = values[k] + (C - k / (n - 1)) * n * (values[k + 1] - values[k])

where k is the smallest value such that

k / (n - 1) &lt;= C &lt; (k + 1) / (n - 1)

&lt;figure&gt;
&lt;picture&gt;
&lt;source srcset=&quot;table-dark.png&quot; media=&quot;(prefers-color-scheme: dark)&quot;&gt;
&lt;img alt=&quot;Component transfer: table&quot; src=&quot;table-light.png&quot;&gt;
&lt;/picture&gt;
&lt;/figure&gt;

Since: 4.20

</description>
<parameters>
<parameter name="n">
<parameter_description> Number of values
</parameter_description>
</parameter>
<parameter name="values">
<parameter_description> Values
</parameter_description>
</parameter>
</parameters>
<return> a new `GskComponentTransfer`

</return>
</function>

<function name="gsk_component_transfer_node_get_child">
<description>
Gets the child node that is getting drawn by the given @node.

Since: 4.20

</description>
<parameters>
<parameter name="node">
<parameter_description> a component transfer `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> the child `GskRenderNode`

</return>
</function>

<function name="gsk_component_transfer_node_get_transfer">
<description>
Gets the component transfer for one of the components.

Since: 4.20

</description>
<parameters>
<parameter name="node">
<parameter_description> a component transfer `GskRenderNode`
</parameter_description>
</parameter>
<parameter name="component">
<parameter_description> the component to get the transfer for
</parameter_description>
</parameter>
</parameters>
<return> the `GskComponentTransfer`

</return>
</function>

<function name="gsk_component_transfer_node_new">
<description>
Creates a render node that will apply component
transfers to a child node.

Since: 4.20

</description>
<parameters>
<parameter name="child">
<parameter_description> The child to apply component transfers to
</parameter_description>
</parameter>
<parameter name="r">
<parameter_description> transfer for the red component
</parameter_description>
</parameter>
<parameter name="g">
<parameter_description> transfer for the green component
</parameter_description>
</parameter>
<parameter name="b">
<parameter_description> transfer for the blue component
</parameter_description>
</parameter>
<parameter name="a">
<parameter_description> transfer for the alpha component
</parameter_description>
</parameter>
</parameters>
<return> A new `GskRenderNode`

</return>
</function>

<function name="gsk_composite_node_get_child">
<description>
Gets the child node that is getting composited by the given @node.

Since: 4.22

</description>
<parameters>
<parameter name="node">
<parameter_description> a composite `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> the child `GskRenderNode`

</return>
</function>

<function name="gsk_composite_node_get_mask">
<description>
Gets the mask node that describes the region where the compositing
applies.

Since: 4.22

</description>
<parameters>
<parameter name="node">
<parameter_description> a composite `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> the mask `GskRenderNode`

</return>
</function>

<function name="gsk_composite_node_get_operator">
<description>
Gets the compositing operator used by this node.

Since: 4.22

</description>
<parameters>
<parameter name="node">
<parameter_description> a composite `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> The compositing operator

</return>
</function>

<function name="gsk_composite_node_new">
<description>
Creates a `GskRenderNode` that will composite the child onto the
background with the given operator wherever the mask is set.

Note that various operations can modify the background outside of
the child's bounds, so the mask may cause visual changes outside
of the child.

Since: 4.22

</description>
<parameters>
<parameter name="child">
<parameter_description> The child to composite
</parameter_description>
</parameter>
<parameter name="mask">
<parameter_description> The mask where the compositing will apply
</parameter_description>
</parameter>
<parameter name="op">
<parameter_description> The compositing operator
</parameter_description>
</parameter>
</parameters>
<return> A new `GskRenderNode`

</return>
</function>

<function name="gsk_conic_gradient_node_get_angle">
<description>
Retrieves the angle for the gradient in radians, normalized in [0, 2 * PI].

The angle is starting at the top and going clockwise, as expressed
in the css specification:

angle = 90 - gsk_conic_gradient_node_get_rotation()

Since: 4.2

</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for a conic gradient
</parameter_description>
</parameter>
</parameters>
<return> the angle for the gradient

</return>
</function>

<function name="gsk_conic_gradient_node_get_center">
<description>
Retrieves the center pointer for the gradient.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for a conic gradient
</parameter_description>
</parameter>
</parameters>
<return> the center point for the gradient
</return>
</function>

<function name="gsk_conic_gradient_node_get_color_stops">
<description>
Retrieves the color stops in the gradient.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for a conic gradient
</parameter_description>
</parameter>
<parameter name="n_stops">
<parameter_description> the number of color stops in the returned array
</parameter_description>
</parameter>
</parameters>
<return> the color stops in the gradient
</return>
</function>

<function name="gsk_conic_gradient_node_get_n_color_stops">
<description>
Retrieves the number of color stops in the gradient.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for a conic gradient
</parameter_description>
</parameter>
</parameters>
<return> the number of color stops
</return>
</function>

<function name="gsk_conic_gradient_node_get_rotation">
<description>
Retrieves the rotation for the gradient in degrees.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for a conic gradient
</parameter_description>
</parameter>
</parameters>
<return> the rotation for the gradient
</return>
</function>

<function name="gsk_conic_gradient_node_get_snap">
<description>
Retrieves the snap value for this node

Since: 4.24

</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for a conic gradient
</parameter_description>
</parameter>
</parameters>
<return> the snap value

</return>
</function>

<function name="gsk_conic_gradient_node_new">
<description>
Creates a `GskRenderNode` that draws a conic gradient.

The conic gradient
starts around @center in the direction of @rotation. A rotation of 0 means
that the gradient points up. Color stops are then added clockwise.


</description>
<parameters>
<parameter name="bounds">
<parameter_description> the bounds of the node
</parameter_description>
</parameter>
<parameter name="center">
<parameter_description> the center of the gradient
</parameter_description>
</parameter>
<parameter name="rotation">
<parameter_description> the rotation of the gradient in degrees
</parameter_description>
</parameter>
<parameter name="color_stops">
<parameter_description> a pointer to an array of
`GskColorStop` defining the gradient. The offsets of all color stops
must be increasing. The first stop's offset must be &gt;= 0 and the last
stop's offset must be &lt;= 1.
</parameter_description>
</parameter>
<parameter name="n_color_stops">
<parameter_description> the number of elements in @color_stops
</parameter_description>
</parameter>
</parameters>
<return> A new `GskRenderNode`
</return>
</function>

<function name="gsk_container_node_get_child">
<description>
Gets one of the children of @container.


</description>
<parameters>
<parameter name="node">
<parameter_description> a container `GskRenderNode`
</parameter_description>
</parameter>
<parameter name="idx">
<parameter_description> the position of the child to get
</parameter_description>
</parameter>
</parameters>
<return> the @idx'th child of @container
</return>
</function>

<function name="gsk_container_node_get_n_children">
<description>
Retrieves the number of direct children of @node.


</description>
<parameters>
<parameter name="node">
<parameter_description> a container `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> the number of children of the `GskRenderNode`
</return>
</function>

<function name="gsk_container_node_new">
<description>
Creates a new `GskRenderNode` instance for holding the given @children.

The new node will acquire a reference to each of the children.


</description>
<parameters>
<parameter name="children">
<parameter_description> The children of the node
</parameter_description>
</parameter>
<parameter name="n_children">
<parameter_description> Number of children in the @children array
</parameter_description>
</parameter>
</parameters>
<return> the new `GskRenderNode`
</return>
</function>

<function name="gsk_copy_node_get_child">
<description>
Gets the child node that is getting drawn by the given @node.

Since: 4.22

</description>
<parameters>
<parameter name="node">
<parameter_description> a copy `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> the child `GskRenderNode`

</return>
</function>

<function name="gsk_copy_node_new">
<description>
Creates a `GskRenderNode` that copies the current rendering
canvas for playback by paste nodes that are part of the child.

Since: 4.22

</description>
<parameters>
<parameter name="child">
<parameter_description> The child
</parameter_description>
</parameter>
</parameters>
<return> A new `GskRenderNode`

</return>
</function>

<function name="gsk_cross_fade_node_get_end_child">
<description>
Retrieves the child `GskRenderNode` at the end of the cross-fade.


</description>
<parameters>
<parameter name="node">
<parameter_description> a cross-fading `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> a `GskRenderNode`
</return>
</function>

<function name="gsk_cross_fade_node_get_progress">
<description>
Retrieves the progress value of the cross fade.


</description>
<parameters>
<parameter name="node">
<parameter_description> a cross-fading `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> the progress value, between 0 and 1
</return>
</function>

<function name="gsk_cross_fade_node_get_start_child">
<description>
Retrieves the child `GskRenderNode` at the beginning of the cross-fade.


</description>
<parameters>
<parameter name="node">
<parameter_description> a cross-fading `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> a `GskRenderNode`
</return>
</function>

<function name="gsk_cross_fade_node_new">
<description>
Creates a `GskRenderNode` that will do a cross-fade between @start and @end.


</description>
<parameters>
<parameter name="start">
<parameter_description> The start node to be drawn
</parameter_description>
</parameter>
<parameter name="end">
<parameter_description> The node to be cross_fadeed onto the @start node
</parameter_description>
</parameter>
<parameter name="progress">
<parameter_description> How far the fade has progressed from start to end. The value will
be clamped to the range [0 ... 1]
</parameter_description>
</parameter>
</parameters>
<return> A new `GskRenderNode`
</return>
</function>

<function name="gsk_debug_node_get_child">
<description>
Gets the child node that is getting drawn by the given @node.


</description>
<parameters>
<parameter name="node">
<parameter_description> a debug `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> the child `GskRenderNode`
</return>
</function>

<function name="gsk_debug_node_get_message">
<description>
Gets the debug message that was set on this node


</description>
<parameters>
<parameter name="node">
<parameter_description> a debug `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> The debug message
</return>
</function>

<function name="gsk_debug_node_new">
<description>
Creates a `GskRenderNode` that will add debug information about
the given @child.

Adding this node has no visual effect.


</description>
<parameters>
<parameter name="child">
<parameter_description> The child to add debug info for
</parameter_description>
</parameter>
<parameter name="message">
<parameter_description> The debug message
</parameter_description>
</parameter>
</parameters>
<return> A new `GskRenderNode`
</return>
</function>

<function name="gsk_fill_node_get_child">
<description>
Gets the child node that is getting drawn by the given @node.

Since: 4.14

</description>
<parameters>
<parameter name="node">
<parameter_description> a fill `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> The child that is getting drawn

</return>
</function>

<function name="gsk_fill_node_get_fill_rule">
<description>
Retrieves the fill rule used to determine how the path is filled.

Since: 4.14

</description>
<parameters>
<parameter name="node">
<parameter_description> a fill `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> a `GskFillRule`

</return>
</function>

<function name="gsk_fill_node_get_path">
<description>
Retrieves the path used to describe the area filled with the contents of
the @node.

Since: 4.14

</description>
<parameters>
<parameter name="node">
<parameter_description> a fill `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> a `GskPath`

</return>
</function>

<function name="gsk_fill_node_new">
<description>
Creates a `GskRenderNode` that will fill the @child in the area
given by @path and @fill_rule.

Since: 4.14

</description>
<parameters>
<parameter name="child">
<parameter_description> The node to fill the area with
</parameter_description>
</parameter>
<parameter name="path">
<parameter_description> The path describing the area to fill
</parameter_description>
</parameter>
<parameter name="fill_rule">
<parameter_description> The fill rule to use
</parameter_description>
</parameter>
</parameters>
<return> A new `GskRenderNode`

</return>
</function>

<function name="gsk_gl_shader_compile">
<description>
Tries to compile the @shader for the given @renderer.

If there is a problem, this function returns %FALSE and reports
an error. You should use this function before relying on the shader
for rendering and use a fallback with a simpler shader or without
shaders if it fails.

Note that this will modify the rendering state (for example
change the current GL context) and requires the renderer to be
set up. This means that the widget has to be realized. Commonly you
want to call this from the realize signal of a widget, or during
widget snapshot.

Deprecated: 4.16: GTK's new Vulkan-focused rendering
does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
for OpenGL rendering.

</description>
<parameters>
<parameter name="shader">
<parameter_description> a `GskGLShader`
</parameter_description>
</parameter>
<parameter name="renderer">
<parameter_description> a `GskRenderer`
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> location to store error in
</parameter_description>
</parameter>
</parameters>
<return> %TRUE on success, %FALSE if an error occurred

</return>
</function>

<function name="gsk_gl_shader_find_uniform_by_name">
<description>
Looks for a uniform by the name @name, and returns the index
of the uniform, or -1 if it was not found.

Deprecated: 4.16: GTK's new Vulkan-focused rendering
does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
for OpenGL rendering.

</description>
<parameters>
<parameter name="shader">
<parameter_description> a `GskGLShader`
</parameter_description>
</parameter>
<parameter name="name">
<parameter_description> uniform name
</parameter_description>
</parameter>
</parameters>
<return> The index of the uniform, or -1

</return>
</function>

<function name="gsk_gl_shader_format_args">
<description>
Formats the uniform data as needed for feeding the named uniforms
values into the shader.

The argument list is a list of pairs of names, and values for the types
that match the declared uniforms (i.e. double/int/guint/gboolean for
primitive values and `graphene_vecN_t *` for vecN uniforms).

Any uniforms of the shader that are not included in the argument list
are zero-initialized.

Deprecated: 4.16: GTK's new Vulkan-focused rendering
does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
for OpenGL rendering.

</description>
<parameters>
<parameter name="shader">
<parameter_description> a `GskGLShader`
</parameter_description>
</parameter>
<parameter name="Varargs">
<parameter_description> name-Value pairs for the uniforms of @shader, ending with
a %NULL name
</parameter_description>
</parameter>
</parameters>
<return> A newly allocated block of data which can be
passed to [ctor@Gsk.GLShaderNode.new].

</return>
</function>

<function name="gsk_gl_shader_format_args_va">
<description>
Formats the uniform data as needed for feeding the named uniforms
values into the shader.

The argument list is a list of pairs of names, and values for the
types that match the declared uniforms (i.e. double/int/guint/gboolean
for primitive values and `graphene_vecN_t *` for vecN uniforms).

It is an error to pass a uniform name that is not declared by the shader.

Any uniforms of the shader that are not included in the argument list
are zero-initialized.

Deprecated: 4.16: GTK's new Vulkan-focused rendering
does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
for OpenGL rendering.

</description>
<parameters>
<parameter name="shader">
<parameter_description> a `GskGLShader`
</parameter_description>
</parameter>
<parameter name="uniforms">
<parameter_description> name-Value pairs for the uniforms of @shader, ending
with a %NULL name
</parameter_description>
</parameter>
</parameters>
<return> A newly allocated block of data which can be
passed to [ctor@Gsk.GLShaderNode.new].

</return>
</function>

<function name="gsk_gl_shader_get_arg_bool">
<description>
Gets the value of the uniform @idx in the @args block.

The uniform must be of bool type.

Deprecated: 4.16: GTK's new Vulkan-focused rendering
does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
for OpenGL rendering.

</description>
<parameters>
<parameter name="shader">
<parameter_description> a `GskGLShader`
</parameter_description>
</parameter>
<parameter name="args">
<parameter_description> uniform arguments
</parameter_description>
</parameter>
<parameter name="idx">
<parameter_description> index of the uniform
</parameter_description>
</parameter>
</parameters>
<return> The value

</return>
</function>

<function name="gsk_gl_shader_get_arg_float">
<description>
Gets the value of the uniform @idx in the @args block.

The uniform must be of float type.

Deprecated: 4.16: GTK's new Vulkan-focused rendering
does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
for OpenGL rendering.

</description>
<parameters>
<parameter name="shader">
<parameter_description> a `GskGLShader`
</parameter_description>
</parameter>
<parameter name="args">
<parameter_description> uniform arguments
</parameter_description>
</parameter>
<parameter name="idx">
<parameter_description> index of the uniform
</parameter_description>
</parameter>
</parameters>
<return> The value

</return>
</function>

<function name="gsk_gl_shader_get_arg_int">
<description>
Gets the value of the uniform @idx in the @args block.

The uniform must be of int type.

Deprecated: 4.16: GTK's new Vulkan-focused rendering
does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
for OpenGL rendering.

</description>
<parameters>
<parameter name="shader">
<parameter_description> a `GskGLShader`
</parameter_description>
</parameter>
<parameter name="args">
<parameter_description> uniform arguments
</parameter_description>
</parameter>
<parameter name="idx">
<parameter_description> index of the uniform
</parameter_description>
</parameter>
</parameters>
<return> The value

</return>
</function>

<function name="gsk_gl_shader_get_arg_uint">
<description>
Gets the value of the uniform @idx in the @args block.

The uniform must be of uint type.

Deprecated: 4.16: GTK's new Vulkan-focused rendering
does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
for OpenGL rendering.

</description>
<parameters>
<parameter name="shader">
<parameter_description> a `GskGLShader`
</parameter_description>
</parameter>
<parameter name="args">
<parameter_description> uniform arguments
</parameter_description>
</parameter>
<parameter name="idx">
<parameter_description> index of the uniform
</parameter_description>
</parameter>
</parameters>
<return> The value

</return>
</function>

<function name="gsk_gl_shader_get_arg_vec2">
<description>
Gets the value of the uniform @idx in the @args block.

The uniform must be of vec2 type.

Deprecated: 4.16: GTK's new Vulkan-focused rendering
does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
for OpenGL rendering.

</description>
<parameters>
<parameter name="shader">
<parameter_description> a `GskGLShader`
</parameter_description>
</parameter>
<parameter name="args">
<parameter_description> uniform arguments
</parameter_description>
</parameter>
<parameter name="idx">
<parameter_description> index of the uniform
</parameter_description>
</parameter>
<parameter name="out_value">
<parameter_description> location to store the uniform value in
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_gl_shader_get_arg_vec3">
<description>
Gets the value of the uniform @idx in the @args block.

The uniform must be of vec3 type.

Deprecated: 4.16: GTK's new Vulkan-focused rendering
does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
for OpenGL rendering.

</description>
<parameters>
<parameter name="shader">
<parameter_description> a `GskGLShader`
</parameter_description>
</parameter>
<parameter name="args">
<parameter_description> uniform arguments
</parameter_description>
</parameter>
<parameter name="idx">
<parameter_description> index of the uniform
</parameter_description>
</parameter>
<parameter name="out_value">
<parameter_description> location to store the uniform value in
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_gl_shader_get_arg_vec4">
<description>
Gets the value of the uniform @idx in the @args block.

The uniform must be of vec4 type.

Deprecated: 4.16: GTK's new Vulkan-focused rendering
does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
for OpenGL rendering.

</description>
<parameters>
<parameter name="shader">
<parameter_description> a `GskGLShader`
</parameter_description>
</parameter>
<parameter name="args">
<parameter_description> uniform arguments
</parameter_description>
</parameter>
<parameter name="idx">
<parameter_description> index of the uniform
</parameter_description>
</parameter>
<parameter name="out_value">
<parameter_description> location to store set the uniform value in
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_gl_shader_get_args_size">
<description>
Get the size of the data block used to specify arguments for this shader.

Deprecated: 4.16: GTK's new Vulkan-focused rendering
does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
for OpenGL rendering.

</description>
<parameters>
<parameter name="shader">
<parameter_description> a `GskGLShader`
</parameter_description>
</parameter>
</parameters>
<return> The size of the data block

</return>
</function>

<function name="gsk_gl_shader_get_n_textures">
<description>
Returns the number of textures that the shader requires.

This can be used to check that the a passed shader works
in your usecase. It is determined by looking at the highest
u_textureN value that the shader defines.

Deprecated: 4.16: GTK's new Vulkan-focused rendering
does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
for OpenGL rendering.

</description>
<parameters>
<parameter name="shader">
<parameter_description> a `GskGLShader`
</parameter_description>
</parameter>
</parameters>
<return> The number of texture inputs required by @shader

</return>
</function>

<function name="gsk_gl_shader_get_n_uniforms">
<description>
Get the number of declared uniforms for this shader.

Deprecated: 4.16: GTK's new Vulkan-focused rendering
does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
for OpenGL rendering.

</description>
<parameters>
<parameter name="shader">
<parameter_description> a `GskGLShader`
</parameter_description>
</parameter>
</parameters>
<return> The number of declared uniforms

</return>
</function>

<function name="gsk_gl_shader_get_resource">
<description>
Gets the resource path for the GLSL sourcecode being used
to render this shader.

Deprecated: 4.16: GTK's new Vulkan-focused rendering
does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
for OpenGL rendering.

</description>
<parameters>
<parameter name="shader">
<parameter_description> a `GskGLShader`
</parameter_description>
</parameter>
</parameters>
<return> The resource path for the shader

</return>
</function>

<function name="gsk_gl_shader_get_source">
<description>
Gets the GLSL sourcecode being used to render this shader.

Deprecated: 4.16: GTK's new Vulkan-focused rendering
does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
for OpenGL rendering.

</description>
<parameters>
<parameter name="shader">
<parameter_description> a `GskGLShader`
</parameter_description>
</parameter>
</parameters>
<return> The source code for the shader

</return>
</function>

<function name="gsk_gl_shader_get_uniform_name">
<description>
Get the name of the declared uniform for this shader at index @idx.

Deprecated: 4.16: GTK's new Vulkan-focused rendering
does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
for OpenGL rendering.

</description>
<parameters>
<parameter name="shader">
<parameter_description> a `GskGLShader`
</parameter_description>
</parameter>
<parameter name="idx">
<parameter_description> index of the uniform
</parameter_description>
</parameter>
</parameters>
<return> The name of the declared uniform

</return>
</function>

<function name="gsk_gl_shader_get_uniform_offset">
<description>
Get the offset into the data block where data for this uniforms is stored.

Deprecated: 4.16: GTK's new Vulkan-focused rendering
does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
for OpenGL rendering.

</description>
<parameters>
<parameter name="shader">
<parameter_description> a `GskGLShader`
</parameter_description>
</parameter>
<parameter name="idx">
<parameter_description> index of the uniform
</parameter_description>
</parameter>
</parameters>
<return> The data offset

</return>
</function>

<function name="gsk_gl_shader_get_uniform_type">
<description>
Get the type of the declared uniform for this shader at index @idx.

Deprecated: 4.16: GTK's new Vulkan-focused rendering
does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
for OpenGL rendering.

</description>
<parameters>
<parameter name="shader">
<parameter_description> a `GskGLShader`
</parameter_description>
</parameter>
<parameter name="idx">
<parameter_description> index of the uniform
</parameter_description>
</parameter>
</parameters>
<return> The type of the declared uniform

</return>
</function>

<function name="gsk_gl_shader_new_from_bytes">
<description>
Creates a `GskGLShader` that will render pixels using the specified code.

Deprecated: 4.16: GTK's new Vulkan-focused rendering
does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
for OpenGL rendering.

</description>
<parameters>
<parameter name="sourcecode">
<parameter_description> GLSL sourcecode for the shader, as a `GBytes`
</parameter_description>
</parameter>
</parameters>
<return> A new `GskGLShader`

</return>
</function>

<function name="gsk_gl_shader_new_from_resource">
<description>
Creates a `GskGLShader` that will render pixels using the specified code.

Deprecated: 4.16: GTK's new Vulkan-focused rendering
does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
for OpenGL rendering.

</description>
<parameters>
<parameter name="resource_path">
<parameter_description> path to a resource that contains the GLSL sourcecode for
the shader
</parameter_description>
</parameter>
</parameters>
<return> A new `GskGLShader`

</return>
</function>

<function name="gsk_gl_shader_node_get_args">
<description>
Gets args for the node.

Deprecated: 4.16: GTK's new Vulkan-focused rendering
does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
for OpenGL rendering.

</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for a gl shader
</parameter_description>
</parameter>
</parameters>
<return> A `GBytes` with the uniform arguments

</return>
</function>

<function name="gsk_gl_shader_node_get_child">
<description>
Gets one of the children.

Deprecated: 4.16: GTK's new Vulkan-focused rendering
does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
for OpenGL rendering.

</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for a gl shader
</parameter_description>
</parameter>
<parameter name="idx">
<parameter_description> the position of the child to get
</parameter_description>
</parameter>
</parameters>
<return> the @idx'th child of @node

</return>
</function>

<function name="gsk_gl_shader_node_get_n_children">
<description>
Returns the number of children

Deprecated: 4.16: GTK's new Vulkan-focused rendering
does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
for OpenGL rendering.

</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for a gl shader
</parameter_description>
</parameter>
</parameters>
<return> The number of children

</return>
</function>

<function name="gsk_gl_shader_node_get_shader">
<description>
Gets shader code for the node.

Deprecated: 4.16

</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for a gl shader
</parameter_description>
</parameter>
</parameters>
<return> the `GskGLShader` shader

</return>
</function>

<function name="gsk_gl_shader_node_new">
<description>
Creates a `GskRenderNode` that will render the given @shader into the
area given by @bounds.

The @args is a block of data to use for uniform input, as per types and
offsets defined by the @shader. Normally this is generated by
[method@Gsk.GLShader.format_args] or [struct@Gsk.ShaderArgsBuilder].

See [class@Gsk.GLShader] for details about how the shader should be written.

All the children will be rendered into textures (if they aren't already
`GskTextureNodes`, which will be used directly). These textures will be
sent as input to the shader.

If the renderer doesn't support GL shaders, or if there is any problem
when compiling the shader, then the node will draw pink. You should use
[method@Gsk.GLShader.compile] to ensure the @shader will work for the
renderer before using it.

Deprecated: 4.16: GTK's new Vulkan-focused rendering
does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
for OpenGL rendering.

</description>
<parameters>
<parameter name="shader">
<parameter_description> the `GskGLShader`
</parameter_description>
</parameter>
<parameter name="bounds">
<parameter_description> the rectangle to render the shader into
</parameter_description>
</parameter>
<parameter name="args">
<parameter_description> Arguments for the uniforms
</parameter_description>
</parameter>
<parameter name="children">
<parameter_description> array of child nodes,
these will be rendered to textures and used as input.
</parameter_description>
</parameter>
<parameter name="n_children">
<parameter_description> Length of @children (currently the GL backend supports
up to 4 children)
</parameter_description>
</parameter>
</parameters>
<return> A new `GskRenderNode`

</return>
</function>

<function name="gsk_gradient_get_average_color">
<description>
Computes the weighted average color of all color stops, respecting
transition hints and premultiplication. This can be imagined as the gradient
line being shrunk to a single pixel. Not relevant for this computation is
the repeat.

This color is used in some cases for repeating zero-length gradients.

Note that different gradient implementations have a different meaning for
degenerate gradient corner cases and not all of them may trivially map to
this function.

</description>
<parameters>
<parameter name="self">
<parameter_description> a gradient
</parameter_description>
</parameter>
<parameter name="out_color">
<parameter_description> Return location to place the color
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_inset_shadow_node_get_blur_radius">
<description>
Retrieves the blur radius to apply to the shadow.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for an inset shadow
</parameter_description>
</parameter>
</parameters>
<return> the blur radius, in pixels
</return>
</function>

<function name="gsk_inset_shadow_node_get_color">
<description>
Retrieves the color of the inset shadow.

The value returned by this function will not be correct
if the render node was created for a non-sRGB color.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for an inset shadow
</parameter_description>
</parameter>
</parameters>
<return> the color of the shadow
</return>
</function>

<function name="gsk_inset_shadow_node_get_dx">
<description>
Retrieves the horizontal offset of the inset shadow.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for an inset shadow
</parameter_description>
</parameter>
</parameters>
<return> an offset, in pixels
</return>
</function>

<function name="gsk_inset_shadow_node_get_dy">
<description>
Retrieves the vertical offset of the inset shadow.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for an inset shadow
</parameter_description>
</parameter>
</parameters>
<return> an offset, in pixels
</return>
</function>

<function name="gsk_inset_shadow_node_get_offset">
<description>
Retrieves the offset of the inset shadow.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for an inset shadow
</parameter_description>
</parameter>
</parameters>
<return> an offset, in pixels
</return>
</function>

<function name="gsk_inset_shadow_node_get_outline">
<description>
Retrieves the outline rectangle of the inset shadow.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for an inset shadow
</parameter_description>
</parameter>
</parameters>
<return> a rounded rectangle
</return>
</function>

<function name="gsk_inset_shadow_node_get_snap">
<description>
Retrieves the snap value for this node

Since: 4.24

</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for an inset shadow
</parameter_description>
</parameter>
</parameters>
<return> the snap value

</return>
</function>

<function name="gsk_inset_shadow_node_get_spread">
<description>
Retrieves how much the shadow spreads inwards.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for an inset shadow
</parameter_description>
</parameter>
</parameters>
<return> the size of the shadow, in pixels
</return>
</function>

<function name="gsk_inset_shadow_node_new">
<description>
Creates a `GskRenderNode` that will render an inset shadow
into the box given by @outline.


</description>
<parameters>
<parameter name="outline">
<parameter_description> outline of the region containing the shadow
</parameter_description>
</parameter>
<parameter name="color">
<parameter_description> color of the shadow
</parameter_description>
</parameter>
<parameter name="dx">
<parameter_description> horizontal offset of shadow
</parameter_description>
</parameter>
<parameter name="dy">
<parameter_description> vertical offset of shadow
</parameter_description>
</parameter>
<parameter name="spread">
<parameter_description> how far the shadow spreads towards the inside
</parameter_description>
</parameter>
<parameter name="blur_radius">
<parameter_description> how much blur to apply to the shadow
</parameter_description>
</parameter>
</parameters>
<return> A new `GskRenderNode`
</return>
</function>

<function name="gsk_isolation_node_get_child">
<description>
Gets the child node that is getting drawn by the given @node.

Since: 4.22

</description>
<parameters>
<parameter name="node">
<parameter_description> an isolation `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> the child `GskRenderNode`

</return>
</function>

<function name="gsk_isolation_node_get_isolations">
<description>
Gets the isolation features that are enforced by this node.

Since: 4.22

</description>
<parameters>
<parameter name="node">
<parameter_description> an isolation `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> the isolation features

</return>
</function>

<function name="gsk_isolation_node_new">
<description>
Creates a `GskRenderNode` that isolates the drawing operations of
the child from surrounding ones.

You can express &quot;everything but these flags&quot; in a forward compatible
way by using bit math:
`GSK_ISOLATION_ALL &amp; ~(GSK_ISOLATION_BACKGROUND | GSK_ISOLATION_COPY_PASTE)`
will isolate everything but background and copy/paste.

For the available isolations, see [flags@Gsk.Isolation].

Since: 4.22

</description>
<parameters>
<parameter name="child">
<parameter_description> The child
</parameter_description>
</parameter>
<parameter name="isolations">
<parameter_description> features to isolate
</parameter_description>
</parameter>
</parameters>
<return> A new `GskRenderNode`

</return>
</function>

<function name="gsk_linear_gradient_node_get_color_stops">
<description>
Retrieves the color stops in the gradient.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for a linear gradient
</parameter_description>
</parameter>
<parameter name="n_stops">
<parameter_description> the number of color stops in the returned array
</parameter_description>
</parameter>
</parameters>
<return> the color stops in the gradient
</return>
</function>

<function name="gsk_linear_gradient_node_get_end">
<description>
Retrieves the final point of the linear gradient.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for a linear gradient
</parameter_description>
</parameter>
</parameters>
<return> the final point
</return>
</function>

<function name="gsk_linear_gradient_node_get_n_color_stops">
<description>
Retrieves the number of color stops in the gradient.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for a linear gradient
</parameter_description>
</parameter>
</parameters>
<return> the number of color stops
</return>
</function>

<function name="gsk_linear_gradient_node_get_snap">
<description>
Retrieves the snap value for this node

Since: 4.24

</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for a linear gradient
</parameter_description>
</parameter>
</parameters>
<return> the snap value

</return>
</function>

<function name="gsk_linear_gradient_node_get_start">
<description>
Retrieves the initial point of the linear gradient.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for a linear gradient
</parameter_description>
</parameter>
</parameters>
<return> the initial point
</return>
</function>

<function name="gsk_linear_gradient_node_new">
<description>
Creates a `GskRenderNode` that will create a linear gradient from the given
points and color stops, and render that into the area given by @bounds.


</description>
<parameters>
<parameter name="bounds">
<parameter_description> the rectangle to render the linear gradient into
</parameter_description>
</parameter>
<parameter name="start">
<parameter_description> the point at which the linear gradient will begin
</parameter_description>
</parameter>
<parameter name="end">
<parameter_description> the point at which the linear gradient will finish
</parameter_description>
</parameter>
<parameter name="color_stops">
<parameter_description> a pointer to an array of
`GskColorStop` defining the gradient. The offsets of all color stops
must be increasing. The first stop's offset must be &gt;= 0 and the last
stop's offset must be &lt;= 1.
</parameter_description>
</parameter>
<parameter name="n_color_stops">
<parameter_description> the number of elements in @color_stops
</parameter_description>
</parameter>
</parameters>
<return> A new `GskRenderNode`
</return>
</function>

<function name="gsk_mask_node_get_mask">
<description>
Retrieves the mask `GskRenderNode` child of the @node.

Since: 4.10

</description>
<parameters>
<parameter name="node">
<parameter_description> a mask `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> the mask child node

</return>
</function>

<function name="gsk_mask_node_get_mask_mode">
<description>
Retrieves the mask mode used by @node.

Since: 4.10

</description>
<parameters>
<parameter name="node">
<parameter_description> a blending `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> the mask mode

</return>
</function>

<function name="gsk_mask_node_get_source">
<description>
Retrieves the source `GskRenderNode` child of the @node.

Since: 4.10

</description>
<parameters>
<parameter name="node">
<parameter_description> a mask `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> the source child node

</return>
</function>

<function name="gsk_mask_node_new">
<description>
Creates a `GskRenderNode` that will mask a given node by another.

The @mask_mode determines how the 'mask values' are derived from
the colors of the @mask. Applying the mask consists of multiplying
the 'mask value' with the alpha of the source.

Since: 4.10

</description>
<parameters>
<parameter name="source">
<parameter_description> The source node to be drawn
</parameter_description>
</parameter>
<parameter name="mask">
<parameter_description> The node to be used as mask
</parameter_description>
</parameter>
<parameter name="mask_mode">
<parameter_description> The mask mode to use
</parameter_description>
</parameter>
</parameters>
<return> A new `GskRenderNode`

</return>
</function>

<function name="gsk_opacity_node_get_child">
<description>
Gets the child node that is getting opacityed by the given @node.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for an opacity
</parameter_description>
</parameter>
</parameters>
<return> The child that is getting opacityed
</return>
</function>

<function name="gsk_opacity_node_get_opacity">
<description>
Gets the transparency factor for an opacity node.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for an opacity
</parameter_description>
</parameter>
</parameters>
<return> the opacity factor
</return>
</function>

<function name="gsk_opacity_node_new">
<description>
Creates a `GskRenderNode` that will drawn the @child with reduced
@opacity.


</description>
<parameters>
<parameter name="child">
<parameter_description> The node to draw
</parameter_description>
</parameter>
<parameter name="opacity">
<parameter_description> The opacity to apply
</parameter_description>
</parameter>
</parameters>
<return> A new `GskRenderNode`
</return>
</function>

<function name="gsk_outset_shadow_node_get_blur_radius">
<description>
Retrieves the blur radius of the shadow.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for an outset shadow
</parameter_description>
</parameter>
</parameters>
<return> the blur radius, in pixels
</return>
</function>

<function name="gsk_outset_shadow_node_get_color">
<description>
Retrieves the color of the outset shadow.

The value returned by this function will not be correct
if the render node was created for a non-sRGB color.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for an outset shadow
</parameter_description>
</parameter>
</parameters>
<return> a color
</return>
</function>

<function name="gsk_outset_shadow_node_get_dx">
<description>
Retrieves the horizontal offset of the outset shadow.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for an outset shadow
</parameter_description>
</parameter>
</parameters>
<return> an offset, in pixels
</return>
</function>

<function name="gsk_outset_shadow_node_get_dy">
<description>
Retrieves the vertical offset of the outset shadow.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for an outset shadow
</parameter_description>
</parameter>
</parameters>
<return> an offset, in pixels
</return>
</function>

<function name="gsk_outset_shadow_node_get_offset">
<description>
Retrieves the offset of the outset shadow.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for an outset shadow
</parameter_description>
</parameter>
</parameters>
<return> an offset, in pixels
</return>
</function>

<function name="gsk_outset_shadow_node_get_outline">
<description>
Retrieves the outline rectangle of the outset shadow.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for an outset shadow
</parameter_description>
</parameter>
</parameters>
<return> a rounded rectangle
</return>
</function>

<function name="gsk_outset_shadow_node_get_snap">
<description>
Retrieves the snap value for this node

Since: 4.24

</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for an outset shadow
</parameter_description>
</parameter>
</parameters>
<return> the snap value

</return>
</function>

<function name="gsk_outset_shadow_node_get_spread">
<description>
Retrieves how much the shadow spreads outwards.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for an outset shadow
</parameter_description>
</parameter>
</parameters>
<return> the size of the shadow, in pixels
</return>
</function>

<function name="gsk_outset_shadow_node_new">
<description>
Creates a `GskRenderNode` that will render an outset shadow
around the box given by @outline.


</description>
<parameters>
<parameter name="outline">
<parameter_description> outline of the region surrounded by shadow
</parameter_description>
</parameter>
<parameter name="color">
<parameter_description> color of the shadow
</parameter_description>
</parameter>
<parameter name="dx">
<parameter_description> horizontal offset of shadow
</parameter_description>
</parameter>
<parameter name="dy">
<parameter_description> vertical offset of shadow
</parameter_description>
</parameter>
<parameter name="spread">
<parameter_description> how far the shadow spreads towards the inside
</parameter_description>
</parameter>
<parameter name="blur_radius">
<parameter_description> how much blur to apply to the shadow
</parameter_description>
</parameter>
</parameters>
<return> A new `GskRenderNode`
</return>
</function>

<function name="gsk_paste_node_get_depth">
<description>
Retrieves the index of the copy that should be pasted.

Since: 4.22

</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> the index of the copy to paste.

</return>
</function>

<function name="gsk_paste_node_get_snap">
<description>
Retrieves the snap value for this node

Since: 4.24

</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskPasteNode`
</parameter_description>
</parameter>
</parameters>
<return> the snap value

</return>
</function>

<function name="gsk_paste_node_new">
<description>
Creates a `GskRenderNode` that will paste copied contents.

Since: 4.22

</description>
<parameters>
<parameter name="bounds">
<parameter_description> the rectangle to render the paste into
</parameter_description>
</parameter>
<parameter name="depth">
<parameter_description> the index of which copy to paste. This will usually be 0.
</parameter_description>
</parameter>
</parameters>
<return> A new `GskRenderNode`

</return>
</function>

<function name="gsk_path_builder_add_cairo_path">
<description>
Adds a Cairo path to the builder.

You can use cairo_copy_path() to access the path
from a Cairo context.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path builder
</parameter_description>
</parameter>
<parameter name="path">
<parameter_description> a path
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_path_builder_add_circle">
<description>
Adds a circle as a new contour.

The path is going around the circle in clockwise direction.

If @radius is zero, the contour will be a closed point.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path builder
</parameter_description>
</parameter>
<parameter name="center">
<parameter_description> the center of the circle
</parameter_description>
</parameter>
<parameter name="radius">
<parameter_description> the radius of the circle
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_path_builder_add_layout">
<description>
Adds the outlines for the glyphs in @layout to the builder.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path builder
</parameter_description>
</parameter>
<parameter name="layout">
<parameter_description> the pango layout to add
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_path_builder_add_path">
<description>
Appends all of @path to the builder.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path builder
</parameter_description>
</parameter>
<parameter name="path">
<parameter_description> the path to append
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_path_builder_add_rect">
<description>
Adds a rectangle as a new contour.

The path is going around the rectangle in clockwise direction.

If the the width or height are 0, the path will be a closed
horizontal or vertical line. If both are 0, it'll be a closed dot.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path builder
</parameter_description>
</parameter>
<parameter name="rect">
<parameter_description> the rectangle to create a path for
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_path_builder_add_reverse_path">
<description>
Appends all of @path to the builder, in reverse order.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path builder
</parameter_description>
</parameter>
<parameter name="path">
<parameter_description> the path to append
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_path_builder_add_rounded_rect">
<description>
Adds a rounded rectangle as a new contour.

The path is going around the rectangle in clockwise direction.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path builder
</parameter_description>
</parameter>
<parameter name="rect">
<parameter_description> the rounded rect
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_path_builder_add_segment">
<description>
Adds a segment of a path to the builder.

If @start is equal to or after @end, the path will first add the
segment from @start to the end of the path, and then add the segment
from the beginning to @end. If the path is closed, these segments
will be connected.

Note that this method always adds a path with the given start point
and end point. To add a closed path, use [method@Gsk.PathBuilder.add_path].

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path builder
</parameter_description>
</parameter>
<parameter name="path">
<parameter_description> the path to take the segment to
</parameter_description>
</parameter>
<parameter name="start">
<parameter_description> the point on @path to start at
</parameter_description>
</parameter>
<parameter name="end">
<parameter_description> the point on @path to end at
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_path_builder_arc_to">
<description>
Adds an elliptical arc from the current point to @x2, @y2
with @x1, @y1 determining the tangent directions.

After this, @x2, @y2 will be the new current point.

Note: Two points and their tangents do not determine
a unique ellipse, so GSK just picks one. If you need more
precise control, use [method@Gsk.PathBuilder.conic_to]
or [method@Gsk.PathBuilder.svg_arc_to].

&lt;picture&gt;
&lt;source srcset=&quot;arc-dark.png&quot; media=&quot;(prefers-color-scheme: dark)&quot;&gt;
&lt;img alt=&quot;Arc To&quot; src=&quot;arc-light.png&quot;&gt;
&lt;/picture&gt;

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path builder
</parameter_description>
</parameter>
<parameter name="x1">
<parameter_description> x coordinate of first control point
</parameter_description>
</parameter>
<parameter name="y1">
<parameter_description> y coordinate of first control point
</parameter_description>
</parameter>
<parameter name="x2">
<parameter_description> x coordinate of second control point
</parameter_description>
</parameter>
<parameter name="y2">
<parameter_description> y coordinate of second control point
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_path_builder_close">
<description>
Ends the current contour with a line back to the start point.

Note that this is different from calling [method@Gsk.PathBuilder.line_to]
with the start point in that the contour will be closed. A closed
contour behaves differently from an open one. When stroking, its
start and end point are considered connected, so they will be
joined via the line join, and not ended with line caps.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path builder
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_path_builder_conic_to">
<description>
Adds a [conic curve](https://en.wikipedia.org/wiki/Non-uniform_rational_B-spline)
from the current point to @x2, @y2 with the given @weight and @x1, @y1 as the
control point.

The weight determines how strongly the curve is pulled towards the control point.
A conic with weight 1 is identical to a quadratic Bézier curve with the same points.

Conic curves can be used to draw ellipses and circles. They are also known as
rational quadratic Bézier curves.

After this, @x2, @y2 will be the new current point.

&lt;picture&gt;
&lt;source srcset=&quot;conic-dark.png&quot; media=&quot;(prefers-color-scheme: dark)&quot;&gt;
&lt;img alt=&quot;Conic To&quot; src=&quot;conic-light.png&quot;&gt;
&lt;/picture&gt;

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path builder
</parameter_description>
</parameter>
<parameter name="x1">
<parameter_description> x coordinate of control point
</parameter_description>
</parameter>
<parameter name="y1">
<parameter_description> y coordinate of control point
</parameter_description>
</parameter>
<parameter name="x2">
<parameter_description> x coordinate of the end of the curve
</parameter_description>
</parameter>
<parameter name="y2">
<parameter_description> y coordinate of the end of the curve
</parameter_description>
</parameter>
<parameter name="weight">
<parameter_description> weight of the control point, must be greater than zero
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_path_builder_cubic_to">
<description>
Adds a [cubic Bézier curve](https://en.wikipedia.org/wiki/B%C3%A9zier_curve)
from the current point to @x3, @y3 with @x1, @y1 and @x2, @y2 as the control
points.

After this, @x3, @y3 will be the new current point.

&lt;picture&gt;
&lt;source srcset=&quot;cubic-dark.png&quot; media=&quot;(prefers-color-scheme: dark)&quot;&gt;
&lt;img alt=&quot;Cubic To&quot; src=&quot;cubic-light.png&quot;&gt;
&lt;/picture&gt;

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path builder
</parameter_description>
</parameter>
<parameter name="x1">
<parameter_description> x coordinate of first control point
</parameter_description>
</parameter>
<parameter name="y1">
<parameter_description> y coordinate of first control point
</parameter_description>
</parameter>
<parameter name="x2">
<parameter_description> x coordinate of second control point
</parameter_description>
</parameter>
<parameter name="y2">
<parameter_description> y coordinate of second control point
</parameter_description>
</parameter>
<parameter name="x3">
<parameter_description> x coordinate of the end of the curve
</parameter_description>
</parameter>
<parameter name="y3">
<parameter_description> y coordinate of the end of the curve
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_path_builder_free_to_path">
<description>
Creates a new path from the current state of the
builder, and unrefs the builder.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path builder
</parameter_description>
</parameter>
</parameters>
<return> the newly created path
with all the contours added to the builder

</return>
</function>

<function name="gsk_path_builder_get_current_point">
<description>
Gets the current point.

The current point is used for relative drawing commands and
updated after every operation.

When the builder is created, the default current point is set
to `0, 0`. Note that this is different from cairo, which starts
out without a current point.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path builder
</parameter_description>
</parameter>
</parameters>
<return> the current point

</return>
</function>

<function name="gsk_path_builder_html_arc_to">
<description>
Implements arc-to according to the HTML Canvas spec.

A convenience function that implements the
[HTML arc_to](https://html.spec.whatwg.org/multipage/canvas.html#dom-context-2d-arcto-dev)
functionality.

After this, the current point will be the point where
the circle with the given radius touches the line from
@x1, @y1 to @x2, @y2.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path builder
</parameter_description>
</parameter>
<parameter name="x1">
<parameter_description> x coordinate of first control point
</parameter_description>
</parameter>
<parameter name="y1">
<parameter_description> y coordinate of first control point
</parameter_description>
</parameter>
<parameter name="x2">
<parameter_description> x coordinate of second control point
</parameter_description>
</parameter>
<parameter name="y2">
<parameter_description> y coordinate of second control point
</parameter_description>
</parameter>
<parameter name="radius">
<parameter_description> radius of the circle
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_path_builder_line_to">
<description>
Draws a line from the current point to @x, @y and makes it
the new current point.

&lt;picture&gt;
&lt;source srcset=&quot;line-dark.png&quot; media=&quot;(prefers-color-scheme: dark)&quot;&gt;
&lt;img alt=&quot;Line To&quot; src=&quot;line-light.png&quot;&gt;
&lt;/picture&gt;

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path builder
</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></return>
</function>

<function name="gsk_path_builder_move_to">
<description>
Starts a new contour by placing the pen at @x, @y.

If this function is called twice in succession, the first
call will result in a contour made up of a single point.
The second call will start a new contour.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path builder
</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></return>
</function>

<function name="gsk_path_builder_new">
<description>
Create a new `GskPathBuilder` object.

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

Since: 4.14

</description>
<parameters>
</parameters>
<return> a new `GskPathBuilder`

</return>
</function>

<function name="gsk_path_builder_quad_to">
<description>
Adds a [quadratic Bézier curve](https://en.wikipedia.org/wiki/B%C3%A9zier_curve)
from the current point to @x2, @y2 with @x1, @y1 as the control point.

After this, @x2, @y2 will be the new current point.

&lt;picture&gt;
&lt;source srcset=&quot;quad-dark.png&quot; media=&quot;(prefers-color-scheme: dark)&quot;&gt;
&lt;img alt=&quot;Quad To&quot; src=&quot;quad-light.png&quot;&gt;
&lt;/picture&gt;

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path builder
</parameter_description>
</parameter>
<parameter name="x1">
<parameter_description> x coordinate of control point
</parameter_description>
</parameter>
<parameter name="y1">
<parameter_description> y coordinate of control point
</parameter_description>
</parameter>
<parameter name="x2">
<parameter_description> x coordinate of the end of the curve
</parameter_description>
</parameter>
<parameter name="y2">
<parameter_description> y coordinate of the end of the curve
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

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

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

Since: 4.14

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

</return>
</function>

<function name="gsk_path_builder_rel_arc_to">
<description>
Adds an elliptical arc from the current point to @x2, @y2
with @x1, @y1 determining the tangent directions.

All coordinates are given relative to the current point.

This is the relative version of [method@Gsk.PathBuilder.arc_to].

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path builder
</parameter_description>
</parameter>
<parameter name="x1">
<parameter_description> x coordinate of first control point
</parameter_description>
</parameter>
<parameter name="y1">
<parameter_description> y coordinate of first control point
</parameter_description>
</parameter>
<parameter name="x2">
<parameter_description> x coordinate of second control point
</parameter_description>
</parameter>
<parameter name="y2">
<parameter_description> y coordinate of second control point
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_path_builder_rel_conic_to">
<description>
Adds a [conic curve](https://en.wikipedia.org/wiki/Non-uniform_rational_B-spline)
from the current point to @x2, @y2 with the given @weight and @x1, @y1 as the
control point.

All coordinates are given relative to the current point.

This is the relative version of [method@Gsk.PathBuilder.conic_to].

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path builder
</parameter_description>
</parameter>
<parameter name="x1">
<parameter_description> x offset of control point
</parameter_description>
</parameter>
<parameter name="y1">
<parameter_description> y offset of control point
</parameter_description>
</parameter>
<parameter name="x2">
<parameter_description> x offset of the end of the curve
</parameter_description>
</parameter>
<parameter name="y2">
<parameter_description> y offset of the end of the curve
</parameter_description>
</parameter>
<parameter name="weight">
<parameter_description> weight of the curve, must be greater than zero
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_path_builder_rel_cubic_to">
<description>
Adds a [cubic Bézier curve](https://en.wikipedia.org/wiki/B%C3%A9zier_curve)
from the current point to @x3, @y3 with @x1, @y1 and @x2, @y2 as the control
points.

All coordinates are given relative to the current point.

This is the relative version of [method@Gsk.PathBuilder.cubic_to].

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path builder
</parameter_description>
</parameter>
<parameter name="x1">
<parameter_description> x offset of first control point
</parameter_description>
</parameter>
<parameter name="y1">
<parameter_description> y offset of first control point
</parameter_description>
</parameter>
<parameter name="x2">
<parameter_description> x offset of second control point
</parameter_description>
</parameter>
<parameter name="y2">
<parameter_description> y offset of second control point
</parameter_description>
</parameter>
<parameter name="x3">
<parameter_description> x offset of the end of the curve
</parameter_description>
</parameter>
<parameter name="y3">
<parameter_description> y offset of the end of the curve
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_path_builder_rel_html_arc_to">
<description>
Implements arc-to according to the HTML Canvas spec.

All coordinates are given relative to the current point.

This is the relative version of [method@Gsk.PathBuilder.html_arc_to].

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path builder
</parameter_description>
</parameter>
<parameter name="x1">
<parameter_description> x coordinate of first control point
</parameter_description>
</parameter>
<parameter name="y1">
<parameter_description> y coordinate of first control point
</parameter_description>
</parameter>
<parameter name="x2">
<parameter_description> x coordinate of second control point
</parameter_description>
</parameter>
<parameter name="y2">
<parameter_description> y coordinate of second control point
</parameter_description>
</parameter>
<parameter name="radius">
<parameter_description> radius of the circle
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_path_builder_rel_line_to">
<description>
Draws a line from the current point to a point offset from it
by @x, @y and makes it the new current point.

This is the relative version of [method@Gsk.PathBuilder.line_to].

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path builder
</parameter_description>
</parameter>
<parameter name="x">
<parameter_description> x offset
</parameter_description>
</parameter>
<parameter name="y">
<parameter_description> y offset
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_path_builder_rel_move_to">
<description>
Starts a new contour by placing the pen at @x, @y
relative to the current point.

This is the relative version of [method@Gsk.PathBuilder.move_to].

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path builder
</parameter_description>
</parameter>
<parameter name="x">
<parameter_description> x offset
</parameter_description>
</parameter>
<parameter name="y">
<parameter_description> y offset
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_path_builder_rel_quad_to">
<description>
Adds a [quadratic Bézier curve](https://en.wikipedia.org/wiki/B%C3%A9zier_curve)
from the current point to @x2, @y2 with @x1, @y1 the control point.

All coordinates are given relative to the current point.

This is the relative version of [method@Gsk.PathBuilder.quad_to].

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path builder
</parameter_description>
</parameter>
<parameter name="x1">
<parameter_description> x offset of control point
</parameter_description>
</parameter>
<parameter name="y1">
<parameter_description> y offset of control point
</parameter_description>
</parameter>
<parameter name="x2">
<parameter_description> x offset of the end of the curve
</parameter_description>
</parameter>
<parameter name="y2">
<parameter_description> y offset of the end of the curve
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_path_builder_rel_svg_arc_to">
<description>
Implements arc-to according to the SVG spec.

All coordinates are given relative to the current point.

This is the relative version of [method@Gsk.PathBuilder.svg_arc_to].

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path builder
</parameter_description>
</parameter>
<parameter name="rx">
<parameter_description> x radius
</parameter_description>
</parameter>
<parameter name="ry">
<parameter_description> y radius
</parameter_description>
</parameter>
<parameter name="x_axis_rotation">
<parameter_description> the rotation of the ellipsis
</parameter_description>
</parameter>
<parameter name="large_arc">
<parameter_description> whether to add the large arc
</parameter_description>
</parameter>
<parameter name="positive_sweep">
<parameter_description> whether to sweep in the positive direction
</parameter_description>
</parameter>
<parameter name="x">
<parameter_description> x coordinate of the endpoint
</parameter_description>
</parameter>
<parameter name="y">
<parameter_description> y coordinate of the endpoint
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_path_builder_svg_arc_to">
<description>
Implements arc-to according to the SVG spec.

A convenience function that implements the
[SVG arc_to](https://www.w3.org/TR/SVG11/paths.html#PathDataEllipticalArcCommands)
functionality.

After this, @x, @y will be the new current point.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path builder
</parameter_description>
</parameter>
<parameter name="rx">
<parameter_description> x radius
</parameter_description>
</parameter>
<parameter name="ry">
<parameter_description> y radius
</parameter_description>
</parameter>
<parameter name="x_axis_rotation">
<parameter_description> the rotation of the ellipsis
</parameter_description>
</parameter>
<parameter name="large_arc">
<parameter_description> whether to add the large arc
</parameter_description>
</parameter>
<parameter name="positive_sweep">
<parameter_description> whether to sweep in the positive direction
</parameter_description>
</parameter>
<parameter name="x">
<parameter_description> x coordinate of the endpoint
</parameter_description>
</parameter>
<parameter name="y">
<parameter_description> y coordinate of the endpoint
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_path_builder_to_path">
<description>
Creates a new path from the given builder.

The given `GskPathBuilder` is reset to the initial state once this
function returns. Calling this function again on the same builder
instance will therefore produce an empty path, not a copy of the same
path.

This function is intended primarily for language bindings.
C code should use [method@Gsk.PathBuilder.free_to_path].

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path builder
</parameter_description>
</parameter>
</parameters>
<return> the newly created path
with all the contours added to the builder

</return>
</function>

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

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path builder
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_path_equal">
<description>
Returns whether two paths have identical structure.

Note that it is possible to construct paths that render
identical even though they don't have the same structure.

Since: 4.22

</description>
<parameters>
<parameter name="path1">
<parameter_description> a path
</parameter_description>
</parameter>
<parameter name="path2">
<parameter_description> another path
</parameter_description>
</parameter>
</parameters>
<return> true if @path1 and @path2 have identical structure

</return>
</function>

<function name="gsk_path_foreach">
<description>
Calls @func for every operation of the path.

Note that this may only approximate @self, because paths can contain
optimizations for various specialized contours, and depending on the
@flags, the path may be decomposed into simpler curves than the ones
that it contained originally.

This function serves two purposes:

- When the @flags allow everything, it provides access to the raw,
unmodified data of the path.
- When the @flags disallow certain operations, it provides
an approximation of the path using just the allowed operations.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path
</parameter_description>
</parameter>
<parameter name="flags">
<parameter_description> flags to pass to the foreach function
</parameter_description>
</parameter>
<parameter name="func">
<parameter_description> the function to call for operations
</parameter_description>
</parameter>
<parameter name="user_data">
<parameter_description> user data passed to @func
</parameter_description>
</parameter>
</parameters>
<return> false if @func returned false, true otherwise.

</return>
</function>

<function name="gsk_path_foreach_intersection">
<description>
Finds intersections between two paths.

This function finds intersections between @path1 and @path2,
and calls @func for each of them, in increasing order for @path1.

If @path2 is not provided or equal to @path1, the function finds
non-trivial self-intersections of @path1.

When segments of the paths coincide, the callback is called once
for the start of the segment, with @GSK_PATH_INTERSECTION_START, and
once for the end of the segment, with @GSK_PATH_INTERSECTION_END.
Note that other intersections may occur between the start and end
of such a segment.

If @func returns `FALSE`, the iteration is stopped.

Since: 4.20

</description>
<parameters>
<parameter name="path1">
<parameter_description> the first path
</parameter_description>
</parameter>
<parameter name="path2">
<parameter_description> the second path
</parameter_description>
</parameter>
<parameter name="func">
<parameter_description> the function to call for intersections
</parameter_description>
</parameter>
<parameter name="user_data">
<parameter_description> user data passed to @func
</parameter_description>
</parameter>
</parameters>
<return> `FALSE` if @func returned FALSE`, `TRUE` otherwise.

</return>
</function>

<function name="gsk_path_get_bounds">
<description>
Computes the bounds of the given path.

The returned bounds may be larger than necessary, because this
function aims to be fast, not accurate. The bounds are guaranteed
to contain the path. For accurate bounds, use
[method@Gsk.Path.get_tight_bounds].

It is possible that the returned rectangle has 0 width and/or height.
This can happen when the path only describes a point or an
axis-aligned line.

If the path is empty, false is returned and @bounds are set to
graphene_rect_zero(). This is different from the case where the path
is a single point at the origin, where the @bounds will also be set to
the zero rectangle but true will be returned.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path
</parameter_description>
</parameter>
<parameter name="bounds">
<parameter_description> return location for the bounds
</parameter_description>
</parameter>
</parameters>
<return> true if the path has bounds, false if the path is known
to be empty and have no bounds

</return>
</function>

<function name="gsk_path_get_closest_point">
<description>
Computes the closest point on the path to the given point.

If there is no point closer than the given threshold,
false is returned.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path
</parameter_description>
</parameter>
<parameter name="point">
<parameter_description> the point
</parameter_description>
</parameter>
<parameter name="threshold">
<parameter_description> maximum allowed distance
</parameter_description>
</parameter>
<parameter name="result">
<parameter_description> return location for the closest point
</parameter_description>
</parameter>
<parameter name="distance">
<parameter_description> return location for the distance
</parameter_description>
</parameter>
</parameters>
<return> true if @point was set to the closest point
on @self, false if no point is closer than @threshold

</return>
</function>

<function name="gsk_path_get_end_point">
<description>
Gets the end point of the path.

An empty path has no points, so false
is returned in this case.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path
</parameter_description>
</parameter>
<parameter name="result">
<parameter_description> return location for point
</parameter_description>
</parameter>
</parameters>
<return> true if @result was filled

</return>
</function>

<function name="gsk_path_get_next">
<description>
Moves @point to the next vertex.

An empty path has no points, so false
is returned in this case.

Since: 4.22

</description>
<parameters>
<parameter name="self">
<parameter_description> a path
</parameter_description>
</parameter>
<parameter name="point">
<parameter_description> the current point
</parameter_description>
</parameter>
</parameters>
<return> true if @point was set

</return>
</function>

<function name="gsk_path_get_previous">
<description>
Moves @point to the previous vertex.

An empty path has no points, so false
is returned in this case.

Since: 4.22

</description>
<parameters>
<parameter name="self">
<parameter_description> a path
</parameter_description>
</parameter>
<parameter name="point">
<parameter_description> the current point
</parameter_description>
</parameter>
</parameters>
<return> true if @point was set

</return>
</function>

<function name="gsk_path_get_start_point">
<description>
Gets the start point of the path.

An empty path has no points, so false
is returned in this case.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path
</parameter_description>
</parameter>
<parameter name="result">
<parameter_description> return location for point
</parameter_description>
</parameter>
</parameters>
<return> true if @result was filled

</return>
</function>

<function name="gsk_path_get_stroke_bounds">
<description>
Computes the bounds for stroking the given path with the
given parameters.

The returned bounds may be larger than necessary, because this
function aims to be fast, not accurate. The bounds are guaranteed
to contain the area affected by the stroke, including protrusions
like miters.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path
</parameter_description>
</parameter>
<parameter name="stroke">
<parameter_description> stroke parameters
</parameter_description>
</parameter>
<parameter name="bounds">
<parameter_description> the bounds to fill in
</parameter_description>
</parameter>
</parameters>
<return> true if the path has bounds, false if the path is known
to be empty and have no bounds.

</return>
</function>

<function name="gsk_path_get_tight_bounds">
<description>
Computes the tight bounds of the given path.

This function works harder than [method@Gsk.Path.get_bounds] to
produce the smallest possible bounds.

Since: 4.22

</description>
<parameters>
<parameter name="self">
<parameter_description> a path
</parameter_description>
</parameter>
<parameter name="bounds">
<parameter_description> return location for the bounds
</parameter_description>
</parameter>
</parameters>
<return> true if the path has bounds, false if the path is known
to be empty and have no bounds

</return>
</function>

<function name="gsk_path_in_fill">
<description>
Returns whether a point is inside the fill area of a path.

Note that this function assumes that filling a contour
implicitly closes it.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path
</parameter_description>
</parameter>
<parameter name="point">
<parameter_description> the point to test
</parameter_description>
</parameter>
<parameter name="fill_rule">
<parameter_description> the fill rule to follow
</parameter_description>
</parameter>
</parameters>
<return> true if @point is inside

</return>
</function>

<function name="gsk_path_is_closed">
<description>
Returns if the path represents a single closed contour.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path
</parameter_description>
</parameter>
</parameters>
<return> true if the path is closed

</return>
</function>

<function name="gsk_path_is_empty">
<description>
Checks if the path is empty, i.e. contains no lines or curves.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path
</parameter_description>
</parameter>
</parameters>
<return> true if the path is empty

</return>
</function>

<function name="gsk_path_measure_get_length">
<description>
Gets the length of the path being measured.

The length is cached, so this function does not do any work.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path measure
</parameter_description>
</parameter>
</parameters>
<return> the length of the path measured by @self

</return>
</function>

<function name="gsk_path_measure_get_path">
<description>
Returns the path that the measure was created for.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path measure
</parameter_description>
</parameter>
</parameters>
<return> the path of @self

</return>
</function>

<function name="gsk_path_measure_get_point">
<description>
Gets the point at the given distance into the path.

An empty path has no points, so false is returned in that case.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path measure
</parameter_description>
</parameter>
<parameter name="distance">
<parameter_description> the distance
</parameter_description>
</parameter>
<parameter name="result">
<parameter_description> return location for the point
</parameter_description>
</parameter>
</parameters>
<return> true if @result was set

</return>
</function>

<function name="gsk_path_measure_get_tolerance">
<description>
Returns the tolerance that the measure was created with.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path measure
</parameter_description>
</parameter>
</parameters>
<return> the tolerance of @self

</return>
</function>

<function name="gsk_path_measure_new">
<description>
Creates a measure object for the given @path with the
default tolerance.

Since: 4.14

</description>
<parameters>
<parameter name="path">
<parameter_description> the path to measure
</parameter_description>
</parameter>
</parameters>
<return> a new `GskPathMeasure` representing @path

</return>
</function>

<function name="gsk_path_measure_new_with_tolerance">
<description>
Creates a measure object for the given @path and @tolerance.

Since: 4.14

</description>
<parameters>
<parameter name="path">
<parameter_description> the path to measure
</parameter_description>
</parameter>
<parameter name="tolerance">
<parameter_description> the tolerance for measuring operations
</parameter_description>
</parameter>
</parameters>
<return> a new `GskPathMeasure` representing @path

</return>
</function>

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

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path measure
</parameter_description>
</parameter>
</parameters>
<return> the passed in `GskPathMeasure`.

</return>
</function>

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

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

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path measure
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_path_parse">
<description>
Constructs a path from a serialized form.

The string is expected to be in (a superset of)
[SVG path syntax](https://www.w3.org/TR/SVG11/paths.html#PathData),
as e.g. produced by [method@Gsk.Path.to_string].

A high-level summary of the syntax:

- `M x y` Move to `(x, y)`
- `L x y` Add a line from the current point to `(x, y)`
- `Q x1 y1 x2 y2` Add a quadratic Bézier from the current point to `(x2, y2)`, with control point `(x1, y1)`
- `C x1 y1 x2 y2 x3 y3` Add a cubic Bézier from the current point to `(x3, y3)`, with control points `(x1, y1)` and `(x2, y2)`
- `Z` Close the contour by drawing a line back to the start point
- `H x` Add a horizontal line from the current point to the given x value
- `V y` Add a vertical line from the current point to the given y value
- `T x2 y2` Add a quadratic Bézier, using the reflection of the previous segments' control point as control point
- `S x2 y2 x3 y3` Add a cubic Bézier, using the reflection of the previous segments' second control point as first control point
- `A rx ry r l s x y` Add an elliptical arc from the current point to `(x, y)` with radii rx and ry. See the SVG documentation for how the other parameters influence the arc.
- `O x1 y1 x2 y2 w` Add a rational quadratic Bézier from the current point to `(x2, y2)` with control point `(x1, y1)` and weight `w`.

All the commands have lowercase variants that interpret coordinates
relative to the current point.

The `O` command is an extension that is not supported in SVG.

Since: 4.14

</description>
<parameters>
<parameter name="string">
<parameter_description> a string
</parameter_description>
</parameter>
</parameters>
<return> a new `GskPath`, or `NULL` if @string could not be parsed

</return>
</function>

<function name="gsk_path_point_compare">
<description>
Returns whether @point1 is before or after @point2.

Since: 4.14

</description>
<parameters>
<parameter name="point1">
<parameter_description> a path point
</parameter_description>
</parameter>
<parameter name="point2">
<parameter_description> another path point
</parameter_description>
</parameter>
</parameters>
<return> -1 if @point1 is before @point2,
1 if @point1 is after @point2,
0 if they are equal

</return>
</function>

<function name="gsk_path_point_copy">
<description>
Copies a path point.

Since: 4.14

</description>
<parameters>
<parameter name="point">
<parameter_description> a path point
</parameter_description>
</parameter>
</parameters>
<return> the copied point

</return>
</function>

<function name="gsk_path_point_equal">
<description>
Returns whether the two path points refer to the same
location on all paths.

Note that the start- and endpoint of a closed contour
will compare nonequal according to this definition.
Use [method@Gsk.Path.is_closed] to find out if the
start- and endpoint of a concrete path refer to the
same location.

Return: true if @point1 and @point2 are equal

Since: 4.14

</description>
<parameters>
<parameter name="point1">
<parameter_description> a path point
</parameter_description>
</parameter>
<parameter name="point2">
<parameter_description> another path point
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_path_point_free">
<description>
Frees a path point copied by [method@Gsk.PathPoint.copy].

Since: 4.14

</description>
<parameters>
<parameter name="point">
<parameter_description> a path point
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_path_point_get_curvature">
<description>
Calculates the curvature of the path at the point.

Optionally, returns the center of the osculating circle as well.
The curvature is the inverse of the radius of the osculating circle.

Lines have a curvature of zero (indicating an osculating circle of
infinite radius). In this case, the @center is not modified.

Circles with a radius of zero have `INFINITY` as curvature

Note that certain points on a path may not have a single curvature,
such as sharp turns. At such points, there are two curvatures — the
(limit of) the curvature of the path going into the point, and the
(limit of) the curvature of the path coming out of it. The @direction
argument lets you choose which one to get.

&lt;picture&gt;
&lt;source srcset=&quot;curvature-dark.png&quot; media=&quot;(prefers-color-scheme: dark)&quot;&gt;
&lt;img alt=&quot;Osculating circle&quot; src=&quot;curvature-light.png&quot;&gt;
&lt;/picture&gt;

Since: 4.14

</description>
<parameters>
<parameter name="point">
<parameter_description> a path point
</parameter_description>
</parameter>
<parameter name="path">
<parameter_description> the path that @point is on
</parameter_description>
</parameter>
<parameter name="direction">
<parameter_description> the direction for which to return the curvature
</parameter_description>
</parameter>
<parameter name="center">
<parameter_description> return location for
the center of the osculating circle
</parameter_description>
</parameter>
</parameters>
<return> the curvature of the path at the given point

</return>
</function>

<function name="gsk_path_point_get_distance">
<description>
Returns the distance from the beginning of the path
to the point.

Since: 4.14

</description>
<parameters>
<parameter name="point">
<parameter_description> a point on the path
</parameter_description>
</parameter>
<parameter name="measure">
<parameter_description> a path measure for the path
</parameter_description>
</parameter>
</parameters>
<return> the distance of @point

</return>
</function>

<function name="gsk_path_point_get_position">
<description>
Gets the position of the point.

Since: 4.14

</description>
<parameters>
<parameter name="point">
<parameter_description> a path point
</parameter_description>
</parameter>
<parameter name="path">
<parameter_description> the path that @point is on
</parameter_description>
</parameter>
<parameter name="position">
<parameter_description> Return location for
the coordinates of the point
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_path_point_get_rotation">
<description>
Gets the direction of the tangent at a given point.

This is a convenience variant of [method@Gsk.PathPoint.get_tangent]
that returns the angle between the tangent and the X axis. The angle
can e.g. be used in
[gtk_snapshot_rotate()](../gtk4/method.Snapshot.rotate.html).

Since: 4.14

</description>
<parameters>
<parameter name="point">
<parameter_description> a path point
</parameter_description>
</parameter>
<parameter name="path">
<parameter_description> the path that @point is on
</parameter_description>
</parameter>
<parameter name="direction">
<parameter_description> the direction for which to return the rotation
</parameter_description>
</parameter>
</parameters>
<return> the angle between the tangent and the X axis, in degrees

</return>
</function>

<function name="gsk_path_point_get_tangent">
<description>
Gets the tangent of the path at the point.

Note that certain points on a path may not have a single
tangent, such as sharp turns. At such points, there are
two tangents — the direction of the path going into the
point, and the direction coming out of it. The @direction
argument lets you choose which one to get.

If the path is just a single point (e.g. a circle with
radius zero), then the tangent is set to `0, 0`.

If you want to orient something in the direction of the
path, [method@Gsk.PathPoint.get_rotation] may be more
convenient to use.

Since: 4.14

</description>
<parameters>
<parameter name="point">
<parameter_description> a path point
</parameter_description>
</parameter>
<parameter name="path">
<parameter_description> the path that @point is on
</parameter_description>
</parameter>
<parameter name="direction">
<parameter_description> the direction for which to return the tangent
</parameter_description>
</parameter>
<parameter name="tangent">
<parameter_description> Return location for
the tangent at the point
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_path_print">
<description>
Converts the path into a human-readable representation.

The string is compatible with (a superset of)
[SVG path syntax](https://www.w3.org/TR/SVG11/paths.html#PathData),
see [func@Gsk.Path.parse] for a summary of the syntax.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path
</parameter_description>
</parameter>
<parameter name="string">
<parameter_description> the string to print into
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_path_ref">
<description>
Increases the reference count of a path by one.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path
</parameter_description>
</parameter>
</parameters>
<return> the passed in `GskPath`

</return>
</function>

<function name="gsk_path_to_cairo">
<description>
Appends the path to a cairo context for drawing with Cairo.

This may cause some suboptimal conversions to be performed as
Cairo does not support all features of `GskPath`.

This function does not clear the existing Cairo path. Call
cairo_new_path() if you want this.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path
</parameter_description>
</parameter>
<parameter name="cr">
<parameter_description> a cairo context
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_path_to_string">
<description>
Converts the path into a human-readable string.

You can use this function in a debugger to get a quick overview
of the path.

This is a wrapper around [method@Gsk.Path.print], see that function
for details.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path
</parameter_description>
</parameter>
</parameters>
<return> a new string for @self

</return>
</function>

<function name="gsk_path_unref">
<description>
Decreases the reference count of a path by one.

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

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a path
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_radial_gradient_node_get_center">
<description>
Retrieves the center pointer for the gradient.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for a radial gradient
</parameter_description>
</parameter>
</parameters>
<return> the center point for the gradient
</return>
</function>

<function name="gsk_radial_gradient_node_get_color_stops">
<description>
Retrieves the color stops in the gradient.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for a radial gradient
</parameter_description>
</parameter>
<parameter name="n_stops">
<parameter_description> the number of color stops in the returned array
</parameter_description>
</parameter>
</parameters>
<return> the color stops in the gradient
</return>
</function>

<function name="gsk_radial_gradient_node_get_end">
<description>
Retrieves the end value for the gradient.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for a radial gradient
</parameter_description>
</parameter>
</parameters>
<return> the end value for the gradient
</return>
</function>

<function name="gsk_radial_gradient_node_get_hradius">
<description>
Retrieves the horizontal radius for the gradient.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for a radial gradient
</parameter_description>
</parameter>
</parameters>
<return> the horizontal radius for the gradient
</return>
</function>

<function name="gsk_radial_gradient_node_get_n_color_stops">
<description>
Retrieves the number of color stops in the gradient.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for a radial gradient
</parameter_description>
</parameter>
</parameters>
<return> the number of color stops
</return>
</function>

<function name="gsk_radial_gradient_node_get_snap">
<description>
Retrieves the snap value for this node

Since: 4.24

</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for a radial gradient
</parameter_description>
</parameter>
</parameters>
<return> the snap value

</return>
</function>

<function name="gsk_radial_gradient_node_get_start">
<description>
Retrieves the start value for the gradient.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for a radial gradient
</parameter_description>
</parameter>
</parameters>
<return> the start value for the gradient
</return>
</function>

<function name="gsk_radial_gradient_node_get_vradius">
<description>
Retrieves the vertical radius for the gradient.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for a radial gradient
</parameter_description>
</parameter>
</parameters>
<return> the vertical radius for the gradient
</return>
</function>

<function name="gsk_radial_gradient_node_new">
<description>
Creates a `GskRenderNode` that draws a radial gradient.

The radial gradient
starts around @center. The size of the gradient is dictated by @hradius
in horizontal orientation and by @vradius in vertical orientation.


</description>
<parameters>
<parameter name="bounds">
<parameter_description> the bounds of the node
</parameter_description>
</parameter>
<parameter name="center">
<parameter_description> the center of the gradient
</parameter_description>
</parameter>
<parameter name="hradius">
<parameter_description> the horizontal radius
</parameter_description>
</parameter>
<parameter name="vradius">
<parameter_description> the vertical radius
</parameter_description>
</parameter>
<parameter name="start">
<parameter_description> a percentage &gt;= 0 that defines the start of the gradient around @center
</parameter_description>
</parameter>
<parameter name="end">
<parameter_description> a percentage &gt;= 0 that defines the end of the gradient around @center
</parameter_description>
</parameter>
<parameter name="color_stops">
<parameter_description> a pointer to an array of
`GskColorStop` defining the gradient. The offsets of all color stops
must be increasing. The first stop's offset must be &gt;= 0 and the last
stop's offset must be &lt;= 1.
</parameter_description>
</parameter>
<parameter name="n_color_stops">
<parameter_description> the number of elements in @color_stops
</parameter_description>
</parameter>
</parameters>
<return> A new `GskRenderNode`
</return>
</function>

<function name="gsk_rect_coverage">
<description>
Computes the largest rectangle that is fully covered by
r1 and r2.

Note that this is different from a union, which is the smallest
rectangle that covers the rectangles.

The use case for this function is joining opaque rectangles.

</description>
<parameters>
<parameter name="r1">
<parameter_description> a valid rectangle
</parameter_description>
</parameter>
<parameter name="r2">
<parameter_description> another valid rectangle
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> The result, may be one of r1/r2
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_rect_snap_get_direction">
<description>
Queries the way a given border is snapped.

Since: 4.24

</description>
<parameters>
<parameter name="snap">
<parameter_description> a rectangle snap
</parameter_description>
</parameter>
<parameter name="side">
<parameter_description> the border to query
</parameter_description>
</parameter>
</parameters>
<return> the direction the given border is snapped

</return>
</function>

<function name="gsk_rect_snap_new">
<description>
Creates a new way to snap rectangles for the 4 given sides.

Since: 4.24

</description>
<parameters>
<parameter name="top">
<parameter_description> How to snap the top edge
</parameter_description>
</parameter>
<parameter name="right">
<parameter_description> How to snap the right edge
</parameter_description>
</parameter>
<parameter name="bottom">
<parameter_description> How to snap the bottom edge
</parameter_description>
</parameter>
<parameter name="left">
<parameter_description> How to snap the left edge
</parameter_description>
</parameter>
</parameters>
<return> a description for how to snap rectangles

</return>
</function>

<function name="gsk_rect_snap_to_grid_grow">
<description>
Snaps @src to the grid specified by the given scale
and offset.
Grid points to snap to will be at the given offset and
then spaced apart by the inverse of the given scale,
ie an offset of 0.5 and a scale of 3 will snap to
(..., 0.1667, 0.5, 0.8333, 1.1667, 1.5, ...).

Snapping is done by growing the rectangle.

Note that floating point rounding issues might result
in the snapping not being perfectly exact.


</description>
<parameters>
<parameter name="src">
<parameter_description> rectangle to snap
</parameter_description>
</parameter>
<parameter name="grid_scale">
<parameter_description> the scale of the grid
</parameter_description>
</parameter>
<parameter name="grid_offset">
<parameter_description> the offset of the grid
</parameter_description>
</parameter>
<parameter name="dest">
<parameter_description> target to snap to. Can be identical to source
</parameter_description>
</parameter>
</parameters>
<return> false if the resulting rect has zero width/height
</return>
</function>

<function name="gsk_rect_subtract">
<description>
Computes the largest rectangle that is fully covered by
m and does not contain any part of s.


</description>
<parameters>
<parameter name="m">
<parameter_description> a valid rectangle for the minuend
</parameter_description>
</parameter>
<parameter name="s">
<parameter_description> a valid rectangle for the subtrahend
</parameter_description>
</parameter>
<parameter name="res">
<parameter_description> The result, may be the same as `m` or `s`
</parameter_description>
</parameter>
</parameters>
<return> TRUE if a rectangle was returned, FALSE if the subtrahend
fully covers the minuend and no valid rectangle remains.
</return>
</function>

<function name="gsk_render_node_deserialize">
<description>
Loads data previously created via [method@Gsk.RenderNode.serialize].

For a discussion of the supported format, see that function.


</description>
<parameters>
<parameter name="bytes">
<parameter_description> the bytes containing the data
</parameter_description>
</parameter>
<parameter name="error_func">
<parameter_description> callback on parsing errors
</parameter_description>
</parameter>
<parameter name="user_data">
<parameter_description> user_data for @error_func
</parameter_description>
</parameter>
</parameters>
<return> a new render node
</return>
</function>

<function name="gsk_render_node_diff">
<description>
Compares two nodes, trying to compute the minimal region of changes.

In the worst case, this is the union of the bounds of @node1 and @node2.

This function is used to compute the area that needs to be redrawn when
the previous contents were drawn by @node1 and the new contents should
correspond to @node2. As such, it is important that this comparison is
faster than the time it takes to actually do the redraw.

Note that the passed in @region may already contain previous results from
previous node comparisons, so this function call will only add to it.

</description>
<parameters>
<parameter name="node1">
<parameter_description> a render node
</parameter_description>
</parameter>
<parameter name="node2">
<parameter_description> the render node to compare with
</parameter_description>
</parameter>
<parameter name="data">
<parameter_description> diff data to use
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_render_node_draw">
<description>
Draws the contents of a render node on a cairo context.

Typically, you'll use this function to implement fallback rendering
of render nodes on an intermediate Cairo context, instead of using
the drawing context associated to a [class@Gdk.Surface]'s rendering buffer.

For advanced nodes that cannot be supported using Cairo, in particular
for nodes doing 3D operations, this function may fail.

</description>
<parameters>
<parameter name="node">
<parameter_description> a render node
</parameter_description>
</parameter>
<parameter name="cr">
<parameter_description> cairo context to draw to
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_render_node_get_bounds">
<description>
Retrieves the boundaries of the @node.

The node will not draw outside of its boundaries.

</description>
<parameters>
<parameter name="node">
<parameter_description> a render node
</parameter_description>
</parameter>
<parameter name="bounds">
<parameter_description> return location for the boundaries
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_render_node_get_children">
<description>
Gets a list of all children nodes of the rendernode.

Keep in mind that for various rendernodes, their children have different
semantics, like the mask vs the source of a mask node. If you care about
thse semantics, don't use this function, use the specific getters instead.

Since: 4.22

</description>
<parameters>
<parameter name="self">
<parameter_description> the render node
</parameter_description>
</parameter>
<parameter name="n_children">
<parameter_description> the number of items in the returned array 
</parameter_description>
</parameter>
</parameters>
<return> The children
</return>
</function>

<function name="gsk_render_node_get_node_type">
<description>
Returns the type of the render node.


</description>
<parameters>
<parameter name="node">
<parameter_description> a render node
</parameter_description>
</parameter>
</parameters>
<return> the type of @node
</return>
</function>

<function name="gsk_render_node_get_opaque_rect">
<description>
Gets an opaque rectangle inside the node that GTK can determine to
be fully opaque.

There is no guarantee that this is indeed the largest opaque rectangle or
that regions outside the rectangle are not opaque. This function is a best
effort with that goal.

The rectangle will be fully contained in the bounds of the node.

Since: 4.16

</description>
<parameters>
<parameter name="self">
<parameter_description> a render node
</parameter_description>
</parameter>
<parameter name="out_opaque">
<parameter_description> return location for the opaque rect
</parameter_description>
</parameter>
</parameters>
<return> true if part or all of the rendernode is opaque, false if no
opaque region could be found.

</return>
</function>

<function name="gsk_render_node_ref">
<description>
Acquires a reference on the given `GskRenderNode`.


</description>
<parameters>
<parameter name="node">
<parameter_description> a render node
</parameter_description>
</parameter>
</parameters>
<return> the render node with an additional reference
</return>
</function>

<function name="gsk_render_node_serialize">
<description>
Serializes the @node for later deserialization via
gsk_render_node_deserialize(). No guarantees are made about the format
used other than that the same version of GTK will be able to deserialize
the result of a call to gsk_render_node_serialize() and
gsk_render_node_deserialize() will correctly reject files it cannot open
that were created with previous versions of GTK.

The intended use of this functions is testing, benchmarking and debugging.
The format is not meant as a permanent storage format.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> a `GBytes` representing the node.
</return>
</function>

<function name="gsk_render_node_unref">
<description>
Releases a reference on the given `GskRenderNode`.

If the reference was the last, the resources associated to the @node are
freed.

</description>
<parameters>
<parameter name="node">
<parameter_description> a render node
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_render_node_write_to_file">
<description>
This function is equivalent to calling [method@Gsk.RenderNode.serialize]
followed by [func@GLib.file_set_contents].

See those two functions for details on the arguments.

It is mostly intended for use inside a debugger to quickly dump a render
node to a file for later inspection.


</description>
<parameters>
<parameter name="node">
<parameter_description> a render node
</parameter_description>
</parameter>
<parameter name="filename">
<parameter_description> the file to save it to
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> return location for an error
</parameter_description>
</parameter>
</parameters>
<return> true if saving was successful
</return>
</function>

<function name="gsk_render_replay_default">
<description>
Replays the node using the default method.

The default method calls [method@Gsk.RenderReplay.filter_node]
on all its child nodes and the filter functions for all its
properties. If none of them are changed, it returns the passed
in node. Otherwise it constructs a new node with the changed
children and properties.

It may not be possible to construct a new node when any of the
callbacks return NULL. In that case, this function will return
NULL, too.

Since: 4.22

</description>
<parameters>
<parameter name="self">
<parameter_description> the replay
</parameter_description>
</parameter>
<parameter name="node">
<parameter_description> the node to replay
</parameter_description>
</parameter>
</parameters>
<return> The replayed node 

</return>
</function>

<function name="gsk_render_replay_filter_font">
<description>
Filters a font using the current filter function.

Since: 4.22

</description>
<parameters>
<parameter name="self">
<parameter_description> the replay
</parameter_description>
</parameter>
<parameter name="font">
<parameter_description> The font to filter
</parameter_description>
</parameter>
</parameters>
<return> the filtered font

</return>
</function>

<function name="gsk_render_replay_filter_node">
<description>
Replays a node using the replay's filter function.

After the replay the node may be unchanged, or it may be
removed, which will result in %NULL being returned.

If no filter node is set, [method@Gsk.RenderReplay.default] is
called instead.

Since: 4.22

</description>
<parameters>
<parameter name="self">
<parameter_description> the replay
</parameter_description>
</parameter>
<parameter name="node">
<parameter_description> the node to replay
</parameter_description>
</parameter>
</parameters>
<return> The replayed node

</return>
</function>

<function name="gsk_render_replay_filter_texture">
<description>
Filters a texture using the current filter function.

Since: 4.22

</description>
<parameters>
<parameter name="self">
<parameter_description> the replay
</parameter_description>
</parameter>
<parameter name="texture">
<parameter_description> The texture to filter
</parameter_description>
</parameter>
</parameters>
<return> the filtered texture

</return>
</function>

<function name="gsk_render_replay_free">
<description>
Frees a `GskRenderReplay`.

Since: 4.22

</description>
<parameters>
<parameter name="self">
<parameter_description> the replay object to free
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_render_replay_new">
<description>
Creates a new replay object to replay nodes.

Since: 4.22

</description>
<parameters>
</parameters>
<return> A new replay object to replay nodes

</return>
</function>

<function name="gsk_render_replay_set_font_filter">
<description>
Sets a filter function to be called by [method@Gsk.RenderReplay.default]
for nodes that contain fonts.

You can call [method@GskRenderReplay.filter_font] to filter
a font yourself.

Since: 4.22

</description>
<parameters>
<parameter name="self">
<parameter_description> the replay
</parameter_description>
</parameter>
<parameter name="filter">
<parameter_description>
the font filter function
</parameter_description>
</parameter>
<parameter name="user_data">
<parameter_description> user data to pass to @filter
</parameter_description>
</parameter>
<parameter name="user_destroy">
<parameter_description> destroy notify that will be called to release
the user data parameter
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_render_replay_set_node_filter">
<description>
Sets the function to use as a node filter.

This is the most complex function to use for replaying nodes.
It can either:

* keep the node and just return it unchanged

* create a replacement node and return that

* discard the node by returning `NULL`

* call [method@Gsk.RenderReplay.default] to have the default handler
run for this node, which calls your function on its children

Since: 4.22

</description>
<parameters>
<parameter name="filter">
<parameter_description>
the function to call to replay nodes
</parameter_description>
</parameter>
<parameter name="user_data">
<parameter_description> user data to pass to @func
</parameter_description>
</parameter>
<parameter name="user_destroy">
<parameter_description> destroy notify that will be called to release
the user data parameter
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_render_replay_set_texture_filter">
<description>
Sets a filter function to be called by [method@Gsk.RenderReplay.default]
for nodes that contain textures.

You can call [method@GskRenderReplay.filter_texture] to filter
a texture yourself.

Since: 4.22

</description>
<parameters>
<parameter name="self">
<parameter_description> the replay
</parameter_description>
</parameter>
<parameter name="filter">
<parameter_description>
the texture filter function
</parameter_description>
</parameter>
<parameter name="user_data">
<parameter_description> user data to pass to @filter
</parameter_description>
</parameter>
<parameter name="user_destroy">
<parameter_description> destroy notify that will be called to release
the user data parameter
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_renderer_get_surface">
<description>
Retrieves the surface that the renderer is associated with.

If the renderer has not been realized yet, `NULL` will be returned.


</description>
<parameters>
<parameter name="renderer">
<parameter_description> a renderer
</parameter_description>
</parameter>
</parameters>
<return> the surface
</return>
</function>

<function name="gsk_renderer_is_realized">
<description>
Checks whether the renderer is realized or not.


</description>
<parameters>
<parameter name="renderer">
<parameter_description> a renderer
</parameter_description>
</parameter>
</parameters>
<return> true if the renderer was realized, false otherwise
</return>
</function>

<function name="gsk_renderer_new_for_surface">
<description>
Creates an appropriate `GskRenderer` instance for the given surface.

If the `GSK_RENDERER` environment variable is set, GSK will
try that renderer first, before trying the backend-specific
default. The ultimate fallback is the cairo renderer.

The renderer will be realized before it is returned.


</description>
<parameters>
<parameter name="surface">
<parameter_description> a surface
</parameter_description>
</parameter>
</parameters>
<return> the realized renderer
</return>
</function>

<function name="gsk_renderer_realize">
<description>
Creates the resources needed by the renderer.

Since GTK 4.6, the surface may be `NULL`, which allows using
renderers without having to create a surface. Since GTK 4.14,
it is recommended to use [method@Gsk.Renderer.realize_for_display]
for this case.

Note that it is mandatory to call [method@Gsk.Renderer.unrealize]
before destroying the renderer.


</description>
<parameters>
<parameter name="renderer">
<parameter_description> a renderer
</parameter_description>
</parameter>
<parameter name="surface">
<parameter_description> the surface that renderer will be used on
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> return location for an error
</parameter_description>
</parameter>
</parameters>
<return> whether the renderer was successfully realized
</return>
</function>

<function name="gsk_renderer_realize_for_display">
<description>
Creates the resources needed by the renderer.

Note that it is mandatory to call [method@Gsk.Renderer.unrealize]
before destroying the renderer.

Since: 4.14

</description>
<parameters>
<parameter name="renderer">
<parameter_description> a renderer
</parameter_description>
</parameter>
<parameter name="display">
<parameter_description> the display that the renderer will be used on
</parameter_description>
</parameter>
<parameter name="error">
<parameter_description> return location for an error
</parameter_description>
</parameter>
</parameters>
<return> whether the renderer was successfully realized

</return>
</function>

<function name="gsk_renderer_render">
<description>
Renders the scene graph, described by a tree of `GskRenderNode` instances
to the renderer's surface, ensuring that the given region gets redrawn.

If the renderer has no associated surface, this function does nothing.

Renderers must ensure that changes of the contents given by the @root
node as well as the area given by @region are redrawn. They are however
free to not redraw any pixel outside of @region if they can guarantee that
it didn't change.

The renderer will acquire a reference on the `GskRenderNode` tree while
the rendering is in progress.

</description>
<parameters>
<parameter name="renderer">
<parameter_description> a realized renderer
</parameter_description>
</parameter>
<parameter name="root">
<parameter_description> the render node to render
</parameter_description>
</parameter>
<parameter name="region">
<parameter_description> the `cairo_region_t` that must be redrawn or `NULL`
for the whole surface
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_renderer_render_texture">
<description>
Renders a scene graph, described by a tree of `GskRenderNode` instances,
to a texture.

The renderer will acquire a reference on the `GskRenderNode` tree while
the rendering is in progress.

If you want to apply any transformations to @root, you should put it into a
transform node and pass that node instead.


</description>
<parameters>
<parameter name="renderer">
<parameter_description> a realized renderer
</parameter_description>
</parameter>
<parameter name="root">
<parameter_description> the render node to render
</parameter_description>
</parameter>
<parameter name="viewport">
<parameter_description> the section to draw or `NULL` to use @root's bounds
</parameter_description>
</parameter>
</parameters>
<return> a texture with the rendered contents of @root
</return>
</function>

<function name="gsk_renderer_unrealize">
<description>
Releases all the resources created by [method@Gsk.Renderer.realize].

</description>
<parameters>
<parameter name="renderer">
<parameter_description> a renderer
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_repeat_node_get_child">
<description>
Retrieves the child of @node.


</description>
<parameters>
<parameter name="node">
<parameter_description> a repeat `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> a `GskRenderNode`
</return>
</function>

<function name="gsk_repeat_node_get_child_bounds">
<description>
Retrieves the bounding rectangle of the child of @node.


</description>
<parameters>
<parameter name="node">
<parameter_description> a repeat `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> a bounding rectangle
</return>
</function>

<function name="gsk_repeat_node_get_child_snap">
<description>
Retrieves the snap value for the child's bounding
rectangle.

Since: 4.24

</description>
<parameters>
<parameter name="node">
<parameter_description> a repeat `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> the snap value

</return>
</function>

<function name="gsk_repeat_node_get_snap">
<description>
Retrieves the snap value for this node

Since: 4.24

</description>
<parameters>
<parameter name="node">
<parameter_description> a repeat `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> the snap value

</return>
</function>

<function name="gsk_repeat_node_new">
<description>
Creates a `GskRenderNode` that will repeat the drawing of @child across
the given @bounds.


</description>
<parameters>
<parameter name="bounds">
<parameter_description> The bounds of the area to be painted
</parameter_description>
</parameter>
<parameter name="child">
<parameter_description> The child to repeat
</parameter_description>
</parameter>
<parameter name="child_bounds">
<parameter_description> The area of the child to repeat or %NULL to
use the child's bounds
</parameter_description>
</parameter>
</parameters>
<return> A new `GskRenderNode`
</return>
</function>

<function name="gsk_repeating_linear_gradient_node_new">
<description>
Creates a `GskRenderNode` that will create a repeating linear gradient
from the given points and color stops, and render that into the area
given by @bounds.


</description>
<parameters>
<parameter name="bounds">
<parameter_description> the rectangle to render the linear gradient into
</parameter_description>
</parameter>
<parameter name="start">
<parameter_description> the point at which the linear gradient will begin
</parameter_description>
</parameter>
<parameter name="end">
<parameter_description> the point at which the linear gradient will finish
</parameter_description>
</parameter>
<parameter name="color_stops">
<parameter_description> a pointer to an array of
`GskColorStop` defining the gradient. The offsets of all color stops
must be increasing. The first stop's offset must be &gt;= 0 and the last
stop's offset must be &lt;= 1.
</parameter_description>
</parameter>
<parameter name="n_color_stops">
<parameter_description> the number of elements in @color_stops
</parameter_description>
</parameter>
</parameters>
<return> A new `GskRenderNode`
</return>
</function>

<function name="gsk_repeating_radial_gradient_node_new">
<description>
Creates a `GskRenderNode` that draws a repeating radial gradient.

The radial gradient starts around @center. The size of the gradient
is dictated by @hradius in horizontal orientation and by @vradius
in vertical orientation.


</description>
<parameters>
<parameter name="bounds">
<parameter_description> the bounds of the node
</parameter_description>
</parameter>
<parameter name="center">
<parameter_description> the center of the gradient
</parameter_description>
</parameter>
<parameter name="hradius">
<parameter_description> the horizontal radius
</parameter_description>
</parameter>
<parameter name="vradius">
<parameter_description> the vertical radius
</parameter_description>
</parameter>
<parameter name="start">
<parameter_description> a percentage &gt;= 0 that defines the start of the gradient around @center
</parameter_description>
</parameter>
<parameter name="end">
<parameter_description> a percentage &gt;= 0 that defines the end of the gradient around @center
</parameter_description>
</parameter>
<parameter name="color_stops">
<parameter_description> a pointer to an array of
`GskColorStop` defining the gradient. The offsets of all color stops
must be increasing. The first stop's offset must be &gt;= 0 and the last
stop's offset must be &lt;= 1.
</parameter_description>
</parameter>
<parameter name="n_color_stops">
<parameter_description> the number of elements in @color_stops
</parameter_description>
</parameter>
</parameters>
<return> A new `GskRenderNode`
</return>
</function>

<function name="gsk_rounded_clip_node_get_child">
<description>
Gets the child node that is getting clipped by the given @node.


</description>
<parameters>
<parameter name="node">
<parameter_description> a rounded clip `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> The child that is getting clipped
</return>
</function>

<function name="gsk_rounded_clip_node_get_clip">
<description>
Retrieves the rounded rectangle used to clip the contents of the @node.


</description>
<parameters>
<parameter name="node">
<parameter_description> a rounded clip `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> a rounded rectangle
</return>
</function>

<function name="gsk_rounded_clip_node_get_snap">
<description>
Retrieves the snap value for this node

Since: 4.24

</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRoundedClipNode`
</parameter_description>
</parameter>
</parameters>
<return> the snap value

</return>
</function>

<function name="gsk_rounded_clip_node_new">
<description>
Creates a `GskRenderNode` that will clip the @child to the area
given by @clip.


</description>
<parameters>
<parameter name="child">
<parameter_description> The node to draw
</parameter_description>
</parameter>
<parameter name="clip">
<parameter_description> The clip to apply
</parameter_description>
</parameter>
</parameters>
<return> A new `GskRenderNode`
</return>
</function>

<function name="gsk_rounded_clip_node_new2">
<description>
Creates a `GskRenderNode` that will clip the @child to the area
given by @clip using the given snap value.


</description>
<parameters>
<parameter name="child">
<parameter_description> The node to draw
</parameter_description>
</parameter>
<parameter name="clip">
<parameter_description> The clip to apply
</parameter_description>
</parameter>
<parameter name="snap">
<parameter_description> how to snap the clip rectangle to the pixel grid
</parameter_description>
</parameter>
</parameters>
<return> A new `GskRenderNode`
</return>
</function>

<function name="gsk_rounded_rect_contains_point">
<description>
Checks if the given point is inside the rounded rectangle.


</description>
<parameters>
<parameter name="self">
<parameter_description> a rounded rectangle
</parameter_description>
</parameter>
<parameter name="point">
<parameter_description> the point to check
</parameter_description>
</parameter>
</parameters>
<return> true if the point is inside the rounded rectangle
</return>
</function>

<function name="gsk_rounded_rect_contains_rect">
<description>
Checks if the given rectangle is contained inside the rounded rectangle.


</description>
<parameters>
<parameter name="self">
<parameter_description> a rounded rectangle
</parameter_description>
</parameter>
<parameter name="rect">
<parameter_description> the rectangle to check
</parameter_description>
</parameter>
</parameters>
<return> true if the @rect is fully contained inside the rounded rectangle
</return>
</function>

<function name="gsk_rounded_rect_init">
<description>
Initializes a rounded rectangle with the given values.

This function will implicitly normalize the rounded rectangle
before returning.


</description>
<parameters>
<parameter name="self">
<parameter_description> the rounded rectangle to initialize
</parameter_description>
</parameter>
<parameter name="bounds">
<parameter_description> a `graphene_rect_t` describing the bounds
</parameter_description>
</parameter>
<parameter name="top_left">
<parameter_description> the rounding radius of the top left corner
</parameter_description>
</parameter>
<parameter name="top_right">
<parameter_description> the rounding radius of the top right corner
</parameter_description>
</parameter>
<parameter name="bottom_right">
<parameter_description> the rounding radius of the bottom right corner
</parameter_description>
</parameter>
<parameter name="bottom_left">
<parameter_description> the rounding radius of the bottom left corner
</parameter_description>
</parameter>
</parameters>
<return> the initialized rounded rectangle
</return>
</function>

<function name="gsk_rounded_rect_init_copy">
<description>
Initializes a rounded rectangle with a copy.

This function will not normalize the rounded rectangle,
so make sure the source is normalized.


</description>
<parameters>
<parameter name="self">
<parameter_description> the rounded rectangle to initialize
</parameter_description>
</parameter>
<parameter name="src">
<parameter_description> another rounded rectangle
</parameter_description>
</parameter>
</parameters>
<return> the initialized rounded rectangle
</return>
</function>

<function name="gsk_rounded_rect_init_from_rect">
<description>
Initializes a rounded rectangle to the given bounds
and sets the radius of all four corners equally.


</description>
<parameters>
<parameter name="self">
<parameter_description> the rounded rectangle to initialize
</parameter_description>
</parameter>
<parameter name="bounds">
<parameter_description> a `graphene_rect_t`
</parameter_description>
</parameter>
<parameter name="radius">
<parameter_description> the border radius
</parameter_description>
</parameter>
</parameters>
<return> the initialized rounded rectangle
</return>
</function>

<function name="gsk_rounded_rect_intersects_rect">
<description>
Checks if part a rectangle is contained
inside the rounded rectangle.


</description>
<parameters>
<parameter name="self">
<parameter_description> a rounded rectangle
</parameter_description>
</parameter>
<parameter name="rect">
<parameter_description> the rectangle to check
</parameter_description>
</parameter>
</parameters>
<return> true if the @rect intersects with the rounded rectangle
</return>
</function>

<function name="gsk_rounded_rect_is_rectilinear">
<description>
Checks if all corners of a rounded rectangle are right angles
and the rectangle covers all of its bounds.

This information can be used to decide if [ctor@Gsk.ClipNode.new]
or [ctor@Gsk.RoundedClipNode.new] should be called.


</description>
<parameters>
<parameter name="self">
<parameter_description> the rounded rectangle to check
</parameter_description>
</parameter>
</parameters>
<return> true if the rounded rectangle is rectilinear
</return>
</function>

<function name="gsk_rounded_rect_normalize">
<description>
Normalizes a rounded rectangle.

This function will ensure that the bounds of the rounded rectangle
are normalized and ensure that the corner values are positive
and the corners do not overlap.


</description>
<parameters>
<parameter name="self">
<parameter_description> a rounded rectangle
</parameter_description>
</parameter>
</parameters>
<return> the normalized rounded rectangle
</return>
</function>

<function name="gsk_rounded_rect_offset">
<description>
Offsets the rounded rectangle's origin by @dx and @dy.

The size and corners of the rounded rectangle are unchanged.


</description>
<parameters>
<parameter name="self">
<parameter_description> a rounded rectangle
</parameter_description>
</parameter>
<parameter name="dx">
<parameter_description> the horizontal offset
</parameter_description>
</parameter>
<parameter name="dy">
<parameter_description> the vertical offset
</parameter_description>
</parameter>
</parameters>
<return> the offset rounded rectangle
</return>
</function>

<function name="gsk_rounded_rect_shrink">
<description>
Shrinks (or grows) a rounded rectangle by moving the 4 sides
according to the offsets given.

The corner radii will be changed in a way that tries to keep
the center of the corner circle intact. This emulates CSS behavior.

This function also works for growing rounded rectangles
if you pass negative values for the @top, @right, @bottom or @left.


</description>
<parameters>
<parameter name="self">
<parameter_description> the rounded rectangle to shrink or grow
</parameter_description>
</parameter>
<parameter name="top">
<parameter_description> how far to move the top side downwards
</parameter_description>
</parameter>
<parameter name="right">
<parameter_description> how far to move the right side to the left
</parameter_description>
</parameter>
<parameter name="bottom">
<parameter_description> how far to move the bottom side upwards
</parameter_description>
</parameter>
<parameter name="left">
<parameter_description> how far to move the left side to the right
</parameter_description>
</parameter>
</parameters>
<return> the resized rounded rectangle
</return>
</function>

<function name="gsk_serialization_error_quark">
<description>
Registers an error quark for [class@Gsk.RenderNode] errors.


</description>
<parameters>
</parameters>
<return> the error quark
</return>
</function>

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

Any uniforms of the shader that have not been explicitly set
on the @builder are zero-initialized.

Deprecated: 4.16: GTK's new Vulkan-focused rendering
does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
for OpenGL rendering.

</description>
<parameters>
<parameter name="builder">
<parameter_description> a `GskShaderArgsBuilder`
</parameter_description>
</parameter>
</parameters>
<return> the newly allocated buffer with
all the args added to @builder

</return>
</function>

<function name="gsk_shader_args_builder_new">
<description>
Allocates a builder that can be used to construct a new uniform data
chunk.

Deprecated: 4.16: GTK's new Vulkan-focused rendering
does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
for OpenGL rendering.

</description>
<parameters>
<parameter name="shader">
<parameter_description> a `GskGLShader`
</parameter_description>
</parameter>
<parameter name="initial_values">
<parameter_description> optional `GBytes` with initial values
</parameter_description>
</parameter>
</parameters>
<return> The newly allocated builder, free with
[method@Gsk.ShaderArgsBuilder.unref]

</return>
</function>

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

Deprecated: 4.16: GTK's new Vulkan-focused rendering
does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
for OpenGL rendering.

</description>
<parameters>
<parameter name="builder">
<parameter_description> a `GskShaderArgsBuilder`
</parameter_description>
</parameter>
</parameters>
<return> the passed in `GskShaderArgsBuilder`

</return>
</function>

<function name="gsk_shader_args_builder_set_bool">
<description>
Sets the value of the uniform @idx.

The uniform must be of bool type.

Deprecated: 4.16: GTK's new Vulkan-focused rendering
does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
for OpenGL rendering.

</description>
<parameters>
<parameter name="builder">
<parameter_description> a `GskShaderArgsBuilder`
</parameter_description>
</parameter>
<parameter name="idx">
<parameter_description> index of the uniform
</parameter_description>
</parameter>
<parameter name="value">
<parameter_description> value to set the uniform to
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_shader_args_builder_set_float">
<description>
Sets the value of the uniform @idx.

The uniform must be of float type.

Deprecated: 4.16

</description>
<parameters>
<parameter name="builder">
<parameter_description> a `GskShaderArgsBuilder`
</parameter_description>
</parameter>
<parameter name="idx">
<parameter_description> index of the uniform
</parameter_description>
</parameter>
<parameter name="value">
<parameter_description> value to set the uniform to
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_shader_args_builder_set_int">
<description>
Sets the value of the uniform @idx.

The uniform must be of int type.

Deprecated: 4.16: GTK's new Vulkan-focused rendering
does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
for OpenGL rendering.

</description>
<parameters>
<parameter name="builder">
<parameter_description> a `GskShaderArgsBuilder`
</parameter_description>
</parameter>
<parameter name="idx">
<parameter_description> index of the uniform
</parameter_description>
</parameter>
<parameter name="value">
<parameter_description> value to set the uniform to
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_shader_args_builder_set_uint">
<description>
Sets the value of the uniform @idx.

The uniform must be of uint type.

Deprecated: 4.16: GTK's new Vulkan-focused rendering
does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
for OpenGL rendering.

</description>
<parameters>
<parameter name="builder">
<parameter_description> a `GskShaderArgsBuilder`
</parameter_description>
</parameter>
<parameter name="idx">
<parameter_description> index of the uniform
</parameter_description>
</parameter>
<parameter name="value">
<parameter_description> value to set the uniform to
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_shader_args_builder_set_vec2">
<description>
Sets the value of the uniform @idx.

The uniform must be of vec2 type.

Deprecated: 4.16: GTK's new Vulkan-focused rendering
does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
for OpenGL rendering.

</description>
<parameters>
<parameter name="builder">
<parameter_description> A `GskShaderArgsBuilder`
</parameter_description>
</parameter>
<parameter name="idx">
<parameter_description> index of the uniform
</parameter_description>
</parameter>
<parameter name="value">
<parameter_description> value to set the uniform too
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_shader_args_builder_set_vec3">
<description>
Sets the value of the uniform @idx.

The uniform must be of vec3 type.

Deprecated: 4.16: GTK's new Vulkan-focused rendering
does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
for OpenGL rendering.

</description>
<parameters>
<parameter name="builder">
<parameter_description> a `GskShaderArgsBuilder`
</parameter_description>
</parameter>
<parameter name="idx">
<parameter_description> index of the uniform
</parameter_description>
</parameter>
<parameter name="value">
<parameter_description> value to set the uniform too
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_shader_args_builder_set_vec4">
<description>
Sets the value of the uniform @idx.

The uniform must be of vec4 type.

Deprecated: 4.16: GTK's new Vulkan-focused rendering
does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
for OpenGL rendering.

</description>
<parameters>
<parameter name="builder">
<parameter_description> a `GskShaderArgsBuilder`
</parameter_description>
</parameter>
<parameter name="idx">
<parameter_description> index of the uniform
</parameter_description>
</parameter>
<parameter name="value">
<parameter_description> value to set the uniform too
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_shader_args_builder_to_args">
<description>
Creates a new `GBytes` args from the current state of the
given @builder.

Any uniforms of the shader that have not been explicitly set on
the @builder are zero-initialized.

The given `GskShaderArgsBuilder` 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@Gsk.ShaderArgsBuilder.free_to_args].

Deprecated: 4.16: GTK's new Vulkan-focused rendering
does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
for OpenGL rendering.

</description>
<parameters>
<parameter name="builder">
<parameter_description> a `GskShaderArgsBuilder`
</parameter_description>
</parameter>
</parameters>
<return> the newly allocated buffer with
all the args added to @builder

</return>
</function>

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

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

Deprecated: 4.16: GTK's new Vulkan-focused rendering
does not support this feature. Use [GtkGLArea](../gtk4/class.GLArea.html)
for OpenGL rendering.

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

<function name="gsk_shadow_node_get_child">
<description>
Retrieves the child `GskRenderNode` of the shadow @node.


</description>
<parameters>
<parameter name="node">
<parameter_description> a shadow `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> the child render node
</return>
</function>

<function name="gsk_shadow_node_get_n_shadows">
<description>
Retrieves the number of shadows in the @node.


</description>
<parameters>
<parameter name="node">
<parameter_description> a shadow `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> the number of shadows.
</return>
</function>

<function name="gsk_shadow_node_get_shadow">
<description>
Retrieves the shadow data at the given index @i.


</description>
<parameters>
<parameter name="node">
<parameter_description> a shadow `GskRenderNode`
</parameter_description>
</parameter>
<parameter name="i">
<parameter_description> the given index
</parameter_description>
</parameter>
</parameters>
<return> the shadow data
</return>
</function>

<function name="gsk_shadow_node_new">
<description>
Creates a `GskRenderNode` that will draw a @child with the given
@shadows below it.


</description>
<parameters>
<parameter name="child">
<parameter_description> The node to draw
</parameter_description>
</parameter>
<parameter name="shadows">
<parameter_description> The shadows to apply
</parameter_description>
</parameter>
<parameter name="n_shadows">
<parameter_description> number of entries in the @shadows array
</parameter_description>
</parameter>
</parameters>
<return> A new `GskRenderNode`
</return>
</function>

<function name="gsk_stroke_copy">
<description>
Creates a copy of a `GskStroke`.

Since: 4.14

</description>
<parameters>
<parameter name="other">
<parameter_description> the stroke to copy
</parameter_description>
</parameter>
</parameters>
<return> a new `GskStroke`. Use [method@Gsk.Stroke.free] to free it

</return>
</function>

<function name="gsk_stroke_equal">
<description>
Checks if two strokes are identical.

Since: 4.14

</description>
<parameters>
<parameter name="stroke1">
<parameter_description> the first stroke
</parameter_description>
</parameter>
<parameter name="stroke2">
<parameter_description> the second stroke
</parameter_description>
</parameter>
</parameters>
<return> true if the two strokes are equal, false otherwise

</return>
</function>

<function name="gsk_stroke_free">
<description>
Frees a `GskStroke`.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a stroke
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_stroke_get_dash">
<description>
Gets the dash array in use.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a stroke
</parameter_description>
</parameter>
<parameter name="n_dash">
<parameter_description> number of elements in the array returned
</parameter_description>
</parameter>
</parameters>
<return>
the dash array or `NULL` if the dash array is empty

</return>
</function>

<function name="gsk_stroke_get_dash_offset">
<description>
Gets the dash offset.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a stroke
</parameter_description>
</parameter>
</parameters>
<return> the dash offset

</return>
</function>

<function name="gsk_stroke_get_line_cap">
<description>
Gets the line cap used.

See [enum@Gsk.LineCap] for details.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a stroke
</parameter_description>
</parameter>
</parameters>
<return> the line cap

</return>
</function>

<function name="gsk_stroke_get_line_join">
<description>
Gets the line join used.

See [enum@Gsk.LineJoin] for details.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a stroke
</parameter_description>
</parameter>
</parameters>
<return> the line join

</return>
</function>

<function name="gsk_stroke_get_line_width">
<description>
Gets the line width used.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a stroke
</parameter_description>
</parameter>
</parameters>
<return> the line width

</return>
</function>

<function name="gsk_stroke_get_miter_limit">
<description>
Gets the miter limit.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a stroke
</parameter_description>
</parameter>
</parameters>
<return> the miter limit

</return>
</function>

<function name="gsk_stroke_new">
<description>
Creates a new `GskStroke` with the given @line_width.

Since: 4.14

</description>
<parameters>
<parameter name="line_width">
<parameter_description> line width of the stroke. Must be &gt; 0
</parameter_description>
</parameter>
</parameters>
<return> a new `GskStroke`

</return>
</function>

<function name="gsk_stroke_node_get_child">
<description>
Gets the child node that is getting drawn by the given @node.

Since: 4.14

</description>
<parameters>
<parameter name="node">
<parameter_description> a stroke #GskRenderNode
</parameter_description>
</parameter>
</parameters>
<return> The child that is getting drawn

</return>
</function>

<function name="gsk_stroke_node_get_path">
<description>
Retrieves the path that will be stroked with the contents of
the @node.

Since: 4.14

</description>
<parameters>
<parameter name="node">
<parameter_description> a stroke #GskRenderNode
</parameter_description>
</parameter>
</parameters>
<return> a #GskPath

</return>
</function>

<function name="gsk_stroke_node_get_stroke">
<description>
Retrieves the stroke attributes used in this @node.

Since: 4.14

</description>
<parameters>
<parameter name="node">
<parameter_description> a stroke #GskRenderNode
</parameter_description>
</parameter>
</parameters>
<return> a #GskStroke

</return>
</function>

<function name="gsk_stroke_node_new">
<description>
Creates a #GskRenderNode that will fill the outline generated by stroking
the given @path using the attributes defined in @stroke.

The area is filled with @child.

GSK aims to follow the SVG semantics for stroking paths.
E.g. zero-length contours will get round or square line
caps drawn, regardless whether they are closed or not.

Since: 4.14

</description>
<parameters>
<parameter name="child">
<parameter_description> The node to stroke the area with
</parameter_description>
</parameter>
<parameter name="path">
<parameter_description> The path describing the area to stroke
</parameter_description>
</parameter>
<parameter name="stroke">
<parameter_description> The stroke attributes to use
</parameter_description>
</parameter>
</parameters>
<return> A new #GskRenderNode

</return>
</function>

<function name="gsk_stroke_set_dash">
<description>
Sets the dash pattern to use.

A dash pattern is specified by an array of alternating non-negative
values. Each value provides the length of alternate &quot;on&quot; and &quot;off&quot;
portions of the stroke.

Each &quot;on&quot; segment will have caps applied as if the segment were a
separate contour. In particular, it is valid to use an &quot;on&quot; length
of 0 with [enum@Gsk.LineCap.round] or [enum@Gsk.LineCap.square]
to draw dots or squares along a path.

If @n_dash is 0, if all elements in @dash are 0, or if there are
negative values in @dash, then dashing is disabled.

If @n_dash is 1, an alternating &quot;on&quot; and &quot;off&quot; pattern with the
single dash length provided is assumed.

If @n_dash is uneven, the dash array will be used with the first
element in @dash defining an &quot;on&quot; or &quot;off&quot; in alternating passes
through the array.

You can specify a starting offset into the dash with
[method@Gsk.Stroke.set_dash_offset].

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a stroke
</parameter_description>
</parameter>
<parameter name="dash">
<parameter_description>
the array of dashes
</parameter_description>
</parameter>
<parameter name="n_dash">
<parameter_description> number of elements in @dash
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_stroke_set_dash_offset">
<description>
Sets the offset into the dash pattern where dashing should begin.

This is an offset into the length of the path, not an index into
the array values of the dash array.

See [method@Gsk.Stroke.set_dash] for more details on dashing.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a stroke
</parameter_description>
</parameter>
<parameter name="offset">
<parameter_description> offset into the dash pattern
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_stroke_set_line_cap">
<description>
Sets the line cap to be used when stroking.

See [enum@Gsk.LineCap] for details.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a stroke
</parameter_description>
</parameter>
<parameter name="line_cap">
<parameter_description> the line cap
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_stroke_set_line_join">
<description>
Sets the line join to be used when stroking.

See [enum@Gsk.LineJoin] for details.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a stroke
</parameter_description>
</parameter>
<parameter name="line_join">
<parameter_description> the line join to use
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_stroke_set_line_width">
<description>
Sets the line width to be used when stroking.

The line width must be &gt;= 0.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a stroke
</parameter_description>
</parameter>
<parameter name="line_width">
<parameter_description> width of the line in pixels
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_stroke_set_miter_limit">
<description>
Sets the miter limit to be used when stroking.

The miter limit is the distance from the corner where sharp
turns of joins get cut off.

The limit is specfied in units of line width and must be non-negative.

For joins of type [enum@Gsk.LineJoin.miter] that exceed the miter limit,
the join gets rendered as if it was of type [enum@Gsk.LineJoin.bevel].

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a stroke
</parameter_description>
</parameter>
<parameter name="limit">
<parameter_description> the miter limit
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_stroke_to_cairo">
<description>
A helper function that sets the stroke parameters
of a cairo context from a `GskStroke`.

Since: 4.14

</description>
<parameters>
<parameter name="self">
<parameter_description> a stroke
</parameter_description>
</parameter>
<parameter name="cr">
<parameter_description> the cairo context to configure
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_subsurface_node_get_child">
<description>
Gets the child node that is getting drawn by the given @node.

Since: 4.14

</description>
<parameters>
<parameter name="node">
<parameter_description> a subsurface `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> the child `GskRenderNode`

</return>
</function>

<function name="gsk_subsurface_node_get_subsurface">
<description>
Gets the subsurface that was set on this node

Since: 4.14

</description>
<parameters>
<parameter name="node">
<parameter_description> a subsurface `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> the subsurface

</return>
</function>

<function name="gsk_subsurface_node_new">
<description>
Creates a `GskRenderNode` that will possibly divert the child
node to a subsurface.

Note: Since subsurfaces are currently private, these nodes cannot
currently be created outside of GTK. See
[GtkGraphicsOffload](../gtk4/class.GraphicsOffload.html).

Since: 4.14

</description>
<parameters>
<parameter name="child">
<parameter_description> The child to divert to a subsurface
</parameter_description>
</parameter>
<parameter name="subsurface">
<parameter_description> the subsurface to use
</parameter_description>
</parameter>
</parameters>
<return> A new `GskRenderNode`

</return>
</function>

<function name="gsk_text_node_get_color">
<description>
Retrieves the color used by the text @node.

The value returned by this function will not be correct
if the render node was created for a non-sRGB color.


</description>
<parameters>
<parameter name="node">
<parameter_description> a text `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> the text color
</return>
</function>

<function name="gsk_text_node_get_font">
<description>
Returns the font used by the text @node.


</description>
<parameters>
<parameter name="node">
<parameter_description> The `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> the font
</return>
</function>

<function name="gsk_text_node_get_glyphs">
<description>
Retrieves the glyph information in the @node.


</description>
<parameters>
<parameter name="node">
<parameter_description> a text `GskRenderNode`
</parameter_description>
</parameter>
<parameter name="n_glyphs">
<parameter_description> the number of glyphs returned
</parameter_description>
</parameter>
</parameters>
<return> the glyph information
</return>
</function>

<function name="gsk_text_node_get_num_glyphs">
<description>
Retrieves the number of glyphs in the text node.


</description>
<parameters>
<parameter name="node">
<parameter_description> a text `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> the number of glyphs
</return>
</function>

<function name="gsk_text_node_get_offset">
<description>
Retrieves the offset applied to the text.


</description>
<parameters>
<parameter name="node">
<parameter_description> a text `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> a point with the horizontal and vertical offsets
</return>
</function>

<function name="gsk_text_node_has_color_glyphs">
<description>
Checks whether the text @node has color glyphs.

Since: 4.2

</description>
<parameters>
<parameter name="node">
<parameter_description> a text `GskRenderNode`
</parameter_description>
</parameter>
</parameters>
<return> %TRUE if the text node has color glyphs

</return>
</function>

<function name="gsk_text_node_new">
<description>
Creates a render node that renders the given glyphs.

Note that @color may not be used if the font contains
color glyphs.


</description>
<parameters>
<parameter name="font">
<parameter_description> the `PangoFont` containing the glyphs
</parameter_description>
</parameter>
<parameter name="glyphs">
<parameter_description> the `PangoGlyphString` to render
</parameter_description>
</parameter>
<parameter name="color">
<parameter_description> the foreground color to render with
</parameter_description>
</parameter>
<parameter name="offset">
<parameter_description> offset of the baseline
</parameter_description>
</parameter>
</parameters>
<return> a new `GskRenderNode`
</return>
</function>

<function name="gsk_texture_node_get_snap">
<description>
Retrieves the snap value for this node

Since: 4.24

</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for textures
</parameter_description>
</parameter>
</parameters>
<return> the snap value

</return>
</function>

<function name="gsk_texture_node_get_texture">
<description>
Retrieves the `GdkTexture` used when creating this `GskRenderNode`.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` of type %GSK_TEXTURE_NODE
</parameter_description>
</parameter>
</parameters>
<return> the `GdkTexture`
</return>
</function>

<function name="gsk_texture_node_new">
<description>
Creates a `GskRenderNode` that will render the given
@texture into the area given by @bounds.

Note that GSK applies linear filtering when textures are
scaled and transformed. See [class@Gsk.TextureScaleNode]
for a way to influence filtering.


</description>
<parameters>
<parameter name="texture">
<parameter_description> the `GdkTexture`
</parameter_description>
</parameter>
<parameter name="bounds">
<parameter_description> the rectangle to render the texture into
</parameter_description>
</parameter>
</parameters>
<return> A new `GskRenderNode`
</return>
</function>

<function name="gsk_texture_scale_node_get_filter">
<description>
Retrieves the `GskScalingFilter` used when creating this `GskRenderNode`.

Since: 4.10

</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` of type %GSK_TEXTURE_SCALE_NODE
</parameter_description>
</parameter>
</parameters>
<return> the `GskScalingFilter`

</return>
</function>

<function name="gsk_texture_scale_node_get_snap">
<description>
Retrieves the snap value for this node

Since: 4.24

</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` of type %GSK_TEXTURE_SCALE_NODE
</parameter_description>
</parameter>
</parameters>
<return> the snap value

</return>
</function>

<function name="gsk_texture_scale_node_get_texture">
<description>
Retrieves the `GdkTexture` used when creating this `GskRenderNode`.

Since: 4.10

</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` of type %GSK_TEXTURE_SCALE_NODE
</parameter_description>
</parameter>
</parameters>
<return> the `GdkTexture`

</return>
</function>

<function name="gsk_texture_scale_node_new">
<description>
Creates a node that scales the texture to the size given by the
bounds using the filter and then places it at the bounds' position.

Note that further scaling and other transformations which are
applied to the node will apply linear filtering to the resulting
texture, as usual.

This node is intended for tight control over scaling applied
to a texture, such as in image editors and requires the
application to be aware of the whole render tree as further
transforms may be applied that conflict with the desired effect
of this node.

Since: 4.10

</description>
<parameters>
<parameter name="texture">
<parameter_description> the texture to scale
</parameter_description>
</parameter>
<parameter name="bounds">
<parameter_description> the size of the texture to scale to
</parameter_description>
</parameter>
<parameter name="filter">
<parameter_description> how to scale the texture
</parameter_description>
</parameter>
</parameters>
<return> A new `GskRenderNode`

</return>
</function>

<function name="gsk_texture_scale_node_new2">
<description>
Creates a node that scales the texture to the size given by the
bounds using the filter and then places it at the bounds' position.

Note that further scaling and other transformations which are
applied to the node will apply linear filtering to the resulting
texture, as usual.

This node is intended for tight control over scaling applied
to a texture, such as in image editors and requires the
application to be aware of the whole render tree as further
transforms may be applied that conflict with the desired effect
of this node.


</description>
<parameters>
<parameter name="texture">
<parameter_description> the texture to scale
</parameter_description>
</parameter>
<parameter name="bounds">
<parameter_description> the size of the texture to scale to
</parameter_description>
</parameter>
<parameter name="snap">
<parameter_description> how to snap the texture to the pixel grid
</parameter_description>
</parameter>
<parameter name="filter">
<parameter_description> how to scale the texture
</parameter_description>
</parameter>
</parameters>
<return> A new `GskRenderNode`
</return>
</function>

<function name="gsk_transform_equal">
<description>
Checks two transforms for equality.


</description>
<parameters>
<parameter name="first">
<parameter_description> the first transform
</parameter_description>
</parameter>
<parameter name="second">
<parameter_description> the second transform
</parameter_description>
</parameter>
</parameters>
<return> true if the two transforms perform the same operation
</return>
</function>

<function name="gsk_transform_get_category">
<description>
Returns the category this transform belongs to.


</description>
<parameters>
<parameter name="self">
<parameter_description> a transform
</parameter_description>
</parameter>
</parameters>
<return> The category of the transform
</return>
</function>

<function name="gsk_transform_invert">
<description>
Inverts the given transform.

If @self is not invertible, `NULL` is returned.
Note that inverting `NULL` also returns `NULL`, which is
the correct inverse of `NULL`. If you need to differentiate
between those cases, you should check @self is not `NULL`
before calling this function.

This function consumes @self. Use [method@Gsk.Transform.ref] first
if you want to keep it around.


</description>
<parameters>
<parameter name="self">
<parameter_description> transform to invert
</parameter_description>
</parameter>
</parameters>
<return> The inverted transform
</return>
</function>

<function name="gsk_transform_matrix">
<description>
Multiplies @next with the given @matrix.

This function consumes @next. Use [method@Gsk.Transform.ref] first
if you want to keep it around.


</description>
<parameters>
<parameter name="next">
<parameter_description> the next transform
</parameter_description>
</parameter>
<parameter name="matrix">
<parameter_description> the matrix to multiply @next with
</parameter_description>
</parameter>
</parameters>
<return> The new transform
</return>
</function>

<function name="gsk_transform_matrix_2d">
<description>
Multiplies @next with the matrix [ xx yx x0; xy yy y0; 0 0 1 ].

The result of calling [method@Gsk.Transform.to_2d] on the returned
[struct@Gsk.Transform] should match the input passed to this
function.

This function consumes @next. Use [method@Gsk.Transform.ref] first
if you want to keep it around.

Since: 4.20

</description>
<parameters>
<parameter name="next">
<parameter_description> the next transform
</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="dx">
<parameter_description> the x0 member
</parameter_description>
</parameter>
<parameter name="dy">
<parameter_description> the y0 member
</parameter_description>
</parameter>
</parameters>
<return> The new transform

</return>
</function>

<function name="gsk_transform_node_get_child">
<description>
Gets the child node that is getting transformed by the given @node.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for a transform
</parameter_description>
</parameter>
</parameters>
<return> The child that is getting transformed
</return>
</function>

<function name="gsk_transform_node_get_transform">
<description>
Retrieves the `GskTransform` used by the @node.


</description>
<parameters>
<parameter name="node">
<parameter_description> a `GskRenderNode` for a transform
</parameter_description>
</parameter>
</parameters>
<return> a `GskTransform`
</return>
</function>

<function name="gsk_transform_node_new">
<description>
Creates a `GskRenderNode` that will transform the given @child
with the given @transform.


</description>
<parameters>
<parameter name="child">
<parameter_description> The node to transform
</parameter_description>
</parameter>
<parameter name="transform">
<parameter_description> The transform to apply
</parameter_description>
</parameter>
</parameters>
<return> A new `GskRenderNode`
</return>
</function>

<function name="gsk_transform_parse">
<description>
Parses a given into a transform.

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

If @string does not describe a valid transform, false
is returned and `NULL` is put in @out_transform.


</description>
<parameters>
<parameter name="string">
<parameter_description> the string to parse
</parameter_description>
</parameter>
<parameter name="out_transform">
<parameter_description> return location for the transform
</parameter_description>
</parameter>
</parameters>
<return> true if @string described a valid transform
</return>
</function>

<function name="gsk_transform_perspective">
<description>
Applies a perspective projection transform.

This transform scales points in X and Y based on their Z value,
scaling points with positive Z values away from the origin, and
those with negative Z values towards the origin. Points
on the z=0 plane are unchanged.

This function consumes @next. Use [method@Gsk.Transform.ref] first
if you want to keep it around.


</description>
<parameters>
<parameter name="next">
<parameter_description> the next transform
</parameter_description>
</parameter>
<parameter name="depth">
<parameter_description> distance of the z=0 plane. Lower values give a more
flattened pyramid and therefore a more pronounced
perspective effect.
</parameter_description>
</parameter>
</parameters>
<return> The new transform
</return>
</function>

<function name="gsk_transform_print">
<description>
Converts the transform into a human-readable representation.

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

</description>
<parameters>
<parameter name="self">
<parameter_description> a transform
</parameter_description>
</parameter>
<parameter name="string">
<parameter_description>  The string to print into
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_transform_ref">
<description>
Acquires a reference on the given transform.


</description>
<parameters>
<parameter name="self">
<parameter_description> a transform
</parameter_description>
</parameter>
</parameters>
<return> the transform with an additional reference
</return>
</function>

<function name="gsk_transform_rotate">
<description>
Rotates @next by an angle around the Z axis.

The rotation happens around the origin point of (0, 0).

This function consumes @next. Use [method@Gsk.Transform.ref] first
if you want to keep it around.


</description>
<parameters>
<parameter name="next">
<parameter_description> the next transform
</parameter_description>
</parameter>
<parameter name="angle">
<parameter_description> the rotation angle, in degrees (clockwise)
</parameter_description>
</parameter>
</parameters>
<return> The new transform
</return>
</function>

<function name="gsk_transform_rotate_3d">
<description>
Rotates @next @angle degrees around @axis.

For a rotation in 2D space, use [method@Gsk.Transform.rotate]

This function consumes @next. Use [method@Gsk.Transform.ref] first
if you want to keep it around.


</description>
<parameters>
<parameter name="next">
<parameter_description> the next transform
</parameter_description>
</parameter>
<parameter name="angle">
<parameter_description> the rotation angle, in degrees (clockwise)
</parameter_description>
</parameter>
<parameter name="axis">
<parameter_description> The rotation axis
</parameter_description>
</parameter>
</parameters>
<return> The new transform
</return>
</function>

<function name="gsk_transform_scale">
<description>
Scales @next in 2-dimensional space by the given factors.

Use [method@Gsk.Transform.scale_3d] to scale in all 3 dimensions.

This function consumes @next. Use [method@Gsk.Transform.ref] first
if you want to keep it around.


</description>
<parameters>
<parameter name="next">
<parameter_description> the next transform
</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>
</parameters>
<return> The new transform
</return>
</function>

<function name="gsk_transform_scale_3d">
<description>
Scales @next by the given factors.

This function consumes @next. Use [method@Gsk.Transform.ref] first
if you want to keep it around.


</description>
<parameters>
<parameter name="next">
<parameter_description> the next transform
</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> The new transform
</return>
</function>

<function name="gsk_transform_skew">
<description>
Applies a skew transform.

This function consumes @next. Use [method@Gsk.Transform.ref] first
if you want to keep it around.

Since: 4.6

</description>
<parameters>
<parameter name="next">
<parameter_description> the next transform
</parameter_description>
</parameter>
<parameter name="skew_x">
<parameter_description> skew factor, in degrees, on the X axis
</parameter_description>
</parameter>
<parameter name="skew_y">
<parameter_description> skew factor, in degrees, on the Y axis
</parameter_description>
</parameter>
</parameters>
<return> The new transform

</return>
</function>

<function name="gsk_transform_to_2d">
<description>
Converts a transform to a 2D transformation matrix.

@self must be a 2D transformation. If you are not
sure, use

gsk_transform_get_category() &gt;= GSK_TRANSFORM_CATEGORY_2D

to check.

The returned values are a subset of the full 4x4 matrix that
is computed by [method@Gsk.Transform.to_matrix] and have the
following layout:

```
| xx yx |   |  a  b  0 |
| xy yy | = |  c  d  0 |
| dx dy |   | tx ty  1 |
```

This function can be used to convert between a `GskTransform`
and a matrix type from other 2D drawing libraries, in particular
Cairo.

</description>
<parameters>
<parameter name="self">
<parameter_description> a 2D transform
</parameter_description>
</parameter>
<parameter name="out_xx">
<parameter_description> return location for the xx member
</parameter_description>
</parameter>
<parameter name="out_yx">
<parameter_description> return location for the yx member
</parameter_description>
</parameter>
<parameter name="out_xy">
<parameter_description> return location for the xy member
</parameter_description>
</parameter>
<parameter name="out_yy">
<parameter_description> return location for the yy member
</parameter_description>
</parameter>
<parameter name="out_dx">
<parameter_description> return location for the x0 member
</parameter_description>
</parameter>
<parameter name="out_dy">
<parameter_description> return location for the y0 member
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_transform_to_2d_components">
<description>
Converts a transform to 2D transformation factors.

To recreate an equivalent transform from the factors returned
by this function, use

gsk_transform_skew (
gsk_transform_scale (
gsk_transform_rotate (
gsk_transform_translate (NULL, &amp;GRAPHENE_POINT_INIT (dx, dy)),
angle),
scale_x, scale_y),
skew_x, skew_y)

@self must be a 2D transformation. If you are not sure, use

gsk_transform_get_category() &gt;= GSK_TRANSFORM_CATEGORY_2D

to check.

Since: 4.6

</description>
<parameters>
<parameter name="self">
<parameter_description> a transform
</parameter_description>
</parameter>
<parameter name="out_skew_x">
<parameter_description> return location for the skew factor
in the  x direction
</parameter_description>
</parameter>
<parameter name="out_skew_y">
<parameter_description> return location for the skew factor
in the  y direction
</parameter_description>
</parameter>
<parameter name="out_scale_x">
<parameter_description> return location for the scale
factor in the x direction
</parameter_description>
</parameter>
<parameter name="out_scale_y">
<parameter_description> return location for the scale
factor in the y direction
</parameter_description>
</parameter>
<parameter name="out_angle">
<parameter_description> return location for the rotation angle
</parameter_description>
</parameter>
<parameter name="out_dx">
<parameter_description> return location for the translation
in the x direction
</parameter_description>
</parameter>
<parameter name="out_dy">
<parameter_description> return location for the translation
in the y direction
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_transform_to_affine">
<description>
Converts a transform to 2D affine transformation factors.

To recreate an equivalent transform from the factors returned
by this function, use

gsk_transform_scale (
gsk_transform_translate (
NULL,
&amp;GRAPHENE_POINT_T (dx, dy)),
sx, sy)

@self must be a 2D affine transformation. If you are not
sure, use

gsk_transform_get_category() &gt;= GSK_TRANSFORM_CATEGORY_2D_AFFINE

to check.

</description>
<parameters>
<parameter name="self">
<parameter_description> a transform
</parameter_description>
</parameter>
<parameter name="out_scale_x">
<parameter_description> return location for the scale
factor in the x direction
</parameter_description>
</parameter>
<parameter name="out_scale_y">
<parameter_description> return location for the scale
factor in the y direction
</parameter_description>
</parameter>
<parameter name="out_dx">
<parameter_description> return location for the translation
in the x direction
</parameter_description>
</parameter>
<parameter name="out_dy">
<parameter_description> return location for the translation
in the y direction
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_transform_to_matrix">
<description>
Computes the 4x4 matrix for the transform.

The previous value of @out_matrix will be ignored.

</description>
<parameters>
<parameter name="self">
<parameter_description> a transform
</parameter_description>
</parameter>
<parameter name="out_matrix">
<parameter_description> return location for the matrix
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_transform_to_string">
<description>
Converts the transform into a human-readable string.

The resulting string can be parsed with [func@Gsk.Transform.parse].

This is a wrapper around [method@Gsk.Transform.print].


</description>
<parameters>
<parameter name="self">
<parameter_description> a transform
</parameter_description>
</parameter>
</parameters>
<return> A new string for @self
</return>
</function>

<function name="gsk_transform_to_translate">
<description>
Converts a transform to a translation operation.

@self must be a 2D transformation. If you are not
sure, use

gsk_transform_get_category() &gt;= GSK_TRANSFORM_CATEGORY_2D_TRANSLATE

to check.

</description>
<parameters>
<parameter name="self">
<parameter_description> a transform
</parameter_description>
</parameter>
<parameter name="out_dx">
<parameter_description> return location for the translation
in the x direction
</parameter_description>
</parameter>
<parameter name="out_dy">
<parameter_description> return location for the translation
in the y direction
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_transform_transform">
<description>
Applies all the operations from @other to @next.

This function consumes @next. Use [method@Gsk.Transform.ref] first
if you want to keep it around.


</description>
<parameters>
<parameter name="next">
<parameter_description> transform to apply @other to
</parameter_description>
</parameter>
<parameter name="other">
<parameter_description>  transform to apply
</parameter_description>
</parameter>
</parameters>
<return> The new transform
</return>
</function>

<function name="gsk_transform_transform_bounds">
<description>
Transforms a rectangle using the given transform.

The result is the bounding box containing the coplanar quad.

The input and output rect may point to the same rectangle.

</description>
<parameters>
<parameter name="self">
<parameter_description> a transform
</parameter_description>
</parameter>
<parameter name="rect">
<parameter_description> the rectangle to transform
</parameter_description>
</parameter>
<parameter name="out_rect">
<parameter_description> return location for the bounds
of the transformed rectangle
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_transform_transform_point">
<description>
Transforms a point using the given transform.

</description>
<parameters>
<parameter name="self">
<parameter_description> a transform
</parameter_description>
</parameter>
<parameter name="point">
<parameter_description> the point to transform
</parameter_description>
</parameter>
<parameter name="out_point">
<parameter_description> return location for
the transformed point
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_transform_translate">
<description>
Translates @next in 2-dimensional space by @point.

This function consumes @next. Use [method@Gsk.Transform.ref] first
if you want to keep it around.


</description>
<parameters>
<parameter name="next">
<parameter_description> the next transform
</parameter_description>
</parameter>
<parameter name="point">
<parameter_description> the point to translate the transform by
</parameter_description>
</parameter>
</parameters>
<return> The new transform
</return>
</function>

<function name="gsk_transform_translate_3d">
<description>
Translates @next by @point.

This function consumes @next. Use [method@Gsk.Transform.ref] first
if you want to keep it around.


</description>
<parameters>
<parameter name="next">
<parameter_description> the next transform
</parameter_description>
</parameter>
<parameter name="point">
<parameter_description> the point to translate the transform by
</parameter_description>
</parameter>
</parameters>
<return> The new transform
</return>
</function>

<function name="gsk_transform_unref">
<description>
Releases a reference on the given transform.

If the reference was the last, the resources associated to the @self are
freed.

</description>
<parameters>
<parameter name="self">
<parameter_description> a transform
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_value_dup_render_node">
<description>
Retrieves the render node stored inside a `GValue`,
and acquires a reference to it.

Since: 4.6

</description>
<parameters>
<parameter name="value">
<parameter_description> a [struct@GObject.Value] initialized with type `GSK_TYPE_RENDER_NODE`
</parameter_description>
</parameter>
</parameters>
<return> the render node

</return>
</function>

<function name="gsk_value_get_render_node">
<description>
Retrieves the render node stored inside a `GValue`.

Since: 4.6

</description>
<parameters>
<parameter name="value">
<parameter_description> a `GValue` initialized with type `GSK_TYPE_RENDER_NODE`
</parameter_description>
</parameter>
</parameters>
<return> the render node

</return>
</function>

<function name="gsk_value_set_render_node">
<description>
Stores the given render node inside a `GValue`.

The [struct@GObject.Value] will acquire a reference
to the render node.

Since: 4.6

</description>
<parameters>
<parameter name="value">
<parameter_description> a [struct@GObject.Value] initialized with type `GSK_TYPE_RENDER_NODE`
</parameter_description>
</parameter>
<parameter name="node">
<parameter_description> a render node
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gsk_value_take_render_node">
<description>
Stores the given render node inside a `GValue`.

This function transfers the ownership of the
render node to the `GValue`.

Since: 4.6

</description>
<parameters>
<parameter name="value">
<parameter_description> a [struct@GObject.Value] initialized with type `GSK_TYPE_RENDER_NODE`
</parameter_description>
</parameter>
<parameter name="node">
<parameter_description> a render node
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

</root>
