From 50d600686c74fe2042d3d653427561b8832d5f70 Mon Sep 17 00:00:00 2001 From: Ludovic Pouzenc Date: Sat, 26 May 2012 17:43:24 +0000 Subject: Ajout vu meters GTK git-svn-id: file:///var/svn/2012-violon-leds/trunk@5 6be1fa4d-33ac-4c33-becc-79fcb3794bb6 --- tests/test4/compute.c | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 tests/test4/compute.c (limited to 'tests/test4/compute.c') diff --git a/tests/test4/compute.c b/tests/test4/compute.c new file mode 100644 index 0000000..91a5455 --- /dev/null +++ b/tests/test4/compute.c @@ -0,0 +1,42 @@ +#include "compute.h" + +void function audio2hsv_1(gint audio_level, gint *light_h, gint *light_s, gint *light_v) { + // Dummy code + *light_h=-audio_level; + *light_s=audio_level; + *light_v=65535; +} + + +void hsv2rgb(gint h, gint s, gint v, gint *r, gint *g, gint *b) { + /* + * Purpose: + * Convert HSV values to RGB values + * All values are in the range [0..65535] + */ + float F, M, N, K; + int I; + + if ( s == 0 ) { + /* + * Achromatic case, set level of grey + */ + *r = v; + *g = v; + *b = v; + } else { + I = (int) h/(65535/6); /* should be in the range 0..5 */ + F = h - I; /* fractional part */ + + M = v * (1 - s); + N = v * (1 - s * F); + K = v * (1 - s * (1 - F)); + + if (I == 0) { *r = v; *g = K; *b = M; } + if (I == 1) { *r = N; *g = v; *b = M; } + if (I == 2) { *r = M; *g = v; *b = K; } + if (I == 3) { *r = M; *g = N; *b = v; } + if (I == 4) { *r = K; *g = M; *b = v; } + if (I == 5) { *r = v; *g = M; *b = N; } + } +} -- cgit v1.2.3