use new intro module
[rdex:client.git] / src / rdex.h
1 /* =====================================================================
2 rdex -- reaction-diffusion explorer
3 Copyright (C) 2008,2009,2010  Claude Heiland-Allen <claudiusmaximus@goto10.org>
4 ------------------------------------------------------------------------
5 Main Module
6 ===================================================================== */
7
8 #ifndef RDEX_H
9 #define RDEX_H 1
10
11 #include <time.h>
12 #include <GL/glew.h>
13 #include <GL/glut.h>
14
15 #include "reactiondiffusion.h"
16 #include "copysquare.h"
17 #include "arithmeticmean.h"
18 #include "numericerror.h"
19 #include "difference.h"
20 #include "falsecolour.h"
21 #include "library.h"
22 #include "screenshot.h"
23 #include "audio.h"
24 #include "sequence.h"
25 #include "intro.h"
26
27 //======================================================================
28 // configuration
29 #define rdex_tex_size 256
30 // FIXME: breakage will occur when rdex_count % rdex_overdrive != 0
31 // FIXME: check audio when audioHz % videoHz != 0
32 // FIXME: check audio when overdrive % (audioHz / videoHz) != 0
33 #define rdex_count 96
34 // FIXME optimal overdrive depends on sample rate!
35 //   14   * 25 * 126 = 44100
36 //   16   * 25 * 120 = 48000
37 #define rdex_overdrive (AUDIO_COUNT * 2)
38 //#define rdex_videoHz 33
39
40 enum rdex_mode {
41   mode_random = 100, mode_sequence
42 };
43
44 //======================================================================
45 // main module data
46 struct rdex {
47   struct reactiondiffusion reactiondiffusion;
48   struct copysquare        copysquare;
49   struct arithmeticmean    arithmeticmean;
50   struct numericerror      numericerror;
51   struct difference        difference;
52   struct falsecolour       falsecolour;
53   struct library           library;
54   struct screenshot        screenshot;
55   struct audio             audio;
56   struct sequence          sequence;
57   struct intro             intro;
58   GLuint fbo;
59   time_t starttime;
60   struct timespec clock0, clock1;
61   unsigned int frame;
62   unsigned int framedrops;
63   unsigned int species;
64   unsigned int uniform;
65   unsigned int stable;
66   unsigned int dynamic;
67   unsigned int erratic;
68   int done;
69   int fullscreen;
70   char *behaviour;
71   enum rdex_mode mode;
72   int nrt;
73   // timing statistics
74   double sum1, sumdt, sumdt2;
75 };
76
77 //======================================================================
78 // prototypes
79 int rdex_init(void);
80 void rdex_reshape(int w, int h);
81 void rdex_display(void);
82 void rdex_atexit(void);
83 void rdex_timer(int v);
84 //void rdex_idle();
85 void rdex_pmotion(int x, int y);
86 void rdex_amotion(int x, int y);
87 void rdex_keynormal(unsigned char key, int x, int y);
88 void rdex_keyspecial(int key, int x, int y);
89
90 #endif