Tim Ledbetter
e16618bdd1
LibWeb: Apply textBaseline offset in Canvas measureText()
2026-01-15 10:31:23 +01:00
Tim Ledbetter
191e8218dc
LibWeb: Use correct font metrics calculations in Canvas measureText()
2026-01-15 10:31:23 +01:00
Tim Ledbetter
9da723b5c6
LibWeb: Ensure layout is up to date before resolving canvas colors
2025-10-27 16:56:01 -07:00
Tim Ledbetter
e1ff1e2095
LibWeb: Implement CanvasPattern.setTransform()
...
This method applies the given transformation matrix to a pattern.
2025-10-27 16:41:02 -07:00
Tim Ledbetter
8854bb62c6
LibGfx: Use CSS sRGB serialization for canvas fill styles
2025-10-26 18:55:22 +01:00
Tim Ledbetter
9dceb06992
LibWeb: Don't paint canvas objects with non-visible fill styles
2025-10-26 16:45:38 +01:00
ayeteadoe
5abb5d555a
LibWeb: Implement createImageBitmap() with an ImageBitmap source
2025-10-26 09:01:20 +01:00
Tim Ledbetter
1c00279488
LibWeb: Reset Painter when resetting canvas to its initial state
2025-10-23 18:52:36 +02:00
Jelle Raaijmakers
62ae4e878f
LibWeb: Implement support for drawing with CanvasPattern
...
We already had the API, but drawing to the canvas was not affected by
any created CanvasPattern. This moves CanvasPatternPaintStyle to LibGfx
so we don't have to reach into LibWeb, and implements the plumbing to
let Skia use images as a fill pattern.
2025-10-23 13:20:03 +01:00
Jelle Raaijmakers
9753b8e62c
Tests: Import WPT canvas repeating pattern test
2025-10-23 13:20:03 +01:00
Tim Ledbetter
2fd424ccb6
LibWeb: Draw canvas arcs and ellipses correctly when radius is zero
...
In this case, we should just draw a line from the last point in the
path to the start point. Previously, a division by zero caused nothing
to be drawn.
2025-10-22 16:08:57 +02:00
Tim Ledbetter
976912f3e9
LibWeb: Normalize negative drawImage() source/destination dimensions
2025-10-22 12:29:04 +02:00
Tim Ledbetter
c4e56cc845
LibWeb: Throw error when calling drawImage() with a broken image
2025-10-22 10:44:58 +02:00
Tim Ledbetter
f1571c4217
LibWeb: Ensure drawImage() always uses the first image frame
2025-10-22 01:25:46 +02:00
Tim Ledbetter
7db73118e9
LibWeb+LibGfx: Draw shadows for stroke joins and caps
2025-10-21 18:55:08 +02:00
Tim Ledbetter
0f295e8989
LibWeb: Take transforms into account when drawing shadows
2025-10-21 18:55:08 +02:00
Tim Ledbetter
0516c414d4
LibWeb: Don't draw shadows for transparent gradient fills
2025-10-21 18:55:08 +02:00
Tim Ledbetter
13f551612c
LibWeb: Don't draw shadows if shadow offset and blur are not set
2025-10-21 18:55:08 +02:00
Tim Ledbetter
eb44cca5bd
LibWeb: Ignore non-finite shadow offset values
2025-10-21 18:55:08 +02:00
Tim Ledbetter
b99c0c6a7f
LibWeb: Account for paint style and global alpha when drawing shadows
2025-10-21 18:55:08 +02:00
Tim Ledbetter
494fcc40ac
LibWeb: Account for transforms in isPointInPath()
2025-10-21 17:42:28 +02:00
Tim Ledbetter
d3ca038b2c
LibWeb: Ensure putImageData() is unaffected by drawing state
2025-10-21 09:52:16 +02:00
Tim Ledbetter
2ac4544a81
LibWeb: Align CanvasRenderingContext2D::putImageData() with the spec
...
This change implements `putImageData()` with `dirtyX`, `dirtyY`,
`dirtyWidth` and `dirtyHeight` arguments.
2025-10-21 09:52:16 +02:00
Tim Ledbetter
08641c9e15
LibWeb: Ensure CanvasPath::arc() nonfinite radius argument is ignored
2025-10-20 12:12:16 +01:00
Tim Ledbetter
303ebc0a67
LibWeb: Ignore non-finite arguments to canvas text drawing methods
2025-10-20 12:12:16 +01:00
ljamar
7fb65283c2
LibWeb: Ignore non-finite args in CanvasRenderingContext2D::clear_rect()
2025-10-17 17:41:58 +01:00
ayeteadoe
0d5136ae5c
LibWeb: Add support for bitmap scaling in createImageBitmap()
2025-10-14 12:19:33 +02:00
ayeteadoe
05f3bd0fa8
Tests/LibWeb: Import several scaling createImageBitmap() tests
2025-10-14 12:19:33 +02:00
Shannon Booth
c1d022523b
LibWeb/HTML: Enforce width and height range for OffscreenCanvas
...
We should be throwing a TypeError on values outside of the range
for an unsigned long instead of the default modulo behaviour.
2025-09-22 12:37:30 +01:00
Shannon Booth
e3b5507113
LibWeb/HTML: Avoid crash for extreme bitmap sizes in OffscreenCanvas
2025-09-22 12:37:30 +01:00
Idan Horowitz
aeb7b442d3
LibWeb: Add initial support for bitmap cropping to createImageBitmap
2025-08-04 23:39:11 +02:00
Idan Horowitz
3b8ccf4d77
LibWeb: Add initial support for HTMLImageElement in createImageBitmap
2025-08-03 21:47:48 +02:00
Idan Horowitz
9b11e0051c
LibWeb: Support ImageBitmapOptions's resize{Width,Height} fields
2025-08-03 21:47:48 +02:00
Tim Ledbetter
92f85d180e
LibWeb: Serialize empty ImageBitmap data as null
2025-07-21 19:19:50 -04:00
Tim Ledbetter
48417152df
LibWeb: Don't crash when creating empty bitmap from a HTMLCanvasElement
2025-07-20 16:26:57 +12:00
Tim Ledbetter
5413716802
LibWeb: Don't crash when setting offscreen canvas size to 0
...
Previously, this would crash because `Gfx::Bitmap` can't have a zero
size.
2025-07-04 16:10:38 +01:00
Callum Law
9ab7c5d08d
LibWeb: Support relative lengths in calc color values
...
Gains us ~40 WPT tests.
2025-07-04 13:18:55 +01:00
Tim Ledbetter
844dcd3310
LibWeb: Ignore non-finite OffscreenCanvas shadow offset values
2025-07-01 13:53:27 +12:00
Andreas Kling
1a055fcb24
LibWeb: Mark canvas element for relayout when width or height changes
...
While width and height are presentational hints on canvas, they actually
map to the CSS aspect-ratio attribute, not to CSS width and height.
For this reason, we actually need to manually mark for relayout here.
Also import a WPT test that was flaky before this change.
2025-05-19 13:58:05 +02:00
Glenn Skrzypczak
8575bddfe6
LibWeb/Canvas: Support globalCompositionOperation
...
Canvas now supports compositing and various blending modes via the
`globalCompositeOperation` attribute.
2025-02-05 11:26:58 +00:00
Shannon Booth
f388d3c88c
LibWeb/HTML: Fix crash creating canvas pattern without context
...
This isn't a full fix, as the paint function does not handle this
either. But instead of getting the bitmap from the image source
immediately, follow the spec a bit more closely by creating the
CanvasPatern object with the ImageSource directly.
Fixes a crash for the 5 included WPT tests.
2025-01-12 18:40:37 +00:00
Lucien Fiorini
d9ab68dd62
Tests: Import WPT test for canvas filter values
2024-12-18 18:54:20 +01:00
Lucien Fiorini
0567960ce4
Tests: Import WPT tests for shadowBlur
2024-12-05 17:07:13 +01:00
Tim Ledbetter
61ae388140
Tests: Create imported WPT test output from completion callback data
...
This allows us to disable test output, which performs expensive assert
tracking. This was making our imported tests run significantly slower
than tests run via `WPT.sh`.
Formatting the output ourselves also allows us to remove unnecessary
information from the test output.
This commit also rebaselines all existing imported WPT tests to follow
the new format.
2024-12-02 22:41:51 +00:00
Shannon Booth
3b04c983f1
LibWeb: Check for overflow when creating ImageData
...
We would overwise crash on overflow.
2024-11-13 19:23:25 -05:00