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:
parent
52961197d3
commit
7ca3a34e1f
@ -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,
|
||||
|
Loading…
x
Reference in New Issue
Block a user