| Index: tests/MatrixTest.cpp
|
| diff --git a/tests/MatrixTest.cpp b/tests/MatrixTest.cpp
|
| index 1897554bc8bd1c8fbfbc63d4dc9c77a5d205244c..9c7a5203695e239dc1c9dc6d971405d3ce29dad0 100644
|
| --- a/tests/MatrixTest.cpp
|
| +++ b/tests/MatrixTest.cpp
|
| @@ -120,43 +120,67 @@ static void test_flatten(skiatest::Reporter* reporter, const SkMatrix& m) {
|
| }
|
|
|
| static void test_matrix_min_max_scale(skiatest::Reporter* reporter) {
|
| + SkScalar scales[2];
|
| + bool success;
|
| +
|
| SkMatrix identity;
|
| identity.reset();
|
| REPORTER_ASSERT(reporter, SK_Scalar1 == identity.getMinScale());
|
| REPORTER_ASSERT(reporter, SK_Scalar1 == identity.getMaxScale());
|
| + success = identity.getMinMaxScales(scales);
|
| + REPORTER_ASSERT(reporter, success && SK_Scalar1 == scales[0] && SK_Scalar1 == scales[1]);
|
|
|
| SkMatrix scale;
|
| scale.setScale(SK_Scalar1 * 2, SK_Scalar1 * 4);
|
| REPORTER_ASSERT(reporter, SK_Scalar1 * 2 == scale.getMinScale());
|
| REPORTER_ASSERT(reporter, SK_Scalar1 * 4 == scale.getMaxScale());
|
| + success = scale.getMinMaxScales(scales);
|
| + REPORTER_ASSERT(reporter, success && SK_Scalar1 * 2 == scales[0] && SK_Scalar1 * 4 == scales[1]);
|
|
|
| SkMatrix rot90Scale;
|
| rot90Scale.setRotate(90 * SK_Scalar1);
|
| rot90Scale.postScale(SK_Scalar1 / 4, SK_Scalar1 / 2);
|
| REPORTER_ASSERT(reporter, SK_Scalar1 / 4 == rot90Scale.getMinScale());
|
| REPORTER_ASSERT(reporter, SK_Scalar1 / 2 == rot90Scale.getMaxScale());
|
| + success = rot90Scale.getMinMaxScales(scales);
|
| + REPORTER_ASSERT(reporter, success && SK_Scalar1 / 4 == scales[0] && SK_Scalar1 / 2 == scales[1]);
|
|
|
| SkMatrix rotate;
|
| rotate.setRotate(128 * SK_Scalar1);
|
| - REPORTER_ASSERT(reporter, SkScalarNearlyEqual(SK_Scalar1, rotate.getMinScale() ,SK_ScalarNearlyZero));
|
| + REPORTER_ASSERT(reporter, SkScalarNearlyEqual(SK_Scalar1, rotate.getMinScale(), SK_ScalarNearlyZero));
|
| REPORTER_ASSERT(reporter, SkScalarNearlyEqual(SK_Scalar1, rotate.getMaxScale(), SK_ScalarNearlyZero));
|
| + success = rotate.getMinMaxScales(scales);
|
| + REPORTER_ASSERT(reporter, success);
|
| + REPORTER_ASSERT(reporter, SkScalarNearlyEqual(SK_Scalar1, scales[0], SK_ScalarNearlyZero));
|
| + REPORTER_ASSERT(reporter, SkScalarNearlyEqual(SK_Scalar1, scales[1], SK_ScalarNearlyZero));
|
|
|
| SkMatrix translate;
|
| translate.setTranslate(10 * SK_Scalar1, -5 * SK_Scalar1);
|
| REPORTER_ASSERT(reporter, SK_Scalar1 == translate.getMinScale());
|
| REPORTER_ASSERT(reporter, SK_Scalar1 == translate.getMaxScale());
|
| + success = translate.getMinMaxScales(scales);
|
| + REPORTER_ASSERT(reporter, success && SK_Scalar1 == scales[0] && SK_Scalar1 == scales[1]);
|
|
|
| SkMatrix perspX;
|
| perspX.reset();
|
| perspX.setPerspX(SkScalarToPersp(SK_Scalar1 / 1000));
|
| REPORTER_ASSERT(reporter, -SK_Scalar1 == perspX.getMinScale());
|
| REPORTER_ASSERT(reporter, -SK_Scalar1 == perspX.getMaxScale());
|
| + // Verify that getMinMaxScales() doesn't update the scales array on failure.
|
| + scales[0] = -5;
|
| + scales[1] = -5;
|
| + success = perspX.getMinMaxScales(scales);
|
| + REPORTER_ASSERT(reporter, !success && -5 * SK_Scalar1 == scales[0] && -5 * SK_Scalar1 == scales[1]);
|
|
|
| SkMatrix perspY;
|
| perspY.reset();
|
| perspY.setPerspY(SkScalarToPersp(-SK_Scalar1 / 500));
|
| REPORTER_ASSERT(reporter, -SK_Scalar1 == perspY.getMinScale());
|
| REPORTER_ASSERT(reporter, -SK_Scalar1 == perspY.getMaxScale());
|
| + scales[0] = -5;
|
| + scales[1] = -5;
|
| + success = perspY.getMinMaxScales(scales);
|
| + REPORTER_ASSERT(reporter, !success && -5 * SK_Scalar1 == scales[0] && -5 * SK_Scalar1 == scales[1]);
|
|
|
| SkMatrix baseMats[] = {scale, rot90Scale, rotate,
|
| translate, perspX, perspY};
|
| @@ -180,6 +204,11 @@ static void test_matrix_min_max_scale(skiatest::Reporter* reporter) {
|
| REPORTER_ASSERT(reporter, (minScale < 0) == (maxScale < 0));
|
| REPORTER_ASSERT(reporter, (maxScale < 0) == mat.hasPerspective());
|
|
|
| + SkScalar scales[2];
|
| + bool success = mat.getMinMaxScales(scales);
|
| + REPORTER_ASSERT(reporter, success == !mat.hasPerspective());
|
| + REPORTER_ASSERT(reporter, !success || (scales[0] == minScale && scales[1] == maxScale));
|
| +
|
| if (mat.hasPerspective()) {
|
| m -= 1; // try another non-persp matrix
|
| continue;
|
|
|