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