mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-10-21 23:50:06 +00:00
This excludes `step-end` and `step-start` which are expected to be converted to the equivalent function at parse time. We are expected to serialize these as the explicit keywords - previously we would parse as `EasingStyleValue` and serialize equivalent functions as the keywords. This caused issues as we would incorrectly serialize even explicit functions as the keyword. This also allows us to move the magic easing functions to `EasingFunction` rather than `EasingStyleValue` which is a bit tidier
51 lines
1.5 KiB
C++
51 lines
1.5 KiB
C++
/*
|
|
* Copyright (c) 2024, Matthew Olsson <mattco@serenityos.org>.
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <LibWeb/CSS/CalculatedOr.h>
|
|
#include <LibWeb/CSS/StyleValues/CustomIdentStyleValue.h>
|
|
#include <LibWeb/CSS/StyleValues/StyleValue.h>
|
|
#include <LibWeb/CSS/Time.h>
|
|
|
|
namespace Web::CSS {
|
|
|
|
class TransitionStyleValue final : public StyleValueWithDefaultOperators<TransitionStyleValue> {
|
|
public:
|
|
struct Transition {
|
|
ValueComparingRefPtr<StyleValue const> property_name;
|
|
TimeOrCalculated duration { CSS::Time::make_seconds(0.0) };
|
|
TimeOrCalculated delay { CSS::Time::make_seconds(0.0) };
|
|
ValueComparingRefPtr<StyleValue const> easing;
|
|
TransitionBehavior transition_behavior { TransitionBehavior::Normal };
|
|
|
|
bool operator==(Transition const&) const = default;
|
|
};
|
|
|
|
static ValueComparingNonnullRefPtr<TransitionStyleValue const> create(Vector<Transition> transitions)
|
|
{
|
|
return adopt_ref(*new (nothrow) TransitionStyleValue(move(transitions)));
|
|
}
|
|
|
|
virtual ~TransitionStyleValue() override = default;
|
|
|
|
auto const& transitions() const { return m_transitions; }
|
|
|
|
virtual String to_string(SerializationMode) const override;
|
|
|
|
bool properties_equal(TransitionStyleValue const& other) const;
|
|
|
|
private:
|
|
explicit TransitionStyleValue(Vector<Transition> transitions)
|
|
: StyleValueWithDefaultOperators(Type::Transition)
|
|
, m_transitions(move(transitions))
|
|
{
|
|
}
|
|
|
|
Vector<Transition> m_transitions;
|
|
};
|
|
|
|
}
|