12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright 2012 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/test/render_pass_test_utils.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/quads/render_pass_draw_quad.h" 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/quads/shared_quad_state.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/quads/solid_color_draw_quad.h" 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "cc/resources/resource_provider.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/test/render_pass_test_common.h" 1258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "third_party/skia/include/core/SkColor.h" 1358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "third_party/skia/include/core/SkImageFilter.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/gfx/rect.h" 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace cc { 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TestRenderPass* AddRenderPass(RenderPassList* pass_list, 1903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) RenderPassId id, 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Rect& output_rect, 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const gfx::Transform& root_transform) { 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<TestRenderPass> pass(TestRenderPass::Create()); 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pass->SetNew(id, output_rect, output_rect, root_transform); 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestRenderPass* saved = pass.get(); 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) pass_list->push_back(pass.PassAs<RenderPass>()); 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return saved; 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)SolidColorDrawQuad* AddQuad(TestRenderPass* pass, 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Rect& rect, 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SkColor color) { 32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); 33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) shared_state->SetAll(gfx::Transform(), 34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) rect.size(), 35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) rect, 36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) rect, 37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) false, 38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1, 396d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) SkXfermode::kSrcOver_Mode, 406d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 0); 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch SolidColorDrawQuad* quad = 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); 43a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) quad->SetNew(shared_state, rect, rect, color, false); 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return quad; 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)SolidColorDrawQuad* AddClippedQuad(TestRenderPass* pass, 485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Rect& rect, 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SkColor color) { 50cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); 51f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) shared_state->SetAll(gfx::Transform(), 52f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) rect.size(), 53f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) rect, 54f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) rect, 55f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) true, 56f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1, 576d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) SkXfermode::kSrcOver_Mode, 586d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 0); 59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch SolidColorDrawQuad* quad = 60116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); 61a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) quad->SetNew(shared_state, rect, rect, color, false); 62116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return quad; 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)SolidColorDrawQuad* AddTransformedQuad(TestRenderPass* pass, 665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Rect& rect, 67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SkColor color, 68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const gfx::Transform& transform) { 69cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); 706d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) shared_state->SetAll(transform, 716d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) rect.size(), 726d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) rect, 736d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) rect, 746d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) false, 756d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 1, 766d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) SkXfermode::kSrcOver_Mode, 776d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 0); 78116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch SolidColorDrawQuad* quad = 79116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); 80a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) quad->SetNew(shared_state, rect, rect, color, false); 81116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return quad; 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void AddRenderPassQuad(TestRenderPass* to_pass, 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestRenderPass* contributing_pass) { 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) gfx::Rect output_rect = contributing_pass->output_rect; 87cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) SharedQuadState* shared_state = to_pass->CreateAndAppendSharedQuadState(); 88f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) shared_state->SetAll(gfx::Transform(), 89f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) output_rect.size(), 90f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) output_rect, 91f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) output_rect, 92f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) false, 93f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1, 946d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) SkXfermode::kSrcOver_Mode, 956d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 0); 96116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch RenderPassDrawQuad* quad = 97116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch to_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); 98a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) quad->SetNew(shared_state, 99a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) output_rect, 100a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) output_rect, 101a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) contributing_pass->id, 102a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 0, 103a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) gfx::RectF(), 104a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) FilterOperations(), 1056e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) gfx::Vector2dF(), 10668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) FilterOperations()); 1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 109c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void AddRenderPassQuad(TestRenderPass* to_pass, 110c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TestRenderPass* contributing_pass, 111c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ResourceProvider::ResourceId mask_resource_id, 11268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) const FilterOperations& filters, 113c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gfx::Transform transform) { 114c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gfx::Rect output_rect = contributing_pass->output_rect; 115cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) SharedQuadState* shared_state = to_pass->CreateAndAppendSharedQuadState(); 116f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) shared_state->SetAll(transform, 117f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) output_rect.size(), 118f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) output_rect, 119f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) output_rect, 120f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) false, 121f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1, 1226d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) SkXfermode::kSrcOver_Mode, 1236d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 0); 124116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch RenderPassDrawQuad* quad = 125116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch to_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); 126a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) quad->SetNew(shared_state, 127a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) output_rect, 128a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) output_rect, 129a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) contributing_pass->id, 130a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) mask_resource_id, 131a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) gfx::RectF(), 132a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) filters, 1336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) gfx::Vector2dF(), 13468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) FilterOperations()); 135c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 136c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace cc 138