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

Side by Side Diff: cc/layer_sorter.cc

Issue 12774006: cc: Chromify Layer and LayerImpl classes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: MoreAndroidCompilings Created 7 years, 9 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/layer_iterator_unittest.cc ('k') | cc/layer_sorter_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/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
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
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
OLDNEW
« no previous file with comments | « cc/layer_iterator_unittest.cc ('k') | cc/layer_sorter_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698