/* * This is a GLUT (OpenGL Utility Toolkit) implementation of a Go interface, * and is used for all the Go examples. * * The purpose of this file is to hide all the GUI (Graphical User Interface) * details. * * The GLUT library is available on any system capable of running OpenGL. */ #include #include "Go.h" #define MAX_GLUT_CONTEXTS 16 class GoGlutInterface; class GlutContext { public: int winID; GoGlutInterface *interface; }; class GoGlutInterface { public: Go *go; GoGlutInterface(void); static void init(int *argc, char *argv[]); static void windowName(char *name); static void windowSize(int width, int height); static void windowPosition(int x, int y); static void mainLoop(void); void swap(void); void rerender(void); virtual void render(void); virtual void resized(int width, int height); virtual void keyTyped(char key); virtual void mousePressed(int x, int y); virtual void mouseReleased(int x, int y); virtual void mouseDragged(int x, int y); private: static char *name; static int width, height; static int x, y; static GlutContext glutContext[MAX_GLUT_CONTEXTS]; static int contextCount; static GoGlutInterface *getInterface(void); static void glutDisplayFunction(void); static void glutReshapeFunction(int width, int height); static void glutKeyboardFunction(unsigned char key, int xMouse, int yMouse); static void glutMouseFunction(int button, int state, int xMouse, int yMouse); static void glutMotionFunction(int xMouse, int yMouse); };