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) |