faxstream compiles
This commit is contained in:
parent
bf6f32baa8
commit
8c3f5df3be
252
pdf.js
252
pdf.js
@ -1315,7 +1315,7 @@ var CCITTFaxStream = (function() {
|
||||
|
||||
this.codingLine = new Uint8Array(this.columns + 1);
|
||||
this.codingLine[0] = this.columns;
|
||||
this.a0i = 0;
|
||||
this.codingPos = 0;
|
||||
|
||||
this.refLine = new Uint8Array(this.columns + 2);
|
||||
this.row = 0;
|
||||
@ -1342,52 +1342,60 @@ var CCITTFaxStream = (function() {
|
||||
|
||||
constructor.prototype = Object.create(DecodeStream.prototype);
|
||||
constructor.prototype.readBlock = function() {
|
||||
};
|
||||
constructor.prototype.addPixels(a1, blackPixels) {
|
||||
var codingLine = this.codingLine;
|
||||
var a0i = this.a0i;
|
||||
while (!this.eof) {
|
||||
var c = this.lookChar();
|
||||
this.buf = EOF;
|
||||
if (this.bufferLength <= this.pos)
|
||||
this.ensureBuffer(this.pos + 1);
|
||||
|
||||
if (a1 > codingLine[a0i]) {
|
||||
this.buffer[this.pos++] = c;
|
||||
}
|
||||
};
|
||||
constructor.prototype.addPixels = function(a1, blackPixels) {
|
||||
var codingLine = this.codingLine;
|
||||
var codingPos = this.codingPos;
|
||||
|
||||
if (a1 > codingLine[codingPos]) {
|
||||
if (a1 > this.columns)
|
||||
error("row is wrong length");
|
||||
if (a0i & 1) ^ blackPixels) {
|
||||
++a0i;
|
||||
this.a0i = a0i;
|
||||
if ((codingPos & 1) ^ blackPixels) {
|
||||
++codingPos;
|
||||
this.codingPos = codingPos;
|
||||
}
|
||||
|
||||
codingLine[a0i] = a1;
|
||||
codingLine[codingPos] = a1;
|
||||
}
|
||||
};
|
||||
constructor.prototype.addPixelsNeg(a1, blackPixels) {
|
||||
constructor.prototype.addPixelsNeg = function(a1, blackPixels) {
|
||||
var codingLine = this.codingLine;
|
||||
var a0i = this.a0i;
|
||||
var codingPos = this.codingPos;
|
||||
|
||||
if (a1 > codingLine[a0i]) {
|
||||
if (a1 > codingLine[codingPos]) {
|
||||
if (a1 > this.columns)
|
||||
error("row is wrong length");
|
||||
if (a0i & 1) ^ blackPixels)
|
||||
++a0i;
|
||||
if ((codingPos & 1) ^ blackPixels)
|
||||
++codingPos;
|
||||
|
||||
codingLine[a0i] = a1;
|
||||
} else if (a1 < codingLine[a0i]) {
|
||||
codingLine[codingPos] = a1;
|
||||
} else if (a1 < codingLine[codingPos]) {
|
||||
if (a1 < 0)
|
||||
error("invalid code");
|
||||
while (a0i > 0 && a1 < codingLine[a0i - 1])
|
||||
--a0i;
|
||||
this.codingLine[a0i] = a1;
|
||||
while (codingPos > 0 && a1 < codingLine[codingPos - 1])
|
||||
--codingPos;
|
||||
this.codingLine[codingPos] = a1;
|
||||
}
|
||||
|
||||
this.a0i = a0i;
|
||||
this.codingPos = codingPos;
|
||||
};
|
||||
constructor.prototype.lookChar() {
|
||||
constructor.prototype.lookChar = function() {
|
||||
var refLine = this.refLine;
|
||||
var codingLine = this.codingLine;
|
||||
var columns = this.columns;
|
||||
|
||||
var outputBits = this.outputBits;
|
||||
var a0i = this.a0i;
|
||||
var codingPos = this.codingPos;
|
||||
|
||||
var b1i, blackPixels, bits;
|
||||
var refPos, blackPixels, bits;
|
||||
|
||||
if (this.buf != EOF)
|
||||
return buf;
|
||||
@ -1403,18 +1411,18 @@ var CCITTFaxStream = (function() {
|
||||
refLine[i++] = columns;
|
||||
refLine[i] = columns;
|
||||
codingLine[0] = 0;
|
||||
a0i = 0;
|
||||
bl1 = 0;
|
||||
codingPos = 0;
|
||||
refPos = 0;
|
||||
blackPixels = 0;
|
||||
|
||||
while (codingLine[a0i] < columns) {
|
||||
while (codingLine[codingPos] < columns) {
|
||||
var code1 = this.getTwoDumCode();
|
||||
switch (code1) {
|
||||
case twoDimPass:
|
||||
this.addPixels(refLine[b1i + 1], blackPixels);
|
||||
a0i = this.a0i;
|
||||
if (refLine[bli + 1] < columns)
|
||||
bli += 2;
|
||||
this.addPixels(refLine[refPos + 1], blackPixels);
|
||||
codingPos = this.codingPos;
|
||||
if (refLine[refPos + 1] < columns)
|
||||
refPos += 2;
|
||||
break;
|
||||
case twoDimHoriz:
|
||||
var code1 = 0, code2 = 0;
|
||||
@ -1426,7 +1434,7 @@ var CCITTFaxStream = (function() {
|
||||
do {
|
||||
code2 += (code3 = this.getWhiteCode());
|
||||
} while (code3 >= 64);
|
||||
else {
|
||||
} else {
|
||||
var code3;
|
||||
do {
|
||||
code1 += (code3 = this.getWhiteCode());
|
||||
@ -1435,105 +1443,105 @@ var CCITTFaxStream = (function() {
|
||||
code2 += (code3 = this.getBlackCode());
|
||||
} while (code3 >= 64);
|
||||
}
|
||||
this.addPixels(codingLine[a0i] + code1, blackPixels);
|
||||
a0i = this.a0i;
|
||||
if (codingLine[a0i] < columns) {
|
||||
this.addPixels(codeLine[a0i] + code2,
|
||||
this.addPixels(codingLine[codingPos] + code1, blackPixels);
|
||||
codingPos = this.codingPos;
|
||||
if (codingLine[codingPos] < columns) {
|
||||
this.addPixels(codeLine[codingPos] + code2,
|
||||
blackPixels ^ 1);
|
||||
a0i = this.a0i;
|
||||
codingPos = this.codingPos;
|
||||
}
|
||||
while (refLine[b1i] <= codingLine[a0i]
|
||||
&& refLine[bli] < columns) {
|
||||
bli += 2;
|
||||
while (refLine[refPos] <= codingLine[codingPos]
|
||||
&& refLine[refPos] < columns) {
|
||||
refPos += 2;
|
||||
}
|
||||
break;
|
||||
case twoDimVertR3:
|
||||
this.addPixels(refLine[b1i] + 3, blackPixels);
|
||||
a0i = this.a0i;
|
||||
this.addPixels(refLine[refPos] + 3, blackPixels);
|
||||
codingPos = this.codingPos;
|
||||
blackPixels ^= 1;
|
||||
if (codingLine[a0i] < columns) {
|
||||
++b1i;
|
||||
while (refLine[b1i] <= codingLine[a0i] &&
|
||||
refLine[b1i] < columns)
|
||||
b1i += 2;
|
||||
if (codingLine[codingPos] < columns) {
|
||||
++refPos;
|
||||
while (refLine[refPos] <= codingLine[codingPos] &&
|
||||
refLine[refPos] < columns)
|
||||
refPos += 2;
|
||||
}
|
||||
break;
|
||||
case twoDimVertR2:
|
||||
this.addPixels(refLine[b1i] + 2, blackPixels);
|
||||
a0i = this.a0i;
|
||||
this.addPixels(refLine[refPos] + 2, blackPixels);
|
||||
codingPos = this.codingPos;
|
||||
blackPixels ^= 1;
|
||||
if (codingLine[a01] < columns) {
|
||||
++bli;
|
||||
while (refLine[bli] <= codingLine[a0i] &&
|
||||
refLine[bli] < columns) {
|
||||
bli += 2;
|
||||
if (codingLine[codingPos] < columns) {
|
||||
++refPos;
|
||||
while (refLine[refPos] <= codingLine[codingPos] &&
|
||||
refLine[refPos] < columns) {
|
||||
refPos += 2;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case twoDimVertR1:
|
||||
this.addPixels(refLine[bli] + 1, blackPixels);
|
||||
a0i = this.a0i;
|
||||
this.addPixels(refLine[refPos] + 1, blackPixels);
|
||||
codingPos = this.codingPos;
|
||||
blackPixels ^= 1;
|
||||
if (codingLine[a01] < columns) {
|
||||
++bli;
|
||||
while (refLine[bli] < codingLine[a0i] &&
|
||||
refLine[bli] < columns)
|
||||
this.bli += 2;
|
||||
if (codingLine[codingPos] < columns) {
|
||||
++refPos;
|
||||
while (refLine[refPos] < codingLine[codingPos] &&
|
||||
refLine[refPos] < columns)
|
||||
refPos += 2;
|
||||
}
|
||||
break;
|
||||
case twoDimVert0:
|
||||
this.addPixels(refLine[bli], blackPixels);
|
||||
a0i = this.a0i;
|
||||
this.addPixels(refLine[refPos], blackPixels);
|
||||
codingPos = this.codingPos;
|
||||
blackPixels ^= 1;
|
||||
if (codingLine[a0i] < columns) {
|
||||
++bli;
|
||||
while (refLine[bli] <= codingLine[a0i] &&
|
||||
refLine[bli] < columns)
|
||||
bli += 2;
|
||||
if (codingLine[codingPos] < columns) {
|
||||
++refPos;
|
||||
while (refLine[refPos] <= codingLine[codingPos] &&
|
||||
refLine[refPos] < columns)
|
||||
refPos += 2;
|
||||
}
|
||||
break;
|
||||
case twoDimVertL3:
|
||||
this.addPixelsNeg(refLine[bli] - 3, blackPixels);
|
||||
a0i = this.a0i;
|
||||
this.addPixelsNeg(refLine[refPos] - 3, blackPixels);
|
||||
codingPos = this.codingPos;
|
||||
blackPixels ^= 1;
|
||||
if (codeLine[a0i] < columns) {
|
||||
if (bli > 0)
|
||||
--bli;
|
||||
if (codeLine[codingPos] < columns) {
|
||||
if (refPos > 0)
|
||||
--refPos;
|
||||
else
|
||||
++bli;
|
||||
while (refLine[b1i] <= codingLine[a0i] &&
|
||||
refLine[b1i] < columns)
|
||||
bli += 2;
|
||||
++refPos;
|
||||
while (refLine[refPos] <= codingLine[codingPos] &&
|
||||
refLine[refPos] < columns)
|
||||
refPos += 2;
|
||||
}
|
||||
break;
|
||||
case twoDimVertL2:
|
||||
this.addPixelsNeg(refLine[b1i] - 2, blackPixels);
|
||||
a0i = this.a0i;
|
||||
this.addPixelsNeg(refLine[refPos] - 2, blackPixels);
|
||||
codingPos = this.codingPos;
|
||||
blackPixels ^= 1;
|
||||
if (codingLine[a0i] < columns) {
|
||||
if (b1i > 0)
|
||||
--b1i;
|
||||
if (codingLine[codingPos] < columns) {
|
||||
if (refPos > 0)
|
||||
--refPos;
|
||||
else
|
||||
++bli;
|
||||
while (refLine[b1i] <= codingLine[a0i] &&
|
||||
++refPos;
|
||||
while (refLine[refPos] <= codingLine[codingPos] &&
|
||||
refLine[b11] < columns)
|
||||
b1i += 2;
|
||||
refPos += 2;
|
||||
}
|
||||
break;
|
||||
|
||||
///////// STOPPED HERE
|
||||
case twoDimVertL1:
|
||||
this.addPixelsNeg(refLine[bli] - 1, blackPixels);
|
||||
this.addPixelsNeg(refLine[refPos] - 1, blackPixels);
|
||||
this.blackPixels ^= 1;
|
||||
if (codingLine[a0i] < columns) {
|
||||
if (blu > 0)
|
||||
--bli;
|
||||
if (codingLine[codingPos] < columns) {
|
||||
if (refPos > 0)
|
||||
--refPos;
|
||||
else
|
||||
++bli;
|
||||
++refPos;
|
||||
|
||||
while (refLine[bli] <= codeLine[a0i] &&
|
||||
refLine[bli] < columns)
|
||||
bli += 2;
|
||||
while (refLine[refPos] <= codeLine[codingPos] &&
|
||||
refLine[refPos] < columns)
|
||||
refPos += 2;
|
||||
}
|
||||
break;
|
||||
case EOF:
|
||||
@ -1546,9 +1554,9 @@ var CCITTFaxStream = (function() {
|
||||
}
|
||||
} else {
|
||||
codingLine[0] = 0;
|
||||
a0i = 0;
|
||||
codingPos = 0;
|
||||
blackPixels = 0;
|
||||
while(codeLine[a0i] < columns) {
|
||||
while(codeLine[codingPos] < columns) {
|
||||
code1 = 0;
|
||||
if (blackPixels) {
|
||||
do {
|
||||
@ -1559,7 +1567,7 @@ var CCITTFaxStream = (function() {
|
||||
code1 += (code3 = getWhiteCode());
|
||||
} while (code3 >= 64);
|
||||
}
|
||||
this.addPixels(codingLine[a0i] + code1, blackPixels);
|
||||
this.addPixels(codingLine[codingPos] + code1, blackPixels);
|
||||
blackPixels ^= 1;
|
||||
}
|
||||
}
|
||||
@ -1574,7 +1582,7 @@ var CCITTFaxStream = (function() {
|
||||
code1 = lookBits(12);
|
||||
while (code1 == 0) {
|
||||
eatBits(1);
|
||||
code1 = lookBits(12);
|
||||
code1 = this.lookBits(12);
|
||||
}
|
||||
if (code1 = 1) {
|
||||
eatBits(12);
|
||||
@ -1585,27 +1593,27 @@ var CCITTFaxStream = (function() {
|
||||
}
|
||||
|
||||
if (!oef && encoding > 0) {
|
||||
nextLine2D = !lookBits(1);
|
||||
nextLine2D = !this.lookBits(1);
|
||||
eatBits(1);
|
||||
}
|
||||
|
||||
if (eob && gotEol) {
|
||||
code1 = lookBits(12);
|
||||
code1 = this.lookBits(12);
|
||||
if (code1 == 1) {
|
||||
eatBits(12);
|
||||
if (encoding > 0) {
|
||||
lookBits(1);
|
||||
eatBits(1);
|
||||
this.lookBits(1);
|
||||
this.eatBits(1);
|
||||
}
|
||||
if (encoding >= 0) {
|
||||
for (i = 0; i < 4; ++i) {
|
||||
code1 = lookBits(12);
|
||||
code1 = this.lookBits(12);
|
||||
if (code1 != 1)
|
||||
error("bad rtc code");
|
||||
eatBits(12);
|
||||
if (encoding > 0) {
|
||||
lookBits(1);
|
||||
eatBits(1);
|
||||
this.lookBits(1);
|
||||
this.eatBits(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1614,18 +1622,18 @@ var CCITTFaxStream = (function() {
|
||||
}
|
||||
|
||||
if (codingLine[0] > 0)
|
||||
outputBits = codingLine[a0i = 0];
|
||||
outputBits = codingLine[codingPos = 0];
|
||||
else
|
||||
outputBits = codingLine[a0i = 1];
|
||||
outputBits = codingLine[codingPos = 1];
|
||||
++row;
|
||||
}
|
||||
|
||||
if (outputBits >= 8) {
|
||||
buf = (a0i & 1) ? 0 : 0xFF;
|
||||
buf = (codingPos & 1) ? 0 : 0xFF;
|
||||
outputBits -= 8;
|
||||
if (outputBits == 0&& codingLine[a0i] < columns) {
|
||||
++a0i;
|
||||
outputBits = codingLine[a0i] - codingLine[a0i - 1];
|
||||
if (outputBits == 0&& codingLine[codingPos] < columns) {
|
||||
++codingPos;
|
||||
outputBits = codingLine[codingPos] - codingLine[codingPos - 1];
|
||||
}
|
||||
} else {
|
||||
bits = 8;
|
||||
@ -1633,21 +1641,21 @@ var CCITTFaxStream = (function() {
|
||||
do {
|
||||
if (outputBits > bits) {
|
||||
buf << bits;
|
||||
if (!(a0i & 1)) {
|
||||
if (!(codingPos & 1)) {
|
||||
buf |= 0xFF >> (8 - bits);
|
||||
}
|
||||
outputBits -= bits;
|
||||
bits = 0;
|
||||
} else {
|
||||
buf <<= outputBits;
|
||||
if (!(a0i & 1)) {
|
||||
if (!(codingPos & 1)) {
|
||||
buf |= 0xFF >> (8 - outputBits);
|
||||
}
|
||||
bits -= outputBits;
|
||||
outputBits = 0;
|
||||
if (codingLine[a0i] < columns) {
|
||||
++a0i;
|
||||
outputBits = codingLine[a0i] - codingLine[a0i - 1];
|
||||
if (codingLine[codingPos] < columns) {
|
||||
++codingPos;
|
||||
outputBits = codingLine[codingPos] - codingLine[codingPos - 1];
|
||||
} else if (bits > 0) {
|
||||
buf <<= bits;
|
||||
bits = 0;
|
||||
@ -1659,8 +1667,8 @@ var CCITTFaxStream = (function() {
|
||||
buf ^= 0xFF;
|
||||
}
|
||||
return buf;
|
||||
}
|
||||
constructor.prototype.getTwoDimCode() {
|
||||
};
|
||||
constructor.prototype.getTwoDimCode = function() {
|
||||
var code = 0;
|
||||
var p;
|
||||
if (this.eoblock) {
|
||||
@ -1686,7 +1694,7 @@ var CCITTFaxStream = (function() {
|
||||
error("Bad two dim code");
|
||||
};
|
||||
|
||||
constructor.prototype.getWhiteCode() {
|
||||
constructor.prototype.getWhiteCode = function() {
|
||||
var code = 0;
|
||||
var p;
|
||||
var n;
|
||||
@ -1726,14 +1734,14 @@ var CCITTFaxStream = (function() {
|
||||
code <<= 12 - n;
|
||||
p = whiteTable1[code];
|
||||
if (p[0] == n) {
|
||||
eatBits(n);
|
||||
this.eatBits(n);
|
||||
return p[1];
|
||||
}
|
||||
}
|
||||
}
|
||||
error("bad white code");
|
||||
};
|
||||
constructor.prototype.getBlackCode() {
|
||||
constructor.prototype.getBlackCode = function() {
|
||||
var code, p, n;
|
||||
if (this.eoblock) {
|
||||
code = this.lookBits(13);
|
||||
@ -1793,7 +1801,7 @@ var CCITTFaxStream = (function() {
|
||||
}
|
||||
error("bad black code");
|
||||
};
|
||||
constructor.prototype.lookBits(n) {
|
||||
constructor.prototype.lookBits = function(n) {
|
||||
var c;
|
||||
while (inputBits < n) {
|
||||
if (typeof (c = str.getByte()) == "undefined") {
|
||||
@ -1806,7 +1814,7 @@ var CCITTFaxStream = (function() {
|
||||
}
|
||||
return (inputBuf >> (inputBits - n)) & (0xFFFF >> (16 - n));
|
||||
};
|
||||
constructor.prototype.eatBits(n) {
|
||||
constructor.prototype.eatBits = function(n) {
|
||||
if ((inputBits -= n) < 0)
|
||||
inputBits = 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user