58 lines
1.9 KiB
C
58 lines
1.9 KiB
C
#include "v4k.h"
|
|
|
|
struct {
|
|
float (*ease)(float);
|
|
const char *name;
|
|
} easings[] = {
|
|
{ease_linear, "ease_linear"},
|
|
{ease_out_sine, "ease_out_sine"},
|
|
{ease_out_quad, "ease_out_quad"},
|
|
{ease_out_cubic, "ease_out_cubic"},
|
|
{ease_out_quart, "ease_out_quart"},
|
|
{ease_out_quint, "ease_out_quint"},
|
|
{ease_out_expo, "ease_out_expo"},
|
|
{ease_out_circ, "ease_out_circ"},
|
|
{ease_out_back, "ease_out_back"},
|
|
{ease_out_elastic, "ease_out_elastic"},
|
|
{ease_out_bounce, "ease_out_bounce"},
|
|
{ease_in_sine, "ease_in_sine"},
|
|
{ease_in_quad, "ease_in_quad"},
|
|
{ease_in_cubic, "ease_in_cubic"},
|
|
{ease_in_quart, "ease_in_quart"},
|
|
{ease_in_quint, "ease_in_quint"},
|
|
{ease_in_expo, "ease_in_expo"},
|
|
{ease_in_circ, "ease_in_circ"},
|
|
{ease_in_back, "ease_in_back"},
|
|
{ease_in_elastic, "ease_in_elastic"},
|
|
{ease_in_bounce, "ease_in_bounce"},
|
|
{ease_inout_sine, "ease_inout_sine"},
|
|
{ease_inout_quad, "ease_inout_quad"},
|
|
{ease_inout_cubic, "ease_inout_cubic"},
|
|
{ease_inout_quart, "ease_inout_quart"},
|
|
{ease_inout_quint, "ease_inout_quint"},
|
|
{ease_inout_expo, "ease_inout_expo"},
|
|
{ease_inout_circ, "ease_inout_circ"},
|
|
{ease_inout_back, "ease_inout_back"},
|
|
{ease_inout_elastic, "ease_inout_elastic"},
|
|
{ease_inout_bounce, "ease_inout_bounce"},
|
|
{ease_inout_perlin, "ease_inout_perlin"},
|
|
};
|
|
|
|
int main() {
|
|
window_create(0.75, WINDOW_SQUARE);
|
|
while(window_swap()) {
|
|
static double timer = 0; timer = fmod(timer+window_delta(), 2); // loops every 2s
|
|
|
|
static int open = 1;
|
|
if( ui_window("ease", &open) ) {
|
|
float linear_delta = timer / 2.f; // delta is [0..1]
|
|
for( int i = 0; i < countof(easings); ++i) {
|
|
float nonlinear_delta = easings[i].ease(linear_delta);
|
|
// visualize
|
|
ui_slider( easings[i].name, &nonlinear_delta );
|
|
}
|
|
ui_window_end();
|
|
}
|
|
}
|
|
}
|