Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(97)

Side by Side Diff: cc/tiling_data_unittest.cc

Issue 11887027: cc: Add iterator and big border support to TilingData (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« cc/tiling_data.cc ('K') | « cc/tiling_data.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/tiling_data.h" 5 #include "cc/tiling_data.h"
6 6
7 #include "cc/test/geometry_test_utils.h"
7 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
8 9
9 namespace cc { 10 namespace cc {
10 namespace { 11 namespace {
11 12
12 int NumTiles( 13 int NumTiles(
13 gfx::Size max_texture_size, 14 gfx::Size max_texture_size,
14 gfx::Size total_size, 15 gfx::Size total_size,
15 bool has_border_texels) { 16 bool has_border_texels) {
16 TilingData tiling(max_texture_size, total_size, has_border_texels); 17 TilingData tiling(max_texture_size, total_size, has_border_texels);
(...skipping 18 matching lines...) Expand all
35 36
36 int YIndex( 37 int YIndex(
37 gfx::Size max_texture_size, 38 gfx::Size max_texture_size,
38 gfx::Size total_size, 39 gfx::Size total_size,
39 bool has_border_texels, 40 bool has_border_texels,
40 int y_coord) { 41 int y_coord) {
41 TilingData tiling(max_texture_size, total_size, has_border_texels); 42 TilingData tiling(max_texture_size, total_size, has_border_texels);
42 return tiling.TileYIndexFromSrcCoord(y_coord); 43 return tiling.TileYIndexFromSrcCoord(y_coord);
43 } 44 }
44 45
46 int BorderXIndex(
47 gfx::Size max_texture_size,
48 gfx::Size total_size,
49 bool has_border_texels,
50 int x_coord) {
51 TilingData tiling(max_texture_size, total_size, has_border_texels);
52 return tiling.BorderTileXIndexFromSrcCoord(x_coord);
53 }
54
55 int BorderYIndex(
56 gfx::Size max_texture_size,
57 gfx::Size total_size,
58 bool has_border_texels,
59 int y_coord) {
60 TilingData tiling(max_texture_size, total_size, has_border_texels);
61 return tiling.BorderTileYIndexFromSrcCoord(y_coord);
62 }
63
45 int PosX( 64 int PosX(
46 gfx::Size max_texture_size, 65 gfx::Size max_texture_size,
47 gfx::Size total_size, 66 gfx::Size total_size,
48 bool has_border_texels, 67 bool has_border_texels,
49 int x_index) { 68 int x_index) {
50 TilingData tiling(max_texture_size, total_size, has_border_texels); 69 TilingData tiling(max_texture_size, total_size, has_border_texels);
51 return tiling.TilePositionX(x_index); 70 return tiling.TilePositionX(x_index);
52 } 71 }
53 72
54 int PosY( 73 int PosY(
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
238 EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 0)); 257 EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 0));
239 EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 1)); 258 EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 1));
240 EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 2)); 259 EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 2));
241 260
242 EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(4, 3), true, 0)); 261 EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(4, 3), true, 0));
243 EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(4, 3), true, 1)); 262 EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(4, 3), true, 1));
244 EXPECT_EQ(1, XIndex(gfx::Size(3, 3), gfx::Size(4, 3), true, 2)); 263 EXPECT_EQ(1, XIndex(gfx::Size(3, 3), gfx::Size(4, 3), true, 2));
245 EXPECT_EQ(1, XIndex(gfx::Size(3, 3), gfx::Size(4, 3), true, 3)); 264 EXPECT_EQ(1, XIndex(gfx::Size(3, 3), gfx::Size(4, 3), true, 3));
246 } 265 }
247 266
267 TEST(TilingDataTest, borderTileXIndexFromSrcCoord)
268 {
269 EXPECT_EQ(0, BorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 0));
270 EXPECT_EQ(0, BorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 1));
271 EXPECT_EQ(0, BorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 2));
272 EXPECT_EQ(1, BorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 3));
273 EXPECT_EQ(1, BorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 4));
274 EXPECT_EQ(1, BorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 5));
275 EXPECT_EQ(2, BorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 6));
276 EXPECT_EQ(2, BorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 7));
277 EXPECT_EQ(2, BorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 8));
278 EXPECT_EQ(3, BorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 9));
279 EXPECT_EQ(3, BorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 10));
280 EXPECT_EQ(3, BorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 11));
281
282 EXPECT_EQ(0, BorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 0));
283 EXPECT_EQ(0, BorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 1));
284 EXPECT_EQ(0, BorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 2));
285 EXPECT_EQ(1, BorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 3));
286 EXPECT_EQ(2, BorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 4));
287 EXPECT_EQ(3, BorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 5));
288 EXPECT_EQ(4, BorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 6));
289 EXPECT_EQ(5, BorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 7));
290 EXPECT_EQ(6, BorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 8));
291 EXPECT_EQ(7, BorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 9));
292 EXPECT_EQ(7, BorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 10));
293 EXPECT_EQ(7, BorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 11));
294
295 EXPECT_EQ(0, BorderXIndex(gfx::Size(1, 1), gfx::Size(1, 1), false, 0));
296 EXPECT_EQ(0, BorderXIndex(gfx::Size(2, 2), gfx::Size(2, 2), false, 0));
297 EXPECT_EQ(0, BorderXIndex(gfx::Size(2, 2), gfx::Size(2, 2), false, 1));
298 EXPECT_EQ(0, BorderXIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 0));
299 EXPECT_EQ(0, BorderXIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 1));
300 EXPECT_EQ(0, BorderXIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 2));
301
302 EXPECT_EQ(0, BorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), false, 0));
303 EXPECT_EQ(0, BorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), false, 1));
304 EXPECT_EQ(0, BorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), false, 2));
305 EXPECT_EQ(1, BorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), false, 3));
306
307 EXPECT_EQ(0, BorderXIndex(gfx::Size(1, 1), gfx::Size(1, 1), true, 0));
308 EXPECT_EQ(0, BorderXIndex(gfx::Size(2, 2), gfx::Size(2, 2), true, 0));
309 EXPECT_EQ(0, BorderXIndex(gfx::Size(2, 2), gfx::Size(2, 2), true, 1));
310 EXPECT_EQ(0, BorderXIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 0));
311 EXPECT_EQ(0, BorderXIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 1));
312 EXPECT_EQ(0, BorderXIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 2));
313
314 EXPECT_EQ(0, BorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), true, 0));
315 EXPECT_EQ(0, BorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), true, 1));
316 EXPECT_EQ(0, BorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), true, 2));
317 EXPECT_EQ(1, BorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), true, 3));
318 }
319
248 TEST(TilingDataTest, tileYIndexFromSrcCoord) 320 TEST(TilingDataTest, tileYIndexFromSrcCoord)
249 { 321 {
250 EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 0)); 322 EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 0));
251 EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 1)); 323 EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 1));
252 EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 2)); 324 EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 2));
253 EXPECT_EQ(1, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 3)); 325 EXPECT_EQ(1, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 3));
254 EXPECT_EQ(1, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 4)); 326 EXPECT_EQ(1, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 4));
255 EXPECT_EQ(1, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 5)); 327 EXPECT_EQ(1, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 5));
256 EXPECT_EQ(2, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 6)); 328 EXPECT_EQ(2, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 6));
257 EXPECT_EQ(2, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 7)); 329 EXPECT_EQ(2, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 7));
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 0)); 363 EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 0));
292 EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 1)); 364 EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 1));
293 EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 2)); 365 EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 2));
294 366
295 EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(3, 4), true, 0)); 367 EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(3, 4), true, 0));
296 EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(3, 4), true, 1)); 368 EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(3, 4), true, 1));
297 EXPECT_EQ(1, YIndex(gfx::Size(3, 3), gfx::Size(3, 4), true, 2)); 369 EXPECT_EQ(1, YIndex(gfx::Size(3, 3), gfx::Size(3, 4), true, 2));
298 EXPECT_EQ(1, YIndex(gfx::Size(3, 3), gfx::Size(3, 4), true, 3)); 370 EXPECT_EQ(1, YIndex(gfx::Size(3, 3), gfx::Size(3, 4), true, 3));
299 } 371 }
300 372
373 TEST(TilingDataTest, borderTileYIndexFromSrcCoord)
374 {
375 EXPECT_EQ(0, BorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 0));
376 EXPECT_EQ(0, BorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 1));
377 EXPECT_EQ(0, BorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 2));
378 EXPECT_EQ(1, BorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 3));
379 EXPECT_EQ(1, BorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 4));
380 EXPECT_EQ(1, BorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 5));
381 EXPECT_EQ(2, BorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 6));
382 EXPECT_EQ(2, BorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 7));
383 EXPECT_EQ(2, BorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 8));
384 EXPECT_EQ(3, BorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 9));
385 EXPECT_EQ(3, BorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 10));
386 EXPECT_EQ(3, BorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 11));
387
388 EXPECT_EQ(0, BorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 0));
389 EXPECT_EQ(0, BorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 1));
390 EXPECT_EQ(0, BorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 2));
391 EXPECT_EQ(1, BorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 3));
392 EXPECT_EQ(2, BorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 4));
393 EXPECT_EQ(3, BorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 5));
394 EXPECT_EQ(4, BorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 6));
395 EXPECT_EQ(5, BorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 7));
396 EXPECT_EQ(6, BorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 8));
397 EXPECT_EQ(7, BorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 9));
398 EXPECT_EQ(7, BorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 10));
399 EXPECT_EQ(7, BorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 11));
400
401 EXPECT_EQ(0, BorderYIndex(gfx::Size(1, 1), gfx::Size(1, 1), false, 0));
402 EXPECT_EQ(0, BorderYIndex(gfx::Size(2, 2), gfx::Size(2, 2), false, 0));
403 EXPECT_EQ(0, BorderYIndex(gfx::Size(2, 2), gfx::Size(2, 2), false, 1));
404 EXPECT_EQ(0, BorderYIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 0));
405 EXPECT_EQ(0, BorderYIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 1));
406 EXPECT_EQ(0, BorderYIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 2));
407
408 EXPECT_EQ(0, BorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), false, 0));
409 EXPECT_EQ(0, BorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), false, 1));
410 EXPECT_EQ(0, BorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), false, 2));
411 EXPECT_EQ(1, BorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), false, 3));
412
413 EXPECT_EQ(0, BorderYIndex(gfx::Size(1, 1), gfx::Size(1, 1), true, 0));
414 EXPECT_EQ(0, BorderYIndex(gfx::Size(2, 2), gfx::Size(2, 2), true, 0));
415 EXPECT_EQ(0, BorderYIndex(gfx::Size(2, 2), gfx::Size(2, 2), true, 1));
416 EXPECT_EQ(0, BorderYIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 0));
417 EXPECT_EQ(0, BorderYIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 1));
418 EXPECT_EQ(0, BorderYIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 2));
419
420 EXPECT_EQ(0, BorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), true, 0));
421 EXPECT_EQ(0, BorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), true, 1));
422 EXPECT_EQ(0, BorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), true, 2));
423 EXPECT_EQ(1, BorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), true, 3));
424 }
425
301 TEST(TilingDataTest, tileSizeX) 426 TEST(TilingDataTest, tileSizeX)
302 { 427 {
303 EXPECT_EQ(5, SizeX(gfx::Size(5, 5), gfx::Size(5, 5), false, 0)); 428 EXPECT_EQ(5, SizeX(gfx::Size(5, 5), gfx::Size(5, 5), false, 0));
304 EXPECT_EQ(5, SizeX(gfx::Size(5, 5), gfx::Size(5, 5), true, 0)); 429 EXPECT_EQ(5, SizeX(gfx::Size(5, 5), gfx::Size(5, 5), true, 0));
305 430
306 EXPECT_EQ(5, SizeX(gfx::Size(5, 5), gfx::Size(6, 6), false, 0)); 431 EXPECT_EQ(5, SizeX(gfx::Size(5, 5), gfx::Size(6, 6), false, 0));
307 EXPECT_EQ(1, SizeX(gfx::Size(5, 5), gfx::Size(6, 6), false, 1)); 432 EXPECT_EQ(1, SizeX(gfx::Size(5, 5), gfx::Size(6, 6), false, 1));
308 EXPECT_EQ(4, SizeX(gfx::Size(5, 5), gfx::Size(6, 6), true, 0)); 433 EXPECT_EQ(4, SizeX(gfx::Size(5, 5), gfx::Size(6, 6), true, 0));
309 EXPECT_EQ(2, SizeX(gfx::Size(5, 5), gfx::Size(6, 6), true, 1)); 434 EXPECT_EQ(2, SizeX(gfx::Size(5, 5), gfx::Size(6, 6), true, 1));
310 435
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
582 707
583 data.SetHasBorderTexels(true); 708 data.SetHasBorderTexels(true);
584 EXPECT_EQ(3, data.num_tiles_x()); 709 EXPECT_EQ(3, data.num_tiles_x());
585 EXPECT_EQ(5, data.num_tiles_y()); 710 EXPECT_EQ(5, data.num_tiles_y());
586 711
587 data.SetHasBorderTexels(false); 712 data.SetHasBorderTexels(false);
588 EXPECT_EQ(2, data.num_tiles_x()); 713 EXPECT_EQ(2, data.num_tiles_x());
589 EXPECT_EQ(4, data.num_tiles_y()); 714 EXPECT_EQ(4, data.num_tiles_y());
590 } 715 }
591 716
717 TEST(TilingDataTest, largeBorders)
718 {
719 TilingData data(gfx::Size(100, 80), gfx::Size(200, 145), 30);
720 EXPECT_EQ(30, data.border_texels());
721
722 EXPECT_EQ(70, data.TileSizeX(0));
723 EXPECT_EQ(40, data.TileSizeX(1));
724 EXPECT_EQ(40, data.TileSizeX(2));
725 EXPECT_EQ(50, data.TileSizeX(3));
726 EXPECT_EQ(4, data.num_tiles_x());
727
728 EXPECT_EQ(50, data.TileSizeY(0));
729 EXPECT_EQ(20, data.TileSizeY(1));
730 EXPECT_EQ(20, data.TileSizeY(2));
731 EXPECT_EQ(20, data.TileSizeY(3));
732 EXPECT_EQ(35, data.TileSizeY(4));
733 EXPECT_EQ(5, data.num_tiles_y());
734
735 EXPECT_RECT_EQ(gfx::Rect(0, 0, 70, 50), data.TileBounds(0, 0));
736 EXPECT_RECT_EQ(gfx::Rect(70, 50, 40, 20), data.TileBounds(1, 1));
737 EXPECT_RECT_EQ(gfx::Rect(110, 110, 40, 35), data.TileBounds(2, 4));
738 EXPECT_RECT_EQ(gfx::Rect(150, 70, 50, 20), data.TileBounds(3, 2));
739 EXPECT_RECT_EQ(gfx::Rect(150, 110, 50, 35), data.TileBounds(3, 4));
740
741 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 80), data.TileBoundsWithBorder(0, 0));
742 EXPECT_RECT_EQ(gfx::Rect(40, 20, 100, 80), data.TileBoundsWithBorder(1, 1));
743 EXPECT_RECT_EQ(gfx::Rect(80, 80, 100, 65), data.TileBoundsWithBorder(2, 4));
744 EXPECT_RECT_EQ(gfx::Rect(120, 40, 80, 80), data.TileBoundsWithBorder(3, 2));
745 EXPECT_RECT_EQ(gfx::Rect(120, 80, 80, 65), data.TileBoundsWithBorder(3, 4));
746
747 EXPECT_EQ(0, data.TileXIndexFromSrcCoord(0));
748 EXPECT_EQ(0, data.TileXIndexFromSrcCoord(69));
749 EXPECT_EQ(1, data.TileXIndexFromSrcCoord(70));
750 EXPECT_EQ(1, data.TileXIndexFromSrcCoord(109));
751 EXPECT_EQ(2, data.TileXIndexFromSrcCoord(110));
752 EXPECT_EQ(2, data.TileXIndexFromSrcCoord(149));
753 EXPECT_EQ(3, data.TileXIndexFromSrcCoord(150));
754 EXPECT_EQ(3, data.TileXIndexFromSrcCoord(199));
755
756 EXPECT_EQ(0, data.TileYIndexFromSrcCoord(0));
757 EXPECT_EQ(0, data.TileYIndexFromSrcCoord(49));
758 EXPECT_EQ(1, data.TileYIndexFromSrcCoord(50));
759 EXPECT_EQ(1, data.TileYIndexFromSrcCoord(69));
760 EXPECT_EQ(2, data.TileYIndexFromSrcCoord(70));
761 EXPECT_EQ(2, data.TileYIndexFromSrcCoord(89));
762 EXPECT_EQ(3, data.TileYIndexFromSrcCoord(90));
763 EXPECT_EQ(3, data.TileYIndexFromSrcCoord(109));
764 EXPECT_EQ(4, data.TileYIndexFromSrcCoord(110));
765 EXPECT_EQ(4, data.TileYIndexFromSrcCoord(144));
766
767 EXPECT_EQ(0, data.BorderTileXIndexFromSrcCoord(0));
768 EXPECT_EQ(0, data.BorderTileXIndexFromSrcCoord(99));
769 EXPECT_EQ(1, data.BorderTileXIndexFromSrcCoord(100));
770 EXPECT_EQ(1, data.BorderTileXIndexFromSrcCoord(139));
771 EXPECT_EQ(2, data.BorderTileXIndexFromSrcCoord(140));
772 EXPECT_EQ(2, data.BorderTileXIndexFromSrcCoord(179));
773 EXPECT_EQ(3, data.BorderTileXIndexFromSrcCoord(180));
774 EXPECT_EQ(3, data.BorderTileXIndexFromSrcCoord(199));
775
776 EXPECT_EQ(0, data.BorderTileYIndexFromSrcCoord(0));
777 EXPECT_EQ(0, data.BorderTileYIndexFromSrcCoord(79));
778 EXPECT_EQ(1, data.BorderTileYIndexFromSrcCoord(80));
779 EXPECT_EQ(1, data.BorderTileYIndexFromSrcCoord(99));
780 EXPECT_EQ(2, data.BorderTileYIndexFromSrcCoord(100));
781 EXPECT_EQ(2, data.BorderTileYIndexFromSrcCoord(119));
782 EXPECT_EQ(3, data.BorderTileYIndexFromSrcCoord(120));
783 EXPECT_EQ(3, data.BorderTileYIndexFromSrcCoord(139));
784 EXPECT_EQ(4, data.BorderTileYIndexFromSrcCoord(140));
785 EXPECT_EQ(4, data.BorderTileYIndexFromSrcCoord(144));
786 }
787
788 void TestIterate(
789 const TilingData& data,
790 gfx::Rect rect,
791 int expect_left,
792 int expect_top,
793 int expect_right,
794 int expect_bottom) {
795
796 EXPECT_GE(expect_left, 0);
797 EXPECT_GE(expect_top, 0);
798 EXPECT_LT(expect_right, data.num_tiles_x());
799 EXPECT_LT(expect_bottom, data.num_tiles_y());
800
801 std::vector<std::pair<int, int> > expected;
802 for (int x = 0; x < data.num_tiles_x(); ++x) {
803 for (int y = 0; y < data.num_tiles_y(); ++y) {
804 gfx::Rect bounds = data.TileBoundsWithBorder(x, y);
805 if (x >= expect_left && x <= expect_right &&
806 y >= expect_top && y <= expect_bottom) {
807 EXPECT_TRUE(bounds.Intersects(rect));
808 expected.push_back(std::make_pair(x, y));
809 } else {
810 EXPECT_FALSE(bounds.Intersects(rect));
811 }
812 }
813 }
814
815 for (TilingData::Iterator iter(&data, rect); iter; ++iter) {
816 std::pair<int, int> find = std::make_pair(iter.index_x(), iter.index_y());
817 bool found = false;
818 for (size_t i = 0; i < expected.size(); ++i) {
819 if (expected[i] == find) {
820 expected[i] = expected.back();
821 expected.pop_back();
822 found = true;
823 break;
824 }
825 }
826 EXPECT_TRUE(found);
827 }
828
829 EXPECT_EQ(0, expected.size());
830 }
831
832 TEST(TilingDataTest, iteratorNoBorderTexels)
833 {
834 TilingData data(gfx::Size(10, 10), gfx::Size(40, 25), false);
835 // X border index by src coord: [0-10), [10-20), [20, 30), [30, 40)
836 // Y border index by src coord: [0-10), [10-20), [20, 25)
837 TestIterate(data, gfx::Rect(0, 0, 40, 25), 0, 0, 3, 2);
838 TestIterate(data, gfx::Rect(15, 15, 8, 8), 1, 1, 2, 2);
839
840 // Oversized.
841 TestIterate(data, gfx::Rect(-100, -100, 1000, 1000), 0, 0, 3, 2);
842 TestIterate(data, gfx::Rect(-100, 20, 1000, 1), 0, 2, 3, 2);
843 TestIterate(data, gfx::Rect(29, -100, 31, 1000), 2, 0, 3, 2);
844 // Nonintersecting.
845 TestIterate(data, gfx::Rect(60, 80, 100, 100), 0, 0, -1, -1);
846 }
847
848 TEST(TilingDataTest, iteratorOneBorderTexel)
849 {
850 TilingData data(gfx::Size(10, 20), gfx::Size(25, 45), true);
851 // X border index by src coord: [0-10), [8-18), [16-25)
852 // Y border index by src coord: [0-20), [18-38), [36-45)
853 TestIterate(data, gfx::Rect(0, 0, 25, 45), 0, 0, 2, 2);
854 TestIterate(data, gfx::Rect(18, 19, 3, 17), 2, 0, 2, 1);
855 TestIterate(data, gfx::Rect(10, 20, 6, 16), 1, 1, 1, 1);
856 TestIterate(data, gfx::Rect(9, 19, 8, 18), 0, 0, 2, 2);
857
858 // Oversized.
859 TestIterate(data, gfx::Rect(-100, -100, 1000, 1000), 0, 0, 2, 2);
860 TestIterate(data, gfx::Rect(-100, 20, 1000, 1), 0, 1, 2, 1);
861 TestIterate(data, gfx::Rect(18, -100, 6, 1000), 2, 0, 2, 2);
862 // Nonintersecting.
863 TestIterate(data, gfx::Rect(60, 80, 100, 100), 0, 0, -1, -1);
864 }
865
866 TEST(TilingDataTest, iteratorManyBorderTexels)
867 {
868 TilingData data(gfx::Size(50, 60), gfx::Size(65, 110), 20);
869 // X border index by src coord: [0-50), [10-60), [20-65)
870 // Y border index by src coord: [0-60), [20-80), [40-100), [60-110)
871 TestIterate(data, gfx::Rect(0, 0, 65, 110), 0, 0, 2, 3);
872 TestIterate(data, gfx::Rect(50, 60, 15, 65), 1, 1, 2, 3);
873 TestIterate(data, gfx::Rect(60, 30, 2, 10), 2, 0, 2, 1);
874
875 // Oversized.
876 TestIterate(data, gfx::Rect(-100, -100, 1000, 1000), 0, 0, 2, 3);
877 TestIterate(data, gfx::Rect(-100, 10, 1000, 10), 0, 0, 2, 0);
878 TestIterate(data, gfx::Rect(10, -100, 10, 1000), 0, 0, 1, 3);
879 // Nonintersecting.
880 TestIterate(data, gfx::Rect(65, 110, 100, 100), 0, 0, -1, -1);
881 }
882
883 TEST(TilingDataTest, iteratorOneTile)
884 {
885 TilingData no_border(gfx::Size(1000, 1000), gfx::Size(30, 40), false);
886 TestIterate(no_border, gfx::Rect(0, 0, 30, 40), 0, 0, 0, 0);
887 TestIterate(no_border, gfx::Rect(10, 10, 20, 20), 0, 0, 0, 0);
888 TestIterate(no_border, gfx::Rect(30, 40, 100, 100), 0, 0, -1, -1);
889
890 TilingData one_border(gfx::Size(1000, 1000), gfx::Size(30, 40), true);
891 TestIterate(one_border, gfx::Rect(0, 0, 30, 40), 0, 0, 0, 0);
892 TestIterate(one_border, gfx::Rect(10, 10, 20, 20), 0, 0, 0, 0);
893 TestIterate(one_border, gfx::Rect(30, 40, 100, 100), 0, 0, -1, -1);
894
895 TilingData big_border(gfx::Size(1000, 1000), gfx::Size(30, 40), 50);
896 TestIterate(big_border, gfx::Rect(0, 0, 30, 40), 0, 0, 0, 0);
897 TestIterate(big_border, gfx::Rect(10, 10, 20, 20), 0, 0, 0, 0);
898 TestIterate(big_border, gfx::Rect(30, 40, 100, 100), 0, 0, -1, -1);
899 }
900
901 TEST(TilingDataTest, iteratorNoTiles)
902 {
903 TilingData data(gfx::Size(100, 100), gfx::Size(), false);
904 TestIterate(data, gfx::Rect(0, 0, 100, 100), 0, 0, -1, -1);
905 }
906
592 } // namespace 907 } // namespace
593 } // namespace cc 908 } // namespace cc
OLDNEW
« cc/tiling_data.cc ('K') | « cc/tiling_data.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698