| Index: cc/trees/property_tree.cc
|
| diff --git a/cc/trees/property_tree.cc b/cc/trees/property_tree.cc
|
| index d2b3783a5724dc82c0c44fadb6e5c24e3e3b5279..efde11d08953e32f69e142405cf76a5d628ab50e 100644
|
| --- a/cc/trees/property_tree.cc
|
| +++ b/cc/trees/property_tree.cc
|
| @@ -157,37 +157,18 @@ bool TransformTree::ComputeTransform(int source_id,
|
| return CombineInversesBetween(source_id, dest_id, transform);
|
| }
|
|
|
| -bool TransformTree::ComputeTransformWithDestinationSublayerScale(
|
| +bool TransformTree::ComputeTransformWithDestinationSurfaceContentsScale(
|
| int source_id,
|
| int dest_id,
|
| gfx::Transform* transform) const {
|
| bool success = ComputeTransform(source_id, dest_id, transform);
|
|
|
| const TransformNode* dest_node = Node(dest_id);
|
| - if (!dest_node->needs_sublayer_scale)
|
| + if (!dest_node->needs_surface_contents_scale)
|
| return success;
|
|
|
| - transform->matrix().postScale(dest_node->sublayer_scale.x(),
|
| - dest_node->sublayer_scale.y(), 1.f);
|
| - return success;
|
| -}
|
| -
|
| -bool TransformTree::ComputeTransformWithSourceSublayerScale(
|
| - int source_id,
|
| - int dest_id,
|
| - gfx::Transform* transform) const {
|
| - bool success = ComputeTransform(source_id, dest_id, transform);
|
| -
|
| - const TransformNode* source_node = Node(source_id);
|
| - if (!source_node->needs_sublayer_scale)
|
| - return success;
|
| -
|
| - if (source_node->sublayer_scale.x() == 0 ||
|
| - source_node->sublayer_scale.y() == 0)
|
| - return false;
|
| -
|
| - transform->Scale(1.f / source_node->sublayer_scale.x(),
|
| - 1.f / source_node->sublayer_scale.y());
|
| + transform->matrix().postScale(dest_node->surface_contents_scale.x(),
|
| + dest_node->surface_contents_scale.y(), 1.f);
|
| return success;
|
| }
|
|
|
| @@ -220,7 +201,7 @@ void TransformTree::UpdateTransforms(int id) {
|
| else
|
| UndoSnapping(node);
|
| UpdateScreenSpaceTransform(node, parent_node, target_node);
|
| - UpdateSublayerScale(node);
|
| + UpdateSurfaceContentsScale(node);
|
| UpdateAnimationProperties(node, parent_node);
|
| UpdateSnapping(node);
|
| UpdateTargetSpaceTransform(node, target_node);
|
| @@ -269,17 +250,19 @@ bool TransformTree::CombineTransformsBetween(int source_id,
|
| // early-out if we get to a node whose target node is the destination, since
|
| // we can then re-use the target space transform stored at that node. However,
|
| // we cannot re-use a stored target space transform if the destination has a
|
| - // zero sublayer scale, since stored target space transforms have sublayer
|
| - // scale baked in, but we need to compute an unscaled transform.
|
| + // zero surface contents scale, since stored target space transforms have
|
| + // surface contents scale baked in, but we need to compute an unscaled
|
| + // transform.
|
| std::vector<int> source_to_destination;
|
| source_to_destination.push_back(current->id);
|
| current = parent(current);
|
| - bool destination_has_non_zero_sublayer_scale =
|
| - dest->sublayer_scale.x() != 0.f && dest->sublayer_scale.y() != 0.f;
|
| - DCHECK(destination_has_non_zero_sublayer_scale ||
|
| + 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)) {
|
| - if (destination_has_non_zero_sublayer_scale &&
|
| + if (destination_has_non_zero_surface_contents_scale &&
|
| TargetId(current->id) == dest_id &&
|
| ContentTargetId(current->id) == dest_id)
|
| break;
|
| @@ -289,10 +272,11 @@ bool TransformTree::CombineTransformsBetween(int source_id,
|
| gfx::Transform combined_transform;
|
| if (current->id > dest_id) {
|
| combined_transform = ToTarget(current->id);
|
| - // The stored target space transform has sublayer scale baked in, but we
|
| - // need the unscaled transform.
|
| + // The stored target space transform has surface contents scale baked in,
|
| + // but we need the unscaled transform.
|
| combined_transform.matrix().postScale(
|
| - 1.0f / dest->sublayer_scale.x(), 1.0f / dest->sublayer_scale.y(), 1.0f);
|
| + 1.0f / dest->surface_contents_scale.x(),
|
| + 1.0f / dest->surface_contents_scale.y(), 1.0f);
|
| } else 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
|
| @@ -418,10 +402,11 @@ void TransformTree::UpdateScreenSpaceTransform(TransformNode* node,
|
| SetFromScreen(node->id, from_screen);
|
| }
|
|
|
| -void TransformTree::UpdateSublayerScale(TransformNode* node) {
|
| - // The sublayer scale depends on the screen space transform, so update it too.
|
| - if (!node->needs_sublayer_scale) {
|
| - node->sublayer_scale = gfx::Vector2dF(1.0f, 1.0f);
|
| +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;
|
| }
|
|
|
| @@ -429,23 +414,23 @@ void TransformTree::UpdateSublayerScale(TransformNode* node) {
|
| device_scale_factor_ * device_transform_scale_factor_;
|
| if (node->in_subtree_of_page_scale_layer)
|
| layer_scale_factor *= page_scale_factor_;
|
| - node->sublayer_scale = MathUtil::ComputeTransform2dScaleComponents(
|
| + 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_sublayer_scale) {
|
| + if (node->needs_surface_contents_scale) {
|
| target_space_transform.MakeIdentity();
|
| - target_space_transform.Scale(node->sublayer_scale.x(),
|
| - node->sublayer_scale.y());
|
| + 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;
|
| - ComputeTransformWithDestinationSublayerScale(node->id, target_id,
|
| - &target_space_transform);
|
| + ComputeTransformWithDestinationSurfaceContentsScale(
|
| + node->id, target_id, &target_space_transform);
|
| }
|
|
|
| gfx::Transform from_target;
|
| @@ -661,7 +646,7 @@ void TransformTree::SetContentTargetId(int node_id, int content_target_id) {
|
| cached_data_[node_id].content_target_id = content_target_id;
|
| }
|
|
|
| -gfx::Transform TransformTree::ToScreenSpaceTransformWithoutSublayerScale(
|
| +gfx::Transform TransformTree::ToScreenSpaceTransformWithoutSurfaceContentsScale(
|
| int id) const {
|
| DCHECK_GT(id, 0);
|
| if (id == 1) {
|
| @@ -669,9 +654,10 @@ gfx::Transform TransformTree::ToScreenSpaceTransformWithoutSublayerScale(
|
| }
|
| const TransformNode* node = Node(id);
|
| gfx::Transform screen_space_transform = ToScreen(id);
|
| - if (node->sublayer_scale.x() != 0.0 && node->sublayer_scale.y() != 0.0)
|
| - screen_space_transform.Scale(1.0 / node->sublayer_scale.x(),
|
| - 1.0 / node->sublayer_scale.y());
|
| + if (node->surface_contents_scale.x() != 0.0 &&
|
| + node->surface_contents_scale.y() != 0.0)
|
| + screen_space_transform.Scale(1.0 / node->surface_contents_scale.x(),
|
| + 1.0 / node->surface_contents_scale.y());
|
| return screen_space_transform;
|
| }
|
|
|
| @@ -835,9 +821,9 @@ void EffectTree::UpdateBackfaceVisibility(EffectNode* node,
|
| node->hidden_by_backface_visibility = false;
|
| }
|
|
|
| -void EffectTree::UpdateSublayerScale(EffectNode* effect_node) {
|
| +void EffectTree::UpdateSurfaceContentsScale(EffectNode* effect_node) {
|
| if (!effect_node->has_render_surface || effect_node->transform_id == 0) {
|
| - effect_node->sublayer_scale = gfx::Vector2dF(1.0f, 1.0f);
|
| + effect_node->surface_contents_scale = gfx::Vector2dF(1.0f, 1.0f);
|
| return;
|
| }
|
|
|
| @@ -848,8 +834,9 @@ void EffectTree::UpdateSublayerScale(EffectNode* effect_node) {
|
| transform_tree.Node(effect_node->transform_id);
|
| if (transform_node->in_subtree_of_page_scale_layer)
|
| layer_scale_factor *= transform_tree.page_scale_factor();
|
| - effect_node->sublayer_scale = MathUtil::ComputeTransform2dScaleComponents(
|
| - transform_tree.ToScreen(transform_node->id), layer_scale_factor);
|
| + effect_node->surface_contents_scale =
|
| + MathUtil::ComputeTransform2dScaleComponents(
|
| + transform_tree.ToScreen(transform_node->id), layer_scale_factor);
|
| }
|
|
|
| void EffectTree::UpdateEffects(int id) {
|
| @@ -860,7 +847,7 @@ void EffectTree::UpdateEffects(int id) {
|
| UpdateIsDrawn(node, parent_node);
|
| UpdateEffectChanged(node, parent_node);
|
| UpdateBackfaceVisibility(node, parent_node);
|
| - UpdateSublayerScale(node);
|
| + UpdateSurfaceContentsScale(node);
|
| }
|
|
|
| void EffectTree::AddCopyRequest(int node_id,
|
| @@ -926,7 +913,7 @@ void EffectTree::TakeCopyRequestsAndTransformToSurface(
|
| }
|
| gfx::Transform transform;
|
| property_trees()
|
| - ->transform_tree.ComputeTransformWithDestinationSublayerScale(
|
| + ->transform_tree.ComputeTransformWithDestinationSurfaceContentsScale(
|
| source_id, destination_id, &transform);
|
| it->set_area(MathUtil::MapEnclosingClippedRect(transform, it->area()));
|
| }
|
|
|