picture_draw_quad.cc revision ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16
1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file. 4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "cc/quads/picture_draw_quad.h" 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 7ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "base/values.h" 8ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "cc/base/math_util.h" 9ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace cc { 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)PictureDrawQuad::PictureDrawQuad() { 13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)PictureDrawQuad::~PictureDrawQuad() { 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)scoped_ptr<PictureDrawQuad> PictureDrawQuad::Create() { 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return make_scoped_ptr(new PictureDrawQuad); 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void PictureDrawQuad::SetNew(const SharedQuadState* shared_quad_state, 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gfx::Rect rect, 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gfx::Rect opaque_rect, 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const gfx::RectF& tex_coord_rect, 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gfx::Size texture_size, 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool swizzle_contents, 28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gfx::Rect content_rect, 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) float contents_scale, 3090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) bool can_draw_direct_to_backbuffer, 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_refptr<PicturePileImpl> picture_pile) { 32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ContentDrawQuadBase::SetNew(shared_quad_state, DrawQuad::PICTURE_CONTENT, 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) rect, opaque_rect, tex_coord_rect, texture_size, 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) swizzle_contents); 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) this->content_rect = content_rect; 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) this->contents_scale = contents_scale; 3790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) this->can_draw_direct_to_backbuffer = can_draw_direct_to_backbuffer; 38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) this->picture_pile = picture_pile; 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void PictureDrawQuad::SetAll(const SharedQuadState* shared_quad_state, 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gfx::Rect rect, 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gfx::Rect opaque_rect, 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gfx::Rect visible_rect, 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool needs_blending, 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const gfx::RectF& tex_coord_rect, 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gfx::Size texture_size, 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool swizzle_contents, 49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gfx::Rect content_rect, 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) float contents_scale, 5190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) bool can_draw_direct_to_backbuffer, 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_refptr<PicturePileImpl> picture_pile) { 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ContentDrawQuadBase::SetAll(shared_quad_state, 54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DrawQuad::PICTURE_CONTENT, rect, opaque_rect, 55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) visible_rect, needs_blending, tex_coord_rect, 56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) texture_size, swizzle_contents); 57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) this->content_rect = content_rect; 58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) this->contents_scale = contents_scale; 5990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) this->can_draw_direct_to_backbuffer = can_draw_direct_to_backbuffer; 60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) this->picture_pile = picture_pile; 61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void PictureDrawQuad::IterateResources( 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const ResourceIteratorCallback& callback) { 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // TODO(danakj): Convert to TextureDrawQuad? 66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) NOTIMPLEMENTED(); 67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)const PictureDrawQuad* PictureDrawQuad::MaterialCast(const DrawQuad* quad) { 70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DCHECK(quad->material == DrawQuad::PICTURE_CONTENT); 71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return static_cast<const PictureDrawQuad*>(quad); 72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 74ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochvoid PictureDrawQuad::ExtendValue(base::DictionaryValue* value) const { 75ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch ContentDrawQuadBase::ExtendValue(value); 76ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch value->Set("content_rect", MathUtil::AsValue(content_rect).release()); 77ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch value->SetDouble("contents_scale", contents_scale); 78ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch value->SetBoolean("can_draw_direct_to_backbuffer", 79ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch can_draw_direct_to_backbuffer); 80ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // TODO(piman): picture_pile? 81ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} 82ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 83c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace cc 84