Skip to content

Commit f014481

Browse files
committed
Replaces throw to error() and uses shadow()
1 parent 699abbd commit f014481

File tree

1 file changed

+24
-33
lines changed

1 file changed

+24
-33
lines changed

src/jbig2.js

Lines changed: 24 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -188,23 +188,11 @@ var Jbig2Image = (function Jbig2ImageClosure() {
188188
DecodingContext.prototype = {
189189
get decoder() {
190190
var decoder = new ArithmeticDecoder(this.data, this.start, this.end);
191-
Object.defineProperty(this, 'decoder', {
192-
value: decoder,
193-
writable: false,
194-
configurable: true,
195-
enumerable: true
196-
});
197-
return decoder;
191+
return shadow(this, 'decoder', decoder);
198192
},
199193
get contextCache() {
200194
var cache = new ContextCache();
201-
Object.defineProperty(this, 'contextCache', {
202-
value: cache,
203-
writable: false,
204-
configurable: true,
205-
enumerable: true
206-
});
207-
return cache;
195+
return shadow(this, 'contextCache', cache);
208196
}
209197
};
210198

@@ -374,7 +362,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
374362
function decodeBitmap(mmr, width, height, templateIndex, prediction, skip, at,
375363
decodingContext) {
376364
if (mmr)
377-
throw 'MMR encoding is not supported';
365+
error('JBIG2 error: MMR encoding is not supported');
378366

379367
var useskip = !!skip;
380368
var template = CodingTemplates[templateIndex].concat(at);
@@ -476,7 +464,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
476464
bitmap.push(row);
477465
for (var j = 0; j < width; j++) {
478466
if (ltp)
479-
throw 'prediction is not supported';
467+
error('JBIG2 error: prediction is not supported');
480468

481469
var contextLabel = 0;
482470
for (var k = 0; k < codingTemplateLength; k++) {
@@ -512,7 +500,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
512500
refinementTemplateIndex, refinementAt,
513501
decodingContext) {
514502
if (huffman)
515-
throw 'huffman is not supported';
503+
error('JBIG2 error: huffman is not supported');
516504

517505
var newSymbols = [];
518506
var currentHeight = 0;
@@ -537,7 +525,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
537525
// 6.5.8.2 Refinement/aggregate-coded symbol bitmap
538526
var numberOfInstances = decodeInteger(contextCache, 'IAAI', decoder);
539527
if (numberOfInstances > 1)
540-
throw 'number of instances > 1 is not supported';
528+
error('JBIG2 error: number of instances > 1 is not supported');
541529
var symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);
542530
var rdx = decodeInteger(contextCache, 'IARDX', decoder); // 6.4.11.3
543531
var rdy = decodeInteger(contextCache, 'IARDY', decoder); // 6.4.11.4
@@ -578,7 +566,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
578566
refinementTemplateIndex, refinementAt,
579567
decodingContext) {
580568
if (huffman)
581-
throw 'huffman is not supported';
569+
error('JBIG2 error: huffman is not supported');
582570

583571
// Prepare bitmap
584572
var bitmap = [];
@@ -595,9 +583,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
595583
var contextCache = decodingContext.contextCache;
596584

597585
if (transposed)
598-
throw 'transposed!=0 is not supported';
599-
if (combinationOperator != 0 && combinationOperator != 2)
600-
throw 'combinationOperator==' + combinationOperator + ' is not supported';
586+
error('JBIG2 error: transposed is not supported');
601587

602588
var stripT = -decodeInteger(contextCache, 'IADT', decoder); // 6.4.6
603589
var firstS = 0;
@@ -646,6 +632,9 @@ var Jbig2Image = (function Jbig2ImageClosure() {
646632
for (var s2 = 0; s2 < symbolWidth; s2++)
647633
row[offsetS + s2] ^= symbolRow[s2];
648634
break;
635+
default:
636+
error('JBIG2 error: operator ' + combinationOperator +
637+
' is not supported');
649638
}
650639
}
651640

@@ -667,7 +656,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
667656
var flags = data[start + 4];
668657
var segmentType = flags & 0x3F;
669658
if (!SegmentTypes[segmentType])
670-
throw 'Invalid segment type: ' + segmentType;
659+
error('JBIG2 error: invalid segment type: ' + segmentType);
671660
segmentHeader.type = segmentType;
672661
segmentHeader.typeName = SegmentTypes[segmentType];
673662
segmentHeader.deferredNonRetain = !!(flags & 0x80);
@@ -685,7 +674,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
685674
retainBits.push(data[position++]);
686675
}
687676
} else if (referredFlags == 5 || referredFlags == 6)
688-
throw 'Invalid referred-to flags';
677+
error('JBIG2 error: invalid referred-to flags');
689678
segmentHeader.retainBits = retainBits;
690679
var referredToSegmentNumberSize = segmentHeader.number <= 256 ? 1 :
691680
segmentHeader.number <= 65536 ? 2 : 4;
@@ -706,7 +695,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
706695
}
707696
segmentHeader.length = readUint32(data, position);
708697
if (segmentHeader.length == 0xFFFFFFFF)
709-
throw 'Unsupported unknown segment length';
698+
error('JBIG2 error: unknown segment length is not supported');
710699
position += 4;
711700
segmentHeader.headerEnd = position;
712701
return segmentHeader;
@@ -847,7 +836,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
847836
position += 4;
848837
// TODO 7.4.3.1.7 Symbol ID Huffman table decoding
849838
if (textRegion.huffman)
850-
throw 'huffman is not supported';
839+
error('JBIG2 error: huffman is not supported');
851840
args = [textRegion, header.referredTo, data, position, end];
852841
break;
853842
case 38: // ImmediateGenericRegion
@@ -896,8 +885,8 @@ var Jbig2Image = (function Jbig2ImageClosure() {
896885
case 51: // EndOfFile
897886
break;
898887
default:
899-
throw 'Segment type is not implemented: ' +
900-
header.type + '/' + header.typeName;
888+
error('JBIG2 error: segment type ' + header.typeName + '(' +
889+
header.type + ') is not implemented');
901890
}
902891
if (header.typeName in visitor)
903892
visitor[header.typeName].apply(visitor, args);
@@ -914,7 +903,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
914903
data[position + 2] != 0x42 || data[position + 3] != 0x32 ||
915904
data[position + 4] != 0x0D || data[position + 5] != 0x0A ||
916905
data[position + 6] != 0x1A || data[position + 7] != 0x0A)
917-
throw 'JBIG2 invalid header';
906+
error('JBIG2 error: invalid header');
918907
var header = {};
919908
position += 8;
920909
var flags = data[position++];
@@ -924,6 +913,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
924913
position += 4;
925914
}
926915
var segments = readSegments(header, data, position, end);
916+
error('Not implemented');
927917
// processSegments(segments, new SimpleSegmentVisitor());
928918
}
929919

@@ -953,13 +943,13 @@ var Jbig2Image = (function Jbig2ImageClosure() {
953943
var pageInfo = this.currentPageInfo;
954944
var width = regionInfo.width, height = regionInfo.height;
955945
var rowSize = (pageInfo.width + 7) >> 3;
956-
var operator = pageInfo.combinationOperatorOverride ?
946+
var combinationOperator = pageInfo.combinationOperatorOverride ?
957947
regionInfo.combinationOperator : pageInfo.combinationOperator;
958948
var buffer = this.buffer;
959949
for (var i = 0; i < height; i++) {
960950
var mask = 128 >> (regionInfo.x & 7);
961951
var offset = (i + regionInfo.y) * rowSize + (regionInfo.x >> 3);
962-
switch (operator) {
952+
switch (combinationOperator) {
963953
case 0: // OR
964954
for (var j = 0; j < width; j++) {
965955
buffer[offset] |= bitmap[i][j] ? mask : 0;
@@ -981,7 +971,8 @@ var Jbig2Image = (function Jbig2ImageClosure() {
981971
}
982972
break;
983973
default:
984-
throw 'Unimplemented operator: ' + operator;
974+
error('JBIG2 error: operator ' + combinationOperator +
975+
' is not supported');
985976
}
986977
}
987978
},
@@ -1001,7 +992,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
1001992
data, start, end) {
1002993
var huffmanTables;
1003994
if (dictionary.huffman)
1004-
throw 'huffman is not supported';
995+
error('JBIG2 error: huffman is not supported');
1005996

1006997
// Combines exported symbols from all referred segments
1007998
var symbols = this.symbols;

0 commit comments

Comments
 (0)