mirror of
https://github.com/openseadragon/openseadragon.git
synced 2024-11-21 20:56:09 +03:00
added dozens of event hooks based on input from macreery's branch
This commit is contained in:
parent
d8a3ccf5e8
commit
fda24f343a
@ -6,7 +6,7 @@
|
||||
PROJECT: openseadragon
|
||||
BUILD_MAJOR: 0
|
||||
BUILD_MINOR: 9
|
||||
BUILD_ID: 118
|
||||
BUILD_ID: 120
|
||||
BUILD: ${PROJECT}.${BUILD_MAJOR}.${BUILD_MINOR}.${BUILD_ID}
|
||||
VERSION: ${BUILD_MAJOR}.${BUILD_MINOR}.${BUILD_ID}
|
||||
|
||||
|
226
openseadragon.js
226
openseadragon.js
@ -1,7 +1,7 @@
|
||||
/*globals OpenSeadragon*/
|
||||
|
||||
/**
|
||||
* @version OpenSeadragon 0.9.118
|
||||
* @version OpenSeadragon 0.9.120
|
||||
*
|
||||
* @fileOverview
|
||||
* <h2>
|
||||
@ -1949,7 +1949,7 @@ $.EventHandler.prototype = {
|
||||
removeAllHandlers: function( eventName ){
|
||||
this.events[ eventName ] = [];
|
||||
},
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Retrive the list of all handlers registered for a given event.
|
||||
@ -1982,6 +1982,8 @@ $.EventHandler.prototype = {
|
||||
* @param {Function} handler - Function to call when event is triggered.
|
||||
*/
|
||||
raiseEvent: function( eventName, eventArgs ) {
|
||||
//uncomment if you want to get a log og all events
|
||||
//$.console.log( eventName );
|
||||
var handler = this.getHandler( eventName );
|
||||
|
||||
if ( handler ) {
|
||||
@ -3727,7 +3729,8 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
|
||||
animationTime: this.animationTime,
|
||||
showNavigator: false,
|
||||
minZoomImageRatio: 1,
|
||||
maxZoomPixelRatio: 1//,
|
||||
maxZoomPixelRatio: 1,
|
||||
viewer: this //,
|
||||
//TODO: figure out how to support these in a way that makes sense
|
||||
//minZoomLevel: this.minZoomLevel,
|
||||
//maxZoomLevel: this.maxZoomLevel
|
||||
@ -3748,7 +3751,8 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
|
||||
wrapVertical: this.wrapVertical,
|
||||
defaultZoomLevel: this.defaultZoomLevel,
|
||||
minZoomLevel: this.minZoomLevel,
|
||||
maxZoomLevel: this.maxZoomLevel
|
||||
maxZoomLevel: this.maxZoomLevel,
|
||||
viewer: this
|
||||
});
|
||||
}
|
||||
|
||||
@ -3849,12 +3853,13 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
|
||||
}
|
||||
}
|
||||
VIEWERS[ this.hash ] = this;
|
||||
this.raiseEvent( "open" );
|
||||
|
||||
if( this.navigator ){
|
||||
this.navigator.open( source );
|
||||
}
|
||||
|
||||
this.raiseEvent( 'open', { source: source, viewer: this } );
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
@ -3878,6 +3883,8 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
|
||||
|
||||
VIEWERS[ this.hash ] = null;
|
||||
delete VIEWERS[ this.hash ];
|
||||
|
||||
this.raiseEvent( 'close', { viewer: this } );
|
||||
|
||||
return this;
|
||||
},
|
||||
@ -3899,6 +3906,7 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
|
||||
*/
|
||||
setMouseNavEnabled: function( enabled ){
|
||||
this.innerTracker.setTracking( enabled );
|
||||
this.raiseEvent( 'mouse-enabled', { enabled: enabled, viewer: this } );
|
||||
return this;
|
||||
},
|
||||
|
||||
@ -3929,6 +3937,8 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
|
||||
} else {
|
||||
beginControlsAutoHide( this );
|
||||
}
|
||||
this.raiseEvent( 'controls-enabled', { enabled: enabled, viewer: this } );
|
||||
return this;
|
||||
},
|
||||
|
||||
|
||||
@ -4089,6 +4099,7 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
|
||||
$.delegate( this, onContainerExit )();
|
||||
|
||||
}
|
||||
this.raiseEvent( 'fullpage', { fullpage: fullPage, viewer: this } );
|
||||
|
||||
if ( this.viewport ) {
|
||||
oldBounds = this.viewport.getBounds();
|
||||
@ -4124,7 +4135,6 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
|
||||
}
|
||||
|
||||
THIS[ this.hash ].forceRedraw = true;
|
||||
this.raiseEvent( "resize", this );
|
||||
updateOnce( this );
|
||||
|
||||
}
|
||||
@ -4149,9 +4159,16 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
|
||||
*/
|
||||
setVisible: function( visible ){
|
||||
this.container.style.visibility = visible ? "" : "hidden";
|
||||
this.raiseEvent( 'visible', { visible: visible, viewer: this } );
|
||||
return this;
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* @function
|
||||
* @name OpenSeadragon.Viewer.prototype.bindSequenceControls
|
||||
* @return {OpenSeadragon.Viewer} Chainable.
|
||||
*/
|
||||
bindSequenceControls: function(){
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@ -4228,8 +4245,15 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
|
||||
}
|
||||
}
|
||||
}
|
||||
return this;
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* @function
|
||||
* @name OpenSeadragon.Viewer.prototype.bindStandardControls
|
||||
* @return {OpenSeadragon.Viewer} Chainable.
|
||||
*/
|
||||
bindStandardControls: function(){
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Navigation Controls
|
||||
@ -4342,14 +4366,22 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
return this;
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* @function
|
||||
* @name OpenSeadragon.Viewer.prototype.goToPage
|
||||
* @return {OpenSeadragon.Viewer} Chainable.
|
||||
*/
|
||||
goToPage: function( page ){
|
||||
//page is a 1 based index so normalize now
|
||||
//page = page;
|
||||
this.raiseEvent( 'page', { page: page, viewer: this } );
|
||||
|
||||
if( this.tileSources.length > page ){
|
||||
|
||||
THIS[ this.hash ].sequence = page;
|
||||
@ -4373,6 +4405,7 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
|
||||
|
||||
this.openTileSource( this.tileSources[ page ] );
|
||||
}
|
||||
|
||||
if( $.isFunction( this.onPageChange ) ){
|
||||
this.onPageChange({
|
||||
page: page,
|
||||
@ -4382,6 +4415,7 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
|
||||
if( this.referenceStrip ){
|
||||
this.referenceStrip.setFocus( page );
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
});
|
||||
@ -4499,6 +4533,12 @@ function onCanvasClick( tracker, position, quick, shift ) {
|
||||
);
|
||||
this.viewport.applyConstraints();
|
||||
}
|
||||
this.raiseEvent( 'canvas-click', {
|
||||
tracker: tracker,
|
||||
position: position,
|
||||
quick: quick,
|
||||
shift: shift
|
||||
});
|
||||
}
|
||||
|
||||
function onCanvasDrag( tracker, position, delta, shift ) {
|
||||
@ -4518,12 +4558,24 @@ function onCanvasDrag( tracker, position, delta, shift ) {
|
||||
this.viewport.applyConstraints();
|
||||
}
|
||||
}
|
||||
this.raiseEvent( 'canvas-click', {
|
||||
tracker: tracker,
|
||||
position: position,
|
||||
delta: delta,
|
||||
shift: shift
|
||||
});
|
||||
}
|
||||
|
||||
function onCanvasRelease( tracker, position, insideElementPress, insideElementRelease ) {
|
||||
if ( insideElementPress && this.viewport ) {
|
||||
this.viewport.applyConstraints();
|
||||
}
|
||||
this.raiseEvent( 'canvas-release', {
|
||||
tracker: tracker,
|
||||
position: position,
|
||||
insideElementPress: insideElementPress,
|
||||
insideElementRelease: insideElementRelease
|
||||
});
|
||||
}
|
||||
|
||||
function onCanvasScroll( tracker, position, scroll, shift ) {
|
||||
@ -4536,6 +4588,12 @@ function onCanvasScroll( tracker, position, scroll, shift ) {
|
||||
);
|
||||
this.viewport.applyConstraints();
|
||||
}
|
||||
this.raiseEvent( 'canvas-scroll', {
|
||||
tracker: tracker,
|
||||
position: position,
|
||||
scroll: scroll,
|
||||
shift: shift
|
||||
});
|
||||
//cancels event
|
||||
return false;
|
||||
}
|
||||
@ -4547,6 +4605,12 @@ function onContainerExit( tracker, position, buttonDownElement, buttonDownAny )
|
||||
beginControlsAutoHide( this );
|
||||
}
|
||||
}
|
||||
this.raiseEvent( 'container-exit', {
|
||||
tracker: tracker,
|
||||
position: position,
|
||||
buttonDownElement: buttonDownElement,
|
||||
buttonDownAny: buttonDownAny
|
||||
});
|
||||
}
|
||||
|
||||
function onContainerRelease( tracker, position, insideElementPress, insideElementRelease ) {
|
||||
@ -4556,11 +4620,23 @@ function onContainerRelease( tracker, position, insideElementPress, insideElemen
|
||||
beginControlsAutoHide( this );
|
||||
}
|
||||
}
|
||||
this.raiseEvent( 'container-release', {
|
||||
tracker: tracker,
|
||||
position: position,
|
||||
insideElementPress: insideElementPress,
|
||||
insideElementRelease: insideElementRelease
|
||||
});
|
||||
}
|
||||
|
||||
function onContainerEnter( tracker, position, buttonDownElement, buttonDownAny ) {
|
||||
THIS[ this.hash ].mouseInside = true;
|
||||
abortControlsAutoHide( this );
|
||||
this.raiseEvent( 'container-enter', {
|
||||
tracker: tracker,
|
||||
position: position,
|
||||
buttonDownElement: buttonDownElement,
|
||||
buttonDownAny: buttonDownAny
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@ -4597,7 +4673,6 @@ function updateOnce( viewer ) {
|
||||
// maintain image position
|
||||
viewer.viewport.resize( containerSize, true );
|
||||
THIS[ viewer.hash ].prevContainerSize = containerSize;
|
||||
viewer.raiseEvent( "resize" );
|
||||
}
|
||||
|
||||
animated = viewer.viewport.update();
|
||||
@ -8671,6 +8746,15 @@ $.Drawer.prototype = {
|
||||
|
||||
this.overlays.push( new $.Overlay( element, location, placement ) );
|
||||
this.updateAgain = true;
|
||||
if( this.viewer ){
|
||||
this.viewer.raiseEvent( 'add-overlay', {
|
||||
viewer: this.viewer,
|
||||
element: element,
|
||||
location: location,
|
||||
placement: placement
|
||||
});
|
||||
}
|
||||
return this;
|
||||
},
|
||||
|
||||
/**
|
||||
@ -8682,6 +8766,7 @@ $.Drawer.prototype = {
|
||||
* @param {OpenSeadragon.OverlayPlacement} placement - The position of the
|
||||
* viewport which the location coordinates will be treated as relative
|
||||
* to.
|
||||
* @return {OpenSeadragon.Drawer} Chainable.
|
||||
*/
|
||||
updateOverlay: function( element, location, placement ) {
|
||||
var i;
|
||||
@ -8693,6 +8778,15 @@ $.Drawer.prototype = {
|
||||
this.overlays[ i ].update( location, placement );
|
||||
this.updateAgain = true;
|
||||
}
|
||||
if( this.viewer ){
|
||||
this.viewer.raiseEvent( 'update-overlay', {
|
||||
viewer: this.viewer,
|
||||
element: element,
|
||||
location: location,
|
||||
placement: placement
|
||||
});
|
||||
}
|
||||
return this;
|
||||
},
|
||||
|
||||
/**
|
||||
@ -8701,6 +8795,7 @@ $.Drawer.prototype = {
|
||||
* @method
|
||||
* @param {Element|String} element - A reference to the element or an
|
||||
* element id which represent the ovelay content to be removed.
|
||||
* @return {OpenSeadragon.Drawer} Chainable.
|
||||
*/
|
||||
removeOverlay: function( element ) {
|
||||
var i;
|
||||
@ -8713,18 +8808,33 @@ $.Drawer.prototype = {
|
||||
this.overlays.splice( i, 1 );
|
||||
this.updateAgain = true;
|
||||
}
|
||||
if( this.viewer ){
|
||||
this.viewer.raiseEvent( 'remove-overlay', {
|
||||
viewer: this.viewer,
|
||||
element: element
|
||||
});
|
||||
}
|
||||
return this;
|
||||
},
|
||||
|
||||
/**
|
||||
* Removes all currently configured Overlays from this Drawer and schedules
|
||||
* and update.
|
||||
* @method
|
||||
* @return {OpenSeadragon.Drawer} Chainable.
|
||||
*/
|
||||
clearOverlays: function() {
|
||||
while ( this.overlays.length > 0 ) {
|
||||
this.overlays.pop().destroy();
|
||||
this.updateAgain = true;
|
||||
}
|
||||
if( this.viewer ){
|
||||
this.viewer.raiseEvent( 'clear-overlay', {
|
||||
viewer: this.viewer,
|
||||
element: element
|
||||
});
|
||||
}
|
||||
return this;
|
||||
},
|
||||
|
||||
|
||||
@ -8753,16 +8863,19 @@ $.Drawer.prototype = {
|
||||
* Clears all tiles and triggers an update on the next call to
|
||||
* Drawer.prototype.update().
|
||||
* @method
|
||||
* @return {OpenSeadragon.Drawer} Chainable.
|
||||
*/
|
||||
reset: function() {
|
||||
clearTiles( this );
|
||||
this.lastResetTime = +new Date();
|
||||
this.updateAgain = true;
|
||||
return this;
|
||||
},
|
||||
|
||||
/**
|
||||
* Forces the Drawer to update.
|
||||
* @method
|
||||
* @return {OpenSeadragon.Drawer} Chainable.
|
||||
*/
|
||||
update: function() {
|
||||
//this.profiler.beginUpdate();
|
||||
@ -8770,6 +8883,7 @@ $.Drawer.prototype = {
|
||||
updateViewport( this );
|
||||
this.midUpdate = false;
|
||||
//this.profiler.endUpdate();
|
||||
return this;
|
||||
},
|
||||
|
||||
/**
|
||||
@ -8900,6 +9014,12 @@ function updateViewport( drawer ) {
|
||||
|
||||
drawer.updateAgain = false;
|
||||
|
||||
if( drawer.viewer ){
|
||||
drawer.viewer.raiseEvent( 'update-viewport', {
|
||||
viewer: drawer.viewer
|
||||
});
|
||||
}
|
||||
|
||||
var tile,
|
||||
level,
|
||||
best = null,
|
||||
@ -9040,6 +9160,7 @@ function updateViewport( drawer ) {
|
||||
// because we haven't finished drawing, so
|
||||
drawer.updateAgain = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -9052,6 +9173,20 @@ function updateLevel( drawer, haveDrawn, level, levelOpacity, levelVisibility, v
|
||||
viewportCenter = drawer.viewport.pixelFromPoint( drawer.viewport.getCenter() );
|
||||
|
||||
|
||||
if( drawer.viewer ){
|
||||
drawer.viewer.raiseEvent( 'update-level', {
|
||||
viewer: drawer.viewer,
|
||||
havedrawn: haveDrawn,
|
||||
level: level,
|
||||
opacity: levelOpacity,
|
||||
visibility: levelVisibility,
|
||||
topleft: viewportTopLeft,
|
||||
bottomright: viewportBottomRight,
|
||||
currenttime: currentTime,
|
||||
best: best
|
||||
});
|
||||
}
|
||||
|
||||
//OK, a new drawing so do your calculations
|
||||
tileTL = drawer.source.getTileAtPoint( level, viewportTL );
|
||||
tileBR = drawer.source.getTileAtPoint( level, viewportBR );
|
||||
@ -9085,6 +9220,7 @@ function updateLevel( drawer, haveDrawn, level, levelOpacity, levelVisibility, v
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return best;
|
||||
}
|
||||
|
||||
@ -9102,6 +9238,13 @@ function updateTile( drawer, drawLevel, haveDrawn, x, y, level, levelOpacity, le
|
||||
drawTile = drawLevel,
|
||||
newbest;
|
||||
|
||||
if( drawer.viewer ){
|
||||
drawer.viewer.raiseEvent( 'update-tile', {
|
||||
viewer: drawer.viewer,
|
||||
tile: tile
|
||||
});
|
||||
}
|
||||
|
||||
setCoverage( drawer.coverage, level, x, y, false );
|
||||
|
||||
if ( !tile.exists ) {
|
||||
@ -9598,6 +9741,13 @@ function drawTiles( drawer, lastDrawn ){
|
||||
$.console.error(e);
|
||||
}
|
||||
}
|
||||
|
||||
if( drawer.viewer ){
|
||||
drawer.viewer.raiseEvent( 'tile-drawn', {
|
||||
viewer: drawer.viewer,
|
||||
tile: tile
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -9699,6 +9849,7 @@ $.Viewport = function( options ) {
|
||||
|
||||
//internal state properties
|
||||
zoomPoint: null,
|
||||
viewer: null,
|
||||
|
||||
//configurable options
|
||||
springStiffness: $.DEFAULT_SETTINGS.springStiffness,
|
||||
@ -9737,6 +9888,10 @@ $.Viewport = function( options ) {
|
||||
|
||||
$.Viewport.prototype = {
|
||||
|
||||
/**
|
||||
* @function
|
||||
* @return {OpenSeadragon.Viewport} Chainable.
|
||||
*/
|
||||
resetContentSize: function( contentSize ){
|
||||
this.contentSize = contentSize;
|
||||
this.contentAspectX = this.contentSize.x / this.contentSize.y;
|
||||
@ -9745,6 +9900,14 @@ $.Viewport.prototype = {
|
||||
this.fitHeightBounds = new $.Rect( 0, 0, this.contentAspectY, this.contentAspectY);
|
||||
|
||||
this.homeBounds = new $.Rect( 0, 0, 1, this.contentAspectY );
|
||||
|
||||
if( this.viewer ){
|
||||
this.viewer.raiseEvent( 'reset-size', {
|
||||
contentSize: contentSize,
|
||||
viewer: this.viewer
|
||||
});
|
||||
}
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
@ -9785,6 +9948,12 @@ $.Viewport.prototype = {
|
||||
* @param {Boolean} immediately
|
||||
*/
|
||||
goHome: function( immediately ) {
|
||||
if( this.viewer ){
|
||||
this.viewer.raiseEvent( 'home', {
|
||||
immediately: immediately,
|
||||
viewer: this.viewer
|
||||
});
|
||||
}
|
||||
return this.fitBounds( this.getHomeBounds(), immediately );
|
||||
},
|
||||
|
||||
@ -9907,6 +10076,7 @@ $.Viewport.prototype = {
|
||||
|
||||
/**
|
||||
* @function
|
||||
* @return {OpenSeadragon.Viewport} Chainable.
|
||||
*/
|
||||
applyConstraints: function( immediately ) {
|
||||
var actualZoom = this.getZoom(),
|
||||
@ -9977,6 +10147,14 @@ $.Viewport.prototype = {
|
||||
}
|
||||
this.fitBounds( bounds, immediately );
|
||||
}
|
||||
|
||||
if( this.viewer ){
|
||||
this.viewer.raiseEvent( 'constrain', {
|
||||
immediately: immediately,
|
||||
viewer: this.viewer
|
||||
});
|
||||
}
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
@ -9992,6 +10170,7 @@ $.Viewport.prototype = {
|
||||
* @function
|
||||
* @param {OpenSeadragon.Rect} bounds
|
||||
* @param {Boolean} immediately
|
||||
* @return {OpenSeadragon.Viewport} Chainable.
|
||||
*/
|
||||
fitBounds: function( bounds, immediately ) {
|
||||
var aspect = this.getAspectRatio(),
|
||||
@ -10043,6 +10222,7 @@ $.Viewport.prototype = {
|
||||
/**
|
||||
* @function
|
||||
* @param {Boolean} immediately
|
||||
* @return {OpenSeadragon.Viewport} Chainable.
|
||||
*/
|
||||
fitVertically: function( immediately ) {
|
||||
var center = this.getCenter();
|
||||
@ -10067,6 +10247,7 @@ $.Viewport.prototype = {
|
||||
/**
|
||||
* @function
|
||||
* @param {Boolean} immediately
|
||||
* @return {OpenSeadragon.Viewport} Chainable.
|
||||
*/
|
||||
fitHorizontally: function( immediately ) {
|
||||
var center = this.getCenter();
|
||||
@ -10093,6 +10274,7 @@ $.Viewport.prototype = {
|
||||
* @function
|
||||
* @param {OpenSeadragon.Point} delta
|
||||
* @param {Boolean} immediately
|
||||
* @return {OpenSeadragon.Viewport} Chainable.
|
||||
*/
|
||||
panBy: function( delta, immediately ) {
|
||||
var center = new $.Point(
|
||||
@ -10106,6 +10288,7 @@ $.Viewport.prototype = {
|
||||
* @function
|
||||
* @param {OpenSeadragon.Point} center
|
||||
* @param {Boolean} immediately
|
||||
* @return {OpenSeadragon.Viewport} Chainable.
|
||||
*/
|
||||
panTo: function( center, immediately ) {
|
||||
if ( immediately ) {
|
||||
@ -10116,11 +10299,20 @@ $.Viewport.prototype = {
|
||||
this.centerSpringY.springTo( center.y );
|
||||
}
|
||||
|
||||
if( this.viewer ){
|
||||
this.viewer.raiseEvent( 'pan', {
|
||||
center: center,
|
||||
immediately: immediately,
|
||||
viewer: this.viewer
|
||||
});
|
||||
}
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
/**
|
||||
* @function
|
||||
* @return {OpenSeadragon.Viewport} Chainable.
|
||||
*/
|
||||
zoomBy: function( factor, refPoint, immediately ) {
|
||||
return this.zoomTo( this.zoomSpring.target.value * factor, refPoint, immediately );
|
||||
@ -10128,6 +10320,7 @@ $.Viewport.prototype = {
|
||||
|
||||
/**
|
||||
* @function
|
||||
* @return {OpenSeadragon.Viewport} Chainable.
|
||||
*/
|
||||
zoomTo: function( zoom, refPoint, immediately ) {
|
||||
|
||||
@ -10141,12 +10334,21 @@ $.Viewport.prototype = {
|
||||
this.zoomSpring.springTo( zoom );
|
||||
}
|
||||
|
||||
if( this.viewer ){
|
||||
this.viewer.raiseEvent( 'zoom', {
|
||||
zoom: zoom,
|
||||
refPoint: refPoint,
|
||||
immediately: immediately,
|
||||
viewer: this.viewer
|
||||
});
|
||||
}
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
/**
|
||||
* @function
|
||||
* @return {OpenSeadragon.Viewport} Chainable.
|
||||
*/
|
||||
resize: function( newContainerSize, maintain ) {
|
||||
var oldBounds = this.getBounds(),
|
||||
@ -10163,6 +10365,14 @@ $.Viewport.prototype = {
|
||||
newBounds.height = newBounds.width / this.getAspectRatio();
|
||||
}
|
||||
|
||||
if( this.viewer ){
|
||||
this.viewer.raiseEvent( 'resize', {
|
||||
newContainerSize: newContainerSize,
|
||||
maintain: maintain,
|
||||
viewer: this.viewer
|
||||
});
|
||||
}
|
||||
|
||||
return this.fitBounds( newBounds, true );
|
||||
},
|
||||
|
||||
|
@ -146,6 +146,15 @@ $.Drawer.prototype = {
|
||||
|
||||
this.overlays.push( new $.Overlay( element, location, placement ) );
|
||||
this.updateAgain = true;
|
||||
if( this.viewer ){
|
||||
this.viewer.raiseEvent( 'add-overlay', {
|
||||
viewer: this.viewer,
|
||||
element: element,
|
||||
location: location,
|
||||
placement: placement
|
||||
});
|
||||
}
|
||||
return this;
|
||||
},
|
||||
|
||||
/**
|
||||
@ -157,6 +166,7 @@ $.Drawer.prototype = {
|
||||
* @param {OpenSeadragon.OverlayPlacement} placement - The position of the
|
||||
* viewport which the location coordinates will be treated as relative
|
||||
* to.
|
||||
* @return {OpenSeadragon.Drawer} Chainable.
|
||||
*/
|
||||
updateOverlay: function( element, location, placement ) {
|
||||
var i;
|
||||
@ -168,6 +178,15 @@ $.Drawer.prototype = {
|
||||
this.overlays[ i ].update( location, placement );
|
||||
this.updateAgain = true;
|
||||
}
|
||||
if( this.viewer ){
|
||||
this.viewer.raiseEvent( 'update-overlay', {
|
||||
viewer: this.viewer,
|
||||
element: element,
|
||||
location: location,
|
||||
placement: placement
|
||||
});
|
||||
}
|
||||
return this;
|
||||
},
|
||||
|
||||
/**
|
||||
@ -176,6 +195,7 @@ $.Drawer.prototype = {
|
||||
* @method
|
||||
* @param {Element|String} element - A reference to the element or an
|
||||
* element id which represent the ovelay content to be removed.
|
||||
* @return {OpenSeadragon.Drawer} Chainable.
|
||||
*/
|
||||
removeOverlay: function( element ) {
|
||||
var i;
|
||||
@ -188,18 +208,33 @@ $.Drawer.prototype = {
|
||||
this.overlays.splice( i, 1 );
|
||||
this.updateAgain = true;
|
||||
}
|
||||
if( this.viewer ){
|
||||
this.viewer.raiseEvent( 'remove-overlay', {
|
||||
viewer: this.viewer,
|
||||
element: element
|
||||
});
|
||||
}
|
||||
return this;
|
||||
},
|
||||
|
||||
/**
|
||||
* Removes all currently configured Overlays from this Drawer and schedules
|
||||
* and update.
|
||||
* @method
|
||||
* @return {OpenSeadragon.Drawer} Chainable.
|
||||
*/
|
||||
clearOverlays: function() {
|
||||
while ( this.overlays.length > 0 ) {
|
||||
this.overlays.pop().destroy();
|
||||
this.updateAgain = true;
|
||||
}
|
||||
if( this.viewer ){
|
||||
this.viewer.raiseEvent( 'clear-overlay', {
|
||||
viewer: this.viewer,
|
||||
element: element
|
||||
});
|
||||
}
|
||||
return this;
|
||||
},
|
||||
|
||||
|
||||
@ -228,16 +263,19 @@ $.Drawer.prototype = {
|
||||
* Clears all tiles and triggers an update on the next call to
|
||||
* Drawer.prototype.update().
|
||||
* @method
|
||||
* @return {OpenSeadragon.Drawer} Chainable.
|
||||
*/
|
||||
reset: function() {
|
||||
clearTiles( this );
|
||||
this.lastResetTime = +new Date();
|
||||
this.updateAgain = true;
|
||||
return this;
|
||||
},
|
||||
|
||||
/**
|
||||
* Forces the Drawer to update.
|
||||
* @method
|
||||
* @return {OpenSeadragon.Drawer} Chainable.
|
||||
*/
|
||||
update: function() {
|
||||
//this.profiler.beginUpdate();
|
||||
@ -245,6 +283,7 @@ $.Drawer.prototype = {
|
||||
updateViewport( this );
|
||||
this.midUpdate = false;
|
||||
//this.profiler.endUpdate();
|
||||
return this;
|
||||
},
|
||||
|
||||
/**
|
||||
@ -375,6 +414,12 @@ function updateViewport( drawer ) {
|
||||
|
||||
drawer.updateAgain = false;
|
||||
|
||||
if( drawer.viewer ){
|
||||
drawer.viewer.raiseEvent( 'update-viewport', {
|
||||
viewer: drawer.viewer
|
||||
});
|
||||
}
|
||||
|
||||
var tile,
|
||||
level,
|
||||
best = null,
|
||||
@ -515,6 +560,7 @@ function updateViewport( drawer ) {
|
||||
// because we haven't finished drawing, so
|
||||
drawer.updateAgain = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -527,6 +573,20 @@ function updateLevel( drawer, haveDrawn, level, levelOpacity, levelVisibility, v
|
||||
viewportCenter = drawer.viewport.pixelFromPoint( drawer.viewport.getCenter() );
|
||||
|
||||
|
||||
if( drawer.viewer ){
|
||||
drawer.viewer.raiseEvent( 'update-level', {
|
||||
viewer: drawer.viewer,
|
||||
havedrawn: haveDrawn,
|
||||
level: level,
|
||||
opacity: levelOpacity,
|
||||
visibility: levelVisibility,
|
||||
topleft: viewportTopLeft,
|
||||
bottomright: viewportBottomRight,
|
||||
currenttime: currentTime,
|
||||
best: best
|
||||
});
|
||||
}
|
||||
|
||||
//OK, a new drawing so do your calculations
|
||||
tileTL = drawer.source.getTileAtPoint( level, viewportTL );
|
||||
tileBR = drawer.source.getTileAtPoint( level, viewportBR );
|
||||
@ -560,6 +620,7 @@ function updateLevel( drawer, haveDrawn, level, levelOpacity, levelVisibility, v
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return best;
|
||||
}
|
||||
|
||||
@ -577,6 +638,13 @@ function updateTile( drawer, drawLevel, haveDrawn, x, y, level, levelOpacity, le
|
||||
drawTile = drawLevel,
|
||||
newbest;
|
||||
|
||||
if( drawer.viewer ){
|
||||
drawer.viewer.raiseEvent( 'update-tile', {
|
||||
viewer: drawer.viewer,
|
||||
tile: tile
|
||||
});
|
||||
}
|
||||
|
||||
setCoverage( drawer.coverage, level, x, y, false );
|
||||
|
||||
if ( !tile.exists ) {
|
||||
@ -1073,6 +1141,13 @@ function drawTiles( drawer, lastDrawn ){
|
||||
$.console.error(e);
|
||||
}
|
||||
}
|
||||
|
||||
if( drawer.viewer ){
|
||||
drawer.viewer.raiseEvent( 'tile-drawn', {
|
||||
viewer: drawer.viewer,
|
||||
tile: tile
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -66,7 +66,7 @@ $.EventHandler.prototype = {
|
||||
removeAllHandlers: function( eventName ){
|
||||
this.events[ eventName ] = [];
|
||||
},
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Retrive the list of all handlers registered for a given event.
|
||||
@ -99,6 +99,8 @@ $.EventHandler.prototype = {
|
||||
* @param {Function} handler - Function to call when event is triggered.
|
||||
*/
|
||||
raiseEvent: function( eventName, eventArgs ) {
|
||||
//uncomment if you want to get a log og all events
|
||||
//$.console.log( eventName );
|
||||
var handler = this.getHandler( eventName );
|
||||
|
||||
if ( handler ) {
|
||||
|
@ -1,33 +0,0 @@
|
||||
function addOverlay(viewer, x1, y1, x2, y2)
|
||||
{
|
||||
var div = document.createElement("div");
|
||||
var rect = new Seadragon.Rect(x1, y1, x2, y2);
|
||||
|
||||
div.className = "overlay";
|
||||
viewer.drawer.addOverlay(div, rect);
|
||||
};
|
||||
|
||||
function addOverlays(viewer)
|
||||
{
|
||||
var factor = viewer.source.height / viewer.source.width;
|
||||
$.each("".split("+"), function(index, word) {
|
||||
if (word!="") {
|
||||
$.getJSON('/beta/lccn/sn83030213/1865-04-10/ed-1/seq-1/coordinates/;words='+word, function(all_coordinates) {
|
||||
var boxes = [];
|
||||
for (word in all_coordinates) {
|
||||
var coordinates = all_coordinates[word];
|
||||
for (k in coordinates) {
|
||||
var v = coordinates[k];
|
||||
addOverlay(
|
||||
viewer,
|
||||
v["hpos"],
|
||||
v["vpos"]*factor,
|
||||
v["width"],
|
||||
v["height"]*factor
|
||||
);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
@ -379,7 +379,8 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
|
||||
animationTime: this.animationTime,
|
||||
showNavigator: false,
|
||||
minZoomImageRatio: 1,
|
||||
maxZoomPixelRatio: 1//,
|
||||
maxZoomPixelRatio: 1,
|
||||
viewer: this //,
|
||||
//TODO: figure out how to support these in a way that makes sense
|
||||
//minZoomLevel: this.minZoomLevel,
|
||||
//maxZoomLevel: this.maxZoomLevel
|
||||
@ -400,7 +401,8 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
|
||||
wrapVertical: this.wrapVertical,
|
||||
defaultZoomLevel: this.defaultZoomLevel,
|
||||
minZoomLevel: this.minZoomLevel,
|
||||
maxZoomLevel: this.maxZoomLevel
|
||||
maxZoomLevel: this.maxZoomLevel,
|
||||
viewer: this
|
||||
});
|
||||
}
|
||||
|
||||
@ -501,12 +503,13 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
|
||||
}
|
||||
}
|
||||
VIEWERS[ this.hash ] = this;
|
||||
this.raiseEvent( "open" );
|
||||
|
||||
if( this.navigator ){
|
||||
this.navigator.open( source );
|
||||
}
|
||||
|
||||
this.raiseEvent( 'open', { source: source, viewer: this } );
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
@ -530,6 +533,8 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
|
||||
|
||||
VIEWERS[ this.hash ] = null;
|
||||
delete VIEWERS[ this.hash ];
|
||||
|
||||
this.raiseEvent( 'close', { viewer: this } );
|
||||
|
||||
return this;
|
||||
},
|
||||
@ -551,6 +556,7 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
|
||||
*/
|
||||
setMouseNavEnabled: function( enabled ){
|
||||
this.innerTracker.setTracking( enabled );
|
||||
this.raiseEvent( 'mouse-enabled', { enabled: enabled, viewer: this } );
|
||||
return this;
|
||||
},
|
||||
|
||||
@ -581,6 +587,8 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
|
||||
} else {
|
||||
beginControlsAutoHide( this );
|
||||
}
|
||||
this.raiseEvent( 'controls-enabled', { enabled: enabled, viewer: this } );
|
||||
return this;
|
||||
},
|
||||
|
||||
|
||||
@ -741,6 +749,7 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
|
||||
$.delegate( this, onContainerExit )();
|
||||
|
||||
}
|
||||
this.raiseEvent( 'fullpage', { fullpage: fullPage, viewer: this } );
|
||||
|
||||
if ( this.viewport ) {
|
||||
oldBounds = this.viewport.getBounds();
|
||||
@ -776,7 +785,6 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
|
||||
}
|
||||
|
||||
THIS[ this.hash ].forceRedraw = true;
|
||||
this.raiseEvent( "resize", this );
|
||||
updateOnce( this );
|
||||
|
||||
}
|
||||
@ -801,9 +809,16 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
|
||||
*/
|
||||
setVisible: function( visible ){
|
||||
this.container.style.visibility = visible ? "" : "hidden";
|
||||
this.raiseEvent( 'visible', { visible: visible, viewer: this } );
|
||||
return this;
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* @function
|
||||
* @name OpenSeadragon.Viewer.prototype.bindSequenceControls
|
||||
* @return {OpenSeadragon.Viewer} Chainable.
|
||||
*/
|
||||
bindSequenceControls: function(){
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@ -880,8 +895,15 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
|
||||
}
|
||||
}
|
||||
}
|
||||
return this;
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* @function
|
||||
* @name OpenSeadragon.Viewer.prototype.bindStandardControls
|
||||
* @return {OpenSeadragon.Viewer} Chainable.
|
||||
*/
|
||||
bindStandardControls: function(){
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Navigation Controls
|
||||
@ -994,14 +1016,22 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
return this;
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* @function
|
||||
* @name OpenSeadragon.Viewer.prototype.goToPage
|
||||
* @return {OpenSeadragon.Viewer} Chainable.
|
||||
*/
|
||||
goToPage: function( page ){
|
||||
//page is a 1 based index so normalize now
|
||||
//page = page;
|
||||
this.raiseEvent( 'page', { page: page, viewer: this } );
|
||||
|
||||
if( this.tileSources.length > page ){
|
||||
|
||||
THIS[ this.hash ].sequence = page;
|
||||
@ -1025,6 +1055,7 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
|
||||
|
||||
this.openTileSource( this.tileSources[ page ] );
|
||||
}
|
||||
|
||||
if( $.isFunction( this.onPageChange ) ){
|
||||
this.onPageChange({
|
||||
page: page,
|
||||
@ -1034,6 +1065,7 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
|
||||
if( this.referenceStrip ){
|
||||
this.referenceStrip.setFocus( page );
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
});
|
||||
@ -1151,6 +1183,12 @@ function onCanvasClick( tracker, position, quick, shift ) {
|
||||
);
|
||||
this.viewport.applyConstraints();
|
||||
}
|
||||
this.raiseEvent( 'canvas-click', {
|
||||
tracker: tracker,
|
||||
position: position,
|
||||
quick: quick,
|
||||
shift: shift
|
||||
});
|
||||
}
|
||||
|
||||
function onCanvasDrag( tracker, position, delta, shift ) {
|
||||
@ -1170,12 +1208,24 @@ function onCanvasDrag( tracker, position, delta, shift ) {
|
||||
this.viewport.applyConstraints();
|
||||
}
|
||||
}
|
||||
this.raiseEvent( 'canvas-click', {
|
||||
tracker: tracker,
|
||||
position: position,
|
||||
delta: delta,
|
||||
shift: shift
|
||||
});
|
||||
}
|
||||
|
||||
function onCanvasRelease( tracker, position, insideElementPress, insideElementRelease ) {
|
||||
if ( insideElementPress && this.viewport ) {
|
||||
this.viewport.applyConstraints();
|
||||
}
|
||||
this.raiseEvent( 'canvas-release', {
|
||||
tracker: tracker,
|
||||
position: position,
|
||||
insideElementPress: insideElementPress,
|
||||
insideElementRelease: insideElementRelease
|
||||
});
|
||||
}
|
||||
|
||||
function onCanvasScroll( tracker, position, scroll, shift ) {
|
||||
@ -1188,6 +1238,12 @@ function onCanvasScroll( tracker, position, scroll, shift ) {
|
||||
);
|
||||
this.viewport.applyConstraints();
|
||||
}
|
||||
this.raiseEvent( 'canvas-scroll', {
|
||||
tracker: tracker,
|
||||
position: position,
|
||||
scroll: scroll,
|
||||
shift: shift
|
||||
});
|
||||
//cancels event
|
||||
return false;
|
||||
}
|
||||
@ -1199,6 +1255,12 @@ function onContainerExit( tracker, position, buttonDownElement, buttonDownAny )
|
||||
beginControlsAutoHide( this );
|
||||
}
|
||||
}
|
||||
this.raiseEvent( 'container-exit', {
|
||||
tracker: tracker,
|
||||
position: position,
|
||||
buttonDownElement: buttonDownElement,
|
||||
buttonDownAny: buttonDownAny
|
||||
});
|
||||
}
|
||||
|
||||
function onContainerRelease( tracker, position, insideElementPress, insideElementRelease ) {
|
||||
@ -1208,11 +1270,23 @@ function onContainerRelease( tracker, position, insideElementPress, insideElemen
|
||||
beginControlsAutoHide( this );
|
||||
}
|
||||
}
|
||||
this.raiseEvent( 'container-release', {
|
||||
tracker: tracker,
|
||||
position: position,
|
||||
insideElementPress: insideElementPress,
|
||||
insideElementRelease: insideElementRelease
|
||||
});
|
||||
}
|
||||
|
||||
function onContainerEnter( tracker, position, buttonDownElement, buttonDownAny ) {
|
||||
THIS[ this.hash ].mouseInside = true;
|
||||
abortControlsAutoHide( this );
|
||||
this.raiseEvent( 'container-enter', {
|
||||
tracker: tracker,
|
||||
position: position,
|
||||
buttonDownElement: buttonDownElement,
|
||||
buttonDownAny: buttonDownAny
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@ -1249,7 +1323,6 @@ function updateOnce( viewer ) {
|
||||
// maintain image position
|
||||
viewer.viewport.resize( containerSize, true );
|
||||
THIS[ viewer.hash ].prevContainerSize = containerSize;
|
||||
viewer.raiseEvent( "resize" );
|
||||
}
|
||||
|
||||
animated = viewer.viewport.update();
|
||||
|
@ -35,6 +35,7 @@ $.Viewport = function( options ) {
|
||||
|
||||
//internal state properties
|
||||
zoomPoint: null,
|
||||
viewer: null,
|
||||
|
||||
//configurable options
|
||||
springStiffness: $.DEFAULT_SETTINGS.springStiffness,
|
||||
@ -73,6 +74,10 @@ $.Viewport = function( options ) {
|
||||
|
||||
$.Viewport.prototype = {
|
||||
|
||||
/**
|
||||
* @function
|
||||
* @return {OpenSeadragon.Viewport} Chainable.
|
||||
*/
|
||||
resetContentSize: function( contentSize ){
|
||||
this.contentSize = contentSize;
|
||||
this.contentAspectX = this.contentSize.x / this.contentSize.y;
|
||||
@ -81,6 +86,14 @@ $.Viewport.prototype = {
|
||||
this.fitHeightBounds = new $.Rect( 0, 0, this.contentAspectY, this.contentAspectY);
|
||||
|
||||
this.homeBounds = new $.Rect( 0, 0, 1, this.contentAspectY );
|
||||
|
||||
if( this.viewer ){
|
||||
this.viewer.raiseEvent( 'reset-size', {
|
||||
contentSize: contentSize,
|
||||
viewer: this.viewer
|
||||
});
|
||||
}
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
@ -121,6 +134,12 @@ $.Viewport.prototype = {
|
||||
* @param {Boolean} immediately
|
||||
*/
|
||||
goHome: function( immediately ) {
|
||||
if( this.viewer ){
|
||||
this.viewer.raiseEvent( 'home', {
|
||||
immediately: immediately,
|
||||
viewer: this.viewer
|
||||
});
|
||||
}
|
||||
return this.fitBounds( this.getHomeBounds(), immediately );
|
||||
},
|
||||
|
||||
@ -243,6 +262,7 @@ $.Viewport.prototype = {
|
||||
|
||||
/**
|
||||
* @function
|
||||
* @return {OpenSeadragon.Viewport} Chainable.
|
||||
*/
|
||||
applyConstraints: function( immediately ) {
|
||||
var actualZoom = this.getZoom(),
|
||||
@ -313,6 +333,14 @@ $.Viewport.prototype = {
|
||||
}
|
||||
this.fitBounds( bounds, immediately );
|
||||
}
|
||||
|
||||
if( this.viewer ){
|
||||
this.viewer.raiseEvent( 'constrain', {
|
||||
immediately: immediately,
|
||||
viewer: this.viewer
|
||||
});
|
||||
}
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
@ -328,6 +356,7 @@ $.Viewport.prototype = {
|
||||
* @function
|
||||
* @param {OpenSeadragon.Rect} bounds
|
||||
* @param {Boolean} immediately
|
||||
* @return {OpenSeadragon.Viewport} Chainable.
|
||||
*/
|
||||
fitBounds: function( bounds, immediately ) {
|
||||
var aspect = this.getAspectRatio(),
|
||||
@ -379,6 +408,7 @@ $.Viewport.prototype = {
|
||||
/**
|
||||
* @function
|
||||
* @param {Boolean} immediately
|
||||
* @return {OpenSeadragon.Viewport} Chainable.
|
||||
*/
|
||||
fitVertically: function( immediately ) {
|
||||
var center = this.getCenter();
|
||||
@ -403,6 +433,7 @@ $.Viewport.prototype = {
|
||||
/**
|
||||
* @function
|
||||
* @param {Boolean} immediately
|
||||
* @return {OpenSeadragon.Viewport} Chainable.
|
||||
*/
|
||||
fitHorizontally: function( immediately ) {
|
||||
var center = this.getCenter();
|
||||
@ -429,6 +460,7 @@ $.Viewport.prototype = {
|
||||
* @function
|
||||
* @param {OpenSeadragon.Point} delta
|
||||
* @param {Boolean} immediately
|
||||
* @return {OpenSeadragon.Viewport} Chainable.
|
||||
*/
|
||||
panBy: function( delta, immediately ) {
|
||||
var center = new $.Point(
|
||||
@ -442,6 +474,7 @@ $.Viewport.prototype = {
|
||||
* @function
|
||||
* @param {OpenSeadragon.Point} center
|
||||
* @param {Boolean} immediately
|
||||
* @return {OpenSeadragon.Viewport} Chainable.
|
||||
*/
|
||||
panTo: function( center, immediately ) {
|
||||
if ( immediately ) {
|
||||
@ -452,11 +485,20 @@ $.Viewport.prototype = {
|
||||
this.centerSpringY.springTo( center.y );
|
||||
}
|
||||
|
||||
if( this.viewer ){
|
||||
this.viewer.raiseEvent( 'pan', {
|
||||
center: center,
|
||||
immediately: immediately,
|
||||
viewer: this.viewer
|
||||
});
|
||||
}
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
/**
|
||||
* @function
|
||||
* @return {OpenSeadragon.Viewport} Chainable.
|
||||
*/
|
||||
zoomBy: function( factor, refPoint, immediately ) {
|
||||
return this.zoomTo( this.zoomSpring.target.value * factor, refPoint, immediately );
|
||||
@ -464,6 +506,7 @@ $.Viewport.prototype = {
|
||||
|
||||
/**
|
||||
* @function
|
||||
* @return {OpenSeadragon.Viewport} Chainable.
|
||||
*/
|
||||
zoomTo: function( zoom, refPoint, immediately ) {
|
||||
|
||||
@ -477,12 +520,21 @@ $.Viewport.prototype = {
|
||||
this.zoomSpring.springTo( zoom );
|
||||
}
|
||||
|
||||
if( this.viewer ){
|
||||
this.viewer.raiseEvent( 'zoom', {
|
||||
zoom: zoom,
|
||||
refPoint: refPoint,
|
||||
immediately: immediately,
|
||||
viewer: this.viewer
|
||||
});
|
||||
}
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
/**
|
||||
* @function
|
||||
* @return {OpenSeadragon.Viewport} Chainable.
|
||||
*/
|
||||
resize: function( newContainerSize, maintain ) {
|
||||
var oldBounds = this.getBounds(),
|
||||
@ -499,6 +551,14 @@ $.Viewport.prototype = {
|
||||
newBounds.height = newBounds.width / this.getAspectRatio();
|
||||
}
|
||||
|
||||
if( this.viewer ){
|
||||
this.viewer.raiseEvent( 'resize', {
|
||||
newContainerSize: newContainerSize,
|
||||
maintain: maintain,
|
||||
viewer: this.viewer
|
||||
});
|
||||
}
|
||||
|
||||
return this.fitBounds( newBounds, true );
|
||||
},
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user