More bit friendly decodeIAID and decodeInteger

This commit is contained in:
p01 2014-03-04 17:28:53 +01:00
parent e862c64bb8
commit 02a5f9435a

View File

@ -105,7 +105,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
offset = 340; offset = 340;
break; break;
default: default:
v = v * 2 + bit; v = ((v << 1) | bit) >>> 0;
if (--toRead === 0) { if (--toRead === 0) {
state = 0; state = 0;
} }
@ -124,12 +124,12 @@ var Jbig2Image = (function Jbig2ImageClosure() {
var prev = 1; var prev = 1;
for (var i = 0; i < codeLength; i++) { for (var i = 0; i < codeLength; i++) {
var bit = decoder.readBit(contexts, prev); var bit = decoder.readBit(contexts, prev);
prev = (prev * 2) + bit; prev = (prev << 1) | bit;
} }
if (codeLength < 31) { if (codeLength < 31) {
return prev & ((1 << codeLength) - 1); return prev & ((1 << codeLength) - 1);
} }
return prev - Math.pow(2, codeLength); return prev & 0x7FFFFFFF;
} }
// 7.3 Segment types // 7.3 Segment types