mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-22 16:18:08 +02:00
Use a transparent color when setting fill/stroke colors in a pattern context but with no colorspace
This commit is contained in:
parent
98e772727e
commit
482994cc04
5 changed files with 62 additions and 16 deletions
|
@ -2007,9 +2007,8 @@ class PartialEvaluator {
|
|||
localColorSpaceCache,
|
||||
})
|
||||
.then(function (colorSpace) {
|
||||
if (colorSpace) {
|
||||
stateManager.state.fillColorSpace = colorSpace;
|
||||
}
|
||||
stateManager.state.fillColorSpace =
|
||||
colorSpace || ColorSpace.singletons.gray;
|
||||
})
|
||||
);
|
||||
return;
|
||||
|
@ -2033,9 +2032,8 @@ class PartialEvaluator {
|
|||
localColorSpaceCache,
|
||||
})
|
||||
.then(function (colorSpace) {
|
||||
if (colorSpace) {
|
||||
stateManager.state.strokeColorSpace = colorSpace;
|
||||
}
|
||||
stateManager.state.strokeColorSpace =
|
||||
colorSpace || ColorSpace.singletons.gray;
|
||||
})
|
||||
);
|
||||
return;
|
||||
|
@ -2079,7 +2077,12 @@ class PartialEvaluator {
|
|||
args = ColorSpace.singletons.rgb.getRgb(args, 0);
|
||||
break;
|
||||
case OPS.setFillColorN:
|
||||
cs = stateManager.state.fillColorSpace;
|
||||
cs = stateManager.state.patternFillColorSpace;
|
||||
if (!cs) {
|
||||
args = [];
|
||||
fn = OPS.setFillTransparent;
|
||||
break;
|
||||
}
|
||||
if (cs.name === "Pattern") {
|
||||
next(
|
||||
self.handleColorN(
|
||||
|
@ -2101,7 +2104,12 @@ class PartialEvaluator {
|
|||
fn = OPS.setFillRGBColor;
|
||||
break;
|
||||
case OPS.setStrokeColorN:
|
||||
cs = stateManager.state.strokeColorSpace;
|
||||
cs = stateManager.state.patternStrokeColorSpace;
|
||||
if (!cs) {
|
||||
args = [];
|
||||
fn = OPS.setStrokeTransparent;
|
||||
break;
|
||||
}
|
||||
if (cs.name === "Pattern") {
|
||||
next(
|
||||
self.handleColorN(
|
||||
|
@ -4873,8 +4881,26 @@ class EvalState {
|
|||
this.ctm = new Float32Array(IDENTITY_MATRIX);
|
||||
this.font = null;
|
||||
this.textRenderingMode = TextRenderingMode.FILL;
|
||||
this.fillColorSpace = ColorSpace.singletons.gray;
|
||||
this.strokeColorSpace = ColorSpace.singletons.gray;
|
||||
this._fillColorSpace = ColorSpace.singletons.gray;
|
||||
this._strokeColorSpace = ColorSpace.singletons.gray;
|
||||
this.patternFillColorSpace = null;
|
||||
this.patternStrokeColorSpace = null;
|
||||
}
|
||||
|
||||
get fillColorSpace() {
|
||||
return this._fillColorSpace;
|
||||
}
|
||||
|
||||
set fillColorSpace(colorSpace) {
|
||||
this._fillColorSpace = this.patternFillColorSpace = colorSpace;
|
||||
}
|
||||
|
||||
get strokeColorSpace() {
|
||||
return this._strokeColorSpace;
|
||||
}
|
||||
|
||||
set strokeColorSpace(colorSpace) {
|
||||
this._strokeColorSpace = this.patternStrokeColorSpace = colorSpace;
|
||||
}
|
||||
|
||||
clone() {
|
||||
|
|
|
@ -2386,15 +2386,24 @@ class CanvasGraphics {
|
|||
}
|
||||
|
||||
setStrokeRGBColor(r, g, b) {
|
||||
const color = Util.makeHexColor(r, g, b);
|
||||
this.ctx.strokeStyle = color;
|
||||
this.current.strokeColor = color;
|
||||
this.ctx.strokeStyle = this.current.strokeColor = Util.makeHexColor(
|
||||
r,
|
||||
g,
|
||||
b
|
||||
);
|
||||
}
|
||||
|
||||
setStrokeTransparent() {
|
||||
this.ctx.strokeStyle = this.current.strokeColor = "transparent";
|
||||
}
|
||||
|
||||
setFillRGBColor(r, g, b) {
|
||||
const color = Util.makeHexColor(r, g, b);
|
||||
this.ctx.fillStyle = color;
|
||||
this.current.fillColor = color;
|
||||
this.ctx.fillStyle = this.current.fillColor = Util.makeHexColor(r, g, b);
|
||||
this.current.patternFill = false;
|
||||
}
|
||||
|
||||
setFillTransparent() {
|
||||
this.ctx.fillStyle = this.current.fillColor = "transparent";
|
||||
this.current.patternFill = false;
|
||||
}
|
||||
|
||||
|
|
|
@ -342,6 +342,8 @@ const OPS = {
|
|||
paintImageMaskXObjectRepeat: 89,
|
||||
paintSolidColorImageMask: 90,
|
||||
constructPath: 91,
|
||||
setStrokeTransparent: 92,
|
||||
setFillTransparent: 93,
|
||||
};
|
||||
|
||||
const PasswordResponses = {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue