summaryrefslogtreecommitdiff
path: root/AnimationRender/F_Interpolate.h
blob: 90b1eaf3df1c2d5fc646f8fc9592a4e4ebfc1b78 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#ifndef F_INTERPOLATE
#define F_INTERPOLATE

#include "FrameCallback.h"
#include "../FrameRender/P_Square.h"
#include "../FrameRender/P_Circle.h"
#include "../FrameRender/P_Checker.h"
#include "../FrameRender/P_Image.h"
#include "../FrameRender/P_LineSegment.h"
#include "../FrameRender/P_TransformCenter.h"
#include "../FrameRender/P_TransformRotate.h"

typedef void (*f_interpolate)(void* value, const void* start, const void* end, double progress);

typedef struct Interpolate {
	f_interpolate interpolate;
	void* value;
	const void* startValue;
	const void* endValue;
} Interpolate;

FrameCallback* Interpolate_setup(Interpolate obj);

void Interpolate_Square(Square* value, const Square* start, const Square* end, double progress);
void Interpolate_Circle(Circle* value, const Circle* start, const Circle* end, double progress);
void Interpolate_Checker(Checker* value, const Checker* start, const Checker* end, double progress);
void Interpolate_Image(Image* value, const Image* start, const Image* end, double progress);
void Interpolate_LineSegment(LineSegment* value, const LineSegment* start, const LineSegment* end, double progress);

void Interpolate_TransformCenter(TransformCenter* value, const TransformCenter* start, const TransformCenter* end, double progress);
void Interpolate_TransformRotate(TransformRotate* value, const TransformRotate* start, const TransformRotate* end, double progress);

#endif /* F_INTERPOLATE */