blob: af6fba12db047fb954d5bc1c80c3e71313aaea9c [file] [log] [blame]
James Robinson646469d2014-10-03 15:33:28 -07001// 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
Elliot Glayshereae49292015-01-28 10:47:32 -08007#include "base/trace_event/trace_event_argument.h"
James Robinson646469d2014-10-03 15:33:28 -07008#include "base/values.h"
9#include "cc/base/math_util.h"
10#include "cc/resources/platform_color.h"
11
12namespace cc {
13
14PictureDrawQuad::PictureDrawQuad() {
15}
16
17PictureDrawQuad::~PictureDrawQuad() {
18}
19
20void PictureDrawQuad::SetNew(const SharedQuadState* shared_quad_state,
21 const gfx::Rect& rect,
22 const gfx::Rect& opaque_rect,
23 const gfx::Rect& visible_rect,
24 const gfx::RectF& tex_coord_rect,
25 const gfx::Size& texture_size,
Etienne Membrivesb1556b32014-12-16 13:56:09 +010026 bool nearest_neighbor,
James Robinson646469d2014-10-03 15:33:28 -070027 ResourceFormat texture_format,
28 const gfx::Rect& content_rect,
29 float contents_scale,
James Robinson6e9a1c92014-11-13 17:05:42 -080030 scoped_refptr<RasterSource> raster_source) {
James Robinson646469d2014-10-03 15:33:28 -070031 ContentDrawQuadBase::SetNew(
32 shared_quad_state,
33 DrawQuad::PICTURE_CONTENT,
34 rect,
35 opaque_rect,
36 visible_rect,
37 tex_coord_rect,
38 texture_size,
Etienne Membrivesb1556b32014-12-16 13:56:09 +010039 !PlatformColor::SameComponentOrder(texture_format),
40 nearest_neighbor);
James Robinson646469d2014-10-03 15:33:28 -070041 this->content_rect = content_rect;
42 this->contents_scale = contents_scale;
James Robinson6e9a1c92014-11-13 17:05:42 -080043 this->raster_source = raster_source;
James Robinson646469d2014-10-03 15:33:28 -070044 this->texture_format = texture_format;
45}
46
47void PictureDrawQuad::SetAll(const SharedQuadState* shared_quad_state,
48 const gfx::Rect& rect,
49 const gfx::Rect& opaque_rect,
50 const gfx::Rect& visible_rect,
51 bool needs_blending,
52 const gfx::RectF& tex_coord_rect,
53 const gfx::Size& texture_size,
Etienne Membrivesb1556b32014-12-16 13:56:09 +010054 bool nearest_neighbor,
James Robinson646469d2014-10-03 15:33:28 -070055 ResourceFormat texture_format,
56 const gfx::Rect& content_rect,
57 float contents_scale,
James Robinson6e9a1c92014-11-13 17:05:42 -080058 scoped_refptr<RasterSource> raster_source) {
James Robinson646469d2014-10-03 15:33:28 -070059 ContentDrawQuadBase::SetAll(shared_quad_state,
60 DrawQuad::PICTURE_CONTENT,
61 rect,
62 opaque_rect,
63 visible_rect,
64 needs_blending,
65 tex_coord_rect,
66 texture_size,
67 !PlatformColor::SameComponentOrder(
Etienne Membrivesb1556b32014-12-16 13:56:09 +010068 texture_format),
69 nearest_neighbor);
James Robinson646469d2014-10-03 15:33:28 -070070 this->content_rect = content_rect;
71 this->contents_scale = contents_scale;
James Robinson6e9a1c92014-11-13 17:05:42 -080072 this->raster_source = raster_source;
James Robinson646469d2014-10-03 15:33:28 -070073 this->texture_format = texture_format;
74}
75
76void PictureDrawQuad::IterateResources(
77 const ResourceIteratorCallback& callback) {
78 // TODO(danakj): Convert to TextureDrawQuad?
79 NOTIMPLEMENTED();
80}
81
82const PictureDrawQuad* PictureDrawQuad::MaterialCast(const DrawQuad* quad) {
83 DCHECK(quad->material == DrawQuad::PICTURE_CONTENT);
84 return static_cast<const PictureDrawQuad*>(quad);
85}
86
Etienne Membrives386015a2015-02-19 17:27:12 +010087void PictureDrawQuad::ExtendValue(base::trace_event::TracedValue* value) const {
James Robinson646469d2014-10-03 15:33:28 -070088 ContentDrawQuadBase::ExtendValue(value);
James Robinson5e66a792015-01-21 17:02:08 -080089 MathUtil::AddToTracedValue("content_rect", content_rect, value);
James Robinson646469d2014-10-03 15:33:28 -070090 value->SetDouble("contents_scale", contents_scale);
91 value->SetInteger("texture_format", texture_format);
James Robinson6e9a1c92014-11-13 17:05:42 -080092 // TODO(piman): raster_source?
James Robinson646469d2014-10-03 15:33:28 -070093}
94
95} // namespace cc