Browse Source

fix bugs with predictors, png predictor type 0 and 5 (ie noop and paeth)

sbarman 14 years ago
parent
commit
c4699a46da
  1. 12
      pdf.js

12
pdf.js

@ -714,7 +714,6 @@ var PredictorStream = (function() {
var columns = this.columns = params.get('Columns') || 1; var columns = this.columns = params.get('Columns') || 1;
this.pixBytes = (colors * bits + 7) >> 3; this.pixBytes = (colors * bits + 7) >> 3;
// add an extra pixByte to represent the pixel left of column 0
this.rowBytes = (columns * colors * bits + 7) >> 3; this.rowBytes = (columns * colors * bits + 7) >> 3;
DecodeStream.call(this); DecodeStream.call(this);
@ -796,10 +795,12 @@ var PredictorStream = (function() {
var currentRow = buffer.subarray(bufferLength, bufferLength + rowBytes); var currentRow = buffer.subarray(bufferLength, bufferLength + rowBytes);
var prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength); var prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength);
if (prevRow.length == 0) if (prevRow.length == 0)
prevRow = currentRow; prevRow = new Uint8Array(rowBytes);
switch (predictor) { switch (predictor) {
case 0: case 0:
for (var i = 0; i < rowBytes; ++i)
currentRow[i] = rawBytes[i];
break; break;
case 1: case 1:
for (var i = 0; i < pixBytes; ++i) for (var i = 0; i < pixBytes; ++i)
@ -822,8 +823,11 @@ var PredictorStream = (function() {
case 4: case 4:
// we need to save the up left pixels values. the simplest way // we need to save the up left pixels values. the simplest way
// is to create a new buffer // is to create a new buffer
for (var i = 0; i < pixBytes; ++i) for (var i = 0; i < pixBytes; ++i) {
currentRow[i] = rawBytes[i]; var up = prevRow[i];
var c = rawBytes[i];
currentRow[i] = up + c;
}
for (; i < rowBytes; ++i) { for (; i < rowBytes; ++i) {
var up = prevRow[i]; var up = prevRow[i];
var upLeft = prevRow[i - pixBytes]; var upLeft = prevRow[i - pixBytes];

Loading…
Cancel
Save