<html>
<head>
<script src="../../../resources/js-test-pre.js"></script>
<script src="../resources/subpixel-utils.js"></script>
<style>
#container {
    font: 20px/1 Ahem, sans-serif;
    width: 200px;
    height: 120px;
    color: rgba(0,0,200, 0.25);
    margin: 25px;
    background-color: grey;
    -webkit-font-smoothing: antialiased;
}

#left-border-box {
    float: left;
    border-top-right-radius: 100px 30px;
    border-bottom-right-radius: 100px 30px;
    -webkit-shape-outside: border-box;  
    width: 100px;
    height: 80px;
    margin-top: 20px;
    margin-bottom: 20px;
    background-color: blue;
    background-clip: border-box;
}
</style>
</head>
<body>
    <div id="container">
        <div id="left-border-box"></div>
        <span id="a">X</span><br>
        <span id="b">X</span><br>
        <span id="c">X</span><br>
        <span id="d">X</span><br>
        <span id="e">X</span><br>
        <span id="f">X</span>
    </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 cornerEllipseRightXIntercept(y, cx, rx, ry)
{
    var f = SubPixelLayout.snapToLayoutUnit(cx + rx * Math.sqrt(1 - Math.pow((ry - y) / ry, 2)));
    return String( Math.round(f) );
}

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

shouldBe("elementRect('a').top", "0");
shouldBe("elementRect('a').left", "0");

shouldBe("elementRect('b').top", "20");
shouldBe("elementRect('b').left", cornerEllipseRightXIntercept(40, 0, 100, 30), quiet);

shouldBe("elementRect('c').top", "40");
shouldBe("elementRect('c').left", "100");

shouldBe("elementRect('d').top", "60");
shouldBe("elementRect('d').left", "100");

shouldBe("elementRect('e').top", "80");
shouldBe("elementRect('e').left", cornerEllipseRightXIntercept(40, 0, 100, 30), quiet);

shouldBe("elementRect('f').top", "100");
shouldBe("elementRect('f').left", "0");
</script>
</html>
