OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/delegated_renderer_layer_impl.h" | 5 #include "cc/delegated_renderer_layer_impl.h" |
6 | 6 |
7 #include "cc/append_quads_data.h" | 7 #include "cc/append_quads_data.h" |
8 #include "cc/layer_tree_host_impl.h" | 8 #include "cc/layer_tree_host_impl.h" |
9 #include "cc/layer_tree_impl.h" | 9 #include "cc/layer_tree_impl.h" |
10 #include "cc/quad_sink.h" | 10 #include "cc/quad_sink.h" |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
83 delegatedRendererLayer->setTransform(transform); | 83 delegatedRendererLayer->setTransform(transform); |
84 | 84 |
85 ScopedPtrVector<RenderPass> delegatedRenderPasses; | 85 ScopedPtrVector<RenderPass> delegatedRenderPasses; |
86 TestRenderPass* pass1 = addRenderPass(delegatedRenderPasses, RenderPass:
:Id(9, 6), gfx::Rect(6, 6, 6, 6), gfx::Transform()); | 86 TestRenderPass* pass1 = addRenderPass(delegatedRenderPasses, RenderPass:
:Id(9, 6), gfx::Rect(6, 6, 6, 6), gfx::Transform()); |
87 addQuad(pass1, gfx::Rect(0, 0, 6, 6), 33u); | 87 addQuad(pass1, gfx::Rect(0, 0, 6, 6), 33u); |
88 TestRenderPass* pass2 = addRenderPass(delegatedRenderPasses, RenderPass:
:Id(9, 7), gfx::Rect(7, 7, 7, 7), gfx::Transform()); | 88 TestRenderPass* pass2 = addRenderPass(delegatedRenderPasses, RenderPass:
:Id(9, 7), gfx::Rect(7, 7, 7, 7), gfx::Transform()); |
89 addQuad(pass2, gfx::Rect(0, 0, 7, 7), 22u); | 89 addQuad(pass2, gfx::Rect(0, 0, 7, 7), 22u); |
90 addRenderPassQuad(pass2, pass1); | 90 addRenderPassQuad(pass2, pass1); |
91 TestRenderPass* pass3 = addRenderPass(delegatedRenderPasses, RenderPass:
:Id(9, 8), gfx::Rect(8, 8, 8, 8), gfx::Transform()); | 91 TestRenderPass* pass3 = addRenderPass(delegatedRenderPasses, RenderPass:
:Id(9, 8), gfx::Rect(8, 8, 8, 8), gfx::Transform()); |
92 addRenderPassQuad(pass3, pass2); | 92 addRenderPassQuad(pass3, pass2); |
93 delegatedRendererLayer->setRenderPasses(delegatedRenderPasses); | 93 delegatedRendererLayer->setRenderPasses(delegatedRenderPasses, gfx::Size
(10, 10)); |
94 | 94 |
95 // The RenderPasses should be taken by the layer. | 95 // The RenderPasses should be taken by the layer. |
96 EXPECT_EQ(0u, delegatedRenderPasses.size()); | 96 EXPECT_EQ(0u, delegatedRenderPasses.size()); |
97 | 97 |
98 m_rootLayerPtr = rootLayer.get(); | 98 m_rootLayerPtr = rootLayer.get(); |
99 m_layerBeforePtr = layerBefore.get(); | 99 m_layerBeforePtr = layerBefore.get(); |
100 m_layerAfterPtr = layerAfter.get(); | 100 m_layerAfterPtr = layerAfter.get(); |
101 m_delegatedRendererLayerPtr = delegatedRendererLayer.get(); | 101 m_delegatedRendererLayerPtr = delegatedRendererLayer.get(); |
102 | 102 |
103 // Force the delegated RenderPasses to come before the RenderPass from l
ayerAfter. | 103 // Force the delegated RenderPasses to come before the RenderPass from l
ayerAfter. |
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
411 quadSink.append(colorQuad.PassAs<DrawQuad>(), data); | 411 quadSink.append(colorQuad.PassAs<DrawQuad>(), data); |
412 | 412 |
413 colorQuad = SolidColorDrawQuad::Create(); | 413 colorQuad = SolidColorDrawQuad::Create(); |
414 colorQuad->SetNew(sharedState, gfx::Rect(10, 0, 10, 10), 3u); | 414 colorQuad->SetNew(sharedState, gfx::Rect(10, 0, 10, 10), 3u); |
415 quadSink.append(colorQuad.PassAs<DrawQuad>(), data); | 415 quadSink.append(colorQuad.PassAs<DrawQuad>(), data); |
416 | 416 |
417 colorQuad = SolidColorDrawQuad::Create(); | 417 colorQuad = SolidColorDrawQuad::Create(); |
418 colorQuad->SetNew(sharedState, gfx::Rect(10, 10, 10, 10), 4u); | 418 colorQuad->SetNew(sharedState, gfx::Rect(10, 10, 10, 10), 4u); |
419 quadSink.append(colorQuad.PassAs<DrawQuad>(), data); | 419 quadSink.append(colorQuad.PassAs<DrawQuad>(), data); |
420 | 420 |
421 delegatedRendererLayer->setRenderPasses(delegatedRenderPasses); | 421 delegatedRendererLayer->setRenderPasses( |
| 422 delegatedRenderPasses, gfx::Size(20, 20)); |
422 | 423 |
423 // The RenderPasses should be taken by the layer. | 424 // The RenderPasses should be taken by the layer. |
424 EXPECT_EQ(0u, delegatedRenderPasses.size()); | 425 EXPECT_EQ(0u, delegatedRenderPasses.size()); |
425 | 426 |
426 m_rootLayerPtr = rootLayer.get(); | 427 m_rootLayerPtr = rootLayer.get(); |
427 m_delegatedRendererLayerPtr = delegatedRendererLayer.get(); | 428 m_delegatedRendererLayerPtr = delegatedRendererLayer.get(); |
428 | 429 |
429 rootLayer->addChild(delegatedRendererLayer.PassAs<LayerImpl>()); | 430 rootLayer->addChild(delegatedRendererLayer.PassAs<LayerImpl>()); |
430 | 431 |
431 m_hostImpl->activeTree()->SetRootLayer(rootLayer.Pass()); | 432 m_hostImpl->activeTree()->SetRootLayer(rootLayer.Pass()); |
(...skipping 21 matching lines...) Expand all Loading... |
453 EXPECT_EQ(sharedState, quadList[1]->shared_quad_state); | 454 EXPECT_EQ(sharedState, quadList[1]->shared_quad_state); |
454 EXPECT_EQ(sharedState, quadList[2]->shared_quad_state); | 455 EXPECT_EQ(sharedState, quadList[2]->shared_quad_state); |
455 EXPECT_EQ(sharedState, quadList[3]->shared_quad_state); | 456 EXPECT_EQ(sharedState, quadList[3]->shared_quad_state); |
456 | 457 |
457 // The state should be transformed only once. | 458 // The state should be transformed only once. |
458 // The x/y values are: position (20) + transform (8 * 2) = 36 | 459 // The x/y values are: position (20) + transform (8 * 2) = 36 |
459 // 36 - (width / 2) = 36 - 30 / 2 = 21 | 460 // 36 - (width / 2) = 36 - 30 / 2 = 21 |
460 EXPECT_RECT_EQ(gfx::Rect(21, 21, 100, 100), sharedState->clipped_rect_in_tar
get); | 461 EXPECT_RECT_EQ(gfx::Rect(21, 21, 100, 100), sharedState->clipped_rect_in_tar
get); |
461 EXPECT_RECT_EQ(gfx::Rect(21, 21, 100, 100), sharedState->clip_rect); | 462 EXPECT_RECT_EQ(gfx::Rect(21, 21, 100, 100), sharedState->clip_rect); |
462 gfx::Transform expected; | 463 gfx::Transform expected; |
| 464 // This is the transform from the layer's space to its target. |
463 // The position (20) - the width / scale (30 / 2) = 20 - 15 = 5 | 465 // The position (20) - the width / scale (30 / 2) = 20 - 15 = 5 |
464 expected.Translate(5.0, 5.0); | 466 expected.Translate(5.0, 5.0); |
465 expected.Scale(2.0, 2.0); | 467 expected.Scale(2.0, 2.0); |
466 expected.Translate(8.0, 8.0); | 468 expected.Translate(8.0, 8.0); |
| 469 // The frame has size 20x20 but the layer's bounds are 30x30. |
| 470 expected.Scale(20.0 / 30.0, 20.0 / 30.0); |
| 471 // This is the transform within the source frame. |
467 expected.Scale(1.5, 1.5); | 472 expected.Scale(1.5, 1.5); |
468 expected.Translate(7.0, 7.0); | 473 expected.Translate(7.0, 7.0); |
469 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, sharedState->content_to_target_tra
nsform); | 474 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, sharedState->content_to_target_tra
nsform); |
470 | 475 |
471 m_hostImpl->drawLayers(frame); | 476 m_hostImpl->drawLayers(frame); |
472 m_hostImpl->didDrawAllLayers(frame); | 477 m_hostImpl->didDrawAllLayers(frame); |
473 } | 478 } |
474 | 479 |
475 } // namespace | 480 } // namespace |
476 } // namespace cc | 481 } // namespace cc |
OLD | NEW |