static void test_cull_rect_reset(skiatest::Reporter* reporter) { SkPictureRecorder recorder; SkRect bounds = SkRect::MakeWH(10, 10); SkRTreeFactory factory; SkCanvas* canvas = recorder.beginRecording(bounds, &factory); bounds = SkRect::MakeWH(100, 100); SkPaint paint; canvas->drawRect(bounds, paint); canvas->drawRect(bounds, paint); sk_sp<SkPicture> p(recorder.finishRecordingAsPictureWithCull(bounds)); const SkBigPicture* picture = p->asSkBigPicture(); REPORTER_ASSERT(reporter, picture); SkRect finalCullRect = picture->cullRect(); REPORTER_ASSERT(reporter, 0 == finalCullRect.fLeft); REPORTER_ASSERT(reporter, 0 == finalCullRect.fTop); REPORTER_ASSERT(reporter, 100 == finalCullRect.fBottom); REPORTER_ASSERT(reporter, 100 == finalCullRect.fRight); const SkBBoxHierarchy* pictureBBH = picture->bbh(); SkRect bbhCullRect = pictureBBH->getRootBound(); REPORTER_ASSERT(reporter, 0 == bbhCullRect.fLeft); REPORTER_ASSERT(reporter, 0 == bbhCullRect.fTop); REPORTER_ASSERT(reporter, 100 == bbhCullRect.fBottom); REPORTER_ASSERT(reporter, 100 == bbhCullRect.fRight); }