From abeb492bebdd178862f2d52fe30515220d1c6508 Mon Sep 17 00:00:00 2001 From: Radka Haneckova Date: Sun, 2 Oct 2011 10:12:42 +0200 Subject: [PATCH] 4 new programs: green vs blue (a) and crossfades (s,d,f) --- host/ledbar.c | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/host/ledbar.c b/host/ledbar.c index c8acaf1..f109e45 100644 --- a/host/ledbar.c +++ b/host/ledbar.c @@ -236,6 +236,65 @@ void programP(int i, int t, double *r, double *g, double *b) } } +// green vs blue +void programA(int i, int t, double *r, double *g, double *b) +{ + static float pos = BOXES/2; + static float dir = 0.05; + *r = 0; + *g = max(1 - fabsl((pos-i)/BOXES)*4, 0); + *b = max(1 - fabsl(((BOXES-pos)-i)/BOXES)*4, 0); + pos += dir; + if (pos < 0 || pos > BOXES) dir = -dir; +} + +// crossfade rg +void programS(int i, int t, double *r, double *g, double *b) +{ + if (i%2==0) { + *r = (sin(((double)(t-100)/200)*(2*M_PI))+1)/2; + *g = (sin(((double)t/200)*(2*M_PI))+1)/2; + *b = 0; + } else { + *r = (sin(((double)t/400)*(2*M_PI))+1)/2; + *g = (sin(((double)(t-200)/400)*(2*M_PI))+1)/2; + *b = 0; + } + + +} + +// crossfade gb +void programD(int i, int t, double *r, double *g, double *b) +{ + if (i%2==0) { + *r = 0; + *g = (sin(((double)t/200)*(2*M_PI))+1)/2; + *b = (sin(((double)(t-100)/200)*(2*M_PI))+1)/2; + } else { + *r = 0; + *g = (sin(((double)(t-200)/400)*(2*M_PI))+1)/2; + *b = (sin(((double)t/400)*(2*M_PI))+1)/2; + } + + +} + +// crossfade rb +void programF(int i, int t, double *r, double *g, double *b) +{ + if (i%2==0) { + *r = (sin(((double)t/200)*(2*M_PI))+1)/2; + *g =0; + *b = (sin(((double)(t-100)/200)*(2*M_PI))+1)/2; + } else { + *r = (sin(((double)(t-200)/400)*(2*M_PI))+1)/2; + *g = 0; + *b = (sin(((double)t/400)*(2*M_PI))+1)/2; + } + + +} void drawScreen(SDL_Surface* screen, int t, FILE* fp) { @@ -325,6 +384,10 @@ int main(int argc, char* argv[]) case SDLK_i: program = programI; break; case SDLK_o: program = programO; break; case SDLK_p: program = programP; break; + case SDLK_a: program = programA; break; + case SDLK_s: program = programS; break; + case SDLK_d: program = programD; break; + case SDLK_f: program = programF; break; case SDLK_ESCAPE: quit = 1; break; default: break; }