diff --git a/src/core/pattern.js b/src/core/pattern.js index 21167f477..fe9c36e1e 100644 --- a/src/core/pattern.js +++ b/src/core/pattern.js @@ -143,12 +143,12 @@ Shadings.RadialAxial = (function RadialAxialClosure() { // 10 samples seems good enough for now, but probably won't work // if there are sharp color changes. Ideally, we would implement // the spec faithfully and add lossless optimizations. - var diff = t1 - t0; - var step = diff / 10; + const NUMBER_OF_SAMPLES = 10; + const step = (t1 - t0) / NUMBER_OF_SAMPLES; var colorStops = this.colorStops = []; - // Protect against bad domains so we don't end up in an infinite loop below. + // Protect against bad domains. if (t0 >= t1 || step <= 0) { // Acrobat doesn't seem to handle these cases so we'll ignore for // now. @@ -158,12 +158,12 @@ Shadings.RadialAxial = (function RadialAxialClosure() { var color = new Float32Array(cs.numComps), ratio = new Float32Array(1); var rgbColor; - for (var i = t0; i <= t1; i += step) { - ratio[0] = i; + for (let i = 0; i <= NUMBER_OF_SAMPLES; i++) { + ratio[0] = t0 + i * step; fn(ratio, 0, color, 0); rgbColor = cs.getRgb(color, 0); var cssColor = Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]); - colorStops.push([(i - t0) / diff, cssColor]); + colorStops.push([i / NUMBER_OF_SAMPLES, cssColor]); } var background = 'transparent'; diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 6c76b3302..64a89b069 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -160,6 +160,7 @@ !issue4402_reduced.pdf !issue845r.pdf !issue3405r.pdf +!issue7339_reduced.pdf !issue3438.pdf !issue2074.pdf !scan-bad.pdf diff --git a/test/pdfs/issue7339_reduced.pdf b/test/pdfs/issue7339_reduced.pdf new file mode 100644 index 000000000..1a8f3338e Binary files /dev/null and b/test/pdfs/issue7339_reduced.pdf differ diff --git a/test/test_manifest.json b/test/test_manifest.json index fc3a95c21..2fa1c6195 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -1865,6 +1865,12 @@ "link": true, "type": "load" }, + { "id": "issue7339", + "file": "pdfs/issue7339_reduced.pdf", + "md5": "7092ab6a1acc31db9d1caaa0447334a0", + "rounds": 1, + "type": "eq" + }, { "id": "bug1142033", "file": "pdfs/bug1142033.pdf", "md5": "1d9afd397e89a0f52c056f449ec93daa",