path: Always decompose conics into at least 2 segments
Conics are evil in that their parameter skews towards the center, and if it's a very flat conic (weight almost equal to 0), then we'd approximate it with a single segment and not subdivide, which would cause the parameter to be wildly off around 0.25 or 0.75. And that would cause offset calculations to fail.
This commit is contained in:
@@ -725,13 +725,24 @@ gsk_conic_curve_decompose (const GskCurve *curve,
|
||||
gpointer user_data)
|
||||
{
|
||||
const GskConicCurve *self = &curve->conic;
|
||||
graphene_point_t mid;
|
||||
|
||||
gsk_conic_curve_ensure_coefficents (self);
|
||||
|
||||
gsk_conic_curve_eval_point (self, 0.5, &mid);
|
||||
|
||||
return gsk_conic_curve_decompose_subdivide (self,
|
||||
tolerance,
|
||||
&self->points[0],
|
||||
0.0f,
|
||||
&mid,
|
||||
0.5f,
|
||||
add_line_func,
|
||||
user_data)
|
||||
&& gsk_conic_curve_decompose_subdivide (self,
|
||||
tolerance,
|
||||
&mid,
|
||||
0.5f,
|
||||
&self->points[3],
|
||||
1.0f,
|
||||
add_line_func,
|
||||
|
||||
Reference in New Issue
Block a user