Fix border radius glitch.

This fixes the bug that the border radius partially disappeared or had wrong color when it was too steep or too shallow.

Fix 1: Use the correct clipping quad, generated by intersecting border mitre lines to diagonal lines of the corner ellipse arc.
RenderBoxModelObject::clipBorderSidePolygon was generating wrong clipping quad.
It was based on a wrong assumption that rounded border would not cross {horizontal,vertical} line through the box center.

Fix 2: Correctly split a quad into two quads.
A clipping quad is split into "AND" of two quads to set anti-aliasing on both edges individually.
Generate these quads properly by extending a vertex parallel to the opposite edge.

TEST=LayoutTests/fast/borders/*
BUG=160239
BUG=244748
R=jchaffraix@chromium.org, tasak@google.com

Review URL: https://codereview.chromium.org/15804009

git-svn-id: svn://svn.chromium.org/blink/trunk@153119 bbb929c8-8fbe-4397-9dbb-9b2b20218538
17 files changed