mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 14:57:35 +00:00
LibWeb: Saturate PixelUnits on creation when needed
This commit is contained in:
parent
95d00553c9
commit
1e5ba09d76
2 changed files with 17 additions and 3 deletions
|
@ -11,17 +11,28 @@ namespace Web {
|
|||
|
||||
CSSPixels::CSSPixels(int value)
|
||||
{
|
||||
m_value = value * fixed_point_denominator;
|
||||
if (value > max_integer_value) [[unlikely]]
|
||||
m_value = NumericLimits<int>::max();
|
||||
else if (value < min_integer_value) [[unlikely]]
|
||||
m_value = NumericLimits<int>::min();
|
||||
else
|
||||
m_value = value << fractional_bits;
|
||||
}
|
||||
|
||||
CSSPixels::CSSPixels(unsigned int value)
|
||||
{
|
||||
m_value = value * fixed_point_denominator;
|
||||
if (value > max_integer_value) [[unlikely]]
|
||||
m_value = NumericLimits<int>::max();
|
||||
else
|
||||
m_value = static_cast<int>(value) << fractional_bits;
|
||||
}
|
||||
|
||||
CSSPixels::CSSPixels(unsigned long value)
|
||||
{
|
||||
m_value = value * fixed_point_denominator;
|
||||
if (value > max_integer_value) [[unlikely]]
|
||||
m_value = NumericLimits<int>::max();
|
||||
else
|
||||
m_value = static_cast<int>(value) << fractional_bits;
|
||||
}
|
||||
|
||||
CSSPixels::CSSPixels(float value)
|
||||
|
|
|
@ -57,6 +57,9 @@ public:
|
|||
|
||||
static constexpr i32 radix_mask = fixed_point_denominator - 1;
|
||||
|
||||
static constexpr i32 max_integer_value = NumericLimits<int>::max() >> fractional_bits;
|
||||
static constexpr i32 min_integer_value = NumericLimits<int>::min() >> fractional_bits;
|
||||
|
||||
CSSPixels() = default;
|
||||
CSSPixels(int value);
|
||||
CSSPixels(unsigned int value);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue