feat(性能优化): 降低曲线描边内存开销
build.yaml / build (push) Successful in 50s

This commit is contained in:
xiaoqidun committed 2026-10-13 22:53:35 +08:00
1 parent 67aabbda84
commit 9ade2466ba
1 file changed
+6 -5
+6 -5
View File
@@ -144,18 +144,18 @@ func (p GeometryPath) strokePolylines(tolerance float64) ([]geometryPolyline, er
if depth == 24 {
return fmt.Errorf("stroke curve tolerance cannot be met")
}
work := append([]Point(nil), points...)
left, right := make([]Point, len(points)), make([]Point, len(points))
var work, left, right [4]Point
copy(work[:], points)
for n := len(points); n > 0; n-- {
left[len(points)-n], right[n-1] = work[0], work[n-1]
for i := 0; i < n-1; i++ {
work[i] = geometryLerp(work[i], work[i+1], .5)
}
}
if err := flatten(left, budget/2, depth+1); err != nil {
if err := flatten(left[:len(points)], budget/2, depth+1); err != nil {
return err
}
return flatten(right, budget/2, depth+1)
return flatten(right[:len(points)], budget/2, depth+1)
}
for _, s := range curves {
switch s.Verb {
@@ -175,7 +175,8 @@ func (p GeometryPath) strokePolylines(tolerance float64) ([]geometryPolyline, er
line.points = []Point{current}
default:
drawn = true
points := []Point{current}
var buffer [4]Point
points := append(buffer[:0], current)
if s.Verb == GeometryQuad || s.Verb == GeometryCubic {
points = append(points, s.Control1)
}