Hi all,
Yesterday I committed a patch re-writing the way WebKit paints border-radius
and fixed a bunch of bugs along the way. The new border-radius-painting
mechanism involves a new function: GraphicsContext::clipConvexPolygon(). I have
implemented this in GraphicsContextCG, but I did not implement it for other
platforms since I don't have graphics expertise in the other APIs and since I
don't have configurations to test all of the platforms.
To avoid breaking other implementations of border-radius in the meantime, I
left the old border-radius-painting code path in the tree for the time being,
wrapped with an ifdef. This is temporary though. We want to remove the old code
path to avoid maintaining cruft. I would like to STRONGLY encourage other
platforms to implement GraphicsContext::clipConvexPolygon() soon.
This is all you have to do to fix LOTS of border-radius bugs for your graphics
platform of choice:
1. Implement GraphicsContext::clipConvexPolygon(). I suspect this will not be
very hard. All platforms have an implementation of
GraphicsContext::drawConvexPolygon() already, and hopefully the clipping
function will be similar.
2. Fix #define HAVE_PATH_BASED_BORDER_RADIUS_DRAWING in RenderObject.h so that
your platform opts into the new code path.
3. Profit.
Here is a test-case that really illuminates all of the bugs we had in WebKit
that will be fixed when you do this. (Move the sliders around and pretend they
are labeled.)
Here are the bugs that I filed to track this issue on various platforms:
Cairo
Haiku
QT
Skia
Wince
Wx
Thanks everyone!
-Beth
_______________________________________________
webkit-dev mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev