#ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_ANIMATION_TIMING_FUNCTION_H_
#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_ANIMATION_TIMING_FUNCTION_H_
#include <vector>
#include "base/check_op.h"
#include "base/memory/scoped_refptr.h"
#include "base/notreached.h"
#include "base/ranges/algorithm.h"
#include "third_party/blink/renderer/platform/platform_export.h"
#include "third_party/blink/renderer/platform/wtf/casting.h"
#include "third_party/blink/renderer/platform/wtf/std_lib_extras.h"
#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
#include "third_party/blink/renderer/platform/wtf/thread_safe_ref_counted.h"
#include "ui/gfx/animation/keyframe/timing_function.h"
namespace blink {
class PLATFORM_EXPORT TimingFunction
: public ThreadSafeRefCounted<TimingFunction> { … };
class PLATFORM_EXPORT LinearTimingFunction final : public TimingFunction { … };
class PLATFORM_EXPORT CubicBezierTimingFunction final : public TimingFunction { … };
class PLATFORM_EXPORT StepsTimingFunction final : public TimingFunction { … };
PLATFORM_EXPORT scoped_refptr<TimingFunction>
CreateCompositorTimingFunctionFromCC(const gfx::TimingFunction*);
PLATFORM_EXPORT bool operator==(const LinearTimingFunction&,
const TimingFunction&);
PLATFORM_EXPORT bool operator==(const CubicBezierTimingFunction&,
const TimingFunction&);
PLATFORM_EXPORT bool operator==(const StepsTimingFunction&,
const TimingFunction&);
PLATFORM_EXPORT bool operator==(const TimingFunction&, const TimingFunction&);
PLATFORM_EXPORT bool operator!=(const TimingFunction&, const TimingFunction&);
template <>
struct DowncastTraits<LinearTimingFunction> { … };
template <>
struct DowncastTraits<CubicBezierTimingFunction> { … };
template <>
struct DowncastTraits<StepsTimingFunction> { … };
}
#endif