mirror of
https://github.com/openseadragon/openseadragon.git
synced 2024-11-22 21:26:10 +03:00
patch for recursive function call causing ie8 errors - oops. Also completed support for jsonp dzi format/protocol which is useful for running openseadragon from the filesystem as well, see main gh-pages index.html for example
This commit is contained in:
parent
e595ad2381
commit
107a5efabf
@ -773,6 +773,10 @@ OpenSeadragon = window.OpenSeadragon || function( options ){
|
|||||||
document.documentElement.scrollTop
|
document.documentElement.scrollTop
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
} else {
|
||||||
|
$.getPageScroll = function(){
|
||||||
|
return new $.Point(0,0);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
return $.getPageScroll();
|
return $.getPageScroll();
|
||||||
@ -1283,7 +1287,11 @@ OpenSeadragon = window.OpenSeadragon || function( options ){
|
|||||||
// Install callback
|
// Install callback
|
||||||
window[ jsonpCallback ] = function( response ) {
|
window[ jsonpCallback ] = function( response ) {
|
||||||
if ( !previous ){
|
if ( !previous ){
|
||||||
delete window[ jsonpCallback ];
|
try{
|
||||||
|
delete window[ jsonpCallback ];
|
||||||
|
}catch(e){
|
||||||
|
//swallow
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
window[ jsonpCallback ] = previous;
|
window[ jsonpCallback ] = previous;
|
||||||
}
|
}
|
||||||
@ -1343,7 +1351,8 @@ OpenSeadragon = window.OpenSeadragon || function( options ){
|
|||||||
urlParts,
|
urlParts,
|
||||||
filename,
|
filename,
|
||||||
lastDot,
|
lastDot,
|
||||||
tilesUrl;
|
tilesUrl,
|
||||||
|
callbackName;
|
||||||
|
|
||||||
|
|
||||||
if( tileHost ){
|
if( tileHost ){
|
||||||
@ -1384,11 +1393,23 @@ OpenSeadragon = window.OpenSeadragon || function( options ){
|
|||||||
callback( source, error );
|
callback( source, error );
|
||||||
}, 1);
|
}, 1);
|
||||||
} else {
|
} else {
|
||||||
$.makeAjaxRequest( xmlUrl, function( xhr ) {
|
if( xmlUrl.match(/\.js$/) ){
|
||||||
var source = finish( processDZIResponse, xhr );
|
callbackName = xmlUrl.split( '/' ).pop().replace('.js','_dzi');
|
||||||
// call after finish sets error
|
$.jsonp({
|
||||||
callback( source, error );
|
url: xmlUrl,
|
||||||
});
|
callbackName: callbackName,
|
||||||
|
callback: function( imageData ){
|
||||||
|
var source = finish( processDZIJSON, imageData.Image );
|
||||||
|
callback( source );
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
$.makeAjaxRequest( xmlUrl, function( xhr ) {
|
||||||
|
var source = finish( processDZIResponse, xhr );
|
||||||
|
// call after finish sets error
|
||||||
|
callback( source, error );
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
@ -1674,6 +1695,53 @@ OpenSeadragon = window.OpenSeadragon || function( options ){
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @private
|
||||||
|
* @inner
|
||||||
|
* @function
|
||||||
|
* @param {Element} imageNode
|
||||||
|
* @param {String} tilesUrl
|
||||||
|
*/
|
||||||
|
function processDZIJSON( imageData, tilesUrl ) {
|
||||||
|
var fileFormat = imageData.Format,
|
||||||
|
sizeData = imageData.Size,
|
||||||
|
dispRectData = imageData.DisplayRect || [],
|
||||||
|
width = parseInt( sizeData.Width ),
|
||||||
|
height = parseInt( sizeData.Height ),
|
||||||
|
tileSize = parseInt( imageData.TileSize ),
|
||||||
|
tileOverlap = parseInt( imageData.Overlap ),
|
||||||
|
dispRects = [],
|
||||||
|
rectData,
|
||||||
|
i;
|
||||||
|
|
||||||
|
if ( !imageFormatSupported( fileFormat ) ) {
|
||||||
|
throw new Error(
|
||||||
|
$.getString( "Errors.ImageFormat", fileFormat.toUpperCase() )
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
for ( i = 0; i < dispRectData.length; i++ ) {
|
||||||
|
rectData = dispRectData[ i ].Rect;
|
||||||
|
|
||||||
|
dispRects.push( new $.DisplayRect(
|
||||||
|
parseInt( rectData.X ),
|
||||||
|
parseInt( rectData.Y ),
|
||||||
|
parseInt( rectData.Width ),
|
||||||
|
parseInt( rectData.Height ),
|
||||||
|
0, // ignore MinLevel attribute, bug in Deep Zoom Composer
|
||||||
|
parseInt( rectData.MaxLevel )
|
||||||
|
));
|
||||||
|
}
|
||||||
|
return new $.DziTileSource(
|
||||||
|
width,
|
||||||
|
height,
|
||||||
|
tileSize,
|
||||||
|
tileOverlap,
|
||||||
|
tilesUrl,
|
||||||
|
fileFormat,
|
||||||
|
dispRects
|
||||||
|
);
|
||||||
|
};
|
||||||
/**
|
/**
|
||||||
* @private
|
* @private
|
||||||
* @inner
|
* @inner
|
||||||
|
@ -773,6 +773,10 @@ OpenSeadragon = window.OpenSeadragon || function( options ){
|
|||||||
document.documentElement.scrollTop
|
document.documentElement.scrollTop
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
} else {
|
||||||
|
$.getPageScroll = function(){
|
||||||
|
return new $.Point(0,0);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
return $.getPageScroll();
|
return $.getPageScroll();
|
||||||
@ -1283,7 +1287,11 @@ OpenSeadragon = window.OpenSeadragon || function( options ){
|
|||||||
// Install callback
|
// Install callback
|
||||||
window[ jsonpCallback ] = function( response ) {
|
window[ jsonpCallback ] = function( response ) {
|
||||||
if ( !previous ){
|
if ( !previous ){
|
||||||
delete window[ jsonpCallback ];
|
try{
|
||||||
|
delete window[ jsonpCallback ];
|
||||||
|
}catch(e){
|
||||||
|
//swallow
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
window[ jsonpCallback ] = previous;
|
window[ jsonpCallback ] = previous;
|
||||||
}
|
}
|
||||||
@ -1343,7 +1351,8 @@ OpenSeadragon = window.OpenSeadragon || function( options ){
|
|||||||
urlParts,
|
urlParts,
|
||||||
filename,
|
filename,
|
||||||
lastDot,
|
lastDot,
|
||||||
tilesUrl;
|
tilesUrl,
|
||||||
|
callbackName;
|
||||||
|
|
||||||
|
|
||||||
if( tileHost ){
|
if( tileHost ){
|
||||||
@ -1384,11 +1393,23 @@ OpenSeadragon = window.OpenSeadragon || function( options ){
|
|||||||
callback( source, error );
|
callback( source, error );
|
||||||
}, 1);
|
}, 1);
|
||||||
} else {
|
} else {
|
||||||
$.makeAjaxRequest( xmlUrl, function( xhr ) {
|
if( xmlUrl.match(/\.js$/) ){
|
||||||
var source = finish( processDZIResponse, xhr );
|
callbackName = xmlUrl.split( '/' ).pop().replace('.js','_dzi');
|
||||||
// call after finish sets error
|
$.jsonp({
|
||||||
callback( source, error );
|
url: xmlUrl,
|
||||||
});
|
callbackName: callbackName,
|
||||||
|
callback: function( imageData ){
|
||||||
|
var source = finish( processDZIJSON, imageData.Image );
|
||||||
|
callback( source );
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
$.makeAjaxRequest( xmlUrl, function( xhr ) {
|
||||||
|
var source = finish( processDZIResponse, xhr );
|
||||||
|
// call after finish sets error
|
||||||
|
callback( source, error );
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
@ -1674,6 +1695,53 @@ OpenSeadragon = window.OpenSeadragon || function( options ){
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @private
|
||||||
|
* @inner
|
||||||
|
* @function
|
||||||
|
* @param {Element} imageNode
|
||||||
|
* @param {String} tilesUrl
|
||||||
|
*/
|
||||||
|
function processDZIJSON( imageData, tilesUrl ) {
|
||||||
|
var fileFormat = imageData.Format,
|
||||||
|
sizeData = imageData.Size,
|
||||||
|
dispRectData = imageData.DisplayRect || [],
|
||||||
|
width = parseInt( sizeData.Width ),
|
||||||
|
height = parseInt( sizeData.Height ),
|
||||||
|
tileSize = parseInt( imageData.TileSize ),
|
||||||
|
tileOverlap = parseInt( imageData.Overlap ),
|
||||||
|
dispRects = [],
|
||||||
|
rectData,
|
||||||
|
i;
|
||||||
|
|
||||||
|
if ( !imageFormatSupported( fileFormat ) ) {
|
||||||
|
throw new Error(
|
||||||
|
$.getString( "Errors.ImageFormat", fileFormat.toUpperCase() )
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
for ( i = 0; i < dispRectData.length; i++ ) {
|
||||||
|
rectData = dispRectData[ i ].Rect;
|
||||||
|
|
||||||
|
dispRects.push( new $.DisplayRect(
|
||||||
|
parseInt( rectData.X ),
|
||||||
|
parseInt( rectData.Y ),
|
||||||
|
parseInt( rectData.Width ),
|
||||||
|
parseInt( rectData.Height ),
|
||||||
|
0, // ignore MinLevel attribute, bug in Deep Zoom Composer
|
||||||
|
parseInt( rectData.MaxLevel )
|
||||||
|
));
|
||||||
|
}
|
||||||
|
return new $.DziTileSource(
|
||||||
|
width,
|
||||||
|
height,
|
||||||
|
tileSize,
|
||||||
|
tileOverlap,
|
||||||
|
tilesUrl,
|
||||||
|
fileFormat,
|
||||||
|
dispRects
|
||||||
|
);
|
||||||
|
};
|
||||||
/**
|
/**
|
||||||
* @private
|
* @private
|
||||||
* @inner
|
* @inner
|
||||||
|
Loading…
Reference in New Issue
Block a user