Index: cc/trees/layer_tree_host_common.cc |
diff --git a/cc/trees/layer_tree_host_common.cc b/cc/trees/layer_tree_host_common.cc |
index 34f45530ff38f1340925bdbb5e80e2a32d66b439..2335f4e0315b29726af6279526ed3c26955ca29f 100644 |
--- a/cc/trees/layer_tree_host_common.cc |
+++ b/cc/trees/layer_tree_host_common.cc |
@@ -1651,25 +1651,21 @@ static void CalculateDrawPropertiesInternal( |
animating_transform_to_screen |= |
layer->parent()->screen_space_transform_is_animating(); |
} |
- |
- gfx::Size bounds = layer->bounds(); |
- gfx::PointF anchor_point = layer->anchor_point(); |
+ gfx::Point3F transform_origin = layer->transform_origin(); |
gfx::Vector2dF scroll_offset = GetEffectiveTotalScrollOffset(layer); |
gfx::PointF position = layer->position() - scroll_offset; |
- |
gfx::Transform combined_transform = data_from_ancestor.parent_matrix; |
if (!layer->transform().IsIdentity()) { |
- // LT = Tr[origin] * Tr[origin2anchor] |
- combined_transform.Translate3d( |
- position.x() + anchor_point.x() * bounds.width(), |
- position.y() + anchor_point.y() * bounds.height(), |
- layer->anchor_point_z()); |
- // LT = Tr[origin] * Tr[origin2anchor] * M[layer] |
+ // LT = Tr[origin] * Tr[origin2transformOrigin] |
+ combined_transform.Translate3d(position.x() + transform_origin.x(), |
+ position.y() + transform_origin.y(), |
+ transform_origin.z()); |
+ // LT = Tr[origin] * Tr[origin2origin] * M[layer] |
combined_transform.PreconcatTransform(layer->transform()); |
- // LT = Tr[origin] * Tr[origin2anchor] * M[layer] * Tr[anchor2origin] |
- combined_transform.Translate3d(-anchor_point.x() * bounds.width(), |
- -anchor_point.y() * bounds.height(), |
- -layer->anchor_point_z()); |
+ // LT = Tr[origin] * Tr[origin2origin] * M[layer] * |
+ // Tr[transformOrigin2origin] |
+ combined_transform.Translate3d( |
+ -transform_origin.x(), -transform_origin.y(), -transform_origin.z()); |
} else { |
combined_transform.Translate(position.x(), position.y()); |
} |
@@ -2250,14 +2246,14 @@ static void CalculateDrawPropertiesInternal( |
render_surface_sublayer_scale.x(), render_surface_sublayer_scale.y()); |
surface_origin_to_replica_origin_transform.Translate( |
layer->replica_layer()->position().x() + |
- layer->replica_layer()->anchor_point().x() * bounds.width(), |
+ layer->replica_layer()->transform_origin().x(), |
layer->replica_layer()->position().y() + |
- layer->replica_layer()->anchor_point().y() * bounds.height()); |
+ layer->replica_layer()->transform_origin().y()); |
surface_origin_to_replica_origin_transform.PreconcatTransform( |
layer->replica_layer()->transform()); |
surface_origin_to_replica_origin_transform.Translate( |
- -layer->replica_layer()->anchor_point().x() * bounds.width(), |
- -layer->replica_layer()->anchor_point().y() * bounds.height()); |
+ -layer->replica_layer()->transform_origin().x(), |
+ -layer->replica_layer()->transform_origin().y()); |
surface_origin_to_replica_origin_transform.Scale( |
1.0 / render_surface_sublayer_scale.x(), |
1.0 / render_surface_sublayer_scale.y()); |