mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-12-08 06:09:58 +00:00
LibWeb: Make ObjectPosition more reusable
This commit is contained in:
parent
ada3810779
commit
27e4793c5d
Notes:
github-actions[bot]
2025-11-21 11:15:39 +00:00
Author: https://github.com/Psychpsyo
Commit: 27e4793c5d
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/6805
Reviewed-by: https://github.com/AtkinsSJ ✅
Reviewed-by: https://github.com/gmta ✅
Reviewed-by: https://github.com/konradekk
3 changed files with 28 additions and 23 deletions
|
|
@ -324,6 +324,25 @@ Color ComputedProperties::color_or_fallback(PropertyID id, ColorResolutionContex
|
||||||
return value.to_color(color_resolution_context).value();
|
return value.to_color(color_resolution_context).value();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Position ComputedProperties::position_value(PropertyID id) const
|
||||||
|
{
|
||||||
|
auto const& position = property(id).as_position();
|
||||||
|
Position position_value;
|
||||||
|
auto const& edge_x = position.edge_x();
|
||||||
|
auto const& edge_y = position.edge_y();
|
||||||
|
if (edge_x->is_edge()) {
|
||||||
|
auto const& edge = edge_x->as_edge();
|
||||||
|
position_value.edge_x = edge.edge().value_or(PositionEdge::Left);
|
||||||
|
position_value.offset_x = edge.offset();
|
||||||
|
}
|
||||||
|
if (edge_y->is_edge()) {
|
||||||
|
auto const& edge = edge_y->as_edge();
|
||||||
|
position_value.edge_y = edge.edge().value_or(PositionEdge::Top);
|
||||||
|
position_value.offset_y = edge.offset();
|
||||||
|
}
|
||||||
|
return position_value;
|
||||||
|
}
|
||||||
|
|
||||||
// https://drafts.csswg.org/css-values-4/#linked-properties
|
// https://drafts.csswg.org/css-values-4/#linked-properties
|
||||||
HashMap<PropertyID, StyleValueVector> ComputedProperties::assemble_coordinated_value_list(PropertyID base_property_id, Vector<PropertyID> const& property_ids) const
|
HashMap<PropertyID, StyleValueVector> ComputedProperties::assemble_coordinated_value_list(PropertyID base_property_id, Vector<PropertyID> const& property_ids) const
|
||||||
{
|
{
|
||||||
|
|
@ -2024,24 +2043,9 @@ ObjectFit ComputedProperties::object_fit() const
|
||||||
return keyword_to_object_fit(value.to_keyword()).release_value();
|
return keyword_to_object_fit(value.to_keyword()).release_value();
|
||||||
}
|
}
|
||||||
|
|
||||||
ObjectPosition ComputedProperties::object_position() const
|
Position ComputedProperties::object_position() const
|
||||||
{
|
{
|
||||||
auto const& value = property(PropertyID::ObjectPosition);
|
return position_value(PropertyID::ObjectPosition);
|
||||||
auto const& position = value.as_position();
|
|
||||||
ObjectPosition object_position;
|
|
||||||
auto const& edge_x = position.edge_x();
|
|
||||||
auto const& edge_y = position.edge_y();
|
|
||||||
if (edge_x->is_edge()) {
|
|
||||||
auto const& edge = edge_x->as_edge();
|
|
||||||
object_position.edge_x = edge.edge().value_or(PositionEdge::Left);
|
|
||||||
object_position.offset_x = edge.offset();
|
|
||||||
}
|
|
||||||
if (edge_y->is_edge()) {
|
|
||||||
auto const& edge = edge_y->as_edge();
|
|
||||||
object_position.edge_y = edge.edge().value_or(PositionEdge::Top);
|
|
||||||
object_position.offset_y = edge.offset();
|
|
||||||
}
|
|
||||||
return object_position;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TableLayout ComputedProperties::table_layout() const
|
TableLayout ComputedProperties::table_layout() const
|
||||||
|
|
|
||||||
|
|
@ -176,7 +176,7 @@ public:
|
||||||
CSS::EmptyCells empty_cells() const;
|
CSS::EmptyCells empty_cells() const;
|
||||||
Vector<Vector<String>> grid_template_areas() const;
|
Vector<Vector<String>> grid_template_areas() const;
|
||||||
ObjectFit object_fit() const;
|
ObjectFit object_fit() const;
|
||||||
ObjectPosition object_position() const;
|
Position object_position() const;
|
||||||
TableLayout table_layout() const;
|
TableLayout table_layout() const;
|
||||||
Direction direction() const;
|
Direction direction() const;
|
||||||
UnicodeBidi unicode_bidi() const;
|
UnicodeBidi unicode_bidi() const;
|
||||||
|
|
@ -288,6 +288,7 @@ private:
|
||||||
|
|
||||||
Overflow overflow(PropertyID) const;
|
Overflow overflow(PropertyID) const;
|
||||||
Vector<ShadowData> shadow(PropertyID, Layout::Node const&) const;
|
Vector<ShadowData> shadow(PropertyID, Layout::Node const&) const;
|
||||||
|
Position position_value(PropertyID) const;
|
||||||
|
|
||||||
GC::Ptr<CSSStyleDeclaration const> m_transition_property_source;
|
GC::Ptr<CSSStyleDeclaration const> m_transition_property_source;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,7 @@ struct QuotesData {
|
||||||
Vector<Array<FlyString, 2>> strings {};
|
Vector<Array<FlyString, 2>> strings {};
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ObjectPosition {
|
struct Position {
|
||||||
PositionEdge edge_x { PositionEdge::Left };
|
PositionEdge edge_x { PositionEdge::Left };
|
||||||
LengthPercentage offset_x { Percentage(50) };
|
LengthPercentage offset_x { Percentage(50) };
|
||||||
PositionEdge edge_y { PositionEdge::Top };
|
PositionEdge edge_y { PositionEdge::Top };
|
||||||
|
|
@ -238,7 +238,7 @@ public:
|
||||||
static Vector<Vector<String>> grid_template_areas() { return {}; }
|
static Vector<Vector<String>> grid_template_areas() { return {}; }
|
||||||
static Time transition_delay() { return Time::make_seconds(0); }
|
static Time transition_delay() { return Time::make_seconds(0); }
|
||||||
static ObjectFit object_fit() { return ObjectFit::Fill; }
|
static ObjectFit object_fit() { return ObjectFit::Fill; }
|
||||||
static ObjectPosition object_position() { return {}; }
|
static Position object_position() { return {}; }
|
||||||
static Color outline_color() { return Color::Black; }
|
static Color outline_color() { return Color::Black; }
|
||||||
static Length outline_offset() { return Length::make_px(0); }
|
static Length outline_offset() { return Length::make_px(0); }
|
||||||
static OutlineStyle outline_style() { return OutlineStyle::None; }
|
static OutlineStyle outline_style() { return OutlineStyle::None; }
|
||||||
|
|
@ -566,7 +566,7 @@ public:
|
||||||
EmptyCells empty_cells() const { return m_inherited.empty_cells; }
|
EmptyCells empty_cells() const { return m_inherited.empty_cells; }
|
||||||
Vector<Vector<String>> const& grid_template_areas() const { return m_noninherited.grid_template_areas; }
|
Vector<Vector<String>> const& grid_template_areas() const { return m_noninherited.grid_template_areas; }
|
||||||
ObjectFit object_fit() const { return m_noninherited.object_fit; }
|
ObjectFit object_fit() const { return m_noninherited.object_fit; }
|
||||||
ObjectPosition object_position() const { return m_noninherited.object_position; }
|
Position object_position() const { return m_noninherited.object_position; }
|
||||||
Direction direction() const { return m_inherited.direction; }
|
Direction direction() const { return m_inherited.direction; }
|
||||||
UnicodeBidi unicode_bidi() const { return m_noninherited.unicode_bidi; }
|
UnicodeBidi unicode_bidi() const { return m_noninherited.unicode_bidi; }
|
||||||
WritingMode writing_mode() const { return m_inherited.writing_mode; }
|
WritingMode writing_mode() const { return m_inherited.writing_mode; }
|
||||||
|
|
@ -833,7 +833,7 @@ protected:
|
||||||
CSSPixels outline_width { InitialValues::outline_width() };
|
CSSPixels outline_width { InitialValues::outline_width() };
|
||||||
TableLayout table_layout { InitialValues::table_layout() };
|
TableLayout table_layout { InitialValues::table_layout() };
|
||||||
ObjectFit object_fit { InitialValues::object_fit() };
|
ObjectFit object_fit { InitialValues::object_fit() };
|
||||||
ObjectPosition object_position { InitialValues::object_position() };
|
Position object_position { InitialValues::object_position() };
|
||||||
UnicodeBidi unicode_bidi { InitialValues::unicode_bidi() };
|
UnicodeBidi unicode_bidi { InitialValues::unicode_bidi() };
|
||||||
UserSelect user_select { InitialValues::user_select() };
|
UserSelect user_select { InitialValues::user_select() };
|
||||||
Isolation isolation { InitialValues::isolation() };
|
Isolation isolation { InitialValues::isolation() };
|
||||||
|
|
@ -1031,7 +1031,7 @@ public:
|
||||||
void set_table_layout(TableLayout value) { m_noninherited.table_layout = value; }
|
void set_table_layout(TableLayout value) { m_noninherited.table_layout = value; }
|
||||||
void set_quotes(QuotesData value) { m_inherited.quotes = move(value); }
|
void set_quotes(QuotesData value) { m_inherited.quotes = move(value); }
|
||||||
void set_object_fit(ObjectFit value) { m_noninherited.object_fit = value; }
|
void set_object_fit(ObjectFit value) { m_noninherited.object_fit = value; }
|
||||||
void set_object_position(ObjectPosition value) { m_noninherited.object_position = move(value); }
|
void set_object_position(Position value) { m_noninherited.object_position = move(value); }
|
||||||
void set_direction(Direction value) { m_inherited.direction = value; }
|
void set_direction(Direction value) { m_inherited.direction = value; }
|
||||||
void set_unicode_bidi(UnicodeBidi value) { m_noninherited.unicode_bidi = value; }
|
void set_unicode_bidi(UnicodeBidi value) { m_noninherited.unicode_bidi = value; }
|
||||||
void set_writing_mode(WritingMode value) { m_inherited.writing_mode = value; }
|
void set_writing_mode(WritingMode value) { m_inherited.writing_mode = value; }
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue