PageRenderTime 19ms CodeModel.GetById 8ms app.highlight 6ms RepoModel.GetById 2ms app.codeStats 0ms

/xbmc/visualizations/Goom/goom2k4-0/src/goom_tools.h

http://github.com/xbmc/xbmc
C++ Header | 42 lines | 27 code | 11 blank | 4 comment | 0 complexity | 17c766990329405b7e92ede7860e80e5 MD5 | raw file
 1#ifndef _GOOMTOOLS_H
 2#define _GOOMTOOLS_H
 3
 4/**
 5 * Random number generator wrapper for faster random number.
 6 */
 7
 8#ifdef _WIN32PC
 9#define inline __inline
10#ifndef M_PI
11#define M_PI 3.14159265358979323846
12#endif
13#define random rand
14#define bzero(x,y) memset(x,0,y)
15#endif
16
17#define GOOM_NB_RAND 0x10000
18
19typedef struct _GOOM_RANDOM {
20	int array[GOOM_NB_RAND];
21	unsigned short pos;
22} GoomRandom;
23
24GoomRandom *goom_random_init(int i);
25void goom_random_free(GoomRandom *grandom);
26
27inline static int goom_random(GoomRandom *grandom) {
28	
29	grandom->pos++; /* works because pos is an unsigned short */
30	return grandom->array[grandom->pos];
31}
32
33inline static int goom_irand(GoomRandom *grandom, int i) {
34
35	grandom->pos++;
36	return grandom->array[grandom->pos] % i;
37}
38
39/* called to change the specified number of value in the array, so that the array does not remain the same*/
40void goom_random_update_array(GoomRandom *grandom, int numberOfValuesToChange);
41
42#endif