| Index: cc/layers/layer_utils.cc
|
| diff --git a/cc/layers/layer_utils.cc b/cc/layers/layer_utils.cc
|
| index 4c66d1465da6e3f68701d4ad189a284ff99f159b..9c299c2fe4a955ae5b7174322f1494e59a009bc8 100644
|
| --- a/cc/layers/layer_utils.cc
|
| +++ b/cc/layers/layer_utils.cc
|
| @@ -75,8 +75,10 @@ bool LayerUtils::GetAnimationBounds(const LayerImpl& layer_in, gfx::BoxF* out) {
|
| gfx::Transform coalesced_transform;
|
|
|
| for (const LayerImpl* layer = &layer_in; layer; layer = layer->parent()) {
|
| - int anchor_x = layer->anchor_point().x() * layer->bounds().width();
|
| - int anchor_y = layer->anchor_point().y() * layer->bounds().height();
|
| + int transform_origin_x = layer->transform_origin().x();
|
| + int transform_origin_y = layer->transform_origin().y();
|
| + int transform_origin_z = layer->transform_origin().z();
|
| +
|
| gfx::PointF position = layer->position();
|
| if (layer->parent() && !HasAnimationThatInflatesBounds(*layer)) {
|
| // |composite_layer_transform| contains 1 - 4 mentioned above. We compute
|
| @@ -85,12 +87,12 @@ bool LayerUtils::GetAnimationBounds(const LayerImpl& layer_in, gfx::BoxF* out) {
|
| // to do it only once.
|
| gfx::Transform composite_layer_transform;
|
|
|
| - composite_layer_transform.Translate3d(anchor_x + position.x(),
|
| - anchor_y + position.y(),
|
| - layer->anchor_point_z());
|
| + composite_layer_transform.Translate3d(transform_origin_x + position.x(),
|
| + transform_origin_y + position.y(),
|
| + transform_origin_z);
|
| composite_layer_transform.PreconcatTransform(layer->transform());
|
| composite_layer_transform.Translate3d(
|
| - -anchor_x, -anchor_y, -layer->anchor_point_z());
|
| + -transform_origin_x, -transform_origin_y, -transform_origin_z);
|
|
|
| // Add this layer's contributions to the |coalesced_transform|.
|
| coalesced_transform.ConcatTransform(composite_layer_transform);
|
| @@ -103,9 +105,9 @@ bool LayerUtils::GetAnimationBounds(const LayerImpl& layer_in, gfx::BoxF* out) {
|
|
|
| // We need to apply the inflation about the layer's anchor point. Rather
|
| // than doing this via transforms, we'll just shift the box directly.
|
| - box.set_origin(box.origin() + gfx::Vector3dF(-anchor_x,
|
| - -anchor_y,
|
| - -layer->anchor_point_z()));
|
| + box.set_origin(box.origin() + gfx::Vector3dF(-transform_origin_x,
|
| + -transform_origin_y,
|
| + -transform_origin_z));
|
|
|
| // Perform the inflation
|
| if (HasFilterAnimationThatInflatesBounds(*layer)) {
|
| @@ -125,9 +127,10 @@ bool LayerUtils::GetAnimationBounds(const LayerImpl& layer_in, gfx::BoxF* out) {
|
| }
|
|
|
| // Apply step 3) mentioned above.
|
| - box.set_origin(box.origin() + gfx::Vector3dF(anchor_x + position.x(),
|
| - anchor_y + position.y(),
|
| - layer->anchor_point_z()));
|
| + box.set_origin(box.origin() +
|
| + gfx::Vector3dF(transform_origin_x + position.x(),
|
| + transform_origin_y + position.y(),
|
| + transform_origin_z));
|
| }
|
|
|
| // If we've got an unapplied coalesced transform at this point, it must still
|
|
|