• Home
  • Raw
  • Download

Lines Matching refs:mat

111 #define TEST_MAT_FLAGS(mat, a)  \  argument
112 ((MAT_FLAGS_GEOMETRY & (~(a)) & ((mat)->flags) ) == 0)
214 static void matrix_multf( GLmatrix *mat, const GLfloat *m, GLuint flags ) in matrix_multf() argument
216 mat->flags |= (flags | MAT_DIRTY_TYPE | MAT_DIRTY_INVERSE); in matrix_multf()
218 if (TEST_MAT_FLAGS(mat, MAT_FLAGS_3D)) in matrix_multf()
219 matmul34( mat->m, mat->m, m ); in matrix_multf()
221 matmul4( mat->m, mat->m, m ); in matrix_multf()
352 static GLboolean invert_matrix_general( GLmatrix *mat ) in invert_matrix_general() argument
354 const GLfloat *m = mat->m; in invert_matrix_general()
355 GLfloat *out = mat->inv; in invert_matrix_general()
480 static GLboolean invert_matrix_3d_general( GLmatrix *mat ) in invert_matrix_3d_general() argument
482 const GLfloat *in = mat->m; in invert_matrix_3d_general()
483 GLfloat *out = mat->inv; in invert_matrix_3d_general()
552 static GLboolean invert_matrix_3d( GLmatrix *mat ) in invert_matrix_3d() argument
554 const GLfloat *in = mat->m; in invert_matrix_3d()
555 GLfloat *out = mat->inv; in invert_matrix_3d()
557 if (!TEST_MAT_FLAGS(mat, MAT_FLAGS_ANGLE_PRESERVING)) { in invert_matrix_3d()
558 return invert_matrix_3d_general( mat ); in invert_matrix_3d()
561 if (mat->flags & MAT_FLAG_UNIFORM_SCALE) { in invert_matrix_3d()
582 else if (mat->flags & MAT_FLAG_ROTATION) { in invert_matrix_3d()
603 if (mat->flags & MAT_FLAG_TRANSLATION) { in invert_matrix_3d()
632 static GLboolean invert_matrix_identity( GLmatrix *mat ) in invert_matrix_identity() argument
634 memcpy( mat->inv, Identity, sizeof(Identity) ); in invert_matrix_identity()
648 static GLboolean invert_matrix_3d_no_rot( GLmatrix *mat ) in invert_matrix_3d_no_rot() argument
650 const GLfloat *in = mat->m; in invert_matrix_3d_no_rot()
651 GLfloat *out = mat->inv; in invert_matrix_3d_no_rot()
661 if (mat->flags & MAT_FLAG_TRANSLATION) { in invert_matrix_3d_no_rot()
681 static GLboolean invert_matrix_2d_no_rot( GLmatrix *mat ) in invert_matrix_2d_no_rot() argument
683 const GLfloat *in = mat->m; in invert_matrix_2d_no_rot()
684 GLfloat *out = mat->inv; in invert_matrix_2d_no_rot()
693 if (mat->flags & MAT_FLAG_TRANSLATION) { in invert_matrix_2d_no_rot()
703 static GLboolean invert_matrix_perspective( GLmatrix *mat )
705 const GLfloat *in = mat->m;
706 GLfloat *out = mat->inv;
732 typedef GLboolean (*inv_mat_func)( GLmatrix *mat );
766 static GLboolean matrix_invert( GLmatrix *mat ) in matrix_invert() argument
768 if (inv_mat_tab[mat->type](mat)) { in matrix_invert()
769 mat->flags &= ~MAT_FLAG_SINGULAR; in matrix_invert()
772 mat->flags |= MAT_FLAG_SINGULAR; in matrix_invert()
773 memcpy( mat->inv, Identity, sizeof(Identity) ); in matrix_invert()
794 _math_matrix_rotate( GLmatrix *mat, in _math_matrix_rotate() argument
960 matrix_multf( mat, m, MAT_FLAG_ROTATION ); in _math_matrix_rotate()
978 _math_matrix_frustum( GLmatrix *mat, in _math_matrix_frustum() argument
1000 matrix_multf( mat, m, MAT_FLAG_PERSPECTIVE ); in _math_matrix_frustum()
1018 _math_matrix_ortho( GLmatrix *mat, in _math_matrix_ortho() argument
1047 matrix_multf( mat, m, (MAT_FLAG_GENERAL_SCALE|MAT_FLAG_TRANSLATION)); in _math_matrix_ortho()
1064 _math_matrix_scale( GLmatrix *mat, GLfloat x, GLfloat y, GLfloat z ) in _math_matrix_scale() argument
1066 GLfloat *m = mat->m; in _math_matrix_scale()
1073 mat->flags |= MAT_FLAG_UNIFORM_SCALE; in _math_matrix_scale()
1075 mat->flags |= MAT_FLAG_GENERAL_SCALE; in _math_matrix_scale()
1077 mat->flags |= (MAT_DIRTY_TYPE | in _math_matrix_scale()
1094 _math_matrix_translate( GLmatrix *mat, GLfloat x, GLfloat y, GLfloat z ) in _math_matrix_translate() argument
1096 GLfloat *m = mat->m; in _math_matrix_translate()
1102 mat->flags |= (MAT_FLAG_TRANSLATION | in _math_matrix_translate()
1136 _math_matrix_set_identity( GLmatrix *mat ) in _math_matrix_set_identity() argument
1138 memcpy( mat->m, Identity, 16*sizeof(GLfloat) ); in _math_matrix_set_identity()
1139 memcpy( mat->inv, Identity, 16*sizeof(GLfloat) ); in _math_matrix_set_identity()
1141 mat->type = MATRIX_IDENTITY; in _math_matrix_set_identity()
1142 mat->flags &= ~(MAT_DIRTY_FLAGS| in _math_matrix_set_identity()
1201 static void analyse_from_scratch( GLmatrix *mat ) in analyse_from_scratch() argument
1203 const GLfloat *m = mat->m; in analyse_from_scratch()
1216 mat->flags &= ~MAT_FLAGS_GEOMETRY; in analyse_from_scratch()
1221 mat->flags |= MAT_FLAG_TRANSLATION; in analyse_from_scratch()
1226 mat->type = MATRIX_IDENTITY; in analyse_from_scratch()
1229 mat->type = MATRIX_2D_NO_ROT; in analyse_from_scratch()
1232 mat->flags |= MAT_FLAG_GENERAL_SCALE; in analyse_from_scratch()
1239 mat->type = MATRIX_2D; in analyse_from_scratch()
1244 mat->flags |= MAT_FLAG_GENERAL_SCALE; in analyse_from_scratch()
1248 mat->flags |= MAT_FLAG_GENERAL_3D; in analyse_from_scratch()
1250 mat->flags |= MAT_FLAG_ROTATION; in analyse_from_scratch()
1254 mat->type = MATRIX_3D_NO_ROT; in analyse_from_scratch()
1260 mat->flags |= MAT_FLAG_UNIFORM_SCALE; in analyse_from_scratch()
1264 mat->flags |= MAT_FLAG_GENERAL_SCALE; in analyse_from_scratch()
1274 mat->type = MATRIX_3D; in analyse_from_scratch()
1279 mat->flags |= MAT_FLAG_UNIFORM_SCALE; in analyse_from_scratch()
1283 mat->flags |= MAT_FLAG_GENERAL_SCALE; in analyse_from_scratch()
1291 mat->flags |= MAT_FLAG_ROTATION; in analyse_from_scratch()
1293 mat->flags |= MAT_FLAG_GENERAL_3D; in analyse_from_scratch()
1296 mat->flags |= MAT_FLAG_GENERAL_3D; /* shear, etc */ in analyse_from_scratch()
1300 mat->type = MATRIX_PERSPECTIVE; in analyse_from_scratch()
1301 mat->flags |= MAT_FLAG_GENERAL; in analyse_from_scratch()
1304 mat->type = MATRIX_GENERAL; in analyse_from_scratch()
1305 mat->flags |= MAT_FLAG_GENERAL; in analyse_from_scratch()
1314 static void analyse_from_flags( GLmatrix *mat ) in analyse_from_flags() argument
1316 const GLfloat *m = mat->m; in analyse_from_flags()
1318 if (TEST_MAT_FLAGS(mat, 0)) { in analyse_from_flags()
1319 mat->type = MATRIX_IDENTITY; in analyse_from_flags()
1321 else if (TEST_MAT_FLAGS(mat, (MAT_FLAG_TRANSLATION | in analyse_from_flags()
1325 mat->type = MATRIX_2D_NO_ROT; in analyse_from_flags()
1328 mat->type = MATRIX_3D_NO_ROT; in analyse_from_flags()
1331 else if (TEST_MAT_FLAGS(mat, MAT_FLAGS_3D)) { in analyse_from_flags()
1335 mat->type = MATRIX_2D; in analyse_from_flags()
1338 mat->type = MATRIX_3D; in analyse_from_flags()
1345 mat->type = MATRIX_PERSPECTIVE; in analyse_from_flags()
1348 mat->type = MATRIX_GENERAL; in analyse_from_flags()
1363 _math_matrix_analyse( GLmatrix *mat ) in _math_matrix_analyse() argument
1365 if (mat->flags & MAT_DIRTY_TYPE) { in _math_matrix_analyse()
1366 if (mat->flags & MAT_DIRTY_FLAGS) in _math_matrix_analyse()
1367 analyse_from_scratch( mat ); in _math_matrix_analyse()
1369 analyse_from_flags( mat ); in _math_matrix_analyse()
1372 if (mat->inv && (mat->flags & MAT_DIRTY_INVERSE)) { in _math_matrix_analyse()
1373 matrix_invert( mat ); in _math_matrix_analyse()
1374 mat->flags &= ~MAT_DIRTY_INVERSE; in _math_matrix_analyse()
1377 mat->flags &= ~(MAT_DIRTY_FLAGS | MAT_DIRTY_TYPE); in _math_matrix_analyse()
1455 _math_matrix_loadf( GLmatrix *mat, const GLfloat *m ) in _math_matrix_loadf() argument
1457 memcpy( mat->m, m, 16*sizeof(GLfloat) ); in _math_matrix_loadf()
1458 mat->flags = (MAT_FLAG_GENERAL | MAT_DIRTY); in _math_matrix_loadf()