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