mirror of
https://github.com/mozilla/pdf.js.git
synced 2026-08-02 04:17:24 +02:00
Merge pull request #19708 from calixteman/fix_save_smask_mode
Fix save/restore while in smask mode
This commit is contained in:
commit
7c5695f5c6
@ -1545,39 +1545,35 @@ class CanvasGraphics {
|
|||||||
// Copy the temporary canvas state to the main(suspended) canvas to keep
|
// Copy the temporary canvas state to the main(suspended) canvas to keep
|
||||||
// it in sync.
|
// it in sync.
|
||||||
copyCtxState(this.ctx, this.suspendedCtx);
|
copyCtxState(this.ctx, this.suspendedCtx);
|
||||||
// Don't bother calling save on the temporary canvas since state is not
|
|
||||||
// saved there.
|
|
||||||
this.suspendedCtx.save();
|
|
||||||
} else {
|
|
||||||
this.ctx.save();
|
|
||||||
}
|
}
|
||||||
|
this.ctx.save();
|
||||||
const old = this.current;
|
const old = this.current;
|
||||||
this.stateStack.push(old);
|
this.stateStack.push(old);
|
||||||
this.current = old.clone();
|
this.current = old.clone();
|
||||||
}
|
}
|
||||||
|
|
||||||
restore() {
|
restore() {
|
||||||
if (this.stateStack.length === 0 && this.inSMaskMode) {
|
if (this.stateStack.length === 0) {
|
||||||
this.endSMaskMode();
|
|
||||||
}
|
|
||||||
if (this.stateStack.length !== 0) {
|
|
||||||
this.current = this.stateStack.pop();
|
|
||||||
if (this.inSMaskMode) {
|
if (this.inSMaskMode) {
|
||||||
// Graphics state is stored on the main(suspended) canvas. Restore its
|
this.endSMaskMode();
|
||||||
// state then copy it over to the temporary canvas.
|
|
||||||
this.suspendedCtx.restore();
|
|
||||||
copyCtxState(this.suspendedCtx, this.ctx);
|
|
||||||
} else {
|
|
||||||
this.ctx.restore();
|
|
||||||
}
|
}
|
||||||
this.checkSMaskState();
|
return;
|
||||||
|
|
||||||
// Ensure that the clipping path is reset (fixes issue6413.pdf).
|
|
||||||
this.pendingClip = null;
|
|
||||||
|
|
||||||
this._cachedScaleForStroking[0] = -1;
|
|
||||||
this._cachedGetSinglePixelWidth = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.current = this.stateStack.pop();
|
||||||
|
this.ctx.restore();
|
||||||
|
if (this.inSMaskMode) {
|
||||||
|
// Graphics state is stored on the main(suspended) canvas. Restore its
|
||||||
|
// state then copy it over to the temporary canvas.
|
||||||
|
copyCtxState(this.suspendedCtx, this.ctx);
|
||||||
|
}
|
||||||
|
this.checkSMaskState();
|
||||||
|
|
||||||
|
// Ensure that the clipping path is reset (fixes issue6413.pdf).
|
||||||
|
this.pendingClip = null;
|
||||||
|
|
||||||
|
this._cachedScaleForStroking[0] = -1;
|
||||||
|
this._cachedGetSinglePixelWidth = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
transform(a, b, c, d, e, f) {
|
transform(a, b, c, d, e, f) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user