Browse Source

Fix for #3181: jbig2 encoding for number of instances greater than 1

Manas (prometheansacrifice) 11 years ago
parent
commit
3025445cbe
  1. 28
      src/core/jbig2.js

28
src/core/jbig2.js

@ -445,16 +445,28 @@ var Jbig2Image = (function Jbig2ImageClosure() { @@ -445,16 +445,28 @@ var Jbig2Image = (function Jbig2ImageClosure() {
// 6.5.8.2 Refinement/aggregate-coded symbol bitmap
var numberOfInstances = decodeInteger(contextCache, 'IAAI', decoder);
if (numberOfInstances > 1) {
error('JBIG2 error: number of instances > 1 is not supported');
}
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 = (symbolId < symbols.length ? symbols[symbolId] :
newSymbols[symbolId - symbols.length]);
bitmap = decodeRefinement(currentWidth, currentHeight,
bitmap = decodeTextRegion(huffman, refinement,
currentWidth, currentHeight, 0,
numberOfInstances, 1, //strip size
symbols.concat(newSymbols),
symbolCodeLength,
0, //transposed
0, //ds offset
1, //top left 7.4.3.1.1
0, //OR operator
huffmanTables,
refinementTemplateIndex, refinementAt,
decodingContext);
} 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 = (symbolId < symbols.length ? symbols[symbolId] :
newSymbols[symbolId - symbols.length]);
bitmap = decodeRefinement(currentWidth, currentHeight,
refinementTemplateIndex, symbol, rdx, rdy, false, refinementAt,
decodingContext);
}
} else {
// 6.5.8.1 Direct-coded symbol bitmap
bitmap = decodeBitmap(false, currentWidth, currentHeight,

Loading…
Cancel
Save