picture_draw_quad.cc revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
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" 9d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "cc/resources/platform_color.h" 10ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace cc { 12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)PictureDrawQuad::PictureDrawQuad() { 14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)PictureDrawQuad::~PictureDrawQuad() { 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)scoped_ptr<PictureDrawQuad> PictureDrawQuad::Create() { 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return make_scoped_ptr(new PictureDrawQuad); 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void PictureDrawQuad::SetNew(const SharedQuadState* shared_quad_state, 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Rect& rect, 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Rect& opaque_rect, 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const gfx::RectF& tex_coord_rect, 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Size& texture_size, 28d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) ResourceFormat texture_format, 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Rect& content_rect, 30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) float contents_scale, 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_refptr<PicturePileImpl> picture_pile) { 32d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) ContentDrawQuadBase::SetNew(shared_quad_state, 33d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) DrawQuad::PICTURE_CONTENT, 34d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) rect, 35d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) opaque_rect, 36d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) tex_coord_rect, 37d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) texture_size, 38d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) !PlatformColor::SameComponentOrder( 39d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) texture_format)); 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) this->content_rect = content_rect; 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) this->contents_scale = contents_scale; 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) this->picture_pile = picture_pile; 43d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) this->texture_format = texture_format; 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void PictureDrawQuad::SetAll(const SharedQuadState* shared_quad_state, 475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Rect& rect, 485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Rect& opaque_rect, 495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Rect& visible_rect, 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool needs_blending, 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const gfx::RectF& tex_coord_rect, 525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Size& texture_size, 53d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) ResourceFormat texture_format, 545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Rect& content_rect, 55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) float contents_scale, 56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_refptr<PicturePileImpl> picture_pile) { 57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ContentDrawQuadBase::SetAll(shared_quad_state, 58d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) DrawQuad::PICTURE_CONTENT, 59d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) rect, 60d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) opaque_rect, 61d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) visible_rect, 62d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) needs_blending, 63d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) tex_coord_rect, 64d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) texture_size, 65d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) !PlatformColor::SameComponentOrder( 66d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) texture_format)); 67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) this->content_rect = content_rect; 68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) this->contents_scale = contents_scale; 69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) this->picture_pile = picture_pile; 70d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) this->texture_format = texture_format; 71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void PictureDrawQuad::IterateResources( 74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const ResourceIteratorCallback& callback) { 75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // TODO(danakj): Convert to TextureDrawQuad? 76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) NOTIMPLEMENTED(); 77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 78c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)const PictureDrawQuad* PictureDrawQuad::MaterialCast(const DrawQuad* quad) { 80c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DCHECK(quad->material == DrawQuad::PICTURE_CONTENT); 81c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return static_cast<const PictureDrawQuad*>(quad); 82c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 83c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 84ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochvoid PictureDrawQuad::ExtendValue(base::DictionaryValue* value) const { 85ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch ContentDrawQuadBase::ExtendValue(value); 86ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch value->Set("content_rect", MathUtil::AsValue(content_rect).release()); 87ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch value->SetDouble("contents_scale", contents_scale); 88d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) value->SetInteger("texture_format", texture_format); 89ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // TODO(piman): picture_pile? 90ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} 91ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 92c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace cc 93