Chromium Code Reviews| Index: Source/core/layout/style/BasicShapes.cpp |
| diff --git a/Source/core/layout/style/BasicShapes.cpp b/Source/core/layout/style/BasicShapes.cpp |
| index 8317bfcc91fe0a829e626eac24e591ce8981552a..b0476a5168f4ef204365cab2a7e233bcaf7198d5 100644 |
| --- a/Source/core/layout/style/BasicShapes.cpp |
| +++ b/Source/core/layout/style/BasicShapes.cpp |
| @@ -80,11 +80,20 @@ float BasicShapeCircle::floatValueForRadiusInBox(FloatSize boxSize) const |
| FloatPoint center = floatPointForCenterCoordinate(m_centerX, m_centerY, boxSize); |
| + float radiusX, radiusY; |
|
Bem Jones-Bey (adobe)
2015/02/19 18:41:06
This naming confused me. What we have here is not
|
| + if (center.x() < boxSize.width()) |
| + radiusX = boxSize.width() - center.x(); |
| + else |
| + radiusX = center.x() - boxSize.width(); |
| + if (center.y() < boxSize.height()) |
| + radiusY = boxSize.height() - center.y(); |
| + else |
| + radiusY = center.y() - boxSize.height(); |
| if (m_radius.type() == BasicShapeRadius::ClosestSide) |
| - return std::min(std::min(center.x(), boxSize.width() - center.x()), std::min(center.y(), boxSize.height() - center.y())); |
| + return std::min(std::min(std::abs(center.x()), radiusX), std::min(std::abs(center.y()), radiusY)); |
| // If radius.type() == BasicShapeRadius::FarthestSide. |
| - return std::max(std::max(center.x(), boxSize.width() - center.x()), std::max(center.y(), boxSize.height() - center.y())); |
| + return std::max(std::max(center.x(), radiusX), std::max(center.y(), radiusY)); |
| } |
| void BasicShapeCircle::path(Path& path, const FloatRect& boundingBox) |
| @@ -126,10 +135,10 @@ float BasicShapeEllipse::floatValueForRadiusInBox(const BasicShapeRadius& radius |
| return floatValueForLength(radius.value(), boxWidthOrHeight); |
| if (radius.type() == BasicShapeRadius::ClosestSide) |
| - return std::min(center, boxWidthOrHeight - center); |
| + return std::min(std::abs(center), boxWidthOrHeight > center ? boxWidthOrHeight - center : center - boxWidthOrHeight); |
| ASSERT(radius.type() == BasicShapeRadius::FarthestSide); |
| - return std::max(center, boxWidthOrHeight - center); |
| + return std::max(center, boxWidthOrHeight > center ? boxWidthOrHeight - center : center - boxWidthOrHeight); |
| } |
| void BasicShapeEllipse::path(Path& path, const FloatRect& boundingBox) |