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/checkerboard_draw_quad.h"
6
7#include "base/debug/trace_event_argument.h"
8#include "base/logging.h"
9#include "base/values.h"
10
11namespace cc {
12
13CheckerboardDrawQuad::CheckerboardDrawQuad() : color(0) {}
14
15void CheckerboardDrawQuad::SetNew(const SharedQuadState* shared_quad_state,
16                                  const gfx::Rect& rect,
17                                  const gfx::Rect& visible_rect,
18                                  SkColor color) {
19  gfx::Rect opaque_rect = SkColorGetA(color) == 255 ? rect : gfx::Rect();
20  bool needs_blending = false;
21  DrawQuad::SetAll(shared_quad_state, DrawQuad::CHECKERBOARD, rect, opaque_rect,
22                   visible_rect, needs_blending);
23  this->color = color;
24}
25
26void CheckerboardDrawQuad::SetAll(const SharedQuadState* shared_quad_state,
27                                  const gfx::Rect& rect,
28                                  const gfx::Rect& opaque_rect,
29                                  const gfx::Rect& visible_rect,
30                                  bool needs_blending,
31                                  SkColor color) {
32  DrawQuad::SetAll(shared_quad_state, DrawQuad::CHECKERBOARD, rect, opaque_rect,
33                   visible_rect, needs_blending);
34  this->color = color;
35}
36
37void CheckerboardDrawQuad::IterateResources(
38    const ResourceIteratorCallback& callback) {}
39
40const CheckerboardDrawQuad* CheckerboardDrawQuad::MaterialCast(
41    const DrawQuad* quad) {
42  DCHECK(quad->material == DrawQuad::CHECKERBOARD);
43  return static_cast<const CheckerboardDrawQuad*>(quad);
44}
45
46void CheckerboardDrawQuad::ExtendValue(base::debug::TracedValue* value) const {
47  value->SetInteger("color", color);
48}
49
50}  // namespace cc
51