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

Side by Side Diff: cc/quads/draw_quad_unittest.cc

Issue 18432002: Blend TextureLayer background-color at draw time. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: resolved conflicts with TOT Created 7 years, 5 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
« no previous file with comments | « cc/output/software_renderer.cc ('k') | cc/quads/texture_draw_quad.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
OLDNEW
« no previous file with comments | « cc/output/software_renderer.cc ('k') | cc/quads/texture_draw_quad.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698