Reviewed by Eric.
authorrwlbuis <rwlbuis@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 4 Sep 2006 07:57:56 +0000 (07:57 +0000)
committerrwlbuis <rwlbuis@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 4 Sep 2006 07:57:56 +0000 (07:57 +0000)
        This code should have gone in as part of:
        http://bugzilla.opendarwin.org/show_bug.cgi?id=10696
        It addresses the comments there, also we use double instead
        of float now in calculations.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@16211 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog
WebCore/platform/Path.cpp

index f87e36c31d62400b6b53852d4d0fe81e64f0e0a9..8403ec081b66c454ca8b04a9f4f46a9b754c4005 100644 (file)
@@ -1,3 +1,18 @@
+2006-09-04  Rob Buis  <buis@kde.org>
+
+        Reviewed by Eric.
+
+        This code should have gone in as part of:
+        http://bugzilla.opendarwin.org/show_bug.cgi?id=10696
+        It addresses the comments there, also we use double instead
+        of float now in calculations.
+
+        * platform/Path.cpp:
+        (WebCore::Path::createRoundedRectangle):
+        (WebCore::Path::createRectangle):
+        (WebCore::Path::createEllipse):
+        (WebCore::Path::createCircle):
+
 2006-09-03  Sam Weinig  <sam.weinig@gmail.com>
 
         Reviewed by Darin and Tim H.
index ae8cdd6634826b464fcd1a57682909764bee282d..a1f373f68f2fad642979cfb3d4179b8db26912c9 100644 (file)
 
 
 #include "config.h"
+#include "Path.h"
 
-#include <math.h>
-
-#include "FloatRect.h"
 #include "FloatPoint.h"
-#include "Path.h"
+#include "FloatRect.h"
+#include <math.h>
 
-#define QUARTER 0.552 // approximation of control point positions on a bezier
+const double QUARTER = 0.552; // approximation of control point positions on a bezier
                       // to simulate a quarter of a circle.
 namespace WebCore {
 
 Path Path::createRoundedRectangle(const FloatRect& rectangle, const FloatSize& roundingRadii)
 {
     Path path;
-    float x = rectangle.x();
-    float y = rectangle.y();
-    float width = rectangle.width();
-    float height = rectangle.height();
-    float rx = roundingRadii.width();
-    float ry = roundingRadii.height();
-    if (width <= 0.0f || height <= 0.0f)
+    double x = rectangle.x();
+    double y = rectangle.y();
+    double width = rectangle.width();
+    double height = rectangle.height();
+    double rx = roundingRadii.width();
+    double ry = roundingRadii.height();
+    if (width <= 0.0 || height <= 0.0)
         return path;
 
     double dx = rx, dy = ry;
     // If rx is greater than half of the width of the rectangle
     // then set rx to half of the width (required in SVG spec)
-    if (dx > width / 2)
-        dx = width / 2;
+    if (dx > width * 0.5)
+        dx = width * 0.5;
 
     // If ry is greater than half of the height of the rectangle
     // then set ry to half of the height (required in SVG spec)
-    if (dy > height / 2)
-        dy = height / 2;
+    if (dy > height * 0.5)
+        dy = height * 0.5;
 
     path.moveTo(FloatPoint(x + dx, y));
 
-    if (dx < width / 2)
+    if (dx < width * 0.5)
         path.addLineTo(FloatPoint(x + width - rx, y));
 
     path.addBezierCurveTo(FloatPoint(x + width - dx * (1 - QUARTER), y), FloatPoint(x + width, y + dy * (1 - QUARTER)), FloatPoint(x + width, y + dy));
 
-    if (dy < height / 2)
+    if (dy < height * 0.5)
         path.addLineTo(FloatPoint(x + width, y + height - dy));
 
     path.addBezierCurveTo(FloatPoint(x + width, y + height - dy * (1 - QUARTER)), FloatPoint(x + width - dx * (1 - QUARTER), y + height), FloatPoint(x + width - dx, y + height));
 
-    if (dx < width / 2)
+    if (dx < width * 0.5)
         path.addLineTo(FloatPoint(x + dx, y + height));
 
     path.addBezierCurveTo(FloatPoint(x + dx * (1 - QUARTER), y + height), FloatPoint(x, y + height - dy * (1 - QUARTER)), FloatPoint(x, y + height - dy));
 
-    if (dy < height / 2)
+    if (dy < height * 0.5)
         path.addLineTo(FloatPoint(x, y + dy));
 
     path.addBezierCurveTo(FloatPoint(x, y + dy * (1 - QUARTER)), FloatPoint(x + dx * (1 - QUARTER), y), FloatPoint(x + dx, y));
@@ -90,11 +89,11 @@ Path Path::createRoundedRectangle(const FloatRect& rectangle, const FloatSize& r
 Path Path::createRectangle(const FloatRect& rectangle)
 {
     Path path;
-    float x = rectangle.x();
-    float y = rectangle.y();
-    float width = rectangle.width();
-    float height = rectangle.height();
-    if (width < 0.0f || height < 0.0f)
+    double x = rectangle.x();
+    double y = rectangle.y();
+    double width = rectangle.width();
+    double height = rectangle.height();
+    if (width < 0.0 || height < 0.0)
         return path;
     
     path.moveTo(FloatPoint(x, y));
@@ -106,12 +105,12 @@ Path Path::createRectangle(const FloatRect& rectangle)
     return path;
 }
 
-Path Path::createEllipse(const FloatPoint&c, float rx, float ry)
+Path Path::createEllipse(const FloatPoint& center, float rx, float ry)
 {
-    float cx = c.x();
-    float cy = c.y();
+    double cx = center.x();
+    double cy = center.y();
     Path path;
-    if (rx <= 0.0f || ry <= 0.0f)
+    if (rx <= 0.0 || ry <= 0.0)
         return path;
 
     double x = cx, y = cy;
@@ -142,9 +141,9 @@ Path Path::createEllipse(const FloatPoint&c, float rx, float ry)
     return path;
 }
 
-Path Path::createCircle(const FloatPoint& c, float r)
+Path Path::createCircle(const FloatPoint& center, float r)
 {
-    return createEllipse(c, r, r);
+    return createEllipse(center, r, r);
 }
 
 Path Path::createLine(const FloatPoint& start, const FloatPoint& end)