OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "platform/graphics/compositing/PropertyTreeManager.h" | 5 #include "platform/graphics/compositing/PropertyTreeManager.h" |
6 | 6 |
7 #include "cc/layers/layer.h" | 7 #include "cc/layers/layer.h" |
8 #include "cc/trees/clip_node.h" | 8 #include "cc/trees/clip_node.h" |
9 #include "cc/trees/effect_node.h" | 9 #include "cc/trees/effect_node.h" |
10 #include "cc/trees/layer_tree_host.h" | 10 #include "cc/trees/layer_tree_host.h" |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
67 void PropertyTreeManager::setupRootTransformNode() { | 67 void PropertyTreeManager::setupRootTransformNode() { |
68 // cc is hardcoded to use transform node index 1 for device scale and | 68 // cc is hardcoded to use transform node index 1 for device scale and |
69 // transform. | 69 // transform. |
70 cc::TransformTree& transformTree = m_propertyTrees.transform_tree; | 70 cc::TransformTree& transformTree = m_propertyTrees.transform_tree; |
71 transformTree.clear(); | 71 transformTree.clear(); |
72 m_propertyTrees.element_id_to_transform_node_index.clear(); | 72 m_propertyTrees.element_id_to_transform_node_index.clear(); |
73 cc::TransformNode& transformNode = *transformTree.Node( | 73 cc::TransformNode& transformNode = *transformTree.Node( |
74 transformTree.Insert(cc::TransformNode(), kRealRootNodeId)); | 74 transformTree.Insert(cc::TransformNode(), kRealRootNodeId)); |
75 DCHECK_EQ(transformNode.id, kSecondaryRootNodeId); | 75 DCHECK_EQ(transformNode.id, kSecondaryRootNodeId); |
76 transformNode.source_node_id = transformNode.parent_id; | 76 transformNode.source_node_id = transformNode.parent_id; |
77 transformTree.SetTargetId(transformNode.id, kRealRootNodeId); | |
78 transformTree.SetContentTargetId(transformNode.id, kRealRootNodeId); | |
79 | 77 |
80 // TODO(jaydasika): We shouldn't set ToScreen and FromScreen of root | 78 // TODO(jaydasika): We shouldn't set ToScreen and FromScreen of root |
81 // transform node here. They should be set while updating transform tree in | 79 // transform node here. They should be set while updating transform tree in |
82 // cc. | 80 // cc. |
83 float deviceScaleFactor = | 81 float deviceScaleFactor = |
84 m_rootLayer->layer_tree_host()->device_scale_factor(); | 82 m_rootLayer->layer_tree_host()->device_scale_factor(); |
85 gfx::Transform toScreen; | 83 gfx::Transform toScreen; |
86 toScreen.Scale(deviceScaleFactor, deviceScaleFactor); | 84 toScreen.Scale(deviceScaleFactor, deviceScaleFactor); |
87 transformTree.SetToScreen(kRealRootNodeId, toScreen); | 85 transformTree.SetToScreen(kRealRootNodeId, toScreen); |
88 gfx::Transform fromScreen; | 86 gfx::Transform fromScreen; |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
157 | 155 |
158 auto it = m_transformNodeMap.find(transformNode); | 156 auto it = m_transformNodeMap.find(transformNode); |
159 if (it != m_transformNodeMap.end()) | 157 if (it != m_transformNodeMap.end()) |
160 return it->value; | 158 return it->value; |
161 | 159 |
162 scoped_refptr<cc::Layer> dummyLayer = cc::Layer::Create(); | 160 scoped_refptr<cc::Layer> dummyLayer = cc::Layer::Create(); |
163 int parentId = ensureCompositorTransformNode(transformNode->parent()); | 161 int parentId = ensureCompositorTransformNode(transformNode->parent()); |
164 int id = transformTree().Insert(cc::TransformNode(), parentId); | 162 int id = transformTree().Insert(cc::TransformNode(), parentId); |
165 | 163 |
166 cc::TransformNode& compositorNode = *transformTree().Node(id); | 164 cc::TransformNode& compositorNode = *transformTree().Node(id); |
167 transformTree().SetTargetId(id, kRealRootNodeId); | |
168 transformTree().SetContentTargetId(id, kRealRootNodeId); | |
169 compositorNode.source_node_id = parentId; | 165 compositorNode.source_node_id = parentId; |
170 | 166 |
171 FloatPoint3D origin = transformNode->origin(); | 167 FloatPoint3D origin = transformNode->origin(); |
172 compositorNode.pre_local.matrix().setTranslate(-origin.x(), -origin.y(), | 168 compositorNode.pre_local.matrix().setTranslate(-origin.x(), -origin.y(), |
173 -origin.z()); | 169 -origin.z()); |
174 compositorNode.local.matrix() = | 170 compositorNode.local.matrix() = |
175 TransformationMatrix::toSkMatrix44(transformNode->matrix()); | 171 TransformationMatrix::toSkMatrix44(transformNode->matrix()); |
176 compositorNode.post_local.matrix().setTranslate(origin.x(), origin.y(), | 172 compositorNode.post_local.matrix().setTranslate(origin.x(), origin.y(), |
177 origin.z()); | 173 origin.z()); |
178 compositorNode.needs_local_transform_update = true; | 174 compositorNode.needs_local_transform_update = true; |
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
443 m_effectStack.push_back(BlinkEffectAndCcIdPair{nextEffect, effectNode.id}); | 439 m_effectStack.push_back(BlinkEffectAndCcIdPair{nextEffect, effectNode.id}); |
444 | 440 |
445 dummyLayer->set_property_tree_sequence_number(m_sequenceNumber); | 441 dummyLayer->set_property_tree_sequence_number(m_sequenceNumber); |
446 dummyLayer->SetTransformTreeIndex(kSecondaryRootNodeId); | 442 dummyLayer->SetTransformTreeIndex(kSecondaryRootNodeId); |
447 dummyLayer->SetClipTreeIndex(outputClipId); | 443 dummyLayer->SetClipTreeIndex(outputClipId); |
448 dummyLayer->SetEffectTreeIndex(effectNode.id); | 444 dummyLayer->SetEffectTreeIndex(effectNode.id); |
449 dummyLayer->SetScrollTreeIndex(kRealRootNodeId); | 445 dummyLayer->SetScrollTreeIndex(kRealRootNodeId); |
450 } | 446 } |
451 | 447 |
452 } // namespace blink | 448 } // namespace blink |
OLD | NEW |