| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2012 Google Inc. | 2 * Copyright 2012 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 #include "Test.h" | 7 #include "Test.h" |
| 8 #include "SkBitmapDevice.h" | 8 #include "SkBitmapDevice.h" |
| 9 #include "SkCanvas.h" | 9 #include "SkCanvas.h" |
| 10 #include "SkColorPriv.h" | 10 #include "SkColorPriv.h" |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 68 int count, DrawBitmapProc proc) { | 68 int count, DrawBitmapProc proc) { |
| 69 SkPicture* pic = new SkPicture; | 69 SkPicture* pic = new SkPicture; |
| 70 SkCanvas* canvas = pic->beginRecording(1000, 1000); | 70 SkCanvas* canvas = pic->beginRecording(1000, 1000); |
| 71 for (int i = 0; i < count; ++i) { | 71 for (int i = 0; i < count; ++i) { |
| 72 proc(canvas, bm[i], pos[i]); | 72 proc(canvas, bm[i], pos[i]); |
| 73 } | 73 } |
| 74 pic->endRecording(); | 74 pic->endRecording(); |
| 75 return pic; | 75 return pic; |
| 76 } | 76 } |
| 77 | 77 |
| 78 static void rand_rect(SkRect* rect, SkMWCRandom& rand, SkScalar W, SkScalar H) { | 78 static void rand_rect(SkRect* rect, SkRandom& rand, SkScalar W, SkScalar H) { |
| 79 rect->fLeft = rand.nextRangeScalar(-W, 2*W); | 79 rect->fLeft = rand.nextRangeScalar(-W, 2*W); |
| 80 rect->fTop = rand.nextRangeScalar(-H, 2*H); | 80 rect->fTop = rand.nextRangeScalar(-H, 2*H); |
| 81 rect->fRight = rect->fLeft + rand.nextRangeScalar(0, W); | 81 rect->fRight = rect->fLeft + rand.nextRangeScalar(0, W); |
| 82 rect->fBottom = rect->fTop + rand.nextRangeScalar(0, H); | 82 rect->fBottom = rect->fTop + rand.nextRangeScalar(0, H); |
| 83 | 83 |
| 84 // we integralize rect to make our tests more predictable, since Gather is | 84 // we integralize rect to make our tests more predictable, since Gather is |
| 85 // a little sloppy. | 85 // a little sloppy. |
| 86 SkIRect ir; | 86 SkIRect ir; |
| 87 rect->round(&ir); | 87 rect->round(&ir); |
| 88 rect->set(ir); | 88 rect->set(ir); |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 171 // corresponding bitmap/pixelref | 171 // corresponding bitmap/pixelref |
| 172 for (int i = 0; i < N; ++i) { | 172 for (int i = 0; i < N; ++i) { |
| 173 make_bm(&bm[i], IW, IH, SkColorSetARGB(0xFF, i, i, i), true); | 173 make_bm(&bm[i], IW, IH, SkColorSetARGB(0xFF, i, i, i), true); |
| 174 refs[i] = bm[i].pixelRef(); | 174 refs[i] = bm[i].pixelRef(); |
| 175 } | 175 } |
| 176 | 176 |
| 177 static const DrawBitmapProc procs[] = { | 177 static const DrawBitmapProc procs[] = { |
| 178 drawbitmap_proc, drawbitmaprect_proc, drawshader_proc | 178 drawbitmap_proc, drawbitmaprect_proc, drawshader_proc |
| 179 }; | 179 }; |
| 180 | 180 |
| 181 SkMWCRandom rand; | 181 SkRandom rand; |
| 182 for (size_t k = 0; k < SK_ARRAY_COUNT(procs); ++k) { | 182 for (size_t k = 0; k < SK_ARRAY_COUNT(procs); ++k) { |
| 183 SkAutoTUnref<SkPicture> pic(record_bitmaps(bm, pos, N, procs[k])); | 183 SkAutoTUnref<SkPicture> pic(record_bitmaps(bm, pos, N, procs[k])); |
| 184 | 184 |
| 185 // quick check for a small piece of each quadrant, which should just | 185 // quick check for a small piece of each quadrant, which should just |
| 186 // contain 1 bitmap. | 186 // contain 1 bitmap. |
| 187 for (size_t i = 0; i < SK_ARRAY_COUNT(pos); ++i) { | 187 for (size_t i = 0; i < SK_ARRAY_COUNT(pos); ++i) { |
| 188 SkRect r; | 188 SkRect r; |
| 189 r.set(2, 2, W - 2, H - 2); | 189 r.set(2, 2, W - 2, H - 2); |
| 190 r.offset(pos[i].fX, pos[i].fY); | 190 r.offset(pos[i].fX, pos[i].fY); |
| 191 SkAutoDataUnref data(SkPictureUtils::GatherPixelRefs(pic, r)); | 191 SkAutoDataUnref data(SkPictureUtils::GatherPixelRefs(pic, r)); |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 256 // Ensure that serializing an empty picture does not assert. Likewise only runs
in debug mode. | 256 // Ensure that serializing an empty picture does not assert. Likewise only runs
in debug mode. |
| 257 static void test_serializing_empty_picture() { | 257 static void test_serializing_empty_picture() { |
| 258 SkPicture picture; | 258 SkPicture picture; |
| 259 picture.beginRecording(0, 0); | 259 picture.beginRecording(0, 0); |
| 260 picture.endRecording(); | 260 picture.endRecording(); |
| 261 SkDynamicMemoryWStream stream; | 261 SkDynamicMemoryWStream stream; |
| 262 picture.serialize(&stream); | 262 picture.serialize(&stream); |
| 263 } | 263 } |
| 264 #endif | 264 #endif |
| 265 | 265 |
| 266 static void rand_op(SkCanvas* canvas, SkMWCRandom& rand) { | 266 static void rand_op(SkCanvas* canvas, SkRandom& rand) { |
| 267 SkPaint paint; | 267 SkPaint paint; |
| 268 SkRect rect = SkRect::MakeWH(50, 50); | 268 SkRect rect = SkRect::MakeWH(50, 50); |
| 269 | 269 |
| 270 SkScalar unit = rand.nextUScalar1(); | 270 SkScalar unit = rand.nextUScalar1(); |
| 271 if (unit <= 0.3) { | 271 if (unit <= 0.3) { |
| 272 // SkDebugf("save\n"); | 272 // SkDebugf("save\n"); |
| 273 canvas->save(); | 273 canvas->save(); |
| 274 } else if (unit <= 0.6) { | 274 } else if (unit <= 0.6) { |
| 275 // SkDebugf("restore\n"); | 275 // SkDebugf("restore\n"); |
| 276 canvas->restore(); | 276 canvas->restore(); |
| 277 } else if (unit <= 0.9) { | 277 } else if (unit <= 0.9) { |
| 278 // SkDebugf("clip\n"); | 278 // SkDebugf("clip\n"); |
| 279 canvas->clipRect(rect); | 279 canvas->clipRect(rect); |
| 280 } else { | 280 } else { |
| 281 // SkDebugf("draw\n"); | 281 // SkDebugf("draw\n"); |
| 282 canvas->drawPaint(paint); | 282 canvas->drawPaint(paint); |
| 283 } | 283 } |
| 284 } | 284 } |
| 285 | 285 |
| 286 static void test_peephole() { | 286 static void test_peephole() { |
| 287 SkMWCRandom rand; | 287 SkRandom rand; |
| 288 | 288 |
| 289 for (int j = 0; j < 100; j++) { | 289 for (int j = 0; j < 100; j++) { |
| 290 SkMWCRandom rand2(rand); // remember the seed | 290 SkRandom rand2(rand); // remember the seed |
| 291 | 291 |
| 292 SkPicture picture; | 292 SkPicture picture; |
| 293 SkCanvas* canvas = picture.beginRecording(100, 100); | 293 SkCanvas* canvas = picture.beginRecording(100, 100); |
| 294 | 294 |
| 295 for (int i = 0; i < 1000; ++i) { | 295 for (int i = 0; i < 1000; ++i) { |
| 296 rand_op(canvas, rand); | 296 rand_op(canvas, rand); |
| 297 } | 297 } |
| 298 picture.endRecording(); | 298 picture.endRecording(); |
| 299 | 299 |
| 300 rand = rand2; | 300 rand = rand2; |
| (...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 617 test_peephole(); | 617 test_peephole(); |
| 618 test_gatherpixelrefs(reporter); | 618 test_gatherpixelrefs(reporter); |
| 619 test_bitmap_with_encoded_data(reporter); | 619 test_bitmap_with_encoded_data(reporter); |
| 620 test_clone_empty(reporter); | 620 test_clone_empty(reporter); |
| 621 test_clip_bound_opt(reporter); | 621 test_clip_bound_opt(reporter); |
| 622 test_clip_expansion(reporter); | 622 test_clip_expansion(reporter); |
| 623 } | 623 } |
| 624 | 624 |
| 625 #include "TestClassDef.h" | 625 #include "TestClassDef.h" |
| 626 DEFINE_TESTCLASS("Pictures", PictureTestClass, TestPicture) | 626 DEFINE_TESTCLASS("Pictures", PictureTestClass, TestPicture) |
| OLD | NEW |