| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2011 Google Inc. | 3 * Copyright 2011 Google Inc. |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 #include "Test.h" | 8 #include "Test.h" |
| 9 #include "SkBitmap.h" | 9 #include "SkBitmap.h" |
| 10 #include "SkCanvas.h" | 10 #include "SkCanvas.h" |
| 11 #include "SkShader.h" | 11 #include "SkShader.h" |
| 12 #include "SkRandom.h" | 12 #include "SkRandom.h" |
| 13 #include "SkMatrixUtils.h" | 13 #include "SkMatrixUtils.h" |
| 14 | 14 |
| 15 static void rand_matrix(SkMatrix* mat, SkMWCRandom& rand, unsigned mask) { | 15 static void rand_matrix(SkMatrix* mat, SkRandom& rand, unsigned mask) { |
| 16 mat->setIdentity(); | 16 mat->setIdentity(); |
| 17 if (mask & SkMatrix::kTranslate_Mask) { | 17 if (mask & SkMatrix::kTranslate_Mask) { |
| 18 mat->postTranslate(rand.nextSScalar1(), rand.nextSScalar1()); | 18 mat->postTranslate(rand.nextSScalar1(), rand.nextSScalar1()); |
| 19 } | 19 } |
| 20 if (mask & SkMatrix::kScale_Mask) { | 20 if (mask & SkMatrix::kScale_Mask) { |
| 21 mat->postScale(rand.nextSScalar1(), rand.nextSScalar1()); | 21 mat->postScale(rand.nextSScalar1(), rand.nextSScalar1()); |
| 22 } | 22 } |
| 23 if (mask & SkMatrix::kAffine_Mask) { | 23 if (mask & SkMatrix::kAffine_Mask) { |
| 24 mat->postRotate(rand.nextSScalar1() * 360); | 24 mat->postRotate(rand.nextSScalar1() * 360); |
| 25 } | 25 } |
| 26 if (mask & SkMatrix::kPerspective_Mask) { | 26 if (mask & SkMatrix::kPerspective_Mask) { |
| 27 mat->setPerspX(rand.nextSScalar1()); | 27 mat->setPerspX(rand.nextSScalar1()); |
| 28 mat->setPerspY(rand.nextSScalar1()); | 28 mat->setPerspY(rand.nextSScalar1()); |
| 29 } | 29 } |
| 30 } | 30 } |
| 31 | 31 |
| 32 static void rand_size(SkISize* size, SkMWCRandom& rand) { | 32 static void rand_size(SkISize* size, SkRandom& rand) { |
| 33 size->set(rand.nextU() & 0xFFFF, rand.nextU() & 0xFFFF); | 33 size->set(rand.nextU() & 0xFFFF, rand.nextU() & 0xFFFF); |
| 34 } | 34 } |
| 35 | 35 |
| 36 static bool treat_as_sprite(const SkMatrix& mat, const SkISize& size, | 36 static bool treat_as_sprite(const SkMatrix& mat, const SkISize& size, |
| 37 unsigned bits) { | 37 unsigned bits) { |
| 38 return SkTreatAsSprite(mat, size.width(), size.height(), bits); | 38 return SkTreatAsSprite(mat, size.width(), size.height(), bits); |
| 39 } | 39 } |
| 40 | 40 |
| 41 static void test_treatAsSprite(skiatest::Reporter* reporter) { | 41 static void test_treatAsSprite(skiatest::Reporter* reporter) { |
| 42 const unsigned bilerBits = kSkSubPixelBitsForBilerp; | 42 const unsigned bilerBits = kSkSubPixelBitsForBilerp; |
| 43 | 43 |
| 44 SkMatrix mat; | 44 SkMatrix mat; |
| 45 SkISize size; | 45 SkISize size; |
| 46 SkMWCRandom rand; | 46 SkRandom rand; |
| 47 | 47 |
| 48 // assert: translate-only no-filter can always be treated as sprite | 48 // assert: translate-only no-filter can always be treated as sprite |
| 49 for (int i = 0; i < 1000; ++i) { | 49 for (int i = 0; i < 1000; ++i) { |
| 50 rand_matrix(&mat, rand, SkMatrix::kTranslate_Mask); | 50 rand_matrix(&mat, rand, SkMatrix::kTranslate_Mask); |
| 51 for (int j = 0; j < 1000; ++j) { | 51 for (int j = 0; j < 1000; ++j) { |
| 52 rand_size(&size, rand); | 52 rand_size(&size, rand); |
| 53 REPORTER_ASSERT(reporter, treat_as_sprite(mat, size, 0)); | 53 REPORTER_ASSERT(reporter, treat_as_sprite(mat, size, 0)); |
| 54 } | 54 } |
| 55 } | 55 } |
| 56 | 56 |
| (...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 265 REPORTER_ASSERT(reporter, check_for_all_zeros(dst)); | 265 REPORTER_ASSERT(reporter, check_for_all_zeros(dst)); |
| 266 | 266 |
| 267 test_nan_antihair(); | 267 test_nan_antihair(); |
| 268 test_giantrepeat_crbug118018(reporter); | 268 test_giantrepeat_crbug118018(reporter); |
| 269 | 269 |
| 270 test_treatAsSprite(reporter); | 270 test_treatAsSprite(reporter); |
| 271 } | 271 } |
| 272 | 272 |
| 273 #include "TestClassDef.h" | 273 #include "TestClassDef.h" |
| 274 DEFINE_TESTCLASS("DrawBitmapRect", TestDrawBitmapRectClass, TestDrawBitmapRect) | 274 DEFINE_TESTCLASS("DrawBitmapRect", TestDrawBitmapRectClass, TestDrawBitmapRect) |
| OLD | NEW |