/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. * Random number generator wrapper for faster random number.
  5. */
  6. #ifdef _WIN32PC
  7. #define inline __inline
  8. #ifndef M_PI
  9. #define M_PI 3.14159265358979323846
  10. #endif
  11. #define random rand
  12. #define bzero(x,y) memset(x,0,y)
  13. #endif
  14. #define GOOM_NB_RAND 0x10000
  15. typedef struct _GOOM_RANDOM {
  16. int array[GOOM_NB_RAND];
  17. unsigned short pos;
  18. } GoomRandom;
  19. GoomRandom *goom_random_init(int i);
  20. void goom_random_free(GoomRandom *grandom);
  21. inline static int goom_random(GoomRandom *grandom) {
  22. grandom->pos++; /* works because pos is an unsigned short */
  23. return grandom->array[grandom->pos];
  24. }
  25. inline static int goom_irand(GoomRandom *grandom, int i) {
  26. grandom->pos++;
  27. return grandom->array[grandom->pos] % i;
  28. }
  29. /* called to change the specified number of value in the array, so that the array does not remain the same*/
  30. void goom_random_update_array(GoomRandom *grandom, int numberOfValuesToChange);
  31. #endif