1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-29 13:47:34 +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

@ -108,39 +108,39 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x600]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x257.46875]
SVGSVGPaintable (SVGSVGBox<svg>) [8,83 102x52]
SVGGeometryPaintable (SVGGeometryBox<circle>) [34,84 50x50]
SVGPathPaintable (SVGGeometryBox<circle>) [34,84 50x50]
TextPaintable (TextNode<#text>)
SVGSVGPaintable (SVGSVGBox<svg>) [118,83 102x52]
SVGGeometryPaintable (SVGGeometryBox<circle>) [119,84 50x50]
SVGPathPaintable (SVGGeometryBox<circle>) [119,84 50x50]
TextPaintable (TextNode<#text>)
SVGSVGPaintable (SVGSVGBox<svg>) [228,83 102x52]
SVGGeometryPaintable (SVGGeometryBox<circle>) [279,84 50x50]
SVGPathPaintable (SVGGeometryBox<circle>) [279,84 50x50]
TextPaintable (TextNode<#text>)
SVGSVGPaintable (SVGSVGBox<svg>) [338,83 102x52]
SVGGeometryPaintable (SVGGeometryBox<circle>) [339,84 100x100]
SVGPathPaintable (SVGGeometryBox<circle>) [339,84 100x100]
TextPaintable (TextNode<#text>)
SVGSVGPaintable (SVGSVGBox<svg>) [448,83 102x52]
SVGGeometryPaintable (SVGGeometryBox<circle>) [449,59 100x100]
SVGPathPaintable (SVGGeometryBox<circle>) [449,59 100x100]
TextPaintable (TextNode<#text>)
SVGSVGPaintable (SVGSVGBox<svg>) [558,83 102x52]
SVGGeometryPaintable (SVGGeometryBox<circle>) [559,34 100x100]
SVGPathPaintable (SVGGeometryBox<circle>) [559,34 100x100]
TextPaintable (TextNode<#text>)
SVGSVGPaintable (SVGSVGBox<svg>) [668,8 52x127]
SVGGeometryPaintable (SVGGeometryBox<circle>) [669,9 50x50]
SVGPathPaintable (SVGGeometryBox<circle>) [669,9 50x50]
TextPaintable (TextNode<#text>)
SVGSVGPaintable (SVGSVGBox<svg>) [728,8 52x127]
SVGGeometryPaintable (SVGGeometryBox<circle>) [729,46.5 50x50]
SVGPathPaintable (SVGGeometryBox<circle>) [729,46.5 50x50]
SVGSVGPaintable (SVGSVGBox<svg>) [8,135 52x127]
SVGGeometryPaintable (SVGGeometryBox<circle>) [9,211 50x50]
SVGPathPaintable (SVGGeometryBox<circle>) [9,211 50x50]
TextPaintable (TextNode<#text>)
SVGSVGPaintable (SVGSVGBox<svg>) [68,135 52x127]
SVGGeometryPaintable (SVGGeometryBox<circle>) [69,136 125x125]
SVGPathPaintable (SVGGeometryBox<circle>) [69,136 125x125]
TextPaintable (TextNode<#text>)
SVGSVGPaintable (SVGSVGBox<svg>) [128,135 52x127]
SVGGeometryPaintable (SVGGeometryBox<circle>) [91.5,136 125x125]
SVGPathPaintable (SVGGeometryBox<circle>) [91.5,136 125x125]
TextPaintable (TextNode<#text>)
SVGSVGPaintable (SVGSVGBox<svg>) [188,135 52x127]
SVGGeometryPaintable (SVGGeometryBox<circle>) [114,136 125x125]
SVGPathPaintable (SVGGeometryBox<circle>) [114,136 125x125]
TextPaintable (TextNode<#text>)
SVGSVGPaintable (SVGSVGBox<svg>) [248,200 162x62]
SVGGeometryPaintable (SVGGeometryBox<circle>) [299,201 60x60]
SVGPathPaintable (SVGGeometryBox<circle>) [299,201 60x60]