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));
324 REPORTER_ASSERT(reporter, mat.isSimilarity());
328 REPORTER_ASSERT(reporter, mat.isSimilarity(SK_ScalarNearlyZero + 0.00010113f));
333 mat.reset();
335 mat.postRotate(SkIntToScalar(1));
337 REPORTER_ASSERT(reporter, mat.isSimilarity());
340 mat.reset();
341 mat.setRotate(SkIntToScalar(30));
342 mat.postTranslate(SkIntToScalar(10), SkIntToScalar(20));
343 REPORTER_ASSERT(reporter, mat.isSimilarity());
346 mat.reset();
347 mat.setRotate(SkIntToScalar(30));
348 mat.postScale(SkIntToScalar(2), SkIntToScalar(2));
349 REPORTER_ASSERT(reporter, mat.isSimilarity());
352 mat.reset();
353 mat.setRotate(SkIntToScalar(30));
354 mat.postScale(SkIntToScalar(3), SkIntToScalar(2));
355 REPORTER_ASSERT(reporter, !mat.isSimilarity());
358 mat.setAll(0, 0, 0, 0, 0, 0, 0, 0, 0);
359 REPORTER_ASSERT(reporter, !mat.isSimilarity());
362 mat.setAll(0, 0, 0, 0, 0, 0, 0, 0, SK_Scalar1);
363 REPORTER_ASSERT(reporter, !mat.isSimilarity());
366 mat.setAll(0, SK_Scalar1, 0,
369 REPORTER_ASSERT(reporter, mat.isSimilarity());
394 static bool check_matrix_recomposition(const SkMatrix& mat,
406 bool result = scalar_nearly_equal_relative(mat[SkMatrix::kMScaleX],
408 scalar_nearly_equal_relative(mat[SkMatrix::kMSkewX],
410 scalar_nearly_equal_relative(mat[SkMatrix::kMSkewY],
412 scalar_nearly_equal_relative(mat[SkMatrix::kMScaleY],
418 SkMatrix mat;
427 mat.reset();
428 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
429 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
431 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, NULL, NULL, NULL));
434 mat.setRotate(kRotation0);
435 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
436 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
439 mat.setScale(kScale0, kScale0);
440 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
441 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
444 mat.setScale(kScale1, kScale0);
445 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
446 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
449 mat.setRotate(kRotation1);
450 mat.postScale(kScale0, kScale0);
451 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
452 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
455 mat.setScale(kScale0, kScale0);
456 mat.postRotate(kRotation1);
457 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
458 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
461 mat.setRotate(kRotation0);
462 mat.postScale(kScale1, -kScale1);
463 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
464 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
467 mat.setScale(kScale0, -kScale0);
468 mat.postRotate(kRotation1);
469 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
470 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
473 mat.setRotate(kRotation1);
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.setRotate(90);
480 mat.postScale(kScale1, kScale0);
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(kRotation0);
487 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
488 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
491 mat.setScale(kScale1, kScale0);
492 mat.postRotate(90);
493 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
494 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
497 mat.setRotate(kRotation1);
498 mat.postScale(kScale0, kScale0);
499 mat.postRotate(kRotation0);
500 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
501 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
504 mat.setRotate(kRotation0);
505 mat.postScale(kScale1, kScale0);
506 mat.postRotate(kRotation1);
507 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
508 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
511 mat.setRotate(kRotation0);
512 mat.postScale(-kScale1, kScale0);
513 mat.postRotate(kRotation1);
514 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
515 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
524 mat.setRotate(rot0);
525 mat.postScale(sx, sy);
526 mat.postRotate(rot1);
528 if (SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2)) {
529 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
532 SkScalar perpdot = mat[SkMatrix::kMScaleX]*mat[SkMatrix::kMScaleY] -
533 mat[SkMatrix::kMSkewX]*mat[SkMatrix::kMSkewY];
539 mat.postTranslate(-1000.f, 1000.f);
540 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
541 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
544 mat[SkMatrix::kMPersp0] = 12.f;
545 mat[SkMatrix::kMPersp1] = 4.f;
546 mat[SkMatrix::kMPersp2] = 1872.f;
547 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
548 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
552 mat.reset();
553 mat[SkMatrix::kMScaleX] = 0.f;
554 REPORTER_ASSERT(reporter, !SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
555 mat.reset();
556 mat[SkMatrix::kMScaleY] = 0.f;
557 REPORTER_ASSERT(reporter, !SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
558 mat.reset();
560 mat[SkMatrix::kMScaleX] = 1.f;
561 mat[SkMatrix::kMSkewX] = 2.f;
562 mat[SkMatrix::kMSkewY] = 4.f;
563 mat[SkMatrix::kMScaleY] = 8.f;
564 REPORTER_ASSERT(reporter, !SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
592 SkMatrix mat;
616 mat.reset();
618 mat.mapHomogeneousPoints(dst, randTriples, kTripleCount);
624 mat.setAll(0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f);
626 mat.mapHomogeneousPoints(dst, randTriples, kTripleCount);
650 mat.setScale(kScale0, kScale0);
655 mat.mapHomogeneousPoints(dst, src, 1);
656 mat.mapPoints(&pnt, &pnt, 1);
664 mat.setRotate(kRotation0);
669 mat.mapHomogeneousPoints(dst, src, 1);
670 mat.mapPoints(&pnt, &pnt, 1);
678 mat.setRotate(kRotation1);
679 mat.postScale(kScale0, kScale0);
680 mat.postRotate(kRotation0);
685 mat.mapHomogeneousPoints(dst, src, 1);
686 mat.mapPoints(&pnt, &pnt, 1);
706 SkMatrix mat, inverse, iden1, iden2;
708 mat.reset();
709 mat.setTranslate(SK_Scalar1, SK_Scalar1);
710 REPORTER_ASSERT(reporter, mat.invert(&inverse));
711 iden1.setConcat(mat, inverse);
714 mat.setScale(SkIntToScalar(2), SkIntToScalar(4));
715 REPORTER_ASSERT(reporter, mat.invert(&inverse));
716 iden1.setConcat(mat, inverse);
718 test_flatten(reporter, mat);
720 mat.setScale(SK_Scalar1/2, SkIntToScalar(2));
721 REPORTER_ASSERT(reporter, mat.invert(&inverse));
722 iden1.setConcat(mat, inverse);
724 test_flatten(reporter, mat);
726 mat.setScale(SkIntToScalar(3), SkIntToScalar(5), SkIntToScalar(20), 0);
727 mat.postRotate(SkIntToScalar(25));
728 REPORTER_ASSERT(reporter, mat.invert(NULL));
729 REPORTER_ASSERT(reporter, mat.invert(&inverse));
730 iden1.setConcat(mat, inverse);
732 iden2.setConcat(inverse, mat);
734 test_flatten(reporter, mat);
737 mat.setScale(0, SK_Scalar1);
738 REPORTER_ASSERT(reporter, !mat.invert(NULL));
739 REPORTER_ASSERT(reporter, !mat.invert(&inverse));
740 mat.setScale(SK_Scalar1, 0);
741 REPORTER_ASSERT(reporter, !mat.invert(NULL));
742 REPORTER_ASSERT(reporter, !mat.invert(&inverse));
782 mat.reset();
783 mat.set(SkMatrix::kMScaleX, SkIntToScalar(1));
784 mat.set(SkMatrix::kMSkewX, SkIntToScalar(2));
785 mat.set(SkMatrix::kMTransX, SkIntToScalar(3));
786 mat.set(SkMatrix::kMSkewY, SkIntToScalar(4));
787 mat.set(SkMatrix::kMScaleY, SkIntToScalar(5));
788 mat.set(SkMatrix::kMTransY, SkIntToScalar(6));
790 REPORTER_ASSERT(reporter, mat.asAffine(affine));
792 #define affineEqual(e) affine[SkMatrix::kA##e] == mat.get(SkMatrix::kM##e)
801 mat.set(SkMatrix::kMPersp1, SkScalarToPersp(SK_Scalar1 / 2));
802 REPORTER_ASSERT(reporter, !mat.asAffine(affine));
806 mat.reset();
808 mat.set(SkMatrix::kMSkewX, -zero);
809 REPORTER_ASSERT(reporter, are_equal(reporter, mat, mat2));
812 mat.reset();
813 mat.set(SkMatrix::kMSkewX, SK_ScalarNaN);
815 REPORTER_ASSERT(reporter, !are_equal(reporter, mat, mat2));