Browse Source

Merge pull request #1443 from brendandahl/gradientfix

Fix gradients for fill and stroke.
Yury Delendik 13 years ago
parent
commit
b10d7fceb8
  1. 5
      src/canvas.js
  2. 7
      src/evaluator.js
  3. 16
      src/pattern.js
  4. 2
      test/pdfs/.gitignore
  5. BIN
      test/pdfs/gradientfill.pdf
  6. 6
      test/test_manifest.json

5
src/canvas.js

@ -926,7 +926,7 @@ var CanvasGraphics = (function CanvasGraphicsClosure() { @@ -926,7 +926,7 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
}
var pattern = new TilingPattern(IR, color, this.ctx, this.objs);
} else if (IR[0] == 'RadialAxial' || IR[0] == 'Dummy') {
var pattern = Pattern.shadingFromIR(this.ctx, IR);
var pattern = Pattern.shadingFromIR(IR);
} else {
error('Unkown IR type ' + IR[0]);
}
@ -1010,7 +1010,8 @@ var CanvasGraphics = (function CanvasGraphicsClosure() { @@ -1010,7 +1010,8 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
var ctx = this.ctx;
this.save();
ctx.fillStyle = Pattern.shadingFromIR(ctx, patternIR);
var pattern = Pattern.shadingFromIR(patternIR);
ctx.fillStyle = pattern.getPattern(ctx);
var inv = ctx.mozCurrentTransformInverse;
if (inv) {

7
src/evaluator.js

@ -322,8 +322,8 @@ var PartialEvaluator = (function PartialEvaluatorClosure() { @@ -322,8 +322,8 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
else if (typeNum == SHADING_PATTERN) {
var shading = dict.get('Shading');
var matrix = dict.get('Matrix');
var pattern = Pattern.parseShading(shading, matrix, xref, res,
null /*ctx*/);
var pattern = Pattern.parseShading(shading, matrix, xref,
res);
args = pattern.getIR();
} else {
error('Unkown PatternType ' + typeNum);
@ -393,8 +393,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() { @@ -393,8 +393,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
if (!shading)
error('No shading object found');
var shadingFill = Pattern.parseShading(shading, null, xref, res,
null);
var shadingFill = Pattern.parseShading(shading, null, xref, res);
var patternIR = shadingFill.getIR();
args = [patternIR];
fn = 'shadingFill';

16
src/pattern.js

@ -22,12 +22,12 @@ var Pattern = (function PatternClosure() { @@ -22,12 +22,12 @@ var Pattern = (function PatternClosure() {
}
};
Pattern.shadingFromIR = function Pattern_shadingFromIR(ctx, raw) {
return Shadings[raw[0]].fromIR(ctx, raw);
Pattern.shadingFromIR = function Pattern_shadingFromIR(raw) {
return Shadings[raw[0]].fromIR(raw);
};
Pattern.parseShading = function Pattern_parseShading(shading, matrix, xref,
res, ctx) {
res) {
var dict = isStream(shading) ? shading.dict : shading;
var type = dict.get('ShadingType');
@ -36,7 +36,7 @@ var Pattern = (function PatternClosure() { @@ -36,7 +36,7 @@ var Pattern = (function PatternClosure() {
case PatternType.AXIAL:
case PatternType.RADIAL:
// 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:
return new Shadings.Dummy();
}
@ -101,14 +101,16 @@ Shadings.RadialAxial = (function RadialAxialClosure() { @@ -101,14 +101,16 @@ Shadings.RadialAxial = (function RadialAxialClosure() {
this.colorStops = colorStops;
}
RadialAxial.fromIR = function RadialAxial_fromIR(ctx, raw) {
RadialAxial.fromIR = function RadialAxial_fromIR(raw) {
var type = raw[1];
var colorStops = raw[2];
var p0 = raw[3];
var p1 = raw[4];
var r0 = raw[5];
var r1 = raw[6];
return {
type: 'Pattern',
getPattern: function(ctx) {
var curMatrix = ctx.mozCurrentTransform;
if (curMatrix) {
var userMatrix = ctx.mozCurrentTransformInverse;
@ -131,6 +133,8 @@ Shadings.RadialAxial = (function RadialAxialClosure() { @@ -131,6 +133,8 @@ Shadings.RadialAxial = (function RadialAxialClosure() {
grad.addColorStop(c[0], c[1]);
}
return grad;
}
};
};
RadialAxial.prototype = {

2
test/pdfs/.gitignore vendored

@ -30,3 +30,5 @@ @@ -30,3 +30,5 @@
!zerowidthline.pdf
!issue1002.pdf
!issue925.pdf
!gradientfill.pdf

BIN
test/pdfs/gradientfill.pdf

Binary file not shown.

6
test/test_manifest.json

@ -565,5 +565,11 @@ @@ -565,5 +565,11 @@
"rounds": 1,
"link": true,
"type": "eq"
},
{ "id": "gradientfill",
"file": "pdfs/gradientfill.pdf",
"md5": "cbc1988e4803f647fa83467a85f0e231",
"rounds": 1,
"type": "eq"
}
]

Loading…
Cancel
Save