Index: cc/output/bsp_walk_action.cc |
diff --git a/cc/output/bsp_walk_action.cc b/cc/output/bsp_walk_action.cc |
index da5ada5a82aa3bd5504f4f8e681b9fcd171b7437..9ffc2998d5ef2afa60d7a068179ce3b4da236e52 100644 |
--- a/cc/output/bsp_walk_action.cc |
+++ b/cc/output/bsp_walk_action.cc |
@@ -9,15 +9,37 @@ |
#include "base/memory/scoped_ptr.h" |
#include "cc/output/direct_renderer.h" |
#include "cc/quads/draw_polygon.h" |
+#include "cc/quads/draw_quad.h" |
namespace cc { |
-void BspWalkActionToVector::operator()(DrawPolygon* item) { |
- list_->push_back(item); |
+BspWalkActionDrawPolygon::BspWalkActionDrawPolygon( |
+ DirectRenderer* renderer, |
+ DirectRenderer::DrawingFrame* frame, |
+ const gfx::Rect& render_pass_scissor, |
+ bool using_scissor_as_optimization) |
+ : renderer_(renderer), |
+ frame_(frame), |
+ render_pass_scissor_(render_pass_scissor), |
+ using_scissor_as_optimization_(using_scissor_as_optimization) { |
+} |
+ |
+void BspWalkActionDrawPolygon::operator()(DrawPolygon* item) { |
+ gfx::Transform inverse_transform; |
+ bool invertible = |
+ item->original_ref()->quadTransform().GetInverse(&inverse_transform); |
+ DCHECK(invertible); |
+ item->TransformToLayerSpace(inverse_transform); |
+ renderer_->DoDrawPolygon(*item, frame_, render_pass_scissor_, |
+ using_scissor_as_optimization_); |
} |
BspWalkActionToVector::BspWalkActionToVector(std::vector<DrawPolygon*>* in_list) |
: list_(in_list) { |
} |
+void BspWalkActionToVector::operator()(DrawPolygon* item) { |
+ list_->push_back(item); |
+} |
+ |
} // namespace cc |