Browse Source

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

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

16
src/core/jbig2.js

@ -445,8 +445,19 @@ var Jbig2Image = (function Jbig2ImageClosure() {
// 6.5.8.2 Refinement/aggregate-coded symbol bitmap // 6.5.8.2 Refinement/aggregate-coded symbol bitmap
var numberOfInstances = decodeInteger(contextCache, 'IAAI', decoder); var numberOfInstances = decodeInteger(contextCache, 'IAAI', decoder);
if (numberOfInstances > 1) { if (numberOfInstances > 1) {
error('JBIG2 error: number of instances > 1 is not supported'); 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 symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);
var rdx = decodeInteger(contextCache, 'IARDX', decoder); // 6.4.11.3 var rdx = decodeInteger(contextCache, 'IARDX', decoder); // 6.4.11.3
var rdy = decodeInteger(contextCache, 'IARDY', decoder); // 6.4.11.4 var rdy = decodeInteger(contextCache, 'IARDY', decoder); // 6.4.11.4
@ -455,6 +466,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
bitmap = decodeRefinement(currentWidth, currentHeight, bitmap = decodeRefinement(currentWidth, currentHeight,
refinementTemplateIndex, symbol, rdx, rdy, false, refinementAt, refinementTemplateIndex, symbol, rdx, rdy, false, refinementAt,
decodingContext); decodingContext);
}
} else { } else {
// 6.5.8.1 Direct-coded symbol bitmap // 6.5.8.1 Direct-coded symbol bitmap
bitmap = decodeBitmap(false, currentWidth, currentHeight, bitmap = decodeBitmap(false, currentWidth, currentHeight,

Loading…
Cancel
Save