Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(26)

Side by Side Diff: cc/trees/layer_tree_host_common.cc

Issue 13285002: cc: Consolidate LayerList types. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « cc/trees/layer_tree_host_common.h ('k') | cc/trees/layer_tree_host_common_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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"
11 #include "cc/layers/heads_up_display_layer_impl.h" 11 #include "cc/layers/heads_up_display_layer_impl.h"
12 #include "cc/layers/layer.h" 12 #include "cc/layers/layer.h"
13 #include "cc/layers/layer_impl.h" 13 #include "cc/layers/layer_impl.h"
14 #include "cc/layers/layer_iterator.h" 14 #include "cc/layers/layer_iterator.h"
15 #include "cc/layers/render_surface.h" 15 #include "cc/layers/render_surface.h"
16 #include "cc/layers/render_surface_impl.h" 16 #include "cc/layers/render_surface_impl.h"
17 #include "cc/trees/layer_sorter.h" 17 #include "cc/trees/layer_sorter.h"
18 #include "cc/trees/layer_tree_impl.h" 18 #include "cc/trees/layer_tree_impl.h"
19 #include "ui/gfx/point_conversions.h" 19 #include "ui/gfx/point_conversions.h"
20 #include "ui/gfx/rect_conversions.h" 20 #include "ui/gfx/rect_conversions.h"
21 #include "ui/gfx/transform.h" 21 #include "ui/gfx/transform.h"
22 22
23 namespace cc { 23 namespace cc {
24 24
25 ScrollAndScaleSet::ScrollAndScaleSet() {} 25 ScrollAndScaleSet::ScrollAndScaleSet() {}
26 26
27 ScrollAndScaleSet::~ScrollAndScaleSet() {} 27 ScrollAndScaleSet::~ScrollAndScaleSet() {}
28 28
29 static void SortLayers(std::vector<scoped_refptr<Layer> >::iterator forst, 29 static void SortLayers(LayerList::iterator forst,
30 std::vector<scoped_refptr<Layer> >::iterator end, 30 LayerList::iterator end,
31 void* layer_sorter) { 31 void* layer_sorter) {
32 NOTREACHED(); 32 NOTREACHED();
33 } 33 }
34 34
35 static void SortLayers(std::vector<LayerImpl*>::iterator first, 35 static void SortLayers(LayerImplList::iterator first,
36 std::vector<LayerImpl*>::iterator end, 36 LayerImplList::iterator end,
37 LayerSorter* layer_sorter) { 37 LayerSorter* layer_sorter) {
38 DCHECK(layer_sorter); 38 DCHECK(layer_sorter);
39 TRACE_EVENT0("cc", "LayerTreeHostCommon::SortLayers"); 39 TRACE_EVENT0("cc", "LayerTreeHostCommon::SortLayers");
40 layer_sorter->Sort(first, end); 40 layer_sorter->Sort(first, end);
41 } 41 }
42 42
43 inline gfx::Rect CalculateVisibleRectWithCachedLayerRect( 43 inline gfx::Rect CalculateVisibleRectWithCachedLayerRect(
44 gfx::Rect target_surface_rect, 44 gfx::Rect target_surface_rect,
45 gfx::Rect layer_bound_rect, 45 gfx::Rect layer_bound_rect,
46 gfx::Rect layer_rect_in_target_space, 46 gfx::Rect layer_rect_in_target_space,
(...skipping 1240 matching lines...) Expand 10 before | Expand all | Expand 10 after
1287 } 1287 }
1288 } 1288 }
1289 1289
1290 void LayerTreeHostCommon::CalculateDrawProperties( 1290 void LayerTreeHostCommon::CalculateDrawProperties(
1291 Layer* root_layer, 1291 Layer* root_layer,
1292 gfx::Size device_viewport_size, 1292 gfx::Size device_viewport_size,
1293 float device_scale_factor, 1293 float device_scale_factor,
1294 float page_scale_factor, 1294 float page_scale_factor,
1295 int max_texture_size, 1295 int max_texture_size,
1296 bool can_use_lcd_text, 1296 bool can_use_lcd_text,
1297 std::vector<scoped_refptr<Layer> >* render_surface_layer_list) { 1297 LayerList* render_surface_layer_list) {
1298 gfx::Rect total_drawable_content_rect; 1298 gfx::Rect total_drawable_content_rect;
1299 gfx::Transform identity_matrix; 1299 gfx::Transform identity_matrix;
1300 gfx::Transform device_scale_transform; 1300 gfx::Transform device_scale_transform;
1301 device_scale_transform.Scale(device_scale_factor, device_scale_factor); 1301 device_scale_transform.Scale(device_scale_factor, device_scale_factor);
1302 std::vector<scoped_refptr<Layer> > dummy_layer_list; 1302 LayerList dummy_layer_list;
1303 1303
1304 // The root layer's render_surface should receive the device viewport as the 1304 // The root layer's render_surface should receive the device viewport as the
1305 // initial clip rect. 1305 // initial clip rect.
1306 bool subtree_should_be_clipped = true; 1306 bool subtree_should_be_clipped = true;
1307 gfx::Rect device_viewport_rect(device_viewport_size); 1307 gfx::Rect device_viewport_rect(device_viewport_size);
1308 bool update_tile_priorities = false; 1308 bool update_tile_priorities = false;
1309 1309
1310 // This function should have received a root layer. 1310 // This function should have received a root layer.
1311 DCHECK(IsRootLayer(root_layer)); 1311 DCHECK(IsRootLayer(root_layer));
1312 1312
1313 PreCalculateMetaInformation<Layer>(root_layer); 1313 PreCalculateMetaInformation<Layer>(root_layer);
1314 CalculateDrawPropertiesInternal<Layer, 1314 CalculateDrawPropertiesInternal<Layer,
1315 std::vector<scoped_refptr<Layer> >, 1315 LayerList,
1316 RenderSurface>(root_layer, 1316 RenderSurface>(root_layer,
1317 device_scale_transform, 1317 device_scale_transform,
1318 identity_matrix, 1318 identity_matrix,
1319 identity_matrix, 1319 identity_matrix,
1320 device_viewport_rect, 1320 device_viewport_rect,
1321 device_viewport_rect, 1321 device_viewport_rect,
1322 subtree_should_be_clipped, 1322 subtree_should_be_clipped,
1323 NULL, 1323 NULL,
1324 render_surface_layer_list, 1324 render_surface_layer_list,
1325 &dummy_layer_list, 1325 &dummy_layer_list,
(...skipping 12 matching lines...) Expand all
1338 DCHECK(root_layer->render_surface()); 1338 DCHECK(root_layer->render_surface());
1339 } 1339 }
1340 1340
1341 void LayerTreeHostCommon::CalculateDrawProperties( 1341 void LayerTreeHostCommon::CalculateDrawProperties(
1342 LayerImpl* root_layer, 1342 LayerImpl* root_layer,
1343 gfx::Size device_viewport_size, 1343 gfx::Size device_viewport_size,
1344 float device_scale_factor, 1344 float device_scale_factor,
1345 float page_scale_factor, 1345 float page_scale_factor,
1346 int max_texture_size, 1346 int max_texture_size,
1347 bool can_use_lcd_text, 1347 bool can_use_lcd_text,
1348 std::vector<LayerImpl*>* render_surface_layer_list, 1348 LayerImplList* render_surface_layer_list,
1349 bool update_tile_priorities) { 1349 bool update_tile_priorities) {
1350 gfx::Rect total_drawable_content_rect; 1350 gfx::Rect total_drawable_content_rect;
1351 gfx::Transform identity_matrix; 1351 gfx::Transform identity_matrix;
1352 gfx::Transform device_scale_transform; 1352 gfx::Transform device_scale_transform;
1353 device_scale_transform.Scale(device_scale_factor, device_scale_factor); 1353 device_scale_transform.Scale(device_scale_factor, device_scale_factor);
1354 std::vector<LayerImpl*> dummy_layer_list; 1354 LayerImplList dummy_layer_list;
1355 LayerSorter layer_sorter; 1355 LayerSorter layer_sorter;
1356 1356
1357 // The root layer's render_surface should receive the device viewport as the 1357 // The root layer's render_surface should receive the device viewport as the
1358 // initial clip rect. 1358 // initial clip rect.
1359 bool subtree_should_be_clipped = true; 1359 bool subtree_should_be_clipped = true;
1360 gfx::Rect device_viewport_rect(device_viewport_size); 1360 gfx::Rect device_viewport_rect(device_viewport_size);
1361 1361
1362 // This function should have received a root layer. 1362 // This function should have received a root layer.
1363 DCHECK(IsRootLayer(root_layer)); 1363 DCHECK(IsRootLayer(root_layer));
1364 1364
1365 PreCalculateMetaInformation<LayerImpl>(root_layer); 1365 PreCalculateMetaInformation<LayerImpl>(root_layer);
1366 CalculateDrawPropertiesInternal<LayerImpl, 1366 CalculateDrawPropertiesInternal<LayerImpl,
1367 std::vector<LayerImpl*>, 1367 LayerImplList,
1368 RenderSurfaceImpl>( 1368 RenderSurfaceImpl>(
1369 root_layer, 1369 root_layer,
1370 device_scale_transform, 1370 device_scale_transform,
1371 identity_matrix, 1371 identity_matrix,
1372 identity_matrix, 1372 identity_matrix,
1373 device_viewport_rect, 1373 device_viewport_rect,
1374 device_viewport_rect, 1374 device_viewport_rect,
1375 subtree_should_be_clipped, 1375 subtree_should_be_clipped,
1376 NULL, 1376 NULL,
1377 render_surface_layer_list, 1377 render_surface_layer_list,
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
1476 current_layer = current_layer->parent(); 1476 current_layer = current_layer->parent();
1477 } 1477 }
1478 1478
1479 // If we have finished walking all ancestors without having already exited, 1479 // If we have finished walking all ancestors without having already exited,
1480 // then the point is not clipped by any ancestors. 1480 // then the point is not clipped by any ancestors.
1481 return false; 1481 return false;
1482 } 1482 }
1483 1483
1484 LayerImpl* LayerTreeHostCommon::FindLayerThatIsHitByPoint( 1484 LayerImpl* LayerTreeHostCommon::FindLayerThatIsHitByPoint(
1485 gfx::PointF screen_space_point, 1485 gfx::PointF screen_space_point,
1486 const std::vector<LayerImpl*>& render_surface_layer_list) { 1486 const LayerImplList& render_surface_layer_list) {
1487 LayerImpl* found_layer = NULL; 1487 LayerImpl* found_layer = NULL;
1488 1488
1489 typedef LayerIterator<LayerImpl, 1489 typedef LayerIterator<LayerImpl,
1490 std::vector<LayerImpl*>, 1490 LayerImplList,
1491 RenderSurfaceImpl, 1491 RenderSurfaceImpl,
1492 LayerIteratorActions::FrontToBack> LayerIteratorType; 1492 LayerIteratorActions::FrontToBack> LayerIteratorType;
1493 LayerIteratorType end = LayerIteratorType::End(&render_surface_layer_list); 1493 LayerIteratorType end = LayerIteratorType::End(&render_surface_layer_list);
1494 1494
1495 for (LayerIteratorType 1495 for (LayerIteratorType
1496 it = LayerIteratorType::Begin(&render_surface_layer_list); 1496 it = LayerIteratorType::Begin(&render_surface_layer_list);
1497 it != end; 1497 it != end;
1498 ++it) { 1498 ++it) {
1499 // We don't want to consider render_surfaces for hit testing. 1499 // We don't want to consider render_surfaces for hit testing.
1500 if (!it.represents_itself()) 1500 if (!it.represents_itself())
(...skipping 21 matching lines...) Expand all
1522 break; 1522 break;
1523 } 1523 }
1524 1524
1525 // This can potentially return NULL, which means the screen_space_point did 1525 // This can potentially return NULL, which means the screen_space_point did
1526 // not successfully hit test any layers, not even the root layer. 1526 // not successfully hit test any layers, not even the root layer.
1527 return found_layer; 1527 return found_layer;
1528 } 1528 }
1529 1529
1530 LayerImpl* LayerTreeHostCommon::FindLayerThatIsHitByPointInTouchHandlerRegion( 1530 LayerImpl* LayerTreeHostCommon::FindLayerThatIsHitByPointInTouchHandlerRegion(
1531 gfx::PointF screen_space_point, 1531 gfx::PointF screen_space_point,
1532 const std::vector<LayerImpl*>& render_surface_layer_list) { 1532 const LayerImplList& render_surface_layer_list) {
1533 LayerImpl* found_layer = NULL; 1533 LayerImpl* found_layer = NULL;
1534 1534
1535 typedef LayerIterator<LayerImpl, 1535 typedef LayerIterator<LayerImpl,
1536 std::vector<LayerImpl*>, 1536 LayerImplList,
1537 RenderSurfaceImpl, 1537 RenderSurfaceImpl,
1538 LayerIteratorActions::FrontToBack> LayerIteratorType; 1538 LayerIteratorActions::FrontToBack> LayerIteratorType;
1539 LayerIteratorType end = LayerIteratorType::End(&render_surface_layer_list); 1539 LayerIteratorType end = LayerIteratorType::End(&render_surface_layer_list);
1540 1540
1541 for (LayerIteratorType 1541 for (LayerIteratorType
1542 it = LayerIteratorType::Begin(&render_surface_layer_list); 1542 it = LayerIteratorType::Begin(&render_surface_layer_list);
1543 it != end; 1543 it != end;
1544 ++it) { 1544 ++it) {
1545 // We don't want to consider render_surfaces for hit testing. 1545 // We don't want to consider render_surfaces for hit testing.
1546 if (!it.represents_itself()) 1546 if (!it.represents_itself())
(...skipping 29 matching lines...) Expand all
1576 // At this point, we think the point does hit the touch event handler region 1576 // At this point, we think the point does hit the touch event handler region
1577 // on the layer, but we need to walk up the parents to ensure that the layer 1577 // on the layer, but we need to walk up the parents to ensure that the layer
1578 // was not clipped in such a way that the hit point actually should not hit 1578 // was not clipped in such a way that the hit point actually should not hit
1579 // the layer. 1579 // the layer.
1580 if (PointIsClippedBySurfaceOrClipRect(screen_space_point, layer_impl)) 1580 if (PointIsClippedBySurfaceOrClipRect(screen_space_point, layer_impl))
1581 return false; 1581 return false;
1582 1582
1583 return true; 1583 return true;
1584 } 1584 }
1585 } // namespace cc 1585 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_common.h ('k') | cc/trees/layer_tree_host_common_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698