mirror of
https://github.com/mozilla/pdf.js.git
synced 2026-07-11 17:45:49 +02:00
Fix nested non-isolated groups in knockout rendering
It fixes #18032. Only use the special inner-backdrop compositing path for nested non-isolated groups that actually need isolation. This preserves the parent/page backdrop for simple nested groups inside knockout groups, preventing later group compositing from erasing existing backdrop content.
This commit is contained in:
parent
0c66063cd4
commit
0e335d53ee
@ -3342,13 +3342,15 @@ class CanvasGraphics {
|
|||||||
// #compositeKnockoutSurface so it doesn't become part of the group
|
// #compositeKnockoutSurface so it doesn't become part of the group
|
||||||
// source itself.
|
// source itself.
|
||||||
const backdropCtx = group.knockout && !group.isolated ? currentCtx : null;
|
const backdropCtx = group.knockout && !group.isolated ? currentCtx : null;
|
||||||
// Non-isolated non-KO subgroup inside a KO parent: at endGroup we'll
|
// Non-isolated non-KO subgroup inside a KO parent, with inner compositing
|
||||||
// blend its elements against the outer KO running canvas (also frozen),
|
// of its own: at endGroup we'll blend its elements against the outer KO
|
||||||
// so just record the flag here and read ctx.canvas at composite time.
|
// running canvas (also frozen), so just record the flag here and read
|
||||||
|
// ctx.canvas at composite time.
|
||||||
const hasInnerBackdrop =
|
const hasInnerBackdrop =
|
||||||
!group.isolated &&
|
!group.isolated &&
|
||||||
!group.knockout &&
|
!group.knockout &&
|
||||||
!group.smask &&
|
!group.smask &&
|
||||||
|
group.needsIsolation &&
|
||||||
this.#knockoutGroupLevel > 0;
|
this.#knockoutGroupLevel > 0;
|
||||||
|
|
||||||
// Pool the per-element shape mask for the lifetime of this KO group.
|
// Pool the per-element shape mask for the lifetime of this KO group.
|
||||||
|
|||||||
1
test/pdfs/.gitignore
vendored
1
test/pdfs/.gitignore
vendored
@ -920,3 +920,4 @@
|
|||||||
!smask_luminosity_oob_transfer.pdf
|
!smask_luminosity_oob_transfer.pdf
|
||||||
!operator_list_cycle.pdf
|
!operator_list_cycle.pdf
|
||||||
!knockout_groups_test.pdf
|
!knockout_groups_test.pdf
|
||||||
|
!issue18032.pdf
|
||||||
|
|||||||
BIN
test/pdfs/issue18032.pdf
Normal file
BIN
test/pdfs/issue18032.pdf
Normal file
Binary file not shown.
@ -14252,5 +14252,13 @@
|
|||||||
"rounds": 1,
|
"rounds": 1,
|
||||||
"type": "eq",
|
"type": "eq",
|
||||||
"about": "Knockout groups composite-modes survey."
|
"about": "Knockout groups composite-modes survey."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "issue18032",
|
||||||
|
"file": "pdfs/issue18032.pdf",
|
||||||
|
"md5": "656234fde97953c4e3fc7698831590a9",
|
||||||
|
"rounds": 1,
|
||||||
|
"type": "eq",
|
||||||
|
"about": "Non-isolated knockout group with a nested non-isolated subgroup over existing text."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user