Skip to content

Commit 27e4793

Browse files
PsychpsyoAtkinsSJ
authored andcommitted
LibWeb: Make ObjectPosition more reusable
1 parent ada3810 commit 27e4793

File tree

3 files changed

+28
-23
lines changed

3 files changed

+28
-23
lines changed

Libraries/LibWeb/CSS/ComputedProperties.cpp

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,25 @@ Color ComputedProperties::color_or_fallback(PropertyID id, ColorResolutionContex
324324
return value.to_color(color_resolution_context).value();
325325
}
326326

327+
Position ComputedProperties::position_value(PropertyID id) const
328+
{
329+
auto const& position = property(id).as_position();
330+
Position position_value;
331+
auto const& edge_x = position.edge_x();
332+
auto const& edge_y = position.edge_y();
333+
if (edge_x->is_edge()) {
334+
auto const& edge = edge_x->as_edge();
335+
position_value.edge_x = edge.edge().value_or(PositionEdge::Left);
336+
position_value.offset_x = edge.offset();
337+
}
338+
if (edge_y->is_edge()) {
339+
auto const& edge = edge_y->as_edge();
340+
position_value.edge_y = edge.edge().value_or(PositionEdge::Top);
341+
position_value.offset_y = edge.offset();
342+
}
343+
return position_value;
344+
}
345+
327346
// https://drafts.csswg.org/css-values-4/#linked-properties
328347
HashMap<PropertyID, StyleValueVector> ComputedProperties::assemble_coordinated_value_list(PropertyID base_property_id, Vector<PropertyID> const& property_ids) const
329348
{
@@ -2024,24 +2043,9 @@ ObjectFit ComputedProperties::object_fit() const
20242043
return keyword_to_object_fit(value.to_keyword()).release_value();
20252044
}
20262045

2027-
ObjectPosition ComputedProperties::object_position() const
2046+
Position ComputedProperties::object_position() const
20282047
{
2029-
auto const& value = property(PropertyID::ObjectPosition);
2030-
auto const& position = value.as_position();
2031-
ObjectPosition object_position;
2032-
auto const& edge_x = position.edge_x();
2033-
auto const& edge_y = position.edge_y();
2034-
if (edge_x->is_edge()) {
2035-
auto const& edge = edge_x->as_edge();
2036-
object_position.edge_x = edge.edge().value_or(PositionEdge::Left);
2037-
object_position.offset_x = edge.offset();
2038-
}
2039-
if (edge_y->is_edge()) {
2040-
auto const& edge = edge_y->as_edge();
2041-
object_position.edge_y = edge.edge().value_or(PositionEdge::Top);
2042-
object_position.offset_y = edge.offset();
2043-
}
2044-
return object_position;
2048+
return position_value(PropertyID::ObjectPosition);
20452049
}
20462050

20472051
TableLayout ComputedProperties::table_layout() const

Libraries/LibWeb/CSS/ComputedProperties.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ class WEB_API ComputedProperties final : public JS::Cell {
176176
CSS::EmptyCells empty_cells() const;
177177
Vector<Vector<String>> grid_template_areas() const;
178178
ObjectFit object_fit() const;
179-
ObjectPosition object_position() const;
179+
Position object_position() const;
180180
TableLayout table_layout() const;
181181
Direction direction() const;
182182
UnicodeBidi unicode_bidi() const;
@@ -288,6 +288,7 @@ class WEB_API ComputedProperties final : public JS::Cell {
288288

289289
Overflow overflow(PropertyID) const;
290290
Vector<ShadowData> shadow(PropertyID, Layout::Node const&) const;
291+
Position position_value(PropertyID) const;
291292

292293
GC::Ptr<CSSStyleDeclaration const> m_transition_property_source;
293294

Libraries/LibWeb/CSS/ComputedValues.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ struct QuotesData {
6363
Vector<Array<FlyString, 2>> strings {};
6464
};
6565

66-
struct ObjectPosition {
66+
struct Position {
6767
PositionEdge edge_x { PositionEdge::Left };
6868
LengthPercentage offset_x { Percentage(50) };
6969
PositionEdge edge_y { PositionEdge::Top };
@@ -238,7 +238,7 @@ class InitialValues {
238238
static Vector<Vector<String>> grid_template_areas() { return {}; }
239239
static Time transition_delay() { return Time::make_seconds(0); }
240240
static ObjectFit object_fit() { return ObjectFit::Fill; }
241-
static ObjectPosition object_position() { return {}; }
241+
static Position object_position() { return {}; }
242242
static Color outline_color() { return Color::Black; }
243243
static Length outline_offset() { return Length::make_px(0); }
244244
static OutlineStyle outline_style() { return OutlineStyle::None; }
@@ -566,7 +566,7 @@ class ComputedValues {
566566
EmptyCells empty_cells() const { return m_inherited.empty_cells; }
567567
Vector<Vector<String>> const& grid_template_areas() const { return m_noninherited.grid_template_areas; }
568568
ObjectFit object_fit() const { return m_noninherited.object_fit; }
569-
ObjectPosition object_position() const { return m_noninherited.object_position; }
569+
Position object_position() const { return m_noninherited.object_position; }
570570
Direction direction() const { return m_inherited.direction; }
571571
UnicodeBidi unicode_bidi() const { return m_noninherited.unicode_bidi; }
572572
WritingMode writing_mode() const { return m_inherited.writing_mode; }
@@ -833,7 +833,7 @@ class ComputedValues {
833833
CSSPixels outline_width { InitialValues::outline_width() };
834834
TableLayout table_layout { InitialValues::table_layout() };
835835
ObjectFit object_fit { InitialValues::object_fit() };
836-
ObjectPosition object_position { InitialValues::object_position() };
836+
Position object_position { InitialValues::object_position() };
837837
UnicodeBidi unicode_bidi { InitialValues::unicode_bidi() };
838838
UserSelect user_select { InitialValues::user_select() };
839839
Isolation isolation { InitialValues::isolation() };
@@ -1031,7 +1031,7 @@ class MutableComputedValues final : public ComputedValues {
10311031
void set_table_layout(TableLayout value) { m_noninherited.table_layout = value; }
10321032
void set_quotes(QuotesData value) { m_inherited.quotes = move(value); }
10331033
void set_object_fit(ObjectFit value) { m_noninherited.object_fit = value; }
1034-
void set_object_position(ObjectPosition value) { m_noninherited.object_position = move(value); }
1034+
void set_object_position(Position value) { m_noninherited.object_position = move(value); }
10351035
void set_direction(Direction value) { m_inherited.direction = value; }
10361036
void set_unicode_bidi(UnicodeBidi value) { m_noninherited.unicode_bidi = value; }
10371037
void set_writing_mode(WritingMode value) { m_inherited.writing_mode = value; }

0 commit comments

Comments
 (0)