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