# HG changeset patch # User John Tsiombikas # Date 1314917820 -10800 # Node ID 94ce16dd20c0d684dbf6bc89b841927e3ad6e352 # Parent 95f010f7eadc718c51bbe1553b1aa49ced8dd9c5 foo diff -r 95f010f7eadc -r 94ce16dd20c0 Makefile --- a/Makefile Thu Sep 01 07:55:22 2011 +0300 +++ b/Makefile Fri Sep 02 01:57:00 2011 +0300 @@ -8,8 +8,14 @@ AR = ar CFLAGS = -pedantic -Wall -g -Isrc +ifeq ($(shell uname -s), Darwin) + libgl = -framework OpenGL -framework GLUT +else + libgl = -lGL -lGLU -lglut +endif + test: test.o $(lib_a) - $(CC) $(CFLAGS) -o $@ test.o $(lib_a) -lGL -lGLU -lglut -lm + $(CC) $(CFLAGS) -o $@ test.o $(lib_a) $(libgl) -lm $(lib_a): $(obj) $(AR) rcs $@ $(obj) diff -r 95f010f7eadc -r 94ce16dd20c0 src/dsys.c --- a/src/dsys.c Thu Sep 01 07:55:22 2011 +0300 +++ b/src/dsys.c Fri Sep 02 01:57:00 2011 +0300 @@ -8,10 +8,6 @@ static int read_script(struct dsys_demo *demo, FILE *fp, const char *fname); -static float eval_step(struct dsys_event *ev, demotime_t t); -static float eval_lerp(struct dsys_event *ev, demotime_t t); -static float eval_sigmoid(struct dsys_event *ev, demotime_t t); - static void free_event(struct dsys_event *ev); static struct dsys_event *sort_evlist(struct dsys_event *list, int num_ev); @@ -130,12 +126,12 @@ if(!(ev->name = malloc(strlen(tok) + 1))) { free(ev); - sprintf("read_script: failed to allocate memory for the event name: %s\n", tok); + fprintf(stderr, "read_script: failed to allocate memory for the event name: %s\n", tok); return -1; } strcpy(ev->name, tok); - ev->eval_func = t0 == t1 ? eval_step : eval_lerp; + ev->eval_func = t0 == t1 ? dsys_eval_step : dsys_eval_lerp; ev->next = demo->evlist; ev->prev = 0; @@ -230,12 +226,33 @@ /* events */ -struct dsys_event *dsys_event(struct dsys_demo *demo, const char *name); +struct dsys_event *dsys_event(struct dsys_demo *demo, const char *name) +{ + struct dsys_event *iter = demo->evlist; -enum dsys_evtype dsys_event_type(struct dsys_event *ev); -float dsys_event_value(struct dsys_event *ev); + while(iter) { + if(strcmp(iter->name, name) == 0) { + return iter; + } + iter = iter->next; + } + return 0; +} -void dsys_event_callback(struct dsys_event *ev, void (*func)(void*), void *cls); +enum dsys_evtype dsys_event_type(struct dsys_event *ev) +{ + return ev->type; +} + +float dsys_event_value(struct dsys_event *ev) +{ + return ev->value; +} + +void dsys_event_callback(struct dsys_event *ev, void (*func)(void*), void *cls) +{ +} + void dsys_event_link(struct dsys_event *ev, float *link); @@ -261,19 +278,19 @@ } -static float eval_step(struct dsys_event *ev, demotime_t t) +float dsys_eval_step(struct dsys_event *ev, demotime_t t) { return t >= ev->t1 ? 1.0 : 0.0; } -static float eval_lerp(struct dsys_event *ev, demotime_t t) +float dsys_eval_lerp(struct dsys_event *ev, demotime_t t) { return (t - ev->t0) / (ev->t1 - ev->t0); } -static float eval_sigmoid(struct dsys_event *ev, demotime_t t) +float dsys_eval_sigmoid(struct dsys_event *ev, demotime_t t) { - t = eval_lerp(ev, t); + t = dsys_eval_lerp(ev, t); return 1.0 - (cos(t * M_PI) * 0.5 + 0.5); } diff -r 95f010f7eadc -r 94ce16dd20c0 src/dsys2.h --- a/src/dsys2.h Thu Sep 01 07:55:22 2011 +0300 +++ b/src/dsys2.h Fri Sep 02 01:57:00 2011 +0300 @@ -48,6 +48,10 @@ void dsys_event_callback(struct dsys_event *ev, void (*func)(void*), void *cls); void dsys_event_link(struct dsys_event *ev, float *link); +/* event evaluators */ +float dsys_eval_step(struct dsys_event *ev, demotime_t t); +float dsys_eval_lerp(struct dsys_event *ev, demotime_t t); +float dsys_eval_sigmoid(struct dsys_event *ev, demotime_t t); /* time conversion */ demotime_t dsys_sec_to_dtime(float sec);