#ifndef UI_GFX_ANIMATION_KEYFRAME_KEYFRAMED_ANIMATION_CURVE_INL_H_
#define UI_GFX_ANIMATION_KEYFRAME_KEYFRAMED_ANIMATION_CURVE_INL_H_
namespace {
template <class KeyframeType>
void InsertKeyframe(std::unique_ptr<KeyframeType> keyframe,
std::vector<std::unique_ptr<KeyframeType>>* keyframes) { … }
struct TimeValues { … };
template <typename KeyframeType>
TimeValues GetTimeValues(const KeyframeType& start_frame,
const KeyframeType& end_frame,
double scaled_duration,
base::TimeDelta time) { … }
template <typename KeyframeType>
base::TimeDelta TransformedAnimationTime(
const std::vector<std::unique_ptr<KeyframeType>>& keyframes,
const std::unique_ptr<gfx::TimingFunction>& timing_function,
double scaled_duration,
base::TimeDelta time,
gfx::TimingFunction::LimitDirection limit_direction) { … }
template <typename KeyframeType>
size_t GetActiveKeyframe(
const std::vector<std::unique_ptr<KeyframeType>>& keyframes,
double scaled_duration,
base::TimeDelta time) { … }
template <typename KeyframeType>
double TransformedKeyframeProgress(
const std::vector<std::unique_ptr<KeyframeType>>& keyframes,
double scaled_duration,
base::TimeDelta time,
gfx::TimingFunction::LimitDirection limit_direction,
size_t i) { … }
int GetTimingFunctionSteps(const gfx::TimingFunction* timing_function) { … }
template <class KeyframeType>
base::TimeDelta ComputeTickInterval(
const std::unique_ptr<gfx::TimingFunction>& timing_function,
double scaled_duration,
const std::vector<std::unique_ptr<KeyframeType>>& keyframes) { … }
struct KeyframesAndProgress { … };
template <typename KeyframeType>
KeyframesAndProgress GetKeyframesAndProgress(
const std::vector<std::unique_ptr<KeyframeType>>& keyframes,
const std::unique_ptr<gfx::TimingFunction>& timing_function,
double scaled_duration,
base::TimeDelta time,
gfx::TimingFunction::LimitDirection limit_direction) { … }
}
#endif