rev |
line source |
nuclear@9
|
1 #ifndef DSYS2_H_
|
nuclear@9
|
2 #define DSYS2_H_
|
nuclear@9
|
3
|
nuclear@9
|
4 #include <stdio.h>
|
nuclear@9
|
5
|
nuclear@9
|
6 struct dsys_demo;
|
nuclear@9
|
7 struct dsys_event;
|
nuclear@9
|
8
|
nuclear@9
|
9 typedef float demotime_t;
|
nuclear@9
|
10
|
nuclear@9
|
11 enum dsys_evtype {
|
nuclear@9
|
12 DSYS_SINGLE,
|
nuclear@9
|
13 DSYS_PERIODIC
|
nuclear@9
|
14 };
|
nuclear@9
|
15
|
nuclear@9
|
16 #ifdef __cplusplus
|
nuclear@9
|
17 extern "C" {
|
nuclear@9
|
18 #endif
|
nuclear@9
|
19
|
nuclear@9
|
20 struct dsys_demo *dsys_open(const char *fname);
|
nuclear@9
|
21 struct dsys_demo *dsys_open_stream(FILE *fp);
|
nuclear@9
|
22 void dsys_close(struct dsys_demo *demo);
|
nuclear@9
|
23
|
nuclear@9
|
24 void dsys_update(struct dsys_demo *demo, demotime_t tm);
|
nuclear@9
|
25
|
nuclear@9
|
26
|
nuclear@9
|
27 void dsys_start(struct dsys_demo *demo);
|
nuclear@9
|
28 void dsys_stop(struct dsys_demo *demo);
|
nuclear@9
|
29 int dsys_is_running(struct dsys_demo *demo);
|
nuclear@9
|
30
|
nuclear@9
|
31
|
nuclear@9
|
32 demotime_t dsys_duration(struct dsys_demo *demo);
|
nuclear@9
|
33 demotime_t dsys_time(struct dsys_demo *demo);
|
nuclear@9
|
34 float dsys_progress(struct dsys_demo *demo);
|
nuclear@9
|
35
|
nuclear@9
|
36 /* seek without continuity */
|
nuclear@9
|
37 void dsys_seek(struct dsys_demo *demo, demotime_t tm);
|
nuclear@9
|
38 void dsys_seek_norm(struct dsys_demo *demo, float t);
|
nuclear@9
|
39
|
nuclear@9
|
40 /* seek by accelerating time */
|
nuclear@9
|
41 void dsys_warp(struct dsys_demo *demo, demotime_t tm);
|
nuclear@9
|
42 void dsys_warp_norm(struct dsys_demo *demo, float t);
|
nuclear@9
|
43
|
nuclear@9
|
44
|
nuclear@9
|
45 /* events */
|
nuclear@9
|
46 struct dsys_event *dsys_event(struct dsys_demo *demo, const char *name);
|
nuclear@9
|
47
|
nuclear@11
|
48 void dsys_set_event_eval(struct dsys_event *ev, float (*eval)(struct dsys_event*, demotime_t));
|
nuclear@11
|
49
|
nuclear@9
|
50 enum dsys_evtype dsys_event_type(struct dsys_event *ev);
|
nuclear@9
|
51 float dsys_event_value(struct dsys_event *ev);
|
nuclear@9
|
52
|
nuclear@9
|
53 int dsys_event_callback(struct dsys_event *ev, void (*func)(struct dsys_event*, void*), void *cls);
|
nuclear@9
|
54 int dsys_event_link(struct dsys_event *ev, float *link);
|
nuclear@9
|
55
|
nuclear@9
|
56 /* event evaluators */
|
nuclear@9
|
57 float dsys_eval_step(struct dsys_event *ev, demotime_t t);
|
nuclear@9
|
58 float dsys_eval_lerp(struct dsys_event *ev, demotime_t t);
|
nuclear@9
|
59 float dsys_eval_sigmoid(struct dsys_event *ev, demotime_t t);
|
nuclear@9
|
60
|
nuclear@9
|
61 /* time conversion */
|
nuclear@9
|
62 demotime_t dsys_sec_to_dtime(float sec);
|
nuclear@9
|
63 demotime_t dsys_msec_to_dtime(unsigned long msec);
|
nuclear@9
|
64
|
nuclear@9
|
65 float dsys_dtime_to_sec(demotime_t tm);
|
nuclear@9
|
66 unsigned long dsys_dtime_to_msec(demotime_t tm);
|
nuclear@9
|
67
|
nuclear@9
|
68 #ifdef __cplusplus
|
nuclear@9
|
69 }
|
nuclear@9
|
70 #endif
|
nuclear@9
|
71
|
nuclear@9
|
72
|
nuclear@9
|
73 #endif /* DSYS2_H_ */
|