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

LibWeb: Use fixed-point saturated arithmetics for CSSPixels

Using fixed-point saturated arithmetics for CSSPixels allows to avoid
accumulating floating-point errors.

This implementation is not complete yet: currently saturated
arithmetics implemented only for addition. But it is enough to not
regress any of layout tests we have :)

See https://github.com/SerenityOS/serenity/issues/18566
This commit is contained in:
Aliaksandr Kalenik 2023-07-23 01:09:39 +02:00 committed by Andreas Kling
parent 5cdd03fc53
commit bec07d4af7
136 changed files with 1938 additions and 1844 deletions

View file

@ -2,5 +2,5 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
BlockContainer <html> at (0,0) content-size 800x33.46875 [BFC] children: not-inline
BlockContainer <body> at (8,8) content-size 0x17.46875 children: inline
line 0 width: 0, height: 17.46875, bottom: 17.46875, baseline: 13.53125
frag 0 from SVGSVGBox start: 0, length: 0, rect: [8,21 0x0]
SVGSVGBox <svg> at (8,21) content-size 0x0 [SVG] children: not-inline
frag 0 from SVGSVGBox start: 0, length: 0, rect: [8,21.53125 0x0]
SVGSVGBox <svg> at (8,21.53125) content-size 0x0 [SVG] children: not-inline

View file

@ -6,5 +6,5 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
Viewport <#document> at (0,0) content-size 784x1568 children: inline
SVGSVGBox <svg> at (0,0) content-size 784x1568 [SVG] children: inline
TextNode <#text>
SVGGeometryBox <rect> at (-0.000007,-0.000015) content-size 784x1568 children: not-inline
SVGGeometryBox <rect> at (0,0) content-size 784x1568 children: not-inline
TextNode <#text>

View file

@ -4,4 +4,4 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
line 0 width: 784, height: 784, bottom: 784, baseline: 784
frag 0 from SVGSVGBox start: 0, length: 0, rect: [8,8 784x784]
SVGSVGBox <svg> at (8,8) content-size 784x784 [SVG] children: not-inline
SVGGeometryBox <rect> at (7.999992,7.999992) content-size 784x784 children: not-inline
SVGGeometryBox <rect> at (8,8) content-size 784x784 children: not-inline

View file

@ -4,4 +4,4 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
line 0 width: 100, height: 100, bottom: 100, baseline: 48
frag 0 from SVGSVGBox start: 0, length: 0, rect: [8,8 100x100]
SVGSVGBox <svg> at (8,8) content-size 100x100 [SVG] children: not-inline
SVGGeometryBox <path> at (8,9.999999) content-size 100x48 children: not-inline
SVGGeometryBox <path> at (8,9.984375) content-size 100x48 children: not-inline

View file

@ -2,4 +2,4 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
BlockContainer <html> at (0,0) content-size 800x800 [BFC] children: not-inline
BlockContainer <body> at (8,8) content-size 784x784 children: not-inline
SVGSVGBox <svg> at (8,8) content-size 784x784 [SVG] children: not-inline
SVGGeometryBox <rect> at (7.999992,7.999992) content-size 784x784 children: not-inline
SVGGeometryBox <rect> at (8,8) content-size 784x784 children: not-inline

View file

@ -2,11 +2,11 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
BlockContainer <html> at (0,0) content-size 800x600 [BFC] children: not-inline
BlockContainer <body> at (8,8) content-size 784x17.46875 children: inline
line 0 width: 8, height: 17.46875, bottom: 17.46875, baseline: 13.53125
frag 0 from ImageBox start: 0, length: 0, rect: [8,21 0x0]
frag 0 from ImageBox start: 0, length: 0, rect: [8,21.53125 0x0]
frag 1 from TextNode start: 0, length: 1, rect: [8,8 8x17.46875]
" "
frag 2 from SVGSVGBox start: 0, length: 0, rect: [16,21 0x0]
ImageBox <img> at (8,21) content-size 0x0 children: not-inline
frag 2 from SVGSVGBox start: 0, length: 0, rect: [16,21.53125 0x0]
ImageBox <img> at (8,21.53125) content-size 0x0 children: not-inline
(SVG-as-image isolated context)
Viewport <#document> at (0,0) content-size 0x0 children: inline
SVGSVGBox <svg> at (0,0) content-size 0x0 [SVG] children: inline
@ -14,8 +14,8 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
SVGGeometryBox <rect> at (0,0) content-size 1x1 children: not-inline
TextNode <#text>
TextNode <#text>
SVGSVGBox <svg> at (16,21) content-size 0x0 [SVG] children: inline
SVGSVGBox <svg> at (16,21.53125) content-size 0x0 [SVG] children: inline
TextNode <#text>
SVGGeometryBox <rect> at (16,21) content-size 1x1 children: not-inline
SVGGeometryBox <rect> at (16,21.53125) content-size 1x1 children: not-inline
TextNode <#text>
TextNode <#text>

View file

@ -1,8 +1,8 @@
Viewport <#document> at (0,0) content-size 800x600 children: not-inline
BlockContainer <html> at (0,0) content-size 800x600 [BFC] children: not-inline
BlockContainer <body> at (8,8) content-size 784x163 children: inline
line 0 width: 300, height: 163, bottom: 163, baseline: 13.53125
frag 0 from SVGSVGBox start: 0, length: 0, rect: [8,21 300x150]
SVGSVGBox <svg> at (8,21) content-size 300x150 [SVG] children: not-inline
SVGTextBox <text> at (8,21) content-size 0x0 children: not-inline
BlockContainer <body> at (8,8) content-size 784x163.53125 children: inline
line 0 width: 300, height: 163.53125, bottom: 163.53125, baseline: 13.53125
frag 0 from SVGSVGBox start: 0, length: 0, rect: [8,21.53125 300x150]
SVGSVGBox <svg> at (8,21.53125) content-size 300x150 [SVG] children: not-inline
SVGTextBox <text> at (8,21.53125) content-size 0x0 children: not-inline
TextNode <#text>