1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_ANIMATION_CSS_CSS_TIMING_DATA_H_ 6 #define THIRD_PARTY_BLINK_RENDERER_CORE_ANIMATION_CSS_CSS_TIMING_DATA_H_ 7 8 #include "third_party/blink/renderer/platform/animation/timing_function.h" 9 #include "third_party/blink/renderer/platform/heap/handle.h" 10 #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" 11 #include "third_party/blink/renderer/platform/wtf/vector.h" 12 13 namespace blink { 14 15 struct Timing; 16 17 class CSSTimingData { 18 USING_FAST_MALLOC(CSSTimingData); 19 20 public: 21 ~CSSTimingData() = default; 22 DelayList()23 const Vector<double>& DelayList() const { return delay_list_; } DurationList()24 const Vector<double>& DurationList() const { return duration_list_; } TimingFunctionList()25 const Vector<scoped_refptr<TimingFunction>>& TimingFunctionList() const { 26 return timing_function_list_; 27 } 28 DelayList()29 Vector<double>& DelayList() { return delay_list_; } DurationList()30 Vector<double>& DurationList() { return duration_list_; } TimingFunctionList()31 Vector<scoped_refptr<TimingFunction>>& TimingFunctionList() { 32 return timing_function_list_; 33 } 34 InitialDelay()35 static double InitialDelay() { return 0; } InitialDuration()36 static double InitialDuration() { return 0; } InitialTimingFunction()37 static scoped_refptr<TimingFunction> InitialTimingFunction() { 38 return CubicBezierTimingFunction::Preset( 39 CubicBezierTimingFunction::EaseType::EASE); 40 } 41 42 template <class T> GetRepeated(const Vector<T> & v,size_t index)43 static const T& GetRepeated(const Vector<T>& v, size_t index) { 44 return v[index % v.size()]; 45 } 46 47 protected: 48 CSSTimingData(); 49 explicit CSSTimingData(const CSSTimingData&); 50 51 Timing ConvertToTiming(size_t index) const; 52 bool TimingMatchForStyleRecalc(const CSSTimingData&) const; 53 54 private: 55 Vector<double> delay_list_; 56 Vector<double> duration_list_; 57 Vector<scoped_refptr<TimingFunction>> timing_function_list_; 58 }; 59 60 } // namespace blink 61 62 #endif // THIRD_PARTY_BLINK_RENDERER_CORE_ANIMATION_CSS_CSS_TIMING_DATA_H_ 63