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 |