Chromium Code Reviews| Index: ui/compositor/layer.cc |
| diff --git a/ui/compositor/layer.cc b/ui/compositor/layer.cc |
| index 7d9c07b32e4f20ca9d93f3ec46617f1606449cb6..31149a880721044c885f7daedd57f4cb27150c3d 100644 |
| --- a/ui/compositor/layer.cc |
| +++ b/ui/compositor/layer.cc |
| @@ -533,6 +533,21 @@ void Layer::ConvertPointToLayer(const Layer* source, |
| target->ConvertPointFromAncestor(root_layer, point); |
| } |
| +// static |
| +void Layer::ConvertPointToLayerF(const Layer* source, |
| + const Layer* target, |
| + gfx::PointF* point) { |
| + if (source == target) |
| + return; |
| + |
| + const Layer* root_layer = GetRoot(source); |
| + CHECK_EQ(root_layer, GetRoot(target)); |
| + |
| + if (source != root_layer) |
| + source->ConvertPointForAncestorF(root_layer, point); |
| + if (target != root_layer) |
| + target->ConvertPointFromAncestorF(root_layer, point); |
| +} |
|
oshima
2017/01/20 22:11:55
new line
|
| bool Layer::GetTargetTransformRelativeTo(const Layer* ancestor, |
| gfx::Transform* transform) const { |
| const Layer* p = this; |
| @@ -956,21 +971,37 @@ void Layer::StackRelativeTo(Layer* child, Layer* other, bool above) { |
| bool Layer::ConvertPointForAncestor(const Layer* ancestor, |
| gfx::Point* point) const { |
| + gfx::PointF point_f(*point); |
| + bool result = ConvertPointForAncestorF(ancestor, &point_f); |
| + *point = gfx::ToFlooredPoint(point_f); |
| + return result; |
| +} |
| + |
| +bool Layer::ConvertPointFromAncestor(const Layer* ancestor, |
| + gfx::Point* point) const { |
| + gfx::PointF point_f(*point); |
| + bool result = ConvertPointFromAncestorF(ancestor, &point_f); |
| + *point = gfx::ToFlooredPoint(point_f); |
| + return result; |
| +} |
| + |
| +bool Layer::ConvertPointForAncestorF(const Layer* ancestor, |
| + gfx::PointF* point) const { |
| gfx::Transform transform; |
| bool result = GetTargetTransformRelativeTo(ancestor, &transform); |
| - auto p = gfx::Point3F(gfx::PointF(*point)); |
| + auto p = gfx::Point3F(*point); |
| transform.TransformPoint(&p); |
| - *point = gfx::ToFlooredPoint(p.AsPointF()); |
| + *point = p.AsPointF(); |
| return result; |
| } |
| -bool Layer::ConvertPointFromAncestor(const Layer* ancestor, |
| - gfx::Point* point) const { |
| +bool Layer::ConvertPointFromAncestorF(const Layer* ancestor, |
| + gfx::PointF* point) const { |
| gfx::Transform transform; |
| bool result = GetTargetTransformRelativeTo(ancestor, &transform); |
| - auto p = gfx::Point3F(gfx::PointF(*point)); |
| + auto p = gfx::Point3F(*point); |
| transform.TransformPointReverse(&p); |
| - *point = gfx::ToFlooredPoint(p.AsPointF()); |
| + *point = p.AsPointF(); |
| return result; |
| } |