| Index: Source/core/rendering/shapes/Shape.cpp
|
| diff --git a/Source/core/rendering/shapes/Shape.cpp b/Source/core/rendering/shapes/Shape.cpp
|
| index d9ca3bae7d53fd7e23fd2694e26f03901f42c0df..ca8f8e60d85f4c32db0682bf6c2abcb1846d32a7 100644
|
| --- a/Source/core/rendering/shapes/Shape.cpp
|
| +++ b/Source/core/rendering/shapes/Shape.cpp
|
| @@ -178,8 +178,13 @@ PassOwnPtr<Shape> Shape::createShape(const BasicShape* basicShape, const LayoutS
|
| }
|
|
|
| case BasicShape::BasicShapeEllipseType: {
|
| - // FIXME implement layout.
|
| - shape = createRectangleShape(FloatRect(0, 0, boxWidth, boxHeight), FloatSize(0, 0));
|
| + const BasicShapeEllipse* ellipse = static_cast<const BasicShapeEllipse*>(basicShape);
|
| + FloatPoint center = floatPointForCenterCoordinate(ellipse->centerX(), ellipse->centerY(), FloatSize(boxWidth, boxHeight));
|
| + float radiusX = ellipse->floatValueForRadiusInBox(ellipse->radiusX(), center.x(), boxWidth);
|
| + float radiusY = ellipse->floatValueForRadiusInBox(ellipse->radiusY(), center.y(), boxHeight);
|
| + FloatPoint logicalCenter = physicalPointToLogical(center, logicalBoxSize.height(), writingMode);
|
| +
|
| + shape = createEllipseShape(logicalCenter, FloatSize(radiusX, radiusY));
|
| break;
|
| }
|
|
|
|
|