1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-28 14:37:45 +00:00

LibWeb: Support transforms, stroking, gradients, etc for SVG <text>

This makes use of the new Gfx::Path::text() to handle SVG text elements,
with this text is just a regular path, and can be manipulated like any
other graphics element.

This removes the SVGTextPaintable and makes both <text> and geometry
elements use a new (shared) SVGPathPaintable. This is identical to the
old SVGGeometryPaintable. This simplifies painting as once something is
resolved to a Gfx::Path, the painting logic is the same.
This commit is contained in:
MacDue 2023-11-04 21:31:35 +00:00 committed by Alexander Kalenik
parent 50d33f79fa
commit 4c5d48f861
30 changed files with 144 additions and 180 deletions

View file

@ -100,33 +100,33 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600] overflow: [0,0 800x700]
PaintableWithLines (BlockContainer<BODY>) [50,50 700x600]
SVGSVGPaintable (SVGSVGBox<svg>) [50,150 200x100]
SVGGraphicsPaintable (SVGGraphicsBox<g>) [45.6875,199.828125 118.78125x47.453125]
SVGGeometryPaintable (SVGGeometryBox<path>) [45.6875,199.828125 118.78125x47.453125]
SVGPathPaintable (SVGGeometryBox<path>) [45.6875,199.828125 118.78125x47.453125]
SVGGraphicsPaintable (SVGGraphicsBox<g>) [84.5,159.5 81x81]
SVGGeometryPaintable (SVGGeometryBox<path>) [84.5,159.5 81x81]
SVGPathPaintable (SVGGeometryBox<path>) [84.5,159.5 81x81]
TextPaintable (TextNode<#text>)
SVGSVGPaintable (SVGSVGBox<svg>) [258,50 200x200]
SVGGeometryPaintable (SVGGeometryBox<rect>) [268,60 30x20]
SVGGeometryPaintable (SVGGeometryBox<rect>) [288,130 110x90]
SVGPathPaintable (SVGGeometryBox<rect>) [268,60 30x20]
SVGPathPaintable (SVGGeometryBox<rect>) [288,130 110x90]
TextPaintable (TextNode<#text>)
SVGSVGPaintable (SVGSVGBox<svg>) [466,50 200x200]
SVGGeometryPaintable (SVGGeometryBox<rect>) [506,90 120x120]
SVGGeometryPaintable (SVGGeometryBox<rect>) [471.359375,90 189.28125x120]
SVGPathPaintable (SVGGeometryBox<rect>) [506,90 120x120]
SVGPathPaintable (SVGGeometryBox<rect>) [471.359375,90 189.28125x120]
SVGSVGPaintable (SVGSVGBox<svg>) [50,250 200x200]
SVGGeometryPaintable (SVGGeometryBox<rect>) [120.59375,320.59375 58.828125x58.828125]
SVGGeometryPaintable (SVGGeometryBox<rect>) [52.4375,310.375 68.140625x68.140625]
SVGGeometryPaintable (SVGGeometryBox<rect>) [179.40625,321.484375 68.140625x68.140625]
SVGPathPaintable (SVGGeometryBox<rect>) [120.59375,320.59375 58.828125x58.828125]
SVGPathPaintable (SVGGeometryBox<rect>) [52.4375,310.375 68.140625x68.140625]
SVGPathPaintable (SVGGeometryBox<rect>) [179.40625,321.484375 68.140625x68.140625]
TextPaintable (TextNode<#text>)
SVGSVGPaintable (SVGSVGBox<svg>) [258,250 200x200]
SVGGeometryPaintable (SVGGeometryBox<circle>) [278,270 160x160]
SVGGeometryPaintable (SVGGeometryBox<circle>) [338,270 40x160]
SVGGeometryPaintable (SVGGeometryBox<circle>) [278,330 160x40]
SVGGeometryPaintable (SVGGeometryBox<circle>) [338,330 40x40]
SVGPathPaintable (SVGGeometryBox<circle>) [278,270 160x160]
SVGPathPaintable (SVGGeometryBox<circle>) [338,270 40x160]
SVGPathPaintable (SVGGeometryBox<circle>) [278,330 160x40]
SVGPathPaintable (SVGGeometryBox<circle>) [338,330 40x40]
TextPaintable (TextNode<#text>)
SVGSVGPaintable (SVGSVGBox<svg>) [466,250 200x200]
SVGGeometryPaintable (SVGGeometryBox<rect>) [506,290 120x120]
SVGGeometryPaintable (SVGGeometryBox<rect>) [506,255.359375 120x189.28125]
SVGPathPaintable (SVGGeometryBox<rect>) [506,290 120x120]
SVGPathPaintable (SVGGeometryBox<rect>) [506,255.359375 120x189.28125]
SVGSVGPaintable (SVGSVGBox<svg>) [50,450 200x200]
SVGGeometryPaintable (SVGGeometryBox<rect>) [60,460 80x80]
SVGGeometryPaintable (SVGGeometryBox<rect>) [160,460 80x80]
SVGGeometryPaintable (SVGGeometryBox<rect>) [60,560 80x80]
SVGGeometryPaintable (SVGGeometryBox<rect>) [160,560 80x80]
SVGPathPaintable (SVGGeometryBox<rect>) [60,460 80x80]
SVGPathPaintable (SVGGeometryBox<rect>) [160,460 80x80]
SVGPathPaintable (SVGGeometryBox<rect>) [60,560 80x80]
SVGPathPaintable (SVGGeometryBox<rect>) [160,560 80x80]