| 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 | 7 |
| 8 #include "SkCanvas.h" | 8 #include "SkCanvas.h" |
| 9 #include "SkPictureRecorder.h" | 9 #include "SkPictureRecorder.h" |
| 10 #include "SkTileGrid.h" | 10 #include "SkTileGrid.h" |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 MockCanvas(const SkBitmap& bm) : SkCanvas(bm) {} | 24 MockCanvas(const SkBitmap& bm) : SkCanvas(bm) {} |
| 25 | 25 |
| 26 virtual void drawRect(const SkRect& rect, const SkPaint&) { | 26 virtual void drawRect(const SkRect& rect, const SkPaint&) { |
| 27 // This capture occurs before quick reject. | 27 // This capture occurs before quick reject. |
| 28 fRects.push(rect); | 28 fRects.push(rect); |
| 29 } | 29 } |
| 30 | 30 |
| 31 SkTDArray<SkRect> fRects; | 31 SkTDArray<SkRect> fRects; |
| 32 }; | 32 }; |
| 33 | 33 |
| 34 static void verifyTileHits(skiatest::Reporter* reporter, SkRect rect, | 34 static void verify_tile_hits(skiatest::Reporter* reporter, SkRect rect, |
| 35 uint32_t tileMask, int borderPixels = 0) { | 35 uint32_t tileMask, int borderPixels = 0) { |
| 36 SkTileGridFactory::TileGridInfo info; | 36 SkTileGridFactory::TileGridInfo info; |
| 37 info.fMargin.set(borderPixels, borderPixels); | 37 info.fMargin.set(borderPixels, borderPixels); |
| 38 info.fOffset.setZero(); | 38 info.fOffset.setZero(); |
| 39 info.fTileInterval.set(10 - 2 * borderPixels, 10 - 2 * borderPixels); | 39 info.fTileInterval.set(10 - 2 * borderPixels, 10 - 2 * borderPixels); |
| 40 SkTileGrid grid(2, 2, info); | 40 SkTileGrid grid(2, 2, info); |
| 41 grid.insert(NULL, rect, false); | 41 grid.insert(0, rect, false); |
| 42 REPORTER_ASSERT(reporter, grid.tileCount(0, 0) == | 42 REPORTER_ASSERT(reporter, grid.tileCount(0, 0) == |
| 43 ((tileMask & kTopLeft_Tile)? 1 : 0)); | 43 ((tileMask & kTopLeft_Tile)? 1 : 0)); |
| 44 REPORTER_ASSERT(reporter, grid.tileCount(1, 0) == | 44 REPORTER_ASSERT(reporter, grid.tileCount(1, 0) == |
| 45 ((tileMask & kTopRight_Tile)? 1 : 0)); | 45 ((tileMask & kTopRight_Tile)? 1 : 0)); |
| 46 REPORTER_ASSERT(reporter, grid.tileCount(0, 1) == | 46 REPORTER_ASSERT(reporter, grid.tileCount(0, 1) == |
| 47 ((tileMask & kBottomLeft_Tile)? 1 : 0)); | 47 ((tileMask & kBottomLeft_Tile)? 1 : 0)); |
| 48 REPORTER_ASSERT(reporter, grid.tileCount(1, 1) == | 48 REPORTER_ASSERT(reporter, grid.tileCount(1, 1) == |
| 49 ((tileMask & kBottomRight_Tile)? 1 : 0)); | 49 ((tileMask & kBottomRight_Tile)? 1 : 0)); |
| 50 } | 50 } |
| 51 | 51 |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 216 // This test passes by not asserting. We do not validate the rects recor
ded | 216 // This test passes by not asserting. We do not validate the rects recor
ded |
| 217 // because the result is numerically unstable (floating point equality). | 217 // because the result is numerically unstable (floating point equality). |
| 218 // The content of any one of the four tiles of the tilegrid would be a v
alid | 218 // The content of any one of the four tiles of the tilegrid would be a v
alid |
| 219 // result since any bbox that covers the center point of the canvas will
be | 219 // result since any bbox that covers the center point of the canvas will
be |
| 220 // recorded in all four tiles. | 220 // recorded in all four tiles. |
| 221 } | 221 } |
| 222 } | 222 } |
| 223 | 223 |
| 224 DEF_TEST(TileGrid, reporter) { | 224 DEF_TEST(TileGrid, reporter) { |
| 225 // Out of bounds | 225 // Out of bounds |
| 226 verifyTileHits(reporter, SkRect::MakeXYWH(30, 0, 1, 1), 0); | 226 verify_tile_hits(reporter, SkRect::MakeXYWH(30, 0, 1, 1), 0); |
| 227 verifyTileHits(reporter, SkRect::MakeXYWH(0, 30, 1, 1), 0); | 227 verify_tile_hits(reporter, SkRect::MakeXYWH(0, 30, 1, 1), 0); |
| 228 verifyTileHits(reporter, SkRect::MakeXYWH(-10, 0, 1, 1), 0); | 228 verify_tile_hits(reporter, SkRect::MakeXYWH(-10, 0, 1, 1), 0); |
| 229 verifyTileHits(reporter, SkRect::MakeXYWH(0, -10, 1, 1), 0); | 229 verify_tile_hits(reporter, SkRect::MakeXYWH(0, -10, 1, 1), 0); |
| 230 | 230 |
| 231 // Dilation for AA consideration | 231 // Dilation for AA consideration |
| 232 verifyTileHits(reporter, SkRect::MakeXYWH(0, 0, 9, 9), kTopLeft_Tile); | 232 verify_tile_hits(reporter, SkRect::MakeXYWH(0, 0, 9, 9), kTopLeft_Tile); |
| 233 verifyTileHits(reporter, SkRect::MakeXYWH(0, 0, 10, 10), kAll_Tile); | 233 verify_tile_hits(reporter, SkRect::MakeXYWH(0, 0, 10, 10), kAll_Tile); |
| 234 verifyTileHits(reporter, SkRect::MakeXYWH(9, 9, 1, 1), kAll_Tile); | 234 verify_tile_hits(reporter, SkRect::MakeXYWH(9, 9, 1, 1), kAll_Tile); |
| 235 verifyTileHits(reporter, SkRect::MakeXYWH(10, 10, 1, 1), kAll_Tile); | 235 verify_tile_hits(reporter, SkRect::MakeXYWH(10, 10, 1, 1), kAll_Tile); |
| 236 verifyTileHits(reporter, SkRect::MakeXYWH(11, 11, 1, 1), kBottomRight_Tile)
; | 236 verify_tile_hits(reporter, SkRect::MakeXYWH(11, 11, 1, 1), kBottomRight_Tile
); |
| 237 | 237 |
| 238 // BorderPixels | 238 // BorderPixels |
| 239 verifyTileHits(reporter, SkRect::MakeXYWH(0, 0, 6, 6), kTopLeft_Tile, 1); | 239 verify_tile_hits(reporter, SkRect::MakeXYWH(0, 0, 6, 6), kTopLeft_Tile,
1); |
| 240 verifyTileHits(reporter, SkRect::MakeXYWH(0, 0, 7, 7), kAll_Tile, 1); | 240 verify_tile_hits(reporter, SkRect::MakeXYWH(0, 0, 7, 7), kAll_Tile,
1); |
| 241 verifyTileHits(reporter, SkRect::MakeXYWH(9, 9, 1, 1), kAll_Tile, 1); | 241 verify_tile_hits(reporter, SkRect::MakeXYWH(9, 9, 1, 1), kAll_Tile,
1); |
| 242 verifyTileHits(reporter, SkRect::MakeXYWH(10, 10, 1, 1), kBottomRight_Tile,
1); | 242 verify_tile_hits(reporter, SkRect::MakeXYWH(10, 10, 1, 1), kBottomRight_Tile
, 1); |
| 243 verifyTileHits(reporter, SkRect::MakeXYWH(17, 17, 1, 1), kBottomRight_Tile,
1); | 243 verify_tile_hits(reporter, SkRect::MakeXYWH(17, 17, 1, 1), kBottomRight_Tile
, 1); |
| 244 | 244 |
| 245 // BBoxes that overlap tiles | 245 // BBoxes that overlap tiles |
| 246 verifyTileHits(reporter, SkRect::MakeXYWH(5, 5, 10, 1), kTopLeft_Tile | kTo
pRight_Tile); | 246 verify_tile_hits(reporter, SkRect::MakeXYWH(5, 5, 10, 1), kTopLeft_Tile
| kTopRight_Tile); |
| 247 verifyTileHits(reporter, SkRect::MakeXYWH(5, 5, 1, 10), kTopLeft_Tile | | 247 verify_tile_hits(reporter, SkRect::MakeXYWH(5, 5, 1, 10), kTopLeft_Tile
| kBottomLeft_Tile); |
| 248 kBottomLeft_Tile); | 248 verify_tile_hits(reporter, SkRect::MakeXYWH(5, 5, 10, 10), kAll_Tile); |
| 249 verifyTileHits(reporter, SkRect::MakeXYWH(5, 5, 10, 10), kAll_Tile); | 249 verify_tile_hits(reporter, SkRect::MakeXYWH(-10, -10, 40, 40),kAll_Tile); |
| 250 verifyTileHits(reporter, SkRect::MakeXYWH(-10, -10, 40, 40), kAll_Tile); | |
| 251 } | 250 } |
| OLD | NEW |