/**
 * Copyright (c) 2021 Dominic Masters
 * 
 * This software is released under the MIT License.
 * https://opensource.org/licenses/MIT
 */
#pragma once
#include "dawnlibs.hpp"

typedef float_t easefunction_t(const float_t t);

/**
 * Returns the ease time for a given real time duration span.
 * @param start At what point in time the animation started
 * @param current The current point in time the animation is at.
 * @param duration The total duration on the animation.
 * @returns The easing time (0-1 time) that the animation is at.
 */
float_t easeTimeToEase(
  const float_t start,
  const float_t current,
  const float_t duration
);

float_t easeLinear(const float_t t);
float_t easeInQuad(const float_t t);
float_t easeOutQuad(const float_t t);
float_t easeOutCubic(const float_t t);
float_t easeInOutQuad(const float_t t);
float_t easeInCubic(const float_t t);
float_t easeInOutCubic(const float_t t);
float_t easeInQuart(const float_t t);
float_t easeOutQuart(const float_t t);
float_t easeInOutQuart(const float_t t);
float_t easeInQuint(const float_t t);
float_t easeOutQuint(const float_t t);
float_t easeInOutQuint(const float_t t);