OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |