diff --git a/docs/reference/gsk/gsk4.toml.in b/docs/reference/gsk/gsk4.toml.in index 0418481f85..e451183ba8 100644 --- a/docs/reference/gsk/gsk4.toml.in +++ b/docs/reference/gsk/gsk4.toml.in @@ -34,5 +34,11 @@ base_url = "https://gitlab.gnome.org/GNOME/gtk/-/blob/main/" [extra] content_images = [ "gtk-logo.svg", + "images/caps-dark.png", + "images/caps-light.png", + "images/join-dark.png", + "images/join-light.png", + "images/path-dark.png", + "images/path-light.png", ] urlmap_file = "urlmap.js" diff --git a/docs/reference/gsk/images/caps-dark.png b/docs/reference/gsk/images/caps-dark.png new file mode 100644 index 0000000000..2280df2b58 Binary files /dev/null and b/docs/reference/gsk/images/caps-dark.png differ diff --git a/docs/reference/gsk/images/caps-light.png b/docs/reference/gsk/images/caps-light.png new file mode 100644 index 0000000000..1dded2ea42 Binary files /dev/null and b/docs/reference/gsk/images/caps-light.png differ diff --git a/docs/reference/gsk/images/caps.svg b/docs/reference/gsk/images/caps.svg new file mode 100644 index 0000000000..0fd0a1aa44 --- /dev/null +++ b/docs/reference/gsk/images/caps.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + diff --git a/docs/reference/gsk/images/join-dark.png b/docs/reference/gsk/images/join-dark.png new file mode 100644 index 0000000000..dae0e77030 Binary files /dev/null and b/docs/reference/gsk/images/join-dark.png differ diff --git a/docs/reference/gsk/images/join-light.png b/docs/reference/gsk/images/join-light.png new file mode 100644 index 0000000000..0332ad315b Binary files /dev/null and b/docs/reference/gsk/images/join-light.png differ diff --git a/docs/reference/gsk/images/join.svg b/docs/reference/gsk/images/join.svg new file mode 100644 index 0000000000..6801d13db3 --- /dev/null +++ b/docs/reference/gsk/images/join.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + diff --git a/docs/reference/gsk/images/path-dark.png b/docs/reference/gsk/images/path-dark.png new file mode 100644 index 0000000000..b8295d5f18 Binary files /dev/null and b/docs/reference/gsk/images/path-dark.png differ diff --git a/docs/reference/gsk/images/path-light.png b/docs/reference/gsk/images/path-light.png new file mode 100644 index 0000000000..a8a53ce39d Binary files /dev/null and b/docs/reference/gsk/images/path-light.png differ diff --git a/docs/reference/gsk/images/path.svg b/docs/reference/gsk/images/path.svg new file mode 100644 index 0000000000..d07c116d5f --- /dev/null +++ b/docs/reference/gsk/images/path.svg @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/gsk/gskenums.h b/gsk/gskenums.h index f2336fe40e..9ed0ee077e 100644 --- a/gsk/gskenums.h +++ b/gsk/gskenums.h @@ -220,6 +220,11 @@ typedef enum { * * The default line cap style is `GSK_LINE_CAP_BUTT`. * + * + * + * Line Cap Styles + * + * * New entries may be added in future versions. * * Since: 4.14 @@ -242,6 +247,11 @@ typedef enum { * * The default line join style is `GSK_LINE_JOIN_MITER`. * + * + * + * Line Join Styles + * + * * New entries may be added in future versions. * * Since: 4.14 diff --git a/gsk/gskpath.c b/gsk/gskpath.c index 2a1cbfd530..a59516caa3 100644 --- a/gsk/gskpath.c +++ b/gsk/gskpath.c @@ -30,19 +30,25 @@ * GskPath: * * A `GskPath` describes lines and curves that are more complex - * than simple rectangles. Paths can used for rendering (filling or - * stroking) and for animations (e.g. as trajectories). + * than simple rectangles. + * + * Paths can used for rendering (filling or stroking) and for animations + * (e.g. as trajectories). * * `GskPath` is an immutable, opaque, reference-counted struct. - * After creation, you cannot change the types it represents. - * Instead, new `GskPath` objects have to be created. - * - * The [struct@Gsk.PathBuilder] structure is meant to help in this endeavor. + * After creation, you cannot change the types it represents. Instead, + * new `GskPath` objects have to be created. The [struct@Gsk.PathBuilder] + * structure is meant to help in this endeavor. * * Conceptually, a path consists of zero or more contours (continous, connected * curves), each of which may or may not be closed. Contours are typically * constructed from Bézier segments. * + * + * + * A Path + * + * * Since: 4.14 */ @@ -1007,6 +1013,22 @@ parse_circle (const char **p, * [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. + * + * All the commands have lowercase variants that interpret coordinates + * relative to the current point. + * * Returns: (nullable): a new `GskPath`, or `NULL` * if @string could not be parsed * diff --git a/gsk/gskrendernodeimpl.c b/gsk/gskrendernodeimpl.c index d33b796275..394801ce0b 100644 --- a/gsk/gskrendernodeimpl.c +++ b/gsk/gskrendernodeimpl.c @@ -4375,8 +4375,8 @@ gsk_rounded_clip_node_get_clip (const GskRenderNode *node) /** * GskFillNode: * - * A render node filling the child node in the area given by [struct@Gsk.Path] - * and [enum@Gsk.FillRule]. + * A render node filling the area given by [struct@Gsk.Path] + * and [enum@Gsk.FillRule] with the child node. * * Since: 4.14 */ @@ -4584,8 +4584,8 @@ gsk_fill_node_get_fill_rule (const GskRenderNode *node) /** * GskStrokeNode: * - * A render node that will stroke the child node along the given [struct@Gsk.Path] - * using the [struct@Gsk.Stroke] attributes. + * A render node that will fill the area determined by stroking the the given + * [struct@Gsk.Path] using the [struct@Gsk.Stroke] attributes. * * Since: 4.14 */ @@ -4688,8 +4688,10 @@ gsk_stroke_node_class_init (gpointer g_class, * @path: (transfer none): The path describing the area to stroke * @stroke: (transfer none): The stroke attributes to use * - * Creates a #GskRenderNode that will stroke the @child along the given - * @path using the attributes defined in @stroke. + * 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. * * Returns: (transfer none) (type GskStrokeNode): A new #GskRenderNode *