JBIG2 20% faster SimpleSegmentVisitor_drawBitmap
Moved the switch(combinationOperator) outside the width and height loops Check bitmap[i][j] before applying the switch(combinationOperator)
This commit is contained in:
parent
1c0e1cc591
commit
e862c64bb8
@ -938,34 +938,42 @@ var Jbig2Image = (function Jbig2ImageClosure() {
|
||||
var combinationOperator = pageInfo.combinationOperatorOverride ?
|
||||
regionInfo.combinationOperator : pageInfo.combinationOperator;
|
||||
var buffer = this.buffer;
|
||||
for (var i = 0; i < height; i++) {
|
||||
var mask = 128 >> (regionInfo.x & 7);
|
||||
var offset = (i + regionInfo.y) * rowSize + (regionInfo.x >> 3);
|
||||
switch (combinationOperator) {
|
||||
case 0: // OR
|
||||
switch (combinationOperator) {
|
||||
case 0: // OR
|
||||
for (var i = 0; i < height; i++) {
|
||||
var mask = 128 >> (regionInfo.x & 7);
|
||||
var offset = (i + regionInfo.y) * rowSize + (regionInfo.x >> 3);
|
||||
for (var j = 0; j < width; j++) {
|
||||
buffer[offset] |= bitmap[i][j] ? mask : 0;
|
||||
if (bitmap[i][j]) {
|
||||
buffer[offset] |= mask;
|
||||
}
|
||||
mask >>= 1;
|
||||
if (!mask) {
|
||||
mask = 128;
|
||||
offset++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2: // XOR
|
||||
}
|
||||
break;
|
||||
case 2: // XOR
|
||||
for (var i = 0; i < height; i++) {
|
||||
var mask = 128 >> (regionInfo.x & 7);
|
||||
var offset = (i + regionInfo.y) * rowSize + (regionInfo.x >> 3);
|
||||
for (var j = 0; j < width; j++) {
|
||||
buffer[offset] ^= bitmap[i][j] ? mask : 0;
|
||||
if (bitmap[i][j]) {
|
||||
buffer[offset] ^= mask;
|
||||
}
|
||||
mask >>= 1;
|
||||
if (!mask) {
|
||||
mask = 128;
|
||||
offset++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
error('JBIG2 error: operator ' + combinationOperator +
|
||||
' is not supported');
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
error('JBIG2 error: operator ' + combinationOperator +
|
||||
' is not supported');
|
||||
}
|
||||
},
|
||||
onImmediateGenericRegion:
|
||||
|
Loading…
x
Reference in New Issue
Block a user