bf3eaa617e0e67c060dc4a276aedea24113d63f6
[dosdemo] / src / demo.h
1 #ifndef DEMO_H_
2 #define DEMO_H_
3
4 #include "inttypes.h"
5
6 extern int fb_width, fb_height, fb_bpp;
7 extern uint16_t *fb_pixels;     /* system-RAM pixel buffer: use swap_buffers(fb_pixels) */
8 /* video memory pointers. might both point to the front buffer if there is not
9  * enough memory for page flipping. use swap_buffers(0) to flip. */
10 extern uint16_t *vmem_back, *vmem_front;
11
12 extern unsigned long time_msec;
13 extern int mouse_x, mouse_y;
14 extern unsigned int mouse_bmask;
15
16 enum {
17         MOUSE_BN_LEFT           = 1,
18         MOUSE_BN_RIGHT          = 2,
19         MOUSE_BN_MIDDLE         = 4
20 };
21
22 extern float sball_matrix[16];
23
24 int demo_init(int argc, char **argv);
25 void demo_cleanup(void);
26
27 void demo_draw(void);
28
29 void demo_keyboard(int key, int press);
30
31
32 /* defined in main_*.c */
33 void demo_quit(void);
34 unsigned long get_msec(void);
35 void set_palette(int idx, int r, int g, int b);
36
37 /* pass 0 to just swap vmem_back/vmem_front with page flipping
38  * pass a pointer to a system-ram pixel buffer to copy it to vmem_front,
39  * instead of flipping.
40  */
41 void swap_buffers(void *pixels);
42
43 /* call each frame to get 3D viewing spherical coordinates */
44 void mouse_orbit_update(float *theta, float *phi, float *dist);
45
46 void draw_mouse_pointer(uint16_t *fb);
47
48 #endif  /* DEMO_H_ */