diff --git a/build.xml b/build.xml
index 34f3182b..cbdda4ec 100644
--- a/build.xml
+++ b/build.xml
@@ -28,7 +28,6 @@
-
diff --git a/openseadragon.js b/openseadragon.js
index 50ce6167..6fb0ac0a 100644
--- a/openseadragon.js
+++ b/openseadragon.js
@@ -2389,81 +2389,6 @@ $.Profiler.prototype = {
}( OpenSeadragon ));
-(function( $ ){
-
- //TODO: make TIMEOUT configurable
- var TIMEOUT = 5000;
-
-$.ImageLoader = function( imageLoaderLimit ) {
- this.downloading = 0;
- this.imageLoaderLimit = imageLoaderLimit;
-};
-
-$.ImageLoader.prototype = {
- loadImage: function(src, callback) {
- var _this = this,
- loading = false,
- image,
- jobid,
- complete;
-
- if ( !this.imageLoaderLimit || this.downloading < this.imageLoaderLimit ) {
-
- this.downloading++;
-
- image = new Image();
-
- complete = function( imagesrc ){
- _this.downloading--;
- if (typeof ( callback ) == "function") {
- try {
- callback( image );
- } catch ( e ) {
- $.Debug.error(
- e.name + " while executing " + src +" callback: " + e.message,
- e
- );
- }
- }
- };
-
- image.onload = function(){
- finish( image, complete, true );
- };
-
- image.onabort = image.onerror = function(){
- finish( image, complete, false );
- };
-
- jobid = window.setTimeout( function(){
- finish( image, complete, false, jobid );
- }, TIMEOUT );
-
- loading = true;
- image.src = src;
- }
-
- return loading;
- }
-};
-
-function finish( image, callback, successful, jobid ){
-
- image.onload = null;
- image.onabort = null;
- image.onerror = null;
-
- if ( jobid ) {
- window.clearTimeout( jobid );
- }
- window.setTimeout( function() {
- callback( image.src, successful ? image : null);
- }, 1 );
-
-};
-
-}( OpenSeadragon ));
-
(function( $ ){
$.TileSource = function(width, height, tileSize, tileOverlap, minLevel, maxLevel) {
@@ -3398,6 +3323,9 @@ $.Tile.prototype = {
var QUOTA = 100; // the max number of images we should keep in memory
var MIN_PIXEL_RATIO = 0.5; // the most shrunk a tile should be
+//TODO: make TIMEOUT configurable
+var TIMEOUT = 5000;
+
var browser = $.Utils.getBrowser();
var browserVer = $.Utils.getBrowserVersion();
@@ -3419,7 +3347,9 @@ $.Drawer = function(source, viewport, elmt) {
this._source = source;
this.config = this._viewport.config;
- this._imageLoader = new $.ImageLoader(this.config.imageLoaderLimit);
+ this.downloading = 0;
+ this.imageLoaderLimit = this.config.imageLoaderLimit;
+
this._profiler = new $.Profiler();
this._minLevel = source.minLevel;
@@ -3515,8 +3445,15 @@ $.Drawer.prototype = {
},
_loadTile: function(tile, time) {
- tile.loading = this._imageLoader.loadImage(tile.url,
- $.Utils.createCallback(null, $.delegate(this, this._onTileLoad), tile, time));
+ tile.loading = this.loadImage(
+ tile.url,
+ $.Utils.createCallback(
+ null,
+ $.delegate(this, this._onTileLoad),
+ tile,
+ time
+ )
+ );
},
_onTileLoad: function(tile, time, image) {
@@ -3966,9 +3903,70 @@ $.Drawer.prototype = {
},
idle: function() {
+ },
+
+ loadImage: function(src, callback) {
+ var _this = this,
+ loading = false,
+ image,
+ jobid,
+ complete;
+
+ if ( !this.imageLoaderLimit || this.downloading < this.imageLoaderLimit ) {
+
+ this.downloading++;
+
+ image = new Image();
+
+ complete = function( imagesrc ){
+ _this.downloading--;
+ if (typeof ( callback ) == "function") {
+ try {
+ callback( image );
+ } catch ( e ) {
+ $.Debug.error(
+ e.name + " while executing " + src +" callback: " + e.message,
+ e
+ );
+ }
+ }
+ };
+
+ image.onload = function(){
+ finishLoadingImage( image, complete, true );
+ };
+
+ image.onabort = image.onerror = function(){
+ finishLoadingImage( image, complete, false );
+ };
+
+ jobid = window.setTimeout( function(){
+ finishLoadingImage( image, complete, false, jobid );
+ }, TIMEOUT );
+
+ loading = true;
+ image.src = src;
+ }
+
+ return loading;
}
};
+function finishLoadingImage( image, callback, successful, jobid ){
+
+ image.onload = null;
+ image.onabort = null;
+ image.onerror = null;
+
+ if ( jobid ) {
+ window.clearTimeout( jobid );
+ }
+ window.setTimeout( function() {
+ callback( image.src, successful ? image : null);
+ }, 1 );
+
+};
+
}( OpenSeadragon ));
(function( $ ){
diff --git a/src/drawer.js b/src/drawer.js
index 52b975c9..1a3e83fc 100644
--- a/src/drawer.js
+++ b/src/drawer.js
@@ -4,6 +4,9 @@
var QUOTA = 100; // the max number of images we should keep in memory
var MIN_PIXEL_RATIO = 0.5; // the most shrunk a tile should be
+//TODO: make TIMEOUT configurable
+var TIMEOUT = 5000;
+
var browser = $.Utils.getBrowser();
var browserVer = $.Utils.getBrowserVersion();
@@ -25,7 +28,9 @@ $.Drawer = function(source, viewport, elmt) {
this._source = source;
this.config = this._viewport.config;
- this._imageLoader = new $.ImageLoader(this.config.imageLoaderLimit);
+ this.downloading = 0;
+ this.imageLoaderLimit = this.config.imageLoaderLimit;
+
this._profiler = new $.Profiler();
this._minLevel = source.minLevel;
@@ -121,8 +126,15 @@ $.Drawer.prototype = {
},
_loadTile: function(tile, time) {
- tile.loading = this._imageLoader.loadImage(tile.url,
- $.Utils.createCallback(null, $.delegate(this, this._onTileLoad), tile, time));
+ tile.loading = this.loadImage(
+ tile.url,
+ $.Utils.createCallback(
+ null,
+ $.delegate(this, this._onTileLoad),
+ tile,
+ time
+ )
+ );
},
_onTileLoad: function(tile, time, image) {
@@ -572,7 +584,68 @@ $.Drawer.prototype = {
},
idle: function() {
+ },
+
+ loadImage: function(src, callback) {
+ var _this = this,
+ loading = false,
+ image,
+ jobid,
+ complete;
+
+ if ( !this.imageLoaderLimit || this.downloading < this.imageLoaderLimit ) {
+
+ this.downloading++;
+
+ image = new Image();
+
+ complete = function( imagesrc ){
+ _this.downloading--;
+ if (typeof ( callback ) == "function") {
+ try {
+ callback( image );
+ } catch ( e ) {
+ $.Debug.error(
+ e.name + " while executing " + src +" callback: " + e.message,
+ e
+ );
+ }
+ }
+ };
+
+ image.onload = function(){
+ finishLoadingImage( image, complete, true );
+ };
+
+ image.onabort = image.onerror = function(){
+ finishLoadingImage( image, complete, false );
+ };
+
+ jobid = window.setTimeout( function(){
+ finishLoadingImage( image, complete, false, jobid );
+ }, TIMEOUT );
+
+ loading = true;
+ image.src = src;
+ }
+
+ return loading;
}
};
+function finishLoadingImage( image, callback, successful, jobid ){
+
+ image.onload = null;
+ image.onabort = null;
+ image.onerror = null;
+
+ if ( jobid ) {
+ window.clearTimeout( jobid );
+ }
+ window.setTimeout( function() {
+ callback( image.src, successful ? image : null);
+ }, 1 );
+
+};
+
}( OpenSeadragon ));
diff --git a/src/imageloader.js b/src/imageloader.js
index 2cfae0cd..8b137891 100644
--- a/src/imageloader.js
+++ b/src/imageloader.js
@@ -1,75 +1 @@
-(function( $ ){
-
- //TODO: make TIMEOUT configurable
- var TIMEOUT = 5000;
-
-$.ImageLoader = function( imageLoaderLimit ) {
- this.downloading = 0;
- this.imageLoaderLimit = imageLoaderLimit;
-};
-
-$.ImageLoader.prototype = {
- loadImage: function(src, callback) {
- var _this = this,
- loading = false,
- image,
- jobid,
- complete;
-
- if ( !this.imageLoaderLimit || this.downloading < this.imageLoaderLimit ) {
-
- this.downloading++;
-
- image = new Image();
-
- complete = function( imagesrc ){
- _this.downloading--;
- if (typeof ( callback ) == "function") {
- try {
- callback( image );
- } catch ( e ) {
- $.Debug.error(
- e.name + " while executing " + src +" callback: " + e.message,
- e
- );
- }
- }
- };
-
- image.onload = function(){
- finish( image, complete, true );
- };
-
- image.onabort = image.onerror = function(){
- finish( image, complete, false );
- };
-
- jobid = window.setTimeout( function(){
- finish( image, complete, false, jobid );
- }, TIMEOUT );
-
- loading = true;
- image.src = src;
- }
-
- return loading;
- }
-};
-
-function finish( image, callback, successful, jobid ){
-
- image.onload = null;
- image.onabort = null;
- image.onerror = null;
-
- if ( jobid ) {
- window.clearTimeout( jobid );
- }
- window.setTimeout( function() {
- callback( image.src, successful ? image : null);
- }, 1 );
-
-};
-
-}( OpenSeadragon ));