Index: tests/RecordDrawTest.cpp |
diff --git a/tests/RecordDrawTest.cpp b/tests/RecordDrawTest.cpp |
index d8ca48d7969c0904275bad925fc62fe1a9d6a07d..13be115253f4ac8bacee3680ed98a04a5a256745 100644 |
--- a/tests/RecordDrawTest.cpp |
+++ b/tests/RecordDrawTest.cpp |
@@ -122,26 +122,6 @@ DEF_TEST(RecordDraw_SetMatrixClobber, r) { |
REPORTER_ASSERT(r, setMatrix->matrix == expected); |
} |
-struct TestBBH : public SkBBoxHierarchy { |
- void insert(const SkRect boundsArray[], int N) override { |
- fEntries.setCount(N); |
- for (int i = 0; i < N; i++) { |
- Entry e = { i, boundsArray[i] }; |
- fEntries[i] = e; |
- } |
- } |
- |
- void search(const SkRect& query, SkTDArray<int>* results) const override {} |
- size_t bytesUsed() const override { return 0; } |
- SkRect getRootBound() const override { return SkRect::MakeEmpty(); } |
- |
- struct Entry { |
- int opIndex; |
- SkRect bounds; |
- }; |
- SkTDArray<Entry> fEntries; |
-}; |
- |
// Like a==b, with a little slop recognizing that float equality can be weird. |
static bool sloppy_rect_eq(SkRect a, SkRect b) { |
SkRect inset(a), outset(a); |
@@ -150,9 +130,7 @@ static bool sloppy_rect_eq(SkRect a, SkRect b) { |
return outset.contains(b) && !inset.contains(b); |
} |
-// This test is not meant to make total sense yet. It's testing the status quo |
-// of SkRecordFillBounds(), which itself doesn't make total sense yet. |
-DEF_TEST(RecordDraw_BBH, r) { |
+DEF_TEST(RecordDraw_BasicBounds, r) { |
SkRecord record; |
SkRecorder recorder(&record, W, H); |
recorder.save(); |
@@ -161,14 +139,11 @@ DEF_TEST(RecordDraw_BBH, r) { |
recorder.drawRect(SkRect::MakeWH(320, 240), SkPaint()); |
recorder.restore(); |
- TestBBH bbh; |
- SkRecordFillBounds(SkRect::MakeWH(SkIntToScalar(W), SkIntToScalar(H)), record, &bbh); |
- |
- REPORTER_ASSERT(r, bbh.fEntries.count() == 5); |
- for (int i = 0; i < bbh.fEntries.count(); i++) { |
- REPORTER_ASSERT(r, bbh.fEntries[i].opIndex == i); |
+ SkAutoTMalloc<SkRect> bounds(record.count()); |
+ SkRecordFillBounds(SkRect::MakeWH(SkIntToScalar(W), SkIntToScalar(H)), record, bounds); |
- REPORTER_ASSERT(r, sloppy_rect_eq(SkRect::MakeWH(400, 480), bbh.fEntries[i].bounds)); |
+ for (int i = 0; i < record.count(); i++) { |
+ REPORTER_ASSERT(r, sloppy_rect_eq(SkRect::MakeWH(400, 480), bounds[i])); |
} |
} |
@@ -187,15 +162,14 @@ DEF_TEST(RecordDraw_TextBounds, r) { |
const SkPoint pos[] = { {40, 50}, {60, 70} }; |
recorder.drawPosText(text, bytes, pos, SkPaint()); |
- TestBBH bbh; |
- SkRecordFillBounds(SkRect::MakeWH(SkIntToScalar(W), SkIntToScalar(H)), record, &bbh); |
- REPORTER_ASSERT(r, bbh.fEntries.count() == 2); |
+ SkAutoTMalloc<SkRect> bounds(record.count()); |
+ SkRecordFillBounds(SkRect::MakeWH(SkIntToScalar(W), SkIntToScalar(H)), record, bounds); |
// We can make these next assertions confidently because SkRecordFillBounds |
// builds its bounds by overestimating font metrics in a platform-independent way. |
// If that changes, these tests will need to be more flexible. |
- REPORTER_ASSERT(r, sloppy_rect_eq(bbh.fEntries[0].bounds, SkRect::MakeLTRB(0, 0, 140, 60))); |
- REPORTER_ASSERT(r, sloppy_rect_eq(bbh.fEntries[1].bounds, SkRect::MakeLTRB(0, 20, 180, 100))); |
+ REPORTER_ASSERT(r, sloppy_rect_eq(bounds[0], SkRect::MakeLTRB(0, 0, 140, 60))); |
+ REPORTER_ASSERT(r, sloppy_rect_eq(bounds[1], SkRect::MakeLTRB(0, 20, 180, 100))); |
} |
// Base test to ensure start/stop range is respected |
@@ -248,13 +222,12 @@ DEF_TEST(RecordDraw_SaveLayerAffectsClipBounds, r) { |
// |
// The second bug showed up as adjusting the picture bounds (0,0,50,50) by the drop shadow too. |
// The saveLayer, clipRect, and restore bounds were incorrectly (0,0,70,50). |
- TestBBH bbh; |
- SkRecordFillBounds(SkRect::MakeWH(50, 50), record, &bbh); |
- REPORTER_ASSERT(r, bbh.fEntries.count() == 4); |
- REPORTER_ASSERT(r, sloppy_rect_eq(bbh.fEntries[0].bounds, SkRect::MakeLTRB(0, 0, 50, 50))); |
- REPORTER_ASSERT(r, sloppy_rect_eq(bbh.fEntries[1].bounds, SkRect::MakeLTRB(0, 0, 50, 50))); |
- REPORTER_ASSERT(r, sloppy_rect_eq(bbh.fEntries[2].bounds, SkRect::MakeLTRB(0, 0, 40, 40))); |
- REPORTER_ASSERT(r, sloppy_rect_eq(bbh.fEntries[3].bounds, SkRect::MakeLTRB(0, 0, 50, 50))); |
+ SkAutoTMalloc<SkRect> bounds(record.count()); |
+ SkRecordFillBounds(SkRect::MakeWH(50, 50), record, bounds); |
+ REPORTER_ASSERT(r, sloppy_rect_eq(bounds[0], SkRect::MakeLTRB(0, 0, 50, 50))); |
+ REPORTER_ASSERT(r, sloppy_rect_eq(bounds[1], SkRect::MakeLTRB(0, 0, 50, 50))); |
+ REPORTER_ASSERT(r, sloppy_rect_eq(bounds[2], SkRect::MakeLTRB(0, 0, 40, 40))); |
+ REPORTER_ASSERT(r, sloppy_rect_eq(bounds[3], SkRect::MakeLTRB(0, 0, 50, 50))); |
} |
// When a saveLayer provides an explicit bound and has a complex paint (e.g., one that |
@@ -267,18 +240,17 @@ DEF_TEST(RecordDraw_SaveLayerBoundsAffectsClipBounds, r) { |
SkPaint p; |
p.setXfermodeMode(SkXfermode::kSrc_Mode); |
- SkRect bounds = SkRect::MakeLTRB(10, 10, 40, 40); |
- recorder.saveLayer(&bounds, &p); |
+ SkRect layerBounds = SkRect::MakeLTRB(10, 10, 40, 40); |
+ recorder.saveLayer(&layerBounds, &p); |
recorder.drawRect(SkRect::MakeLTRB(20, 20, 30, 30), SkPaint()); |
recorder.restore(); |
- TestBBH bbh; |
- SkRecordFillBounds(SkRect::MakeWH(50, 50), record, &bbh); |
- REPORTER_ASSERT(r, bbh.fEntries.count() == 3); |
+ SkAutoTMalloc<SkRect> bounds(record.count()); |
+ SkRecordFillBounds(SkRect::MakeWH(50, 50), record, bounds); |
if (!SkCanvas::Internal_Private_GetIgnoreSaveLayerBounds()) { |
- REPORTER_ASSERT(r, sloppy_rect_eq(bbh.fEntries[0].bounds, SkRect::MakeLTRB(10, 10, 40, 40))); |
- REPORTER_ASSERT(r, sloppy_rect_eq(bbh.fEntries[1].bounds, SkRect::MakeLTRB(20, 20, 30, 30))); |
- REPORTER_ASSERT(r, sloppy_rect_eq(bbh.fEntries[2].bounds, SkRect::MakeLTRB(10, 10, 40, 40))); |
+ REPORTER_ASSERT(r, sloppy_rect_eq(bounds[0], SkRect::MakeLTRB(10, 10, 40, 40))); |
+ REPORTER_ASSERT(r, sloppy_rect_eq(bounds[1], SkRect::MakeLTRB(20, 20, 30, 30))); |
+ REPORTER_ASSERT(r, sloppy_rect_eq(bounds[2], SkRect::MakeLTRB(10, 10, 40, 40))); |
} |
} |