Lines Matching refs:mat

195         SkMatrix mat;
196 mat.reset();
199 mat.postConcat(mats[x]);
202 SkScalar minScale = mat.getMinScale();
203 SkScalar maxScale = mat.getMaxScale();
205 REPORTER_ASSERT(reporter, (maxScale < 0) == mat.hasPerspective());
208 bool success = mat.getMinMaxScales(scales);
209 REPORTER_ASSERT(reporter, success == !mat.hasPerspective());
212 if (mat.hasPerspective()) {
231 mat.mapVectors(vectors, SK_ARRAY_COUNT(vectors));
249 SkMatrix mat;
252 mat.setIdentity();
253 REPORTER_ASSERT(reporter, mat.isSimilarity());
256 mat.reset();
257 mat.setTranslate(SkIntToScalar(100), SkIntToScalar(100));
258 REPORTER_ASSERT(reporter, mat.isSimilarity());
261 mat.reset();
262 mat.setScale(SkIntToScalar(15), SkIntToScalar(15));
263 REPORTER_ASSERT(reporter, mat.isSimilarity());
266 mat.reset();
267 mat.setScale(SkIntToScalar(-15), SkIntToScalar(15));
268 REPORTER_ASSERT(reporter, mat.isSimilarity());
271 mat.reset();
272 mat.setScale(SkIntToScalar(15), SkIntToScalar(20));
273 REPORTER_ASSERT(reporter, !mat.isSimilarity());
276 mat.reset();
277 mat.setScale(SkIntToScalar(15), SkIntToScalar(15),
279 REPORTER_ASSERT(reporter, mat.isSimilarity());
282 mat.reset();
283 mat.setScale(SkIntToScalar(15), SkIntToScalar(20),
285 REPORTER_ASSERT(reporter, !mat.isSimilarity());
288 mat.reset();
289 mat.setSkew(SkIntToScalar(15), SkIntToScalar(15));
290 REPORTER_ASSERT(reporter, !mat.isSimilarity());
293 mat.reset();
294 mat.setSkew(SkIntToScalar(15), SkIntToScalar(20));
295 REPORTER_ASSERT(reporter, !mat.isSimilarity());
298 mat.reset();
299 mat.setSkew(SkIntToScalar(15), SkIntToScalar(15),
301 REPORTER_ASSERT(reporter, !mat.isSimilarity());
304 mat.reset();
305 mat.setSkew(SkIntToScalar(15), SkIntToScalar(20),
307 REPORTER_ASSERT(reporter, !mat.isSimilarity());
310 mat.reset();
311 mat.setPerspX(SkScalarToPersp(SK_Scalar1 / 2));
312 REPORTER_ASSERT(reporter, !mat.isSimilarity());
315 mat.reset();
316 mat.setPerspY(SkScalarToPersp(SK_Scalar1 / 2));
317 REPORTER_ASSERT(reporter, !mat.isSimilarity());
321 mat.reset();
322 mat.setRotate(SkIntToScalar(angle));
323 REPORTER_ASSERT(reporter, mat.isSimilarity());
327 mat.reset();
329 mat.postRotate(SkIntToScalar(1));
331 REPORTER_ASSERT(reporter, mat.isSimilarity());
334 mat.reset();
335 mat.setRotate(SkIntToScalar(30));
336 mat.postTranslate(SkIntToScalar(10), SkIntToScalar(20));
337 REPORTER_ASSERT(reporter, mat.isSimilarity());
340 mat.reset();
341 mat.setRotate(SkIntToScalar(30));
342 mat.postScale(SkIntToScalar(2), SkIntToScalar(2));
343 REPORTER_ASSERT(reporter, mat.isSimilarity());
346 mat.reset();
347 mat.setRotate(SkIntToScalar(30));
348 mat.postScale(SkIntToScalar(3), SkIntToScalar(2));
349 REPORTER_ASSERT(reporter, !mat.isSimilarity());
352 mat.setAll(0, 0, 0, 0, 0, 0, 0, 0, 0);
353 REPORTER_ASSERT(reporter, !mat.isSimilarity());
356 mat.setAll(0, 0, 0, 0, 0, 0, 0, 0, SK_Scalar1);
357 REPORTER_ASSERT(reporter, !mat.isSimilarity());
360 mat.setAll(0, SK_Scalar1, 0,
363 REPORTER_ASSERT(reporter, mat.isSimilarity());
388 static bool check_matrix_recomposition(const SkMatrix& mat,
400 bool result = scalar_nearly_equal_relative(mat[SkMatrix::kMScaleX],
402 scalar_nearly_equal_relative(mat[SkMatrix::kMSkewX],
404 scalar_nearly_equal_relative(mat[SkMatrix::kMSkewY],
406 scalar_nearly_equal_relative(mat[SkMatrix::kMScaleY],
412 SkMatrix mat;
421 mat.reset();
422 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
423 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
425 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, NULL, NULL, NULL));
428 mat.setRotate(kRotation0);
429 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
430 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
433 mat.setScale(kScale0, kScale0);
434 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
435 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
438 mat.setScale(kScale1, kScale0);
439 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
440 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
443 mat.setRotate(kRotation1);
444 mat.postScale(kScale0, kScale0);
445 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
446 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
449 mat.setScale(kScale0, kScale0);
450 mat.postRotate(kRotation1);
451 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
452 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
455 mat.setRotate(kRotation0);
456 mat.postScale(kScale1, -kScale1);
457 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
458 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
461 mat.setScale(kScale0, -kScale0);
462 mat.postRotate(kRotation1);
463 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
464 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
467 mat.setRotate(kRotation1);
468 mat.postScale(kScale1, kScale0);
469 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
470 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
473 mat.setRotate(90);
474 mat.postScale(kScale1, kScale0);
475 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
476 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
479 mat.setScale(kScale1, kScale0);
480 mat.postRotate(kRotation0);
481 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
482 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
485 mat.setScale(kScale1, kScale0);
486 mat.postRotate(90);
487 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
488 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
491 mat.setRotate(kRotation1);
492 mat.postScale(kScale0, kScale0);
493 mat.postRotate(kRotation0);
494 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
495 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
498 mat.setRotate(kRotation0);
499 mat.postScale(kScale1, kScale0);
500 mat.postRotate(kRotation1);
501 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
502 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
505 mat.setRotate(kRotation0);
506 mat.postScale(-kScale1, kScale0);
507 mat.postRotate(kRotation1);
508 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
509 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
518 mat.setRotate(rot0);
519 mat.postScale(sx, sy);
520 mat.postRotate(rot1);
522 if (SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2)) {
523 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
526 SkScalar perpdot = mat[SkMatrix::kMScaleX]*mat[SkMatrix::kMScaleY] -
527 mat[SkMatrix::kMSkewX]*mat[SkMatrix::kMSkewY];
533 mat.postTranslate(-1000.f, 1000.f);
534 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
535 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
538 mat[SkMatrix::kMPersp0] = 12.f;
539 mat[SkMatrix::kMPersp1] = 4.f;
540 mat[SkMatrix::kMPersp2] = 1872.f;
541 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
542 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
546 mat.reset();
547 mat[SkMatrix::kMScaleX] = 0.f;
548 REPORTER_ASSERT(reporter, !SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
549 mat.reset();
550 mat[SkMatrix::kMScaleY] = 0.f;
551 REPORTER_ASSERT(reporter, !SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
552 mat.reset();
554 mat[SkMatrix::kMScaleX] = 1.f;
555 mat[SkMatrix::kMSkewX] = 2.f;
556 mat[SkMatrix::kMSkewY] = 4.f;
557 mat[SkMatrix::kMScaleY] = 8.f;
558 REPORTER_ASSERT(reporter, !SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
586 SkMatrix mat;
610 mat.reset();
612 mat.mapHomogeneousPoints(dst, randTriples, kTripleCount);
618 mat.setAll(0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f);
620 mat.mapHomogeneousPoints(dst, randTriples, kTripleCount);
644 mat.setScale(kScale0, kScale0);
649 mat.mapHomogeneousPoints(dst, src, 1);
650 mat.mapPoints(&pnt, &pnt, 1);
658 mat.setRotate(kRotation0);
663 mat.mapHomogeneousPoints(dst, src, 1);
664 mat.mapPoints(&pnt, &pnt, 1);
672 mat.setRotate(kRotation1);
673 mat.postScale(kScale0, kScale0);
674 mat.postRotate(kRotation0);
679 mat.mapHomogeneousPoints(dst, src, 1);
680 mat.mapPoints(&pnt, &pnt, 1);
700 SkMatrix mat, inverse, iden1, iden2;
702 mat.reset();
703 mat.setTranslate(SK_Scalar1, SK_Scalar1);
704 REPORTER_ASSERT(reporter, mat.invert(&inverse));
705 iden1.setConcat(mat, inverse);
708 mat.setScale(SkIntToScalar(2), SkIntToScalar(4));
709 REPORTER_ASSERT(reporter, mat.invert(&inverse));
710 iden1.setConcat(mat, inverse);
712 test_flatten(reporter, mat);
714 mat.setScale(SK_Scalar1/2, SkIntToScalar(2));
715 REPORTER_ASSERT(reporter, mat.invert(&inverse));
716 iden1.setConcat(mat, inverse);
718 test_flatten(reporter, mat);
720 mat.setScale(SkIntToScalar(3), SkIntToScalar(5), SkIntToScalar(20), 0);
721 mat.postRotate(SkIntToScalar(25));
722 REPORTER_ASSERT(reporter, mat.invert(NULL));
723 REPORTER_ASSERT(reporter, mat.invert(&inverse));
724 iden1.setConcat(mat, inverse);
726 iden2.setConcat(inverse, mat);
728 test_flatten(reporter, mat);
731 mat.setScale(0, SK_Scalar1);
732 REPORTER_ASSERT(reporter, !mat.invert(NULL));
733 REPORTER_ASSERT(reporter, !mat.invert(&inverse));
734 mat.setScale(SK_Scalar1, 0);
735 REPORTER_ASSERT(reporter, !mat.invert(NULL));
736 REPORTER_ASSERT(reporter, !mat.invert(&inverse));
776 mat.reset();
777 mat.set(SkMatrix::kMScaleX, SkIntToScalar(1));
778 mat.set(SkMatrix::kMSkewX, SkIntToScalar(2));
779 mat.set(SkMatrix::kMTransX, SkIntToScalar(3));
780 mat.set(SkMatrix::kMSkewY, SkIntToScalar(4));
781 mat.set(SkMatrix::kMScaleY, SkIntToScalar(5));
782 mat.set(SkMatrix::kMTransY, SkIntToScalar(6));
784 REPORTER_ASSERT(reporter, mat.asAffine(affine));
786 #define affineEqual(e) affine[SkMatrix::kA##e] == mat.get(SkMatrix::kM##e)
795 mat.set(SkMatrix::kMPersp1, SkScalarToPersp(SK_Scalar1 / 2));
796 REPORTER_ASSERT(reporter, !mat.asAffine(affine));
800 mat.reset();
802 mat.set(SkMatrix::kMSkewX, -zero);
803 REPORTER_ASSERT(reporter, are_equal(reporter, mat, mat2));
806 mat.reset();
807 mat.set(SkMatrix::kMSkewX, SK_ScalarNaN);
809 REPORTER_ASSERT(reporter, !are_equal(reporter, mat, mat2));