Make use of CG rounded-rect primitives
[WebKit-https.git] / Source / WebCore / platform / graphics / Path.cpp
index 3b28b64..ca8e90b 100644 (file)
@@ -92,7 +92,7 @@ float Path::normalAngleAtLength(float length, bool& ok) const
 }
 #endif
 
-void Path::addRoundedRect(const RoundedIntRect& r)
+void Path::addRoundedRect(const RoundedRect& r)
 {
     addRoundedRect(r.rect(), r.radii().topLeft(), r.radii().topRight(), r.radii().bottomLeft(), r.radii().bottomRight());
 }
@@ -115,7 +115,7 @@ void Path::addRoundedRect(const FloatRect& rect, const FloatSize& roundingRadii)
     if (radius.height() > halfSize.height())
         radius.setHeight(halfSize.height());
 
-    addBeziersForRoundedRect(rect, radius, radius, radius, radius);
+    addPathForRoundedRect(rect, radius, radius, radius, radius);
 }
 
 void Path::addRoundedRect(const FloatRect& rect, const FloatSize& topLeftRadius, const FloatSize& topRightRadius, const FloatSize& bottomLeftRadius, const FloatSize& bottomRightRadius)
@@ -132,8 +132,15 @@ void Path::addRoundedRect(const FloatRect& rect, const FloatSize& topLeftRadius,
         return;
     }
 
+    addPathForRoundedRect(rect, topLeftRadius, topRightRadius, bottomLeftRadius, bottomRightRadius);
+}
+
+#if !USE(CG)
+void Path::addPathForRoundedRect(const FloatRect& rect, const FloatSize& topLeftRadius, const FloatSize& topRightRadius, const FloatSize& bottomLeftRadius, const FloatSize& bottomRightRadius)
+{
     addBeziersForRoundedRect(rect, topLeftRadius, topRightRadius, bottomLeftRadius, bottomRightRadius);
 }
+#endif
 
 // Approximation of control point positions on a bezier to simulate a quarter of a circle.
 // This is 1-kappa, where kappa = 4 * (sqrt(2) - 1) / 3
@@ -163,4 +170,11 @@ void Path::addBeziersForRoundedRect(const FloatRect& rect, const FloatSize& topL
     closeSubpath();
 }
 
+#if !USE(CG)
+FloatRect Path::fastBoundingRect() const
+{
+    return boundingRect();
+}
+#endif
+
 }