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/trees/layer_tree_host_common.h" | 5 #include "cc/trees/layer_tree_host_common.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 | 8 |
9 #include "cc/animation/layer_animation_controller.h" | 9 #include "cc/animation/layer_animation_controller.h" |
10 #include "cc/animation/transform_operations.h" | 10 #include "cc/animation/transform_operations.h" |
(...skipping 20 matching lines...) Expand all Loading... |
31 #include "testing/gmock/include/gmock/gmock.h" | 31 #include "testing/gmock/include/gmock/gmock.h" |
32 #include "testing/gtest/include/gtest/gtest.h" | 32 #include "testing/gtest/include/gtest/gtest.h" |
33 #include "ui/gfx/quad_f.h" | 33 #include "ui/gfx/quad_f.h" |
34 #include "ui/gfx/transform.h" | 34 #include "ui/gfx/transform.h" |
35 | 35 |
36 namespace cc { | 36 namespace cc { |
37 namespace { | 37 namespace { |
38 | 38 |
39 class LayerWithForcedDrawsContent : public Layer { | 39 class LayerWithForcedDrawsContent : public Layer { |
40 public: | 40 public: |
41 LayerWithForcedDrawsContent() : Layer(), last_device_scale_factor_(0.f) {} | 41 LayerWithForcedDrawsContent() {} |
42 | 42 |
43 virtual bool DrawsContent() const OVERRIDE; | 43 virtual bool DrawsContent() const OVERRIDE; |
44 virtual void CalculateContentsScale(float ideal_contents_scale, | |
45 float device_scale_factor, | |
46 float page_scale_factor, | |
47 float maximum_animation_contents_scale, | |
48 bool animating_transform_to_screen, | |
49 float* contents_scale_x, | |
50 float* contents_scale_y, | |
51 gfx::Size* content_bounds) OVERRIDE; | |
52 | |
53 float last_device_scale_factor() const { return last_device_scale_factor_; } | |
54 | 44 |
55 private: | 45 private: |
56 virtual ~LayerWithForcedDrawsContent() {} | 46 virtual ~LayerWithForcedDrawsContent() {} |
57 | |
58 // Parameters from last CalculateContentsScale. | |
59 float last_device_scale_factor_; | |
60 }; | 47 }; |
61 | 48 |
62 bool LayerWithForcedDrawsContent::DrawsContent() const { return true; } | 49 bool LayerWithForcedDrawsContent::DrawsContent() const { return true; } |
63 | 50 |
64 void LayerWithForcedDrawsContent::CalculateContentsScale( | |
65 float ideal_contents_scale, | |
66 float device_scale_factor, | |
67 float page_scale_factor, | |
68 float maximum_animation_contents_scale, | |
69 bool animating_transform_to_screen, | |
70 float* contents_scale_x, | |
71 float* contents_scale_y, | |
72 gfx::Size* content_bounds) { | |
73 last_device_scale_factor_ = device_scale_factor; | |
74 Layer::CalculateContentsScale(ideal_contents_scale, | |
75 device_scale_factor, | |
76 page_scale_factor, | |
77 maximum_animation_contents_scale, | |
78 animating_transform_to_screen, | |
79 contents_scale_x, | |
80 contents_scale_y, | |
81 content_bounds); | |
82 } | |
83 | |
84 class MockContentLayerClient : public ContentLayerClient { | 51 class MockContentLayerClient : public ContentLayerClient { |
85 public: | 52 public: |
86 MockContentLayerClient() {} | 53 MockContentLayerClient() {} |
87 virtual ~MockContentLayerClient() {} | 54 virtual ~MockContentLayerClient() {} |
88 virtual void PaintContents( | 55 virtual void PaintContents( |
89 SkCanvas* canvas, | 56 SkCanvas* canvas, |
90 const gfx::Rect& clip, | 57 const gfx::Rect& clip, |
91 gfx::RectF* opaque, | 58 gfx::RectF* opaque, |
92 ContentLayerClient::GraphicsContextStatus gc_status) OVERRIDE {} | 59 ContentLayerClient::GraphicsContextStatus gc_status) OVERRIDE {} |
93 virtual void DidChangeLayerCanUseLCDText() OVERRIDE {} | 60 virtual void DidChangeLayerCanUseLCDText() OVERRIDE {} |
(...skipping 1097 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1191 translate.Translate(50, 50); | 1158 translate.Translate(50, 50); |
1192 { | 1159 { |
1193 RenderSurfaceLayerList render_surface_layer_list; | 1160 RenderSurfaceLayerList render_surface_layer_list; |
1194 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( | 1161 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( |
1195 root.get(), root->bounds(), translate, &render_surface_layer_list); | 1162 root.get(), root->bounds(), translate, &render_surface_layer_list); |
1196 inputs.can_adjust_raster_scales = true; | 1163 inputs.can_adjust_raster_scales = true; |
1197 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | 1164 LayerTreeHostCommon::CalculateDrawProperties(&inputs); |
1198 EXPECT_EQ(translate, root->draw_properties().target_space_transform); | 1165 EXPECT_EQ(translate, root->draw_properties().target_space_transform); |
1199 EXPECT_EQ(translate, child->draw_properties().target_space_transform); | 1166 EXPECT_EQ(translate, child->draw_properties().target_space_transform); |
1200 EXPECT_EQ(identity_matrix, root->render_surface()->draw_transform()); | 1167 EXPECT_EQ(identity_matrix, root->render_surface()->draw_transform()); |
1201 EXPECT_EQ(1.f, root->last_device_scale_factor()); | 1168 EXPECT_EQ(1.f, root->draw_properties().device_scale_factor); |
1202 EXPECT_EQ(1.f, child->last_device_scale_factor()); | 1169 EXPECT_EQ(1.f, child->draw_properties().device_scale_factor); |
1203 } | 1170 } |
1204 | 1171 |
1205 gfx::Transform scale; | 1172 gfx::Transform scale; |
1206 scale.Scale(2, 2); | 1173 scale.Scale(2, 2); |
1207 { | 1174 { |
1208 RenderSurfaceLayerList render_surface_layer_list; | 1175 RenderSurfaceLayerList render_surface_layer_list; |
1209 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( | 1176 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( |
1210 root.get(), root->bounds(), scale, &render_surface_layer_list); | 1177 root.get(), root->bounds(), scale, &render_surface_layer_list); |
1211 inputs.can_adjust_raster_scales = true; | 1178 inputs.can_adjust_raster_scales = true; |
1212 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | 1179 LayerTreeHostCommon::CalculateDrawProperties(&inputs); |
1213 EXPECT_EQ(scale, root->draw_properties().target_space_transform); | 1180 EXPECT_EQ(scale, root->draw_properties().target_space_transform); |
1214 EXPECT_EQ(scale, child->draw_properties().target_space_transform); | 1181 EXPECT_EQ(scale, child->draw_properties().target_space_transform); |
1215 EXPECT_EQ(identity_matrix, root->render_surface()->draw_transform()); | 1182 EXPECT_EQ(identity_matrix, root->render_surface()->draw_transform()); |
1216 EXPECT_EQ(2.f, root->last_device_scale_factor()); | 1183 EXPECT_EQ(2.f, root->draw_properties().device_scale_factor); |
1217 EXPECT_EQ(2.f, child->last_device_scale_factor()); | 1184 EXPECT_EQ(2.f, child->draw_properties().device_scale_factor); |
1218 } | 1185 } |
1219 | 1186 |
1220 gfx::Transform rotate; | 1187 gfx::Transform rotate; |
1221 rotate.Rotate(2); | 1188 rotate.Rotate(2); |
1222 { | 1189 { |
1223 RenderSurfaceLayerList render_surface_layer_list; | 1190 RenderSurfaceLayerList render_surface_layer_list; |
1224 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( | 1191 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( |
1225 root.get(), root->bounds(), rotate, &render_surface_layer_list); | 1192 root.get(), root->bounds(), rotate, &render_surface_layer_list); |
1226 inputs.can_adjust_raster_scales = true; | 1193 inputs.can_adjust_raster_scales = true; |
1227 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | 1194 LayerTreeHostCommon::CalculateDrawProperties(&inputs); |
1228 EXPECT_EQ(rotate, root->draw_properties().target_space_transform); | 1195 EXPECT_EQ(rotate, root->draw_properties().target_space_transform); |
1229 EXPECT_EQ(rotate, child->draw_properties().target_space_transform); | 1196 EXPECT_EQ(rotate, child->draw_properties().target_space_transform); |
1230 EXPECT_EQ(identity_matrix, root->render_surface()->draw_transform()); | 1197 EXPECT_EQ(identity_matrix, root->render_surface()->draw_transform()); |
1231 EXPECT_EQ(1.f, root->last_device_scale_factor()); | 1198 EXPECT_EQ(1.f, root->draw_properties().device_scale_factor); |
1232 EXPECT_EQ(1.f, child->last_device_scale_factor()); | 1199 EXPECT_EQ(1.f, child->draw_properties().device_scale_factor); |
1233 } | 1200 } |
1234 | 1201 |
1235 gfx::Transform composite; | 1202 gfx::Transform composite; |
1236 composite.ConcatTransform(translate); | 1203 composite.ConcatTransform(translate); |
1237 composite.ConcatTransform(scale); | 1204 composite.ConcatTransform(scale); |
1238 composite.ConcatTransform(rotate); | 1205 composite.ConcatTransform(rotate); |
1239 { | 1206 { |
1240 RenderSurfaceLayerList render_surface_layer_list; | 1207 RenderSurfaceLayerList render_surface_layer_list; |
1241 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( | 1208 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( |
1242 root.get(), root->bounds(), composite, &render_surface_layer_list); | 1209 root.get(), root->bounds(), composite, &render_surface_layer_list); |
(...skipping 14 matching lines...) Expand all Loading... |
1257 inputs.device_scale_factor = device_scale_factor; | 1224 inputs.device_scale_factor = device_scale_factor; |
1258 inputs.can_adjust_raster_scales = true; | 1225 inputs.can_adjust_raster_scales = true; |
1259 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | 1226 LayerTreeHostCommon::CalculateDrawProperties(&inputs); |
1260 gfx::Transform device_scaled_translate = translate; | 1227 gfx::Transform device_scaled_translate = translate; |
1261 device_scaled_translate.Scale(device_scale_factor, device_scale_factor); | 1228 device_scaled_translate.Scale(device_scale_factor, device_scale_factor); |
1262 EXPECT_EQ(device_scaled_translate, | 1229 EXPECT_EQ(device_scaled_translate, |
1263 root->draw_properties().target_space_transform); | 1230 root->draw_properties().target_space_transform); |
1264 EXPECT_EQ(device_scaled_translate, | 1231 EXPECT_EQ(device_scaled_translate, |
1265 child->draw_properties().target_space_transform); | 1232 child->draw_properties().target_space_transform); |
1266 EXPECT_EQ(identity_matrix, root->render_surface()->draw_transform()); | 1233 EXPECT_EQ(identity_matrix, root->render_surface()->draw_transform()); |
1267 EXPECT_EQ(device_scale_factor, root->last_device_scale_factor()); | 1234 EXPECT_EQ(device_scale_factor, root->draw_properties().device_scale_factor); |
1268 EXPECT_EQ(device_scale_factor, child->last_device_scale_factor()); | 1235 EXPECT_EQ(device_scale_factor, |
| 1236 child->draw_properties().device_scale_factor); |
1269 } | 1237 } |
1270 | 1238 |
1271 // Verify it composes correctly with page scale. | 1239 // Verify it composes correctly with page scale. |
1272 float page_scale_factor = 2.f; | 1240 float page_scale_factor = 2.f; |
1273 | 1241 |
1274 { | 1242 { |
1275 RenderSurfaceLayerList render_surface_layer_list; | 1243 RenderSurfaceLayerList render_surface_layer_list; |
1276 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( | 1244 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( |
1277 root.get(), root->bounds(), translate, &render_surface_layer_list); | 1245 root.get(), root->bounds(), translate, &render_surface_layer_list); |
1278 inputs.page_scale_factor = page_scale_factor; | 1246 inputs.page_scale_factor = page_scale_factor; |
1279 inputs.page_scale_application_layer = root.get(); | 1247 inputs.page_scale_application_layer = root.get(); |
1280 inputs.can_adjust_raster_scales = true; | 1248 inputs.can_adjust_raster_scales = true; |
1281 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | 1249 LayerTreeHostCommon::CalculateDrawProperties(&inputs); |
1282 gfx::Transform page_scaled_translate = translate; | 1250 gfx::Transform page_scaled_translate = translate; |
1283 page_scaled_translate.Scale(page_scale_factor, page_scale_factor); | 1251 page_scaled_translate.Scale(page_scale_factor, page_scale_factor); |
1284 EXPECT_EQ(translate, root->draw_properties().target_space_transform); | 1252 EXPECT_EQ(translate, root->draw_properties().target_space_transform); |
1285 EXPECT_EQ(page_scaled_translate, | 1253 EXPECT_EQ(page_scaled_translate, |
1286 child->draw_properties().target_space_transform); | 1254 child->draw_properties().target_space_transform); |
1287 EXPECT_EQ(identity_matrix, root->render_surface()->draw_transform()); | 1255 EXPECT_EQ(identity_matrix, root->render_surface()->draw_transform()); |
1288 EXPECT_EQ(1.f, root->last_device_scale_factor()); | 1256 EXPECT_EQ(1.f, root->draw_properties().device_scale_factor); |
1289 EXPECT_EQ(1.f, child->last_device_scale_factor()); | 1257 EXPECT_EQ(1.f, child->draw_properties().device_scale_factor); |
1290 } | 1258 } |
1291 | 1259 |
1292 // Verify that it composes correctly with transforms directly on root layer. | 1260 // Verify that it composes correctly with transforms directly on root layer. |
1293 root->SetTransform(composite); | 1261 root->SetTransform(composite); |
1294 | 1262 |
1295 { | 1263 { |
1296 RenderSurfaceLayerList render_surface_layer_list; | 1264 RenderSurfaceLayerList render_surface_layer_list; |
1297 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( | 1265 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( |
1298 root.get(), root->bounds(), composite, &render_surface_layer_list); | 1266 root.get(), root->bounds(), composite, &render_surface_layer_list); |
1299 inputs.can_adjust_raster_scales = true; | 1267 inputs.can_adjust_raster_scales = true; |
(...skipping 2742 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4042 ->render_surface()->layer_list().at(1)->id()); | 4010 ->render_surface()->layer_list().at(1)->id()); |
4043 } | 4011 } |
4044 | 4012 |
4045 class NoScaleContentLayer : public ContentLayer { | 4013 class NoScaleContentLayer : public ContentLayer { |
4046 public: | 4014 public: |
4047 static scoped_refptr<NoScaleContentLayer> Create(ContentLayerClient* client) { | 4015 static scoped_refptr<NoScaleContentLayer> Create(ContentLayerClient* client) { |
4048 return make_scoped_refptr(new NoScaleContentLayer(client)); | 4016 return make_scoped_refptr(new NoScaleContentLayer(client)); |
4049 } | 4017 } |
4050 | 4018 |
4051 virtual void CalculateContentsScale(float ideal_contents_scale, | 4019 virtual void CalculateContentsScale(float ideal_contents_scale, |
4052 float device_scale_factor, | |
4053 float page_scale_factor, | |
4054 float maximum_animation_contents_scale, | |
4055 bool animating_transform_to_screen, | |
4056 float* contents_scale_x, | 4020 float* contents_scale_x, |
4057 float* contents_scale_y, | 4021 float* contents_scale_y, |
4058 gfx::Size* content_bounds) OVERRIDE { | 4022 gfx::Size* content_bounds) OVERRIDE { |
4059 // Skip over the ContentLayer to the base Layer class. | 4023 // Skip over the ContentLayer to the base Layer class. |
4060 Layer::CalculateContentsScale(ideal_contents_scale, | 4024 Layer::CalculateContentsScale(ideal_contents_scale, |
4061 device_scale_factor, | |
4062 page_scale_factor, | |
4063 maximum_animation_contents_scale, | |
4064 animating_transform_to_screen, | |
4065 contents_scale_x, | 4025 contents_scale_x, |
4066 contents_scale_y, | 4026 contents_scale_y, |
4067 content_bounds); | 4027 content_bounds); |
4068 } | 4028 } |
4069 | 4029 |
4070 protected: | 4030 protected: |
4071 explicit NoScaleContentLayer(ContentLayerClient* client) | 4031 explicit NoScaleContentLayer(ContentLayerClient* client) |
4072 : ContentLayer(client) {} | 4032 : ContentLayer(client) {} |
4073 virtual ~NoScaleContentLayer() {} | 4033 virtual ~NoScaleContentLayer() {} |
4074 }; | 4034 }; |
(...skipping 4518 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8593 EXPECT_FLOAT_EQ(4.f, | 8553 EXPECT_FLOAT_EQ(4.f, |
8594 child1_layer->replica_layer() | 8554 child1_layer->replica_layer() |
8595 ->mask_layer() | 8555 ->mask_layer() |
8596 ->draw_properties() | 8556 ->draw_properties() |
8597 .device_scale_factor); | 8557 .device_scale_factor); |
8598 EXPECT_FLOAT_EQ(4.f, child2_layer->draw_properties().device_scale_factor); | 8558 EXPECT_FLOAT_EQ(4.f, child2_layer->draw_properties().device_scale_factor); |
8599 } | 8559 } |
8600 | 8560 |
8601 } // namespace | 8561 } // namespace |
8602 } // namespace cc | 8562 } // namespace cc |
OLD | NEW |