mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 18:47:34 +00:00
LibWeb: Saturate result in PixelUnits::operator/
This commit is contained in:
parent
f9fc0505fb
commit
71f56d8697
2 changed files with 11 additions and 3 deletions
|
@ -31,6 +31,11 @@ TEST_CASE(division1)
|
|||
CSSPixels b(5);
|
||||
CSSPixels c = a / b;
|
||||
EXPECT_EQ(c, CSSPixels(2));
|
||||
|
||||
a = CSSPixels::from_raw(0x3FFF'FFFF); // int_max / 2
|
||||
b = 0.25;
|
||||
EXPECT(!a.might_be_saturated());
|
||||
EXPECT((a / b).might_be_saturated());
|
||||
}
|
||||
|
||||
TEST_CASE(multiplication1)
|
||||
|
|
|
@ -124,9 +124,12 @@ CSSPixels CSSPixels::operator*(CSSPixels const& other) const
|
|||
|
||||
CSSPixels CSSPixels::operator/(CSSPixels const& other) const
|
||||
{
|
||||
CSSPixels result;
|
||||
result.set_raw_value(static_cast<long long>(fixed_point_denominator) * raw_value() / other.raw_value());
|
||||
return result;
|
||||
i64 mult = raw_value();
|
||||
mult <<= fractional_bits;
|
||||
mult /= other.raw_value();
|
||||
|
||||
int int_value = AK::clamp_to_int(mult);
|
||||
return from_raw(int_value);
|
||||
}
|
||||
|
||||
CSSPixels& CSSPixels::operator+=(CSSPixels const& other)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue