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