-
Notifications
You must be signed in to change notification settings - Fork 29.8k
Description
impeller::Path now allows you to insert conic curves into the path (as of this PR), but it uses a very basic "conic to 2 quadratics" conversion method to implement them. This is a very simplistic way to handle them, only really being sufficient for 90 degree circular types of conic, and really we should be computing how many quads to break into, or to interpolate the conic directly.
Note that while implementing even the simplistic support we discovered that portions of Flutter were handing in degenerate conics and so our simple calculation was creating "dirty outlines" with extremely tiny perturbations that freaked out the stroking code. These same unnecessary perturbations were also happening with the Skia code we were replacing, and we had accepted the ugly outlines into the goldens, but when the new code was generating slightly different perturbations (because it was not implemented with vectorized math instructions), we received new golden failures. We implemented a simple work around for those conics as can be seen in this commit from that PR