Added viewport-change event; fixed spring reset

This commit is contained in:
Ian Gilman 2015-01-20 11:23:34 -08:00
parent 732cd87a10
commit 897a237807
4 changed files with 23 additions and 14 deletions

View File

@ -44,6 +44,8 @@ OPENSEADRAGON CHANGELOG
* Added union() to OpenSeadragon.Rect * Added union() to OpenSeadragon.Rect
* Fixed an error in fitBounds if the new and old bounds were extremely close in size * Fixed an error in fitBounds if the new and old bounds were extremely close in size
* Added ajaxWithCredentials option (#543) * Added ajaxWithCredentials option (#543)
* Added viewport-change event for after the viewport changes but before it's drawn
* A spring's current value is now updated immediately on reset (#524)
1.2.1: (in progress) 1.2.1: (in progress)

View File

@ -117,10 +117,8 @@ $.Spring.prototype = /** @lends OpenSeadragon.Spring.prototype */{
* @param {Number} target * @param {Number} target
*/ */
resetTo: function( target ) { resetTo: function( target ) {
this.target.value = target; this.start.value = this.target.value = this.current.value = target;
this.target.time = this.current.time; this.start.time = this.target.time = this.current.time = $.now();
this.start.value = this.target.value;
this.start.time = this.target.time;
}, },
/** /**

View File

@ -409,8 +409,6 @@ $.extend($.TiledImage.prototype, $.EventSource.prototype, /** @lends OpenSeadrag
this._xSpring.resetTo(position.x); this._xSpring.resetTo(position.x);
this._ySpring.resetTo(position.y); this._ySpring.resetTo(position.y);
this._xSpring.update();
this._ySpring.update();
} else { } else {
if (sameTarget) { if (sameTarget) {
return; return;
@ -454,7 +452,6 @@ $.extend($.TiledImage.prototype, $.EventSource.prototype, /** @lends OpenSeadrag
} }
this._scaleSpring.resetTo(scale); this._scaleSpring.resetTo(scale);
this._scaleSpring.update();
this._updateForScale(); this._updateForScale();
} else { } else {
if (sameTarget) { if (sameTarget) {

View File

@ -2798,13 +2798,10 @@ function updateMulti( viewer ) {
function updateOnce( viewer ) { function updateOnce( viewer ) {
var containerSize,
animated;
//viewer.profiler.beginUpdate(); //viewer.profiler.beginUpdate();
if ( viewer.autoResize ) { if ( viewer.autoResize ) {
containerSize = _getSafeElemSize( viewer.container ); var containerSize = _getSafeElemSize( viewer.container );
if ( !containerSize.equals( THIS[ viewer.hash ].prevContainerSize ) ) { if ( !containerSize.equals( THIS[ viewer.hash ].prevContainerSize ) ) {
// maintain image position // maintain image position
var oldBounds = viewer.viewport.getBounds(); var oldBounds = viewer.viewport.getBounds();
@ -2815,8 +2812,22 @@ function updateOnce( viewer ) {
} }
} }
animated = viewer.viewport.update(); var viewportChange = viewer.viewport.update();
animated = viewer.world.update() || animated; var animated = viewer.world.update() || viewportChange;
if (viewportChange) {
/**
* Raised when any spring animation update occurs (zoom, pan, etc.),
* before the viewer has drawn the new location.
*
* @event viewport-change
* @memberof OpenSeadragon.Viewer
* @type {object}
* @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised this event.
* @property {?Object} userData - Arbitrary subscriber-defined object.
*/
viewer.raiseEvent('viewport-change');
}
if( viewer.referenceStrip ){ if( viewer.referenceStrip ){
animated = viewer.referenceStrip.update( viewer.viewport ) || animated; animated = viewer.referenceStrip.update( viewer.viewport ) || animated;
@ -2847,7 +2858,8 @@ function updateOnce( viewer ) {
if (animated) { if (animated) {
/** /**
* Raised when any spring animation update occurs (zoom, pan, etc.). * Raised when any spring animation update occurs (zoom, pan, etc.),
* after the viewer has drawn the new location.
* *
* @event animation * @event animation
* @memberof OpenSeadragon.Viewer * @memberof OpenSeadragon.Viewer