mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 03:07:36 +00:00
LibWeb: Start implementing proper layout of replaced elements
LayoutReplaced now has intrinsic width, height and ratio. Only some of the values may be present. The layout algorithm takes the various configurations into account per the CSS specification. This is still pretty immature but at least we're moving forward. :^)
This commit is contained in:
parent
7fcf61be35
commit
4d5ecf6e32
10 changed files with 215 additions and 22 deletions
|
@ -40,10 +40,39 @@ public:
|
|||
|
||||
virtual bool is_replaced() const final { return true; }
|
||||
|
||||
bool has_intrinsic_width() const { return m_has_intrinsic_width; }
|
||||
bool has_intrinsic_height() const { return m_has_intrinsic_height; }
|
||||
bool has_intrinsic_ratio() const { return m_has_intrinsic_ratio; }
|
||||
|
||||
float intrinsic_width() const { return m_intrinsic_width; }
|
||||
float intrinsic_height() const { return m_intrinsic_height; }
|
||||
float intrinsic_ratio() const { return m_intrinsic_ratio; }
|
||||
|
||||
void set_has_intrinsic_width(bool has) { m_has_intrinsic_width = has; }
|
||||
void set_has_intrinsic_height(bool has) { m_has_intrinsic_height = has; }
|
||||
void set_has_intrinsic_ratio(bool has) { m_has_intrinsic_ratio = has; }
|
||||
|
||||
void set_intrinsic_width(float width) { m_intrinsic_width = width; }
|
||||
void set_intrinsic_height(float height) { m_intrinsic_height = height; }
|
||||
void set_intrinsic_ratio(float ratio) { m_intrinsic_ratio = ratio; }
|
||||
|
||||
protected:
|
||||
virtual void layout(LayoutMode) override;
|
||||
virtual void split_into_lines(LayoutBlock& container, LayoutMode) override;
|
||||
|
||||
private:
|
||||
Gfx::FloatPoint calculate_position();
|
||||
float calculate_width() const;
|
||||
float calculate_height() const;
|
||||
|
||||
virtual const char* class_name() const override { return "LayoutReplaced"; }
|
||||
|
||||
virtual void split_into_lines(LayoutBlock& container, LayoutMode) override;
|
||||
bool m_has_intrinsic_width { false };
|
||||
bool m_has_intrinsic_height { false };
|
||||
bool m_has_intrinsic_ratio { false };
|
||||
float m_intrinsic_width { 0 };
|
||||
float m_intrinsic_height { 0 };
|
||||
float m_intrinsic_ratio { 0 };
|
||||
};
|
||||
|
||||
template<>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue