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/solid_color_draw_quad.h"
6
7#include "base/logging.h"
8#include "base/values.h"
9
10namespace cc {
11
12SolidColorDrawQuad::SolidColorDrawQuad()
13    : color(0), force_anti_aliasing_off(false) {}
14
15scoped_ptr<SolidColorDrawQuad> SolidColorDrawQuad::Create() {
16  return make_scoped_ptr(new SolidColorDrawQuad);
17}
18
19void SolidColorDrawQuad::SetNew(const SharedQuadState* shared_quad_state,
20                                const gfx::Rect& rect,
21                                const gfx::Rect& visible_rect,
22                                SkColor color,
23                                bool force_anti_aliasing_off) {
24  gfx::Rect opaque_rect = SkColorGetA(color) == 255 ? rect : gfx::Rect();
25  bool needs_blending = false;
26  DrawQuad::SetAll(shared_quad_state, DrawQuad::SOLID_COLOR, rect, opaque_rect,
27                   visible_rect, needs_blending);
28  this->color = color;
29  this->force_anti_aliasing_off = force_anti_aliasing_off;
30}
31
32void SolidColorDrawQuad::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                                SkColor color,
38                                bool force_anti_aliasing_off) {
39  DrawQuad::SetAll(shared_quad_state, DrawQuad::SOLID_COLOR, rect, opaque_rect,
40                   visible_rect, needs_blending);
41  this->color = color;
42  this->force_anti_aliasing_off = force_anti_aliasing_off;
43}
44
45void SolidColorDrawQuad::IterateResources(
46    const ResourceIteratorCallback& callback) {}
47
48const SolidColorDrawQuad* SolidColorDrawQuad::MaterialCast(
49    const DrawQuad* quad) {
50  DCHECK(quad->material == DrawQuad::SOLID_COLOR);
51  return static_cast<const SolidColorDrawQuad*>(quad);
52}
53
54void SolidColorDrawQuad::ExtendValue(base::DictionaryValue* value) const {
55  value->SetInteger("color", color);
56  value->SetBoolean("force_anti_aliasing_off", force_anti_aliasing_off);
57}
58
59}  // namespace cc
60