#include "cc/test/mock_quad_culler.h"
+#include "cc/base/math_util.h"
#include "cc/quads/draw_quad.h"
namespace cc {
-MockQuadCuller::MockQuadCuller()
- : active_quad_list_(&quad_list_storage_),
- active_shared_quad_state_list_(&shared_quad_state_storage_) {}
+MockQuadCuller::MockQuadCuller() {
+ render_pass_storage_ = RenderPass::Create();
+ active_render_pass_ = render_pass_storage_.get();
+}
-MockQuadCuller::MockQuadCuller(
- QuadList* external_quad_list,
- SharedQuadStateList* external_shared_quad_state_list)
- : active_quad_list_(external_quad_list),
- active_shared_quad_state_list_(external_shared_quad_state_list) {}
+MockQuadCuller::MockQuadCuller(RenderPass* external_render_pass)
+ : active_render_pass_(external_render_pass) {
+}
MockQuadCuller::~MockQuadCuller() {}
-bool MockQuadCuller::Append(scoped_ptr<DrawQuad> draw_quad, AppendQuadsData*) {
- if (!draw_quad->rect.IsEmpty()) {
- active_quad_list_->push_back(draw_quad.Pass());
- return true;
- }
- return false;
+SharedQuadState* MockQuadCuller::CreateSharedQuadState() {
+ return active_render_pass_->CreateAndAppendSharedQuadState();
+}
+
+gfx::Rect MockQuadCuller::UnoccludedContentRect(
+ const gfx::Rect& content_rect,
+ const gfx::Transform& draw_transform) {
+ DCHECK(draw_transform.IsIdentityOrIntegerTranslation() ||
+ occluded_target_rect_.IsEmpty());
+ gfx::Rect target_rect =
+ MathUtil::MapEnclosingClippedRect(draw_transform, content_rect);
+ target_rect.Subtract(occluded_target_rect_);
+ gfx::Transform inverse_draw_transform(gfx::Transform::kSkipInitialization);
+ if (!draw_transform.GetInverse(&inverse_draw_transform))
+ NOTREACHED();
+ gfx::Rect result = MathUtil::ProjectEnclosingClippedRect(
+ inverse_draw_transform, target_rect);
+ return result;
+}
+
+gfx::Rect MockQuadCuller::UnoccludedContributingSurfaceContentRect(
+ const gfx::Rect& content_rect,
+ const gfx::Transform& draw_transform) {
+ DCHECK(draw_transform.IsIdentityOrIntegerTranslation() ||
+ occluded_target_rect_for_contributing_surface_.IsEmpty());
+ gfx::Rect target_rect =
+ MathUtil::MapEnclosingClippedRect(draw_transform, content_rect);
+ target_rect.Subtract(occluded_target_rect_for_contributing_surface_);
+ gfx::Transform inverse_draw_transform(gfx::Transform::kSkipInitialization);
+ if (!draw_transform.GetInverse(&inverse_draw_transform))
+ NOTREACHED();
+ gfx::Rect result = MathUtil::ProjectEnclosingClippedRect(
+ inverse_draw_transform, target_rect);
+ return result;
}
-SharedQuadState* MockQuadCuller::UseSharedQuadState(
- scoped_ptr<SharedQuadState> shared_quad_state) {
- SharedQuadState* raw_ptr = shared_quad_state.get();
- active_shared_quad_state_list_->push_back(shared_quad_state.Pass());
- return raw_ptr;
+void MockQuadCuller::Append(scoped_ptr<DrawQuad> draw_quad) {
+ DCHECK(!draw_quad->rect.IsEmpty());
+ DCHECK(!draw_quad->visible_rect.IsEmpty());
+ active_render_pass_->quad_list.push_back(draw_quad.Pass());
}
} // namespace cc