diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/core/animation/timing.h')
-rw-r--r-- | chromium/third_party/blink/renderer/core/animation/timing.h | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/chromium/third_party/blink/renderer/core/animation/timing.h b/chromium/third_party/blink/renderer/core/animation/timing.h index cb00ec731ed..4ef4abf7811 100644 --- a/chromium/third_party/blink/renderer/core/animation/timing.h +++ b/chromium/third_party/blink/renderer/core/animation/timing.h @@ -34,6 +34,7 @@ #include "base/memory/scoped_refptr.h" #include "third_party/abseil-cpp/absl/types/optional.h" #include "third_party/blink/renderer/core/animation/animation_time_delta.h" +#include "third_party/blink/renderer/core/css/cssom/css_numeric_value.h" #include "third_party/blink/renderer/core/style/data_equivalency.h" #include "third_party/blink/renderer/platform/animation/compositor_keyframe_model.h" #include "third_party/blink/renderer/platform/animation/timing_function.h" @@ -101,13 +102,6 @@ struct CORE_EXPORT Timing { DCHECK(timing_function); } - // https://drafts.csswg.org/web-animations-1/#iteration-duration - AnimationTimeDelta IterationDuration() const; - - // https://drafts.csswg.org/web-animations-1/#active-duration - AnimationTimeDelta ActiveDuration() const; - AnimationTimeDelta EndTimeInternal() const; - Timing::FillMode ResolvedFillMode(bool is_animation) const; EffectTiming* ConvertToEffectTiming() const; @@ -133,6 +127,10 @@ struct CORE_EXPORT Timing { } bool HasTimingOverrides() { return timing_overrides != kOverrideNode; } + V8CSSNumberish* ToComputedValue(absl::optional<AnimationTimeDelta>, + absl::optional<AnimationTimeDelta>) const; + + // TODO(crbug.com/1216527): Support CSSNumberish delays AnimationTimeDelta start_delay; AnimationTimeDelta end_delay; FillMode fill_mode = FillMode::AUTO; @@ -165,13 +163,31 @@ struct CORE_EXPORT Timing { AnimationTimeDelta time_to_next_iteration = AnimationTimeDelta::Max(); }; + // Normalized values contain specified timing values after normalizing to + // timeline. + struct NormalizedTiming { + DISALLOW_NEW(); + // Value used in normalization math. Stored so that we can convert back if + // needed. + absl::optional<AnimationTimeDelta> timeline_duration; + AnimationTimeDelta start_delay; + AnimationTimeDelta end_delay; + AnimationTimeDelta iteration_duration; + // Calculated as (iteration_duration * iteration_count) + AnimationTimeDelta active_duration; + // Calculated as (start_delay + active_duration + end_delay) + AnimationTimeDelta end_time; + }; + CalculatedTiming CalculateTimings( absl::optional<AnimationTimeDelta> local_time, absl::optional<Phase> timeline_phase, + const NormalizedTiming& normalized_timing, AnimationDirection animation_direction, bool is_keyframe_effect, absl::optional<double> playback_rate) const; ComputedEffectTiming* getComputedTiming(const CalculatedTiming& calculated, + const NormalizedTiming& normalized, bool is_keyframe_effect) const; }; |