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; |
} |