mirror of
https://github.com/RGBCube/serenity
synced 2025-07-17 07:27:35 +00:00
LibWeb: Parse and store the opacity property
This commit is contained in:
parent
495f69b76b
commit
0e6ba6e1d3
5 changed files with 23 additions and 0 deletions
|
@ -62,6 +62,7 @@ public:
|
||||||
FlexBasisData flex_basis() const { return m_noninherited.flex_basis; }
|
FlexBasisData flex_basis() const { return m_noninherited.flex_basis; }
|
||||||
Optional<float> flex_grow_factor() const { return m_noninherited.flex_grow_factor; }
|
Optional<float> flex_grow_factor() const { return m_noninherited.flex_grow_factor; }
|
||||||
Optional<float> flex_shrink_factor() const { return m_noninherited.flex_shrink_factor; }
|
Optional<float> flex_shrink_factor() const { return m_noninherited.flex_shrink_factor; }
|
||||||
|
Optional<float> opacity() const { return m_noninherited.opacity; }
|
||||||
CSS::JustifyContent justify_content() const { return m_noninherited.justify_content; }
|
CSS::JustifyContent justify_content() const { return m_noninherited.justify_content; }
|
||||||
const CSS::Length& width() const { return m_noninherited.width; }
|
const CSS::Length& width() const { return m_noninherited.width; }
|
||||||
const CSS::Length& min_width() const { return m_noninherited.min_width; }
|
const CSS::Length& min_width() const { return m_noninherited.min_width; }
|
||||||
|
@ -146,6 +147,7 @@ protected:
|
||||||
CSS::JustifyContent justify_content { InitialValues::justify_content() };
|
CSS::JustifyContent justify_content { InitialValues::justify_content() };
|
||||||
CSS::Overflow overflow_x { InitialValues::overflow() };
|
CSS::Overflow overflow_x { InitialValues::overflow() };
|
||||||
CSS::Overflow overflow_y { InitialValues::overflow() };
|
CSS::Overflow overflow_y { InitialValues::overflow() };
|
||||||
|
Optional<float> opacity;
|
||||||
} m_noninherited;
|
} m_noninherited;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -193,6 +195,7 @@ public:
|
||||||
void set_flex_basis(FlexBasisData value) { m_noninherited.flex_basis = value; }
|
void set_flex_basis(FlexBasisData value) { m_noninherited.flex_basis = value; }
|
||||||
void set_flex_grow_factor(Optional<float> value) { m_noninherited.flex_grow_factor = value; }
|
void set_flex_grow_factor(Optional<float> value) { m_noninherited.flex_grow_factor = value; }
|
||||||
void set_flex_shrink_factor(Optional<float> value) { m_noninherited.flex_shrink_factor = value; }
|
void set_flex_shrink_factor(Optional<float> value) { m_noninherited.flex_shrink_factor = value; }
|
||||||
|
void set_opacity(Optional<float> value) { m_noninherited.opacity = value; }
|
||||||
void set_justify_content(CSS::JustifyContent value) { m_noninherited.justify_content = value; }
|
void set_justify_content(CSS::JustifyContent value) { m_noninherited.justify_content = value; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -347,6 +347,10 @@
|
||||||
"inherited": false,
|
"inherited": false,
|
||||||
"initial": "0"
|
"initial": "0"
|
||||||
},
|
},
|
||||||
|
"opacity": {
|
||||||
|
"inherited": false,
|
||||||
|
"initial": 1
|
||||||
|
},
|
||||||
"overflow": {
|
"overflow": {
|
||||||
"longhands": [
|
"longhands": [
|
||||||
"overflow-x",
|
"overflow-x",
|
||||||
|
|
|
@ -229,6 +229,18 @@ Optional<int> StyleProperties::z_index() const
|
||||||
return static_cast<int>(value.value()->to_length().raw_value());
|
return static_cast<int>(value.value()->to_length().raw_value());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Optional<float> StyleProperties::opacity() const
|
||||||
|
{
|
||||||
|
auto value = property(CSS::PropertyID::Opacity);
|
||||||
|
if (!value.has_value())
|
||||||
|
return {};
|
||||||
|
|
||||||
|
if (auto length = value.value()->to_length(); length.is_percentage())
|
||||||
|
return clamp(static_cast<float>(length.raw_value() / 100), 0.0f, 1.0f);
|
||||||
|
else
|
||||||
|
return clamp(static_cast<float>(length.raw_value()), 0.0f, 1.0f);
|
||||||
|
}
|
||||||
|
|
||||||
Optional<CSS::FlexDirection> StyleProperties::flex_direction() const
|
Optional<CSS::FlexDirection> StyleProperties::flex_direction() const
|
||||||
{
|
{
|
||||||
auto value = property(CSS::PropertyID::FlexDirection);
|
auto value = property(CSS::PropertyID::FlexDirection);
|
||||||
|
|
|
@ -56,6 +56,7 @@ public:
|
||||||
Optional<CSS::FlexBasisData> flex_basis() const;
|
Optional<CSS::FlexBasisData> flex_basis() const;
|
||||||
Optional<float> flex_grow_factor() const;
|
Optional<float> flex_grow_factor() const;
|
||||||
Optional<float> flex_shrink_factor() const;
|
Optional<float> flex_shrink_factor() const;
|
||||||
|
Optional<float> opacity() const;
|
||||||
Optional<CSS::JustifyContent> justify_content() const;
|
Optional<CSS::JustifyContent> justify_content() const;
|
||||||
Optional<CSS::Overflow> overflow_x() const;
|
Optional<CSS::Overflow> overflow_x() const;
|
||||||
Optional<CSS::Overflow> overflow_y() const;
|
Optional<CSS::Overflow> overflow_y() const;
|
||||||
|
|
|
@ -327,6 +327,9 @@ void NodeWithStyle::apply_style(const CSS::StyleProperties& specified_style)
|
||||||
computed_values.set_background_color(specified_style.color_or_fallback(CSS::PropertyID::BackgroundColor, document(), Color::Transparent));
|
computed_values.set_background_color(specified_style.color_or_fallback(CSS::PropertyID::BackgroundColor, document(), Color::Transparent));
|
||||||
|
|
||||||
computed_values.set_z_index(specified_style.z_index());
|
computed_values.set_z_index(specified_style.z_index());
|
||||||
|
computed_values.set_opacity(specified_style.opacity());
|
||||||
|
if (computed_values.opacity() == 0)
|
||||||
|
m_visible = false;
|
||||||
|
|
||||||
if (auto width = specified_style.property(CSS::PropertyID::Width); width.has_value())
|
if (auto width = specified_style.property(CSS::PropertyID::Width); width.has_value())
|
||||||
m_has_definite_width = true;
|
m_has_definite_width = true;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue