mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 11:28:12 +00:00
LibWeb: Implement the math-depth
CSS property
This one is a bit fun because it can be `add(<integer>)` or `auto-add`, but children have to inherit the computed value not the specified one. We also have to compute it before computing the font-size, because of `font-size: math` which will be implemented later.
This commit is contained in:
parent
53f3ed026a
commit
6476dea898
19 changed files with 285 additions and 11 deletions
|
@ -0,0 +1,52 @@
|
|||
/*
|
||||
* Copyright (c) 2023, Sam Atkins <atkinssj@serenityos.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include "MathDepthStyleValue.h"
|
||||
|
||||
namespace Web::CSS {
|
||||
|
||||
ValueComparingNonnullRefPtr<MathDepthStyleValue> MathDepthStyleValue::create_auto_add()
|
||||
{
|
||||
return adopt_ref(*new (nothrow) MathDepthStyleValue(MathDepthType::AutoAdd));
|
||||
}
|
||||
|
||||
ValueComparingNonnullRefPtr<MathDepthStyleValue> MathDepthStyleValue::create_add(ValueComparingNonnullRefPtr<StyleValue const> integer_value)
|
||||
{
|
||||
return adopt_ref(*new (nothrow) MathDepthStyleValue(MathDepthType::Add, move(integer_value)));
|
||||
}
|
||||
|
||||
ValueComparingNonnullRefPtr<MathDepthStyleValue> MathDepthStyleValue::create_integer(ValueComparingNonnullRefPtr<StyleValue const> integer_value)
|
||||
{
|
||||
return adopt_ref(*new (nothrow) MathDepthStyleValue(MathDepthType::Integer, move(integer_value)));
|
||||
}
|
||||
|
||||
MathDepthStyleValue::MathDepthStyleValue(MathDepthType type, ValueComparingRefPtr<StyleValue const> integer_value)
|
||||
: StyleValueWithDefaultOperators(Type::MathDepth)
|
||||
, m_type(type)
|
||||
, m_integer_value(move(integer_value))
|
||||
{
|
||||
}
|
||||
|
||||
bool MathDepthStyleValue::properties_equal(MathDepthStyleValue const& other) const
|
||||
{
|
||||
return m_type == other.m_type
|
||||
&& m_integer_value == other.m_integer_value;
|
||||
}
|
||||
|
||||
String MathDepthStyleValue::to_string() const
|
||||
{
|
||||
switch (m_type) {
|
||||
case MathDepthType::AutoAdd:
|
||||
return "auto-add"_string;
|
||||
case MathDepthType::Add:
|
||||
return MUST(String::formatted("add({})", m_integer_value->to_string()));
|
||||
case MathDepthType::Integer:
|
||||
return m_integer_value->to_string();
|
||||
}
|
||||
VERIFY_NOT_REACHED();
|
||||
}
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue