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());
254 REPORTER_ASSERT(reporter, mat.preservesRightAngles());
257 mat.reset();
258 mat.setTranslate(SkIntToScalar(100), SkIntToScalar(100));
259 REPORTER_ASSERT(reporter, mat.isSimilarity());
260 REPORTER_ASSERT(reporter, mat.preservesRightAngles());
263 mat.reset();
264 mat.setScale(SkIntToScalar(15), SkIntToScalar(15));
265 REPORTER_ASSERT(reporter, mat.isSimilarity());
266 REPORTER_ASSERT(reporter, mat.preservesRightAngles());
269 mat.reset();
270 mat.setScale(SkIntToScalar(-15), SkIntToScalar(15));
271 REPORTER_ASSERT(reporter, mat.isSimilarity());
272 REPORTER_ASSERT(reporter, mat.preservesRightAngles());
275 mat.reset();
276 mat.setScale(SkIntToScalar(15), SkIntToScalar(20));
277 REPORTER_ASSERT(reporter, !mat.isSimilarity());
278 REPORTER_ASSERT(reporter, mat.preservesRightAngles());
281 mat.reset();
282 mat.setScale(SkIntToScalar(15), SkIntToScalar(15),
284 REPORTER_ASSERT(reporter, mat.isSimilarity());
285 REPORTER_ASSERT(reporter, mat.preservesRightAngles());
288 mat.reset();
289 mat.setScale(SkIntToScalar(15), SkIntToScalar(20),
291 REPORTER_ASSERT(reporter, !mat.isSimilarity());
292 REPORTER_ASSERT(reporter, mat.preservesRightAngles());
295 mat.reset();
296 mat.setSkew(SkIntToScalar(15), SkIntToScalar(15));
297 REPORTER_ASSERT(reporter, !mat.isSimilarity());
298 REPORTER_ASSERT(reporter, !mat.preservesRightAngles());
301 mat.reset();
302 mat.setSkew(SkIntToScalar(15), SkIntToScalar(20));
303 REPORTER_ASSERT(reporter, !mat.isSimilarity());
304 REPORTER_ASSERT(reporter, !mat.preservesRightAngles());
307 mat.reset();
308 mat.setSkew(SkIntToScalar(15), SkIntToScalar(15),
310 REPORTER_ASSERT(reporter, !mat.isSimilarity());
311 REPORTER_ASSERT(reporter, !mat.preservesRightAngles());
314 mat.reset();
315 mat.setSkew(SkIntToScalar(15), SkIntToScalar(20),
317 REPORTER_ASSERT(reporter, !mat.isSimilarity());
318 REPORTER_ASSERT(reporter, !mat.preservesRightAngles());
321 mat.reset();
322 mat.setPerspX(SkScalarToPersp(SK_Scalar1 / 2));
323 REPORTER_ASSERT(reporter, !mat.isSimilarity());
324 REPORTER_ASSERT(reporter, !mat.preservesRightAngles());
327 mat.reset();
328 mat.setPerspY(SkScalarToPersp(SK_Scalar1 / 2));
329 REPORTER_ASSERT(reporter, !mat.isSimilarity());
330 REPORTER_ASSERT(reporter, !mat.preservesRightAngles());
334 mat.reset();
335 mat.setRotate(SkIntToScalar(angle));
336 REPORTER_ASSERT(reporter, mat.isSimilarity());
337 REPORTER_ASSERT(reporter, mat.preservesRightAngles());
341 mat.reset();
343 mat.postRotate(SkIntToScalar(1));
345 REPORTER_ASSERT(reporter, mat.isSimilarity());
346 REPORTER_ASSERT(reporter, mat.preservesRightAngles());
349 mat.reset();
350 mat.setRotate(SkIntToScalar(30));
351 mat.postTranslate(SkIntToScalar(10), SkIntToScalar(20));
352 REPORTER_ASSERT(reporter, mat.isSimilarity());
353 REPORTER_ASSERT(reporter, mat.preservesRightAngles());
356 mat.reset();
357 mat.setRotate(SkIntToScalar(30));
358 mat.postScale(SkIntToScalar(2), SkIntToScalar(2));
359 REPORTER_ASSERT(reporter, mat.isSimilarity());
360 REPORTER_ASSERT(reporter, mat.preservesRightAngles());
363 mat.reset();
364 mat.setRotate(SkIntToScalar(30));
365 mat.postScale(SkIntToScalar(3), SkIntToScalar(2));
366 REPORTER_ASSERT(reporter, !mat.isSimilarity());
367 REPORTER_ASSERT(reporter, !mat.preservesRightAngles());
370 mat.reset();
371 mat.setScale(SkIntToScalar(3), SkIntToScalar(2));
372 mat.postRotate(SkIntToScalar(30));
373 REPORTER_ASSERT(reporter, !mat.isSimilarity());
374 REPORTER_ASSERT(reporter, mat.preservesRightAngles());
377 mat.setAll(0, 0, 0, 0, 0, 0, 0, 0, 0);
378 REPORTER_ASSERT(reporter, !mat.isSimilarity());
379 REPORTER_ASSERT(reporter, !mat.preservesRightAngles());
382 mat.reset();
383 mat.setAll(0, 0, 0, 0, 0, 0, 0, 0, SK_Scalar1);
384 REPORTER_ASSERT(reporter, !mat.isSimilarity());
385 REPORTER_ASSERT(reporter, !mat.preservesRightAngles());
388 mat.setAll(0, SK_Scalar1, 0,
391 REPORTER_ASSERT(reporter, mat.isSimilarity());
392 REPORTER_ASSERT(reporter, mat.preservesRightAngles());
395 mat.setAll(0, SK_Scalar1, 0,
398 REPORTER_ASSERT(reporter, mat.isSimilarity());
399 REPORTER_ASSERT(reporter, mat.preservesRightAngles());
424 static bool check_matrix_recomposition(const SkMatrix& mat,
436 bool result = scalar_nearly_equal_relative(mat[SkMatrix::kMScaleX],
438 scalar_nearly_equal_relative(mat[SkMatrix::kMSkewX],
440 scalar_nearly_equal_relative(mat[SkMatrix::kMSkewY],
442 scalar_nearly_equal_relative(mat[SkMatrix::kMScaleY],
448 SkMatrix mat;
457 mat.reset();
458 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
459 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
461 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, NULL, NULL, NULL));
464 mat.setRotate(kRotation0);
465 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
466 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
469 mat.setScale(kScale0, kScale0);
470 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
471 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
474 mat.setScale(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(kRotation1);
480 mat.postScale(kScale0, kScale0);
481 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
482 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
485 mat.setScale(kScale0, kScale0);
486 mat.postRotate(kRotation1);
487 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
488 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
491 mat.setRotate(kRotation0);
492 mat.postScale(kScale1, -kScale1);
493 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
494 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
497 mat.setScale(kScale0, -kScale0);
498 mat.postRotate(kRotation1);
499 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
500 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
503 mat.setRotate(kRotation1);
504 mat.postScale(kScale1, kScale0);
505 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
506 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
509 mat.setRotate(90);
510 mat.postScale(kScale1, kScale0);
511 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
512 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
515 mat.setScale(kScale1, kScale0);
516 mat.postRotate(kRotation0);
517 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
518 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
521 mat.setScale(kScale1, kScale0);
522 mat.postRotate(90);
523 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
524 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
527 mat.setRotate(kRotation1);
528 mat.postScale(kScale0, kScale0);
529 mat.postRotate(kRotation0);
530 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
531 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
534 mat.setRotate(kRotation0);
535 mat.postScale(kScale1, kScale0);
536 mat.postRotate(kRotation1);
537 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
538 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
541 mat.setRotate(kRotation0);
542 mat.postScale(-kScale1, kScale0);
543 mat.postRotate(kRotation1);
544 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
545 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
554 mat.setRotate(rot0);
555 mat.postScale(sx, sy);
556 mat.postRotate(rot1);
558 if (SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2)) {
559 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
562 SkScalar perpdot = mat[SkMatrix::kMScaleX]*mat[SkMatrix::kMScaleY] -
563 mat[SkMatrix::kMSkewX]*mat[SkMatrix::kMSkewY];
569 mat.postTranslate(-1000.f, 1000.f);
570 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
571 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
574 mat[SkMatrix::kMPersp0] = 12.f;
575 mat[SkMatrix::kMPersp1] = 4.f;
576 mat[SkMatrix::kMPersp2] = 1872.f;
577 REPORTER_ASSERT(reporter, SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
578 REPORTER_ASSERT(reporter, check_matrix_recomposition(mat, rotation1, scale, rotation2));
582 mat.reset();
583 mat[SkMatrix::kMScaleX] = 0.f;
584 REPORTER_ASSERT(reporter, !SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
585 mat.reset();
586 mat[SkMatrix::kMScaleY] = 0.f;
587 REPORTER_ASSERT(reporter, !SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
588 mat.reset();
590 mat[SkMatrix::kMScaleX] = 1.f;
591 mat[SkMatrix::kMSkewX] = 2.f;
592 mat[SkMatrix::kMSkewY] = 4.f;
593 mat[SkMatrix::kMScaleY] = 8.f;
594 REPORTER_ASSERT(reporter, !SkDecomposeUpper2x2(mat, &rotation1, &scale, &rotation2));
622 SkMatrix mat;
646 mat.reset();
648 mat.mapHomogeneousPoints(dst, randTriples, kTripleCount);
654 mat.setAll(0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f);
656 mat.mapHomogeneousPoints(dst, randTriples, kTripleCount);
680 mat.setScale(kScale0, kScale0);
685 mat.mapHomogeneousPoints(dst, src, 1);
686 mat.mapPoints(&pnt, &pnt, 1);
694 mat.setRotate(kRotation0);
699 mat.mapHomogeneousPoints(dst, src, 1);
700 mat.mapPoints(&pnt, &pnt, 1);
708 mat.setRotate(kRotation1);
709 mat.postScale(kScale0, kScale0);
710 mat.postRotate(kRotation0);
715 mat.mapHomogeneousPoints(dst, src, 1);
716 mat.mapPoints(&pnt, &pnt, 1);
736 SkMatrix mat, inverse, iden1, iden2;
738 mat.reset();
739 mat.setTranslate(SK_Scalar1, SK_Scalar1);
740 REPORTER_ASSERT(reporter, mat.invert(&inverse));
741 iden1.setConcat(mat, inverse);
744 mat.setScale(SkIntToScalar(2), SkIntToScalar(4));
745 REPORTER_ASSERT(reporter, mat.invert(&inverse));
746 iden1.setConcat(mat, inverse);
748 test_flatten(reporter, mat);
750 mat.setScale(SK_Scalar1/2, SkIntToScalar(2));
751 REPORTER_ASSERT(reporter, mat.invert(&inverse));
752 iden1.setConcat(mat, inverse);
754 test_flatten(reporter, mat);
756 mat.setScale(SkIntToScalar(3), SkIntToScalar(5), SkIntToScalar(20), 0);
757 mat.postRotate(SkIntToScalar(25));
758 REPORTER_ASSERT(reporter, mat.invert(NULL));
759 REPORTER_ASSERT(reporter, mat.invert(&inverse));
760 iden1.setConcat(mat, inverse);
762 iden2.setConcat(inverse, mat);
764 test_flatten(reporter, mat);
767 mat.setScale(0, SK_Scalar1);
768 REPORTER_ASSERT(reporter, !mat.invert(NULL));
769 REPORTER_ASSERT(reporter, !mat.invert(&inverse));
770 mat.setScale(SK_Scalar1, 0);
771 REPORTER_ASSERT(reporter, !mat.invert(NULL));
772 REPORTER_ASSERT(reporter, !mat.invert(&inverse));
812 mat.reset();
813 mat.set(SkMatrix::kMScaleX, SkIntToScalar(1));
814 mat.set(SkMatrix::kMSkewX, SkIntToScalar(2));
815 mat.set(SkMatrix::kMTransX, SkIntToScalar(3));
816 mat.set(SkMatrix::kMSkewY, SkIntToScalar(4));
817 mat.set(SkMatrix::kMScaleY, SkIntToScalar(5));
818 mat.set(SkMatrix::kMTransY, SkIntToScalar(6));
820 REPORTER_ASSERT(reporter, mat.asAffine(affine));
822 #define affineEqual(e) affine[SkMatrix::kA##e] == mat.get(SkMatrix::kM##e)
831 mat.set(SkMatrix::kMPersp1, SkScalarToPersp(SK_Scalar1 / 2));
832 REPORTER_ASSERT(reporter, !mat.asAffine(affine));
836 mat.reset();
838 mat.set(SkMatrix::kMSkewX, -zero);
839 REPORTER_ASSERT(reporter, are_equal(reporter, mat, mat2));
842 mat.reset();
843 mat.set(SkMatrix::kMSkewX, SK_ScalarNaN);
845 REPORTER_ASSERT(reporter, !are_equal(reporter, mat, mat2));