blob: e566b247f721873a0bb31fe69779731968cc770c [file] [log] [blame]
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +01001// 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
Ben Murdochba5b9a62013-08-12 14:20:17 +01007#include "base/values.h"
8#include "cc/base/math_util.h"
Torne (Richard Coles)d0247b12013-09-19 22:36:51 +01009#include "cc/resources/platform_color.h"
Ben Murdochba5b9a62013-08-12 14:20:17 +010010
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +010011namespace cc {
12
13PictureDrawQuad::PictureDrawQuad() {
14}
15
16PictureDrawQuad::~PictureDrawQuad() {
17}
18
19scoped_ptr<PictureDrawQuad> PictureDrawQuad::Create() {
20 return make_scoped_ptr(new PictureDrawQuad);
21}
22
23void 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,
Torne (Richard Coles)d0247b12013-09-19 22:36:51 +010028 ResourceFormat texture_format,
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +010029 gfx::Rect content_rect,
30 float contents_scale,
Torne (Richard Coles)90dce4d2013-05-29 14:40:03 +010031 bool can_draw_direct_to_backbuffer,
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +010032 scoped_refptr<PicturePileImpl> picture_pile) {
Torne (Richard Coles)d0247b12013-09-19 22:36:51 +010033 ContentDrawQuadBase::SetNew(shared_quad_state,
34 DrawQuad::PICTURE_CONTENT,
35 rect,
36 opaque_rect,
37 tex_coord_rect,
38 texture_size,
39 !PlatformColor::SameComponentOrder(
40 texture_format));
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +010041 this->content_rect = content_rect;
42 this->contents_scale = contents_scale;
Torne (Richard Coles)90dce4d2013-05-29 14:40:03 +010043 this->can_draw_direct_to_backbuffer = can_draw_direct_to_backbuffer;
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +010044 this->picture_pile = picture_pile;
Torne (Richard Coles)d0247b12013-09-19 22:36:51 +010045 this->texture_format = texture_format;
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +010046}
47
48void PictureDrawQuad::SetAll(const SharedQuadState* shared_quad_state,
49 gfx::Rect rect,
50 gfx::Rect opaque_rect,
51 gfx::Rect visible_rect,
52 bool needs_blending,
53 const gfx::RectF& tex_coord_rect,
54 gfx::Size texture_size,
Torne (Richard Coles)d0247b12013-09-19 22:36:51 +010055 ResourceFormat texture_format,
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +010056 gfx::Rect content_rect,
57 float contents_scale,
Torne (Richard Coles)90dce4d2013-05-29 14:40:03 +010058 bool can_draw_direct_to_backbuffer,
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +010059 scoped_refptr<PicturePileImpl> picture_pile) {
60 ContentDrawQuadBase::SetAll(shared_quad_state,
Torne (Richard Coles)d0247b12013-09-19 22:36:51 +010061 DrawQuad::PICTURE_CONTENT,
62 rect,
63 opaque_rect,
64 visible_rect,
65 needs_blending,
66 tex_coord_rect,
67 texture_size,
68 !PlatformColor::SameComponentOrder(
69 texture_format));
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +010070 this->content_rect = content_rect;
71 this->contents_scale = contents_scale;
Torne (Richard Coles)90dce4d2013-05-29 14:40:03 +010072 this->can_draw_direct_to_backbuffer = can_draw_direct_to_backbuffer;
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +010073 this->picture_pile = picture_pile;
Torne (Richard Coles)d0247b12013-09-19 22:36:51 +010074 this->texture_format = texture_format;
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +010075}
76
77void PictureDrawQuad::IterateResources(
78 const ResourceIteratorCallback& callback) {
79 // TODO(danakj): Convert to TextureDrawQuad?
80 NOTIMPLEMENTED();
81}
82
83const PictureDrawQuad* PictureDrawQuad::MaterialCast(const DrawQuad* quad) {
84 DCHECK(quad->material == DrawQuad::PICTURE_CONTENT);
85 return static_cast<const PictureDrawQuad*>(quad);
86}
87
Ben Murdochba5b9a62013-08-12 14:20:17 +010088void PictureDrawQuad::ExtendValue(base::DictionaryValue* value) const {
89 ContentDrawQuadBase::ExtendValue(value);
90 value->Set("content_rect", MathUtil::AsValue(content_rect).release());
91 value->SetDouble("contents_scale", contents_scale);
92 value->SetBoolean("can_draw_direct_to_backbuffer",
93 can_draw_direct_to_backbuffer);
Torne (Richard Coles)d0247b12013-09-19 22:36:51 +010094 value->SetInteger("texture_format", texture_format);
Ben Murdochba5b9a62013-08-12 14:20:17 +010095 // TODO(piman): picture_pile?
96}
97
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +010098} // namespace cc