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/quads/tile_draw_quad.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/logging.h" 8ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "base/values.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "third_party/khronos/GLES2/gl2.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace cc { 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TileDrawQuad::TileDrawQuad() 14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) : resource_id(0) { 15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TileDrawQuad::~TileDrawQuad() { 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)scoped_ptr<TileDrawQuad> TileDrawQuad::Create() { 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return make_scoped_ptr(new TileDrawQuad); 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void TileDrawQuad::SetNew(const SharedQuadState* shared_quad_state, 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Rect& rect, 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Rect& opaque_rect, 27a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const gfx::Rect& visible_rect, 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) unsigned resource_id, 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const gfx::RectF& tex_coord_rect, 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Size& texture_size, 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool swizzle_contents) { 32a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ContentDrawQuadBase::SetNew(shared_quad_state, 33a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) DrawQuad::TILED_CONTENT, 34a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) rect, 35a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) opaque_rect, 36a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) visible_rect, 37a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) tex_coord_rect, 38a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) texture_size, 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) swizzle_contents); 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) this->resource_id = resource_id; 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void TileDrawQuad::SetAll(const SharedQuadState* shared_quad_state, 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Rect& rect, 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Rect& opaque_rect, 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Rect& visible_rect, 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool needs_blending, 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) unsigned resource_id, 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const gfx::RectF& tex_coord_rect, 505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Size& texture_size, 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool swizzle_contents) { 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ContentDrawQuadBase::SetAll(shared_quad_state, DrawQuad::TILED_CONTENT, rect, 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) opaque_rect, visible_rect, needs_blending, 54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) tex_coord_rect, texture_size, swizzle_contents); 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) this->resource_id = resource_id; 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void TileDrawQuad::IterateResources( 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const ResourceIteratorCallback& callback) { 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) resource_id = callback.Run(resource_id); 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)const TileDrawQuad* TileDrawQuad::MaterialCast(const DrawQuad* quad) { 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DCHECK(quad->material == DrawQuad::TILED_CONTENT); 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return static_cast<const TileDrawQuad*>(quad); 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 68ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochvoid TileDrawQuad::ExtendValue(base::DictionaryValue* value) const { 69ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch ContentDrawQuadBase::ExtendValue(value); 70ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch value->SetInteger("resource_id", resource_id); 71ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} 72ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace cc 74