| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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/quads/draw_quad.h" | 5 #include "cc/quads/draw_quad.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
| (...skipping 441 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 452 TEST(DrawQuadTest, CopyTextureDrawQuad) { | 452 TEST(DrawQuadTest, CopyTextureDrawQuad) { |
| 453 gfx::Rect opaque_rect(3, 7, 10, 12); | 453 gfx::Rect opaque_rect(3, 7, 10, 12); |
| 454 unsigned resource_id = 82; | 454 unsigned resource_id = 82; |
| 455 bool premultiplied_alpha = true; | 455 bool premultiplied_alpha = true; |
| 456 gfx::PointF uv_top_left(0.5f, 224.f); | 456 gfx::PointF uv_top_left(0.5f, 224.f); |
| 457 gfx::PointF uv_bottom_right(51.5f, 260.f); | 457 gfx::PointF uv_bottom_right(51.5f, 260.f); |
| 458 const float vertex_opacity[] = { 1.0f, 1.0f, 1.0f, 1.0f }; | 458 const float vertex_opacity[] = { 1.0f, 1.0f, 1.0f, 1.0f }; |
| 459 bool flipped = true; | 459 bool flipped = true; |
| 460 CREATE_SHARED_STATE(); | 460 CREATE_SHARED_STATE(); |
| 461 | 461 |
| 462 CREATE_QUAD_7_NEW(TextureDrawQuad, | 462 CREATE_QUAD_8_NEW(TextureDrawQuad, |
| 463 opaque_rect, | 463 opaque_rect, |
| 464 resource_id, | 464 resource_id, |
| 465 premultiplied_alpha, | 465 premultiplied_alpha, |
| 466 uv_top_left, | 466 uv_top_left, |
| 467 uv_bottom_right, | 467 uv_bottom_right, |
| 468 SK_ColorTRANSPARENT, |
| 468 vertex_opacity, | 469 vertex_opacity, |
| 469 flipped); | 470 flipped); |
| 470 EXPECT_EQ(DrawQuad::TEXTURE_CONTENT, copy_quad->material); | 471 EXPECT_EQ(DrawQuad::TEXTURE_CONTENT, copy_quad->material); |
| 471 EXPECT_RECT_EQ(opaque_rect, copy_quad->opaque_rect); | 472 EXPECT_RECT_EQ(opaque_rect, copy_quad->opaque_rect); |
| 472 EXPECT_EQ(resource_id, copy_quad->resource_id); | 473 EXPECT_EQ(resource_id, copy_quad->resource_id); |
| 473 EXPECT_EQ(premultiplied_alpha, copy_quad->premultiplied_alpha); | 474 EXPECT_EQ(premultiplied_alpha, copy_quad->premultiplied_alpha); |
| 474 EXPECT_EQ(uv_top_left, copy_quad->uv_top_left); | 475 EXPECT_EQ(uv_top_left, copy_quad->uv_top_left); |
| 475 EXPECT_EQ(uv_bottom_right, copy_quad->uv_bottom_right); | 476 EXPECT_EQ(uv_bottom_right, copy_quad->uv_bottom_right); |
| 476 EXPECT_FLOAT_ARRAY_EQ(vertex_opacity, copy_quad->vertex_opacity, 4); | 477 EXPECT_FLOAT_ARRAY_EQ(vertex_opacity, copy_quad->vertex_opacity, 4); |
| 477 EXPECT_EQ(flipped, copy_quad->flipped); | 478 EXPECT_EQ(flipped, copy_quad->flipped); |
| 478 | 479 |
| 479 CREATE_QUAD_6_ALL(TextureDrawQuad, | 480 CREATE_QUAD_7_ALL(TextureDrawQuad, |
| 480 resource_id, | 481 resource_id, |
| 481 premultiplied_alpha, | 482 premultiplied_alpha, |
| 482 uv_top_left, | 483 uv_top_left, |
| 483 uv_bottom_right, | 484 uv_bottom_right, |
| 485 SK_ColorTRANSPARENT, |
| 484 vertex_opacity, | 486 vertex_opacity, |
| 485 flipped); | 487 flipped); |
| 486 EXPECT_EQ(DrawQuad::TEXTURE_CONTENT, copy_quad->material); | 488 EXPECT_EQ(DrawQuad::TEXTURE_CONTENT, copy_quad->material); |
| 487 EXPECT_EQ(resource_id, copy_quad->resource_id); | 489 EXPECT_EQ(resource_id, copy_quad->resource_id); |
| 488 EXPECT_EQ(premultiplied_alpha, copy_quad->premultiplied_alpha); | 490 EXPECT_EQ(premultiplied_alpha, copy_quad->premultiplied_alpha); |
| 489 EXPECT_EQ(uv_top_left, copy_quad->uv_top_left); | 491 EXPECT_EQ(uv_top_left, copy_quad->uv_top_left); |
| 490 EXPECT_EQ(uv_bottom_right, copy_quad->uv_bottom_right); | 492 EXPECT_EQ(uv_bottom_right, copy_quad->uv_bottom_right); |
| 491 EXPECT_FLOAT_ARRAY_EQ(vertex_opacity, copy_quad->vertex_opacity, 4); | 493 EXPECT_FLOAT_ARRAY_EQ(vertex_opacity, copy_quad->vertex_opacity, 4); |
| 492 EXPECT_EQ(flipped, copy_quad->flipped); | 494 EXPECT_EQ(flipped, copy_quad->flipped); |
| 493 } | 495 } |
| (...skipping 20 matching lines...) Expand all Loading... |
| 514 // A----------D 120 | 516 // A----------D 120 |
| 515 // UV and vertex opacity are stored per vertex on the parent rectangle 'ABCD'. | 517 // UV and vertex opacity are stored per vertex on the parent rectangle 'ABCD'. |
| 516 | 518 |
| 517 // This is the UV value for vertex 'B'. | 519 // This is the UV value for vertex 'B'. |
| 518 gfx::PointF uv_top_left(0.1f, 0.2f); | 520 gfx::PointF uv_top_left(0.1f, 0.2f); |
| 519 // This is the UV value for vertex 'D'. | 521 // This is the UV value for vertex 'D'. |
| 520 gfx::PointF uv_bottom_right(0.9f, 0.8f); | 522 gfx::PointF uv_bottom_right(0.9f, 0.8f); |
| 521 // This the vertex opacity for the vertices 'ABCD'. | 523 // This the vertex opacity for the vertices 'ABCD'. |
| 522 const float vertex_opacity[] = { 0.3f, 0.4f, 0.7f, 0.8f }; | 524 const float vertex_opacity[] = { 0.3f, 0.4f, 0.7f, 0.8f }; |
| 523 { | 525 { |
| 524 CREATE_QUAD_7_NEW(TextureDrawQuad, | 526 CREATE_QUAD_8_NEW(TextureDrawQuad, |
| 525 opaque_rect, | 527 opaque_rect, |
| 526 resource_id, | 528 resource_id, |
| 527 premultiplied_alpha, | 529 premultiplied_alpha, |
| 528 uv_top_left, | 530 uv_top_left, |
| 529 uv_bottom_right, | 531 uv_bottom_right, |
| 532 SK_ColorTRANSPARENT, |
| 530 vertex_opacity, | 533 vertex_opacity, |
| 531 flipped); | 534 flipped); |
| 532 CREATE_QUAD_6_ALL(TextureDrawQuad, | 535 CREATE_QUAD_7_ALL(TextureDrawQuad, |
| 533 resource_id, | 536 resource_id, |
| 534 premultiplied_alpha, | 537 premultiplied_alpha, |
| 535 uv_top_left, | 538 uv_top_left, |
| 536 uv_bottom_right, | 539 uv_bottom_right, |
| 540 SK_ColorTRANSPARENT, |
| 537 vertex_opacity, | 541 vertex_opacity, |
| 538 flipped); | 542 flipped); |
| 539 EXPECT_TRUE(quad_all->PerformClipping()); | 543 EXPECT_TRUE(quad_all->PerformClipping()); |
| 540 | 544 |
| 541 // This is the expected UV value for vertex 'b'. | 545 // This is the expected UV value for vertex 'b'. |
| 542 // uv(b) = uv(B) + (Bb / BD) * (uv(D) - uv(B)) | 546 // uv(b) = uv(B) + (Bb / BD) * (uv(D) - uv(B)) |
| 543 // 0.3 = 0.2 + (10 / 60) * (0.8 - 0.2) | 547 // 0.3 = 0.2 + (10 / 60) * (0.8 - 0.2) |
| 544 gfx::PointF uv_top_left_clipped(0.26f, 0.3f); | 548 gfx::PointF uv_top_left_clipped(0.26f, 0.3f); |
| 545 // This is the expected UV value for vertex 'd'. | 549 // This is the expected UV value for vertex 'd'. |
| 546 // uv(d) = uv(B) + (Bd / BD) * (uv(D) - uv(B)) | 550 // uv(d) = uv(B) + (Bd / BD) * (uv(D) - uv(B)) |
| 547 gfx::PointF uv_bottom_right_clipped(0.74f, 0.5f); | 551 gfx::PointF uv_bottom_right_clipped(0.74f, 0.5f); |
| 548 // This the expected vertex opacity for the vertices 'abcd'. | 552 // This the expected vertex opacity for the vertices 'abcd'. |
| 549 // They are computed with a bilinear interpolation of the corner values. | 553 // They are computed with a bilinear interpolation of the corner values. |
| 550 const float vertex_opacity_clipped[] = { 0.43f, 0.45f, 0.65f, 0.67f }; | 554 const float vertex_opacity_clipped[] = { 0.43f, 0.45f, 0.65f, 0.67f }; |
| 551 | 555 |
| 552 EXPECT_EQ(uv_top_left_clipped, quad_all->uv_top_left); | 556 EXPECT_EQ(uv_top_left_clipped, quad_all->uv_top_left); |
| 553 EXPECT_EQ(uv_bottom_right_clipped, quad_all->uv_bottom_right); | 557 EXPECT_EQ(uv_bottom_right_clipped, quad_all->uv_bottom_right); |
| 554 EXPECT_FLOAT_ARRAY_EQ(vertex_opacity_clipped, quad_all->vertex_opacity, 4); | 558 EXPECT_FLOAT_ARRAY_EQ(vertex_opacity_clipped, quad_all->vertex_opacity, 4); |
| 555 } | 559 } |
| 556 | 560 |
| 557 uv_top_left = gfx::PointF(0.8f, 0.7f); | 561 uv_top_left = gfx::PointF(0.8f, 0.7f); |
| 558 uv_bottom_right = gfx::PointF(0.2f, 0.1f); | 562 uv_bottom_right = gfx::PointF(0.2f, 0.1f); |
| 559 { | 563 { |
| 560 CREATE_QUAD_7_NEW(TextureDrawQuad, | 564 CREATE_QUAD_8_NEW(TextureDrawQuad, |
| 561 opaque_rect, | 565 opaque_rect, |
| 562 resource_id, | 566 resource_id, |
| 563 premultiplied_alpha, | 567 premultiplied_alpha, |
| 564 uv_top_left, | 568 uv_top_left, |
| 565 uv_bottom_right, | 569 uv_bottom_right, |
| 570 SK_ColorTRANSPARENT, |
| 566 vertex_opacity, | 571 vertex_opacity, |
| 567 flipped); | 572 flipped); |
| 568 CREATE_QUAD_6_ALL(TextureDrawQuad, | 573 CREATE_QUAD_7_ALL(TextureDrawQuad, |
| 569 resource_id, | 574 resource_id, |
| 570 premultiplied_alpha, | 575 premultiplied_alpha, |
| 571 uv_top_left, | 576 uv_top_left, |
| 572 uv_bottom_right, | 577 uv_bottom_right, |
| 578 SK_ColorTRANSPARENT, |
| 573 vertex_opacity, | 579 vertex_opacity, |
| 574 flipped); | 580 flipped); |
| 575 EXPECT_TRUE(quad_all->PerformClipping()); | 581 EXPECT_TRUE(quad_all->PerformClipping()); |
| 576 | 582 |
| 577 // This is the expected UV value for vertex 'b'. | 583 // This is the expected UV value for vertex 'b'. |
| 578 gfx::PointF uv_top_left_clipped(0.68f, 0.6f); | 584 gfx::PointF uv_top_left_clipped(0.68f, 0.6f); |
| 579 // This is the expected UV value for vertex 'd'. | 585 // This is the expected UV value for vertex 'd'. |
| 580 gfx::PointF uv_bottom_right_clipped(0.32f, 0.4f); | 586 gfx::PointF uv_bottom_right_clipped(0.32f, 0.4f); |
| 581 | 587 |
| 582 EXPECT_EQ(uv_top_left_clipped, quad_all->uv_top_left); | 588 EXPECT_EQ(uv_top_left_clipped, quad_all->uv_top_left); |
| (...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 814 TEST_F(DrawQuadIteratorTest, TextureDrawQuad) { | 820 TEST_F(DrawQuadIteratorTest, TextureDrawQuad) { |
| 815 gfx::Rect opaque_rect(3, 7, 10, 12); | 821 gfx::Rect opaque_rect(3, 7, 10, 12); |
| 816 unsigned resource_id = 82; | 822 unsigned resource_id = 82; |
| 817 bool premultiplied_alpha = true; | 823 bool premultiplied_alpha = true; |
| 818 gfx::PointF uv_top_left(0.5f, 224.f); | 824 gfx::PointF uv_top_left(0.5f, 224.f); |
| 819 gfx::PointF uv_bottom_right(51.5f, 260.f); | 825 gfx::PointF uv_bottom_right(51.5f, 260.f); |
| 820 const float vertex_opacity[] = { 1.0f, 1.0f, 1.0f, 1.0f }; | 826 const float vertex_opacity[] = { 1.0f, 1.0f, 1.0f, 1.0f }; |
| 821 bool flipped = true; | 827 bool flipped = true; |
| 822 | 828 |
| 823 CREATE_SHARED_STATE(); | 829 CREATE_SHARED_STATE(); |
| 824 CREATE_QUAD_7_NEW(TextureDrawQuad, | 830 CREATE_QUAD_8_NEW(TextureDrawQuad, |
| 825 opaque_rect, | 831 opaque_rect, |
| 826 resource_id, | 832 resource_id, |
| 827 premultiplied_alpha, | 833 premultiplied_alpha, |
| 828 uv_top_left, | 834 uv_top_left, |
| 829 uv_bottom_right, | 835 uv_bottom_right, |
| 836 SK_ColorTRANSPARENT, |
| 830 vertex_opacity, | 837 vertex_opacity, |
| 831 flipped); | 838 flipped); |
| 832 EXPECT_EQ(resource_id, quad_new->resource_id); | 839 EXPECT_EQ(resource_id, quad_new->resource_id); |
| 833 EXPECT_EQ(1, IterateAndCount(quad_new.get())); | 840 EXPECT_EQ(1, IterateAndCount(quad_new.get())); |
| 834 EXPECT_EQ(resource_id + 1, quad_new->resource_id); | 841 EXPECT_EQ(resource_id + 1, quad_new->resource_id); |
| 835 } | 842 } |
| 836 | 843 |
| 837 TEST_F(DrawQuadIteratorTest, TileDrawQuad) { | 844 TEST_F(DrawQuadIteratorTest, TileDrawQuad) { |
| 838 gfx::Rect opaque_rect(33, 44, 22, 33); | 845 gfx::Rect opaque_rect(33, 44, 22, 33); |
| 839 unsigned resource_id = 104; | 846 unsigned resource_id = 104; |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 900 swizzle_contents, | 907 swizzle_contents, |
| 901 content_rect, | 908 content_rect, |
| 902 contents_scale, | 909 contents_scale, |
| 903 can_draw_direct_to_backbuffer, | 910 can_draw_direct_to_backbuffer, |
| 904 picture_pile); | 911 picture_pile); |
| 905 EXPECT_EQ(0, IterateAndCount(quad_new.get())); | 912 EXPECT_EQ(0, IterateAndCount(quad_new.get())); |
| 906 } | 913 } |
| 907 | 914 |
| 908 } // namespace | 915 } // namespace |
| 909 } // namespace cc | 916 } // namespace cc |
| OLD | NEW |