diff options
Diffstat (limited to 'src/VBox/GuestHost/OpenGL/include/cr_matrix.h')
-rw-r--r-- | src/VBox/GuestHost/OpenGL/include/cr_matrix.h | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/src/VBox/GuestHost/OpenGL/include/cr_matrix.h b/src/VBox/GuestHost/OpenGL/include/cr_matrix.h new file mode 100644 index 00000000..7bc2c9d9 --- /dev/null +++ b/src/VBox/GuestHost/OpenGL/include/cr_matrix.h @@ -0,0 +1,96 @@ + +#ifndef CR_MATRIX_H +#define CR_MATRIX_H + +#include "chromium.h" + +#include <iprt/cdefs.h> + +/* + * Note: m[col][row] matches OpenGL's column-major memory layout + */ +typedef struct { + float m00, m01, m02, m03; + float m10, m11, m12, m13; + float m20, m21, m22, m23; + float m30, m31, m32, m33; +} CRmatrix; + +typedef struct { GLfloat x,y,z,w; } GLvectorf; +typedef struct { GLdouble x,y,z,w; } GLvectord; + +#ifdef __cplusplus +extern "C" { +#endif + +extern DECLEXPORT(void) +crMatrixInit(CRmatrix *m); + +extern DECLEXPORT(void) +crMatrixInitFromString(CRmatrix *m, const char *s); + +extern DECLEXPORT(void) +crMatrixInitFromFloats(CRmatrix *m, const float *v); + +extern DECLEXPORT(void) +crMatrixInitFromDoubles(CRmatrix *m, const double *v); + +extern DECLEXPORT(void) +crMatrixPrint(const char *msg, const CRmatrix *m); + +extern DECLEXPORT(void) +crMatrixGetFloats(float *values, const CRmatrix *m); + +extern DECLEXPORT(int) +crMatrixIsEqual(const CRmatrix *m, const CRmatrix *n); + +extern DECLEXPORT(int) +crMatrixIsIdentity(const CRmatrix *m); + +extern DECLEXPORT(int) +crMatrixIsOrthographic(const CRmatrix *m); + +extern DECLEXPORT(void) +crMatrixCopy(CRmatrix *dest, const CRmatrix *src); + +extern DECLEXPORT(void) +crMatrixMultiply(CRmatrix *p, const CRmatrix *a, const CRmatrix *b); + +extern DECLEXPORT(void) +crMatrixTransformPointf(const CRmatrix *m, GLvectorf *p); + +extern DECLEXPORT(void) +crMatrixTransformPointd(const CRmatrix *m, GLvectord *p); + +extern DECLEXPORT(void) +crMatrixInvertTranspose(CRmatrix *inv, const CRmatrix *mat); + +extern DECLEXPORT(void) +crMatrixTranspose(CRmatrix *t, const CRmatrix *m); + +extern DECLEXPORT(void) +crMatrixTranslate(CRmatrix *m, float x, float y, float z); + +extern DECLEXPORT(void) +crMatrixRotate(CRmatrix *m, float angle, float x, float y, float z); + +extern DECLEXPORT(void) +crMatrixScale(CRmatrix *m, float x, float y, float z); + +extern DECLEXPORT(void) +crMatrixFrustum(CRmatrix *m, + float left, float right, + float bottom, float top, + float zNear, float zFar); + +extern DECLEXPORT(void) +crMatrixOrtho(CRmatrix *m, + float left, float right, + float bottom, float top, + float znear, float zfar); + +#ifdef __cplusplus +} +#endif + +#endif |