dbf-udg

annotate libs/dsys2/dsys.h @ 12:1abbed71e9c9

cleanup, copyright statements and notices, readme files
author John Tsiombikas <nuclear@member.fsf.org>
date Wed, 20 Feb 2013 05:45:27 +0200
parents 5f99c4c7a9fe
children
rev   line source
nuclear@12 1 /*
nuclear@12 2 New demosystem by Nuclear / Mindlapse
nuclear@12 3 Copyright (C) 2011-2013 John Tsiombikas <nuclear@member.fsf.org>
nuclear@12 4
nuclear@12 5 This program is free software: you can redistribute it and/or modify
nuclear@12 6 it under the terms of the GNU General Public License as published by
nuclear@12 7 the Free Software Foundation, either version 3 of the License, or
nuclear@12 8 (at your option) any later version.
nuclear@12 9
nuclear@12 10 This program is distributed in the hope that it will be useful,
nuclear@12 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
nuclear@12 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
nuclear@12 13 GNU General Public License for more details.
nuclear@12 14
nuclear@12 15 You should have received a copy of the GNU General Public License
nuclear@12 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
nuclear@12 17 */
nuclear@9 18 #ifndef DSYS2_H_
nuclear@9 19 #define DSYS2_H_
nuclear@9 20
nuclear@9 21 #include <stdio.h>
nuclear@9 22
nuclear@9 23 struct dsys_demo;
nuclear@9 24 struct dsys_event;
nuclear@9 25
nuclear@9 26 typedef float demotime_t;
nuclear@9 27
nuclear@9 28 enum dsys_evtype {
nuclear@9 29 DSYS_SINGLE,
nuclear@9 30 DSYS_PERIODIC
nuclear@9 31 };
nuclear@9 32
nuclear@9 33 #ifdef __cplusplus
nuclear@9 34 extern "C" {
nuclear@9 35 #endif
nuclear@9 36
nuclear@9 37 struct dsys_demo *dsys_open(const char *fname);
nuclear@9 38 struct dsys_demo *dsys_open_stream(FILE *fp);
nuclear@9 39 void dsys_close(struct dsys_demo *demo);
nuclear@9 40
nuclear@9 41 void dsys_update(struct dsys_demo *demo, demotime_t tm);
nuclear@9 42
nuclear@9 43
nuclear@9 44 void dsys_start(struct dsys_demo *demo);
nuclear@9 45 void dsys_stop(struct dsys_demo *demo);
nuclear@9 46 int dsys_is_running(struct dsys_demo *demo);
nuclear@9 47
nuclear@9 48
nuclear@9 49 demotime_t dsys_duration(struct dsys_demo *demo);
nuclear@9 50 demotime_t dsys_time(struct dsys_demo *demo);
nuclear@9 51 float dsys_progress(struct dsys_demo *demo);
nuclear@9 52
nuclear@9 53 /* seek without continuity */
nuclear@9 54 void dsys_seek(struct dsys_demo *demo, demotime_t tm);
nuclear@9 55 void dsys_seek_norm(struct dsys_demo *demo, float t);
nuclear@9 56
nuclear@9 57 /* seek by accelerating time */
nuclear@9 58 void dsys_warp(struct dsys_demo *demo, demotime_t tm);
nuclear@9 59 void dsys_warp_norm(struct dsys_demo *demo, float t);
nuclear@9 60
nuclear@9 61
nuclear@9 62 /* events */
nuclear@9 63 struct dsys_event *dsys_event(struct dsys_demo *demo, const char *name);
nuclear@9 64
nuclear@11 65 void dsys_set_event_eval(struct dsys_event *ev, float (*eval)(struct dsys_event*, demotime_t));
nuclear@11 66
nuclear@9 67 enum dsys_evtype dsys_event_type(struct dsys_event *ev);
nuclear@9 68 float dsys_event_value(struct dsys_event *ev);
nuclear@9 69
nuclear@9 70 int dsys_event_callback(struct dsys_event *ev, void (*func)(struct dsys_event*, void*), void *cls);
nuclear@9 71 int dsys_event_link(struct dsys_event *ev, float *link);
nuclear@9 72
nuclear@9 73 /* event evaluators */
nuclear@9 74 float dsys_eval_step(struct dsys_event *ev, demotime_t t);
nuclear@9 75 float dsys_eval_lerp(struct dsys_event *ev, demotime_t t);
nuclear@9 76 float dsys_eval_sigmoid(struct dsys_event *ev, demotime_t t);
nuclear@9 77
nuclear@9 78 /* time conversion */
nuclear@9 79 demotime_t dsys_sec_to_dtime(float sec);
nuclear@9 80 demotime_t dsys_msec_to_dtime(unsigned long msec);
nuclear@9 81
nuclear@9 82 float dsys_dtime_to_sec(demotime_t tm);
nuclear@9 83 unsigned long dsys_dtime_to_msec(demotime_t tm);
nuclear@9 84
nuclear@9 85 #ifdef __cplusplus
nuclear@9 86 }
nuclear@9 87 #endif
nuclear@9 88
nuclear@9 89
nuclear@9 90 #endif /* DSYS2_H_ */