#pragma once

/**
 * \file Easing.h
 * \brief File containing mathematical functions and constants
 */

namespace blitz {
namespace utils {

/**
 * \brief Sine functions
 */

float EaseInSine(float x);
float EaseOutSine(float x);
float EaseInOutSine(float x);

/**
 * \brief Cubic functions
 */

float EaseInCubic(float x);
float EaseOutCubic(float x);
float EaseInOutCubic(float x);

/**
 * \brief Quint functions
 */

float EaseInQuint(float x);
float EaseOutQuint(float x);
float EaseInOutQuint(float x);

/**
 * \brief Circ functions
 */

float EaseInCirc(float x);
float EaseOutCirc(float x);
float EaseInOutCirc(float x);

/**
 * \brief Elastic functions
 */

float EaseInElastic(float x);
float EaseOutElastic(float x);
float EaseInOutElastic(float x);

/**
 * \brief Quad functions
 */

float EaseInQuad(float x);
float EaseOutQuad(float x);
float EaseInOutQuad(float x);

/**
 * \brief Quart functions
 */

float EaseInQuart(float x);
float EaseOutQuart(float x);
float EaseInOutQuart(float x);

/**
 * \brief Expo functions
 */

float EaseInExpo(float x);
float EaseOutExpo(float x);
float EaseInOutExpo(float x);

/**
 * \brief Back functions
 */

float EaseInBack(float x);
float EaseOutBack(float x);
float EaseInOutBack(float x);

/**
 * \brief Bounce functions
 */

float EaseInBounce(float x);
float EaseOutBounce(float x);
float EaseInOutBounce(float x);

}  // namespace utils
}  // namespace blitz
