// When the canvas clip covers the full picture, we don't need to call the BBH. DEF_TEST(Picture_SkipBBH, r) { SkRect bound = SkRect::MakeWH(320, 240); CountingBBH bbh(bound); SpoonFedBBHFactory factory(&bbh); SkPictureRecorder recorder; recorder.beginRecording(bound, &factory); SkAutoTUnref<const SkPicture> picture(recorder.endRecording()); SkCanvas big(640, 480), small(300, 200); picture->playback(&big); REPORTER_ASSERT(r, bbh.searchCalls == 0); picture->playback(&small); REPORTER_ASSERT(r, bbh.searchCalls == 1); }
// When the canvas clip covers the full picture, we don't need to call the BBH. DEF_TEST(Picture_SkipBBH, r) { SkRect bound = SkRect::MakeWH(320, 240); CountingBBH bbh(bound); SpoonFedBBHFactory factory(&bbh); SkPictureRecorder recorder; SkCanvas* c = recorder.beginRecording(bound, &factory); // Record a few ops so we don't hit a small- or empty- picture optimization. c->drawRect(bound, SkPaint()); c->drawRect(bound, SkPaint()); sk_sp<SkPicture> picture(recorder.finishRecordingAsPicture()); SkCanvas big(640, 480), small(300, 200); picture->playback(&big); REPORTER_ASSERT(r, bbh.searchCalls == 0); picture->playback(&small); REPORTER_ASSERT(r, bbh.searchCalls == 1); }