Fix gradients for fill and stroke.
This commit is contained in:
parent
e641dabd2c
commit
7008d07fde
@ -924,7 +924,7 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
|
|||||||
}
|
}
|
||||||
var pattern = new TilingPattern(IR, color, this.ctx, this.objs);
|
var pattern = new TilingPattern(IR, color, this.ctx, this.objs);
|
||||||
} else if (IR[0] == 'RadialAxial' || IR[0] == 'Dummy') {
|
} else if (IR[0] == 'RadialAxial' || IR[0] == 'Dummy') {
|
||||||
var pattern = Pattern.shadingFromIR(this.ctx, IR);
|
var pattern = Pattern.shadingFromIR(IR);
|
||||||
} else {
|
} else {
|
||||||
error('Unkown IR type ' + IR[0]);
|
error('Unkown IR type ' + IR[0]);
|
||||||
}
|
}
|
||||||
@ -1008,7 +1008,8 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
|
|||||||
var ctx = this.ctx;
|
var ctx = this.ctx;
|
||||||
|
|
||||||
this.save();
|
this.save();
|
||||||
ctx.fillStyle = Pattern.shadingFromIR(ctx, patternIR);
|
var pattern = Pattern.shadingFromIR(patternIR);
|
||||||
|
ctx.fillStyle = pattern.getPattern(ctx);
|
||||||
|
|
||||||
var inv = ctx.mozCurrentTransformInverse;
|
var inv = ctx.mozCurrentTransformInverse;
|
||||||
if (inv) {
|
if (inv) {
|
||||||
|
@ -305,8 +305,8 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
|||||||
else if (typeNum == SHADING_PATTERN) {
|
else if (typeNum == SHADING_PATTERN) {
|
||||||
var shading = xref.fetchIfRef(dict.get('Shading'));
|
var shading = xref.fetchIfRef(dict.get('Shading'));
|
||||||
var matrix = dict.get('Matrix');
|
var matrix = dict.get('Matrix');
|
||||||
var pattern = Pattern.parseShading(shading, matrix, xref, res,
|
var pattern = Pattern.parseShading(shading, matrix, xref,
|
||||||
null /*ctx*/);
|
res);
|
||||||
args = pattern.getIR();
|
args = pattern.getIR();
|
||||||
} else {
|
} else {
|
||||||
error('Unkown PatternType ' + typeNum);
|
error('Unkown PatternType ' + typeNum);
|
||||||
@ -377,8 +377,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
|||||||
if (!shading)
|
if (!shading)
|
||||||
error('No shading object found');
|
error('No shading object found');
|
||||||
|
|
||||||
var shadingFill = Pattern.parseShading(shading, null, xref, res,
|
var shadingFill = Pattern.parseShading(shading, null, xref, res);
|
||||||
null);
|
|
||||||
var patternIR = shadingFill.getIR();
|
var patternIR = shadingFill.getIR();
|
||||||
args = [patternIR];
|
args = [patternIR];
|
||||||
fn = 'shadingFill';
|
fn = 'shadingFill';
|
||||||
|
@ -22,12 +22,11 @@ var Pattern = (function PatternClosure() {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
Pattern.shadingFromIR = function pattern_shadingFromIR(ctx, raw) {
|
Pattern.shadingFromIR = function pattern_shadingFromIR(raw) {
|
||||||
return Shadings[raw[0]].fromIR(ctx, raw);
|
return Shadings[raw[0]].fromIR(raw);
|
||||||
};
|
};
|
||||||
|
|
||||||
Pattern.parseShading = function pattern_shading(shading, matrix, xref,
|
Pattern.parseShading = function pattern_shading(shading, matrix, xref, res) {
|
||||||
res, ctx) {
|
|
||||||
|
|
||||||
var dict = isStream(shading) ? shading.dict : shading;
|
var dict = isStream(shading) ? shading.dict : shading;
|
||||||
var type = dict.get('ShadingType');
|
var type = dict.get('ShadingType');
|
||||||
@ -36,7 +35,7 @@ var Pattern = (function PatternClosure() {
|
|||||||
case PatternType.AXIAL:
|
case PatternType.AXIAL:
|
||||||
case PatternType.RADIAL:
|
case PatternType.RADIAL:
|
||||||
// Both radial and axial shadings are handled by RadialAxial shading.
|
// Both radial and axial shadings are handled by RadialAxial shading.
|
||||||
return new Shadings.RadialAxial(dict, matrix, xref, res, ctx);
|
return new Shadings.RadialAxial(dict, matrix, xref, res);
|
||||||
default:
|
default:
|
||||||
return new Shadings.Dummy();
|
return new Shadings.Dummy();
|
||||||
}
|
}
|
||||||
@ -102,14 +101,16 @@ Shadings.RadialAxial = (function RadialAxialClosure() {
|
|||||||
this.colorStops = colorStops;
|
this.colorStops = colorStops;
|
||||||
}
|
}
|
||||||
|
|
||||||
RadialAxial.fromIR = function radialAxialShadingGetIR(ctx, raw) {
|
RadialAxial.fromIR = function radialAxialShadingGetIR(raw) {
|
||||||
var type = raw[1];
|
var type = raw[1];
|
||||||
var colorStops = raw[2];
|
var colorStops = raw[2];
|
||||||
var p0 = raw[3];
|
var p0 = raw[3];
|
||||||
var p1 = raw[4];
|
var p1 = raw[4];
|
||||||
var r0 = raw[5];
|
var r0 = raw[5];
|
||||||
var r1 = raw[6];
|
var r1 = raw[6];
|
||||||
|
return {
|
||||||
|
type: 'Pattern',
|
||||||
|
getPattern: function(ctx) {
|
||||||
var curMatrix = ctx.mozCurrentTransform;
|
var curMatrix = ctx.mozCurrentTransform;
|
||||||
if (curMatrix) {
|
if (curMatrix) {
|
||||||
var userMatrix = ctx.mozCurrentTransformInverse;
|
var userMatrix = ctx.mozCurrentTransformInverse;
|
||||||
@ -132,6 +133,8 @@ Shadings.RadialAxial = (function RadialAxialClosure() {
|
|||||||
grad.addColorStop(c[0], c[1]);
|
grad.addColorStop(c[0], c[1]);
|
||||||
}
|
}
|
||||||
return grad;
|
return grad;
|
||||||
|
}
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
RadialAxial.prototype = {
|
RadialAxial.prototype = {
|
||||||
|
2
test/pdfs/.gitignore
vendored
2
test/pdfs/.gitignore
vendored
@ -30,3 +30,5 @@
|
|||||||
!zerowidthline.pdf
|
!zerowidthline.pdf
|
||||||
!issue1002.pdf
|
!issue1002.pdf
|
||||||
!issue925.pdf
|
!issue925.pdf
|
||||||
|
!gradientfill.pdf
|
||||||
|
|
||||||
|
BIN
test/pdfs/gradientfill.pdf
Normal file
BIN
test/pdfs/gradientfill.pdf
Normal file
Binary file not shown.
@ -558,5 +558,11 @@
|
|||||||
"rounds": 1,
|
"rounds": 1,
|
||||||
"link": true,
|
"link": true,
|
||||||
"type": "eq"
|
"type": "eq"
|
||||||
|
},
|
||||||
|
{ "id": "gradientfill",
|
||||||
|
"file": "pdfs/gradientfill.pdf",
|
||||||
|
"md5": "cbc1988e4803f647fa83467a85f0e231",
|
||||||
|
"rounds": 1,
|
||||||
|
"type": "eq"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
Loading…
Reference in New Issue
Block a user