fix(修复问题): 修复图像裁剪渲染回归
build.yaml / build (push) Successful in 50s

This commit is contained in:
xiaoqidun committed 2026-10-12 15:09:45 +08:00
1 parent 05579265b8
commit 9c84264ac7
1 file changed
+5 -3
+5 -3
View File
@@ -140,7 +140,8 @@ func (r *Renderer) buildClipPath(clips *Clips, pageH float64, bx, by float64, ma
return p return p
} }
// buildClipAreaPath 按绘制参数展开裁剪路径的填充及描边,再应用区域变换 // buildClipAreaPath 构建裁剪轮廓,再应用区域变换
// 未启用填充和勾边的路径按填充规则确定内部区域,勾边路径仍按绘制参数展开
// 入参: obj 裁剪路径, drawParam 区域绘制参数, parent 区域变换, pageH 页面高度, bx 横向位移, by 纵向位移 // 入参: obj 裁剪路径, drawParam 区域绘制参数, parent 区域变换, pageH 页面高度, bx 横向位移, by 纵向位移
// 返回: *canvas.Path 裁剪轮廓 // 返回: *canvas.Path 裁剪轮廓
func (r *Renderer) buildClipAreaPath(obj PathObject, drawParam string, parent Matrix, pageH, bx, by float64) *canvas.Path { func (r *Renderer) buildClipAreaPath(obj PathObject, drawParam string, parent Matrix, pageH, bx, by float64) *canvas.Path {
@@ -154,7 +155,8 @@ func (r *Renderer) buildClipAreaPath(obj PathObject, drawParam string, parent Ma
obj.Boundary = "" obj.Boundary = ""
p := r.buildPath(obj, 0, IdentityMatrix, false) p := r.buildPath(obj, 0, IdentityMatrix, false)
var result *canvas.Path var result *canvas.Path
if obj.Fill != nil && *obj.Fill { stroke := obj.Stroke == nil || *obj.Stroke
if !stroke || obj.Fill != nil && *obj.Fill {
paths := canvas.Paths(p.Copy().Split()) paths := canvas.Paths(p.Copy().Split())
for _, path := range paths { for _, path := range paths {
path.Close() path.Close()
@@ -164,7 +166,7 @@ func (r *Renderer) buildClipAreaPath(obj PathObject, drawParam string, parent Ma
result = result.Settle(canvas.EvenOdd) result = result.Settle(canvas.EvenOdd)
} }
} }
if obj.Stroke == nil || *obj.Stroke { if stroke {
dp := r.drawParamDefaults(obj.DrawParam, r.drawParamDefaults(drawParam, nil)) dp := r.drawParamDefaults(obj.DrawParam, r.drawParamDefaults(drawParam, nil))
if dp != nil { if dp != nil {
copy := *dp copy := *dp