Merge pull request #498 from kkujala/master
Align switch cases properly.
This commit is contained in:
commit
a0c58a5b73
726
pdf.js
726
pdf.js
@ -799,59 +799,58 @@ var PredictorStream = (function() {
|
|||||||
prevRow = currentRow;
|
prevRow = currentRow;
|
||||||
|
|
||||||
switch (predictor) {
|
switch (predictor) {
|
||||||
case 0:
|
case 0:
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
for (var i = 0; i < pixBytes; ++i)
|
for (var i = 0; i < pixBytes; ++i)
|
||||||
currentRow[i] = rawBytes[i];
|
currentRow[i] = rawBytes[i];
|
||||||
for (; i < rowBytes; ++i)
|
for (; i < rowBytes; ++i)
|
||||||
currentRow[i] = (currentRow[i - pixBytes] + rawBytes[i]) & 0xFF;
|
currentRow[i] = (currentRow[i - pixBytes] + rawBytes[i]) & 0xFF;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
for (var i = 0; i < rowBytes; ++i)
|
for (var i = 0; i < rowBytes; ++i)
|
||||||
currentRow[i] = (prevRow[i] + rawBytes[i]) & 0xFF;
|
currentRow[i] = (prevRow[i] + rawBytes[i]) & 0xFF;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
for (var i = 0; i < pixBytes; ++i)
|
for (var i = 0; i < pixBytes; ++i)
|
||||||
currentRow[i] = (prevRow[i] >> 1) + rawBytes[i];
|
currentRow[i] = (prevRow[i] >> 1) + rawBytes[i];
|
||||||
for (; i < rowBytes; ++i) {
|
for (; i < rowBytes; ++i) {
|
||||||
currentRow[i] = (((prevRow[i] + currentRow[i - pixBytes]) >> 1) +
|
currentRow[i] = (((prevRow[i] + currentRow[i - pixBytes]) >> 1) +
|
||||||
rawBytes[i]) & 0xFF;
|
rawBytes[i]) & 0xFF;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
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];
|
currentRow[i] = rawBytes[i];
|
||||||
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];
|
||||||
var left = currentRow[i - pixBytes];
|
var left = currentRow[i - pixBytes];
|
||||||
var p = left + up - upLeft;
|
var p = left + up - upLeft;
|
||||||
|
|
||||||
var pa = p - left;
|
var pa = p - left;
|
||||||
if (pa < 0)
|
if (pa < 0)
|
||||||
pa = -pa;
|
pa = -pa;
|
||||||
var pb = p - up;
|
var pb = p - up;
|
||||||
if (pb < 0)
|
if (pb < 0)
|
||||||
pb = -pb;
|
pb = -pb;
|
||||||
var pc = p - upLeft;
|
var pc = p - upLeft;
|
||||||
if (pc < 0)
|
if (pc < 0)
|
||||||
pc = -pc;
|
pc = -pc;
|
||||||
|
|
||||||
var c = rawBytes[i];
|
var c = rawBytes[i];
|
||||||
if (pa <= pb && pa <= pc)
|
if (pa <= pb && pa <= pc)
|
||||||
currentRow[i] = left + c;
|
currentRow[i] = left + c;
|
||||||
else if (pb <= pc)
|
else if (pb <= pc)
|
||||||
currentRow[i] = up + c;
|
currentRow[i] = up + c;
|
||||||
else
|
else
|
||||||
currentRow[i] = upLeft + c;
|
currentRow[i] = upLeft + c;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
error('Unsupported predictor: ' + predictor);
|
error('Unsupported predictor: ' + predictor);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
this.bufferLength += rowBytes;
|
this.bufferLength += rowBytes;
|
||||||
};
|
};
|
||||||
@ -1695,129 +1694,128 @@ var CCITTFaxStream = (function() {
|
|||||||
while (codingLine[this.codingPos] < columns) {
|
while (codingLine[this.codingPos] < columns) {
|
||||||
code1 = this.getTwoDimCode();
|
code1 = this.getTwoDimCode();
|
||||||
switch (code1) {
|
switch (code1) {
|
||||||
case twoDimPass:
|
case twoDimPass:
|
||||||
this.addPixels(refLine[refPos + 1], blackPixels);
|
this.addPixels(refLine[refPos + 1], blackPixels);
|
||||||
if (refLine[refPos + 1] < columns)
|
if (refLine[refPos + 1] < columns)
|
||||||
refPos += 2;
|
|
||||||
break;
|
|
||||||
case twoDimHoriz:
|
|
||||||
code1 = code2 = 0;
|
|
||||||
if (blackPixels) {
|
|
||||||
do {
|
|
||||||
code1 += (code3 = this.getBlackCode());
|
|
||||||
} while (code3 >= 64);
|
|
||||||
do {
|
|
||||||
code2 += (code3 = this.getWhiteCode());
|
|
||||||
} while (code3 >= 64);
|
|
||||||
} else {
|
|
||||||
do {
|
|
||||||
code1 += (code3 = this.getWhiteCode());
|
|
||||||
} while (code3 >= 64);
|
|
||||||
do {
|
|
||||||
code2 += (code3 = this.getBlackCode());
|
|
||||||
} while (code3 >= 64);
|
|
||||||
}
|
|
||||||
this.addPixels(codingLine[this.codingPos] +
|
|
||||||
code1, blackPixels);
|
|
||||||
if (codingLine[this.codingPos] < columns) {
|
|
||||||
this.addPixels(codingLine[this.codingPos] + code2,
|
|
||||||
blackPixels ^ 1);
|
|
||||||
}
|
|
||||||
while (refLine[refPos] <= codingLine[this.codingPos] &&
|
|
||||||
refLine[refPos] < columns) {
|
|
||||||
refPos += 2;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case twoDimVertR3:
|
|
||||||
this.addPixels(refLine[refPos] + 3, blackPixels);
|
|
||||||
blackPixels ^= 1;
|
|
||||||
if (codingLine[this.codingPos] < columns) {
|
|
||||||
++refPos;
|
|
||||||
while (refLine[refPos] <= codingLine[this.codingPos] &&
|
|
||||||
refLine[refPos] < columns)
|
|
||||||
refPos += 2;
|
refPos += 2;
|
||||||
}
|
break;
|
||||||
break;
|
case twoDimHoriz:
|
||||||
case twoDimVertR2:
|
code1 = code2 = 0;
|
||||||
this.addPixels(refLine[refPos] + 2, blackPixels);
|
if (blackPixels) {
|
||||||
blackPixels ^= 1;
|
do {
|
||||||
if (codingLine[this.codingPos] < columns) {
|
code1 += (code3 = this.getBlackCode());
|
||||||
++refPos;
|
} while (code3 >= 64);
|
||||||
|
do {
|
||||||
|
code2 += (code3 = this.getWhiteCode());
|
||||||
|
} while (code3 >= 64);
|
||||||
|
} else {
|
||||||
|
do {
|
||||||
|
code1 += (code3 = this.getWhiteCode());
|
||||||
|
} while (code3 >= 64);
|
||||||
|
do {
|
||||||
|
code2 += (code3 = this.getBlackCode());
|
||||||
|
} while (code3 >= 64);
|
||||||
|
}
|
||||||
|
this.addPixels(codingLine[this.codingPos] +
|
||||||
|
code1, blackPixels);
|
||||||
|
if (codingLine[this.codingPos] < columns) {
|
||||||
|
this.addPixels(codingLine[this.codingPos] + code2,
|
||||||
|
blackPixels ^ 1);
|
||||||
|
}
|
||||||
while (refLine[refPos] <= codingLine[this.codingPos] &&
|
while (refLine[refPos] <= codingLine[this.codingPos] &&
|
||||||
refLine[refPos] < columns) {
|
refLine[refPos] < columns) {
|
||||||
refPos += 2;
|
refPos += 2;
|
||||||
}
|
}
|
||||||
}
|
break;
|
||||||
break;
|
case twoDimVertR3:
|
||||||
case twoDimVertR1:
|
this.addPixels(refLine[refPos] + 3, blackPixels);
|
||||||
this.addPixels(refLine[refPos] + 1, blackPixels);
|
blackPixels ^= 1;
|
||||||
blackPixels ^= 1;
|
if (codingLine[this.codingPos] < columns) {
|
||||||
if (codingLine[this.codingPos] < columns) {
|
|
||||||
++refPos;
|
|
||||||
while (refLine[refPos] <= codingLine[this.codingPos] &&
|
|
||||||
refLine[refPos] < columns)
|
|
||||||
refPos += 2;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case twoDimVert0:
|
|
||||||
this.addPixels(refLine[refPos], blackPixels);
|
|
||||||
blackPixels ^= 1;
|
|
||||||
if (codingLine[this.codingPos] < columns) {
|
|
||||||
++refPos;
|
|
||||||
while (refLine[refPos] <= codingLine[this.codingPos] &&
|
|
||||||
refLine[refPos] < columns)
|
|
||||||
refPos += 2;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case twoDimVertL3:
|
|
||||||
this.addPixelsNeg(refLine[refPos] - 3, blackPixels);
|
|
||||||
blackPixels ^= 1;
|
|
||||||
if (codingLine[this.codingPos] < columns) {
|
|
||||||
if (refPos > 0)
|
|
||||||
--refPos;
|
|
||||||
else
|
|
||||||
++refPos;
|
++refPos;
|
||||||
while (refLine[refPos] <= codingLine[this.codingPos] &&
|
while (refLine[refPos] <= codingLine[this.codingPos] &&
|
||||||
refLine[refPos] < columns)
|
refLine[refPos] < columns)
|
||||||
refPos += 2;
|
refPos += 2;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case twoDimVertL2:
|
case twoDimVertR2:
|
||||||
this.addPixelsNeg(refLine[refPos] - 2, blackPixels);
|
this.addPixels(refLine[refPos] + 2, blackPixels);
|
||||||
blackPixels ^= 1;
|
blackPixels ^= 1;
|
||||||
if (codingLine[this.codingPos] < columns) {
|
if (codingLine[this.codingPos] < columns) {
|
||||||
if (refPos > 0)
|
|
||||||
--refPos;
|
|
||||||
else
|
|
||||||
++refPos;
|
++refPos;
|
||||||
while (refLine[refPos] <= codingLine[this.codingPos] &&
|
while (refLine[refPos] <= codingLine[this.codingPos] &&
|
||||||
refLine[refPos] < columns)
|
refLine[refPos] < columns) {
|
||||||
refPos += 2;
|
refPos += 2;
|
||||||
}
|
}
|
||||||
break;
|
}
|
||||||
case twoDimVertL1:
|
break;
|
||||||
this.addPixelsNeg(refLine[refPos] - 1, blackPixels);
|
case twoDimVertR1:
|
||||||
blackPixels ^= 1;
|
this.addPixels(refLine[refPos] + 1, blackPixels);
|
||||||
if (codingLine[this.codingPos] < columns) {
|
blackPixels ^= 1;
|
||||||
if (refPos > 0)
|
if (codingLine[this.codingPos] < columns) {
|
||||||
--refPos;
|
|
||||||
else
|
|
||||||
++refPos;
|
++refPos;
|
||||||
|
while (refLine[refPos] <= codingLine[this.codingPos] &&
|
||||||
|
refLine[refPos] < columns)
|
||||||
|
refPos += 2;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case twoDimVert0:
|
||||||
|
this.addPixels(refLine[refPos], blackPixels);
|
||||||
|
blackPixels ^= 1;
|
||||||
|
if (codingLine[this.codingPos] < columns) {
|
||||||
|
++refPos;
|
||||||
|
while (refLine[refPos] <= codingLine[this.codingPos] &&
|
||||||
|
refLine[refPos] < columns)
|
||||||
|
refPos += 2;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case twoDimVertL3:
|
||||||
|
this.addPixelsNeg(refLine[refPos] - 3, blackPixels);
|
||||||
|
blackPixels ^= 1;
|
||||||
|
if (codingLine[this.codingPos] < columns) {
|
||||||
|
if (refPos > 0)
|
||||||
|
--refPos;
|
||||||
|
else
|
||||||
|
++refPos;
|
||||||
|
while (refLine[refPos] <= codingLine[this.codingPos] &&
|
||||||
|
refLine[refPos] < columns)
|
||||||
|
refPos += 2;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case twoDimVertL2:
|
||||||
|
this.addPixelsNeg(refLine[refPos] - 2, blackPixels);
|
||||||
|
blackPixels ^= 1;
|
||||||
|
if (codingLine[this.codingPos] < columns) {
|
||||||
|
if (refPos > 0)
|
||||||
|
--refPos;
|
||||||
|
else
|
||||||
|
++refPos;
|
||||||
|
while (refLine[refPos] <= codingLine[this.codingPos] &&
|
||||||
|
refLine[refPos] < columns)
|
||||||
|
refPos += 2;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case twoDimVertL1:
|
||||||
|
this.addPixelsNeg(refLine[refPos] - 1, blackPixels);
|
||||||
|
blackPixels ^= 1;
|
||||||
|
if (codingLine[this.codingPos] < columns) {
|
||||||
|
if (refPos > 0)
|
||||||
|
--refPos;
|
||||||
|
else
|
||||||
|
++refPos;
|
||||||
|
|
||||||
while (refLine[refPos] <= codingLine[this.codingPos] &&
|
while (refLine[refPos] <= codingLine[this.codingPos] &&
|
||||||
refLine[refPos] < columns)
|
refLine[refPos] < columns)
|
||||||
refPos += 2;
|
refPos += 2;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case EOF:
|
case EOF:
|
||||||
this.addPixels(columns, 0);
|
this.addPixels(columns, 0);
|
||||||
this.eof = true;
|
this.eof = true;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
warn('bad 2d code');
|
warn('bad 2d code');
|
||||||
this.addPixels(columns, 0);
|
this.addPixels(columns, 0);
|
||||||
this.err = true;
|
this.err = true;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -2488,79 +2486,77 @@ var Lexer = (function() {
|
|||||||
do {
|
do {
|
||||||
ch = stream.getChar();
|
ch = stream.getChar();
|
||||||
switch (ch) {
|
switch (ch) {
|
||||||
case undefined:
|
|
||||||
warn('Unterminated string');
|
|
||||||
done = true;
|
|
||||||
break;
|
|
||||||
case '(':
|
|
||||||
++numParen;
|
|
||||||
str += ch;
|
|
||||||
break;
|
|
||||||
case ')':
|
|
||||||
if (--numParen == 0) {
|
|
||||||
done = true;
|
|
||||||
} else {
|
|
||||||
str += ch;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case '\\':
|
|
||||||
ch = stream.getChar();
|
|
||||||
switch (ch) {
|
|
||||||
case undefined:
|
case undefined:
|
||||||
warn('Unterminated string');
|
warn('Unterminated string');
|
||||||
done = true;
|
done = true;
|
||||||
break;
|
break;
|
||||||
case 'n':
|
|
||||||
str += '\n';
|
|
||||||
break;
|
|
||||||
case 'r':
|
|
||||||
str += '\r';
|
|
||||||
break;
|
|
||||||
case 't':
|
|
||||||
str += '\t';
|
|
||||||
break;
|
|
||||||
case 'b':
|
|
||||||
str += '\b';
|
|
||||||
break;
|
|
||||||
case 'f':
|
|
||||||
str += '\f';
|
|
||||||
break;
|
|
||||||
case '\\':
|
|
||||||
case '(':
|
case '(':
|
||||||
case ')':
|
++numParen;
|
||||||
str += ch;
|
str += ch;
|
||||||
break;
|
break;
|
||||||
case '0': case '1': case '2': case '3':
|
case ')':
|
||||||
case '4': case '5': case '6': case '7':
|
if (--numParen == 0) {
|
||||||
var x = ch - '0';
|
done = true;
|
||||||
ch = stream.lookChar();
|
} else {
|
||||||
if (ch >= '0' && ch <= '7') {
|
str += ch;
|
||||||
stream.skip();
|
|
||||||
x = (x << 3) + (ch - '0');
|
|
||||||
ch = stream.lookChar();
|
|
||||||
if (ch >= '0' && ch <= '7') {
|
|
||||||
stream.skip();
|
|
||||||
x = (x << 3) + (ch - '0');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
case '\\':
|
||||||
|
ch = stream.getChar();
|
||||||
|
switch (ch) {
|
||||||
|
case undefined:
|
||||||
|
warn('Unterminated string');
|
||||||
|
done = true;
|
||||||
|
break;
|
||||||
|
case 'n':
|
||||||
|
str += '\n';
|
||||||
|
break;
|
||||||
|
case 'r':
|
||||||
|
str += '\r';
|
||||||
|
break;
|
||||||
|
case 't':
|
||||||
|
str += '\t';
|
||||||
|
break;
|
||||||
|
case 'b':
|
||||||
|
str += '\b';
|
||||||
|
break;
|
||||||
|
case 'f':
|
||||||
|
str += '\f';
|
||||||
|
break;
|
||||||
|
case '\\':
|
||||||
|
case '(':
|
||||||
|
case ')':
|
||||||
|
str += ch;
|
||||||
|
break;
|
||||||
|
case '0': case '1': case '2': case '3':
|
||||||
|
case '4': case '5': case '6': case '7':
|
||||||
|
var x = ch - '0';
|
||||||
|
ch = stream.lookChar();
|
||||||
|
if (ch >= '0' && ch <= '7') {
|
||||||
|
stream.skip();
|
||||||
|
x = (x << 3) + (ch - '0');
|
||||||
|
ch = stream.lookChar();
|
||||||
|
if (ch >= '0' && ch <= '7') {
|
||||||
|
stream.skip();
|
||||||
|
x = (x << 3) + (ch - '0');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
str += String.fromCharCode(x);
|
str += String.fromCharCode(x);
|
||||||
break;
|
break;
|
||||||
case '\r':
|
case '\r':
|
||||||
ch = stream.lookChar();
|
ch = stream.lookChar();
|
||||||
if (ch == '\n')
|
if (ch == '\n')
|
||||||
stream.skip();
|
stream.skip();
|
||||||
break;
|
break;
|
||||||
case '\n':
|
case '\n':
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
str += ch;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
str += ch;
|
str += ch;
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
str += ch;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
} while (!done);
|
} while (!done);
|
||||||
return str;
|
return str;
|
||||||
@ -2641,41 +2637,41 @@ var Lexer = (function() {
|
|||||||
|
|
||||||
// start reading token
|
// start reading token
|
||||||
switch (ch) {
|
switch (ch) {
|
||||||
case '0': case '1': case '2': case '3': case '4':
|
case '0': case '1': case '2': case '3': case '4':
|
||||||
case '5': case '6': case '7': case '8': case '9':
|
case '5': case '6': case '7': case '8': case '9':
|
||||||
case '+': case '-': case '.':
|
case '+': case '-': case '.':
|
||||||
return this.getNumber(ch);
|
return this.getNumber(ch);
|
||||||
case '(':
|
case '(':
|
||||||
return this.getString();
|
return this.getString();
|
||||||
case '/':
|
case '/':
|
||||||
return this.getName(ch);
|
return this.getName(ch);
|
||||||
// array punctuation
|
// array punctuation
|
||||||
case '[':
|
case '[':
|
||||||
case ']':
|
case ']':
|
||||||
return new Cmd(ch);
|
return new Cmd(ch);
|
||||||
// hex string or dict punctuation
|
// hex string or dict punctuation
|
||||||
case '<':
|
case '<':
|
||||||
ch = stream.lookChar();
|
ch = stream.lookChar();
|
||||||
if (ch == '<') {
|
if (ch == '<') {
|
||||||
|
// dict punctuation
|
||||||
|
stream.skip();
|
||||||
|
return new Cmd('<<');
|
||||||
|
}
|
||||||
|
return this.getHexString(ch);
|
||||||
// dict punctuation
|
// dict punctuation
|
||||||
stream.skip();
|
case '>':
|
||||||
return new Cmd('<<');
|
ch = stream.lookChar();
|
||||||
}
|
if (ch == '>') {
|
||||||
return this.getHexString(ch);
|
stream.skip();
|
||||||
// dict punctuation
|
return new Cmd('>>');
|
||||||
case '>':
|
}
|
||||||
ch = stream.lookChar();
|
case '{':
|
||||||
if (ch == '>') {
|
case '}':
|
||||||
stream.skip();
|
return new Cmd(ch);
|
||||||
return new Cmd('>>');
|
// fall through
|
||||||
}
|
case ')':
|
||||||
case '{':
|
error('Illegal character: ' + ch);
|
||||||
case '}':
|
return Error;
|
||||||
return new Cmd(ch);
|
|
||||||
// fall through
|
|
||||||
case ')':
|
|
||||||
error('Illegal character: ' + ch);
|
|
||||||
return Error;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// command
|
// command
|
||||||
@ -3139,17 +3135,16 @@ var XRef = (function() {
|
|||||||
entry.offset = offset;
|
entry.offset = offset;
|
||||||
entry.gen = generation;
|
entry.gen = generation;
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 0:
|
case 0:
|
||||||
entry.free = true;
|
entry.free = true;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
entry.uncompressed = true;
|
entry.uncompressed = true;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
error('Invalid XRef entry type: ' + type);
|
error('Invalid XRef entry type: ' + type);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
if (!this.entries[first + i])
|
if (!this.entries[first + i])
|
||||||
this.entries[first + i] = entry;
|
this.entries[first + i] = entry;
|
||||||
@ -3483,7 +3478,6 @@ var Page = (function() {
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
TODO('other link types');
|
TODO('other link types');
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
} else if (annotation.has('Dest')) {
|
} else if (annotation.has('Dest')) {
|
||||||
// simple destination link
|
// simple destination link
|
||||||
@ -3713,7 +3707,9 @@ var PDFDoc = (function() {
|
|||||||
if (find(stream, 'startxref', 1024, true)) {
|
if (find(stream, 'startxref', 1024, true)) {
|
||||||
stream.skip(9);
|
stream.skip(9);
|
||||||
var ch;
|
var ch;
|
||||||
while (Lexer.isSpace(ch = stream.getChar())) {}
|
do {
|
||||||
|
ch = stream.getChar();
|
||||||
|
} while (Lexer.isSpace(ch));
|
||||||
var str = '';
|
var str = '';
|
||||||
while ((ch - '0') <= 9) {
|
while ((ch - '0') <= 9) {
|
||||||
str += ch;
|
str += ch;
|
||||||
@ -4353,8 +4349,7 @@ var PartialEvaluator = (function() {
|
|||||||
baseEncoding = Encodings.StandardEncoding.slice();
|
baseEncoding = Encodings.StandardEncoding.slice();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
warn('Unknown type of font: ' + type);
|
warn('Unknown type of font: ' + type);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4455,7 +4450,6 @@ var PartialEvaluator = (function() {
|
|||||||
token = parseInt(token, 10); // a number
|
token = parseInt(token, 10); // a number
|
||||||
tokens.push(token);
|
tokens.push(token);
|
||||||
token = '';
|
token = '';
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
switch (byte) {
|
switch (byte) {
|
||||||
case 0x5B:
|
case 0x5B:
|
||||||
@ -4466,9 +4460,9 @@ var PartialEvaluator = (function() {
|
|||||||
// collect array items
|
// collect array items
|
||||||
var items = [], item;
|
var items = [], item;
|
||||||
while (tokens.length &&
|
while (tokens.length &&
|
||||||
(item = tokens.pop()) != beginArrayToken)
|
(item = tokens.pop()) != beginArrayToken)
|
||||||
items.unshift(item);
|
items.unshift(item);
|
||||||
tokens.push(items);
|
tokens.push(items);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else if (byte == 0x3E) {
|
} else if (byte == 0x3E) {
|
||||||
@ -5405,67 +5399,67 @@ var ColorSpace = (function() {
|
|||||||
this.mode = mode;
|
this.mode = mode;
|
||||||
|
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
case 'DeviceGray':
|
case 'DeviceGray':
|
||||||
case 'G':
|
case 'G':
|
||||||
return new DeviceGrayCS();
|
return new DeviceGrayCS();
|
||||||
case 'DeviceRGB':
|
case 'DeviceRGB':
|
||||||
case 'RGB':
|
case 'RGB':
|
||||||
return new DeviceRgbCS();
|
return new DeviceRgbCS();
|
||||||
case 'DeviceCMYK':
|
case 'DeviceCMYK':
|
||||||
case 'CMYK':
|
case 'CMYK':
|
||||||
return new DeviceCmykCS();
|
return new DeviceCmykCS();
|
||||||
case 'Pattern':
|
case 'Pattern':
|
||||||
return new PatternCS(null);
|
return new PatternCS(null);
|
||||||
default:
|
default:
|
||||||
error('unrecognized colorspace ' + mode);
|
error('unrecognized colorspace ' + mode);
|
||||||
}
|
}
|
||||||
} else if (IsArray(cs)) {
|
} else if (IsArray(cs)) {
|
||||||
var mode = cs[0].name;
|
var mode = cs[0].name;
|
||||||
this.mode = mode;
|
this.mode = mode;
|
||||||
|
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
case 'DeviceGray':
|
case 'DeviceGray':
|
||||||
case 'G':
|
case 'G':
|
||||||
return new DeviceGrayCS();
|
|
||||||
case 'DeviceRGB':
|
|
||||||
case 'RGB':
|
|
||||||
return new DeviceRgbCS();
|
|
||||||
case 'DeviceCMYK':
|
|
||||||
case 'CMYK':
|
|
||||||
return new DeviceCmykCS();
|
|
||||||
case 'CalGray':
|
|
||||||
return new DeviceGrayCS();
|
|
||||||
case 'CalRGB':
|
|
||||||
return new DeviceRgbCS();
|
|
||||||
case 'ICCBased':
|
|
||||||
var stream = xref.fetchIfRef(cs[1]);
|
|
||||||
var dict = stream.dict;
|
|
||||||
var numComps = dict.get('N');
|
|
||||||
if (numComps == 1)
|
|
||||||
return new DeviceGrayCS();
|
return new DeviceGrayCS();
|
||||||
if (numComps == 3)
|
case 'DeviceRGB':
|
||||||
|
case 'RGB':
|
||||||
return new DeviceRgbCS();
|
return new DeviceRgbCS();
|
||||||
if (numComps == 4)
|
case 'DeviceCMYK':
|
||||||
|
case 'CMYK':
|
||||||
return new DeviceCmykCS();
|
return new DeviceCmykCS();
|
||||||
break;
|
case 'CalGray':
|
||||||
case 'Pattern':
|
return new DeviceGrayCS();
|
||||||
var baseCS = cs[1];
|
case 'CalRGB':
|
||||||
if (baseCS)
|
return new DeviceRgbCS();
|
||||||
baseCS = ColorSpace.parse(baseCS, xref, res);
|
case 'ICCBased':
|
||||||
return new PatternCS(baseCS);
|
var stream = xref.fetchIfRef(cs[1]);
|
||||||
case 'Indexed':
|
var dict = stream.dict;
|
||||||
var base = ColorSpace.parse(cs[1], xref, res);
|
var numComps = dict.get('N');
|
||||||
var hiVal = cs[2] + 1;
|
if (numComps == 1)
|
||||||
var lookup = xref.fetchIfRef(cs[3]);
|
return new DeviceGrayCS();
|
||||||
return new IndexedCS(base, hiVal, lookup);
|
if (numComps == 3)
|
||||||
case 'Separation':
|
return new DeviceRgbCS();
|
||||||
var alt = ColorSpace.parse(cs[2], xref, res);
|
if (numComps == 4)
|
||||||
var tintFn = new PDFFunction(xref, xref.fetchIfRef(cs[3]));
|
return new DeviceCmykCS();
|
||||||
return new SeparationCS(alt, tintFn);
|
break;
|
||||||
case 'Lab':
|
case 'Pattern':
|
||||||
case 'DeviceN':
|
var baseCS = cs[1];
|
||||||
default:
|
if (baseCS)
|
||||||
error('unimplemented color space object "' + mode + '"');
|
baseCS = ColorSpace.parse(baseCS, xref, res);
|
||||||
|
return new PatternCS(baseCS);
|
||||||
|
case 'Indexed':
|
||||||
|
var base = ColorSpace.parse(cs[1], xref, res);
|
||||||
|
var hiVal = cs[2] + 1;
|
||||||
|
var lookup = xref.fetchIfRef(cs[3]);
|
||||||
|
return new IndexedCS(base, hiVal, lookup);
|
||||||
|
case 'Separation':
|
||||||
|
var alt = ColorSpace.parse(cs[2], xref, res);
|
||||||
|
var tintFn = new PDFFunction(xref, xref.fetchIfRef(cs[3]));
|
||||||
|
return new SeparationCS(alt, tintFn);
|
||||||
|
case 'Lab':
|
||||||
|
case 'DeviceN':
|
||||||
|
default:
|
||||||
|
error('unimplemented color space object "' + mode + '"');
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
error('unrecognized color space object: "' + cs + '"');
|
error('unrecognized color space object: "' + cs + '"');
|
||||||
@ -5748,26 +5742,26 @@ var Pattern = (function() {
|
|||||||
var typeNum = dict.get('PatternType');
|
var typeNum = dict.get('PatternType');
|
||||||
|
|
||||||
switch (typeNum) {
|
switch (typeNum) {
|
||||||
case 1:
|
case 1:
|
||||||
var base = cs.base;
|
var base = cs.base;
|
||||||
var color;
|
var color;
|
||||||
if (base) {
|
if (base) {
|
||||||
var baseComps = base.numComps;
|
var baseComps = base.numComps;
|
||||||
|
|
||||||
color = [];
|
color = [];
|
||||||
for (var i = 0; i < baseComps; ++i)
|
for (var i = 0; i < baseComps; ++i)
|
||||||
color.push(args[i]);
|
color.push(args[i]);
|
||||||
|
|
||||||
color = base.getRgb(color);
|
color = base.getRgb(color);
|
||||||
}
|
}
|
||||||
var code = patternName.code;
|
var code = patternName.code;
|
||||||
return new TilingPattern(pattern, code, dict, color, xref, ctx);
|
return new TilingPattern(pattern, code, dict, color, xref, ctx);
|
||||||
case 2:
|
case 2:
|
||||||
var shading = xref.fetchIfRef(dict.get('Shading'));
|
var shading = xref.fetchIfRef(dict.get('Shading'));
|
||||||
var matrix = dict.get('Matrix');
|
var matrix = dict.get('Matrix');
|
||||||
return Pattern.parseShading(shading, matrix, xref, res, ctx);
|
return Pattern.parseShading(shading, matrix, xref, res, ctx);
|
||||||
default:
|
default:
|
||||||
error('Unknown type of pattern: ' + typeNum);
|
error('Unknown type of pattern: ' + typeNum);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
};
|
};
|
||||||
@ -5779,12 +5773,12 @@ var Pattern = (function() {
|
|||||||
var type = dict.get('ShadingType');
|
var type = dict.get('ShadingType');
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 2:
|
case 2:
|
||||||
case 3:
|
case 3:
|
||||||
// both radial and axial shadings are handled by RadialAxial shading
|
// both radial and axial shadings are handled by RadialAxial shading
|
||||||
return new RadialAxialShading(dict, matrix, xref, res, ctx);
|
return new RadialAxialShading(dict, matrix, xref, res, ctx);
|
||||||
default:
|
default:
|
||||||
return new DummyShading();
|
return new DummyShading();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
return constructor;
|
return constructor;
|
||||||
@ -5965,17 +5959,17 @@ var TilingPattern = (function() {
|
|||||||
|
|
||||||
var paintType = dict.get('PaintType');
|
var paintType = dict.get('PaintType');
|
||||||
switch (paintType) {
|
switch (paintType) {
|
||||||
case PAINT_TYPE_COLORED:
|
case PAINT_TYPE_COLORED:
|
||||||
tmpCtx.fillStyle = ctx.fillStyle;
|
tmpCtx.fillStyle = ctx.fillStyle;
|
||||||
tmpCtx.strokeStyle = ctx.strokeStyle;
|
tmpCtx.strokeStyle = ctx.strokeStyle;
|
||||||
break;
|
break;
|
||||||
case PAINT_TYPE_UNCOLORED:
|
case PAINT_TYPE_UNCOLORED:
|
||||||
color = Util.makeCssRgb.apply(this, color);
|
color = Util.makeCssRgb.apply(this, color);
|
||||||
tmpCtx.fillStyle = color;
|
tmpCtx.fillStyle = color;
|
||||||
tmpCtx.strokeStyle = color;
|
tmpCtx.strokeStyle = color;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
error('Unsupported paint type: ' + paintType);
|
error('Unsupported paint type: ' + paintType);
|
||||||
}
|
}
|
||||||
|
|
||||||
var scale = [width / xstep, height / ystep];
|
var scale = [width / xstep, height / ystep];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user