Skip to content

Render bounded compound foreground filter lists #487

Description

@wieslawsoltes

Problem

WebScene now renders bounded single-function brightness(), grayscale(), contrast(), and blur() filters, but unchanged Code OSS also uses compound foreground lists such as blur(var(...)) saturate(...). The retained emitter recognizes only exact single functions, so even supported compound lists are silently omitted and authored filter order is lost.

Scope

  • Parse a bounded whitespace-separated foreground filter list in authored order.
  • Support numeric brightness(), grayscale(), contrast(), and saturate() plus pixel blur(), including repeated functions. saturate() adds the missing color-matrix primitive used by an unchanged Code OSS compound filter.
  • Emit kind 30 groups in reverse-authored nesting order and kind 31 closes in authored order, so SaveLayer restoration applies CSS functions left-to-right; enforce an explicit small function-count bound.
  • Keep unsupported functions and unresolved var()/calc() lists fail-closed until their own slices exist; never partially apply a compound list.
  • Preserve opacity, transforms, clips, descendants, teardown, and Skia/Flutter parity.
  • Add native retained-order and browser computed-value regression coverage.

Validation debt

Browser/native pixels, damage expansion, performance, memory, lifecycle, exact package, and CI gates remain required before release promotion but are deferred under the current implementation-throughput directive.

Parent: #256. Coordination: #235/#241/#243.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions