summaryrefslogtreecommitdiffstats
path: root/src/VBox/GuestHost/OpenGL/include/cr_matrix.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/VBox/GuestHost/OpenGL/include/cr_matrix.h')
-rw-r--r--src/VBox/GuestHost/OpenGL/include/cr_matrix.h96
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