From acf9612ed8b29ed9c56cb03150a5647ac461a8c7 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 21 Aug 2023 23:44:25 -0400 Subject: [PATCH 1/2] docs: Start a section on paths --- docs/reference/gsk/gsk4.toml.in | 11 +- docs/reference/gsk/images/fill-even-odd.png | Bin 0 -> 14411 bytes docs/reference/gsk/images/fill-winding.png | Bin 0 -> 12257 bytes docs/reference/gsk/images/stroke-miter.png | Bin 0 -> 27333 bytes docs/reference/gsk/images/stroke-round.png | Bin 0 -> 26902 bytes docs/reference/gsk/meson.build | 6 +- docs/reference/gsk/paths.md | 110 ++++++++++++++++++++ 7 files changed, 124 insertions(+), 3 deletions(-) create mode 100644 docs/reference/gsk/images/fill-even-odd.png create mode 100644 docs/reference/gsk/images/fill-winding.png create mode 100644 docs/reference/gsk/images/stroke-miter.png create mode 100644 docs/reference/gsk/images/stroke-round.png create mode 100644 docs/reference/gsk/paths.md diff --git a/docs/reference/gsk/gsk4.toml.in b/docs/reference/gsk/gsk4.toml.in index 4410439a04..e56a5b2ffc 100644 --- a/docs/reference/gsk/gsk4.toml.in +++ b/docs/reference/gsk/gsk4.toml.in @@ -32,6 +32,9 @@ show_class_hierarchy = true base_url = "https://gitlab.gnome.org/GNOME/gtk/-/blob/main/" [extra] +content_files = [ + "paths.md", +] content_images = [ "gtk-logo.svg", "images/caps-dark.png", @@ -40,13 +43,17 @@ content_images = [ "images/cubic-light.png", "images/directions-dark.png", "images/directions-light.png", + "images/fill-even-odd.png", + "images/fill-winding.png", "images/join-dark.png", "images/join-light.png", "images/line-dark.png", "images/line-light.png", - "images/quad-dark.png", - "images/quad-light.png", "images/path-dark.png", "images/path-light.png", + "images/quad-dark.png", + "images/quad-light.png", + "images/stroke-miter.png", + "images/stroke-round.png", ] urlmap_file = "urlmap.js" diff --git a/docs/reference/gsk/images/fill-even-odd.png b/docs/reference/gsk/images/fill-even-odd.png new file mode 100644 index 0000000000000000000000000000000000000000..a6518e6a2f4d378ac5179ea57b86b38d702d1d02 GIT binary patch literal 14411 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 ZyDXHE(9UUm6kH3$Qj~ivn=ftb|6dw;P167X literal 0 HcmV?d00001 diff --git a/docs/reference/gsk/images/fill-winding.png b/docs/reference/gsk/images/fill-winding.png new file mode 100644 index 0000000000000000000000000000000000000000..02c2f1dbbef1dd9d7628e39c1836710c25e8a7e3 GIT binary patch literal 12257 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 literal 0 HcmV?d00001 diff --git a/docs/reference/gsk/images/stroke-miter.png b/docs/reference/gsk/images/stroke-miter.png new file mode 100644 index 0000000000000000000000000000000000000000..eaf9f0df7f0294f93aaaa59c04179ac5ce071008 GIT binary patch literal 27333 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 Y?Tq!A`QU+@M~$bd_(}mKXBqr|0DhcO-v9sr literal 0 HcmV?d00001 diff --git a/docs/reference/gsk/images/stroke-round.png b/docs/reference/gsk/images/stroke-round.png new file mode 100644 index 0000000000000000000000000000000000000000..df2d3d7dba0377a2eabb82d6f816060658db561e GIT binary patch literal 26902 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 literal 0 HcmV?d00001 diff --git a/docs/reference/gsk/meson.build b/docs/reference/gsk/meson.build index bf3c437077..6b8fa76b1f 100644 --- a/docs/reference/gsk/meson.build +++ b/docs/reference/gsk/meson.build @@ -1,3 +1,7 @@ +gsk_expand_content_md_files = [ + 'paths.md', +] + if get_option('documentation') gsk4_toml = configure_file( input: 'gsk4.toml.in', @@ -21,7 +25,7 @@ if get_option('documentation') '@INPUT1@', ], depends: [ gdk_gir[0] ], - depend_files: [ expand_content_md_files ], + depend_files: [ gsk_expand_content_md_files ], build_by_default: true, install: true, install_dir: docs_dir, diff --git a/docs/reference/gsk/paths.md b/docs/reference/gsk/paths.md new file mode 100644 index 0000000000..8ad798da11 --- /dev/null +++ b/docs/reference/gsk/paths.md @@ -0,0 +1,110 @@ +Title: Paths +Slug: paths + +GSK provides a path object that can be used to render more complex +shapes than lines or rounded rectangles. It is comparable to cairos +path API, with some notable differences. + +In general, a path consists of one or more connected **_contours_**, +each of which may have multiple **_segments_**, and may or may not be closed. + +
+ + + A path with multiple contours + +
A path with one closed, and one open contour
+
+ +The central object of the GSK path api is the immutable [struct@Gsk.Path] +struct, which contains path data in compact form suitable for rendering. + +## Creating Paths + +Since `GskPath` is immutable, the auxiliary [struct@Gsk.PathBuilder] struct +can be used to construct a path piece by piece. The `GskPathBuilder` API +has three distinct groups of functions: + +- Functions for adding complete contours, such as [method@Gsk.PathBuilder.add_rect], + [method@Gsk.PathBuilder.add_rounded_rect], [method@Gsk.PathBuilder.add_circle]. + +- Functions for building contours from individual segments, like [method@Gsk.PathBuilder.move_to], + [method@Gsk.PathBuilder.line_to], [method@Gsk.PathBuilder.cubic_to], [method@Gsk.PathBuilder.close]. + +- Adding parts of a preexisting path. Functions in this group include + [method@Gsk.PathBuilder.add_path] and [method@Gsk.PathBuilder.add_segment]. + +When you are done with building a path, you can convert the accumulated path +data into a `GskPath` struct with [method@Gsk.PathBuilder.free_to_path]. + +A sometimes convenient alternative is to create a path from a serialized +form, with [func@Gsk.Path.parse]. This function interprets strings +in SVG path syntax, such as: + + M 100 100 C 100 200 200 200 200 100 Z + +## Rendering with Paths + +There are two main ways to render with paths. The first is to **_fill_** the +interior of a path with a color or more complex content, such as a gradient. +GSK currently supports two different ways of determining what part of the plane +are interior to the path, which can be selected with a [enum@Gsk.FillRule] +value. + +
+ + A filled path + +
A path filled with GSK_FILL_RULE_WINDING
+
+ +
+ + A filled path + +
The same path, filled with GSK_FILL_RULE_EVEN_ODD
+
+ +Alternatively, a path can be **_stroked_**, which means to emulate drawing +with an idealized pen along the path. The result of stroking a path is another +path (the **_stroke path_**), which is then filled. + +The stroke operation can be influenced with the [struct@Gsk.Stroke] struct +that collects various stroke parameters, such as the line width, the style +of line joins and line caps to use, and a dash pattern. + +
+ + A stroked path + +
The same path, stroked with GSK_LINE_JOIN_MITER
+
+ +
+ + A stroked path + +
The same path, stroked with GSK_LINE_JOIN_ROUND
+
+ +GSK provides render nodes for these path rendering operations: [class@Gsk.FillNode] +and [class@Gsk.StrokeNode], and GTK has convenience API to use them with +[class@Gtk.Snapshot]. + +## Other Path APIs + +Beyond rendering, paths can be used e.g. as trajectories in animations. +In such uses, it is often important to access properties of paths, such as +their tangents at certain points. GSK provides an abstract representation +for points on a path in the form of the [struct@Gsk.PathPoint] struct. +You can query properties of a path at certain point once you have a +`GskPathPoint` representing that point. + +`GskPathPoint` structs can be compared for equality with [method@Gsk.PathPoint.equal] +and ordered wrt. to which one comes first, using [method@Gsk.PathPoint.compare]. + +To obtain a `GskPathPoint`, use [method@Gsk.Path.get_closest_point], [method@Gsk.Path.get_start_point] or [method@Gsk.Path.get_end_point]. + +To query properties of the path at a point, use [method@Gsk.PathPoint.get_position], +[method@Gsk.PathPoint.get_tangent], [method@Gsk.PathPoint.get_rotation] and +[method@Gsk.PathPoint.get_curvature]. From 486674927abe2fad79d95140ae1071c1e02013f9 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 21 Aug 2023 23:44:48 -0400 Subject: [PATCH 2/2] Make sure stroke bounds are big enough Our standard 'empty path' in gtk4-node-editor was getting its pointy corners cut off. --- docs/reference/gsk/paths.md | 3 ++- gsk/gskcontour.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/reference/gsk/paths.md b/docs/reference/gsk/paths.md index 8ad798da11..8de93f6fa4 100644 --- a/docs/reference/gsk/paths.md +++ b/docs/reference/gsk/paths.md @@ -3,7 +3,8 @@ Slug: paths GSK provides a path object that can be used to render more complex shapes than lines or rounded rectangles. It is comparable to cairos -path API, with some notable differences. +[path API](https://www.cairographics.org/manual/cairo-Paths.html), +with some notable differences. In general, a path consists of one or more connected **_contours_**, each of which may have multiple **_segments_**, and may or may not be closed. diff --git a/gsk/gskcontour.c b/gsk/gskcontour.c index 47e5786eea..90693f9429 100644 --- a/gsk/gskcontour.c +++ b/gsk/gskcontour.c @@ -319,7 +319,7 @@ gsk_standard_contour_get_stroke_bounds (const GskContour *contour, if (self->n_points == 0) return FALSE; - extra = MAX (stroke->line_width / 2, gsk_stroke_get_join_width (stroke) / 2); + extra = MAX (stroke->line_width, gsk_stroke_get_join_width (stroke)); gsk_bounding_box_init (bounds, &GRAPHENE_POINT_INIT (self->bounds.min.x - extra, self->bounds.min.y - extra),