stream_video_draw_quad.cc revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
1// Copyright 2012 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/stream_video_draw_quad.h"
6
7#include "base/logging.h"
8#include "base/values.h"
9#include "cc/base/math_util.h"
10
11namespace cc {
12
13StreamVideoDrawQuad::StreamVideoDrawQuad() : resource_id(0) {}
14
15scoped_ptr<StreamVideoDrawQuad> StreamVideoDrawQuad::Create() {
16  return make_scoped_ptr(new StreamVideoDrawQuad);
17}
18
19void StreamVideoDrawQuad::SetNew(const SharedQuadState* shared_quad_state,
20                                 const gfx::Rect& rect,
21                                 const gfx::Rect& opaque_rect,
22                                 unsigned resource_id,
23                                 const gfx::Transform& matrix) {
24  gfx::Rect visible_rect = rect;
25  bool needs_blending = false;
26  DrawQuad::SetAll(shared_quad_state, DrawQuad::STREAM_VIDEO_CONTENT, rect,
27                   opaque_rect, visible_rect, needs_blending);
28  this->resource_id = resource_id;
29  this->matrix = matrix;
30}
31
32void StreamVideoDrawQuad::SetAll(const SharedQuadState* shared_quad_state,
33                                 const gfx::Rect& rect,
34                                 const gfx::Rect& opaque_rect,
35                                 const gfx::Rect& visible_rect,
36                                 bool needs_blending,
37                                 unsigned resource_id,
38                                 const gfx::Transform& matrix) {
39  DrawQuad::SetAll(shared_quad_state, DrawQuad::STREAM_VIDEO_CONTENT, rect,
40                   opaque_rect, visible_rect, needs_blending);
41  this->resource_id = resource_id;
42  this->matrix = matrix;
43}
44
45void StreamVideoDrawQuad::IterateResources(
46    const ResourceIteratorCallback& callback) {
47  resource_id = callback.Run(resource_id);
48}
49
50const StreamVideoDrawQuad* StreamVideoDrawQuad::MaterialCast(
51    const DrawQuad* quad) {
52  DCHECK(quad->material == DrawQuad::STREAM_VIDEO_CONTENT);
53  return static_cast<const StreamVideoDrawQuad*>(quad);
54}
55
56void StreamVideoDrawQuad::ExtendValue(base::DictionaryValue* value) const {
57  value->SetInteger("resource_id", resource_id);
58  value->Set("matrix", MathUtil::AsValue(matrix).release());
59}
60
61}  // namespace cc
62