Lines Matching refs:mat
83 static INLINE void matrix_init(struct matrix *mat, in matrix_init() argument
86 memcpy(mat->m, val, sizeof(VGfloat) * 9); in matrix_init()
89 static INLINE void matrix_inits(struct matrix *mat, in matrix_inits() argument
94 mat->m[0] = m11; mat->m[1] = m12; mat->m[2] = m13; in matrix_inits()
95 mat->m[3] = m21; mat->m[4] = m22; mat->m[5] = m23; in matrix_inits()
96 mat->m[6] = m31; mat->m[7] = m32; mat->m[8] = m33; in matrix_inits()
152 static INLINE void matrix_map_point(struct matrix *mat, in matrix_map_point() argument
160 *out_x = mat->m[0]*tmp_x + mat->m[3]*tmp_y + mat->m[6]; in matrix_map_point()
161 *out_y = mat->m[1]*tmp_x + mat->m[4]*tmp_y + mat->m[7]; in matrix_map_point()
162 if (!matrix_is_affine(mat)) { in matrix_map_point()
163 VGfloat w = 1/(mat->m[2]*tmp_x + mat->m[5]*tmp_y + mat->m[8]); in matrix_map_point()
212 struct matrix mat; in matrix_rotate() local
230 matrix_load_identity(&mat); in matrix_rotate()
231 mat.m[0] = cos_val; mat.m[1] = sin_val; in matrix_rotate()
232 mat.m[3] = -sin_val; mat.m[4] = cos_val; in matrix_rotate()
234 matrix_mult(dst, &mat); in matrix_rotate()
246 static INLINE VGfloat matrix_determinant(struct matrix *mat) in matrix_determinant() argument
248 return mat->m[0]*(mat->m[8]*mat->m[4]-mat->m[7]*mat->m[5]) - in matrix_determinant()
249 mat->m[3]*(mat->m[8]*mat->m[1]-mat->m[7]*mat->m[2])+ in matrix_determinant()
250 mat->m[6]*(mat->m[5]*mat->m[1]-mat->m[4]*mat->m[2]); in matrix_determinant()
254 static INLINE void matrix_adjoint(struct matrix *mat) in matrix_adjoint() argument
257 h[0] = mat->m[4]*mat->m[8] - mat->m[5]*mat->m[7]; in matrix_adjoint()
258 h[3] = mat->m[5]*mat->m[6] - mat->m[3]*mat->m[8]; in matrix_adjoint()
259 h[6] = mat->m[3]*mat->m[7] - mat->m[4]*mat->m[6]; in matrix_adjoint()
260 h[1] = mat->m[2]*mat->m[7] - mat->m[1]*mat->m[8]; in matrix_adjoint()
261 h[4] = mat->m[0]*mat->m[8] - mat->m[2]*mat->m[6]; in matrix_adjoint()
262 h[7] = mat->m[1]*mat->m[6] - mat->m[0]*mat->m[7]; in matrix_adjoint()
263 h[2] = mat->m[1]*mat->m[5] - mat->m[2]*mat->m[4]; in matrix_adjoint()
264 h[5] = mat->m[2]*mat->m[3] - mat->m[0]*mat->m[5]; in matrix_adjoint()
265 h[8] = mat->m[0]*mat->m[4] - mat->m[1]*mat->m[3]; in matrix_adjoint()
268 memcpy(mat->m, h, sizeof(VGfloat) * 9); in matrix_adjoint()
271 static INLINE void matrix_divs(struct matrix *mat, in matrix_divs() argument
274 mat->m[0] /= s; in matrix_divs()
275 mat->m[1] /= s; in matrix_divs()
276 mat->m[2] /= s; in matrix_divs()
277 mat->m[3] /= s; in matrix_divs()
278 mat->m[4] /= s; in matrix_divs()
279 mat->m[5] /= s; in matrix_divs()
280 mat->m[6] /= s; in matrix_divs()
281 mat->m[7] /= s; in matrix_divs()
282 mat->m[8] /= s; in matrix_divs()
285 static INLINE VGboolean matrix_invert(struct matrix *mat) in matrix_invert() argument
287 VGfloat det = matrix_determinant(mat); in matrix_invert()
292 matrix_adjoint(mat); in matrix_invert()
293 matrix_divs(mat, det); in matrix_invert()
297 static INLINE VGboolean matrix_is_invertible(struct matrix *mat) in matrix_is_invertible() argument
299 return !floatIsZero(matrix_determinant(mat)); in matrix_is_invertible()
307 struct matrix *mat) in matrix_square_to_quad() argument
314 matrix_inits(mat, in matrix_square_to_quad()
343 matrix_inits(mat, in matrix_square_to_quad()
356 struct matrix *mat) in matrix_quad_to_square() argument
360 mat)) in matrix_quad_to_square()
363 return matrix_invert(mat); in matrix_quad_to_square()
375 struct matrix *mat) in matrix_quad_to_quad() argument
381 mat)) in matrix_quad_to_quad()
389 matrix_mult(mat, &sqr_to_qd); in matrix_quad_to_quad()