Index: cc/quads/yuv_video_draw_quad.cc |
diff --git a/cc/quads/yuv_video_draw_quad.cc b/cc/quads/yuv_video_draw_quad.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1d0e2f3b86c845f57fba75ae97181aa458096082 |
--- /dev/null |
+++ b/cc/quads/yuv_video_draw_quad.cc |
@@ -0,0 +1,92 @@ |
+// 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/yuv_video_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" |
+ |
+namespace cc { |
+ |
+YUVVideoDrawQuad::YUVVideoDrawQuad() |
+ : y_plane_resource_id(0), |
+ u_plane_resource_id(0), |
+ v_plane_resource_id(0), |
+ a_plane_resource_id(0) {} |
+YUVVideoDrawQuad::~YUVVideoDrawQuad() {} |
+ |
+void YUVVideoDrawQuad::SetNew(const SharedQuadState* shared_quad_state, |
+ const gfx::Rect& rect, |
+ const gfx::Rect& opaque_rect, |
+ const gfx::Rect& visible_rect, |
+ const gfx::RectF& tex_coord_rect, |
+ const gfx::Size& tex_size, |
+ unsigned y_plane_resource_id, |
+ unsigned u_plane_resource_id, |
+ unsigned v_plane_resource_id, |
+ unsigned a_plane_resource_id, |
+ ColorSpace color_space) { |
+ bool needs_blending = false; |
+ DrawQuad::SetAll(shared_quad_state, DrawQuad::YUV_VIDEO_CONTENT, rect, |
+ opaque_rect, visible_rect, needs_blending); |
+ this->tex_coord_rect = tex_coord_rect; |
+ this->tex_size = tex_size; |
+ this->y_plane_resource_id = y_plane_resource_id; |
+ this->u_plane_resource_id = u_plane_resource_id; |
+ this->v_plane_resource_id = v_plane_resource_id; |
+ this->a_plane_resource_id = a_plane_resource_id; |
+ this->color_space = color_space; |
+} |
+ |
+void YUVVideoDrawQuad::SetAll(const SharedQuadState* shared_quad_state, |
+ const gfx::Rect& rect, |
+ const gfx::Rect& opaque_rect, |
+ const gfx::Rect& visible_rect, |
+ bool needs_blending, |
+ const gfx::RectF& tex_coord_rect, |
+ const gfx::Size& tex_size, |
+ unsigned y_plane_resource_id, |
+ unsigned u_plane_resource_id, |
+ unsigned v_plane_resource_id, |
+ unsigned a_plane_resource_id, |
+ ColorSpace color_space) { |
+ DrawQuad::SetAll(shared_quad_state, DrawQuad::YUV_VIDEO_CONTENT, rect, |
+ opaque_rect, visible_rect, needs_blending); |
+ this->tex_coord_rect = tex_coord_rect; |
+ this->tex_size = tex_size; |
+ this->y_plane_resource_id = y_plane_resource_id; |
+ this->u_plane_resource_id = u_plane_resource_id; |
+ this->v_plane_resource_id = v_plane_resource_id; |
+ this->a_plane_resource_id = a_plane_resource_id; |
+ this->color_space = color_space; |
+} |
+ |
+void YUVVideoDrawQuad::IterateResources( |
+ const ResourceIteratorCallback& callback) { |
+ y_plane_resource_id = callback.Run(y_plane_resource_id); |
+ u_plane_resource_id = callback.Run(u_plane_resource_id); |
+ v_plane_resource_id = callback.Run(v_plane_resource_id); |
+ if (a_plane_resource_id) |
+ a_plane_resource_id = callback.Run(a_plane_resource_id); |
+} |
+ |
+const YUVVideoDrawQuad* YUVVideoDrawQuad::MaterialCast( |
+ const DrawQuad* quad) { |
+ DCHECK(quad->material == DrawQuad::YUV_VIDEO_CONTENT); |
+ return static_cast<const YUVVideoDrawQuad*>(quad); |
+} |
+ |
+void YUVVideoDrawQuad::ExtendValue( |
+ base::trace_event::TracedValue* value) const { |
+ MathUtil::AddToTracedValue("tex_coord_rect", tex_coord_rect, value); |
+ MathUtil::AddToTracedValue("tex_size", tex_size, value); |
+ value->SetInteger("y_plane_resource_id", y_plane_resource_id); |
+ value->SetInteger("u_plane_resource_id", u_plane_resource_id); |
+ value->SetInteger("v_plane_resource_id", v_plane_resource_id); |
+ value->SetInteger("a_plane_resource_id", a_plane_resource_id); |
+} |
+ |
+} // namespace cc |