Browse Source

Merge pull request #5121 from timvandermeij/strict-equalities-images

Use strict equalities in src/core/{image, jpx, jpg, jbig2}.js
Jonas Jenwald 11 years ago
parent
commit
c86836afc0
  1. 8
      src/core/image.js
  2. 28
      src/core/jbig2.js
  3. 16
      src/core/jpg.js
  4. 26
      src/core/jpx.js

8
src/core/image.js

@ -258,7 +258,7 @@ var PDFImage = (function PDFImageClosure() {
var computedLength = ((width + 7) >> 3) * height; var computedLength = ((width + 7) >> 3) * height;
var actualLength = imgArray.byteLength; var actualLength = imgArray.byteLength;
var haveFullData = computedLength == actualLength; var haveFullData = computedLength === actualLength;
var data, i; var data, i;
if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) { if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) {
@ -416,7 +416,7 @@ var PDFImage = (function PDFImageClosure() {
sh = smask.height; sh = smask.height;
alphaBuf = new Uint8Array(sw * sh); alphaBuf = new Uint8Array(sw * sh);
smask.fillGrayBuffer(alphaBuf); smask.fillGrayBuffer(alphaBuf);
if (sw != width || sh != height) { if (sw !== width || sh !== height) {
alphaBuf = PDFImage.resize(alphaBuf, smask.bpc, 1, sw, sh, width, alphaBuf = PDFImage.resize(alphaBuf, smask.bpc, 1, sw, sh, width,
height); height);
} }
@ -433,7 +433,7 @@ var PDFImage = (function PDFImageClosure() {
alphaBuf[i] = 255 - alphaBuf[i]; alphaBuf[i] = 255 - alphaBuf[i];
} }
if (sw != width || sh != height) { if (sw !== width || sh !== height) {
alphaBuf = PDFImage.resize(alphaBuf, mask.bpc, 1, sw, sh, width, alphaBuf = PDFImage.resize(alphaBuf, mask.bpc, 1, sw, sh, width,
height); height);
} }
@ -602,7 +602,7 @@ var PDFImage = (function PDFImageClosure() {
fillGrayBuffer: function PDFImage_fillGrayBuffer(buffer) { fillGrayBuffer: function PDFImage_fillGrayBuffer(buffer) {
var numComps = this.numComps; var numComps = this.numComps;
if (numComps != 1) { if (numComps !== 1) {
error('Reading gray scale from a color image: ' + numComps); error('Reading gray scale from a color image: ' + numComps);
} }

28
src/core/jbig2.js

@ -477,7 +477,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
firstS += deltaFirstS; firstS += deltaFirstS;
var currentS = firstS; var currentS = firstS;
do { do {
var currentT = (stripSize == 1 ? 0 : var currentT = (stripSize === 1 ? 0 :
decodeInteger(contextCache, 'IAIT', decoder)); // 6.4.9 decodeInteger(contextCache, 'IAIT', decoder)); // 6.4.9
var t = stripSize * stripT + currentT; var t = stripSize * stripT + currentT;
var symbolId = decodeIAID(contextCache, decoder, symbolCodeLength); var symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);
@ -582,7 +582,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
var referredToCount = (referredFlags >> 5) & 7; var referredToCount = (referredFlags >> 5) & 7;
var retainBits = [referredFlags & 31]; var retainBits = [referredFlags & 31];
var position = start + 6; var position = start + 6;
if (referredFlags == 7) { if (referredFlags === 7) {
referredToCount = readUint32(data, position - 1) & 0x1FFFFFFF; referredToCount = readUint32(data, position - 1) & 0x1FFFFFFF;
position += 3; position += 3;
var bytes = (referredToCount + 7) >> 3; var bytes = (referredToCount + 7) >> 3;
@ -590,7 +590,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
while (--bytes > 0) { while (--bytes > 0) {
retainBits.push(data[position++]); retainBits.push(data[position++]);
} }
} else if (referredFlags == 5 || referredFlags == 6) { } else if (referredFlags === 5 || referredFlags === 6) {
error('JBIG2 error: invalid referred-to flags'); error('JBIG2 error: invalid referred-to flags');
} }
@ -600,8 +600,8 @@ var Jbig2Image = (function Jbig2ImageClosure() {
var referredTo = []; var referredTo = [];
var i, ii; var i, ii;
for (i = 0; i < referredToCount; i++) { for (i = 0; i < referredToCount; i++) {
var number = (referredToSegmentNumberSize == 1 ? data[position] : var number = (referredToSegmentNumberSize === 1 ? data[position] :
(referredToSegmentNumberSize == 2 ? readUint16(data, position) : (referredToSegmentNumberSize === 2 ? readUint16(data, position) :
readUint32(data, position))); readUint32(data, position)));
referredTo.push(number); referredTo.push(number);
position += referredToSegmentNumberSize; position += referredToSegmentNumberSize;
@ -616,7 +616,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
segmentHeader.length = readUint32(data, position); segmentHeader.length = readUint32(data, position);
position += 4; position += 4;
if (segmentHeader.length == 0xFFFFFFFF) { if (segmentHeader.length === 0xFFFFFFFF) {
// 7.2.7 Segment data length, unknown segment length // 7.2.7 Segment data length, unknown segment length
if (segmentType === 38) { // ImmediateGenericRegion if (segmentType === 38) { // ImmediateGenericRegion
var genericRegionInfo = readRegionSegmentInformation(data, position); var genericRegionInfo = readRegionSegmentInformation(data, position);
@ -639,12 +639,12 @@ var Jbig2Image = (function Jbig2ImageClosure() {
while (j < searchPatternLength && searchPattern[j] === data[i + j]) { while (j < searchPatternLength && searchPattern[j] === data[i + j]) {
j++; j++;
} }
if (j == searchPatternLength) { if (j === searchPatternLength) {
segmentHeader.length = i + searchPatternLength; segmentHeader.length = i + searchPatternLength;
break; break;
} }
} }
if (segmentHeader.length == 0xFFFFFFFF) { if (segmentHeader.length === 0xFFFFFFFF) {
error('JBIG2 error: segment end was not found'); error('JBIG2 error: segment end was not found');
} }
} else { } else {
@ -671,7 +671,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
segment.end = position; segment.end = position;
} }
segments.push(segment); segments.push(segment);
if (segmentHeader.type == 51) { if (segmentHeader.type === 51) {
break; // end of file is found break; // end of file is found
} }
} }
@ -826,7 +826,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
resolutionX: readUint32(data, position + 8), resolutionX: readUint32(data, position + 8),
resolutionY: readUint32(data, position + 12) resolutionY: readUint32(data, position + 12)
}; };
if (pageInfo.height == 0xFFFFFFFF) { if (pageInfo.height === 0xFFFFFFFF) {
delete pageInfo.height; delete pageInfo.height;
} }
var pageSegmentFlags = data[position + 16]; var pageSegmentFlags = data[position + 16];
@ -866,10 +866,10 @@ var Jbig2Image = (function Jbig2ImageClosure() {
function parseJbig2(data, start, end) { function parseJbig2(data, start, end) {
var position = start; var position = start;
if (data[position] != 0x97 || data[position + 1] != 0x4A || if (data[position] !== 0x97 || data[position + 1] !== 0x4A ||
data[position + 2] != 0x42 || data[position + 3] != 0x32 || data[position + 2] !== 0x42 || data[position + 3] !== 0x32 ||
data[position + 4] != 0x0D || data[position + 5] != 0x0A || data[position + 4] !== 0x0D || data[position + 5] !== 0x0A ||
data[position + 6] != 0x1A || data[position + 7] != 0x0A) { data[position + 6] !== 0x1A || data[position + 7] !== 0x0A) {
error('JBIG2 error: invalid header'); error('JBIG2 error: invalid header');
} }
var header = {}; var header = {};

16
src/core/jpg.js

@ -116,7 +116,7 @@ var JpegImage = (function jpegImage() {
return (bitsData >> bitsCount) & 1; return (bitsData >> bitsCount) & 1;
} }
bitsData = data[offset++]; bitsData = data[offset++];
if (bitsData == 0xFF) { if (bitsData === 0xFF) {
var nextByte = data[offset++]; var nextByte = data[offset++];
if (nextByte) { if (nextByte) {
throw 'unexpected marker: ' + throw 'unexpected marker: ' +
@ -262,7 +262,7 @@ var JpegImage = (function jpegImage() {
} else { } else {
r--; r--;
if (r === 0) { if (r === 0) {
successiveACState = successiveACState == 2 ? 3 : 0; successiveACState = successiveACState === 2 ? 3 : 0;
} }
} }
break; break;
@ -322,7 +322,7 @@ var JpegImage = (function jpegImage() {
var mcu = 0, marker; var mcu = 0, marker;
var mcuExpected; var mcuExpected;
if (componentsLength == 1) { if (componentsLength === 1) {
mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn; mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;
} else { } else {
mcuExpected = mcusPerLine * frame.mcusPerColumn; mcuExpected = mcusPerLine * frame.mcusPerColumn;
@ -339,7 +339,7 @@ var JpegImage = (function jpegImage() {
} }
eobrun = 0; eobrun = 0;
if (componentsLength == 1) { if (componentsLength === 1) {
component = components[0]; component = components[0];
for (n = 0; n < resetInterval; n++) { for (n = 0; n < resetInterval; n++) {
decodeBlock(component, decodeFn, mcu); decodeBlock(component, decodeFn, mcu);
@ -628,12 +628,12 @@ var JpegImage = (function jpegImage() {
var quantizationTables = []; var quantizationTables = [];
var huffmanTablesAC = [], huffmanTablesDC = []; var huffmanTablesAC = [], huffmanTablesDC = [];
var fileMarker = readUint16(); var fileMarker = readUint16();
if (fileMarker != 0xFFD8) { // SOI (Start of Image) if (fileMarker !== 0xFFD8) { // SOI (Start of Image)
throw 'SOI not found'; throw 'SOI not found';
} }
fileMarker = readUint16(); fileMarker = readUint16();
while (fileMarker != 0xFFD9) { // EOI (End of image) while (fileMarker !== 0xFFD9) { // EOI (End of image)
var i, j, l; var i, j, l;
switch(fileMarker) { switch(fileMarker) {
case 0xFFE0: // APP0 (Application Specific) case 0xFFE0: // APP0 (Application Specific)
@ -799,7 +799,7 @@ var JpegImage = (function jpegImage() {
offset += processed; offset += processed;
break; break;
default: default:
if (data[offset - 3] == 0xFF && if (data[offset - 3] === 0xFF &&
data[offset - 2] >= 0xC0 && data[offset - 2] <= 0xFE) { data[offset - 2] >= 0xC0 && data[offset - 2] <= 0xFE) {
// could be incorrect encoding -- last 0xFF byte of the previous // could be incorrect encoding -- last 0xFF byte of the previous
// block was eaten by the encoder // block was eaten by the encoder
@ -883,7 +883,7 @@ var JpegImage = (function jpegImage() {
if (this.adobe && this.adobe.transformCode) { if (this.adobe && this.adobe.transformCode) {
// The adobe transform marker overrides any previous setting // The adobe transform marker overrides any previous setting
return true; return true;
} else if (this.numComponents == 3) { } else if (this.numComponents === 3) {
return true; return true;
} else { } else {
return false; return false;

26
src/core/jpx.js

@ -88,7 +88,7 @@ var JpxImage = (function JpxImageClosure() {
newByte = stream.getByte(); newByte = stream.getByte();
var code = (oldByte << 8) | newByte; var code = (oldByte << 8) | newByte;
// Image and tile size (SIZ) // Image and tile size (SIZ)
if (code == 0xFF51) { if (code === 0xFF51) {
stream.skip(4); stream.skip(4);
var Xsiz = stream.getInt32() >>> 0; // Byte 4 var Xsiz = stream.getInt32() >>> 0; // Byte 4
var Ysiz = stream.getInt32() >>> 0; // Byte 8 var Ysiz = stream.getInt32() >>> 0; // Byte 8
@ -179,13 +179,13 @@ var JpxImage = (function JpxImageClosure() {
default: default:
throw new Error('JPX Error: Invalid SQcd value ' + sqcd); throw new Error('JPX Error: Invalid SQcd value ' + sqcd);
} }
qcd.noQuantization = (spqcdSize == 8); qcd.noQuantization = (spqcdSize === 8);
qcd.scalarExpounded = scalarExpounded; qcd.scalarExpounded = scalarExpounded;
qcd.guardBits = sqcd >> 5; qcd.guardBits = sqcd >> 5;
spqcds = []; spqcds = [];
while (j < length + position) { while (j < length + position) {
var spqcd = {}; var spqcd = {};
if (spqcdSize == 8) { if (spqcdSize === 8) {
spqcd.epsilon = data[j++] >> 3; spqcd.epsilon = data[j++] >> 3;
spqcd.mu = 0; spqcd.mu = 0;
} else { } else {
@ -231,13 +231,13 @@ var JpxImage = (function JpxImageClosure() {
default: default:
throw new Error('JPX Error: Invalid SQcd value ' + sqcd); throw new Error('JPX Error: Invalid SQcd value ' + sqcd);
} }
qcc.noQuantization = (spqcdSize == 8); qcc.noQuantization = (spqcdSize === 8);
qcc.scalarExpounded = scalarExpounded; qcc.scalarExpounded = scalarExpounded;
qcc.guardBits = sqcd >> 5; qcc.guardBits = sqcd >> 5;
spqcds = []; spqcds = [];
while (j < (length + position)) { while (j < (length + position)) {
spqcd = {}; spqcd = {};
if (spqcdSize == 8) { if (spqcdSize === 8) {
spqcd.epsilon = data[j++] >> 3; spqcd.epsilon = data[j++] >> 3;
spqcd.mu = 0; spqcd.mu = 0;
} else { } else {
@ -550,7 +550,7 @@ var JpxImage = (function JpxImageClosure() {
var codeblocks = subband.codeblocks; var codeblocks = subband.codeblocks;
for (var j = 0, jj = codeblocks.length; j < jj; j++) { for (var j = 0, jj = codeblocks.length; j < jj; j++) {
var codeblock = codeblocks[j]; var codeblock = codeblocks[j];
if (codeblock.precinctNumber != precinctNumber) { if (codeblock.precinctNumber !== precinctNumber) {
continue; continue;
} }
precinctCodeblocks.push(codeblock); precinctCodeblocks.push(codeblock);
@ -752,7 +752,7 @@ var JpxImage = (function JpxImageClosure() {
buffer = (buffer << 8) | b; buffer = (buffer << 8) | b;
bufferSize += 8; bufferSize += 8;
} }
if (b == 0xFF) { if (b === 0xFF) {
skipNextBit = true; skipNextBit = true;
} }
} }
@ -1259,7 +1259,7 @@ var JpxImage = (function JpxImageClosure() {
level.index = index; level.index = index;
var value = level.items[index]; var value = level.items[index];
if (value == 0xFF) { if (value === 0xFF) {
break; break;
} }
@ -1337,8 +1337,8 @@ var JpxImage = (function JpxImageClosure() {
this.width = width; this.width = width;
this.height = height; this.height = height;
this.contextLabelTable = (subband == 'HH' ? HHContextLabel : this.contextLabelTable = (subband === 'HH' ? HHContextLabel :
(subband == 'HL' ? HLContextLabel : LLAndLHContextsLabel)); (subband === 'HL' ? HLContextLabel : LLAndLHContextsLabel));
var coefficientCount = width * height; var coefficientCount = width * height;
@ -1576,8 +1576,8 @@ var JpxImage = (function JpxImageClosure() {
var checkAllEmpty = i0 + 3 < height; var checkAllEmpty = i0 + 3 < height;
for (var j = 0; j < width; j++) { for (var j = 0; j < width; j++) {
var index0 = indexBase + j; var index0 = indexBase + j;
// using the property: labels[neighborsSignificance[index]] == 0 // using the property: labels[neighborsSignificance[index]] === 0
// when neighborsSignificance[index] == 0 // when neighborsSignificance[index] === 0
var allEmpty = (checkAllEmpty && var allEmpty = (checkAllEmpty &&
processingFlags[index0] === 0 && processingFlags[index0] === 0 &&
processingFlags[index0 + oneRowDown] === 0 && processingFlags[index0 + oneRowDown] === 0 &&
@ -1646,7 +1646,7 @@ var JpxImage = (function JpxImageClosure() {
(decoder.readBit(contexts, UNIFORM_CONTEXT) << 2) | (decoder.readBit(contexts, UNIFORM_CONTEXT) << 2) |
(decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) | (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) |
decoder.readBit(contexts, UNIFORM_CONTEXT); decoder.readBit(contexts, UNIFORM_CONTEXT);
if (symbol != 0xA) { if (symbol !== 0xA) {
throw new Error('JPX Error: Invalid segmentation symbol'); throw new Error('JPX Error: Invalid segmentation symbol');
} }
} }

Loading…
Cancel
Save