mirror of
https://github.com/openseadragon/openseadragon.git
synced 2025-01-31 23:21:42 +03:00
addresses #54, dont use openDZI, use open. openDZI now calls open. all the details of tileHost were already handled in DZITileSource.configure. $.createFromDZI is fully deprecated and will throw an error.
This commit is contained in:
parent
eff17208e0
commit
266f33094c
@ -315,8 +315,9 @@ function configureFromObject( tileSource, configuration ){
|
|||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
delete configuration.Image;
|
||||||
|
|
||||||
return {
|
return $.extend(true, {
|
||||||
width: width, /* width *required */
|
width: width, /* width *required */
|
||||||
height: height, /* height *required */
|
height: height, /* height *required */
|
||||||
tileSize: tileSize, /* tileSize *required */
|
tileSize: tileSize, /* tileSize *required */
|
||||||
@ -326,7 +327,7 @@ function configureFromObject( tileSource, configuration ){
|
|||||||
tilesUrl: tilesUrl, /* tilesUrl */
|
tilesUrl: tilesUrl, /* tilesUrl */
|
||||||
fileFormat: fileFormat, /* fileFormat */
|
fileFormat: fileFormat, /* fileFormat */
|
||||||
displayRects: displayRects /* displayRects */
|
displayRects: displayRects /* displayRects */
|
||||||
};
|
}, configuration );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -242,7 +242,7 @@ $.extend( $.Navigator.prototype, $.EventHandler.prototype, $.Viewer.prototype, {
|
|||||||
containerSize.y
|
containerSize.y
|
||||||
) / source.tileSize;
|
) / source.tileSize;
|
||||||
} else {
|
} else {
|
||||||
this.minPixelRatio = thie.viewer.minPixelRatio;
|
this.minPixelRatio = this.viewer.minPixelRatio;
|
||||||
}
|
}
|
||||||
return $.Viewer.prototype.open.apply( this, [ source ] );
|
return $.Viewer.prototype.open.apply( this, [ source ] );
|
||||||
}
|
}
|
||||||
|
@ -1392,101 +1392,10 @@ window.OpenSeadragon = window.OpenSeadragon || function( options ){
|
|||||||
* @param {String} xmlUrl
|
* @param {String} xmlUrl
|
||||||
* @param {String} xmlString
|
* @param {String} xmlString
|
||||||
* @param {Function} callback
|
* @param {Function} callback
|
||||||
* @deprecated
|
* @deprecated - use Viewer.openTileSource
|
||||||
*/
|
*/
|
||||||
createFromDZI: function( dzi, callback, tileHost ) {
|
createFromDZI: function( dzi, callback, tileHost ) {
|
||||||
var async = typeof ( callback ) == "function",
|
throw "OpenSeadragon.createFromDZI is deprecated, use Viewer.openTileSource.";
|
||||||
dziUrl = (
|
|
||||||
dzi.substring(0,1) != '<' &&
|
|
||||||
dzi.substring(0,1) != '{'
|
|
||||||
) ? dzi : null,
|
|
||||||
dziString = dziUrl ? null : dzi,
|
|
||||||
error = null,
|
|
||||||
urlParts,
|
|
||||||
filename,
|
|
||||||
lastDot,
|
|
||||||
tilesUrl,
|
|
||||||
callbackName;
|
|
||||||
|
|
||||||
|
|
||||||
if( tileHost ){
|
|
||||||
|
|
||||||
tilesUrl = tileHost + "/_files/";
|
|
||||||
|
|
||||||
} else if( dziUrl ) {
|
|
||||||
|
|
||||||
urlParts = dziUrl.split( '/' );
|
|
||||||
filename = urlParts[ urlParts.length - 1 ];
|
|
||||||
if( filename.match(/_dzi\.js$/) ){
|
|
||||||
//for jsonp dzi specification, the '_dzi' needs to be removed
|
|
||||||
//from the filename to be consistent with the spec
|
|
||||||
filename = filename.replace('_dzi.js', '.js');
|
|
||||||
}
|
|
||||||
|
|
||||||
lastDot = filename.lastIndexOf( '.' );
|
|
||||||
|
|
||||||
if ( lastDot > -1 ) {
|
|
||||||
urlParts[ urlParts.length - 1 ] = filename.slice( 0, lastDot );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
tilesUrl = urlParts.join( '/' ) + "_files/";
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function finish( func, obj ) {
|
|
||||||
try {
|
|
||||||
return func( obj, tilesUrl );
|
|
||||||
} catch ( e ) {
|
|
||||||
if ( async ) {
|
|
||||||
return null;
|
|
||||||
} else {
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( async ) {
|
|
||||||
if ( dziString ) {
|
|
||||||
window.setTimeout( function() {
|
|
||||||
var source = finish( processDZIXml, $.parseXml( xmlString ) );
|
|
||||||
// call after finish sets error
|
|
||||||
callback( source, error );
|
|
||||||
}, 1);
|
|
||||||
} else {
|
|
||||||
if( dziUrl.match(/_dzi\.js$/) ){
|
|
||||||
callbackName = dziUrl.split( '/' ).pop().replace('.js','');
|
|
||||||
$.jsonp({
|
|
||||||
url: dziUrl,
|
|
||||||
callbackName: callbackName,
|
|
||||||
callback: function( imageData ){
|
|
||||||
var source = finish( processDZIJSON, imageData.Image );
|
|
||||||
callback( source );
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
$.makeAjaxRequest( dziUrl, function( xhr ) {
|
|
||||||
var source = finish( processDZIResponse, xhr );
|
|
||||||
// call after finish sets error
|
|
||||||
callback( source, error );
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( dziString ) {
|
|
||||||
return finish(
|
|
||||||
processDZIXml,
|
|
||||||
$.parseXml( dziString )
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
return finish(
|
|
||||||
processDZIResponse,
|
|
||||||
$.makeAjaxRequest( dziUrl )
|
|
||||||
);
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -281,9 +281,7 @@ $.TileSource.prototype = {
|
|||||||
callback: callback
|
callback: callback
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
//TODO: struggling a little with TileSource rewrite to make info
|
// request info via xhr asyncronously.
|
||||||
// requests work asyncronously. For now I'm opting to make
|
|
||||||
// all xhr info request syncronous.
|
|
||||||
$.makeAjaxRequest( url, function( xhr ) {
|
$.makeAjaxRequest( url, function( xhr ) {
|
||||||
var data = processResponse( xhr );
|
var data = processResponse( xhr );
|
||||||
callback( data );
|
callback( data );
|
||||||
|
416
src/viewer.js
416
src/viewer.js
@ -129,6 +129,7 @@ $.Viewer = function( options ) {
|
|||||||
// did we decide this viewer has a sequence of tile sources
|
// did we decide this viewer has a sequence of tile sources
|
||||||
"sequenced": false,
|
"sequenced": false,
|
||||||
"sequence": 0,
|
"sequence": 0,
|
||||||
|
"fullPage": false,
|
||||||
"onfullscreenchange": null
|
"onfullscreenchange": null
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -163,7 +164,7 @@ $.Viewer = function( options ) {
|
|||||||
initialTileSource = this.tileSources;
|
initialTileSource = this.tileSources;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.openTileSource( initialTileSource );
|
this.open( initialTileSource );
|
||||||
}
|
}
|
||||||
|
|
||||||
this.element = this.element || document.getElementById( this.id );
|
this.element = this.element || document.getElementById( this.id );
|
||||||
@ -254,29 +255,36 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
|
|||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If the string is xml is simply parsed and opened, otherwise the string
|
* A deprecated function, renamed to 'open' to match event name and
|
||||||
* is treated as an URL and an xml document is requested via ajax, parsed
|
* match current 'close' method.
|
||||||
* and then opened in the viewer.
|
|
||||||
* @function
|
* @function
|
||||||
* @name OpenSeadragon.Viewer.prototype.openDzi
|
* @name OpenSeadragon.Viewer.prototype.openDzi
|
||||||
* @param {String} dzi and xml string or the url to a DZI xml document.
|
* @param {String} dzi xml string or the url to a DZI xml document.
|
||||||
* @return {OpenSeadragon.Viewer} Chainable.
|
* @return {OpenSeadragon.Viewer} Chainable.
|
||||||
*
|
*
|
||||||
* @deprecated - use 'open' instead.
|
* @deprecated - use 'open' instead.
|
||||||
*/
|
*/
|
||||||
openDzi: function ( dzi ) {
|
openDzi: function ( dzi ) {
|
||||||
var _this = this;
|
return this.open( dzi );
|
||||||
$.createFromDZI(
|
|
||||||
dzi,
|
|
||||||
function( source ){
|
|
||||||
_this.open( source );
|
|
||||||
},
|
|
||||||
this.tileHost
|
|
||||||
);
|
|
||||||
return this;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* A deprecated function, renamed to 'open' to match event name and
|
||||||
|
* match current 'close' method.
|
||||||
|
* @function
|
||||||
|
* @name OpenSeadragon.Viewer.prototype.openTileSource
|
||||||
|
* @param {String|Object|Function} See OpenSeadragon.Viewer.prototype.open
|
||||||
|
* @return {OpenSeadragon.Viewer} Chainable.
|
||||||
|
*
|
||||||
|
* @deprecated - use 'open' instead.
|
||||||
|
*/
|
||||||
|
openTileSource: function ( tileSource ) {
|
||||||
|
return this.open( tileSource );
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Open a TileSource object into the viewer.
|
||||||
|
*
|
||||||
* tileSources is a complex option...
|
* tileSources is a complex option...
|
||||||
*
|
*
|
||||||
* It can be a string, object, function, or an array of any of these:
|
* It can be a string, object, function, or an array of any of these:
|
||||||
@ -291,9 +299,10 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
|
|||||||
* named 'getTileUrl', it is treated as a custom TileSource.
|
* named 'getTileUrl', it is treated as a custom TileSource.
|
||||||
* @function
|
* @function
|
||||||
* @name OpenSeadragon.Viewer.prototype.openTileSource
|
* @name OpenSeadragon.Viewer.prototype.openTileSource
|
||||||
|
* @param {String|Object|Function}
|
||||||
* @return {OpenSeadragon.Viewer} Chainable.
|
* @return {OpenSeadragon.Viewer} Chainable.
|
||||||
*/
|
*/
|
||||||
openTileSource: function ( tileSource ) {
|
open: function ( tileSource ) {
|
||||||
var _this = this,
|
var _this = this,
|
||||||
customTileSource,
|
customTileSource,
|
||||||
readySource,
|
readySource,
|
||||||
@ -308,7 +317,7 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
|
|||||||
//if its better to use file extension or url pattern, or to
|
//if its better to use file extension or url pattern, or to
|
||||||
//inspect the resulting info object.
|
//inspect the resulting info object.
|
||||||
tileSource = new $.TileSource( tileSource, function( readySource ){
|
tileSource = new $.TileSource( tileSource, function( readySource ){
|
||||||
_this.open( readySource );
|
openTileSource( _this, readySource );
|
||||||
});
|
});
|
||||||
|
|
||||||
} else if ( $.isPlainObject( tileSource ) ){
|
} else if ( $.isPlainObject( tileSource ) ){
|
||||||
@ -316,202 +325,24 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
|
|||||||
//Custom tile source
|
//Custom tile source
|
||||||
customTileSource = new $.TileSource(tileSource);
|
customTileSource = new $.TileSource(tileSource);
|
||||||
customTileSource.getTileUrl = tileSource.getTileUrl;
|
customTileSource.getTileUrl = tileSource.getTileUrl;
|
||||||
_this.open( customTileSource );
|
openTileSource( _this, customTileSource );
|
||||||
} else {
|
} else {
|
||||||
//inline configuration
|
//inline configuration
|
||||||
$TileSource = $.TileSource.determineType( _this, tileSource );
|
$TileSource = $.TileSource.determineType( _this, tileSource );
|
||||||
options = $TileSource.prototype.configure.apply( _this, [ tileSource ]);
|
options = $TileSource.prototype.configure.apply( _this, [ tileSource ]);
|
||||||
readySource = new $TileSource( options );
|
readySource = new $TileSource( options );
|
||||||
_this.open( readySource );
|
openTileSource( _this, readySource );
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
//can assume it's already a tile source implementation
|
//can assume it's already a tile source implementation
|
||||||
_this.open( tileSource );
|
openTileSource( _this, tileSource );
|
||||||
}
|
}
|
||||||
}, 1);
|
}, 1);
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
|
||||||
* @function
|
|
||||||
* @name OpenSeadragon.Viewer.prototype.open
|
|
||||||
* @return {OpenSeadragon.Viewer} Chainable.
|
|
||||||
*/
|
|
||||||
open: function( source ) {
|
|
||||||
var _this = this,
|
|
||||||
overlay,
|
|
||||||
i;
|
|
||||||
|
|
||||||
if ( this.source ) {
|
|
||||||
this.close( );
|
|
||||||
}
|
|
||||||
|
|
||||||
// to ignore earlier opens
|
|
||||||
THIS[ this.hash ].lastOpenStartTime = +new Date();
|
|
||||||
|
|
||||||
window.setTimeout( function () {
|
|
||||||
if ( THIS[ _this.hash ].lastOpenStartTime > THIS[ _this.hash ].lastOpenEndTime ) {
|
|
||||||
THIS[ _this.hash ].setMessage( $.getString( "Messages.Loading" ) );
|
|
||||||
}
|
|
||||||
}, 2000);
|
|
||||||
|
|
||||||
THIS[ this.hash ].lastOpenEndTime = +new Date();
|
|
||||||
this.canvas.innerHTML = "";
|
|
||||||
THIS[ this.hash ].prevContainerSize = $.getElementSize( this.container );
|
|
||||||
|
|
||||||
|
|
||||||
if( this.collectionMode ){
|
|
||||||
this.source = new $.TileSourceCollection({
|
|
||||||
rows: this.collectionRows,
|
|
||||||
layout: this.collectionLayout,
|
|
||||||
tileSize: this.collectionTileSize,
|
|
||||||
tileSources: this.tileSources,
|
|
||||||
tileMargin: this.collectionTileMargin
|
|
||||||
});
|
|
||||||
this.viewport = this.viewport ? this.viewport : new $.Viewport({
|
|
||||||
collectionMode: true,
|
|
||||||
collectionTileSource: this.source,
|
|
||||||
containerSize: THIS[ this.hash ].prevContainerSize,
|
|
||||||
contentSize: this.source.dimensions,
|
|
||||||
springStiffness: this.springStiffness,
|
|
||||||
animationTime: this.animationTime,
|
|
||||||
showNavigator: false,
|
|
||||||
minZoomImageRatio: 1,
|
|
||||||
maxZoomPixelRatio: 1,
|
|
||||||
viewer: this //,
|
|
||||||
//TODO: figure out how to support these in a way that makes sense
|
|
||||||
//minZoomLevel: this.minZoomLevel,
|
|
||||||
//maxZoomLevel: this.maxZoomLevel
|
|
||||||
});
|
|
||||||
}else{
|
|
||||||
if( source ){
|
|
||||||
this.source = source;
|
|
||||||
}
|
|
||||||
this.viewport = this.viewport ? this.viewport : new $.Viewport({
|
|
||||||
containerSize: THIS[ this.hash ].prevContainerSize,
|
|
||||||
contentSize: this.source.dimensions,
|
|
||||||
springStiffness: this.springStiffness,
|
|
||||||
animationTime: this.animationTime,
|
|
||||||
minZoomImageRatio: this.minZoomImageRatio,
|
|
||||||
maxZoomPixelRatio: this.maxZoomPixelRatio,
|
|
||||||
visibilityRatio: this.visibilityRatio,
|
|
||||||
wrapHorizontal: this.wrapHorizontal,
|
|
||||||
wrapVertical: this.wrapVertical,
|
|
||||||
defaultZoomLevel: this.defaultZoomLevel,
|
|
||||||
minZoomLevel: this.minZoomLevel,
|
|
||||||
maxZoomLevel: this.maxZoomLevel,
|
|
||||||
viewer: this
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if( this.preserveVewport ){
|
|
||||||
this.viewport.resetContentSize( this.source.dimensions );
|
|
||||||
}
|
|
||||||
|
|
||||||
this.source.overlays = this.source.overlays || [];
|
|
||||||
|
|
||||||
this.drawer = new $.Drawer({
|
|
||||||
source: this.source,
|
|
||||||
viewport: this.viewport,
|
|
||||||
element: this.canvas,
|
|
||||||
overlays: [].concat( this.overlays ).concat( this.source.overlays ),
|
|
||||||
maxImageCacheCount: this.maxImageCacheCount,
|
|
||||||
imageLoaderLimit: this.imageLoaderLimit,
|
|
||||||
minZoomImageRatio: this.minZoomImageRatio,
|
|
||||||
wrapHorizontal: this.wrapHorizontal,
|
|
||||||
wrapVertical: this.wrapVertical,
|
|
||||||
immediateRender: this.immediateRender,
|
|
||||||
blendTime: this.blendTime,
|
|
||||||
alwaysBlend: this.alwaysBlend,
|
|
||||||
minPixelRatio: this.collectionMode ? 0 : this.minPixelRatio,
|
|
||||||
timeout: this.timeout,
|
|
||||||
debugMode: this.debugMode,
|
|
||||||
debugGridColor: this.debugGridColor
|
|
||||||
});
|
|
||||||
|
|
||||||
//Instantiate a navigator if configured
|
|
||||||
if ( this.showNavigator && ! this.navigator && !this.collectionMode ){
|
|
||||||
this.navigator = new $.Navigator({
|
|
||||||
id: this.navigatorElement,
|
|
||||||
position: this.navigatorPosition,
|
|
||||||
sizeRatio: this.navigatorSizeRatio,
|
|
||||||
height: this.navigatorHeight,
|
|
||||||
width: this.navigatorWidth,
|
|
||||||
tileSources: this.tileSources,
|
|
||||||
tileHost: this.tileHost,
|
|
||||||
prefixUrl: this.prefixUrl,
|
|
||||||
overlays: this.overlays,
|
|
||||||
viewer: this
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
//Instantiate a referencestrip if configured
|
|
||||||
if ( this.showReferenceStrip && ! this.referenceStrip ){
|
|
||||||
this.referenceStrip = new $.ReferenceStrip({
|
|
||||||
id: this.referenceStripElement,
|
|
||||||
position: this.referenceStripPosition,
|
|
||||||
sizeRatio: this.referenceStripSizeRatio,
|
|
||||||
scroll: this.referenceStripScroll,
|
|
||||||
height: this.referenceStripHeight,
|
|
||||||
width: this.referenceStripWidth,
|
|
||||||
tileSources: this.tileSources,
|
|
||||||
tileHost: this.tileHost,
|
|
||||||
prefixUrl: this.prefixUrl,
|
|
||||||
overlays: this.overlays,
|
|
||||||
viewer: this
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
//this.profiler = new $.Profiler();
|
|
||||||
|
|
||||||
THIS[ this.hash ].animating = false;
|
|
||||||
THIS[ this.hash ].forceRedraw = true;
|
|
||||||
scheduleUpdate( this, updateMulti );
|
|
||||||
|
|
||||||
//Assuming you had programatically created a bunch of overlays
|
|
||||||
//and added them via configuration
|
|
||||||
for ( i = 0; i < this.overlayControls.length; i++ ) {
|
|
||||||
|
|
||||||
overlay = this.overlayControls[ i ];
|
|
||||||
|
|
||||||
if ( overlay.point ) {
|
|
||||||
|
|
||||||
this.drawer.addOverlay(
|
|
||||||
overlay.id,
|
|
||||||
new $.Point(
|
|
||||||
overlay.point.X,
|
|
||||||
overlay.point.Y
|
|
||||||
),
|
|
||||||
$.OverlayPlacement.TOP_LEFT
|
|
||||||
);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
this.drawer.addOverlay(
|
|
||||||
overlay.id,
|
|
||||||
new $.Rect(
|
|
||||||
overlay.rect.Point.X,
|
|
||||||
overlay.rect.Point.Y,
|
|
||||||
overlay.rect.Width,
|
|
||||||
overlay.rect.Height
|
|
||||||
),
|
|
||||||
overlay.placement
|
|
||||||
);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
VIEWERS[ this.hash ] = this;
|
|
||||||
|
|
||||||
if( this.navigator ){
|
|
||||||
this.navigator.open( source );
|
|
||||||
}
|
|
||||||
|
|
||||||
this.raiseEvent( 'open', { source: source, viewer: this } );
|
|
||||||
|
|
||||||
return this;
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @function
|
* @function
|
||||||
* @name OpenSeadragon.Viewer.prototype.close
|
* @name OpenSeadragon.Viewer.prototype.close
|
||||||
@ -597,7 +428,7 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
|
|||||||
* @return {Boolean}
|
* @return {Boolean}
|
||||||
*/
|
*/
|
||||||
isFullPage: function () {
|
isFullPage: function () {
|
||||||
return this.element.parentNode == document.body;
|
return THIS[ this.hash ].fullPage;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
@ -654,7 +485,7 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
|
|||||||
//the bodies elements and replace them when we leave full screen.
|
//the bodies elements and replace them when we leave full screen.
|
||||||
this.previousBody = [];
|
this.previousBody = [];
|
||||||
THIS[ this.hash ].prevElementParent = this.element.parentNode;
|
THIS[ this.hash ].prevElementParent = this.element.parentNode;
|
||||||
THIS[ this.hash ].prevNextSibling = this.element.prevNextSibling;
|
THIS[ this.hash ].prevNextSibling = this.element.nextSibling;
|
||||||
THIS[ this.hash ].prevElementSize = $.getElementSize( this.element );
|
THIS[ this.hash ].prevElementSize = $.getElementSize( this.element );
|
||||||
nodes = body.childNodes.length;
|
nodes = body.childNodes.length;
|
||||||
for ( i = 0; i < nodes; i ++ ){
|
for ( i = 0; i < nodes; i ++ ){
|
||||||
@ -715,6 +546,8 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
|
|||||||
) + 'px';
|
) + 'px';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
THIS[ this.hash ].fullPage = true;
|
||||||
|
|
||||||
// mouse will be inside container now
|
// mouse will be inside container now
|
||||||
$.delegate( this, onContainerEnter )();
|
$.delegate( this, onContainerEnter )();
|
||||||
|
|
||||||
@ -776,6 +609,8 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
|
|||||||
this.element.style.height = THIS[ this.hash ].prevElementSize.y + 'px';
|
this.element.style.height = THIS[ this.hash ].prevElementSize.y + 'px';
|
||||||
this.element.style.width = THIS[ this.hash ].prevElementSize.x + 'px';
|
this.element.style.width = THIS[ this.hash ].prevElementSize.x + 'px';
|
||||||
|
|
||||||
|
THIS[ this.hash ].fullPage = false;
|
||||||
|
|
||||||
// mouse will likely be outside now
|
// mouse will likely be outside now
|
||||||
$.delegate( this, onContainerExit )();
|
$.delegate( this, onContainerExit )();
|
||||||
|
|
||||||
@ -1085,7 +920,7 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.openTileSource( this.tileSources[ page ] );
|
this.open( this.tileSources[ page ] );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( $.isFunction( this.onPageChange ) ){
|
if( $.isFunction( this.onPageChange ) ){
|
||||||
@ -1102,6 +937,185 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @function
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
function openTileSource( viewer, source ) {
|
||||||
|
var _this = viewer,
|
||||||
|
overlay,
|
||||||
|
i;
|
||||||
|
|
||||||
|
if ( _this.source ) {
|
||||||
|
_this.close( );
|
||||||
|
}
|
||||||
|
|
||||||
|
// to ignore earlier opens
|
||||||
|
THIS[ _this.hash ].lastOpenStartTime = +new Date();
|
||||||
|
|
||||||
|
window.setTimeout( function () {
|
||||||
|
if ( THIS[ _this.hash ].lastOpenStartTime > THIS[ _this.hash ].lastOpenEndTime ) {
|
||||||
|
THIS[ _this.hash ].setMessage( $.getString( "Messages.Loading" ) );
|
||||||
|
}
|
||||||
|
}, 2000);
|
||||||
|
|
||||||
|
THIS[ _this.hash ].lastOpenEndTime = +new Date();
|
||||||
|
_this.canvas.innerHTML = "";
|
||||||
|
THIS[ _this.hash ].prevContainerSize = $.getElementSize( _this.container );
|
||||||
|
|
||||||
|
|
||||||
|
if( _this.collectionMode ){
|
||||||
|
_this.source = new $.TileSourceCollection({
|
||||||
|
rows: _this.collectionRows,
|
||||||
|
layout: _this.collectionLayout,
|
||||||
|
tileSize: _this.collectionTileSize,
|
||||||
|
tileSources: _this.tileSources,
|
||||||
|
tileMargin: _this.collectionTileMargin
|
||||||
|
});
|
||||||
|
_this.viewport = _this.viewport ? _this.viewport : new $.Viewport({
|
||||||
|
collectionMode: true,
|
||||||
|
collectionTileSource: _this.source,
|
||||||
|
containerSize: THIS[ _this.hash ].prevContainerSize,
|
||||||
|
contentSize: _this.source.dimensions,
|
||||||
|
springStiffness: _this.springStiffness,
|
||||||
|
animationTime: _this.animationTime,
|
||||||
|
showNavigator: false,
|
||||||
|
minZoomImageRatio: 1,
|
||||||
|
maxZoomPixelRatio: 1,
|
||||||
|
viewer: _this //,
|
||||||
|
//TODO: figure out how to support these in a way that makes sense
|
||||||
|
//minZoomLevel: this.minZoomLevel,
|
||||||
|
//maxZoomLevel: this.maxZoomLevel
|
||||||
|
});
|
||||||
|
}else{
|
||||||
|
if( source ){
|
||||||
|
_this.source = source;
|
||||||
|
}
|
||||||
|
_this.viewport = _this.viewport ? _this.viewport : new $.Viewport({
|
||||||
|
containerSize: THIS[ _this.hash ].prevContainerSize,
|
||||||
|
contentSize: _this.source.dimensions,
|
||||||
|
springStiffness: _this.springStiffness,
|
||||||
|
animationTime: _this.animationTime,
|
||||||
|
minZoomImageRatio: _this.minZoomImageRatio,
|
||||||
|
maxZoomPixelRatio: _this.maxZoomPixelRatio,
|
||||||
|
visibilityRatio: _this.visibilityRatio,
|
||||||
|
wrapHorizontal: _this.wrapHorizontal,
|
||||||
|
wrapVertical: _this.wrapVertical,
|
||||||
|
defaultZoomLevel: _this.defaultZoomLevel,
|
||||||
|
minZoomLevel: _this.minZoomLevel,
|
||||||
|
maxZoomLevel: _this.maxZoomLevel,
|
||||||
|
viewer: _this
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if( _this.preserveVewport ){
|
||||||
|
_this.viewport.resetContentSize( _this.source.dimensions );
|
||||||
|
}
|
||||||
|
|
||||||
|
_this.source.overlays = _this.source.overlays || [];
|
||||||
|
|
||||||
|
_this.drawer = new $.Drawer({
|
||||||
|
source: _this.source,
|
||||||
|
viewport: _this.viewport,
|
||||||
|
element: _this.canvas,
|
||||||
|
overlays: [].concat( _this.overlays ).concat( _this.source.overlays ),
|
||||||
|
maxImageCacheCount: _this.maxImageCacheCount,
|
||||||
|
imageLoaderLimit: _this.imageLoaderLimit,
|
||||||
|
minZoomImageRatio: _this.minZoomImageRatio,
|
||||||
|
wrapHorizontal: _this.wrapHorizontal,
|
||||||
|
wrapVertical: _this.wrapVertical,
|
||||||
|
immediateRender: _this.immediateRender,
|
||||||
|
blendTime: _this.blendTime,
|
||||||
|
alwaysBlend: _this.alwaysBlend,
|
||||||
|
minPixelRatio: _this.collectionMode ? 0 : _this.minPixelRatio,
|
||||||
|
timeout: _this.timeout,
|
||||||
|
debugMode: _this.debugMode,
|
||||||
|
debugGridColor: _this.debugGridColor
|
||||||
|
});
|
||||||
|
|
||||||
|
//Instantiate a navigator if configured
|
||||||
|
if ( _this.showNavigator && ! _this.navigator && !_this.collectionMode ){
|
||||||
|
_this.navigator = new $.Navigator({
|
||||||
|
id: _this.navigatorElement,
|
||||||
|
position: _this.navigatorPosition,
|
||||||
|
sizeRatio: _this.navigatorSizeRatio,
|
||||||
|
height: _this.navigatorHeight,
|
||||||
|
width: _this.navigatorWidth,
|
||||||
|
tileSources: _this.tileSources,
|
||||||
|
tileHost: _this.tileHost,
|
||||||
|
prefixUrl: _this.prefixUrl,
|
||||||
|
overlays: _this.overlays,
|
||||||
|
viewer: _this
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
//Instantiate a referencestrip if configured
|
||||||
|
if ( _this.showReferenceStrip && !_this.referenceStrip ){
|
||||||
|
_this.referenceStrip = new $.ReferenceStrip({
|
||||||
|
id: _this.referenceStripElement,
|
||||||
|
position: _this.referenceStripPosition,
|
||||||
|
sizeRatio: _this.referenceStripSizeRatio,
|
||||||
|
scroll: _this.referenceStripScroll,
|
||||||
|
height: _this.referenceStripHeight,
|
||||||
|
width: _this.referenceStripWidth,
|
||||||
|
tileSources: _this.tileSources,
|
||||||
|
tileHost: _this.tileHost,
|
||||||
|
prefixUrl: _this.prefixUrl,
|
||||||
|
overlays: _this.overlays,
|
||||||
|
viewer: _this
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
//this.profiler = new $.Profiler();
|
||||||
|
|
||||||
|
THIS[ _this.hash ].animating = false;
|
||||||
|
THIS[ _this.hash ].forceRedraw = true;
|
||||||
|
scheduleUpdate( _this, updateMulti );
|
||||||
|
|
||||||
|
//Assuming you had programatically created a bunch of overlays
|
||||||
|
//and added them via configuration
|
||||||
|
for ( i = 0; i < _this.overlayControls.length; i++ ) {
|
||||||
|
|
||||||
|
overlay = _this.overlayControls[ i ];
|
||||||
|
|
||||||
|
if ( overlay.point ) {
|
||||||
|
|
||||||
|
_this.drawer.addOverlay(
|
||||||
|
overlay.id,
|
||||||
|
new $.Point(
|
||||||
|
overlay.point.X,
|
||||||
|
overlay.point.Y
|
||||||
|
),
|
||||||
|
$.OverlayPlacement.TOP_LEFT
|
||||||
|
);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
_this.drawer.addOverlay(
|
||||||
|
overlay.id,
|
||||||
|
new $.Rect(
|
||||||
|
overlay.rect.Point.X,
|
||||||
|
overlay.rect.Point.Y,
|
||||||
|
overlay.rect.Width,
|
||||||
|
overlay.rect.Height
|
||||||
|
),
|
||||||
|
overlay.placement
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
VIEWERS[ _this.hash ] = _this;
|
||||||
|
|
||||||
|
if( _this.navigator ){
|
||||||
|
_this.navigator.open( source );
|
||||||
|
}
|
||||||
|
|
||||||
|
_this.raiseEvent( 'open', { source: source, viewer: _this } );
|
||||||
|
|
||||||
|
return _this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
Loading…
x
Reference in New Issue
Block a user