LibWeb: Add CSS support for border-spacing property

This commit is contained in:
Andi Gallo 2023-06-16 02:35:03 +00:00 committed by Andreas Kling
parent f662a452c9
commit 396f1a977c
Notes: sideshowbarker 2024-07-17 08:59:18 +09:00
5 changed files with 31 additions and 0 deletions

View File

@ -35,6 +35,7 @@ public:
static int font_weight() { return 400; } static int font_weight() { return 400; }
static CSS::FontVariant font_variant() { return CSS::FontVariant::Normal; } static CSS::FontVariant font_variant() { return CSS::FontVariant::Normal; }
static CSS::Float float_() { return CSS::Float::None; } static CSS::Float float_() { return CSS::Float::None; }
static CSS::Length border_spacing() { return CSS::Length::make_px(0); }
static CSS::CaptionSide caption_side() { return CSS::CaptionSide::Top; } static CSS::CaptionSide caption_side() { return CSS::CaptionSide::Top; }
static CSS::Clear clear() { return CSS::Clear::None; } static CSS::Clear clear() { return CSS::Clear::None; }
static CSS::Clip clip() { return CSS::Clip::make_auto(); } static CSS::Clip clip() { return CSS::Clip::make_auto(); }
@ -222,6 +223,8 @@ class ComputedValues {
public: public:
AspectRatio aspect_ratio() const { return m_noninherited.aspect_ratio; } AspectRatio aspect_ratio() const { return m_noninherited.aspect_ratio; }
CSS::Float float_() const { return m_noninherited.float_; } CSS::Float float_() const { return m_noninherited.float_; }
CSS::Length border_spacing_horizontal() const { return m_inherited.border_spacing_horizontal; }
CSS::Length border_spacing_vertical() const { return m_inherited.border_spacing_vertical; }
CSS::CaptionSide caption_side() const { return m_inherited.caption_side; } CSS::CaptionSide caption_side() const { return m_inherited.caption_side; }
CSS::Clear clear() const { return m_noninherited.clear; } CSS::Clear clear() const { return m_noninherited.clear; }
CSS::Clip clip() const { return m_noninherited.clip; } CSS::Clip clip() const { return m_noninherited.clip; }
@ -332,6 +335,8 @@ protected:
float font_size { InitialValues::font_size() }; float font_size { InitialValues::font_size() };
int font_weight { InitialValues::font_weight() }; int font_weight { InitialValues::font_weight() };
CSS::FontVariant font_variant { InitialValues::font_variant() }; CSS::FontVariant font_variant { InitialValues::font_variant() };
CSS::Length border_spacing_horizontal { InitialValues::border_spacing() };
CSS::Length border_spacing_vertical { InitialValues::border_spacing() };
CSS::CaptionSide caption_side { InitialValues::caption_side() }; CSS::CaptionSide caption_side { InitialValues::caption_side() };
Color color { InitialValues::color() }; Color color { InitialValues::color() };
Optional<Color> accent_color {}; Optional<Color> accent_color {};
@ -437,6 +442,8 @@ public:
void set_font_size(float font_size) { m_inherited.font_size = font_size; } void set_font_size(float font_size) { m_inherited.font_size = font_size; }
void set_font_weight(int font_weight) { m_inherited.font_weight = font_weight; } void set_font_weight(int font_weight) { m_inherited.font_weight = font_weight; }
void set_font_variant(CSS::FontVariant font_variant) { m_inherited.font_variant = font_variant; } void set_font_variant(CSS::FontVariant font_variant) { m_inherited.font_variant = font_variant; }
void set_border_spacing_horizontal(CSS::Length border_spacing_horizontal) { m_inherited.border_spacing_horizontal = border_spacing_horizontal; }
void set_border_spacing_vertical(CSS::Length border_spacing_vertical) { m_inherited.border_spacing_vertical = border_spacing_vertical; }
void set_caption_side(CSS::CaptionSide caption_side) { m_inherited.caption_side = caption_side; } void set_caption_side(CSS::CaptionSide caption_side) { m_inherited.caption_side = caption_side; }
void set_color(Color color) { m_inherited.color = color; } void set_color(Color color) { m_inherited.color = color; }
void set_clip(CSS::Clip const& clip) { m_noninherited.clip = clip; } void set_clip(CSS::Clip const& clip) { m_noninherited.clip = clip; }

View File

@ -502,6 +502,7 @@
"border-spacing": { "border-spacing": {
"inherited": true, "inherited": true,
"initial": "0", "initial": "0",
"max-values": 2,
"valid-types": [ "valid-types": [
"length [0,∞]" "length [0,∞]"
], ],

View File

@ -379,6 +379,24 @@ Optional<CSS::ImageRendering> StyleProperties::image_rendering() const
return value_id_to_image_rendering(value->to_identifier()); return value_id_to_image_rendering(value->to_identifier());
} }
CSS::Length StyleProperties::border_spacing_horizontal() const
{
auto value = property(CSS::PropertyID::BorderSpacing);
if (value->is_length())
return value->as_length().length();
auto const& list = value->as_value_list();
return list.value_at(0, false)->as_length().length();
}
CSS::Length StyleProperties::border_spacing_vertical() const
{
auto value = property(CSS::PropertyID::BorderSpacing);
if (value->is_length())
return value->as_length().length();
auto const& list = value->as_value_list();
return list.value_at(1, false)->as_length().length();
}
Optional<CSS::CaptionSide> StyleProperties::caption_side() const Optional<CSS::CaptionSide> StyleProperties::caption_side() const
{ {
auto value = property(CSS::PropertyID::CaptionSide); auto value = property(CSS::PropertyID::CaptionSide);

View File

@ -50,6 +50,8 @@ public:
Color color_or_fallback(CSS::PropertyID, Layout::NodeWithStyle const&, Color fallback) const; Color color_or_fallback(CSS::PropertyID, Layout::NodeWithStyle const&, Color fallback) const;
Optional<CSS::TextAlign> text_align() const; Optional<CSS::TextAlign> text_align() const;
Optional<CSS::TextJustify> text_justify() const; Optional<CSS::TextJustify> text_justify() const;
CSS::Length border_spacing_horizontal() const;
CSS::Length border_spacing_vertical() const;
Optional<CSS::CaptionSide> caption_side() const; Optional<CSS::CaptionSide> caption_side() const;
CSS::Clip clip() const; CSS::Clip clip() const;
CSS::Display display() const; CSS::Display display() const;

View File

@ -533,6 +533,9 @@ void NodeWithStyle::apply_style(const CSS::StyleProperties& computed_style)
if (float_.has_value()) if (float_.has_value())
computed_values.set_float(float_.value()); computed_values.set_float(float_.value());
computed_values.set_border_spacing_horizontal(computed_style.border_spacing_horizontal());
computed_values.set_border_spacing_vertical(computed_style.border_spacing_vertical());
auto caption_side = computed_style.caption_side(); auto caption_side = computed_style.caption_side();
if (caption_side.has_value()) if (caption_side.has_value())
computed_values.set_caption_side(caption_side.value()); computed_values.set_caption_side(caption_side.value());