diff --git a/build.properties b/build.properties index e1d539f0..a54089ec 100644 --- a/build.properties +++ b/build.properties @@ -6,7 +6,7 @@ PROJECT: openseadragon BUILD_MAJOR: 0 BUILD_MINOR: 9 -BUILD_ID: 11 +BUILD_ID: 12 BUILD: ${PROJECT}.${BUILD_MAJOR}.${BUILD_MINOR}.${BUILD_ID} VERSION: ${BUILD_MAJOR}.${BUILD_MINOR}.${BUILD_ID} diff --git a/openseadragon.js b/openseadragon.js index bdc44373..dea95cf6 100644 --- a/openseadragon.js +++ b/openseadragon.js @@ -1,5 +1,5 @@ /** - * @version OpenSeadragon 0.9.11 + * @version OpenSeadragon 0.9.12 * * @fileOverview *

@@ -5261,7 +5261,7 @@ $.Drawer.prototype = { image, jobid, complete; - + if ( !this.config.imageLoaderLimit || this.downloading < this.config.imageLoaderLimit ) { @@ -5314,6 +5314,7 @@ $.Drawer.prototype = { * why there are so many TODO's inside this function. */ function updateViewport( drawer ) { + drawer.updateAgain = false; var tile, @@ -5342,7 +5343,13 @@ function updateViewport( drawer ) { Math.log( zeroRatioC / MIN_PIXEL_RATIO ) / Math.log( 2 ) ) - ); + ), + renderPixelRatioC, + renderPixelRatioT, + zeroRatioT, + optimalRatio, + levelOpacity, + levelVisibility; //TODO while ( drawer.lastDrawn.length > 0 ) { @@ -5384,11 +5391,47 @@ function updateViewport( drawer ) { //TODO for ( level = highestLevel; level >= lowestLevel; level-- ) { + //Avoid calculations for draw if we have already drawn this + renderPixelRatioC = drawer.viewport.deltaPixelsFromPoints( + drawer.source.getPixelRatio( level ), + true + ).x; + + if ( ( !haveDrawn && renderPixelRatioC >= MIN_PIXEL_RATIO ) || + ( level == lowestLevel ) ) { + drawLevel = true; + haveDrawn = true; + } else if ( !haveDrawn ) { + continue; + } + + renderPixelRatioT = drawer.viewport.deltaPixelsFromPoints( + drawer.source.getPixelRatio( level ), + false + ).x; + + zeroRatioT = drawer.viewport.deltaPixelsFromPoints( + drawer.source.getPixelRatio( 0 ), + false + ).x; + + optimalRatio = drawer.config.immediateRender ? + 1 : + zeroRatioT; + + levelOpacity = Math.min( 1, ( renderPixelRatioC - 0.5 ) / 0.5 ); + + levelVisibility = optimalRatio / Math.abs( + optimalRatio - renderPixelRatioT + ); + //TODO best = updateLevel( drawer, + haveDrawn, level, - lowestLevel, + levelOpacity, + levelVisibility, viewportTL, viewportBR, currentTime, @@ -5414,55 +5457,20 @@ function updateViewport( drawer ) { }; -function updateLevel( drawer, level, lowestLevel, viewportTL, viewportBR, currentTime, best ){ +function updateLevel( drawer, haveDrawn, level, levelOpacity, levelVisibility, viewportTL, viewportBR, currentTime, best ){ + var x, y, tileTL, tileBR, numberOfTiles, - levelOpacity, - levelVisibility, - renderPixelRatioC, - renderPixelRatioT, - haveDrawn = false, - drawLevel = false, - viewportCenter = drawer.viewport.pixelFromPoint( drawer.viewport.getCenter() ), - zeroRatioT = drawer.viewport.deltaPixelsFromPoints( - drawer.source.getPixelRatio( 0 ), - false - ).x, - optimalRatio = drawer.config.immediateRender ? - 1 : - zeroRatioT; + viewportCenter = drawer.viewport.pixelFromPoint( drawer.viewport.getCenter() ); - //Avoid calculations for draw if we have already drawn this - renderPixelRatioC = drawer.viewport.deltaPixelsFromPoints( - drawer.source.getPixelRatio( level ), - true - ).x; - - if ( ( !haveDrawn && renderPixelRatioC >= MIN_PIXEL_RATIO ) || - ( level == lowestLevel ) ) { - drawLevel = true; - haveDrawn = true; - } else if ( !haveDrawn ) { - return best; - } //OK, a new drawing so do your calculations tileTL = drawer.source.getTileAtPoint( level, viewportTL ); tileBR = drawer.source.getTileAtPoint( level, viewportBR ); numberOfTiles = drawer.source.getNumTiles( level ); - renderPixelRatioT = drawer.viewport.deltaPixelsFromPoints( - drawer.source.getPixelRatio( level ), - false - ).x; - - levelOpacity = Math.min( 1, ( renderPixelRatioC - 0.5 ) / 0.5 ); - levelVisibility = optimalRatio / Math.abs( - optimalRatio - renderPixelRatioT - ); - resetCoverage( drawer.coverage, level ); if ( !drawer.config.wrapHorizontal ) { diff --git a/src/drawer.js b/src/drawer.js index 05df99e9..65c60eb1 100644 --- a/src/drawer.js +++ b/src/drawer.js @@ -225,7 +225,7 @@ $.Drawer.prototype = { image, jobid, complete; - + if ( !this.config.imageLoaderLimit || this.downloading < this.config.imageLoaderLimit ) { @@ -278,6 +278,7 @@ $.Drawer.prototype = { * why there are so many TODO's inside this function. */ function updateViewport( drawer ) { + drawer.updateAgain = false; var tile, @@ -306,7 +307,13 @@ function updateViewport( drawer ) { Math.log( zeroRatioC / MIN_PIXEL_RATIO ) / Math.log( 2 ) ) - ); + ), + renderPixelRatioC, + renderPixelRatioT, + zeroRatioT, + optimalRatio, + levelOpacity, + levelVisibility; //TODO while ( drawer.lastDrawn.length > 0 ) { @@ -348,11 +355,47 @@ function updateViewport( drawer ) { //TODO for ( level = highestLevel; level >= lowestLevel; level-- ) { + //Avoid calculations for draw if we have already drawn this + renderPixelRatioC = drawer.viewport.deltaPixelsFromPoints( + drawer.source.getPixelRatio( level ), + true + ).x; + + if ( ( !haveDrawn && renderPixelRatioC >= MIN_PIXEL_RATIO ) || + ( level == lowestLevel ) ) { + drawLevel = true; + haveDrawn = true; + } else if ( !haveDrawn ) { + continue; + } + + renderPixelRatioT = drawer.viewport.deltaPixelsFromPoints( + drawer.source.getPixelRatio( level ), + false + ).x; + + zeroRatioT = drawer.viewport.deltaPixelsFromPoints( + drawer.source.getPixelRatio( 0 ), + false + ).x; + + optimalRatio = drawer.config.immediateRender ? + 1 : + zeroRatioT; + + levelOpacity = Math.min( 1, ( renderPixelRatioC - 0.5 ) / 0.5 ); + + levelVisibility = optimalRatio / Math.abs( + optimalRatio - renderPixelRatioT + ); + //TODO best = updateLevel( drawer, + haveDrawn, level, - lowestLevel, + levelOpacity, + levelVisibility, viewportTL, viewportBR, currentTime, @@ -378,55 +421,20 @@ function updateViewport( drawer ) { }; -function updateLevel( drawer, level, lowestLevel, viewportTL, viewportBR, currentTime, best ){ +function updateLevel( drawer, haveDrawn, level, levelOpacity, levelVisibility, viewportTL, viewportBR, currentTime, best ){ + var x, y, tileTL, tileBR, numberOfTiles, - levelOpacity, - levelVisibility, - renderPixelRatioC, - renderPixelRatioT, - haveDrawn = false, - drawLevel = false, - viewportCenter = drawer.viewport.pixelFromPoint( drawer.viewport.getCenter() ), - zeroRatioT = drawer.viewport.deltaPixelsFromPoints( - drawer.source.getPixelRatio( 0 ), - false - ).x, - optimalRatio = drawer.config.immediateRender ? - 1 : - zeroRatioT; + viewportCenter = drawer.viewport.pixelFromPoint( drawer.viewport.getCenter() ); - //Avoid calculations for draw if we have already drawn this - renderPixelRatioC = drawer.viewport.deltaPixelsFromPoints( - drawer.source.getPixelRatio( level ), - true - ).x; - - if ( ( !haveDrawn && renderPixelRatioC >= MIN_PIXEL_RATIO ) || - ( level == lowestLevel ) ) { - drawLevel = true; - haveDrawn = true; - } else if ( !haveDrawn ) { - return best; - } //OK, a new drawing so do your calculations tileTL = drawer.source.getTileAtPoint( level, viewportTL ); tileBR = drawer.source.getTileAtPoint( level, viewportBR ); numberOfTiles = drawer.source.getNumTiles( level ); - renderPixelRatioT = drawer.viewport.deltaPixelsFromPoints( - drawer.source.getPixelRatio( level ), - false - ).x; - - levelOpacity = Math.min( 1, ( renderPixelRatioC - 0.5 ) / 0.5 ); - levelVisibility = optimalRatio / Math.abs( - optimalRatio - renderPixelRatioT - ); - resetCoverage( drawer.coverage, level ); if ( !drawer.config.wrapHorizontal ) {