OLD | NEW |
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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/tiled_layer.h" | 5 #include "cc/tiled_layer.h" |
6 | 6 |
7 #include "cc/bitmap_content_layer_updater.h" | 7 #include "cc/bitmap_content_layer_updater.h" |
8 #include "cc/layer_painter.h" | 8 #include "cc/layer_painter.h" |
9 #include "cc/overdraw_metrics.h" | 9 #include "cc/overdraw_metrics.h" |
10 #include "cc/rendering_stats.h" | 10 #include "cc/rendering_stats.h" |
(...skipping 745 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
756 layer->update(*m_queue.get(), 0, m_stats); | 756 layer->update(*m_queue.get(), 0, m_stats); |
757 updateTextures(); | 757 updateTextures(); |
758 layerPushPropertiesTo(layer.get(), layerImpl.get()); | 758 layerPushPropertiesTo(layer.get(), layerImpl.get()); |
759 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0)); | 759 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0)); |
760 EXPECT_FALSE(layerImpl->hasResourceIdForTileAt(0, 1)); | 760 EXPECT_FALSE(layerImpl->hasResourceIdForTileAt(0, 1)); |
761 EXPECT_FALSE(layerImpl->hasResourceIdForTileAt(1, 0)); | 761 EXPECT_FALSE(layerImpl->hasResourceIdForTileAt(1, 0)); |
762 EXPECT_FALSE(layerImpl->hasResourceIdForTileAt(1, 1)); | 762 EXPECT_FALSE(layerImpl->hasResourceIdForTileAt(1, 1)); |
763 | 763 |
764 // Change the contents scale and verify that the content rectangle requiring
painting | 764 // Change the contents scale and verify that the content rectangle requiring
painting |
765 // is not scaled. | 765 // is not scaled. |
766 layer->setContentsScale(2); | 766 layer->setIdealContentsScale(2); |
767 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 200, 200); | 767 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 200, 200); |
768 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 100, 100), layer->lastNeedsDisplayRect
()); | 768 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 100, 100), layer->lastNeedsDisplayRect
()); |
769 | 769 |
770 // The impl side should get 2x2 tiles now. | 770 // The impl side should get 2x2 tiles now. |
771 layer->setTexturePriorities(m_priorityCalculator); | 771 layer->setTexturePriorities(m_priorityCalculator); |
772 m_resourceManager->prioritizeTextures(); | 772 m_resourceManager->prioritizeTextures(); |
773 layer->update(*m_queue.get(), 0, m_stats); | 773 layer->update(*m_queue.get(), 0, m_stats); |
774 updateTextures(); | 774 updateTextures(); |
775 layerPushPropertiesTo(layer.get(), layerImpl.get()); | 775 layerPushPropertiesTo(layer.get(), layerImpl.get()); |
776 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0)); | 776 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0)); |
(...skipping 392 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1169 TEST_F(TiledLayerTest, tilesPaintedWithOcclusionAndScaling) | 1169 TEST_F(TiledLayerTest, tilesPaintedWithOcclusionAndScaling) |
1170 { | 1170 { |
1171 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer(
m_resourceManager.get())); | 1171 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer(
m_resourceManager.get())); |
1172 TestOcclusionTracker occluded; | 1172 TestOcclusionTracker occluded; |
1173 | 1173 |
1174 // The tile size is 100x100. | 1174 // The tile size is 100x100. |
1175 | 1175 |
1176 // This makes sure the painting works when the content space is scaled to | 1176 // This makes sure the painting works when the content space is scaled to |
1177 // a different layer space. In this case tiles are scaled to be 200x200 | 1177 // a different layer space. In this case tiles are scaled to be 200x200 |
1178 // pixels, which means none should be occluded. | 1178 // pixels, which means none should be occluded. |
1179 layer->setContentsScale(0.5); | 1179 layer->setIdealContentsScale(0.5); |
1180 EXPECT_FLOAT_EQ(layer->contentsScaleX(), layer->contentsScaleY()); | 1180 EXPECT_FLOAT_EQ(layer->contentsScaleX(), layer->contentsScaleY()); |
1181 layer->setBounds(gfx::Size(600, 600)); | 1181 layer->setBounds(gfx::Size(600, 600)); |
1182 gfx::Transform drawTransform; | 1182 gfx::Transform drawTransform; |
1183 double invScaleFactor = 1 / layer->contentsScaleX(); | 1183 double invScaleFactor = 1 / layer->contentsScaleX(); |
1184 drawTransform.Scale(invScaleFactor, invScaleFactor); | 1184 drawTransform.Scale(invScaleFactor, invScaleFactor); |
1185 layer->drawProperties().target_space_transform = drawTransform; | 1185 layer->drawProperties().target_space_transform = drawTransform; |
1186 layer->drawProperties().screen_space_transform = drawTransform; | 1186 layer->drawProperties().screen_space_transform = drawTransform; |
1187 | 1187 |
1188 occluded.setOcclusion(gfx::Rect(200, 200, 300, 100)); | 1188 occluded.setOcclusion(gfx::Rect(200, 200, 300, 100)); |
1189 layer->drawProperties().drawable_content_rect = gfx::Rect(gfx::Point(), laye
r->bounds()); | 1189 layer->drawProperties().drawable_content_rect = gfx::Rect(gfx::Point(), laye
r->bounds()); |
(...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1570 scoped_refptr<BitmapContentLayerUpdater> m_layerUpdater; | 1570 scoped_refptr<BitmapContentLayerUpdater> m_layerUpdater; |
1571 }; | 1571 }; |
1572 | 1572 |
1573 TEST_F(TiledLayerTest, nonIntegerContentsScaleIsNotDistortedDuringPaint) | 1573 TEST_F(TiledLayerTest, nonIntegerContentsScaleIsNotDistortedDuringPaint) |
1574 { | 1574 { |
1575 scoped_refptr<UpdateTrackingTiledLayer> layer = make_scoped_refptr(new Updat
eTrackingTiledLayer(m_resourceManager.get())); | 1575 scoped_refptr<UpdateTrackingTiledLayer> layer = make_scoped_refptr(new Updat
eTrackingTiledLayer(m_resourceManager.get())); |
1576 | 1576 |
1577 gfx::Rect layerRect(0, 0, 30, 31); | 1577 gfx::Rect layerRect(0, 0, 30, 31); |
1578 layer->setPosition(layerRect.origin()); | 1578 layer->setPosition(layerRect.origin()); |
1579 layer->setBounds(layerRect.size()); | 1579 layer->setBounds(layerRect.size()); |
1580 layer->setContentsScale(1.5); | 1580 layer->setIdealContentsScale(1.5); |
1581 | 1581 |
1582 gfx::Rect contentRect(0, 0, 45, 47); | 1582 gfx::Rect contentRect(0, 0, 45, 47); |
1583 EXPECT_EQ(contentRect.size(), layer->contentBounds()); | 1583 EXPECT_EQ(contentRect.size(), layer->contentBounds()); |
1584 layer->drawProperties().visible_content_rect = contentRect; | 1584 layer->drawProperties().visible_content_rect = contentRect; |
1585 layer->drawProperties().drawable_content_rect = contentRect; | 1585 layer->drawProperties().drawable_content_rect = contentRect; |
1586 | 1586 |
1587 layer->setTexturePriorities(m_priorityCalculator); | 1587 layer->setTexturePriorities(m_priorityCalculator); |
1588 m_resourceManager->prioritizeTextures(); | 1588 m_resourceManager->prioritizeTextures(); |
1589 | 1589 |
1590 // Update the whole tile. | 1590 // Update the whole tile. |
(...skipping 10 matching lines...) Expand all Loading... |
1601 EXPECT_RECT_EQ(layerRect, layer->trackingLayerPainter()->paintedRect()); | 1601 EXPECT_RECT_EQ(layerRect, layer->trackingLayerPainter()->paintedRect()); |
1602 } | 1602 } |
1603 | 1603 |
1604 TEST_F(TiledLayerTest, nonIntegerContentsScaleIsNotDistortedDuringInvalidation) | 1604 TEST_F(TiledLayerTest, nonIntegerContentsScaleIsNotDistortedDuringInvalidation) |
1605 { | 1605 { |
1606 scoped_refptr<UpdateTrackingTiledLayer> layer = make_scoped_refptr(new Updat
eTrackingTiledLayer(m_resourceManager.get())); | 1606 scoped_refptr<UpdateTrackingTiledLayer> layer = make_scoped_refptr(new Updat
eTrackingTiledLayer(m_resourceManager.get())); |
1607 | 1607 |
1608 gfx::Rect layerRect(0, 0, 30, 31); | 1608 gfx::Rect layerRect(0, 0, 30, 31); |
1609 layer->setPosition(layerRect.origin()); | 1609 layer->setPosition(layerRect.origin()); |
1610 layer->setBounds(layerRect.size()); | 1610 layer->setBounds(layerRect.size()); |
1611 layer->setContentsScale(1.3f); | 1611 layer->setIdealContentsScale(1.3f); |
1612 | 1612 |
1613 gfx::Rect contentRect(gfx::Point(), layer->contentBounds()); | 1613 gfx::Rect contentRect(gfx::Point(), layer->contentBounds()); |
1614 layer->drawProperties().visible_content_rect = contentRect; | 1614 layer->drawProperties().visible_content_rect = contentRect; |
1615 layer->drawProperties().drawable_content_rect = contentRect; | 1615 layer->drawProperties().drawable_content_rect = contentRect; |
1616 | 1616 |
1617 layer->setTexturePriorities(m_priorityCalculator); | 1617 layer->setTexturePriorities(m_priorityCalculator); |
1618 m_resourceManager->prioritizeTextures(); | 1618 m_resourceManager->prioritizeTextures(); |
1619 | 1619 |
1620 // Update the whole tile. | 1620 // Update the whole tile. |
1621 layer->update(*m_queue.get(), 0, m_stats); | 1621 layer->update(*m_queue.get(), 0, m_stats); |
1622 layer->trackingLayerPainter()->resetPaintedRect(); | 1622 layer->trackingLayerPainter()->resetPaintedRect(); |
1623 | 1623 |
1624 EXPECT_RECT_EQ(gfx::Rect(), layer->trackingLayerPainter()->paintedRect()); | 1624 EXPECT_RECT_EQ(gfx::Rect(), layer->trackingLayerPainter()->paintedRect()); |
1625 updateTextures(); | 1625 updateTextures(); |
1626 | 1626 |
1627 // Invalidate the entire layer in layer space. When painting, the rect given
to webkit should match the layer's bounds. | 1627 // Invalidate the entire layer in layer space. When painting, the rect given
to webkit should match the layer's bounds. |
1628 layer->setNeedsDisplayRect(layerRect); | 1628 layer->setNeedsDisplayRect(layerRect); |
1629 layer->update(*m_queue.get(), 0, m_stats); | 1629 layer->update(*m_queue.get(), 0, m_stats); |
1630 | 1630 |
1631 EXPECT_RECT_EQ(layerRect, layer->trackingLayerPainter()->paintedRect()); | 1631 EXPECT_RECT_EQ(layerRect, layer->trackingLayerPainter()->paintedRect()); |
1632 } | 1632 } |
1633 | 1633 |
1634 } // namespace | 1634 } // namespace |
1635 } // namespace cc | 1635 } // namespace cc |
OLD | NEW |