libglez/ftgl/mat4.h
2017-12-07 17:07:55 +03:00

64 lines
1.5 KiB
C++

/* Freetype GL - A C OpenGL Freetype engine
*
* Distributed under the OSI-approved BSD 2-Clause License. See accompanying
* file `LICENSE` for more details.
*/
#ifndef __MAT4_H__
#define __MAT4_H__
#ifdef __cplusplus
extern "C" {
namespace ftgl
{
#endif
/**
*
*/
typedef union {
float data[16]; /**< All compoments at once */
struct
{
float m00, m01, m02, m03;
float m10, m11, m12, m13;
float m20, m21, m22, m23;
float m30, m31, m32, m33;
};
} mat4;
mat4 *mat4_new(void);
void mat4_set_identity(mat4 *self);
void mat4_set_zero(mat4 *self);
void mat4_multiply(mat4 *self, mat4 *other);
void mat4_set_orthographic(mat4 *self, float left, float right, float bottom,
float top, float znear, float zfar);
void mat4_set_perspective(mat4 *self, float fovy, float aspect, float zNear,
float zFar);
void mat4_set_frustum(mat4 *self, float left, float right, float bottom,
float top, float znear, float zfar);
void mat4_set_rotation(mat4 *self, float angle, float x, float y, float z);
void mat4_set_translation(mat4 *self, float x, float y, float z);
void mat4_set_scaling(mat4 *self, float x, float y, float z);
void mat4_rotate(mat4 *self, float angle, float x, float y, float z);
void mat4_translate(mat4 *self, float x, float y, float z);
void mat4_scale(mat4 *self, float x, float y, float z);
#ifdef __cplusplus
}
}
#endif
#endif /* __MAT4_H__ */