mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 17:52:45 +00:00 
			
		
		
		
	LibWeb: Move the offset, margin and padding boxes into LayoutStyle
This commit is contained in:
		
							parent
							
								
									6b334e02e6
								
							
						
					
					
						commit
						4b2ac34725
					
				
					 9 changed files with 66 additions and 79 deletions
				
			
		|  | @ -73,6 +73,11 @@ public: | |||
|         return resolved(make_auto(), layout_node, reference_for_percent); | ||||
|     } | ||||
| 
 | ||||
|     Length resolved_or_zero(const LayoutNode& layout_node, float reference_for_percent) const | ||||
|     { | ||||
|         return resolved(make_px(0), layout_node, reference_for_percent); | ||||
|     } | ||||
| 
 | ||||
|     bool is_undefined() const { return m_type == Type::Undefined; } | ||||
|     bool is_percentage() const { return m_type == Type::Percentage; } | ||||
|     bool is_auto() const { return m_type == Type::Auto; } | ||||
|  |  | |||
|  | @ -76,14 +76,14 @@ Length StyleProperties::length_or_fallback(CSS::PropertyID id, const Length& fal | |||
|     return value.value()->to_length(); | ||||
| } | ||||
| 
 | ||||
| Length StyleProperties::length_or_fallback(CSS::PropertyID id, const Length& fallback, float reference_for_percentages) const | ||||
| LengthBox StyleProperties::length_box(CSS::PropertyID left_id, CSS::PropertyID top_id, CSS::PropertyID right_id, CSS::PropertyID bottom_id) const | ||||
| { | ||||
|     auto value = property(id); | ||||
|     if (!value.has_value()) | ||||
|         return fallback; | ||||
|     if (value.value()->is_percentage()) | ||||
|         return static_cast<const PercentageStyleValue&>(*value.value()).to_length(reference_for_percentages); | ||||
|     return value.value()->to_length(); | ||||
|     LengthBox box; | ||||
|     box.left = length_or_fallback(left_id, {}); | ||||
|     box.top = length_or_fallback(top_id, {}); | ||||
|     box.right = length_or_fallback(right_id, {}); | ||||
|     box.bottom = length_or_fallback(bottom_id, {}); | ||||
|     return box; | ||||
| } | ||||
| 
 | ||||
| String StyleProperties::string_or_fallback(CSS::PropertyID id, const StringView& fallback) const | ||||
|  |  | |||
|  | @ -30,6 +30,7 @@ | |||
| #include <AK/NonnullRefPtr.h> | ||||
| #include <LibGfx/Font.h> | ||||
| #include <LibGfx/Forward.h> | ||||
| #include <LibWeb/CSS/LengthBox.h> | ||||
| #include <LibWeb/CSS/StyleValue.h> | ||||
| 
 | ||||
| namespace Web { | ||||
|  | @ -56,7 +57,7 @@ public: | |||
|     Optional<NonnullRefPtr<StyleValue>> property(CSS::PropertyID) const; | ||||
| 
 | ||||
|     Length length_or_fallback(CSS::PropertyID, const Length& fallback) const; | ||||
|     Length length_or_fallback(CSS::PropertyID, const Length& fallback, float reference_for_percentages) const; | ||||
|     LengthBox length_box(CSS::PropertyID left_id, CSS::PropertyID top_id, CSS::PropertyID right_id, CSS::PropertyID bottom_id) const; | ||||
|     String string_or_fallback(CSS::PropertyID, const StringView& fallback) const; | ||||
|     Color color_or_fallback(CSS::PropertyID, const Document&, Color fallback) const; | ||||
|     CSS::TextAlign text_align() const; | ||||
|  |  | |||
|  | @ -155,7 +155,6 @@ public: | |||
|         Initial, | ||||
|         String, | ||||
|         Length, | ||||
|         Percentage, | ||||
|         Color, | ||||
|         Identifier, | ||||
|         Image, | ||||
|  | @ -171,7 +170,6 @@ public: | |||
|     bool is_image() const { return type() == Type::Image; } | ||||
|     bool is_string() const { return type() == Type::String; } | ||||
|     bool is_length() const { return type() == Type::Length; } | ||||
|     bool is_percentage() const { return type() == Type::Percentage; } | ||||
|     bool is_position() const { return type() == Type::Position; } | ||||
| 
 | ||||
|     virtual String to_string() const = 0; | ||||
|  | @ -232,31 +230,6 @@ private: | |||
|     Length m_length; | ||||
| }; | ||||
| 
 | ||||
| class PercentageStyleValue : public StyleValue { | ||||
| public: | ||||
|     static NonnullRefPtr<PercentageStyleValue> create(float percentage) | ||||
|     { | ||||
|         return adopt(*new PercentageStyleValue(percentage)); | ||||
|     } | ||||
|     virtual ~PercentageStyleValue() override { } | ||||
| 
 | ||||
|     virtual String to_string() const override { return String::format("%g%%", m_percentage); } | ||||
| 
 | ||||
|     Length to_length(float reference) const { return Length((m_percentage / 100.0f) * reference, Length::Type::Px); } | ||||
| 
 | ||||
| private: | ||||
|     virtual Length to_length() const override { return Length::make_auto(); } | ||||
|     virtual bool is_auto() const override { return false; } | ||||
| 
 | ||||
|     explicit PercentageStyleValue(float percentage) | ||||
|         : StyleValue(Type::Percentage) | ||||
|         , m_percentage(percentage) | ||||
|     { | ||||
|     } | ||||
| 
 | ||||
|     float m_percentage { 0 }; | ||||
| }; | ||||
| 
 | ||||
| class InitialStyleValue final : public StyleValue { | ||||
| public: | ||||
|     static NonnullRefPtr<InitialStyleValue> create() { return adopt(*new InitialStyleValue); } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Andreas Kling
						Andreas Kling