| 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/layer_sorter.h" | 5 #include "cc/layer_sorter.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <deque> | 8 #include <deque> |
| 9 #include <limits> | 9 #include <limits> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 260 } | 260 } |
| 261 | 261 |
| 262 void LayerSorter::CreateGraphNodes(LayerList::iterator first, | 262 void LayerSorter::CreateGraphNodes(LayerList::iterator first, |
| 263 LayerList::iterator last) { | 263 LayerList::iterator last) { |
| 264 DVLOG(2) << "Creating graph nodes:"; | 264 DVLOG(2) << "Creating graph nodes:"; |
| 265 float min_z = FLT_MAX; | 265 float min_z = FLT_MAX; |
| 266 float max_z = -FLT_MAX; | 266 float max_z = -FLT_MAX; |
| 267 for (LayerList::const_iterator it = first; it < last; it++) { | 267 for (LayerList::const_iterator it = first; it < last; it++) { |
| 268 nodes_.push_back(GraphNode(*it)); | 268 nodes_.push_back(GraphNode(*it)); |
| 269 GraphNode& node = nodes_.at(nodes_.size() - 1); | 269 GraphNode& node = nodes_.at(nodes_.size() - 1); |
| 270 RenderSurfaceImpl* render_surface = node.layer->renderSurface(); | 270 RenderSurfaceImpl* render_surface = node.layer->render_surface(); |
| 271 if (!node.layer->drawsContent() && !render_surface) | 271 if (!node.layer->DrawsContent() && !render_surface) |
| 272 continue; | 272 continue; |
| 273 | 273 |
| 274 DVLOG(2) << "Layer " << node.layer->id() << | 274 DVLOG(2) << "Layer " << node.layer->id() << |
| 275 " (" << node.layer->bounds().width() << | 275 " (" << node.layer->bounds().width() << |
| 276 " x " << node.layer->bounds().height() << ")"; | 276 " x " << node.layer->bounds().height() << ")"; |
| 277 | 277 |
| 278 gfx::Transform draw_transform; | 278 gfx::Transform draw_transform; |
| 279 float layer_width, layer_height; | 279 float layer_width, layer_height; |
| 280 if (render_surface) { | 280 if (render_surface) { |
| 281 draw_transform = render_surface->draw_transform(); | 281 draw_transform = render_surface->draw_transform(); |
| 282 layer_width = render_surface->content_rect().width(); | 282 layer_width = render_surface->content_rect().width(); |
| 283 layer_height = render_surface->content_rect().height(); | 283 layer_height = render_surface->content_rect().height(); |
| 284 } else { | 284 } else { |
| 285 draw_transform = node.layer->drawTransform(); | 285 draw_transform = node.layer->draw_transform(); |
| 286 layer_width = node.layer->contentBounds().width(); | 286 layer_width = node.layer->content_bounds().width(); |
| 287 layer_height = node.layer->contentBounds().height(); | 287 layer_height = node.layer->content_bounds().height(); |
| 288 } | 288 } |
| 289 | 289 |
| 290 node.shape = LayerShape(layer_width, layer_height, draw_transform); | 290 node.shape = LayerShape(layer_width, layer_height, draw_transform); |
| 291 | 291 |
| 292 max_z = std::max(max_z, node.shape.transform_origin.z()); | 292 max_z = std::max(max_z, node.shape.transform_origin.z()); |
| 293 min_z = std::min(min_z, node.shape.transform_origin.z()); | 293 min_z = std::min(min_z, node.shape.transform_origin.z()); |
| 294 } | 294 } |
| 295 | 295 |
| 296 z_range_ = fabsf(max_z - min_z); | 296 z_range_ = fabsf(max_z - min_z); |
| 297 } | 297 } |
| 298 | 298 |
| 299 void LayerSorter::CreateGraphEdges() { | 299 void LayerSorter::CreateGraphEdges() { |
| 300 DVLOG(2) << "Edges:"; | 300 DVLOG(2) << "Edges:"; |
| 301 // Fraction of the total zRange below which z differences | 301 // Fraction of the total zRange below which z differences |
| 302 // are not considered reliable. | 302 // are not considered reliable. |
| 303 const float z_threshold_factor = 0.01f; | 303 const float z_threshold_factor = 0.01f; |
| 304 float z_threshold = z_range_ * z_threshold_factor; | 304 float z_threshold = z_range_ * z_threshold_factor; |
| 305 | 305 |
| 306 for (size_t na = 0; na < nodes_.size(); na++) { | 306 for (size_t na = 0; na < nodes_.size(); na++) { |
| 307 GraphNode& node_a = nodes_[na]; | 307 GraphNode& node_a = nodes_[na]; |
| 308 if (!node_a.layer->drawsContent() && !node_a.layer->renderSurface()) | 308 if (!node_a.layer->DrawsContent() && !node_a.layer->render_surface()) |
| 309 continue; | 309 continue; |
| 310 for (size_t nb = na + 1; nb < nodes_.size(); nb++) { | 310 for (size_t nb = na + 1; nb < nodes_.size(); nb++) { |
| 311 GraphNode& node_b = nodes_[nb]; | 311 GraphNode& node_b = nodes_[nb]; |
| 312 if (!node_b.layer->drawsContent() && !node_b.layer->renderSurface()) | 312 if (!node_b.layer->DrawsContent() && !node_b.layer->render_surface()) |
| 313 continue; | 313 continue; |
| 314 float weight = 0.f; | 314 float weight = 0.f; |
| 315 ABCompareResult overlap_result = CheckOverlap(&node_a.shape, | 315 ABCompareResult overlap_result = CheckOverlap(&node_a.shape, |
| 316 &node_b.shape, | 316 &node_b.shape, |
| 317 z_threshold, | 317 z_threshold, |
| 318 &weight); | 318 &weight); |
| 319 GraphNode* start_node = NULL; | 319 GraphNode* start_node = NULL; |
| 320 GraphNode* end_node = NULL; | 320 GraphNode* end_node = NULL; |
| 321 if (overlap_result == ABeforeB) { | 321 if (overlap_result == ABeforeB) { |
| 322 start_node = &node_a; | 322 start_node = &node_a; |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 459 *it = sorted_list[count++]->layer; | 459 *it = sorted_list[count++]->layer; |
| 460 | 460 |
| 461 DVLOG(2) << "Sorting end ----"; | 461 DVLOG(2) << "Sorting end ----"; |
| 462 | 462 |
| 463 nodes_.clear(); | 463 nodes_.clear(); |
| 464 edges_.clear(); | 464 edges_.clear(); |
| 465 active_edges_.clear(); | 465 active_edges_.clear(); |
| 466 } | 466 } |
| 467 | 467 |
| 468 } // namespace cc | 468 } // namespace cc |
| OLD | NEW |