| // Copyright 2012 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #include "cc/quads/draw_quad.h" | 
 |  | 
 | #include "base/logging.h" | 
 | #include "base/trace_event/trace_event_argument.h" | 
 | #include "base/values.h" | 
 | #include "cc/base/math_util.h" | 
 | #include "cc/debug/traced_value.h" | 
 | #include "cc/quads/checkerboard_draw_quad.h" | 
 | #include "cc/quads/debug_border_draw_quad.h" | 
 | #include "cc/quads/io_surface_draw_quad.h" | 
 | #include "cc/quads/picture_draw_quad.h" | 
 | #include "cc/quads/render_pass_draw_quad.h" | 
 | #include "cc/quads/solid_color_draw_quad.h" | 
 | #include "cc/quads/stream_video_draw_quad.h" | 
 | #include "cc/quads/surface_draw_quad.h" | 
 | #include "cc/quads/texture_draw_quad.h" | 
 | #include "cc/quads/tile_draw_quad.h" | 
 | #include "cc/quads/yuv_video_draw_quad.h" | 
 | #include "ui/gfx/geometry/quad_f.h" | 
 |  | 
 | namespace cc { | 
 |  | 
 | DrawQuad::DrawQuad() | 
 |     : material(INVALID), | 
 |       needs_blending(false), | 
 |       shared_quad_state() { | 
 | } | 
 |  | 
 | void DrawQuad::SetAll(const SharedQuadState* shared_quad_state, | 
 |                       Material material, | 
 |                       const gfx::Rect& rect, | 
 |                       const gfx::Rect& opaque_rect, | 
 |                       const gfx::Rect& visible_rect, | 
 |                       bool needs_blending) { | 
 |   DCHECK(rect.Contains(visible_rect)) << "rect: " << rect.ToString() | 
 |                                       << " visible_rect: " | 
 |                                       << visible_rect.ToString(); | 
 |   DCHECK(opaque_rect.IsEmpty() || rect.Contains(opaque_rect)) | 
 |       << "rect: " << rect.ToString() << "opaque_rect " | 
 |       << opaque_rect.ToString(); | 
 |  | 
 |   this->material = material; | 
 |   this->rect = rect; | 
 |   this->opaque_rect = opaque_rect; | 
 |   this->visible_rect = visible_rect; | 
 |   this->needs_blending = needs_blending; | 
 |   this->shared_quad_state = shared_quad_state; | 
 |  | 
 |   DCHECK(shared_quad_state); | 
 |   DCHECK(material != INVALID); | 
 | } | 
 |  | 
 | DrawQuad::~DrawQuad() { | 
 | } | 
 |  | 
 | void DrawQuad::AsValueInto(base::trace_event::TracedValue* value) const { | 
 |   value->SetInteger("material", material); | 
 |   TracedValue::SetIDRef(shared_quad_state, value, "shared_state"); | 
 |  | 
 |   MathUtil::AddToTracedValue("content_space_rect", rect, value); | 
 |  | 
 |   bool rect_is_clipped; | 
 |   gfx::QuadF rect_as_target_space_quad = MathUtil::MapQuad( | 
 |       shared_quad_state->content_to_target_transform, | 
 |       gfx::QuadF(rect), | 
 |       &rect_is_clipped); | 
 |   MathUtil::AddToTracedValue("rect_as_target_space_quad", | 
 |                              rect_as_target_space_quad, value); | 
 |  | 
 |   value->SetBoolean("rect_is_clipped", rect_is_clipped); | 
 |  | 
 |   MathUtil::AddToTracedValue("content_space_opaque_rect", opaque_rect, value); | 
 |  | 
 |   bool opaque_rect_is_clipped; | 
 |   gfx::QuadF opaque_rect_as_target_space_quad = MathUtil::MapQuad( | 
 |       shared_quad_state->content_to_target_transform, | 
 |       gfx::QuadF(opaque_rect), | 
 |       &opaque_rect_is_clipped); | 
 |   MathUtil::AddToTracedValue("opaque_rect_as_target_space_quad", | 
 |                              opaque_rect_as_target_space_quad, value); | 
 |  | 
 |   value->SetBoolean("opaque_rect_is_clipped", opaque_rect_is_clipped); | 
 |  | 
 |   MathUtil::AddToTracedValue("content_space_visible_rect", visible_rect, value); | 
 |  | 
 |   bool visible_rect_is_clipped; | 
 |   gfx::QuadF visible_rect_as_target_space_quad = MathUtil::MapQuad( | 
 |       shared_quad_state->content_to_target_transform, | 
 |       gfx::QuadF(visible_rect), | 
 |       &visible_rect_is_clipped); | 
 |  | 
 |   MathUtil::AddToTracedValue("visible_rect_as_target_space_quad", | 
 |                              visible_rect_as_target_space_quad, value); | 
 |  | 
 |   value->SetBoolean("visible_rect_is_clipped", visible_rect_is_clipped); | 
 |  | 
 |   value->SetBoolean("needs_blending", needs_blending); | 
 |   value->SetBoolean("should_draw_with_blending", ShouldDrawWithBlending()); | 
 |   ExtendValue(value); | 
 | } | 
 |  | 
 | }  // namespace cc |