mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 06:37:44 +00:00
LibWeb: Store computed CSS value of background-repeat
This commit is contained in:
parent
fcfeadaffa
commit
bd5a91269f
7 changed files with 55 additions and 0 deletions
|
@ -45,6 +45,7 @@ public:
|
||||||
static CSS::Display display() { return CSS::Display::Inline; }
|
static CSS::Display display() { return CSS::Display::Inline; }
|
||||||
static Color color() { return Color::Black; }
|
static Color color() { return Color::Black; }
|
||||||
static Color background_color() { return Color::Transparent; }
|
static Color background_color() { return Color::Transparent; }
|
||||||
|
static CSS::Repeat background_repeat() { return CSS::Repeat::Repeat; }
|
||||||
static CSS::ListStyleType list_style_type() { return CSS::ListStyleType::Disc; }
|
static CSS::ListStyleType list_style_type() { return CSS::ListStyleType::Disc; }
|
||||||
static CSS::FlexDirection flex_direction() { return CSS::FlexDirection::Row; }
|
static CSS::FlexDirection flex_direction() { return CSS::FlexDirection::Row; }
|
||||||
static CSS::Overflow overflow() { return CSS::Overflow::Visible; }
|
static CSS::Overflow overflow() { return CSS::Overflow::Visible; }
|
||||||
|
@ -91,6 +92,7 @@ public:
|
||||||
|
|
||||||
Color color() const { return m_inherited.color; }
|
Color color() const { return m_inherited.color; }
|
||||||
Color background_color() const { return m_noninherited.background_color; }
|
Color background_color() const { return m_noninherited.background_color; }
|
||||||
|
CSS::Repeat background_repeat() const { return m_noninherited.background_repeat; }
|
||||||
|
|
||||||
CSS::ListStyleType list_style_type() const { return m_inherited.list_style_type; }
|
CSS::ListStyleType list_style_type() const { return m_inherited.list_style_type; }
|
||||||
|
|
||||||
|
@ -132,6 +134,7 @@ protected:
|
||||||
BorderData border_right;
|
BorderData border_right;
|
||||||
BorderData border_bottom;
|
BorderData border_bottom;
|
||||||
Color background_color { InitialValues::background_color() };
|
Color background_color { InitialValues::background_color() };
|
||||||
|
CSS::Repeat background_repeat { InitialValues::background_repeat() };
|
||||||
CSS::FlexDirection flex_direction { InitialValues::flex_direction() };
|
CSS::FlexDirection flex_direction { InitialValues::flex_direction() };
|
||||||
CSS::Overflow overflow_x { InitialValues::overflow() };
|
CSS::Overflow overflow_x { InitialValues::overflow() };
|
||||||
CSS::Overflow overflow_y { InitialValues::overflow() };
|
CSS::Overflow overflow_y { InitialValues::overflow() };
|
||||||
|
@ -146,6 +149,7 @@ public:
|
||||||
void set_color(const Color& color) { m_inherited.color = color; }
|
void set_color(const Color& color) { m_inherited.color = color; }
|
||||||
void set_cursor(CSS::Cursor cursor) { m_inherited.cursor = cursor; }
|
void set_cursor(CSS::Cursor cursor) { m_inherited.cursor = cursor; }
|
||||||
void set_background_color(const Color& color) { m_noninherited.background_color = color; }
|
void set_background_color(const Color& color) { m_noninherited.background_color = color; }
|
||||||
|
void set_background_repeat(CSS::Repeat repeat) { m_noninherited.background_repeat = repeat; }
|
||||||
void set_float(CSS::Float value) { m_noninherited.float_ = value; }
|
void set_float(CSS::Float value) { m_noninherited.float_ = value; }
|
||||||
void set_clear(CSS::Clear value) { m_noninherited.clear = value; }
|
void set_clear(CSS::Clear value) { m_noninherited.clear = value; }
|
||||||
void set_z_index(Optional<int> value) { m_noninherited.z_index = value; }
|
void set_z_index(Optional<int> value) { m_noninherited.z_index = value; }
|
||||||
|
|
|
@ -108,6 +108,7 @@
|
||||||
"ne-resize",
|
"ne-resize",
|
||||||
"nesw-resize",
|
"nesw-resize",
|
||||||
"no-drop",
|
"no-drop",
|
||||||
|
"no-repeat",
|
||||||
"none",
|
"none",
|
||||||
"normal",
|
"normal",
|
||||||
"not-allowed",
|
"not-allowed",
|
||||||
|
@ -124,8 +125,12 @@
|
||||||
"pre-wrap",
|
"pre-wrap",
|
||||||
"progress",
|
"progress",
|
||||||
"relative",
|
"relative",
|
||||||
|
"repeat",
|
||||||
|
"repeat-x",
|
||||||
|
"repeat-y",
|
||||||
"ridge",
|
"ridge",
|
||||||
"right",
|
"right",
|
||||||
|
"round",
|
||||||
"row",
|
"row",
|
||||||
"row-resize",
|
"row-resize",
|
||||||
"row-reverse",
|
"row-reverse",
|
||||||
|
@ -134,6 +139,7 @@
|
||||||
"small",
|
"small",
|
||||||
"smaller",
|
"smaller",
|
||||||
"solid",
|
"solid",
|
||||||
|
"space",
|
||||||
"square",
|
"square",
|
||||||
"s-resize",
|
"s-resize",
|
||||||
"static",
|
"static",
|
||||||
|
|
|
@ -612,4 +612,28 @@ Optional<CSS::Overflow> StyleProperties::overflow(CSS::PropertyID property_id) c
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Optional<CSS::Repeat> StyleProperties::background_repeat() const
|
||||||
|
{
|
||||||
|
auto value = property(CSS::PropertyID::BackgroundRepeat);
|
||||||
|
if (!value.has_value())
|
||||||
|
return {};
|
||||||
|
|
||||||
|
switch (value.value()->to_identifier()) {
|
||||||
|
case CSS::ValueID::NoRepeat:
|
||||||
|
return CSS::Repeat::NoRepeat;
|
||||||
|
case CSS::ValueID::Repeat:
|
||||||
|
return CSS::Repeat::Repeat;
|
||||||
|
case CSS::ValueID::RepeatX:
|
||||||
|
return CSS::Repeat::RepeatX;
|
||||||
|
case CSS::ValueID::RepeatY:
|
||||||
|
return CSS::Repeat::RepeatY;
|
||||||
|
case CSS::ValueID::Round:
|
||||||
|
return CSS::Repeat::Round;
|
||||||
|
case CSS::ValueID::Space:
|
||||||
|
return CSS::Repeat::Space;
|
||||||
|
default:
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,6 +73,7 @@ public:
|
||||||
Optional<CSS::FlexDirection> flex_direction() const;
|
Optional<CSS::FlexDirection> flex_direction() const;
|
||||||
Optional<CSS::Overflow> overflow_x() const;
|
Optional<CSS::Overflow> overflow_x() const;
|
||||||
Optional<CSS::Overflow> overflow_y() const;
|
Optional<CSS::Overflow> overflow_y() const;
|
||||||
|
Optional<CSS::Repeat> background_repeat() const;
|
||||||
|
|
||||||
const Gfx::Font& font() const
|
const Gfx::Font& font() const
|
||||||
{
|
{
|
||||||
|
|
|
@ -429,6 +429,8 @@ static void set_property_expanding_shorthands(StyleProperties& style, CSS::Prope
|
||||||
style.set_property(CSS::PropertyID::BackgroundColor, values[0]);
|
style.set_property(CSS::PropertyID::BackgroundColor, values[0]);
|
||||||
|
|
||||||
for (auto& value : values) {
|
for (auto& value : values) {
|
||||||
|
if (value.is_identifier())
|
||||||
|
set_property_expanding_shorthands(style, CSS::PropertyID::BackgroundRepeat, value, document);
|
||||||
if (!value.is_string())
|
if (!value.is_string())
|
||||||
continue;
|
continue;
|
||||||
auto string = value.to_string();
|
auto string = value.to_string();
|
||||||
|
@ -456,6 +458,11 @@ static void set_property_expanding_shorthands(StyleProperties& style, CSS::Prope
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (property_id == CSS::PropertyID::BackgroundRepeat) {
|
||||||
|
style.set_property(CSS::PropertyID::BackgroundRepeat, value);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (property_id == CSS::PropertyID::Margin) {
|
if (property_id == CSS::PropertyID::Margin) {
|
||||||
if (value.is_length()) {
|
if (value.is_length()) {
|
||||||
style.set_property(CSS::PropertyID::MarginTop, value);
|
style.set_property(CSS::PropertyID::MarginTop, value);
|
||||||
|
|
|
@ -189,6 +189,15 @@ enum class Overflow : u8 {
|
||||||
Visible,
|
Visible,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum class Repeat : u8 {
|
||||||
|
NoRepeat,
|
||||||
|
Repeat,
|
||||||
|
RepeatX,
|
||||||
|
RepeatY,
|
||||||
|
Round,
|
||||||
|
Space,
|
||||||
|
};
|
||||||
|
|
||||||
class StyleValue : public RefCounted<StyleValue> {
|
class StyleValue : public RefCounted<StyleValue> {
|
||||||
public:
|
public:
|
||||||
virtual ~StyleValue();
|
virtual ~StyleValue();
|
||||||
|
|
|
@ -234,6 +234,10 @@ void NodeWithStyle::apply_style(const CSS::StyleProperties& specified_style)
|
||||||
m_background_image = static_ptr_cast<CSS::ImageStyleValue>(bgimage.value());
|
m_background_image = static_ptr_cast<CSS::ImageStyleValue>(bgimage.value());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto background_repeat = specified_style.background_repeat();
|
||||||
|
if (background_repeat.has_value())
|
||||||
|
computed_values.set_background_repeat(background_repeat.value());
|
||||||
|
|
||||||
computed_values.set_display(specified_style.display());
|
computed_values.set_display(specified_style.display());
|
||||||
|
|
||||||
auto flex_direction = specified_style.flex_direction();
|
auto flex_direction = specified_style.flex_direction();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue