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 #ifndef CC_TREES_LAYER_TREE_HOST_COMMON_H_ | 5 #ifndef CC_TREES_LAYER_TREE_HOST_COMMON_H_ |
6 #define CC_TREES_LAYER_TREE_HOST_COMMON_H_ | 6 #define CC_TREES_LAYER_TREE_HOST_COMMON_H_ |
7 | 7 |
8 #include <limits> | 8 #include <limits> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
11 #include "base/bind.h" | 11 #include "base/bind.h" |
12 #include "base/memory/ref_counted.h" | 12 #include "base/memory/ref_counted.h" |
13 #include "cc/base/cc_export.h" | 13 #include "cc/base/cc_export.h" |
14 #include "cc/base/scoped_ptr_vector.h" | 14 #include "cc/base/scoped_ptr_vector.h" |
15 #include "cc/layers/layer_lists.h" | 15 #include "cc/layers/layer_lists.h" |
| 16 #include "cc/trees/property_tree.h" |
16 #include "ui/gfx/geometry/rect.h" | 17 #include "ui/gfx/geometry/rect.h" |
17 #include "ui/gfx/geometry/vector2d.h" | 18 #include "ui/gfx/geometry/vector2d.h" |
18 #include "ui/gfx/transform.h" | 19 #include "ui/gfx/transform.h" |
19 | 20 |
20 namespace cc { | 21 namespace cc { |
21 | 22 |
22 class LayerImpl; | 23 class LayerImpl; |
23 class Layer; | 24 class Layer; |
24 class SwapPromise; | 25 class SwapPromise; |
| 26 class PropertyTrees; |
25 | 27 |
26 class CC_EXPORT LayerTreeHostCommon { | 28 class CC_EXPORT LayerTreeHostCommon { |
27 public: | 29 public: |
28 static gfx::Rect CalculateVisibleRect(const gfx::Rect& target_surface_rect, | 30 static gfx::Rect CalculateVisibleRect(const gfx::Rect& target_surface_rect, |
29 const gfx::Rect& layer_bound_rect, | 31 const gfx::Rect& layer_bound_rect, |
30 const gfx::Transform& transform); | 32 const gfx::Transform& transform); |
31 | 33 |
32 template <typename LayerType, typename RenderSurfaceLayerListType> | 34 template <typename LayerType, typename RenderSurfaceLayerListType> |
33 struct CalcDrawPropsInputs { | 35 struct CalcDrawPropsInputs { |
34 public: | 36 public: |
35 CalcDrawPropsInputs(LayerType* root_layer, | 37 CalcDrawPropsInputs(LayerType* root_layer, |
36 const gfx::Size& device_viewport_size, | 38 const gfx::Size& device_viewport_size, |
37 const gfx::Transform& device_transform, | 39 const gfx::Transform& device_transform, |
38 float device_scale_factor, | 40 float device_scale_factor, |
39 float page_scale_factor, | 41 float page_scale_factor, |
40 const LayerType* page_scale_application_layer, | 42 const LayerType* page_scale_application_layer, |
41 const gfx::Vector2dF& elastic_overscroll, | 43 const gfx::Vector2dF& elastic_overscroll, |
42 const LayerType* elastic_overscroll_application_layer, | 44 const LayerType* elastic_overscroll_application_layer, |
43 int max_texture_size, | 45 int max_texture_size, |
44 bool can_use_lcd_text, | 46 bool can_use_lcd_text, |
45 bool layers_always_allowed_lcd_text, | 47 bool layers_always_allowed_lcd_text, |
46 bool can_render_to_separate_surface, | 48 bool can_render_to_separate_surface, |
47 bool can_adjust_raster_scales, | 49 bool can_adjust_raster_scales, |
48 bool verify_property_trees, | 50 bool verify_property_trees, |
49 RenderSurfaceLayerListType* render_surface_layer_list, | 51 RenderSurfaceLayerListType* render_surface_layer_list, |
50 int current_render_surface_layer_list_id) | 52 int current_render_surface_layer_list_id, |
| 53 PropertyTrees* property_trees) |
51 : root_layer(root_layer), | 54 : root_layer(root_layer), |
52 device_viewport_size(device_viewport_size), | 55 device_viewport_size(device_viewport_size), |
53 device_transform(device_transform), | 56 device_transform(device_transform), |
54 device_scale_factor(device_scale_factor), | 57 device_scale_factor(device_scale_factor), |
55 page_scale_factor(page_scale_factor), | 58 page_scale_factor(page_scale_factor), |
56 page_scale_application_layer(page_scale_application_layer), | 59 page_scale_application_layer(page_scale_application_layer), |
57 elastic_overscroll(elastic_overscroll), | 60 elastic_overscroll(elastic_overscroll), |
58 elastic_overscroll_application_layer( | 61 elastic_overscroll_application_layer( |
59 elastic_overscroll_application_layer), | 62 elastic_overscroll_application_layer), |
60 max_texture_size(max_texture_size), | 63 max_texture_size(max_texture_size), |
61 can_use_lcd_text(can_use_lcd_text), | 64 can_use_lcd_text(can_use_lcd_text), |
62 layers_always_allowed_lcd_text(layers_always_allowed_lcd_text), | 65 layers_always_allowed_lcd_text(layers_always_allowed_lcd_text), |
63 can_render_to_separate_surface(can_render_to_separate_surface), | 66 can_render_to_separate_surface(can_render_to_separate_surface), |
64 can_adjust_raster_scales(can_adjust_raster_scales), | 67 can_adjust_raster_scales(can_adjust_raster_scales), |
65 verify_property_trees(verify_property_trees), | 68 verify_property_trees(verify_property_trees), |
66 render_surface_layer_list(render_surface_layer_list), | 69 render_surface_layer_list(render_surface_layer_list), |
67 current_render_surface_layer_list_id( | 70 current_render_surface_layer_list_id( |
68 current_render_surface_layer_list_id) {} | 71 current_render_surface_layer_list_id), |
| 72 property_trees(property_trees) {} |
69 | 73 |
70 LayerType* root_layer; | 74 LayerType* root_layer; |
71 gfx::Size device_viewport_size; | 75 gfx::Size device_viewport_size; |
72 const gfx::Transform& device_transform; | 76 const gfx::Transform& device_transform; |
73 float device_scale_factor; | 77 float device_scale_factor; |
74 float page_scale_factor; | 78 float page_scale_factor; |
75 const LayerType* page_scale_application_layer; | 79 const LayerType* page_scale_application_layer; |
76 gfx::Vector2dF elastic_overscroll; | 80 gfx::Vector2dF elastic_overscroll; |
77 const LayerType* elastic_overscroll_application_layer; | 81 const LayerType* elastic_overscroll_application_layer; |
78 int max_texture_size; | 82 int max_texture_size; |
79 bool can_use_lcd_text; | 83 bool can_use_lcd_text; |
80 bool layers_always_allowed_lcd_text; | 84 bool layers_always_allowed_lcd_text; |
81 bool can_render_to_separate_surface; | 85 bool can_render_to_separate_surface; |
82 bool can_adjust_raster_scales; | 86 bool can_adjust_raster_scales; |
83 bool verify_property_trees; | 87 bool verify_property_trees; |
84 RenderSurfaceLayerListType* render_surface_layer_list; | 88 RenderSurfaceLayerListType* render_surface_layer_list; |
85 int current_render_surface_layer_list_id; | 89 int current_render_surface_layer_list_id; |
| 90 PropertyTrees* property_trees; |
86 }; | 91 }; |
87 | 92 |
88 template <typename LayerType, typename RenderSurfaceLayerListType> | 93 template <typename LayerType, typename RenderSurfaceLayerListType> |
89 struct CalcDrawPropsInputsForTesting | 94 struct CalcDrawPropsInputsForTesting |
90 : public CalcDrawPropsInputs<LayerType, RenderSurfaceLayerListType> { | 95 : public CalcDrawPropsInputs<LayerType, RenderSurfaceLayerListType> { |
91 CalcDrawPropsInputsForTesting( | 96 CalcDrawPropsInputsForTesting( |
92 LayerType* root_layer, | 97 LayerType* root_layer, |
93 const gfx::Size& device_viewport_size, | 98 const gfx::Size& device_viewport_size, |
94 const gfx::Transform& device_transform, | 99 const gfx::Transform& device_transform, |
95 RenderSurfaceLayerListType* render_surface_layer_list); | 100 RenderSurfaceLayerListType* render_surface_layer_list); |
96 CalcDrawPropsInputsForTesting( | 101 CalcDrawPropsInputsForTesting( |
97 LayerType* root_layer, | 102 LayerType* root_layer, |
98 const gfx::Size& device_viewport_size, | 103 const gfx::Size& device_viewport_size, |
99 RenderSurfaceLayerListType* render_surface_layer_list); | 104 RenderSurfaceLayerListType* render_surface_layer_list); |
100 | 105 |
101 private: | 106 private: |
102 const gfx::Transform identity_transform_; | 107 const gfx::Transform identity_transform_; |
| 108 PropertyTrees property_trees; |
103 }; | 109 }; |
104 | 110 |
105 typedef CalcDrawPropsInputs<Layer, RenderSurfaceLayerList> | 111 typedef CalcDrawPropsInputs<Layer, RenderSurfaceLayerList> |
106 CalcDrawPropsMainInputs; | 112 CalcDrawPropsMainInputs; |
107 typedef CalcDrawPropsInputsForTesting<Layer, RenderSurfaceLayerList> | 113 typedef CalcDrawPropsInputsForTesting<Layer, RenderSurfaceLayerList> |
108 CalcDrawPropsMainInputsForTesting; | 114 CalcDrawPropsMainInputsForTesting; |
109 static void UpdateRenderSurfaces(Layer* root_layer, | 115 static void UpdateRenderSurfaces(Layer* root_layer, |
110 bool can_render_to_separate_surface, | 116 bool can_render_to_separate_surface, |
111 const gfx::Transform& transform, | 117 const gfx::Transform& transform, |
112 bool preserves_2d_axis_alignment); | 118 bool preserves_2d_axis_alignment); |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
244 NULL, | 250 NULL, |
245 gfx::Vector2dF(), | 251 gfx::Vector2dF(), |
246 NULL, | 252 NULL, |
247 std::numeric_limits<int>::max() / 2, | 253 std::numeric_limits<int>::max() / 2, |
248 false, | 254 false, |
249 false, | 255 false, |
250 true, | 256 true, |
251 false, | 257 false, |
252 true, | 258 true, |
253 render_surface_layer_list, | 259 render_surface_layer_list, |
254 0) { | 260 0, |
| 261 &property_trees) { |
255 DCHECK(root_layer); | 262 DCHECK(root_layer); |
256 DCHECK(render_surface_layer_list); | 263 DCHECK(render_surface_layer_list); |
257 } | 264 } |
258 | 265 |
259 template <typename LayerType, typename RenderSurfaceLayerListType> | 266 template <typename LayerType, typename RenderSurfaceLayerListType> |
260 LayerTreeHostCommon::CalcDrawPropsInputsForTesting<LayerType, | 267 LayerTreeHostCommon::CalcDrawPropsInputsForTesting<LayerType, |
261 RenderSurfaceLayerListType>:: | 268 RenderSurfaceLayerListType>:: |
262 CalcDrawPropsInputsForTesting( | 269 CalcDrawPropsInputsForTesting( |
263 LayerType* root_layer, | 270 LayerType* root_layer, |
264 const gfx::Size& device_viewport_size, | 271 const gfx::Size& device_viewport_size, |
265 RenderSurfaceLayerListType* render_surface_layer_list) | 272 RenderSurfaceLayerListType* render_surface_layer_list) |
266 : CalcDrawPropsInputs<LayerType, RenderSurfaceLayerListType>( | 273 : CalcDrawPropsInputs<LayerType, RenderSurfaceLayerListType>( |
267 root_layer, | 274 root_layer, |
268 device_viewport_size, | 275 device_viewport_size, |
269 identity_transform_, | 276 identity_transform_, |
270 1.f, | 277 1.f, |
271 1.f, | 278 1.f, |
272 NULL, | 279 NULL, |
273 gfx::Vector2dF(), | 280 gfx::Vector2dF(), |
274 NULL, | 281 NULL, |
275 std::numeric_limits<int>::max() / 2, | 282 std::numeric_limits<int>::max() / 2, |
276 false, | 283 false, |
277 false, | 284 false, |
278 true, | 285 true, |
279 false, | 286 false, |
280 true, | 287 true, |
281 render_surface_layer_list, | 288 render_surface_layer_list, |
282 0) { | 289 0, |
| 290 &property_trees) { |
283 DCHECK(root_layer); | 291 DCHECK(root_layer); |
284 DCHECK(render_surface_layer_list); | 292 DCHECK(render_surface_layer_list); |
285 } | 293 } |
286 | 294 |
287 } // namespace cc | 295 } // namespace cc |
288 | 296 |
289 #endif // CC_TREES_LAYER_TREE_HOST_COMMON_H_ | 297 #endif // CC_TREES_LAYER_TREE_HOST_COMMON_H_ |
OLD | NEW |