Repository navigation
Comparing changes
Open a pull request
base repository: SixLabors/ImageSharp.Drawing
base: v3.1.0
head repository: SixLabors/ImageSharp.Drawing
compare: v3.1.2
- 13 commits
- 280 files changed
- 1 contributor
Commits on Sep 11, 2026
-
Share the guarded arc subdivision between round joins and caps, fix C…
…PU edge accuracy - CalcArc and stroke_calc_arc take their vertex count from the guarded GetArcSubdivisionCount and stroke_arc_subdivision_count used by round caps. - StrokeOptions.ArcDetailScale rejects values not greater than zero. - DefaultRasterizer: band boundary X is interpolated from the segment endpoint and rounded to nearest, coverage uses the exact doubled area, and the DDA walkers round row and column boundaries to nearest. - Tests: ArcDetailScale validation, subdivision count monotonicity, and CPU/GPU parity theories for round joins at scales 0.01 to 16. - Reference images updated for the corrected edge coverage.
Configuration menu - View commit details
-
Copy full SHA for e52d562 - Browse repository at this point
Copy the full SHA e52d562View commit details -
Configuration menu - View commit details
-
Copy full SHA for 9bbd0a5 - Browse repository at this point
Copy the full SHA 9bbd0a5View commit details -
Merge pull request #417 from SixLabors/js/round-join-arc-guard
Round join tessellation and CPU edge accuracy
Configuration menu - View commit details
-
Copy full SHA for 9b612ed - Browse repository at this point
Copy the full SHA 9b612edView commit details
Commits on Sep 14, 2026
-
Make DrawingTextCache thread-safe
Protect cache metadata, publish complete glyph entries, and lease reusable working buffers to each drawing operation. Keep outline construction and rasterization unchanged. Add tests for concurrent drawing, outline reuse, complete publication, eviction, clearing, and buffer ownership. Update Fonts to 3.1.2 and ImageSharp to 4.1.2. Validation: Full Release suite passed on .NET 8 and .NET 10, with 2,754 passed and 9 skipped per target.
Configuration menu - View commit details
-
Copy full SHA for 1747da0 - Browse repository at this point
Copy the full SHA 1747da0View commit details -
Stabilize concurrent cache tests
Use `Task.Factory.StartNew` with `TaskCreationOptions.LongRunning` in the concurrent drawing text cache tests so each barrier participant gets a dedicated thread. This avoids thread-pool starvation and intermittent failures on small CI runners when other tests are also scheduling work.
Configuration menu - View commit details
-
Copy full SHA for 70d94cd - Browse repository at this point
Copy the full SHA 70d94cdView commit details -
Merge pull request #420 from SixLabors/js/drawing-cache
Make DrawingTextCache thread-safe
Configuration menu - View commit details
-
Copy full SHA for ef8c9c8 - Browse repository at this point
Copy the full SHA ef8c9c8View commit details
Commits on Sep 15, 2026
-
Add a Paint overload that takes a DrawingTextCache
The Paint image processing extension created a private text cache for each frame canvas. The new overload passes an application-owned cache to every frame canvas so glyph geometry is shared across draws, matching the CreateCanvas overloads.
Configuration menu - View commit details
-
Copy full SHA for 715e0d3 - Browse repository at this point
Copy the full SHA 715e0d3View commit details -
Replay cached layered glyph paints in text space
Cached color glyph layers re-create their paint brushes on replay. The cache stored the device-space glyph origin and appended the device-space delta after the drawing transform, so a draw whose transform carries an origin applied that offset twice and the gradient drifted off the glyph. Store the glyph origin before the drawing transform and apply the delta before it.
Configuration menu - View commit details
-
Copy full SHA for f30b3ba - Browse repository at this point
Copy the full SHA f30b3baView commit details -
Merge pull request #422 from SixLabors/js/emoji-replay-color
Fix cached color glyph paint replay and add a Paint overload with a text cache
Configuration menu - View commit details
-
Copy full SHA for 22d08fc - Browse repository at this point
Copy the full SHA 22d08fcView commit details
Commits on Sep 17, 2026
-
Compose gradient transforms on the brush
Transforming a gradient brush projected its geometry point by point, which reduces any affine transform to a similarity. A COLRv1 radial paint squashed by its PaintTransform into a flat ellipse became a circle, and the pad region of that circle painted the toned thumbs-up opaque dark. GradientBrush carries a GradientTransform from the gradient's space to the drawing, every brush has a constructor overload that takes it, and Transform() composes it exactly for affine matrices. The old point projection remains for projective matrices, which have no affine inverse. Renderers fold the inverse: the linear brush into its axis, the two-circle radial brush into its canonical transform, and the others map each sample once when a transform is set. The glyph renderer builds paint-space brushes with the paint's transform composed after the glyph's. Interpolation is unchanged: premultiplied, as the CSS Color 4 gradient rules require.
Configuration menu - View commit details
-
Copy full SHA for 44e5722 - Browse repository at this point
Copy the full SHA 44e5722View commit details -
Carry the gradient transform through the WebGPU scene
Every gradient payload starts with the six words of the inverse affine transform. The draw tag's scene-size field widens to four bits to hold the larger payloads. draw_leaf reads the transform once and composes it per gradient kind: the linear brush folds it into its line equation, the radial and elliptic brushes multiply it into their canonical transforms, and the sweep brush carries the matrix and translation. Adds a CPU and GPU parity test over the four transformed brushes.
Configuration menu - View commit details
-
Copy full SHA for 135b1a9 - Browse repository at this point
Copy the full SHA 135b1a9View commit details -
Configuration menu - View commit details
-
Copy full SHA for 57892f9 - Browse repository at this point
Copy the full SHA 57892f9View commit details -
Merge pull request #424 from SixLabors/js/colr-gradient-interpolation…
…-3.1 Compose gradient transforms on the brush and consume Fonts 3.1.3
Configuration menu - View commit details
-
Copy full SHA for 17815ec - Browse repository at this point
Copy the full SHA 17815ecView commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff v3.1.0...v3.1.2