borgware-2d/src/simulator/trackball.h

100 lines
2.0 KiB
C

/**
* \addtogroup unixsimulator
*/
/*@{*/
/**
* Simple trackball-like motion adapted (ripped off) from projtex.c
* (written by David Yu and David Blythe). See the SIGGRAPH '96
* Advanced OpenGL course notes.
*
*
* Usage:
*
* o call tbInit() in before any other tb call
* o call tbReshape() from the reshape callback
* o call tbMatrix() to get the trackball matrix rotation
* o call tbStartMotion() to begin trackball movememt
* o call tbStopMotion() to stop trackball movememt
* o call tbMotion() from the motion callback
* o call tbAnimate(GL_TRUE) if you want the trackball to continue
* spinning after the mouse button has been released
* o call tbAnimate(GL_FALSE) if you want the trackball to stop
* spinning after the mouse button has been released
*
* Typical setup:
*
*
* void
* init(void)
* {
* tbInit(GLUT_MIDDLE_BUTTON);
* tbAnimate(GL_TRUE);
* . . .
* }
*
* void
* reshape(int width, int height)
* {
* tbReshape(width, height);
* . . .
* }
*
* void
* display(void)
* {
* glPushMatrix();
*
* tbMatrix();
* . . . draw the scene . . .
*
* glPopMatrix();
* }
*
* void
* mouse(int button, int state, int x, int y)
* {
* tbMouse(button, state, x, y);
* . . .
* }
*
* void
* motion(int x, int y)
* {
* tbMotion(x, y);
* . . .
* }
*
* int
* main(int argc, char** argv)
* {
* . . .
* init();
* glutReshapeFunc(reshape);
* glutDisplayFunc(display);
* glutMouseFunc(mouse);
* glutMotionFunc(motion);
* . . .
* }
*
* @file trackball.h
* @brief Header file for helper functions for the UNIX platform Borg simulator.
* @author Martin Ongsiek, David Yu, David Blythe
*/
/* functions */
void tbInit(GLuint button);
void tbMatrix(void);
void tbReshape(int width, int height);
void tbMouse(int button, int state, int x, int y);
void tbMotion(int x, int y);
void tbAnimate(GLboolean animate);
/*@}*/