OLD | NEW |
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 <stddef.h> | 5 #include <stddef.h> |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 829 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
840 return; | 840 return; |
841 } | 841 } |
842 | 842 |
843 TransformTree& transform_tree = property_trees()->transform_tree; | 843 TransformTree& transform_tree = property_trees()->transform_tree; |
844 float layer_scale_factor = transform_tree.device_scale_factor() * | 844 float layer_scale_factor = transform_tree.device_scale_factor() * |
845 transform_tree.device_transform_scale_factor(); | 845 transform_tree.device_transform_scale_factor(); |
846 TransformNode* transform_node = | 846 TransformNode* transform_node = |
847 transform_tree.Node(effect_node->transform_id); | 847 transform_tree.Node(effect_node->transform_id); |
848 if (transform_node->in_subtree_of_page_scale_layer) | 848 if (transform_node->in_subtree_of_page_scale_layer) |
849 layer_scale_factor *= transform_tree.page_scale_factor(); | 849 layer_scale_factor *= transform_tree.page_scale_factor(); |
| 850 |
| 851 // Note: Copy requests currently expect transform to effect output size. |
| 852 bool use_transform_for_contents_scale = |
| 853 property_trees()->can_adjust_raster_scales || |
| 854 effect_node->has_copy_request; |
850 effect_node->surface_contents_scale = | 855 effect_node->surface_contents_scale = |
851 MathUtil::ComputeTransform2dScaleComponents( | 856 use_transform_for_contents_scale |
852 transform_tree.ToScreen(transform_node->id), layer_scale_factor); | 857 ? MathUtil::ComputeTransform2dScaleComponents( |
| 858 transform_tree.ToScreen(transform_node->id), layer_scale_factor) |
| 859 : gfx::Vector2dF(layer_scale_factor, layer_scale_factor); |
853 } | 860 } |
854 | 861 |
855 EffectNode* EffectTree::FindNodeFromElementId(ElementId id) { | 862 EffectNode* EffectTree::FindNodeFromElementId(ElementId id) { |
856 auto iterator = property_trees()->element_id_to_effect_node_index.find(id); | 863 auto iterator = property_trees()->element_id_to_effect_node_index.find(id); |
857 if (iterator == property_trees()->element_id_to_effect_node_index.end()) | 864 if (iterator == property_trees()->element_id_to_effect_node_index.end()) |
858 return nullptr; | 865 return nullptr; |
859 | 866 |
860 return Node(iterator->second); | 867 return Node(iterator->second); |
861 } | 868 } |
862 | 869 |
(...skipping 730 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1593 PropertyTreesCachedData::PropertyTreesCachedData() | 1600 PropertyTreesCachedData::PropertyTreesCachedData() |
1594 : transform_tree_update_number(0) { | 1601 : transform_tree_update_number(0) { |
1595 animation_scales.clear(); | 1602 animation_scales.clear(); |
1596 } | 1603 } |
1597 | 1604 |
1598 PropertyTreesCachedData::~PropertyTreesCachedData() {} | 1605 PropertyTreesCachedData::~PropertyTreesCachedData() {} |
1599 | 1606 |
1600 PropertyTrees::PropertyTrees() | 1607 PropertyTrees::PropertyTrees() |
1601 : needs_rebuild(true), | 1608 : needs_rebuild(true), |
1602 non_root_surfaces_enabled(true), | 1609 non_root_surfaces_enabled(true), |
| 1610 can_adjust_raster_scales(true), |
1603 changed(false), | 1611 changed(false), |
1604 full_tree_damaged(false), | 1612 full_tree_damaged(false), |
1605 sequence_number(0), | 1613 sequence_number(0), |
1606 is_main_thread(true), | 1614 is_main_thread(true), |
1607 is_active(false) { | 1615 is_active(false) { |
1608 transform_tree.SetPropertyTrees(this); | 1616 transform_tree.SetPropertyTrees(this); |
1609 effect_tree.SetPropertyTrees(this); | 1617 effect_tree.SetPropertyTrees(this); |
1610 clip_tree.SetPropertyTrees(this); | 1618 clip_tree.SetPropertyTrees(this); |
1611 scroll_tree.SetPropertyTrees(this); | 1619 scroll_tree.SetPropertyTrees(this); |
1612 } | 1620 } |
(...skipping 10 matching lines...) Expand all Loading... |
1623 other.element_id_to_scroll_node_index && | 1631 other.element_id_to_scroll_node_index && |
1624 element_id_to_transform_node_index == | 1632 element_id_to_transform_node_index == |
1625 other.element_id_to_transform_node_index && | 1633 other.element_id_to_transform_node_index && |
1626 always_use_active_tree_opacity_effect_ids == | 1634 always_use_active_tree_opacity_effect_ids == |
1627 other.always_use_active_tree_opacity_effect_ids && | 1635 other.always_use_active_tree_opacity_effect_ids && |
1628 needs_rebuild == other.needs_rebuild && changed == other.changed && | 1636 needs_rebuild == other.needs_rebuild && changed == other.changed && |
1629 full_tree_damaged == other.full_tree_damaged && | 1637 full_tree_damaged == other.full_tree_damaged && |
1630 is_main_thread == other.is_main_thread && | 1638 is_main_thread == other.is_main_thread && |
1631 is_active == other.is_active && | 1639 is_active == other.is_active && |
1632 non_root_surfaces_enabled == other.non_root_surfaces_enabled && | 1640 non_root_surfaces_enabled == other.non_root_surfaces_enabled && |
| 1641 can_adjust_raster_scales == other.can_adjust_raster_scales && |
1633 sequence_number == other.sequence_number; | 1642 sequence_number == other.sequence_number; |
1634 } | 1643 } |
1635 | 1644 |
1636 PropertyTrees& PropertyTrees::operator=(const PropertyTrees& from) { | 1645 PropertyTrees& PropertyTrees::operator=(const PropertyTrees& from) { |
1637 transform_tree = from.transform_tree; | 1646 transform_tree = from.transform_tree; |
1638 effect_tree = from.effect_tree; | 1647 effect_tree = from.effect_tree; |
1639 clip_tree = from.clip_tree; | 1648 clip_tree = from.clip_tree; |
1640 scroll_tree = from.scroll_tree; | 1649 scroll_tree = from.scroll_tree; |
1641 always_use_active_tree_opacity_effect_ids = | 1650 always_use_active_tree_opacity_effect_ids = |
1642 from.always_use_active_tree_opacity_effect_ids; | 1651 from.always_use_active_tree_opacity_effect_ids; |
1643 element_id_to_effect_node_index = from.element_id_to_effect_node_index; | 1652 element_id_to_effect_node_index = from.element_id_to_effect_node_index; |
1644 element_id_to_scroll_node_index = from.element_id_to_scroll_node_index; | 1653 element_id_to_scroll_node_index = from.element_id_to_scroll_node_index; |
1645 element_id_to_transform_node_index = from.element_id_to_transform_node_index; | 1654 element_id_to_transform_node_index = from.element_id_to_transform_node_index; |
1646 needs_rebuild = from.needs_rebuild; | 1655 needs_rebuild = from.needs_rebuild; |
1647 changed = from.changed; | 1656 changed = from.changed; |
1648 full_tree_damaged = from.full_tree_damaged; | 1657 full_tree_damaged = from.full_tree_damaged; |
1649 non_root_surfaces_enabled = from.non_root_surfaces_enabled; | 1658 non_root_surfaces_enabled = from.non_root_surfaces_enabled; |
| 1659 can_adjust_raster_scales = from.can_adjust_raster_scales; |
1650 sequence_number = from.sequence_number; | 1660 sequence_number = from.sequence_number; |
1651 is_main_thread = from.is_main_thread; | 1661 is_main_thread = from.is_main_thread; |
1652 is_active = from.is_active; | 1662 is_active = from.is_active; |
1653 inner_viewport_container_bounds_delta_ = | 1663 inner_viewport_container_bounds_delta_ = |
1654 from.inner_viewport_container_bounds_delta(); | 1664 from.inner_viewport_container_bounds_delta(); |
1655 outer_viewport_container_bounds_delta_ = | 1665 outer_viewport_container_bounds_delta_ = |
1656 from.outer_viewport_container_bounds_delta(); | 1666 from.outer_viewport_container_bounds_delta(); |
1657 inner_viewport_scroll_bounds_delta_ = | 1667 inner_viewport_scroll_bounds_delta_ = |
1658 from.inner_viewport_scroll_bounds_delta(); | 1668 from.inner_viewport_scroll_bounds_delta(); |
1659 transform_tree.SetPropertyTrees(this); | 1669 transform_tree.SetPropertyTrees(this); |
(...skipping 11 matching lines...) Expand all Loading... |
1671 scroll_tree.clear(); | 1681 scroll_tree.clear(); |
1672 element_id_to_effect_node_index.clear(); | 1682 element_id_to_effect_node_index.clear(); |
1673 element_id_to_scroll_node_index.clear(); | 1683 element_id_to_scroll_node_index.clear(); |
1674 element_id_to_transform_node_index.clear(); | 1684 element_id_to_transform_node_index.clear(); |
1675 always_use_active_tree_opacity_effect_ids.clear(); | 1685 always_use_active_tree_opacity_effect_ids.clear(); |
1676 | 1686 |
1677 needs_rebuild = true; | 1687 needs_rebuild = true; |
1678 full_tree_damaged = false; | 1688 full_tree_damaged = false; |
1679 changed = false; | 1689 changed = false; |
1680 non_root_surfaces_enabled = true; | 1690 non_root_surfaces_enabled = true; |
| 1691 can_adjust_raster_scales = true; |
1681 sequence_number++; | 1692 sequence_number++; |
1682 | 1693 |
1683 #if DCHECK_IS_ON() | 1694 #if DCHECK_IS_ON() |
1684 PropertyTrees tree; | 1695 PropertyTrees tree; |
1685 tree.transform_tree = transform_tree; | 1696 tree.transform_tree = transform_tree; |
1686 tree.effect_tree = effect_tree; | 1697 tree.effect_tree = effect_tree; |
1687 tree.clip_tree = clip_tree; | 1698 tree.clip_tree = clip_tree; |
1688 tree.scroll_tree = scroll_tree; | 1699 tree.scroll_tree = scroll_tree; |
1689 tree.scroll_tree.CopyCompleteTreeState(scroll_tree); | 1700 tree.scroll_tree.CopyCompleteTreeState(scroll_tree); |
1690 | 1701 |
(...skipping 430 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2121 const EffectNode* effect_node = effect_tree.Node(effect_id); | 2132 const EffectNode* effect_node = effect_tree.Node(effect_id); |
2122 | 2133 |
2123 if (effect_node->surface_contents_scale.x() != 0.0 && | 2134 if (effect_node->surface_contents_scale.x() != 0.0 && |
2124 effect_node->surface_contents_scale.y() != 0.0) | 2135 effect_node->surface_contents_scale.y() != 0.0) |
2125 screen_space_transform.Scale(1.0 / effect_node->surface_contents_scale.x(), | 2136 screen_space_transform.Scale(1.0 / effect_node->surface_contents_scale.x(), |
2126 1.0 / effect_node->surface_contents_scale.y()); | 2137 1.0 / effect_node->surface_contents_scale.y()); |
2127 return screen_space_transform; | 2138 return screen_space_transform; |
2128 } | 2139 } |
2129 | 2140 |
2130 } // namespace cc | 2141 } // namespace cc |
OLD | NEW |