@ -29,10 +29,11 @@
} ( this , function ( exports , sharedUtil , coreArithmeticDecoder ) {
} ( this , function ( exports , sharedUtil , coreArithmeticDecoder ) {
var info = sharedUtil . info ;
var info = sharedUtil . info ;
var warn = sharedUtil . warn ;
var error = sharedUtil . error ;
var log2 = sharedUtil . log2 ;
var log2 = sharedUtil . log2 ;
var readUint16 = sharedUtil . readUint16 ;
var readUint16 = sharedUtil . readUint16 ;
var readUint32 = sharedUtil . readUint32 ;
var readUint32 = sharedUtil . readUint32 ;
var warn = sharedUtil . warn ;
var ArithmeticDecoder = coreArithmeticDecoder . ArithmeticDecoder ;
var ArithmeticDecoder = coreArithmeticDecoder . ArithmeticDecoder ;
var JpxImage = ( function JpxImageClosure ( ) {
var JpxImage = ( function JpxImageClosure ( ) {
@ -74,7 +75,7 @@ var JpxImage = (function JpxImageClosure() {
lbox = length - position + headerSize ;
lbox = length - position + headerSize ;
}
}
if ( lbox < headerSize ) {
if ( lbox < headerSize ) {
throw new E rror( 'JPX Error: Invalid box field size' ) ;
e rror( 'JPX Error: Invalid box field size' ) ;
}
}
var dataLength = lbox - headerSize ;
var dataLength = lbox - headerSize ;
var jumpDataLength = true ;
var jumpDataLength = true ;
@ -152,12 +153,12 @@ var JpxImage = (function JpxImageClosure() {
return ;
return ;
}
}
}
}
throw new E rror( 'JPX Error: No size marker found in JPX stream' ) ;
e rror( 'JPX Error: No size marker found in JPX stream' ) ;
} ,
} ,
parseCodestream : function JpxImage _parseCodestream ( data , start , end ) {
parseCodestream : function JpxImage _parseCodestream ( data , start , end ) {
var context = { } ;
var context = { } ;
try {
var doNotRecover = false ;
var doNotRecover = false ;
try {
var position = start ;
var position = start ;
while ( position + 1 < end ) {
while ( position + 1 < end ) {
var code = readUint16 ( data , position ) ;
var code = readUint16 ( data , position ) ;
@ -220,7 +221,7 @@ var JpxImage = (function JpxImageClosure() {
scalarExpounded = true ;
scalarExpounded = true ;
break ;
break ;
default :
default :
throw new Error ( 'JPX Error: Invalid SQcd value ' + sqcd ) ;
throw new Error ( 'Invalid SQcd value ' + sqcd ) ;
}
}
qcd . noQuantization = ( spqcdSize === 8 ) ;
qcd . noQuantization = ( spqcdSize === 8 ) ;
qcd . scalarExpounded = scalarExpounded ;
qcd . scalarExpounded = scalarExpounded ;
@ -272,7 +273,7 @@ var JpxImage = (function JpxImageClosure() {
scalarExpounded = true ;
scalarExpounded = true ;
break ;
break ;
default :
default :
throw new Error ( 'JPX Error: Invalid SQcd value ' + sqcd ) ;
throw new Error ( 'Invalid SQcd value ' + sqcd ) ;
}
}
qcc . noQuantization = ( spqcdSize === 8 ) ;
qcc . noQuantization = ( spqcdSize === 8 ) ;
qcc . scalarExpounded = scalarExpounded ;
qcc . scalarExpounded = scalarExpounded ;
@ -350,7 +351,7 @@ var JpxImage = (function JpxImageClosure() {
}
}
if ( unsupported . length > 0 ) {
if ( unsupported . length > 0 ) {
doNotRecover = true ;
doNotRecover = true ;
throw new Error ( 'JPX Error: Unsupported COD options (' +
throw new Error ( 'Unsupported COD options (' +
unsupported . join ( ', ' ) + ')' ) ;
unsupported . join ( ', ' ) + ')' ) ;
}
}
if ( context . mainHeader ) {
if ( context . mainHeader ) {
@ -398,19 +399,18 @@ var JpxImage = (function JpxImageClosure() {
// skipping content
// skipping content
break ;
break ;
case 0xFF53 : // Coding style component (COC)
case 0xFF53 : // Coding style component (COC)
throw new Error ( 'JPX Error: Codestream code 0xFF53 (COC) is ' +
throw new Error ( 'Codestream code 0xFF53 (COC) is ' +
'not implemented' ) ;
'not implemented' ) ;
default :
default :
throw new Error ( 'JPX Error: Unknown codestream code: ' +
throw new Error ( 'Unknown codestream code: ' + code . toString ( 16 ) ) ;
code . toString ( 16 ) ) ;
}
}
position += length ;
position += length ;
}
}
} catch ( e ) {
} catch ( e ) {
if ( doNotRecover || this . failOnCorruptedImage ) {
if ( doNotRecover || this . failOnCorruptedImage ) {
throw e ;
error ( 'JPX Error: ' + e . message ) ;
} else {
} else {
warn ( 'Trying to recover from ' + e . message ) ;
warn ( 'JPX: Trying to recover from: ' + e . message ) ;
}
}
}
}
this . tiles = transformComponents ( context ) ;
this . tiles = transformComponents ( context ) ;
@ -660,7 +660,7 @@ var JpxImage = (function JpxImageClosure() {
}
}
r = 0 ;
r = 0 ;
}
}
throw new E rror( 'JPX Error: Out of packets' ) ;
e rror( 'JPX Error: Out of packets' ) ;
} ;
} ;
}
}
function ResolutionLayerComponentPositionIterator ( context ) {
function ResolutionLayerComponentPositionIterator ( context ) {
@ -700,7 +700,7 @@ var JpxImage = (function JpxImageClosure() {
}
}
l = 0 ;
l = 0 ;
}
}
throw new E rror( 'JPX Error: Out of packets' ) ;
e rror( 'JPX Error: Out of packets' ) ;
} ;
} ;
}
}
function ResolutionPositionComponentLayerIterator ( context ) {
function ResolutionPositionComponentLayerIterator ( context ) {
@ -759,7 +759,7 @@ var JpxImage = (function JpxImageClosure() {
}
}
p = 0 ;
p = 0 ;
}
}
throw new E rror( 'JPX Error: Out of packets' ) ;
e rror( 'JPX Error: Out of packets' ) ;
} ;
} ;
}
}
function PositionComponentResolutionLayerIterator ( context ) {
function PositionComponentResolutionLayerIterator ( context ) {
@ -806,7 +806,7 @@ var JpxImage = (function JpxImageClosure() {
}
}
px = 0 ;
px = 0 ;
}
}
throw new E rror( 'JPX Error: Out of packets' ) ;
e rror( 'JPX Error: Out of packets' ) ;
} ;
} ;
}
}
function ComponentPositionResolutionLayerIterator ( context ) {
function ComponentPositionResolutionLayerIterator ( context ) {
@ -852,7 +852,7 @@ var JpxImage = (function JpxImageClosure() {
}
}
py = 0 ;
py = 0 ;
}
}
throw new E rror( 'JPX Error: Out of packets' ) ;
e rror( 'JPX Error: Out of packets' ) ;
} ;
} ;
}
}
function getPrecinctIndexIfExist (
function getPrecinctIndexIfExist (
@ -1032,8 +1032,7 @@ var JpxImage = (function JpxImageClosure() {
new ComponentPositionResolutionLayerIterator ( context ) ;
new ComponentPositionResolutionLayerIterator ( context ) ;
break ;
break ;
default :
default :
throw new Error ( 'JPX Error: Unsupported progression order ' +
error ( 'JPX Error: Unsupported progression order ' + progressionOrder ) ;
progressionOrder ) ;
}
}
}
}
function parseTilePackets ( context , data , offset , dataLength ) {
function parseTilePackets ( context , data , offset , dataLength ) {
@ -1970,7 +1969,7 @@ var JpxImage = (function JpxImageClosure() {
( decoder . readBit ( contexts , UNIFORM _CONTEXT ) << 1 ) |
( decoder . readBit ( contexts , UNIFORM _CONTEXT ) << 1 ) |
decoder . readBit ( contexts , UNIFORM _CONTEXT ) ;
decoder . readBit ( contexts , UNIFORM _CONTEXT ) ;
if ( symbol !== 0xA ) {
if ( symbol !== 0xA ) {
throw new E rror( 'JPX Error: Invalid segmentation symbol' ) ;
e rror( 'JPX Error: Invalid segmentation symbol' ) ;
}
}
}
}
} ;
} ;