<!DOCTYPE html>
<html>
<head>
<script src="../../../resources/js-test-pre.js"></script>
<script src="../resources/subpixel-utils.js"></script>
<style>
#container-border {
    border: 1px solid black; 
    margin: 10px; 
    width: 500px;
}

#container {
    font: 20px/1 Ahem, sans-serif;
    width: 500px;
    height: 300px;
  }

#float-left {
    float: left;
    position: relative;
    overflow: visible;
    -webkit-shape-outside: ellipse(200px 100px at 225px 125px);
    -webkit-shape-margin: 25px;
    width: 450px;
    height: 250px;
}

#svg-shape-ellipse {
    position: absolute;
    display:block;
    top: 0px;
    left: 0px;
    width: 500px;
    height: 300px;
}
</style>

<body>
<p>The left edges of the three black squares should follow the outer ellipse boundary and each square should appear on a subsequent line.</p>
<div id="container-border">
    <div id="container">
        <div id="float-left">
            <svg id="svg-shape-ellipse" xmlns="http://www.w3.org/2000/">
                <ellipse cx="225" cy="125" rx="200" ry="100" fill="green"></ellipse>
                <ellipse cx="225" cy="125" rx="225" ry="125" fill="none" stroke="green"></ellipse>
            </svg>
        </div>
        <span id="s1">X</span></br><span id="s2">X</span><br/><span id="s3">X</span>
    </div>
</div>
<div id="console"></div>
</body>
<script>
function elementRect(elementId) 
{
    var s = document.getElementById("container").getBoundingClientRect();
    var r = document.getElementById(elementId).getBoundingClientRect();
    return {left: Math.round(r.left) - Math.round(s.left), top: Math.round(r.top) - Math.round(s.top), width: Math.round(r.width), height: Math.round(r.height)};
}

// You'll find the equation for the X intercept of an elliptical arc here (among other places):
// http://hansmuller-webkit.blogspot.com/2012/07/computing-horizonal-rounded-rectangle.html

function marginEllipseLeftXIntercept(y, cx, rx, ry)
{
    var f = SubPixelLayout.snapToLayoutUnit(cx + rx * Math.sqrt(1 - Math.pow((ry - y) / ry, 2)));
    return String( Math.round(f) );
}

// In the ".left" tests below, it's the lower edge of the 20px Ahem glyph that that defines the element rect's left edge. 
// That's why the Y coordinate in each of those tests is 20 greater than the ".top" test.

var quiet = true; // PASS output depends on SubPixelLayout.isEnabled()

shouldBe("elementRect('s1').top", "0");
shouldBe("elementRect('s1').left", marginEllipseLeftXIntercept(20, 225, 225, 125), quiet);

shouldBe("elementRect('s2').top", "20");
shouldBe("elementRect('s2').left", marginEllipseLeftXIntercept(40, 225, 225, 125), quiet);

shouldBe("elementRect('s3').top", "40");
shouldBe("elementRect('s3').left", marginEllipseLeftXIntercept(60, 225, 225, 125), quiet);

</script>
</html>

