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 |