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 ) {