mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-12-07 21:59:54 +00:00
LibWeb: Promote animation-composition values to enum
This brings us in line with the other `animation-*` enum properties (`animation-play-state` and `animation-fill-mode`)
This commit is contained in:
parent
8854bb62c6
commit
18477b0d84
Notes:
github-actions[bot]
2025-10-27 09:49:39 +00:00
Author: https://github.com/Calme1709
Commit: 18477b0d84
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/6585
Reviewed-by: https://github.com/AtkinsSJ ✅
5 changed files with 27 additions and 16 deletions
|
|
@ -936,4 +936,18 @@ void KeyframeEffect::update_computed_properties(AnimationUpdateContext& context)
|
|||
target->document().style_computer().collect_animation_into(abstract_element, *this, *computed_properties);
|
||||
}
|
||||
|
||||
Bindings::CompositeOperation css_animation_composition_to_bindings_composite_operation(CSS::AnimationComposition composition)
|
||||
{
|
||||
switch (composition) {
|
||||
case CSS::AnimationComposition::Accumulate:
|
||||
return Bindings::CompositeOperation::Accumulate;
|
||||
case CSS::AnimationComposition::Add:
|
||||
return Bindings::CompositeOperation::Add;
|
||||
case CSS::AnimationComposition::Replace:
|
||||
return Bindings::CompositeOperation::Replace;
|
||||
default:
|
||||
VERIFY_NOT_REACHED();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,6 +25,8 @@ struct KeyframeEffectOptions : public EffectTiming {
|
|||
Optional<String> pseudo_element {};
|
||||
};
|
||||
|
||||
Bindings::CompositeOperation css_animation_composition_to_bindings_composite_operation(CSS::AnimationComposition composition);
|
||||
|
||||
// https://www.w3.org/TR/web-animations-1/#dictdef-basepropertyindexedkeyframe
|
||||
// Note: This is an intermediate structure used only when parsing Keyframes provided by the caller in a slightly
|
||||
// different format. It is converted to BaseKeyframe, which is why it doesn't need to store the parsed properties
|
||||
|
|
|
|||
|
|
@ -71,6 +71,11 @@
|
|||
"self-inline",
|
||||
"width"
|
||||
],
|
||||
"animation-composition": [
|
||||
"replace",
|
||||
"add",
|
||||
"accumulate"
|
||||
],
|
||||
"animation-direction": [
|
||||
"alternate",
|
||||
"alternate-reverse",
|
||||
|
|
|
|||
|
|
@ -237,10 +237,8 @@
|
|||
"animation-type": "none",
|
||||
"inherited": false,
|
||||
"initial": "replace",
|
||||
"valid-identifiers": [
|
||||
"replace",
|
||||
"add",
|
||||
"accumulate"
|
||||
"valid-types": [
|
||||
"animation-composition"
|
||||
]
|
||||
},
|
||||
"animation-delay": {
|
||||
|
|
|
|||
|
|
@ -1247,18 +1247,10 @@ static void apply_animation_properties(DOM::Document& document, CascadedProperti
|
|||
if (auto timing_property = cascaded_properties.property(PropertyID::AnimationTimingFunction); timing_property && (timing_property->is_easing() || (timing_property->is_keyword() && !timing_property->is_css_wide_keyword())))
|
||||
timing_function = EasingFunction::from_style_value(timing_property.release_nonnull());
|
||||
|
||||
Bindings::CompositeOperation composite_operation { Bindings::CompositeOperation::Replace };
|
||||
AnimationComposition animation_composition { AnimationComposition::Replace };
|
||||
if (auto composite_property = cascaded_properties.property(PropertyID::AnimationComposition); composite_property) {
|
||||
switch (composite_property->to_keyword()) {
|
||||
case Keyword::Add:
|
||||
composite_operation = Bindings::CompositeOperation::Add;
|
||||
break;
|
||||
case Keyword::Accumulate:
|
||||
composite_operation = Bindings::CompositeOperation::Accumulate;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (auto animation_composition_value = keyword_to_animation_composition(composite_property->to_keyword()); animation_composition_value.has_value())
|
||||
animation_composition = *animation_composition_value;
|
||||
}
|
||||
|
||||
auto iteration_duration = duration.has_value()
|
||||
|
|
@ -1270,7 +1262,7 @@ static void apply_animation_properties(DOM::Document& document, CascadedProperti
|
|||
effect.set_timing_function(move(timing_function));
|
||||
effect.set_fill_mode(Animations::css_fill_mode_to_bindings_fill_mode(fill_mode));
|
||||
effect.set_playback_direction(Animations::css_animation_direction_to_bindings_playback_direction(direction));
|
||||
effect.set_composite(composite_operation);
|
||||
effect.set_composite(Animations::css_animation_composition_to_bindings_composite_operation(animation_composition));
|
||||
|
||||
if (play_state != effect.last_css_animation_play_state()) {
|
||||
if (play_state == CSS::AnimationPlayState::Running && animation.play_state() != Bindings::AnimationPlayState::Running) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue