Skip to content

Support clip fill rules across rendering backends - #105

Merged
nicoburns merged 1 commit into
mainfrom
devin/1790788534-clip-rule
Sep 30, 2026
Merged

nicoburns merged 1 commit into
mainfrom
devin/1790788534-clip-rule

Conversation

@nicoburns

Copy link
Copy Markdown
Member

Summary

Carry peniko::Fill through PaintScene::push_layer and push_clip_layer, recording/replay, and all Skia/Vello backends so SVG clip-rule: evenodd produces holes rather than a nonzero clip.

SVG clipping now uses the parsed clip path's rule (not fill-rule). Older serialized commands default to nonzero when the new fill field is absent. This is a breaking PaintScene API change; existing callers should pass Fill::NonZero to retain their behavior.

Verified with workspace tests, workspace Clippy (-D warnings), formatting, and wasm/WebGL Clippy. Includes pixel tests for both rules, compositing layers, scene replay, and serialization compatibility.

Link to Devin session: https://dioxus.staging.devinenterprise.com/sessions/e0ae5a7e77b4472fa049798331653054
Open in Devin Desktop: https://dioxus.staging.devinenterprise.com/desktop/session/e0ae5a7e77b4472fa049798331653054?variant=devin-insiders
Requested by: @nicoburns

@staging-devin-ai-integration

Copy link
Copy Markdown

I'll fix CI failures and address comments from users with write access that start with 'Devin'.

  • Disable automatic comment, CI, and merge conflict monitoring

@nicoburns nicoburns reopened this Sep 30, 2026
@nicoburns
nicoburns merged commit 0e72f17 into main Sep 30, 2026
18 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant