1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
/*
* glgdCam.h
*
* OpenGL Graph Display camera control module header file
*
* Written by: Shawn Taras
*/
#ifndef __GLGDCAM_H__
#define __GLGDCAM_H__
SCM_DECL_BEGIN
/*
* Enumerations
*/
typedef enum
{
GLGDCAM_MODE_NONE = 0,
GLGDCAM_MODE_ORBIT,
GLGDCAM_MODE_ZOOM,
GLGDCAM_MODE_PAN,
GLGDCAM_MODE_COUNT
} glgdCamMode;
/*
* Defines
*/
#define GLGDCAM_FLAG_INITIALIZED (0x0001)
/*
* Type Definitions
*/
typedef struct _glgdCam
{
GLbitfield flags;
glgdMatrix projMtx;
glgdQuat camRot;
GLdouble camPos[3];
GLdouble mouseLast[2];
GLdouble tanFOV[2];
GLdouble winDim[2];
} glgdCam;
typedef GLboolean (*glgdCamCtrlFn)(glgdCam *cam);
/*
* Module API
*/
GLboolean glgdCamInit(glgdCam *cam);
GLboolean glgdCamBegin(glgdCam *cam);
GLboolean glgdCamBeginPick(glgdCam *cam, GLdouble mx, GLdouble my);
GLboolean glgdCamUpdate(glgdCam *cam, glgdCamMode mode,
GLdouble mx, GLdouble my, GLdouble frameTime);
GLboolean glgdCamEnd(glgdCam *cam);
GLboolean glgdCamWinDimSet(glgdCam *cam, GLdouble w, GLdouble h);
GLboolean glgdCamPosSet(glgdCam *cam, GLdouble x, GLdouble y, GLdouble z);
GLboolean glgdCamRotSet(glgdCam *cam, glgdQuat qrot);
GLboolean glgdCamMouseSet(glgdCam *cam, GLdouble mx, GLdouble my);
GLboolean glgdCamFrameWidth(glgdCam *cam,
GLdouble left, GLdouble right,
GLdouble bottom, GLdouble top);
GLboolean glgdCamFrameHeight(glgdCam *cam,
GLdouble left, GLdouble right,
GLdouble bottom, GLdouble top);
GLboolean glgdCamFrame(glgdCam *cam,
GLdouble left, GLdouble right,
GLdouble bottom, GLdouble top);
GLboolean glgdCamPerspective(glgdCam *cam,
GLdouble fovy, GLdouble aspect,
GLdouble zNear, GLdouble zFar);
GLboolean glgdCamFrustum(glgdCam *cam,
GLdouble left, GLdouble right,
GLdouble bottom, GLdouble top,
GLdouble zNear, GLdouble zFar);
GLboolean glgdCamOrtho(glgdCam *cam,
GLdouble left, GLdouble right,
GLdouble bottom, GLdouble top,
GLdouble zNear, GLdouble zFar);
/*
* Camera control functions
*/
GLboolean glgdCamCtrlMaya(glgdCam *cam);
GLboolean glgdCamCtrl3DSMax(glgdCam *cam);
SCM_DECL_END
#endif /* __GLGDCAM_H__ */
|