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 ?
|
var combinationOperator = pageInfo.combinationOperatorOverride ?
|
||||||
regionInfo.combinationOperator : pageInfo.combinationOperator;
|
regionInfo.combinationOperator : pageInfo.combinationOperator;
|
||||||
var buffer = this.buffer;
|
var buffer = this.buffer;
|
||||||
for (var i = 0; i < height; i++) {
|
switch (combinationOperator) {
|
||||||
var mask = 128 >> (regionInfo.x & 7);
|
case 0: // OR
|
||||||
var offset = (i + regionInfo.y) * rowSize + (regionInfo.x >> 3);
|
for (var i = 0; i < height; i++) {
|
||||||
switch (combinationOperator) {
|
var mask = 128 >> (regionInfo.x & 7);
|
||||||
case 0: // OR
|
var offset = (i + regionInfo.y) * rowSize + (regionInfo.x >> 3);
|
||||||
for (var j = 0; j < width; j++) {
|
for (var j = 0; j < width; j++) {
|
||||||
buffer[offset] |= bitmap[i][j] ? mask : 0;
|
if (bitmap[i][j]) {
|
||||||
|
buffer[offset] |= mask;
|
||||||
|
}
|
||||||
mask >>= 1;
|
mask >>= 1;
|
||||||
if (!mask) {
|
if (!mask) {
|
||||||
mask = 128;
|
mask = 128;
|
||||||
offset++;
|
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++) {
|
for (var j = 0; j < width; j++) {
|
||||||
buffer[offset] ^= bitmap[i][j] ? mask : 0;
|
if (bitmap[i][j]) {
|
||||||
|
buffer[offset] ^= mask;
|
||||||
|
}
|
||||||
mask >>= 1;
|
mask >>= 1;
|
||||||
if (!mask) {
|
if (!mask) {
|
||||||
mask = 128;
|
mask = 128;
|
||||||
offset++;
|
offset++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
}
|
||||||
default:
|
break;
|
||||||
error('JBIG2 error: operator ' + combinationOperator +
|
default:
|
||||||
' is not supported');
|
error('JBIG2 error: operator ' + combinationOperator +
|
||||||
}
|
' is not supported');
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onImmediateGenericRegion:
|
onImmediateGenericRegion:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user