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 <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/debug/trace_event.h" | 9 #include "base/debug/trace_event.h" |
10 #include "cc/base/math_util.h" | 10 #include "cc/base/math_util.h" |
(...skipping 1249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1260 transform->matrix().set(1, 3, MathUtil::Round(transform->matrix().get(1, 3))); | 1260 transform->matrix().set(1, 3, MathUtil::Round(transform->matrix().get(1, 3))); |
1261 } | 1261 } |
1262 | 1262 |
1263 template <typename LayerType> | 1263 template <typename LayerType> |
1264 struct SubtreeGlobals { | 1264 struct SubtreeGlobals { |
1265 LayerSorter* layer_sorter; | 1265 LayerSorter* layer_sorter; |
1266 int max_texture_size; | 1266 int max_texture_size; |
1267 float device_scale_factor; | 1267 float device_scale_factor; |
1268 float page_scale_factor; | 1268 float page_scale_factor; |
1269 const LayerType* page_scale_application_layer; | 1269 const LayerType* page_scale_application_layer; |
| 1270 gfx::Vector2dF elastic_overscroll; |
| 1271 const LayerType* elastic_overscroll_application_layer; |
1270 bool can_adjust_raster_scales; | 1272 bool can_adjust_raster_scales; |
1271 bool can_render_to_separate_surface; | 1273 bool can_render_to_separate_surface; |
1272 bool layers_always_allowed_lcd_text; | 1274 bool layers_always_allowed_lcd_text; |
1273 }; | 1275 }; |
1274 | 1276 |
1275 template<typename LayerType> | 1277 template<typename LayerType> |
1276 struct DataForRecursion { | 1278 struct DataForRecursion { |
1277 // The accumulated sequence of transforms a layer will use to determine its | 1279 // The accumulated sequence of transforms a layer will use to determine its |
1278 // own draw transform. | 1280 // own draw transform. |
1279 gfx::Transform parent_matrix; | 1281 gfx::Transform parent_matrix; |
(...skipping 813 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2093 render_surface_layer_list->size(); | 2095 render_surface_layer_list->size(); |
2094 size_t layer_list_child_sorting_start_index = descendants.size(); | 2096 size_t layer_list_child_sorting_start_index = descendants.size(); |
2095 | 2097 |
2096 if (!layer->children().empty()) { | 2098 if (!layer->children().empty()) { |
2097 if (layer == globals.page_scale_application_layer) { | 2099 if (layer == globals.page_scale_application_layer) { |
2098 data_for_children.parent_matrix.Scale( | 2100 data_for_children.parent_matrix.Scale( |
2099 globals.page_scale_factor, | 2101 globals.page_scale_factor, |
2100 globals.page_scale_factor); | 2102 globals.page_scale_factor); |
2101 data_for_children.in_subtree_of_page_scale_application_layer = true; | 2103 data_for_children.in_subtree_of_page_scale_application_layer = true; |
2102 } | 2104 } |
| 2105 if (layer == globals.elastic_overscroll_application_layer) { |
| 2106 data_for_children.parent_matrix.Translate(globals.elastic_overscroll.x(), |
| 2107 globals.elastic_overscroll.y()); |
| 2108 } |
2103 | 2109 |
2104 // Flatten to 2D if the layer doesn't preserve 3D. | 2110 // Flatten to 2D if the layer doesn't preserve 3D. |
2105 if (layer->should_flatten_transform()) | 2111 if (layer->should_flatten_transform()) |
2106 data_for_children.parent_matrix.FlattenTo2d(); | 2112 data_for_children.parent_matrix.FlattenTo2d(); |
2107 | 2113 |
2108 data_for_children.scroll_compensation_matrix = | 2114 data_for_children.scroll_compensation_matrix = |
2109 ComputeScrollCompensationMatrixForChildren( | 2115 ComputeScrollCompensationMatrixForChildren( |
2110 layer, | 2116 layer, |
2111 data_from_ancestor.parent_matrix, | 2117 data_from_ancestor.parent_matrix, |
2112 data_from_ancestor.scroll_compensation_matrix, | 2118 data_from_ancestor.scroll_compensation_matrix, |
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2371 gfx::Transform scaled_device_transform = inputs.device_transform; | 2377 gfx::Transform scaled_device_transform = inputs.device_transform; |
2372 scaled_device_transform.Scale(inputs.device_scale_factor, | 2378 scaled_device_transform.Scale(inputs.device_scale_factor, |
2373 inputs.device_scale_factor); | 2379 inputs.device_scale_factor); |
2374 | 2380 |
2375 globals->layer_sorter = NULL; | 2381 globals->layer_sorter = NULL; |
2376 globals->max_texture_size = inputs.max_texture_size; | 2382 globals->max_texture_size = inputs.max_texture_size; |
2377 globals->device_scale_factor = | 2383 globals->device_scale_factor = |
2378 inputs.device_scale_factor * device_transform_scale; | 2384 inputs.device_scale_factor * device_transform_scale; |
2379 globals->page_scale_factor = inputs.page_scale_factor; | 2385 globals->page_scale_factor = inputs.page_scale_factor; |
2380 globals->page_scale_application_layer = inputs.page_scale_application_layer; | 2386 globals->page_scale_application_layer = inputs.page_scale_application_layer; |
| 2387 globals->elastic_overscroll = inputs.elastic_overscroll; |
| 2388 globals->elastic_overscroll_application_layer = |
| 2389 inputs.elastic_overscroll_application_layer; |
2381 globals->can_render_to_separate_surface = | 2390 globals->can_render_to_separate_surface = |
2382 inputs.can_render_to_separate_surface; | 2391 inputs.can_render_to_separate_surface; |
2383 globals->can_adjust_raster_scales = inputs.can_adjust_raster_scales; | 2392 globals->can_adjust_raster_scales = inputs.can_adjust_raster_scales; |
2384 globals->layers_always_allowed_lcd_text = | 2393 globals->layers_always_allowed_lcd_text = |
2385 inputs.layers_always_allowed_lcd_text; | 2394 inputs.layers_always_allowed_lcd_text; |
2386 | 2395 |
2387 data_for_recursion->parent_matrix = scaled_device_transform; | 2396 data_for_recursion->parent_matrix = scaled_device_transform; |
2388 data_for_recursion->full_hierarchy_matrix = identity_matrix; | 2397 data_for_recursion->full_hierarchy_matrix = identity_matrix; |
2389 data_for_recursion->scroll_compensation_matrix = identity_matrix; | 2398 data_for_recursion->scroll_compensation_matrix = identity_matrix; |
2390 data_for_recursion->fixed_container = inputs.root_layer; | 2399 data_for_recursion->fixed_container = inputs.root_layer; |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2449 inputs->current_render_surface_layer_list_id); | 2458 inputs->current_render_surface_layer_list_id); |
2450 | 2459 |
2451 // The dummy layer list should not have been used. | 2460 // The dummy layer list should not have been used. |
2452 DCHECK_EQ(0u, dummy_layer_list.size()); | 2461 DCHECK_EQ(0u, dummy_layer_list.size()); |
2453 // A root layer render_surface should always exist after | 2462 // A root layer render_surface should always exist after |
2454 // CalculateDrawProperties. | 2463 // CalculateDrawProperties. |
2455 DCHECK(inputs->root_layer->render_surface()); | 2464 DCHECK(inputs->root_layer->render_surface()); |
2456 } | 2465 } |
2457 | 2466 |
2458 } // namespace cc | 2467 } // namespace cc |
OLD | NEW |