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 1514 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1525 clip_tree.SetPropertyTrees(this); | 1525 clip_tree.SetPropertyTrees(this); |
1526 scroll_tree.SetPropertyTrees(this); | 1526 scroll_tree.SetPropertyTrees(this); |
1527 } | 1527 } |
1528 | 1528 |
1529 PropertyTrees::~PropertyTrees() {} | 1529 PropertyTrees::~PropertyTrees() {} |
1530 | 1530 |
1531 bool PropertyTrees::operator==(const PropertyTrees& other) const { | 1531 bool PropertyTrees::operator==(const PropertyTrees& other) const { |
1532 return transform_tree == other.transform_tree && | 1532 return transform_tree == other.transform_tree && |
1533 effect_tree == other.effect_tree && clip_tree == other.clip_tree && | 1533 effect_tree == other.effect_tree && clip_tree == other.clip_tree && |
1534 scroll_tree == other.scroll_tree && | 1534 scroll_tree == other.scroll_tree && |
1535 transform_id_to_index_map == other.transform_id_to_index_map && | 1535 layer_id_to_transform_node_index == |
1536 effect_id_to_index_map == other.effect_id_to_index_map && | 1536 other.layer_id_to_transform_node_index && |
1537 clip_id_to_index_map == other.clip_id_to_index_map && | 1537 layer_id_to_effect_node_index == other.layer_id_to_effect_node_index && |
1538 scroll_id_to_index_map == other.scroll_id_to_index_map && | 1538 layer_id_to_clip_node_index == other.layer_id_to_clip_node_index && |
| 1539 layer_id_to_scroll_node_index == other.layer_id_to_scroll_node_index && |
1539 always_use_active_tree_opacity_effect_ids == | 1540 always_use_active_tree_opacity_effect_ids == |
1540 other.always_use_active_tree_opacity_effect_ids && | 1541 other.always_use_active_tree_opacity_effect_ids && |
1541 needs_rebuild == other.needs_rebuild && changed == other.changed && | 1542 needs_rebuild == other.needs_rebuild && changed == other.changed && |
1542 full_tree_damaged == other.full_tree_damaged && | 1543 full_tree_damaged == other.full_tree_damaged && |
1543 is_main_thread == other.is_main_thread && | 1544 is_main_thread == other.is_main_thread && |
1544 is_active == other.is_active && | 1545 is_active == other.is_active && |
1545 non_root_surfaces_enabled == other.non_root_surfaces_enabled && | 1546 non_root_surfaces_enabled == other.non_root_surfaces_enabled && |
1546 sequence_number == other.sequence_number; | 1547 sequence_number == other.sequence_number; |
1547 } | 1548 } |
1548 | 1549 |
1549 PropertyTrees& PropertyTrees::operator=(const PropertyTrees& from) { | 1550 PropertyTrees& PropertyTrees::operator=(const PropertyTrees& from) { |
1550 transform_tree = from.transform_tree; | 1551 transform_tree = from.transform_tree; |
1551 effect_tree = from.effect_tree; | 1552 effect_tree = from.effect_tree; |
1552 clip_tree = from.clip_tree; | 1553 clip_tree = from.clip_tree; |
1553 scroll_tree = from.scroll_tree; | 1554 scroll_tree = from.scroll_tree; |
1554 transform_id_to_index_map = from.transform_id_to_index_map; | 1555 layer_id_to_transform_node_index = from.layer_id_to_transform_node_index; |
1555 effect_id_to_index_map = from.effect_id_to_index_map; | 1556 layer_id_to_effect_node_index = from.layer_id_to_effect_node_index; |
1556 always_use_active_tree_opacity_effect_ids = | 1557 always_use_active_tree_opacity_effect_ids = |
1557 from.always_use_active_tree_opacity_effect_ids; | 1558 from.always_use_active_tree_opacity_effect_ids; |
1558 clip_id_to_index_map = from.clip_id_to_index_map; | 1559 layer_id_to_clip_node_index = from.layer_id_to_clip_node_index; |
1559 scroll_id_to_index_map = from.scroll_id_to_index_map; | 1560 layer_id_to_scroll_node_index = from.layer_id_to_scroll_node_index; |
1560 needs_rebuild = from.needs_rebuild; | 1561 needs_rebuild = from.needs_rebuild; |
1561 changed = from.changed; | 1562 changed = from.changed; |
1562 full_tree_damaged = from.full_tree_damaged; | 1563 full_tree_damaged = from.full_tree_damaged; |
1563 non_root_surfaces_enabled = from.non_root_surfaces_enabled; | 1564 non_root_surfaces_enabled = from.non_root_surfaces_enabled; |
1564 sequence_number = from.sequence_number; | 1565 sequence_number = from.sequence_number; |
1565 is_main_thread = from.is_main_thread; | 1566 is_main_thread = from.is_main_thread; |
1566 is_active = from.is_active; | 1567 is_active = from.is_active; |
1567 inner_viewport_container_bounds_delta_ = | 1568 inner_viewport_container_bounds_delta_ = |
1568 from.inner_viewport_container_bounds_delta(); | 1569 from.inner_viewport_container_bounds_delta(); |
1569 outer_viewport_container_bounds_delta_ = | 1570 outer_viewport_container_bounds_delta_ = |
1570 from.outer_viewport_container_bounds_delta(); | 1571 from.outer_viewport_container_bounds_delta(); |
1571 inner_viewport_scroll_bounds_delta_ = | 1572 inner_viewport_scroll_bounds_delta_ = |
1572 from.inner_viewport_scroll_bounds_delta(); | 1573 from.inner_viewport_scroll_bounds_delta(); |
1573 transform_tree.SetPropertyTrees(this); | 1574 transform_tree.SetPropertyTrees(this); |
1574 effect_tree.SetPropertyTrees(this); | 1575 effect_tree.SetPropertyTrees(this); |
1575 clip_tree.SetPropertyTrees(this); | 1576 clip_tree.SetPropertyTrees(this); |
1576 scroll_tree.SetPropertyTrees(this); | 1577 scroll_tree.SetPropertyTrees(this); |
1577 ResetCachedData(); | 1578 ResetCachedData(); |
1578 return *this; | 1579 return *this; |
1579 } | 1580 } |
1580 | 1581 |
1581 void PropertyTrees::clear() { | 1582 void PropertyTrees::clear() { |
1582 transform_tree.clear(); | 1583 transform_tree.clear(); |
1583 clip_tree.clear(); | 1584 clip_tree.clear(); |
1584 effect_tree.clear(); | 1585 effect_tree.clear(); |
1585 scroll_tree.clear(); | 1586 scroll_tree.clear(); |
1586 transform_id_to_index_map.clear(); | 1587 layer_id_to_transform_node_index.clear(); |
1587 effect_id_to_index_map.clear(); | 1588 layer_id_to_effect_node_index.clear(); |
1588 clip_id_to_index_map.clear(); | 1589 layer_id_to_clip_node_index.clear(); |
1589 scroll_id_to_index_map.clear(); | 1590 layer_id_to_scroll_node_index.clear(); |
1590 always_use_active_tree_opacity_effect_ids.clear(); | 1591 always_use_active_tree_opacity_effect_ids.clear(); |
1591 | 1592 |
1592 needs_rebuild = true; | 1593 needs_rebuild = true; |
1593 full_tree_damaged = false; | 1594 full_tree_damaged = false; |
1594 changed = false; | 1595 changed = false; |
1595 non_root_surfaces_enabled = true; | 1596 non_root_surfaces_enabled = true; |
1596 sequence_number++; | 1597 sequence_number++; |
1597 | 1598 |
1598 #if DCHECK_IS_ON() | 1599 #if DCHECK_IS_ON() |
1599 PropertyTrees tree; | 1600 PropertyTrees tree; |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1633 transform_tree.UpdateOuterViewportContainerBoundsDelta(); | 1634 transform_tree.UpdateOuterViewportContainerBoundsDelta(); |
1634 } | 1635 } |
1635 | 1636 |
1636 void PropertyTrees::SetInnerViewportScrollBoundsDelta( | 1637 void PropertyTrees::SetInnerViewportScrollBoundsDelta( |
1637 gfx::Vector2dF bounds_delta) { | 1638 gfx::Vector2dF bounds_delta) { |
1638 inner_viewport_scroll_bounds_delta_ = bounds_delta; | 1639 inner_viewport_scroll_bounds_delta_ = bounds_delta; |
1639 } | 1640 } |
1640 | 1641 |
1641 void PropertyTrees::PushOpacityIfNeeded(PropertyTrees* target_tree) { | 1642 void PropertyTrees::PushOpacityIfNeeded(PropertyTrees* target_tree) { |
1642 for (int id : target_tree->always_use_active_tree_opacity_effect_ids) { | 1643 for (int id : target_tree->always_use_active_tree_opacity_effect_ids) { |
1643 if (effect_id_to_index_map.find(id) == effect_id_to_index_map.end()) | 1644 if (layer_id_to_effect_node_index.find(id) == |
| 1645 layer_id_to_effect_node_index.end()) |
1644 continue; | 1646 continue; |
1645 EffectNode* source_effect_node = | 1647 EffectNode* source_effect_node = |
1646 effect_tree.Node(effect_id_to_index_map[id]); | 1648 effect_tree.Node(layer_id_to_effect_node_index[id]); |
1647 EffectNode* target_effect_node = | 1649 EffectNode* target_effect_node = target_tree->effect_tree.Node( |
1648 target_tree->effect_tree.Node(target_tree->effect_id_to_index_map[id]); | 1650 target_tree->layer_id_to_effect_node_index[id]); |
1649 float source_opacity = source_effect_node->opacity; | 1651 float source_opacity = source_effect_node->opacity; |
1650 float target_opacity = target_effect_node->opacity; | 1652 float target_opacity = target_effect_node->opacity; |
1651 if (source_opacity == target_opacity) | 1653 if (source_opacity == target_opacity) |
1652 continue; | 1654 continue; |
1653 target_effect_node->opacity = source_opacity; | 1655 target_effect_node->opacity = source_opacity; |
1654 target_tree->effect_tree.set_needs_update(true); | 1656 target_tree->effect_tree.set_needs_update(true); |
1655 } | 1657 } |
1656 } | 1658 } |
1657 | 1659 |
1658 void PropertyTrees::RemoveIdFromIdToIndexMaps(int id) { | 1660 void PropertyTrees::RemoveIdFromIdToIndexMaps(int id) { |
1659 transform_id_to_index_map.erase(id); | 1661 layer_id_to_transform_node_index.erase(id); |
1660 effect_id_to_index_map.erase(id); | 1662 layer_id_to_effect_node_index.erase(id); |
1661 clip_id_to_index_map.erase(id); | 1663 layer_id_to_clip_node_index.erase(id); |
1662 scroll_id_to_index_map.erase(id); | 1664 layer_id_to_scroll_node_index.erase(id); |
1663 } | 1665 } |
1664 | 1666 |
1665 bool PropertyTrees::IsInIdToIndexMap(TreeType tree_type, int id) { | 1667 bool PropertyTrees::IsInIdToIndexMap(TreeType tree_type, int id) { |
1666 std::unordered_map<int, int>* id_to_index_map = nullptr; | 1668 std::unordered_map<int, int>* id_to_index_map = nullptr; |
1667 switch (tree_type) { | 1669 switch (tree_type) { |
1668 case TRANSFORM: | 1670 case TRANSFORM: |
1669 id_to_index_map = &transform_id_to_index_map; | 1671 id_to_index_map = &layer_id_to_transform_node_index; |
1670 break; | 1672 break; |
1671 case EFFECT: | 1673 case EFFECT: |
1672 id_to_index_map = &effect_id_to_index_map; | 1674 id_to_index_map = &layer_id_to_effect_node_index; |
1673 break; | 1675 break; |
1674 case CLIP: | 1676 case CLIP: |
1675 id_to_index_map = &clip_id_to_index_map; | 1677 id_to_index_map = &layer_id_to_clip_node_index; |
1676 break; | 1678 break; |
1677 case SCROLL: | 1679 case SCROLL: |
1678 id_to_index_map = &scroll_id_to_index_map; | 1680 id_to_index_map = &layer_id_to_scroll_node_index; |
1679 break; | 1681 break; |
1680 } | 1682 } |
1681 return id_to_index_map->find(id) != id_to_index_map->end(); | 1683 return id_to_index_map->find(id) != id_to_index_map->end(); |
1682 } | 1684 } |
1683 | 1685 |
1684 void PropertyTrees::UpdateChangeTracking() { | 1686 void PropertyTrees::UpdateChangeTracking() { |
1685 for (int id = 1; id < static_cast<int>(effect_tree.size()); ++id) { | 1687 for (int id = 1; id < static_cast<int>(effect_tree.size()); ++id) { |
1686 EffectNode* node = effect_tree.Node(id); | 1688 EffectNode* node = effect_tree.Node(id); |
1687 EffectNode* parent_node = effect_tree.parent(node); | 1689 EffectNode* parent_node = effect_tree.parent(node); |
1688 effect_tree.UpdateEffectChanged(node, parent_node); | 1690 effect_tree.UpdateEffectChanged(node, parent_node); |
(...skipping 363 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2052 | 2054 |
2053 const EffectNode* effect_node = effect_tree.Node(effect_id); | 2055 const EffectNode* effect_node = effect_tree.Node(effect_id); |
2054 | 2056 |
2055 bool success = GetFromTarget(transform_id, effect_id, transform); | 2057 bool success = GetFromTarget(transform_id, effect_id, transform); |
2056 transform->Scale(effect_node->surface_contents_scale.x(), | 2058 transform->Scale(effect_node->surface_contents_scale.x(), |
2057 effect_node->surface_contents_scale.y()); | 2059 effect_node->surface_contents_scale.y()); |
2058 return success; | 2060 return success; |
2059 } | 2061 } |
2060 | 2062 |
2061 } // namespace cc | 2063 } // namespace cc |
OLD | NEW |