Matthias Clasen
5cf9a09c07
gsk: Add more details to the docs
2023-08-15 12:38:24 -04:00
Matthias Clasen
45aa8e4e00
Fix GskStandardContour to have a 'good' size
...
We need the size of GskStandardContour to be
at least as aligned as graphene_point_t, or
things break in hard to debug ways.
2023-08-14 15:59:45 -04:00
Matthias Clasen
a85ab3585e
Revise gsk_path_point_get_tangent
...
Update the directions enum to allow all four
tangents to be obtained. Add an illustration
to the docs for clarity.
Update all callers.
2023-08-14 14:58:22 -04:00
Matthias Clasen
a1d40c5236
Add gsk_path_point_get_rotation
...
This returns the tangent in the form of an angle.
2023-08-14 14:58:22 -04:00
Matthias Clasen
6ace4b60d8
pathpoint: Revise argument order
...
In order for introspection and documentation to
not be confused, we need to have the GskPathPoint
be the first argument.
Update all callers.
2023-08-14 13:20:34 -04:00
Bilal Elmoussaoui
f5d47a4658
gi: Add missing since annotation
2023-08-14 08:41:12 +00:00
Matthias Clasen
4b7e1b1233
Fix gsk_path_builder_add_segment
...
We were splitting the last segment, but did not
actually use the result of the split. Oops.
2023-08-13 09:40:19 -04:00
Benjamin Otte
73500f9ebb
Merge branch 'wip/otte/for-main' into 'main'
...
treeviewcolumn: Set ascending class for ascending order
Closes #6002
See merge request GNOME/gtk!6277
2023-08-13 03:54:19 +00:00
Benjamin Otte
67a4279d3f
rendernode: Put typedef into gsktypes.h
...
Makes includes simpler for headers that want to use GskRenderNode.
2023-08-12 23:13:47 +02:00
Benjamin Otte
dd4b8a4c89
gl: Pass swizzle array directly
...
There's no need to pass pointers to arrays, as arrays are already
pointers.
2023-08-12 23:13:23 +02:00
Benjamin Otte
d1c7376b05
gdkcontext: Make has_unpack_subimage() do the version check
...
Makes the code look simpler when we actually use that function.
2023-08-12 23:13:23 +02:00
Matthias Clasen
11f48f3c5b
Add gsk_path_builder_add_rounded_rect
...
For now, this is using gsk_path_builder_svg_arc_to
to approximate elliptical arcs.
2023-08-12 15:34:54 -04:00
Matthias Clasen
fa4ad1590d
Merge branch 'matthiasc/for-main' into 'main'
...
path: Some documentation improvements
See merge request GNOME/gtk!6273
2023-08-11 16:42:25 +00:00
Matthias Clasen
47ddc742fc
path: Some documentation improvements
...
Among other things, add a quick summary of
SVG path syntax, and add a few illustrations.
2023-08-11 12:09:12 -04:00
Matthias Clasen
f2835bb48b
pathbuilder: Treat current point consistently
...
Arrange that none of the 'add' methods change
the current point.
2023-08-10 22:56:47 -04:00
Matthias Clasen
fff1645060
path builder: Fix add_cairo_path
...
We were forgetting to end the current contour.
2023-08-10 16:08:32 -04:00
Matthias Clasen
4e91cd1155
Merge branch 'matthiasc/for-main' into 'main'
...
pathpoint: Use the right type
See merge request GNOME/gtk!6266
2023-08-09 20:37:14 +00:00
Matthias Clasen
2d923d362f
Merge branch 'bilelmoussaoui/gi-gsk' into 'main'
...
gsk/gi: new Path api fixes
See merge request GNOME/gtk!6265
2023-08-09 19:40:53 +00:00
Matthias Clasen
b7544636d4
contour: Skip the move
...
When jumping between segments, we always
need to skip index 0, since thats the move.
This fixes the tangent checks in the
rectangle tests.
2023-08-09 15:12:58 -04:00
Matthias Clasen
6220baf230
get_closest_point: Prefer earlier points
...
Only switch to a later point if it is strictly
closer than the existing match. This fixes
start- vs endpoint confusion in the rectangle
tests.
2023-08-09 15:12:52 -04:00
Matthias Clasen
917307a6a4
pathpoint: Use the right type
2023-08-09 14:37:14 -04:00
Bilal Elmoussaoui
b03abea402
gsk: Don't change the GskRenderNodeType order
...
As we use their values to check that a node can be downcasted to a node
type in the Rust bindings
such change would break existing code
2023-08-09 20:26:46 +02:00
Bilal Elmoussaoui
d4fcc883cb
gsk/gi: Add missing since annotations & docs
2023-08-09 20:26:46 +02:00
Matthias Clasen
68c6f63e90
pathpoint: Clarify docs
...
Add a paragraph explaining the situation
for comparing the start- and endpoint of
a closed path.
2023-08-09 11:30:26 -04:00
Matthias Clasen
f707185248
Add gsk_path_builder_add_segment
...
With GskPathPoint, we can subset paths without
a measure object.
2023-08-09 07:01:01 -04:00
Matthias Clasen
ded30049db
path: Add gsk_path_get_start/end_point
...
These are useful to have, now that we are
relying more on GskPathPoint in our api.
2023-08-08 22:05:34 -04:00
Matthias Clasen
5c55e9d11e
Add gsk_path_point_equal/compare
...
These just make sense to have.
2023-08-08 22:05:34 -04:00
Matthias Clasen
c35bb11c18
Simplify GskPathPoint
...
Use simple representation of just
{ contour index, segment index, t value }
2023-08-08 20:31:56 -04:00
Matthias Clasen
fe84ce8686
gsk: Try to fix flipped fallback rendering
...
This patch is pretty much a blind guess, but
it seems to fix flipped rendering of fill
and stroke nodes.
2023-08-07 17:53:49 -04:00
Matthias Clasen
fc3c2e0942
gsk: Implement parsing fill and stroke nodes
...
Make serialization and deserialization work for stroke and
fill nodes.
2023-08-07 13:02:57 -04:00
Benjamin Otte
3aa3816125
gsk: Add GskStrokeNode
...
Take a rendernode as source and a GskPath and GskStroke,
and fill the area that is covered when stroking the path
with the given stroke parameters, like cairo_stroke() would.
2023-08-07 13:02:57 -04:00
Matthias Clasen
c37c29422a
Add gsk_path_get_stroke_bounds
...
This is a helper to compute the bounds for
stroke nodes. We keep it private for now.
2023-08-07 13:02:57 -04:00
Matthias Clasen
db71c07f8f
Add GskStroke
...
A GskStroke struct collects the parameters that are
needed for stroking a path.
2023-08-07 13:02:57 -04:00
Matthias Clasen
888abb6f24
path: Make get_closest_point work
...
We weren't setting point->path. Oops.
Good to have tests.
2023-08-07 08:33:05 -04:00
Matthias Clasen
9b916b329a
pathpoint: Implement get_tangent fully
...
We were not taking the direction into account
at all.
2023-08-07 08:33:05 -04:00
Matthias Clasen
eb3ada6386
Fix path point preconditions
...
These were inverted and did not work. Oops.
2023-08-07 08:32:50 -04:00
Benjamin Otte
4e7d578881
rendernode: Implement fast-path for solid fills
...
They happen so often that it's worth avoiding the clip + paint path
there.
2023-08-06 21:01:11 -04:00
Benjamin Otte
fc4a464b47
gsk: Add GskFillNode
...
Take a rendernode as source and a GskPath and fill
the region inside the path with the source, just like
cairo_fill() would.
2023-08-06 21:01:11 -04:00
Matthias Clasen
1b5dfcba7e
gsk: Add GskPath
...
This commit adds the basic infrastructure for paths.
The public APIs consists of GskPath, GskPathPoint and
GskPathBuilder.
GskPath is a data structure for paths that consists
of contours, which in turn might contain Bézier curves.
The Bezier data structure is inspired by Skia, with separate
arrays for points and operations. One advantage of this
arrangement is that start and end points are shared
between adjacent curves.
A GskPathPoint represents a point on a path, which can
be queried for various properties.
GskPathBuilder is an auxiliary builder object for paths.
2023-08-06 20:48:09 -04:00
Matthias Clasen
bf3892caed
gsk: Add a bounding box type
...
graphene_rect_t is not well-suited for this purpose,
since you end up with floating-point precision problems
at the upper bound (x + width, y + height).
2023-08-06 17:16:30 -04:00
Benjamin Otte
e00e6f3d5d
vulkan: Clear Cairo surfaces on upload
...
The memory isn't guaranteed to be all zeroes and we don't want glitches.
2023-07-31 16:51:03 +02:00
Benjamin Otte
e98ae233fc
vulkan: Fix a memleak
2023-07-31 16:51:03 +02:00
Benjamin Otte
2ad11e12d4
vulkan: Plug a memleak
...
Yay, we no longer leak swapchain images
2023-07-31 16:51:03 +02:00
Benjamin Otte
89b4f12b38
vulkan: Plug a memleak
2023-07-31 16:51:03 +02:00
Benjamin Otte
1aa7f18b23
vulkan: Remove unused variable
...
It's only used when printing debug stuff. Debug stuff is not that
important.
2023-07-31 16:51:03 +02:00
Matthias Clasen
3e9c47e6f7
glyph cache: Add debug output
...
Show the size of data uploaded per glyph.
2023-07-28 09:06:14 +03:00
Benjamin Otte
1bd820fc60
vulkan: Clean up renderpass/offscreen creation
...
Instead of scale and whatnot, pass:
1. The image size
2. The viewport to map to that image size
and compute everything else from there.
In particular, we set the Vulkan viewport to the image dimensions
instead of the viewport size.
All of this makes things a lot simpler while keeping the required
functionality.
2023-07-22 23:30:15 +02:00
Benjamin Otte
a4247f1358
vulkan: Plug a memleak
...
This one was introduced in 4d9e7d30b0
.
2023-07-22 23:30:15 +02:00
Benjamin Otte
00b5df6b06
vulkan: Plug a memleak
...
This one was introduced in cd84f5a56e
.
2023-07-22 23:30:15 +02:00
Benjamin Otte
27fbdcbecb
gdk: Add A16_FLOAT and A32_FLOAT formats
...
We need them for mask-only textures.
For tiffs, we convert the formats to RGBA (the idea that tiff can save
everything needs to be buried I guess) as tiffs can't do alpha-only.
2023-07-22 01:33:44 +02:00