mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-26 01:58:06 +02:00
Change src/core/jpg.js
to use the error
utility function instead of throw
ing
This allows us to remove the `try/catch` statements used in `src/core/stream.js` when parsing JPEG images. As far as I can tell, the only reason for the current usage of plain `throw` is that `jpg.js` originally was external code. Given that this code now lives in our repo, this patch brings the JPEG code more in line with e.g. `src/core/jpx.js` and `src/core/jbig2.js`.
This commit is contained in:
parent
d03651efff
commit
a35773ec8c
2 changed files with 52 additions and 55 deletions
|
@ -922,38 +922,34 @@ var JpegStream = (function JpegStreamClosure() {
|
|||
if (this.bufferLength) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
var jpegImage = new JpegImage();
|
||||
var jpegImage = new JpegImage();
|
||||
|
||||
// checking if values needs to be transformed before conversion
|
||||
if (this.forceRGB && this.dict && isArray(this.dict.get('Decode'))) {
|
||||
var decodeArr = this.dict.getArray('Decode');
|
||||
var bitsPerComponent = this.dict.get('BitsPerComponent') || 8;
|
||||
var decodeArrLength = decodeArr.length;
|
||||
var transform = new Int32Array(decodeArrLength);
|
||||
var transformNeeded = false;
|
||||
var maxValue = (1 << bitsPerComponent) - 1;
|
||||
for (var i = 0; i < decodeArrLength; i += 2) {
|
||||
transform[i] = ((decodeArr[i + 1] - decodeArr[i]) * 256) | 0;
|
||||
transform[i + 1] = (decodeArr[i] * maxValue) | 0;
|
||||
if (transform[i] !== 256 || transform[i + 1] !== 0) {
|
||||
transformNeeded = true;
|
||||
}
|
||||
}
|
||||
if (transformNeeded) {
|
||||
jpegImage.decodeTransform = transform;
|
||||
// Checking if values need to be transformed before conversion.
|
||||
if (this.forceRGB && this.dict && isArray(this.dict.get('Decode'))) {
|
||||
var decodeArr = this.dict.getArray('Decode');
|
||||
var bitsPerComponent = this.dict.get('BitsPerComponent') || 8;
|
||||
var decodeArrLength = decodeArr.length;
|
||||
var transform = new Int32Array(decodeArrLength);
|
||||
var transformNeeded = false;
|
||||
var maxValue = (1 << bitsPerComponent) - 1;
|
||||
for (var i = 0; i < decodeArrLength; i += 2) {
|
||||
transform[i] = ((decodeArr[i + 1] - decodeArr[i]) * 256) | 0;
|
||||
transform[i + 1] = (decodeArr[i] * maxValue) | 0;
|
||||
if (transform[i] !== 256 || transform[i + 1] !== 0) {
|
||||
transformNeeded = true;
|
||||
}
|
||||
}
|
||||
|
||||
jpegImage.parse(this.bytes);
|
||||
var data = jpegImage.getData(this.drawWidth, this.drawHeight,
|
||||
this.forceRGB);
|
||||
this.buffer = data;
|
||||
this.bufferLength = data.length;
|
||||
this.eof = true;
|
||||
} catch (e) {
|
||||
error('JPEG error: ' + e);
|
||||
if (transformNeeded) {
|
||||
jpegImage.decodeTransform = transform;
|
||||
}
|
||||
}
|
||||
|
||||
jpegImage.parse(this.bytes);
|
||||
var data = jpegImage.getData(this.drawWidth, this.drawHeight,
|
||||
this.forceRGB);
|
||||
this.buffer = data;
|
||||
this.bufferLength = data.length;
|
||||
this.eof = true;
|
||||
};
|
||||
|
||||
JpegStream.prototype.getBytes = function JpegStream_getBytes(length) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue