|
|
@ -572,10 +572,6 @@ var Jbig2Image = (function Jbig2ImageClosure() { |
|
|
|
|
|
|
|
|
|
|
|
var decoder = decodingContext.decoder; |
|
|
|
var decoder = decodingContext.decoder; |
|
|
|
var contextCache = decodingContext.contextCache; |
|
|
|
var contextCache = decodingContext.contextCache; |
|
|
|
|
|
|
|
|
|
|
|
if (transposed) |
|
|
|
|
|
|
|
error('JBIG2 error: transposed is not supported'); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var stripT = -decodeInteger(contextCache, 'IADT', decoder); // 6.4.6
|
|
|
|
var stripT = -decodeInteger(contextCache, 'IADT', decoder); // 6.4.6
|
|
|
|
var firstS = 0; |
|
|
|
var firstS = 0; |
|
|
|
var i = 0; |
|
|
|
var i = 0; |
|
|
@ -610,28 +606,60 @@ var Jbig2Image = (function Jbig2ImageClosure() { |
|
|
|
} |
|
|
|
} |
|
|
|
var offsetT = t - ((referenceCorner & 1) ? 0 : symbolHeight); |
|
|
|
var offsetT = t - ((referenceCorner & 1) ? 0 : symbolHeight); |
|
|
|
var offsetS = currentS - ((referenceCorner & 2) ? symbolWidth : 0); |
|
|
|
var offsetS = currentS - ((referenceCorner & 2) ? symbolWidth : 0); |
|
|
|
for (var t2 = 0; t2 < symbolHeight; t2++) { |
|
|
|
if (transposed) { |
|
|
|
var row = bitmap[offsetT + t2]; |
|
|
|
// Place Symbol Bitmap from T1,S1
|
|
|
|
if (!row) continue; |
|
|
|
for (var s2 = 0; s2 < symbolHeight; s2++) { |
|
|
|
var symbolRow = symbolBitmap[t2]; |
|
|
|
var row = bitmap[offsetS + s2]; |
|
|
|
switch (combinationOperator) { |
|
|
|
if (!row) { |
|
|
|
case 0: // OR
|
|
|
|
continue; |
|
|
|
for (var s2 = 0; s2 < symbolWidth; s2++) |
|
|
|
} |
|
|
|
row[offsetS + s2] |= symbolRow[s2]; |
|
|
|
var symbolRow = symbolBitmap[s2]; |
|
|
|
break; |
|
|
|
// To ignore Parts of Symbol bitmap which goes
|
|
|
|
case 2: // XOR
|
|
|
|
// outside bitmap region
|
|
|
|
for (var s2 = 0; s2 < symbolWidth; s2++) |
|
|
|
var maxWidth = Math.min(width - offsetT, symbolWidth); |
|
|
|
row[offsetS + s2] ^= symbolRow[s2]; |
|
|
|
switch (combinationOperator) { |
|
|
|
break; |
|
|
|
case 0: // OR
|
|
|
|
default: |
|
|
|
for (var t2 = 0; t2 < maxWidth; t2++) { |
|
|
|
error('JBIG2 error: operator ' + combinationOperator + |
|
|
|
row[offsetT + t2] |= symbolRow[t2]; |
|
|
|
' is not supported'); |
|
|
|
} |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case 2: // XOR
|
|
|
|
|
|
|
|
for (var t2 = 0; t2 < maxWidth; t2++) { |
|
|
|
|
|
|
|
row[offsetT + t2] ^= symbolRow[t2]; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
default: |
|
|
|
|
|
|
|
error('JBIG2 error: operator ' + combinationOperator + |
|
|
|
|
|
|
|
' is not supported'); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
currentS += symbolHeight - 1; |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
for (var t2 = 0; t2 < symbolHeight; t2++) { |
|
|
|
|
|
|
|
var row = bitmap[offsetT + t2]; |
|
|
|
|
|
|
|
if (!row) { |
|
|
|
|
|
|
|
continue; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
var symbolRow = symbolBitmap[t2]; |
|
|
|
|
|
|
|
switch (combinationOperator) { |
|
|
|
|
|
|
|
case 0: // OR
|
|
|
|
|
|
|
|
for (var s2 = 0; s2 < symbolWidth; s2++) { |
|
|
|
|
|
|
|
row[offsetS + s2] |= symbolRow[s2]; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case 2: // XOR
|
|
|
|
|
|
|
|
for (var s2 = 0; s2 < symbolWidth; s2++) { |
|
|
|
|
|
|
|
row[offsetS + s2] ^= symbolRow[s2]; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
default: |
|
|
|
|
|
|
|
error('JBIG2 error: operator ' + combinationOperator + |
|
|
|
|
|
|
|
' is not supported'); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
currentS += symbolWidth - 1; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
currentS += symbolWidth - 1; |
|
|
|
|
|
|
|
i++; |
|
|
|
i++; |
|
|
|
|
|
|
|
|
|
|
|
var deltaS = decodeInteger(contextCache, 'IADS', decoder); // 6.4.8
|
|
|
|
var deltaS = decodeInteger(contextCache, 'IADS', decoder); // 6.4.8
|
|
|
|
if (deltaS === null) |
|
|
|
if (deltaS === null) |
|
|
|
break; // OOB
|
|
|
|
break; // OOB
|
|
|
|