Aliaksandr Kalenik
e7eaf3b566
LibWeb: Remove rounding division for CSSPixels
...
Reverts 98926b487c
that regressed: block-and-inline/small-percentage-margin.html
(thrashing layout while window resizing)
Fixes https://github.com/SerenityOS/serenity/issues/22610
2024-01-06 21:40:27 +01:00
Zaggy1024
98926b487c
LibWeb: Perform rounding when dividing CSSPixels
...
This should allow us to produce results that more closely match old
layouts when divisions were done in floating-point.
2023-09-05 14:50:45 +02:00
MacDue
360c0eb509
LibWeb: Remove implicit conversion from float and double to CSSPixels
...
In general it is not safe to convert any arbitrary floating-point value
to CSSPixels. CSSPixels has a resolution of 0.015625, which for small
values (e.g. scale factors between 0 and 1), can produce bad results
if converted to CSSPixels then scaled back up. In the worst case values
can underflow to zero and produce incorrect results.
2023-08-26 23:53:45 +02:00
Hendiadyoin1
b342b4dfb8
LibWeb: Fix a rounding issue on CSSPixels multiplication
...
Co-Authored-By: ronak69 <ronak69@danwin1210.de>
2023-08-18 17:58:44 +02:00
Hendiadyoin1
6c341ca985
LibWeb: Implement rounding for PixelUnits
2023-08-05 20:03:09 +02:00
Hendiadyoin1
71f56d8697
LibWeb: Saturate result in PixelUnits::operator/
2023-08-05 20:03:09 +02:00
Hendiadyoin1
f9fc0505fb
LibWeb: Add propper rounding to PixelUnits::operator*
...
Also moves related constants into the class to make them accessible for
tests.
2023-08-05 20:03:09 +02:00
Andi Gallo
e9ad8d5e4f
LibWeb: Use i64 for intermediate value in CSSPixels multiplication
...
Reduce the chance of overflow due to fixed point denominator being
squared when multiplying the raw values, before adjusting the final
value back.
2023-08-04 13:36:29 +02:00
Aliaksandr Kalenik
c431167736
LibWeb: Implement subtraction using saturated_addition in CSSPixels
...
Fixes overflow bug found by UBSAN.
2023-07-25 15:21:40 +02:00
Aliaksandr Kalenik
0f21b35d1c
Tests/LibWeb: Add tests for CSSPixels class
...
After the CSSPixels implementation evolved from a wrapper of double
to a fixed-point saturated math arithmetic implementation, it makes
sense to have separate tests for it.
2023-07-25 11:52:02 +02:00