diff options
author | 2014-08-27 10:39:42 -0700 | |
---|---|---|
committer | 2014-08-27 10:39:42 -0700 | |
commit | 533eb782edaa0b6fece6166d3001edf72ec39f11 (patch) | |
tree | a4d863ff13725c8c8c33c9b50d63ec74c54deff1 /tests | |
parent | 3031350e05d8ef8c67a5e9ce8e5c428c8560eb50 (diff) |
Convert BBH APIs to use SkRect.
Still TODO: convert internals of SkTileGrid.cpp and SkRTree.cpp to work in floats too.
NOTREECHECKS=true
BUG=skia:1021
R=robertphillips@google.com, reed@google.com, mtklein@google.com
Author: mtklein@chromium.org
Review URL: https://codereview.chromium.org/511613002
Diffstat (limited to 'tests')
-rw-r--r-- | tests/BBoxHierarchyTest.cpp | 25 | ||||
-rw-r--r-- | tests/PictureTest.cpp | 4 | ||||
-rw-r--r-- | tests/RTreeTest.cpp | 24 | ||||
-rw-r--r-- | tests/RecordDrawTest.cpp | 8 | ||||
-rw-r--r-- | tests/TileGridTest.cpp | 38 |
5 files changed, 53 insertions, 46 deletions
diff --git a/tests/BBoxHierarchyTest.cpp b/tests/BBoxHierarchyTest.cpp index 305543b7eb..b9cbbc4f9a 100644 --- a/tests/BBoxHierarchyTest.cpp +++ b/tests/BBoxHierarchyTest.cpp @@ -17,20 +17,20 @@ static const int NUM_RECTS = 200; static const size_t NUM_ITERATIONS = 100; static const size_t NUM_QUERIES = 50; -static const int MAX_SIZE = 1000; +static const SkScalar MAX_SIZE = 1000.0f; struct DataRect { - SkIRect rect; + SkRect rect; void* data; }; -static SkIRect random_rect(SkRandom& rand) { - SkIRect rect = {0,0,0,0}; +static SkRect random_rect(SkRandom& rand) { + SkRect rect = {0,0,0,0}; while (rect.isEmpty()) { - rect.fLeft = rand.nextS() % MAX_SIZE; - rect.fRight = rand.nextS() % MAX_SIZE; - rect.fTop = rand.nextS() % MAX_SIZE; - rect.fBottom = rand.nextS() % MAX_SIZE; + rect.fLeft = rand.nextRangeF(0, MAX_SIZE); + rect.fRight = rand.nextRangeF(0, MAX_SIZE); + rect.fTop = rand.nextRangeF(0, MAX_SIZE); + rect.fBottom = rand.nextRangeF(0, MAX_SIZE); rect.sort(); } return rect; @@ -43,12 +43,15 @@ static void random_data_rects(SkRandom& rand, DataRect out[], int n) { } } -static bool verify_query(SkIRect query, DataRect rects[], +static bool verify_query(SkRect query, DataRect rects[], SkTDArray<void*>& found) { + // TODO(mtklein): no need to do this after everything's SkRects + query.roundOut(); + SkTDArray<void*> expected; // manually intersect with every rectangle for (int i = 0; i < NUM_RECTS; ++i) { - if (SkIRect::IntersectsNoEmptyCheck(query, rects[i].rect)) { + if (SkRect::Intersects(query, rects[i].rect)) { expected.push(rects[i].data); } } @@ -73,7 +76,7 @@ static void run_queries(skiatest::Reporter* reporter, SkRandom& rand, DataRect r SkBBoxHierarchy& tree) { for (size_t i = 0; i < NUM_QUERIES; ++i) { SkTDArray<void*> hits; - SkIRect query = random_rect(rand); + SkRect query = random_rect(rand); tree.search(query, &hits); REPORTER_ASSERT(reporter, verify_query(query, rects, hits)); } diff --git a/tests/PictureTest.cpp b/tests/PictureTest.cpp index 98ebf6a01e..3535e8e3bf 100644 --- a/tests/PictureTest.cpp +++ b/tests/PictureTest.cpp @@ -1808,12 +1808,12 @@ struct CountingBBH : public SkBBoxHierarchy { CountingBBH() : searchCalls(0) {} - virtual void search(const SkIRect& query, SkTDArray<void*>* results) const { + virtual void search(const SkRect& query, SkTDArray<void*>* results) const { this->searchCalls++; } // All other methods unimplemented. - virtual void insert(void* data, const SkIRect& bounds, bool defer) {} + virtual void insert(void* data, const SkRect& bounds, bool defer) {} virtual void flushDeferredInserts() {} virtual void clear() {} virtual int getCount() const { return 0; } diff --git a/tests/RTreeTest.cpp b/tests/RTreeTest.cpp index ae8c005170..087f19a7ef 100644 --- a/tests/RTreeTest.cpp +++ b/tests/RTreeTest.cpp @@ -18,17 +18,17 @@ static const size_t NUM_ITERATIONS = 100; static const size_t NUM_QUERIES = 50; struct DataRect { - SkIRect rect; + SkRect rect; void* data; }; -static SkIRect random_rect(SkRandom& rand) { - SkIRect rect = {0,0,0,0}; +static SkRect random_rect(SkRandom& rand) { + SkRect rect = {0,0,0,0}; while (rect.isEmpty()) { - rect.fLeft = rand.nextS() % 1000; - rect.fRight = rand.nextS() % 1000; - rect.fTop = rand.nextS() % 1000; - rect.fBottom = rand.nextS() % 1000; + rect.fLeft = rand.nextRangeF(0, 1000); + rect.fRight = rand.nextRangeF(0, 1000); + rect.fTop = rand.nextRangeF(0, 1000); + rect.fBottom = rand.nextRangeF(0, 1000); rect.sort(); } return rect; @@ -41,12 +41,16 @@ static void random_data_rects(SkRandom& rand, DataRect out[], int n) { } } -static bool verify_query(SkIRect query, DataRect rects[], +static bool verify_query(SkRect query, DataRect rects[], SkTDArray<void*>& found) { + // TODO(mtklein): no need to do this after everything's SkRects + query.roundOut(); + SkTDArray<void*> expected; + // manually intersect with every rectangle for (int i = 0; i < NUM_RECTS; ++i) { - if (SkIRect::IntersectsNoEmptyCheck(query, rects[i].rect)) { + if (SkRect::Intersects(query, rects[i].rect)) { expected.push(rects[i].data); } } @@ -71,7 +75,7 @@ static void run_queries(skiatest::Reporter* reporter, SkRandom& rand, DataRect r SkRTree& tree) { for (size_t i = 0; i < NUM_QUERIES; ++i) { SkTDArray<void*> hits; - SkIRect query = random_rect(rand); + SkRect query = random_rect(rand); tree.search(query, &hits); REPORTER_ASSERT(reporter, verify_query(query, rects, hits)); } diff --git a/tests/RecordDrawTest.cpp b/tests/RecordDrawTest.cpp index 91ed2f06a9..b9ab2dce25 100644 --- a/tests/RecordDrawTest.cpp +++ b/tests/RecordDrawTest.cpp @@ -97,7 +97,7 @@ DEF_TEST(RecordDraw_SetMatrixClobber, r) { } struct TestBBH : public SkBBoxHierarchy { - virtual void insert(void* data, const SkIRect& bounds, bool defer) SK_OVERRIDE { + virtual void insert(void* data, const SkRect& bounds, bool defer) SK_OVERRIDE { Entry e = { (uintptr_t)data, bounds }; entries.push(e); } @@ -105,14 +105,14 @@ struct TestBBH : public SkBBoxHierarchy { virtual void flushDeferredInserts() SK_OVERRIDE {} - virtual void search(const SkIRect& query, SkTDArray<void*>* results) const SK_OVERRIDE {} + virtual void search(const SkRect& query, SkTDArray<void*>* results) const SK_OVERRIDE {} virtual void clear() SK_OVERRIDE {} virtual void rewindInserts() SK_OVERRIDE {} virtual int getDepth() const SK_OVERRIDE { return -1; } struct Entry { uintptr_t data; - SkIRect bounds; + SkRect bounds; }; SkTDArray<Entry> entries; }; @@ -137,6 +137,6 @@ DEF_TEST(RecordDraw_BBH, r) { for (int i = 0; i < bbh.entries.count(); i++) { REPORTER_ASSERT(r, bbh.entries[i].data == (uintptr_t)i); - REPORTER_ASSERT(r, bbh.entries[i].bounds == SkIRect::MakeWH(400, 480)); + REPORTER_ASSERT(r, bbh.entries[i].bounds == SkRect::MakeWH(400, 480)); } } diff --git a/tests/TileGridTest.cpp b/tests/TileGridTest.cpp index f6a9f876eb..81f383d97e 100644 --- a/tests/TileGridTest.cpp +++ b/tests/TileGridTest.cpp @@ -31,7 +31,7 @@ public: SkTDArray<SkRect> fRects; }; -static void verifyTileHits(skiatest::Reporter* reporter, SkIRect rect, +static void verifyTileHits(skiatest::Reporter* reporter, SkRect rect, uint32_t tileMask, int borderPixels = 0) { SkTileGridFactory::TileGridInfo info; info.fMargin.set(borderPixels, borderPixels); @@ -223,29 +223,29 @@ DEF_TEST(TileGrid_OverlapOffsetQueryAlignment, reporter) { DEF_TEST(TileGrid, reporter) { // Out of bounds - verifyTileHits(reporter, SkIRect::MakeXYWH(30, 0, 1, 1), 0); - verifyTileHits(reporter, SkIRect::MakeXYWH(0, 30, 1, 1), 0); - verifyTileHits(reporter, SkIRect::MakeXYWH(-10, 0, 1, 1), 0); - verifyTileHits(reporter, SkIRect::MakeXYWH(0, -10, 1, 1), 0); + verifyTileHits(reporter, SkRect::MakeXYWH(30, 0, 1, 1), 0); + verifyTileHits(reporter, SkRect::MakeXYWH(0, 30, 1, 1), 0); + verifyTileHits(reporter, SkRect::MakeXYWH(-10, 0, 1, 1), 0); + verifyTileHits(reporter, SkRect::MakeXYWH(0, -10, 1, 1), 0); // Dilation for AA consideration - verifyTileHits(reporter, SkIRect::MakeXYWH(0, 0, 9, 9), kTopLeft_Tile); - verifyTileHits(reporter, SkIRect::MakeXYWH(0, 0, 10, 10), kAll_Tile); - verifyTileHits(reporter, SkIRect::MakeXYWH(9, 9, 1, 1), kAll_Tile); - verifyTileHits(reporter, SkIRect::MakeXYWH(10, 10, 1, 1), kAll_Tile); - verifyTileHits(reporter, SkIRect::MakeXYWH(11, 11, 1, 1), kBottomRight_Tile); + verifyTileHits(reporter, SkRect::MakeXYWH(0, 0, 9, 9), kTopLeft_Tile); + verifyTileHits(reporter, SkRect::MakeXYWH(0, 0, 10, 10), kAll_Tile); + verifyTileHits(reporter, SkRect::MakeXYWH(9, 9, 1, 1), kAll_Tile); + verifyTileHits(reporter, SkRect::MakeXYWH(10, 10, 1, 1), kAll_Tile); + verifyTileHits(reporter, SkRect::MakeXYWH(11, 11, 1, 1), kBottomRight_Tile); // BorderPixels - verifyTileHits(reporter, SkIRect::MakeXYWH(0, 0, 6, 6), kTopLeft_Tile, 1); - verifyTileHits(reporter, SkIRect::MakeXYWH(0, 0, 7, 7), kAll_Tile, 1); - verifyTileHits(reporter, SkIRect::MakeXYWH(9, 9, 1, 1), kAll_Tile, 1); - verifyTileHits(reporter, SkIRect::MakeXYWH(10, 10, 1, 1), kBottomRight_Tile, 1); - verifyTileHits(reporter, SkIRect::MakeXYWH(17, 17, 1, 1), kBottomRight_Tile, 1); + verifyTileHits(reporter, SkRect::MakeXYWH(0, 0, 6, 6), kTopLeft_Tile, 1); + verifyTileHits(reporter, SkRect::MakeXYWH(0, 0, 7, 7), kAll_Tile, 1); + verifyTileHits(reporter, SkRect::MakeXYWH(9, 9, 1, 1), kAll_Tile, 1); + verifyTileHits(reporter, SkRect::MakeXYWH(10, 10, 1, 1), kBottomRight_Tile, 1); + verifyTileHits(reporter, SkRect::MakeXYWH(17, 17, 1, 1), kBottomRight_Tile, 1); // BBoxes that overlap tiles - verifyTileHits(reporter, SkIRect::MakeXYWH(5, 5, 10, 1), kTopLeft_Tile | kTopRight_Tile); - verifyTileHits(reporter, SkIRect::MakeXYWH(5, 5, 1, 10), kTopLeft_Tile | + verifyTileHits(reporter, SkRect::MakeXYWH(5, 5, 10, 1), kTopLeft_Tile | kTopRight_Tile); + verifyTileHits(reporter, SkRect::MakeXYWH(5, 5, 1, 10), kTopLeft_Tile | kBottomLeft_Tile); - verifyTileHits(reporter, SkIRect::MakeXYWH(5, 5, 10, 10), kAll_Tile); - verifyTileHits(reporter, SkIRect::MakeXYWH(-10, -10, 40, 40), kAll_Tile); + verifyTileHits(reporter, SkRect::MakeXYWH(5, 5, 10, 10), kAll_Tile); + verifyTileHits(reporter, SkRect::MakeXYWH(-10, -10, 40, 40), kAll_Tile); } |