/* 
   Project: coevolutionary GP moto driving
   Dana Vrajitoru
   gl_interface.h
   
   Some functions to manage the interaction with the OpenGL window.
*/
 
#ifndef GL_INTERFACE_H
#define GL_INTERFACE_H

#include <GL/glut.h>

// Call the display for both windows.
void render();

// Main OpenGL function that is called whenever an event occurs.
void display();

// OpenGL function that is called to redisplay the small overview
// window.
void display_sml();

// Spins the entire scene by 2 degrees about selected axis.
void spin_objects();

// Moves all of the objects that are animated in the scene.
void move_objects();

// Mouse callback, selects an axis about which to rotate. When the
// appropriate mouse button is pushed, it starts to spin the scene and
// when the mouse button is released, the spinning stops.
void mouse(int btn, int state, int x, int y);

// A good view of the motorcycle.
void default_view();

// A view from above
void overview();

// Callback for the keyboard. The arrow keys move the entire scene on
// x and y. The page up and page down keys move the scene on z.
void key(int key, int x, int y);

// Callback for ASCII keyboard characters.
void skey(unsigned char key, int x, int y);

// To be called whenever the window is resized.
void my_reshape(int w, int h);

// Initialize the light settings.
void light_init();

// A simple test for the driver animation
void test_driver();

// Initialize all of the objects to be drawn.
void scene_init();

// Initialize the objects to be drawn on the small window
void draw_small();

#endif
