OLD | NEW |
| (Empty) |
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/draw_quad.h" | |
6 | |
7 #include "base/logging.h" | |
8 #include "base/trace_event/trace_event_argument.h" | |
9 #include "base/values.h" | |
10 #include "cc/base/math_util.h" | |
11 #include "cc/debug/traced_value.h" | |
12 #include "cc/quads/checkerboard_draw_quad.h" | |
13 #include "cc/quads/debug_border_draw_quad.h" | |
14 #include "cc/quads/io_surface_draw_quad.h" | |
15 #include "cc/quads/render_pass_draw_quad.h" | |
16 #include "cc/quads/solid_color_draw_quad.h" | |
17 #include "cc/quads/stream_video_draw_quad.h" | |
18 #include "cc/quads/surface_draw_quad.h" | |
19 #include "cc/quads/texture_draw_quad.h" | |
20 #include "cc/quads/tile_draw_quad.h" | |
21 #include "cc/quads/yuv_video_draw_quad.h" | |
22 #include "ui/gfx/geometry/quad_f.h" | |
23 | |
24 namespace cc { | |
25 | |
26 DrawQuad::DrawQuad() | |
27 : material(INVALID), needs_blending(false), shared_quad_state(0) { | |
28 } | |
29 | |
30 void DrawQuad::SetAll(const SharedQuadState* shared_quad_state, | |
31 Material material, | |
32 const gfx::Rect& rect, | |
33 const gfx::Rect& opaque_rect, | |
34 const gfx::Rect& visible_rect, | |
35 bool needs_blending) { | |
36 DCHECK(rect.Contains(visible_rect)) << "rect: " << rect.ToString() | |
37 << " visible_rect: " | |
38 << visible_rect.ToString(); | |
39 DCHECK(opaque_rect.IsEmpty() || rect.Contains(opaque_rect)) | |
40 << "rect: " << rect.ToString() << "opaque_rect " | |
41 << opaque_rect.ToString(); | |
42 | |
43 this->material = material; | |
44 this->rect = rect; | |
45 this->opaque_rect = opaque_rect; | |
46 this->visible_rect = visible_rect; | |
47 this->needs_blending = needs_blending; | |
48 this->shared_quad_state = shared_quad_state; | |
49 | |
50 DCHECK(shared_quad_state); | |
51 DCHECK(material != INVALID); | |
52 } | |
53 | |
54 DrawQuad::~DrawQuad() { | |
55 } | |
56 | |
57 void DrawQuad::AsValueInto(base::trace_event::TracedValue* value) const { | |
58 value->SetInteger("material", material); | |
59 TracedValue::SetIDRef(shared_quad_state, value, "shared_state"); | |
60 | |
61 MathUtil::AddToTracedValue("content_space_rect", rect, value); | |
62 | |
63 bool rect_is_clipped; | |
64 gfx::QuadF rect_as_target_space_quad = MathUtil::MapQuad( | |
65 shared_quad_state->content_to_target_transform, | |
66 gfx::QuadF(rect), | |
67 &rect_is_clipped); | |
68 MathUtil::AddToTracedValue("rect_as_target_space_quad", | |
69 rect_as_target_space_quad, value); | |
70 | |
71 value->SetBoolean("rect_is_clipped", rect_is_clipped); | |
72 | |
73 MathUtil::AddToTracedValue("content_space_opaque_rect", opaque_rect, value); | |
74 | |
75 bool opaque_rect_is_clipped; | |
76 gfx::QuadF opaque_rect_as_target_space_quad = MathUtil::MapQuad( | |
77 shared_quad_state->content_to_target_transform, | |
78 gfx::QuadF(opaque_rect), | |
79 &opaque_rect_is_clipped); | |
80 MathUtil::AddToTracedValue("opaque_rect_as_target_space_quad", | |
81 opaque_rect_as_target_space_quad, value); | |
82 | |
83 value->SetBoolean("opaque_rect_is_clipped", opaque_rect_is_clipped); | |
84 | |
85 MathUtil::AddToTracedValue("content_space_visible_rect", visible_rect, value); | |
86 | |
87 bool visible_rect_is_clipped; | |
88 gfx::QuadF visible_rect_as_target_space_quad = MathUtil::MapQuad( | |
89 shared_quad_state->content_to_target_transform, | |
90 gfx::QuadF(visible_rect), | |
91 &visible_rect_is_clipped); | |
92 | |
93 MathUtil::AddToTracedValue("visible_rect_as_target_space_quad", | |
94 visible_rect_as_target_space_quad, value); | |
95 | |
96 value->SetBoolean("visible_rect_is_clipped", visible_rect_is_clipped); | |
97 | |
98 value->SetBoolean("needs_blending", needs_blending); | |
99 value->SetBoolean("should_draw_with_blending", ShouldDrawWithBlending()); | |
100 ExtendValue(value); | |
101 } | |
102 | |
103 } // namespace cc | |
OLD | NEW |