Index: cc/trees/property_tree.cc |
diff --git a/cc/trees/property_tree.cc b/cc/trees/property_tree.cc |
index 795e337aa18b94cce584e717df8ef09f5449290f..00a0025a3a2f29b145520de41f0eb6910fc56faa 100644 |
--- a/cc/trees/property_tree.cc |
+++ b/cc/trees/property_tree.cc |
@@ -24,6 +24,7 @@ |
#include "cc/trees/scroll_node.h" |
#include "cc/trees/transform_node.h" |
#include "ui/gfx/geometry/vector2d_conversions.h" |
+ |
namespace cc { |
template <typename T> |
@@ -180,9 +181,10 @@ void TransformTree::set_needs_update(bool needs_update) { |
needs_update_ = needs_update; |
} |
-bool TransformTree::ComputeTransform(int source_id, |
- int dest_id, |
- gfx::Transform* transform) const { |
+bool TransformTree::ComputeTransformForTesting( |
+ int source_id, |
+ int dest_id, |
+ gfx::Transform* transform) const { |
transform->MakeIdentity(); |
if (source_id == dest_id) |
@@ -278,7 +280,6 @@ void TransformTree::UpdateTransforms(int id) { |
UndoSnapping(node); |
} |
UpdateScreenSpaceTransform(node, parent_node, target_node); |
- UpdateSurfaceContentsScale(node); |
UpdateAnimationProperties(node, parent_node); |
UpdateSnapping(node); |
UpdateNodeAndAncestorsHaveIntegerTranslations(node, parent_node); |
@@ -332,22 +333,11 @@ void TransformTree::CombineTransformsBetween(int source_id, |
std::vector<int> source_to_destination; |
source_to_destination.push_back(current->id); |
current = parent(current); |
- bool destination_has_non_zero_surface_contents_scale = |
- dest->surface_contents_scale.x() != 0.f && |
- dest->surface_contents_scale.y() != 0.f; |
- DCHECK(destination_has_non_zero_surface_contents_scale || |
- !dest->ancestors_are_invertible); |
for (; current && current->id > dest_id; current = parent(current)) |
source_to_destination.push_back(current->id); |
gfx::Transform combined_transform; |
- if (current->id > dest_id) { |
- // The stored target space transform has surface contents scale baked in, |
- // but we need the unscaled transform. |
- combined_transform.matrix().postScale( |
- 1.0f / dest->surface_contents_scale.x(), |
- 1.0f / dest->surface_contents_scale.y(), 1.0f); |
- } else if (current->id < dest_id) { |
+ if (current->id < dest_id) { |
// We have reached the lowest common ancestor of the source and destination |
// nodes. This case can occur when we are transforming between a node |
// corresponding to a fixed-position layer (or its descendant) and the node |
@@ -583,46 +573,6 @@ void TransformTree::UpdateScreenSpaceTransform(TransformNode* node, |
SetFromScreen(node->id, from_screen); |
} |
-void TransformTree::UpdateSurfaceContentsScale(TransformNode* node) { |
- // The surface contents scale depends on the screen space transform, so update |
- // it too. |
- if (!node->needs_surface_contents_scale) { |
- node->surface_contents_scale = gfx::Vector2dF(1.0f, 1.0f); |
- return; |
- } |
- |
- float layer_scale_factor = |
- device_scale_factor_ * device_transform_scale_factor_; |
- if (node->in_subtree_of_page_scale_layer) |
- layer_scale_factor *= page_scale_factor_; |
- node->surface_contents_scale = MathUtil::ComputeTransform2dScaleComponents( |
- ToScreen(node->id), layer_scale_factor); |
-} |
- |
-void TransformTree::UpdateTargetSpaceTransform(TransformNode* node, |
- TransformNode* target_node) { |
- gfx::Transform target_space_transform; |
- if (node->needs_surface_contents_scale) { |
- target_space_transform.MakeIdentity(); |
- target_space_transform.Scale(node->surface_contents_scale.x(), |
- node->surface_contents_scale.y()); |
- } else { |
- // In order to include the root transform for the root surface, we walk up |
- // to the root of the transform tree in ComputeTransform. |
- int target_id = target_node->id; |
- ComputeTransform(node->id, target_id, &target_space_transform); |
- target_space_transform.matrix().postScale( |
- target_node->surface_contents_scale.x(), |
- target_node->surface_contents_scale.y(), 1.f); |
- } |
- |
- gfx::Transform from_target; |
- if (!target_space_transform.GetInverse(&from_target)) |
- node->ancestors_are_invertible = false; |
- SetToTarget(node->id, target_space_transform); |
- SetFromTarget(node->id, from_target); |
-} |
- |
void TransformTree::UpdateAnimationProperties(TransformNode* node, |
TransformNode* parent_node) { |
bool ancestor_is_animating = false; |
@@ -728,13 +678,11 @@ void TransformTree::SetContentsRootPostLocalTransform( |
void TransformTree::SetScreenSpaceScaleOnRootNode( |
gfx::Vector2dF screen_space_scale_components) { |
TransformNode* node = Node(kRootNodeId); |
- if (node->surface_contents_scale == screen_space_scale_components) |
- return; |
- node->needs_surface_contents_scale = true; |
- node->surface_contents_scale = screen_space_scale_components; |
gfx::Transform to_screen; |
- to_screen.Scale(node->surface_contents_scale.x(), |
- node->surface_contents_scale.y()); |
+ to_screen.Scale(screen_space_scale_components.x(), |
+ screen_space_scale_components.y()); |
+ if (ToScreen(node->id) == to_screen) |
+ return; |
SetToScreen(node->id, to_screen); |
gfx::Transform from_screen; |
if (!ToScreen(node->id).GetInverse(&from_screen)) |
@@ -804,29 +752,6 @@ bool TransformTree::HasNodesAffectedByOuterViewportBoundsDelta() const { |
return !nodes_affected_by_outer_viewport_bounds_delta_.empty(); |
} |
-gfx::Transform TransformTree::FromTarget(int node_id, int effect_id) const { |
- gfx::Transform from_target; |
- property_trees()->GetFromTarget(node_id, effect_id, &from_target); |
- return from_target; |
-} |
- |
-void TransformTree::SetFromTarget(int node_id, |
- const gfx::Transform& transform) { |
- DCHECK(static_cast<int>(cached_data_.size()) > node_id); |
- cached_data_[node_id].from_target = transform; |
-} |
- |
-gfx::Transform TransformTree::ToTarget(int node_id, int effect_id) const { |
- gfx::Transform to_target; |
- property_trees()->GetToTarget(node_id, effect_id, &to_target); |
- return to_target; |
-} |
- |
-void TransformTree::SetToTarget(int node_id, const gfx::Transform& transform) { |
- DCHECK(static_cast<int>(cached_data_.size()) > node_id); |
- cached_data_[node_id].to_target = transform; |
-} |
- |
const gfx::Transform& TransformTree::FromScreen(int node_id) const { |
DCHECK(static_cast<int>(cached_data_.size()) > node_id); |
return cached_data_[node_id].from_screen; |
@@ -1035,8 +960,8 @@ void EffectTree::UpdateBackfaceVisibility(EffectNode* node, |
parent_transform_node->sorting_context_id == |
transform_node->sorting_context_id) { |
gfx::Transform surface_draw_transform; |
- property_trees()->ComputeTransformToTarget( |
- transform_node->id, node->target_id, &surface_draw_transform); |
+ property_trees()->GetToTarget(transform_node->id, node->target_id, |
+ &surface_draw_transform); |
node->hidden_by_backface_visibility = |
surface_draw_transform.IsBackFaceVisible(); |
} else { |
@@ -1169,10 +1094,7 @@ void EffectTree::TakeCopyRequestsAndTransformToSurface( |
source_id = TransformTree::kContentsRootNodeId; |
} |
gfx::Transform transform; |
- property_trees()->transform_tree.ComputeTransform(source_id, destination_id, |
- &transform); |
- transform.matrix().postScale(effect_node->surface_contents_scale.x(), |
- effect_node->surface_contents_scale.y(), 1.f); |
+ property_trees()->GetToTarget(source_id, node_id, &transform); |
it->set_area(MathUtil::MapEnclosingClippedRect(transform, it->area())); |
} |
} |
@@ -2339,25 +2261,6 @@ gfx::Transform PropertyTrees::ToScreenSpaceTransformWithoutSurfaceContentsScale( |
return screen_space_transform; |
} |
-bool PropertyTrees::ComputeTransformToTarget(int transform_id, |
- int effect_id, |
- gfx::Transform* transform) const { |
- transform->MakeIdentity(); |
- if (transform_id == TransformTree::kInvalidNodeId) |
- return true; |
- |
- const EffectNode* effect_node = effect_tree.Node(effect_id); |
- |
- bool success = true; |
- success = GetToTarget(transform_id, effect_id, transform); |
- if (effect_node->surface_contents_scale.x() != 0.f && |
- effect_node->surface_contents_scale.y() != 0.f) |
- transform->matrix().postScale( |
- 1.0f / effect_node->surface_contents_scale.x(), |
- 1.0f / effect_node->surface_contents_scale.y(), 1.0f); |
- return success; |
-} |
- |
bool PropertyTrees::ComputeTransformFromTarget( |
int transform_id, |
int effect_id, |