Enable the no-var rule in the src/core/jbig2.js file

These changes were made automatically, using `gulp lint --fix`.
This commit is contained in:
Jonas Jenwald 2021-05-05 12:12:35 +02:00
parent 52961197d3
commit 7ca3a34e1f

View File

@ -12,7 +12,6 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
/* eslint-disable no-var */
import { BaseException, shadow } from "../shared/util.js"; import { BaseException, shadow } from "../shared/util.js";
import { log2, readInt8, readUint16, readUint32 } from "./core_utils.js"; import { log2, readInt8, readUint16, readUint32 } from "./core_utils.js";
@ -25,7 +24,7 @@ class Jbig2Error extends BaseException {
} }
} }
var Jbig2Image = (function Jbig2ImageClosure() { const Jbig2Image = (function Jbig2ImageClosure() {
// Utility data structures // Utility data structures
function ContextCache() {} function ContextCache() {}
@ -46,11 +45,11 @@ var Jbig2Image = (function Jbig2ImageClosure() {
DecodingContext.prototype = { DecodingContext.prototype = {
get decoder() { get decoder() {
var decoder = new ArithmeticDecoder(this.data, this.start, this.end); const decoder = new ArithmeticDecoder(this.data, this.start, this.end);
return shadow(this, "decoder", decoder); return shadow(this, "decoder", decoder);
}, },
get contextCache() { get contextCache() {
var cache = new ContextCache(); const cache = new ContextCache();
return shadow(this, "contextCache", cache); return shadow(this, "contextCache", cache);
}, },
}; };
@ -58,13 +57,13 @@ var Jbig2Image = (function Jbig2ImageClosure() {
// Annex A. Arithmetic Integer Decoding Procedure // Annex A. Arithmetic Integer Decoding Procedure
// A.2 Procedure for decoding values // A.2 Procedure for decoding values
function decodeInteger(contextCache, procedure, decoder) { function decodeInteger(contextCache, procedure, decoder) {
var contexts = contextCache.getContexts(procedure); const contexts = contextCache.getContexts(procedure);
var prev = 1; let prev = 1;
function readBits(length) { function readBits(length) {
var v = 0; let v = 0;
for (var i = 0; i < length; i++) { for (let i = 0; i < length; i++) {
var bit = decoder.readBit(contexts, prev); const bit = decoder.readBit(contexts, prev);
prev = prev =
prev < 256 ? (prev << 1) | bit : (((prev << 1) | bit) & 511) | 256; prev < 256 ? (prev << 1) | bit : (((prev << 1) | bit) & 511) | 256;
v = (v << 1) | bit; v = (v << 1) | bit;
@ -72,10 +71,10 @@ var Jbig2Image = (function Jbig2ImageClosure() {
return v >>> 0; return v >>> 0;
} }
var sign = readBits(1); const sign = readBits(1);
// prettier-ignore // prettier-ignore
/* eslint-disable no-nested-ternary */ /* eslint-disable no-nested-ternary */
var value = readBits(1) ? const value = readBits(1) ?
(readBits(1) ? (readBits(1) ?
(readBits(1) ? (readBits(1) ?
(readBits(1) ? (readBits(1) ?
@ -97,11 +96,11 @@ var Jbig2Image = (function Jbig2ImageClosure() {
// A.3 The IAID decoding procedure // A.3 The IAID decoding procedure
function decodeIAID(contextCache, decoder, codeLength) { function decodeIAID(contextCache, decoder, codeLength) {
var contexts = contextCache.getContexts("IAID"); const contexts = contextCache.getContexts("IAID");
var prev = 1; let prev = 1;
for (var i = 0; i < codeLength; i++) { for (let i = 0; i < codeLength; i++) {
var bit = decoder.readBit(contexts, prev); const bit = decoder.readBit(contexts, prev);
prev = (prev << 1) | bit; prev = (prev << 1) | bit;
} }
if (codeLength < 31) { if (codeLength < 31) {
@ -111,7 +110,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
} }
// 7.3 Segment types // 7.3 Segment types
var SegmentTypes = [ const SegmentTypes = [
"SymbolDictionary", "SymbolDictionary",
null, null,
null, null,
@ -177,7 +176,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
"Extension", "Extension",
]; ];
var CodingTemplates = [ const CodingTemplates = [
[ [
{ x: -1, y: -2 }, { x: -1, y: -2 },
{ x: 0, y: -2 }, { x: 0, y: -2 },
@ -230,7 +229,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
], ],
]; ];
var RefinementTemplates = [ const RefinementTemplates = [
{ {
coding: [ coding: [
{ x: 0, y: -1 }, { x: 0, y: -1 },
@ -267,22 +266,22 @@ var Jbig2Image = (function Jbig2ImageClosure() {
]; ];
// See 6.2.5.7 Decoding the bitmap. // See 6.2.5.7 Decoding the bitmap.
var ReusedContexts = [ const ReusedContexts = [
0x9b25, // 10011 0110010 0101 0x9b25, // 10011 0110010 0101
0x0795, // 0011 110010 101 0x0795, // 0011 110010 101
0x00e5, // 001 11001 01 0x00e5, // 001 11001 01
0x0195, // 011001 0101 0x0195, // 011001 0101
]; ];
var RefinementReusedContexts = [ const RefinementReusedContexts = [
0x0020, // '000' + '0' (coding) + '00010000' + '0' (reference) 0x0020, // '000' + '0' (coding) + '00010000' + '0' (reference)
0x0008, // '0000' + '001000' 0x0008, // '0000' + '001000'
]; ];
function decodeBitmapTemplate0(width, height, decodingContext) { function decodeBitmapTemplate0(width, height, decodingContext) {
var decoder = decodingContext.decoder; const decoder = decodingContext.decoder;
var contexts = decodingContext.contextCache.getContexts("GB"); const contexts = decodingContext.contextCache.getContexts("GB");
var contextLabel, let contextLabel,
i, i,
j, j,
pixel, pixel,
@ -294,7 +293,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
// ...ooooo.... // ...ooooo....
// ..ooooooo... Context template for current pixel (X) // ..ooooooo... Context template for current pixel (X)
// .ooooX...... (concatenate values of 'o'-pixels to get contextLabel) // .ooooX...... (concatenate values of 'o'-pixels to get contextLabel)
var OLD_PIXEL_MASK = 0x7bf7; // 01111 0111111 0111 const OLD_PIXEL_MASK = 0x7bf7; // 01111 0111111 0111
for (i = 0; i < height; i++) { for (i = 0; i < height; i++) {
row = bitmap[i] = new Uint8Array(width); row = bitmap[i] = new Uint8Array(width);
@ -366,8 +365,8 @@ var Jbig2Image = (function Jbig2ImageClosure() {
return decodeBitmapTemplate0(width, height, decodingContext); return decodeBitmapTemplate0(width, height, decodingContext);
} }
var useskip = !!skip; const useskip = !!skip;
var template = CodingTemplates[templateIndex].concat(at); const template = CodingTemplates[templateIndex].concat(at);
// Sorting is non-standard, and it is not required. But sorting increases // Sorting is non-standard, and it is not required. But sorting increases
// the number of template bits that can be reused from the previous // the number of template bits that can be reused from the previous
@ -376,15 +375,15 @@ var Jbig2Image = (function Jbig2ImageClosure() {
return a.y - b.y || a.x - b.x; return a.y - b.y || a.x - b.x;
}); });
var templateLength = template.length; const templateLength = template.length;
var templateX = new Int8Array(templateLength); const templateX = new Int8Array(templateLength);
var templateY = new Int8Array(templateLength); const templateY = new Int8Array(templateLength);
var changingTemplateEntries = []; const changingTemplateEntries = [];
var reuseMask = 0, let reuseMask = 0,
minX = 0, minX = 0,
maxX = 0, maxX = 0,
minY = 0; minY = 0;
var c, k; let c, k;
for (k = 0; k < templateLength; k++) { for (k = 0; k < templateLength; k++) {
templateX[k] = template[k].x; templateX[k] = template[k].x;
@ -405,11 +404,11 @@ var Jbig2Image = (function Jbig2ImageClosure() {
changingTemplateEntries.push(k); changingTemplateEntries.push(k);
} }
} }
var changingEntriesLength = changingTemplateEntries.length; const changingEntriesLength = changingTemplateEntries.length;
var changingTemplateX = new Int8Array(changingEntriesLength); const changingTemplateX = new Int8Array(changingEntriesLength);
var changingTemplateY = new Int8Array(changingEntriesLength); const changingTemplateY = new Int8Array(changingEntriesLength);
var changingTemplateBit = new Uint16Array(changingEntriesLength); const changingTemplateBit = new Uint16Array(changingEntriesLength);
for (c = 0; c < changingEntriesLength; c++) { for (c = 0; c < changingEntriesLength; c++) {
k = changingTemplateEntries[c]; k = changingTemplateEntries[c];
changingTemplateX[c] = template[k].x; changingTemplateX[c] = template[k].x;
@ -418,27 +417,27 @@ var Jbig2Image = (function Jbig2ImageClosure() {
} }
// Get the safe bounding box edges from the width, height, minX, maxX, minY // Get the safe bounding box edges from the width, height, minX, maxX, minY
var sbb_left = -minX; const sbb_left = -minX;
var sbb_top = -minY; const sbb_top = -minY;
var sbb_right = width - maxX; const sbb_right = width - maxX;
var pseudoPixelContext = ReusedContexts[templateIndex]; const pseudoPixelContext = ReusedContexts[templateIndex];
var row = new Uint8Array(width); let row = new Uint8Array(width);
var bitmap = []; const bitmap = [];
var decoder = decodingContext.decoder; const decoder = decodingContext.decoder;
var contexts = decodingContext.contextCache.getContexts("GB"); const contexts = decodingContext.contextCache.getContexts("GB");
var ltp = 0, let ltp = 0,
j, j,
i0, i0,
j0, j0,
contextLabel = 0, contextLabel = 0,
bit, bit,
shift; shift;
for (var i = 0; i < height; i++) { for (let i = 0; i < height; i++) {
if (prediction) { if (prediction) {
var sltp = decoder.readBit(contexts, pseudoPixelContext); const sltp = decoder.readBit(contexts, pseudoPixelContext);
ltp ^= sltp; ltp ^= sltp;
if (ltp) { if (ltp) {
bitmap.push(row); // duplicate previous row bitmap.push(row); // duplicate previous row
@ -484,7 +483,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
} }
} }
} }
var pixel = decoder.readBit(contexts, contextLabel); const pixel = decoder.readBit(contexts, contextLabel);
row[j] = pixel; row[j] = pixel;
} }
} }
@ -503,53 +502,53 @@ var Jbig2Image = (function Jbig2ImageClosure() {
at, at,
decodingContext decodingContext
) { ) {
var codingTemplate = RefinementTemplates[templateIndex].coding; let codingTemplate = RefinementTemplates[templateIndex].coding;
if (templateIndex === 0) { if (templateIndex === 0) {
codingTemplate = codingTemplate.concat([at[0]]); codingTemplate = codingTemplate.concat([at[0]]);
} }
var codingTemplateLength = codingTemplate.length; const codingTemplateLength = codingTemplate.length;
var codingTemplateX = new Int32Array(codingTemplateLength); const codingTemplateX = new Int32Array(codingTemplateLength);
var codingTemplateY = new Int32Array(codingTemplateLength); const codingTemplateY = new Int32Array(codingTemplateLength);
var k; let k;
for (k = 0; k < codingTemplateLength; k++) { for (k = 0; k < codingTemplateLength; k++) {
codingTemplateX[k] = codingTemplate[k].x; codingTemplateX[k] = codingTemplate[k].x;
codingTemplateY[k] = codingTemplate[k].y; codingTemplateY[k] = codingTemplate[k].y;
} }
var referenceTemplate = RefinementTemplates[templateIndex].reference; let referenceTemplate = RefinementTemplates[templateIndex].reference;
if (templateIndex === 0) { if (templateIndex === 0) {
referenceTemplate = referenceTemplate.concat([at[1]]); referenceTemplate = referenceTemplate.concat([at[1]]);
} }
var referenceTemplateLength = referenceTemplate.length; const referenceTemplateLength = referenceTemplate.length;
var referenceTemplateX = new Int32Array(referenceTemplateLength); const referenceTemplateX = new Int32Array(referenceTemplateLength);
var referenceTemplateY = new Int32Array(referenceTemplateLength); const referenceTemplateY = new Int32Array(referenceTemplateLength);
for (k = 0; k < referenceTemplateLength; k++) { for (k = 0; k < referenceTemplateLength; k++) {
referenceTemplateX[k] = referenceTemplate[k].x; referenceTemplateX[k] = referenceTemplate[k].x;
referenceTemplateY[k] = referenceTemplate[k].y; referenceTemplateY[k] = referenceTemplate[k].y;
} }
var referenceWidth = referenceBitmap[0].length; const referenceWidth = referenceBitmap[0].length;
var referenceHeight = referenceBitmap.length; const referenceHeight = referenceBitmap.length;
var pseudoPixelContext = RefinementReusedContexts[templateIndex]; const pseudoPixelContext = RefinementReusedContexts[templateIndex];
var bitmap = []; const bitmap = [];
var decoder = decodingContext.decoder; const decoder = decodingContext.decoder;
var contexts = decodingContext.contextCache.getContexts("GR"); const contexts = decodingContext.contextCache.getContexts("GR");
var ltp = 0; let ltp = 0;
for (var i = 0; i < height; i++) { for (let i = 0; i < height; i++) {
if (prediction) { if (prediction) {
var sltp = decoder.readBit(contexts, pseudoPixelContext); const sltp = decoder.readBit(contexts, pseudoPixelContext);
ltp ^= sltp; ltp ^= sltp;
if (ltp) { if (ltp) {
throw new Jbig2Error("prediction is not supported"); throw new Jbig2Error("prediction is not supported");
} }
} }
var row = new Uint8Array(width); const row = new Uint8Array(width);
bitmap.push(row); bitmap.push(row);
for (var j = 0; j < width; j++) { for (let j = 0; j < width; j++) {
var i0, j0; var i0, j0;
var contextLabel = 0; let contextLabel = 0;
for (k = 0; k < codingTemplateLength; k++) { for (k = 0; k < codingTemplateLength; k++) {
i0 = i + codingTemplateY[k]; i0 = i + codingTemplateY[k];
j0 = j + codingTemplateX[k]; j0 = j + codingTemplateX[k];
@ -573,7 +572,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
contextLabel = (contextLabel << 1) | referenceBitmap[i0][j0]; contextLabel = (contextLabel << 1) | referenceBitmap[i0][j0];
} }
} }
var pixel = decoder.readBit(contexts, contextLabel); const pixel = decoder.readBit(contexts, contextLabel);
row[j] = pixel; row[j] = pixel;
} }
} }
@ -600,12 +599,12 @@ var Jbig2Image = (function Jbig2ImageClosure() {
throw new Jbig2Error("symbol refinement with Huffman is not supported"); throw new Jbig2Error("symbol refinement with Huffman is not supported");
} }
var newSymbols = []; const newSymbols = [];
var currentHeight = 0; let currentHeight = 0;
var symbolCodeLength = log2(symbols.length + numberOfNewSymbols); let symbolCodeLength = log2(symbols.length + numberOfNewSymbols);
var decoder = decodingContext.decoder; const decoder = decodingContext.decoder;
var contextCache = decodingContext.contextCache; const contextCache = decodingContext.contextCache;
let tableB1, symbolWidths; let tableB1, symbolWidths;
if (huffman) { if (huffman) {
tableB1 = getStandardTable(1); // standard table B.1 tableB1 = getStandardTable(1); // standard table B.1
@ -614,7 +613,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
} }
while (newSymbols.length < numberOfNewSymbols) { while (newSymbols.length < numberOfNewSymbols) {
var deltaHeight = huffman const deltaHeight = huffman
? huffmanTables.tableDeltaHeight.decode(huffmanInput) ? huffmanTables.tableDeltaHeight.decode(huffmanInput)
: decodeInteger(contextCache, "IADH", decoder); // 6.5.6 : decodeInteger(contextCache, "IADH", decoder); // 6.5.6
currentHeight += deltaHeight; currentHeight += deltaHeight;
@ -622,7 +621,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
totalWidth = 0; totalWidth = 0;
const firstSymbol = huffman ? symbolWidths.length : 0; const firstSymbol = huffman ? symbolWidths.length : 0;
while (true) { while (true) {
var deltaWidth = huffman const deltaWidth = huffman
? huffmanTables.tableDeltaWidth.decode(huffmanInput) ? huffmanTables.tableDeltaWidth.decode(huffmanInput)
: decodeInteger(contextCache, "IADW", decoder); // 6.5.7 : decodeInteger(contextCache, "IADW", decoder); // 6.5.7
if (deltaWidth === null) { if (deltaWidth === null) {
@ -633,7 +632,11 @@ var Jbig2Image = (function Jbig2ImageClosure() {
var bitmap; var bitmap;
if (refinement) { if (refinement) {
// 6.5.8.2 Refinement/aggregate-coded symbol bitmap // 6.5.8.2 Refinement/aggregate-coded symbol bitmap
var numberOfInstances = decodeInteger(contextCache, "IAAI", decoder); const numberOfInstances = decodeInteger(
contextCache,
"IAAI",
decoder
);
if (numberOfInstances > 1) { if (numberOfInstances > 1) {
bitmap = decodeTextRegion( bitmap = decodeTextRegion(
huffman, huffman,
@ -657,10 +660,14 @@ var Jbig2Image = (function Jbig2ImageClosure() {
huffmanInput huffmanInput
); );
} else { } else {
var symbolId = decodeIAID(contextCache, decoder, symbolCodeLength); const symbolId = decodeIAID(
var rdx = decodeInteger(contextCache, "IARDX", decoder); // 6.4.11.3 contextCache,
var rdy = decodeInteger(contextCache, "IARDY", decoder); // 6.4.11.4 decoder,
var symbol = symbolCodeLength
);
const rdx = decodeInteger(contextCache, "IARDX", decoder); // 6.4.11.3
const rdy = decodeInteger(contextCache, "IARDY", decoder); // 6.4.11.4
const symbol =
symbolId < symbols.length symbolId < symbols.length
? symbols[symbolId] ? symbols[symbolId]
: newSymbols[symbolId - symbols.length]; : newSymbols[symbolId - symbols.length];
@ -749,12 +756,12 @@ var Jbig2Image = (function Jbig2ImageClosure() {
} }
// 6.5.10 Exported symbols // 6.5.10 Exported symbols
var exportedSymbols = []; const exportedSymbols = [];
var flags = [], let flags = [],
currentFlag = false; currentFlag = false;
var totalSymbolsLength = symbols.length + numberOfNewSymbols; const totalSymbolsLength = symbols.length + numberOfNewSymbols;
while (flags.length < totalSymbolsLength) { while (flags.length < totalSymbolsLength) {
var runLength = huffman let runLength = huffman
? tableB1.decode(huffmanInput) ? tableB1.decode(huffmanInput)
: decodeInteger(contextCache, "IAEX", decoder); : decodeInteger(contextCache, "IAEX", decoder);
while (runLength--) { while (runLength--) {
@ -767,7 +774,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
exportedSymbols.push(symbols[i]); exportedSymbols.push(symbols[i]);
} }
} }
for (var j = 0; j < numberOfNewSymbols; i++, j++) { for (let j = 0; j < numberOfNewSymbols; i++, j++) {
if (flags[i]) { if (flags[i]) {
exportedSymbols.push(newSymbols[j]); exportedSymbols.push(newSymbols[j]);
} }
@ -801,37 +808,37 @@ var Jbig2Image = (function Jbig2ImageClosure() {
} }
// Prepare bitmap // Prepare bitmap
var bitmap = []; const bitmap = [];
var i, row; let i, row;
for (i = 0; i < height; i++) { for (i = 0; i < height; i++) {
row = new Uint8Array(width); row = new Uint8Array(width);
if (defaultPixelValue) { if (defaultPixelValue) {
for (var j = 0; j < width; j++) { for (let j = 0; j < width; j++) {
row[j] = defaultPixelValue; row[j] = defaultPixelValue;
} }
} }
bitmap.push(row); bitmap.push(row);
} }
var decoder = decodingContext.decoder; const decoder = decodingContext.decoder;
var contextCache = decodingContext.contextCache; const contextCache = decodingContext.contextCache;
var stripT = huffman let stripT = huffman
? -huffmanTables.tableDeltaT.decode(huffmanInput) ? -huffmanTables.tableDeltaT.decode(huffmanInput)
: -decodeInteger(contextCache, "IADT", decoder); // 6.4.6 : -decodeInteger(contextCache, "IADT", decoder); // 6.4.6
var firstS = 0; let firstS = 0;
i = 0; i = 0;
while (i < numberOfSymbolInstances) { while (i < numberOfSymbolInstances) {
var deltaT = huffman const deltaT = huffman
? huffmanTables.tableDeltaT.decode(huffmanInput) ? huffmanTables.tableDeltaT.decode(huffmanInput)
: decodeInteger(contextCache, "IADT", decoder); // 6.4.6 : decodeInteger(contextCache, "IADT", decoder); // 6.4.6
stripT += deltaT; stripT += deltaT;
var deltaFirstS = huffman const deltaFirstS = huffman
? huffmanTables.tableFirstS.decode(huffmanInput) ? huffmanTables.tableFirstS.decode(huffmanInput)
: decodeInteger(contextCache, "IAFS", decoder); // 6.4.7 : decodeInteger(contextCache, "IAFS", decoder); // 6.4.7
firstS += deltaFirstS; firstS += deltaFirstS;
var currentS = firstS; let currentS = firstS;
do { do {
let currentT = 0; // 6.4.9 let currentT = 0; // 6.4.9
if (stripSize > 1) { if (stripSize > 1) {
@ -839,23 +846,23 @@ var Jbig2Image = (function Jbig2ImageClosure() {
? huffmanInput.readBits(logStripSize) ? huffmanInput.readBits(logStripSize)
: decodeInteger(contextCache, "IAIT", decoder); : decodeInteger(contextCache, "IAIT", decoder);
} }
var t = stripSize * stripT + currentT; const t = stripSize * stripT + currentT;
var symbolId = huffman const symbolId = huffman
? huffmanTables.symbolIDTable.decode(huffmanInput) ? huffmanTables.symbolIDTable.decode(huffmanInput)
: decodeIAID(contextCache, decoder, symbolCodeLength); : decodeIAID(contextCache, decoder, symbolCodeLength);
var applyRefinement = const applyRefinement =
refinement && refinement &&
(huffman (huffman
? huffmanInput.readBit() ? huffmanInput.readBit()
: decodeInteger(contextCache, "IARI", decoder)); : decodeInteger(contextCache, "IARI", decoder));
var symbolBitmap = inputSymbols[symbolId]; let symbolBitmap = inputSymbols[symbolId];
var symbolWidth = symbolBitmap[0].length; let symbolWidth = symbolBitmap[0].length;
var symbolHeight = symbolBitmap.length; let symbolHeight = symbolBitmap.length;
if (applyRefinement) { if (applyRefinement) {
var rdw = decodeInteger(contextCache, "IARDW", decoder); // 6.4.11.1 const rdw = decodeInteger(contextCache, "IARDW", decoder); // 6.4.11.1
var rdh = decodeInteger(contextCache, "IARDH", decoder); // 6.4.11.2 const rdh = decodeInteger(contextCache, "IARDH", decoder); // 6.4.11.2
var rdx = decodeInteger(contextCache, "IARDX", decoder); // 6.4.11.3 const rdx = decodeInteger(contextCache, "IARDX", decoder); // 6.4.11.3
var rdy = decodeInteger(contextCache, "IARDY", decoder); // 6.4.11.4 const rdy = decodeInteger(contextCache, "IARDY", decoder); // 6.4.11.4
symbolWidth += rdw; symbolWidth += rdw;
symbolHeight += rdh; symbolHeight += rdh;
symbolBitmap = decodeRefinement( symbolBitmap = decodeRefinement(
@ -870,8 +877,8 @@ var Jbig2Image = (function Jbig2ImageClosure() {
decodingContext decodingContext
); );
} }
var offsetT = t - (referenceCorner & 1 ? 0 : symbolHeight - 1); const offsetT = t - (referenceCorner & 1 ? 0 : symbolHeight - 1);
var offsetS = currentS - (referenceCorner & 2 ? symbolWidth - 1 : 0); const offsetS = currentS - (referenceCorner & 2 ? symbolWidth - 1 : 0);
var s2, t2, symbolRow; var s2, t2, symbolRow;
if (transposed) { if (transposed) {
// Place Symbol Bitmap from T1,S1 // Place Symbol Bitmap from T1,S1
@ -883,7 +890,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
symbolRow = symbolBitmap[s2]; symbolRow = symbolBitmap[s2];
// To ignore Parts of Symbol bitmap which goes // To ignore Parts of Symbol bitmap which goes
// outside bitmap region // outside bitmap region
var maxWidth = Math.min(width - offsetT, symbolWidth); const maxWidth = Math.min(width - offsetT, symbolWidth);
switch (combinationOperator) { switch (combinationOperator) {
case 0: // OR case 0: // OR
for (t2 = 0; t2 < maxWidth; t2++) { for (t2 = 0; t2 < maxWidth; t2++) {
@ -929,7 +936,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
currentS += symbolWidth - 1; currentS += symbolWidth - 1;
} }
i++; i++;
var deltaS = huffman const deltaS = huffman
? huffmanTables.tableDeltaS.decode(huffmanInput) ? huffmanTables.tableDeltaS.decode(huffmanInput)
: decodeInteger(contextCache, "IADS", decoder); // 6.4.8 : decodeInteger(contextCache, "IADS", decoder); // 6.4.8
if (deltaS === null) { if (deltaS === null) {
@ -1142,10 +1149,10 @@ var Jbig2Image = (function Jbig2ImageClosure() {
} }
function readSegmentHeader(data, start) { function readSegmentHeader(data, start) {
var segmentHeader = {}; const segmentHeader = {};
segmentHeader.number = readUint32(data, start); segmentHeader.number = readUint32(data, start);
var flags = data[start + 4]; const flags = data[start + 4];
var segmentType = flags & 0x3f; const segmentType = flags & 0x3f;
if (!SegmentTypes[segmentType]) { if (!SegmentTypes[segmentType]) {
throw new Jbig2Error("invalid segment type: " + segmentType); throw new Jbig2Error("invalid segment type: " + segmentType);
} }
@ -1153,15 +1160,15 @@ var Jbig2Image = (function Jbig2ImageClosure() {
segmentHeader.typeName = SegmentTypes[segmentType]; segmentHeader.typeName = SegmentTypes[segmentType];
segmentHeader.deferredNonRetain = !!(flags & 0x80); segmentHeader.deferredNonRetain = !!(flags & 0x80);
var pageAssociationFieldSize = !!(flags & 0x40); const pageAssociationFieldSize = !!(flags & 0x40);
var referredFlags = data[start + 5]; const referredFlags = data[start + 5];
var referredToCount = (referredFlags >> 5) & 7; let referredToCount = (referredFlags >> 5) & 7;
var retainBits = [referredFlags & 31]; const retainBits = [referredFlags & 31];
var position = start + 6; let 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; let bytes = (referredToCount + 7) >> 3;
retainBits[0] = data[position++]; retainBits[0] = data[position++];
while (--bytes > 0) { while (--bytes > 0) {
retainBits.push(data[position++]); retainBits.push(data[position++]);
@ -1178,8 +1185,8 @@ var Jbig2Image = (function Jbig2ImageClosure() {
} else if (segmentHeader.number <= 65536) { } else if (segmentHeader.number <= 65536) {
referredToSegmentNumberSize = 2; referredToSegmentNumberSize = 2;
} }
var referredTo = []; const referredTo = [];
var i, ii; let i, ii;
for (i = 0; i < referredToCount; i++) { for (i = 0; i < referredToCount; i++) {
let number; let number;
if (referredToSegmentNumberSize === 1) { if (referredToSegmentNumberSize === 1) {
@ -1206,13 +1213,13 @@ var Jbig2Image = (function Jbig2ImageClosure() {
// 7.2.7 Segment data length, unknown segment length // 7.2.7 Segment data length, unknown segment length
if (segmentType === 38) { if (segmentType === 38) {
// ImmediateGenericRegion // ImmediateGenericRegion
var genericRegionInfo = readRegionSegmentInformation(data, position); const genericRegionInfo = readRegionSegmentInformation(data, position);
var genericRegionSegmentFlags = const genericRegionSegmentFlags =
data[position + RegionSegmentInformationFieldLength]; data[position + RegionSegmentInformationFieldLength];
var genericRegionMmr = !!(genericRegionSegmentFlags & 1); const genericRegionMmr = !!(genericRegionSegmentFlags & 1);
// searching for the segment end // searching for the segment end
var searchPatternLength = 6; const searchPatternLength = 6;
var searchPattern = new Uint8Array(searchPatternLength); const searchPattern = new Uint8Array(searchPatternLength);
if (!genericRegionMmr) { if (!genericRegionMmr) {
searchPattern[0] = 0xff; searchPattern[0] = 0xff;
searchPattern[1] = 0xac; searchPattern[1] = 0xac;
@ -1222,7 +1229,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
searchPattern[4] = (genericRegionInfo.height >> 8) & 0xff; searchPattern[4] = (genericRegionInfo.height >> 8) & 0xff;
searchPattern[5] = genericRegionInfo.height & 0xff; searchPattern[5] = genericRegionInfo.height & 0xff;
for (i = position, ii = data.length; i < ii; i++) { for (i = position, ii = data.length; i < ii; i++) {
var j = 0; let j = 0;
while (j < searchPatternLength && searchPattern[j] === data[i + j]) { while (j < searchPatternLength && searchPattern[j] === data[i + j]) {
j++; j++;
} }
@ -1243,12 +1250,12 @@ var Jbig2Image = (function Jbig2ImageClosure() {
} }
function readSegments(header, data, start, end) { function readSegments(header, data, start, end) {
var segments = []; const segments = [];
var position = start; let position = start;
while (position < end) { while (position < end) {
var segmentHeader = readSegmentHeader(data, position); const segmentHeader = readSegmentHeader(data, position);
position = segmentHeader.headerEnd; position = segmentHeader.headerEnd;
var segment = { const segment = {
header: segmentHeader, header: segmentHeader,
data, data,
}; };
@ -1263,7 +1270,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
} }
} }
if (header.randomAccess) { if (header.randomAccess) {
for (var i = 0, ii = segments.length; i < ii; i++) { for (let i = 0, ii = segments.length; i < ii; i++) {
segments[i].start = position; segments[i].start = position;
position += segments[i].header.length; position += segments[i].header.length;
segments[i].end = position; segments[i].end = position;
@ -1285,12 +1292,12 @@ var Jbig2Image = (function Jbig2ImageClosure() {
var RegionSegmentInformationFieldLength = 17; var RegionSegmentInformationFieldLength = 17;
function processSegment(segment, visitor) { function processSegment(segment, visitor) {
var header = segment.header; const header = segment.header;
var data = segment.data, let data = segment.data,
position = segment.start, position = segment.start,
end = segment.end; end = segment.end;
var args, at, i, atLength; let args, at, i, atLength;
switch (header.type) { switch (header.type) {
case 0: // SymbolDictionary case 0: // SymbolDictionary
// 7.4.2 Symbol dictionary segment syntax // 7.4.2 Symbol dictionary segment syntax
@ -1361,7 +1368,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
textRegion.dsOffset = (textRegionSegmentFlags << 17) >> 27; textRegion.dsOffset = (textRegionSegmentFlags << 17) >> 27;
textRegion.refinementTemplate = (textRegionSegmentFlags >> 15) & 1; textRegion.refinementTemplate = (textRegionSegmentFlags >> 15) & 1;
if (textRegion.huffman) { if (textRegion.huffman) {
var textRegionHuffmanFlags = readUint16(data, position); const textRegionHuffmanFlags = readUint16(data, position);
position += 2; position += 2;
textRegion.huffmanFS = textRegionHuffmanFlags & 3; textRegion.huffmanFS = textRegionHuffmanFlags & 3;
textRegion.huffmanDS = (textRegionHuffmanFlags >> 2) & 3; textRegion.huffmanDS = (textRegionHuffmanFlags >> 2) & 3;
@ -1488,23 +1495,23 @@ var Jbig2Image = (function Jbig2ImageClosure() {
" is not implemented" " is not implemented"
); );
} }
var callbackName = "on" + header.typeName; const callbackName = "on" + header.typeName;
if (callbackName in visitor) { if (callbackName in visitor) {
visitor[callbackName].apply(visitor, args); visitor[callbackName].apply(visitor, args);
} }
} }
function processSegments(segments, visitor) { function processSegments(segments, visitor) {
for (var i = 0, ii = segments.length; i < ii; i++) { for (let i = 0, ii = segments.length; i < ii; i++) {
processSegment(segments[i], visitor); processSegment(segments[i], visitor);
} }
} }
function parseJbig2Chunks(chunks) { function parseJbig2Chunks(chunks) {
var visitor = new SimpleSegmentVisitor(); const visitor = new SimpleSegmentVisitor();
for (var i = 0, ii = chunks.length; i < ii; i++) { for (let i = 0, ii = chunks.length; i < ii; i++) {
var chunk = chunks[i]; const chunk = chunks[i];
var segments = readSegments({}, chunk.data, chunk.start, chunk.end); const segments = readSegments({}, chunk.data, chunk.start, chunk.end);
processSegments(segments, visitor); processSegments(segments, visitor);
} }
return visitor.buffer; return visitor.buffer;
@ -1566,29 +1573,29 @@ var Jbig2Image = (function Jbig2ImageClosure() {
SimpleSegmentVisitor.prototype = { SimpleSegmentVisitor.prototype = {
onPageInformation: function SimpleSegmentVisitor_onPageInformation(info) { onPageInformation: function SimpleSegmentVisitor_onPageInformation(info) {
this.currentPageInfo = info; this.currentPageInfo = info;
var rowSize = (info.width + 7) >> 3; const rowSize = (info.width + 7) >> 3;
var buffer = new Uint8ClampedArray(rowSize * info.height); const buffer = new Uint8ClampedArray(rowSize * info.height);
// The contents of ArrayBuffers are initialized to 0. // The contents of ArrayBuffers are initialized to 0.
// Fill the buffer with 0xFF only if info.defaultPixelValue is set // Fill the buffer with 0xFF only if info.defaultPixelValue is set
if (info.defaultPixelValue) { if (info.defaultPixelValue) {
for (var i = 0, ii = buffer.length; i < ii; i++) { for (let i = 0, ii = buffer.length; i < ii; i++) {
buffer[i] = 0xff; buffer[i] = 0xff;
} }
} }
this.buffer = buffer; this.buffer = buffer;
}, },
drawBitmap: function SimpleSegmentVisitor_drawBitmap(regionInfo, bitmap) { drawBitmap: function SimpleSegmentVisitor_drawBitmap(regionInfo, bitmap) {
var pageInfo = this.currentPageInfo; const pageInfo = this.currentPageInfo;
var width = regionInfo.width, const width = regionInfo.width,
height = regionInfo.height; height = regionInfo.height;
var rowSize = (pageInfo.width + 7) >> 3; const rowSize = (pageInfo.width + 7) >> 3;
var combinationOperator = pageInfo.combinationOperatorOverride const combinationOperator = pageInfo.combinationOperatorOverride
? regionInfo.combinationOperator ? regionInfo.combinationOperator
: pageInfo.combinationOperator; : pageInfo.combinationOperator;
var buffer = this.buffer; const buffer = this.buffer;
var mask0 = 128 >> (regionInfo.x & 7); const mask0 = 128 >> (regionInfo.x & 7);
var offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3); let offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3);
var i, j, mask, offset; let i, j, mask, offset;
switch (combinationOperator) { switch (combinationOperator) {
case 0: // OR case 0: // OR
for (i = 0; i < height; i++) { for (i = 0; i < height; i++) {
@ -1636,9 +1643,9 @@ var Jbig2Image = (function Jbig2ImageClosure() {
start, start,
end end
) { ) {
var regionInfo = region.info; const regionInfo = region.info;
var decodingContext = new DecodingContext(data, start, end); const decodingContext = new DecodingContext(data, start, end);
var bitmap = decodeBitmap( const bitmap = decodeBitmap(
region.mmr, region.mmr,
regionInfo.width, regionInfo.width,
regionInfo.height, regionInfo.height,
@ -1672,13 +1679,13 @@ var Jbig2Image = (function Jbig2ImageClosure() {
} }
// Combines exported symbols from all referred segments // Combines exported symbols from all referred segments
var symbols = this.symbols; let symbols = this.symbols;
if (!symbols) { if (!symbols) {
this.symbols = symbols = {}; this.symbols = symbols = {};
} }
var inputSymbols = []; let inputSymbols = [];
for (var i = 0, ii = referredSegments.length; i < ii; i++) { for (let i = 0, ii = referredSegments.length; i < ii; i++) {
const referredSymbols = symbols[referredSegments[i]]; const referredSymbols = symbols[referredSegments[i]];
// referredSymbols is undefined when we have a reference to a Tables // referredSymbols is undefined when we have a reference to a Tables
// segment instead of a SymbolDictionary. // segment instead of a SymbolDictionary.
@ -1687,7 +1694,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
} }
} }
var decodingContext = new DecodingContext(data, start, end); const decodingContext = new DecodingContext(data, start, end);
symbols[currentSegment] = decodeSymbolDictionary( symbols[currentSegment] = decodeSymbolDictionary(
dictionary.huffman, dictionary.huffman,
dictionary.refinement, dictionary.refinement,
@ -1710,13 +1717,13 @@ var Jbig2Image = (function Jbig2ImageClosure() {
start, start,
end end
) { ) {
var regionInfo = region.info; const regionInfo = region.info;
let huffmanTables, huffmanInput; let huffmanTables, huffmanInput;
// Combines exported symbols from all referred segments // Combines exported symbols from all referred segments
var symbols = this.symbols; const symbols = this.symbols;
var inputSymbols = []; let inputSymbols = [];
for (var i = 0, ii = referredSegments.length; i < ii; i++) { for (let i = 0, ii = referredSegments.length; i < ii; i++) {
const referredSymbols = symbols[referredSegments[i]]; const referredSymbols = symbols[referredSegments[i]];
// referredSymbols is undefined when we have a reference to a Tables // referredSymbols is undefined when we have a reference to a Tables
// segment instead of a SymbolDictionary. // segment instead of a SymbolDictionary.
@ -1724,7 +1731,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
inputSymbols = inputSymbols.concat(referredSymbols); inputSymbols = inputSymbols.concat(referredSymbols);
} }
} }
var symbolCodeLength = log2(inputSymbols.length); const symbolCodeLength = log2(inputSymbols.length);
if (region.huffman) { if (region.huffman) {
huffmanInput = new Reader(data, start, end); huffmanInput = new Reader(data, start, end);
huffmanTables = getTextRegionHuffmanTables( huffmanTables = getTextRegionHuffmanTables(
@ -1736,8 +1743,8 @@ var Jbig2Image = (function Jbig2ImageClosure() {
); );
} }
var decodingContext = new DecodingContext(data, start, end); const decodingContext = new DecodingContext(data, start, end);
var bitmap = decodeTextRegion( const bitmap = decodeTextRegion(
region.huffman, region.huffman,
region.refinement, region.refinement,
regionInfo.width, regionInfo.width,