OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #include "SkMath.h" | 8 #include "SkMath.h" |
9 #include "SkMatrix.h" | 9 #include "SkMatrix.h" |
10 #include "SkMatrixUtils.h" | 10 #include "SkMatrixUtils.h" |
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
195 | 195 |
196 SkMatrix translate; | 196 SkMatrix translate; |
197 translate.setTranslate(10 * SK_Scalar1, -5 * SK_Scalar1); | 197 translate.setTranslate(10 * SK_Scalar1, -5 * SK_Scalar1); |
198 REPORTER_ASSERT(reporter, SK_Scalar1 == translate.getMinScale()); | 198 REPORTER_ASSERT(reporter, SK_Scalar1 == translate.getMinScale()); |
199 REPORTER_ASSERT(reporter, SK_Scalar1 == translate.getMaxScale()); | 199 REPORTER_ASSERT(reporter, SK_Scalar1 == translate.getMaxScale()); |
200 success = translate.getMinMaxScales(scales); | 200 success = translate.getMinMaxScales(scales); |
201 REPORTER_ASSERT(reporter, success && SK_Scalar1 == scales[0] && SK_Scalar1 =
= scales[1]); | 201 REPORTER_ASSERT(reporter, success && SK_Scalar1 == scales[0] && SK_Scalar1 =
= scales[1]); |
202 | 202 |
203 SkMatrix perspX; | 203 SkMatrix perspX; |
204 perspX.reset(); | 204 perspX.reset(); |
205 perspX.setPerspX(SkScalarToPersp(SK_Scalar1 / 1000)); | 205 perspX.setPerspX(SK_Scalar1 / 1000); |
206 REPORTER_ASSERT(reporter, -SK_Scalar1 == perspX.getMinScale()); | 206 REPORTER_ASSERT(reporter, -SK_Scalar1 == perspX.getMinScale()); |
207 REPORTER_ASSERT(reporter, -SK_Scalar1 == perspX.getMaxScale()); | 207 REPORTER_ASSERT(reporter, -SK_Scalar1 == perspX.getMaxScale()); |
208 // Verify that getMinMaxScales() doesn't update the scales array on failure. | 208 // Verify that getMinMaxScales() doesn't update the scales array on failure. |
209 scales[0] = -5; | 209 scales[0] = -5; |
210 scales[1] = -5; | 210 scales[1] = -5; |
211 success = perspX.getMinMaxScales(scales); | 211 success = perspX.getMinMaxScales(scales); |
212 REPORTER_ASSERT(reporter, !success && -5 * SK_Scalar1 == scales[0] && -5 * S
K_Scalar1 == scales[1]); | 212 REPORTER_ASSERT(reporter, !success && -5 * SK_Scalar1 == scales[0] && -5 * S
K_Scalar1 == scales[1]); |
213 | 213 |
214 SkMatrix perspY; | 214 SkMatrix perspY; |
215 perspY.reset(); | 215 perspY.reset(); |
216 perspY.setPerspY(SkScalarToPersp(-SK_Scalar1 / 500)); | 216 perspY.setPerspY(-SK_Scalar1 / 500); |
217 REPORTER_ASSERT(reporter, -SK_Scalar1 == perspY.getMinScale()); | 217 REPORTER_ASSERT(reporter, -SK_Scalar1 == perspY.getMinScale()); |
218 REPORTER_ASSERT(reporter, -SK_Scalar1 == perspY.getMaxScale()); | 218 REPORTER_ASSERT(reporter, -SK_Scalar1 == perspY.getMaxScale()); |
219 scales[0] = -5; | 219 scales[0] = -5; |
220 scales[1] = -5; | 220 scales[1] = -5; |
221 success = perspY.getMinMaxScales(scales); | 221 success = perspY.getMinMaxScales(scales); |
222 REPORTER_ASSERT(reporter, !success && -5 * SK_Scalar1 == scales[0] && -5 * S
K_Scalar1 == scales[1]); | 222 REPORTER_ASSERT(reporter, !success && -5 * SK_Scalar1 == scales[0] && -5 * S
K_Scalar1 == scales[1]); |
223 | 223 |
224 SkMatrix baseMats[] = {scale, rot90Scale, rotate, | 224 SkMatrix baseMats[] = {scale, rot90Scale, rotate, |
225 translate, perspX, perspY}; | 225 translate, perspX, perspY}; |
226 SkMatrix mats[2*SK_ARRAY_COUNT(baseMats)]; | 226 SkMatrix mats[2*SK_ARRAY_COUNT(baseMats)]; |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
351 | 351 |
352 // skew with different size at a pivot point | 352 // skew with different size at a pivot point |
353 mat.reset(); | 353 mat.reset(); |
354 mat.setSkew(SkIntToScalar(15), SkIntToScalar(20), | 354 mat.setSkew(SkIntToScalar(15), SkIntToScalar(20), |
355 SkIntToScalar(2), SkIntToScalar(2)); | 355 SkIntToScalar(2), SkIntToScalar(2)); |
356 REPORTER_ASSERT(reporter, !mat.isSimilarity()); | 356 REPORTER_ASSERT(reporter, !mat.isSimilarity()); |
357 REPORTER_ASSERT(reporter, !mat.preservesRightAngles()); | 357 REPORTER_ASSERT(reporter, !mat.preservesRightAngles()); |
358 | 358 |
359 // perspective x | 359 // perspective x |
360 mat.reset(); | 360 mat.reset(); |
361 mat.setPerspX(SkScalarToPersp(SK_Scalar1 / 2)); | 361 mat.setPerspX(SK_Scalar1 / 2); |
362 REPORTER_ASSERT(reporter, !mat.isSimilarity()); | 362 REPORTER_ASSERT(reporter, !mat.isSimilarity()); |
363 REPORTER_ASSERT(reporter, !mat.preservesRightAngles()); | 363 REPORTER_ASSERT(reporter, !mat.preservesRightAngles()); |
364 | 364 |
365 // perspective y | 365 // perspective y |
366 mat.reset(); | 366 mat.reset(); |
367 mat.setPerspY(SkScalarToPersp(SK_Scalar1 / 2)); | 367 mat.setPerspY(SK_Scalar1 / 2); |
368 REPORTER_ASSERT(reporter, !mat.isSimilarity()); | 368 REPORTER_ASSERT(reporter, !mat.isSimilarity()); |
369 REPORTER_ASSERT(reporter, !mat.preservesRightAngles()); | 369 REPORTER_ASSERT(reporter, !mat.preservesRightAngles()); |
370 | 370 |
371 // rotate | 371 // rotate |
372 for (int angle = 0; angle < 360; ++angle) { | 372 for (int angle = 0; angle < 360; ++angle) { |
373 mat.reset(); | 373 mat.reset(); |
374 mat.setRotate(SkIntToScalar(angle)); | 374 mat.setRotate(SkIntToScalar(angle)); |
375 REPORTER_ASSERT(reporter, mat.isSimilarity()); | 375 REPORTER_ASSERT(reporter, mat.isSimilarity()); |
376 REPORTER_ASSERT(reporter, mat.preservesRightAngles()); | 376 REPORTER_ASSERT(reporter, mat.preservesRightAngles()); |
377 } | 377 } |
(...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
860 | 860 |
861 #define affineEqual(e) affine[SkMatrix::kA##e] == mat.get(SkMatrix::kM##e) | 861 #define affineEqual(e) affine[SkMatrix::kA##e] == mat.get(SkMatrix::kM##e) |
862 REPORTER_ASSERT(reporter, affineEqual(ScaleX)); | 862 REPORTER_ASSERT(reporter, affineEqual(ScaleX)); |
863 REPORTER_ASSERT(reporter, affineEqual(SkewY)); | 863 REPORTER_ASSERT(reporter, affineEqual(SkewY)); |
864 REPORTER_ASSERT(reporter, affineEqual(SkewX)); | 864 REPORTER_ASSERT(reporter, affineEqual(SkewX)); |
865 REPORTER_ASSERT(reporter, affineEqual(ScaleY)); | 865 REPORTER_ASSERT(reporter, affineEqual(ScaleY)); |
866 REPORTER_ASSERT(reporter, affineEqual(TransX)); | 866 REPORTER_ASSERT(reporter, affineEqual(TransX)); |
867 REPORTER_ASSERT(reporter, affineEqual(TransY)); | 867 REPORTER_ASSERT(reporter, affineEqual(TransY)); |
868 #undef affineEqual | 868 #undef affineEqual |
869 | 869 |
870 mat.set(SkMatrix::kMPersp1, SkScalarToPersp(SK_Scalar1 / 2)); | 870 mat.set(SkMatrix::kMPersp1, SK_Scalar1 / 2); |
871 REPORTER_ASSERT(reporter, !mat.asAffine(affine)); | 871 REPORTER_ASSERT(reporter, !mat.asAffine(affine)); |
872 | 872 |
873 SkMatrix mat2; | 873 SkMatrix mat2; |
874 mat2.reset(); | 874 mat2.reset(); |
875 mat.reset(); | 875 mat.reset(); |
876 SkScalar zero = 0; | 876 SkScalar zero = 0; |
877 mat.set(SkMatrix::kMSkewX, -zero); | 877 mat.set(SkMatrix::kMSkewX, -zero); |
878 REPORTER_ASSERT(reporter, are_equal(reporter, mat, mat2)); | 878 REPORTER_ASSERT(reporter, are_equal(reporter, mat, mat2)); |
879 | 879 |
880 mat2.reset(); | 880 mat2.reset(); |
(...skipping 15 matching lines...) Expand all Loading... |
896 a.setTranslate(10, 20); | 896 a.setTranslate(10, 20); |
897 | 897 |
898 SkMatrix b; | 898 SkMatrix b; |
899 b.setScale(3, 5); | 899 b.setScale(3, 5); |
900 | 900 |
901 SkMatrix expected; | 901 SkMatrix expected; |
902 expected.setConcat(a,b); | 902 expected.setConcat(a,b); |
903 | 903 |
904 REPORTER_ASSERT(r, expected == SkMatrix::Concat(a, b)); | 904 REPORTER_ASSERT(r, expected == SkMatrix::Concat(a, b)); |
905 } | 905 } |
OLD | NEW |