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

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

Issue 2464103005: cc : Reland Move screen space scale factor to root transform node (Closed)
Patch Set: Reland patch Created 4 years, 1 month 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
« no previous file with comments | « cc/trees/property_tree.cc ('k') | cc/trees/property_tree_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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/property_tree_builder.h" 5 #include "cc/trees/property_tree_builder.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <map> 9 #include <map>
10 #include <set> 10 #include <set>
(...skipping 612 matching lines...) Expand 10 before | Expand all | Expand 10 after
623 kInvalidPropertyTreeNodeId); 623 kInvalidPropertyTreeNodeId);
624 624
625 node->has_potential_animation = has_potentially_animated_transform; 625 node->has_potential_animation = has_potentially_animated_transform;
626 node->is_currently_animating = TransformIsAnimating(layer); 626 node->is_currently_animating = TransformIsAnimating(layer);
627 if (has_potentially_animated_transform) { 627 if (has_potentially_animated_transform) {
628 node->has_only_translation_animations = 628 node->has_only_translation_animations =
629 HasOnlyTranslationTransforms(layer); 629 HasOnlyTranslationTransforms(layer);
630 } 630 }
631 631
632 float post_local_scale_factor = 1.0f; 632 float post_local_scale_factor = 1.0f;
633 if (is_root)
634 post_local_scale_factor =
635 data_for_children->property_trees->transform_tree.device_scale_factor();
636 633
637 if (is_page_scale_layer) { 634 if (is_page_scale_layer) {
638 post_local_scale_factor *= data_from_ancestor.page_scale_factor; 635 if (!is_root)
636 post_local_scale_factor *= data_from_ancestor.page_scale_factor;
639 data_for_children->property_trees->transform_tree.set_page_scale_factor( 637 data_for_children->property_trees->transform_tree.set_page_scale_factor(
640 data_from_ancestor.page_scale_factor); 638 data_from_ancestor.page_scale_factor);
641 } 639 }
642 640
643 if (has_surface && !is_root) 641 if (has_surface && !is_root)
644 node->needs_surface_contents_scale = true; 642 node->needs_surface_contents_scale = true;
645 643
646 node->source_node_id = source_index; 644 node->source_node_id = source_index;
647 node->post_local_scale_factor = post_local_scale_factor; 645 node->post_local_scale_factor = post_local_scale_factor;
648 if (is_root) { 646 if (is_root) {
649 data_for_children->property_trees->transform_tree.SetDeviceTransform( 647 float page_scale_factor_for_root =
650 *data_from_ancestor.device_transform, layer->position()); 648 is_page_scale_layer ? data_from_ancestor.page_scale_factor : 1.f;
651 data_for_children->property_trees->transform_tree 649 data_for_children->property_trees->transform_tree
652 .SetDeviceTransformScaleFactor(*data_from_ancestor.device_transform); 650 .SetRootTransformsAndScales(data_for_children->property_trees
651 ->transform_tree.device_scale_factor(),
652 page_scale_factor_for_root,
653 *data_from_ancestor.device_transform,
654 layer->position());
653 } else { 655 } else {
654 node->source_offset = source_offset; 656 node->source_offset = source_offset;
655 node->update_post_local_transform(layer->position(), 657 node->update_post_local_transform(layer->position(),
656 TransformOrigin(layer)); 658 TransformOrigin(layer));
657 } 659 }
658 660
659 if (is_overscroll_elasticity_layer) { 661 if (is_overscroll_elasticity_layer) {
660 DCHECK(!is_scrollable); 662 DCHECK(!is_scrollable);
661 node->scroll_offset = 663 node->scroll_offset =
662 gfx::ScrollOffset(data_from_ancestor.elastic_overscroll); 664 gfx::ScrollOffset(data_from_ancestor.elastic_overscroll);
(...skipping 669 matching lines...) Expand 10 before | Expand all | Expand 10 after
1332 const gfx::Transform& device_transform, 1334 const gfx::Transform& device_transform,
1333 PropertyTrees* property_trees, 1335 PropertyTrees* property_trees,
1334 SkColor color) { 1336 SkColor color) {
1335 if (!property_trees->needs_rebuild) { 1337 if (!property_trees->needs_rebuild) {
1336 draw_property_utils::UpdatePageScaleFactor( 1338 draw_property_utils::UpdatePageScaleFactor(
1337 property_trees, page_scale_layer, page_scale_factor, 1339 property_trees, page_scale_layer, page_scale_factor,
1338 device_scale_factor, device_transform); 1340 device_scale_factor, device_transform);
1339 draw_property_utils::UpdateElasticOverscroll( 1341 draw_property_utils::UpdateElasticOverscroll(
1340 property_trees, overscroll_elasticity_layer, elastic_overscroll); 1342 property_trees, overscroll_elasticity_layer, elastic_overscroll);
1341 property_trees->clip_tree.SetViewportClip(gfx::RectF(viewport)); 1343 property_trees->clip_tree.SetViewportClip(gfx::RectF(viewport));
1342 property_trees->transform_tree.SetDeviceTransform(device_transform, 1344 float page_scale_factor_for_root =
1343 root_layer->position()); 1345 page_scale_layer == root_layer ? page_scale_factor : 1.f;
1346 property_trees->transform_tree.SetRootTransformsAndScales(
1347 device_scale_factor, page_scale_factor_for_root, device_transform,
1348 root_layer->position());
1344 return; 1349 return;
1345 } 1350 }
1346 1351
1347 property_trees->sequence_number++; 1352 property_trees->sequence_number++;
1348 1353
1349 DataForRecursion<LayerType> data_for_recursion; 1354 DataForRecursion<LayerType> data_for_recursion;
1350 data_for_recursion.property_trees = property_trees; 1355 data_for_recursion.property_trees = property_trees;
1351 data_for_recursion.transform_tree_parent = nullptr; 1356 data_for_recursion.transform_tree_parent = nullptr;
1352 data_for_recursion.transform_fixed_parent = nullptr; 1357 data_for_recursion.transform_fixed_parent = nullptr;
1353 data_for_recursion.render_target = kRootPropertyTreeNodeId; 1358 data_for_recursion.render_target = kRootPropertyTreeNodeId;
(...skipping 23 matching lines...) Expand all
1377 data_for_recursion.axis_align_since_render_target = true; 1382 data_for_recursion.axis_align_since_render_target = true;
1378 data_for_recursion.property_trees->transform_tree.set_device_scale_factor( 1383 data_for_recursion.property_trees->transform_tree.set_device_scale_factor(
1379 device_scale_factor); 1384 device_scale_factor);
1380 data_for_recursion.safe_opaque_background_color = color; 1385 data_for_recursion.safe_opaque_background_color = color;
1381 1386
1382 ClipNode root_clip; 1387 ClipNode root_clip;
1383 root_clip.resets_clip = true; 1388 root_clip.resets_clip = true;
1384 root_clip.applies_local_clip = true; 1389 root_clip.applies_local_clip = true;
1385 root_clip.clip = gfx::RectF(viewport); 1390 root_clip.clip = gfx::RectF(viewport);
1386 root_clip.transform_id = kRootPropertyTreeNodeId; 1391 root_clip.transform_id = kRootPropertyTreeNodeId;
1392 root_clip.target_transform_id = kRootPropertyTreeNodeId;
1387 data_for_recursion.clip_tree_parent = 1393 data_for_recursion.clip_tree_parent =
1388 data_for_recursion.property_trees->clip_tree.Insert( 1394 data_for_recursion.property_trees->clip_tree.Insert(
1389 root_clip, kRootPropertyTreeNodeId); 1395 root_clip, kRootPropertyTreeNodeId);
1390 1396
1391 DataForRecursionFromChild<LayerType> data_from_child; 1397 DataForRecursionFromChild<LayerType> data_from_child;
1392 BuildPropertyTreesInternal(root_layer, data_for_recursion, &data_from_child); 1398 BuildPropertyTreesInternal(root_layer, data_for_recursion, &data_from_child);
1393 property_trees->needs_rebuild = false; 1399 property_trees->needs_rebuild = false;
1394 1400
1395 // The transform tree is kept up to date as it is built, but the 1401 // The transform tree is kept up to date as it is built, but the
1396 // combined_clips stored in the clip tree and the screen_space_opacity and 1402 // combined_clips stored in the clip tree and the screen_space_opacity and
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
1478 color = SkColorSetA(color, 255); 1484 color = SkColorSetA(color, 255);
1479 BuildPropertyTreesTopLevelInternal( 1485 BuildPropertyTreesTopLevelInternal(
1480 root_layer, page_scale_layer, inner_viewport_scroll_layer, 1486 root_layer, page_scale_layer, inner_viewport_scroll_layer,
1481 outer_viewport_scroll_layer, overscroll_elasticity_layer, 1487 outer_viewport_scroll_layer, overscroll_elasticity_layer,
1482 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, 1488 elastic_overscroll, page_scale_factor, device_scale_factor, viewport,
1483 device_transform, property_trees, color); 1489 device_transform, property_trees, color);
1484 property_trees->ResetCachedData(); 1490 property_trees->ResetCachedData();
1485 } 1491 }
1486 1492
1487 } // namespace cc 1493 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/property_tree.cc ('k') | cc/trees/property_tree_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698