From 10dd723637124a441c5c61e11420010321aea4f3 Mon Sep 17 00:00:00 2001 From: Antoine Vandecreme Date: Tue, 1 Nov 2016 21:43:00 +0100 Subject: [PATCH 01/77] Remove reliance on getTileAtPoint for wrapping --- src/tiledimage.js | 61 +++++++++++++++++++++++++++++++++++------------ src/tilesource.js | 13 +++++----- 2 files changed, 52 insertions(+), 22 deletions(-) diff --git a/src/tiledimage.js b/src/tiledimage.js index e8092083..7441c5fb 100644 --- a/src/tiledimage.js +++ b/src/tiledimage.js @@ -996,6 +996,47 @@ $.extend($.TiledImage.prototype, $.EventSource.prototype, /** @lends OpenSeadrag } else { this._setFullyLoaded(true); } + }, + + // private + _getCornerTiles: function(level, topLeftBound, bottomRightBound) { + var leftX; + var rightX; + if (this.wrapHorizontal) { + leftX = $.positiveModulo(topLeftBound.x, 1); + rightX = $.positiveModulo(bottomRightBound.x, 1); + } else { + leftX = Math.max(0, topLeftBound.x); + rightX = Math.min(1, bottomRightBound.x); + } + var topY; + var bottomY; + var aspectRatio = 1 / this.source.aspectRatio; + if (this.wrapVertical) { + topY = $.positiveModulo(topLeftBound.y, aspectRatio); + bottomY = $.positiveModulo(bottomRightBound.y, aspectRatio); + } else { + topY = Math.max(0, topLeftBound.y); + bottomY = Math.min(aspectRatio, bottomRightBound.y); + } + + var topLeftTile = this.source.getTileAtPoint(level, new $.Point(leftX, topY)); + var bottomRightTile = this.source.getTileAtPoint(level, new $.Point(rightX, bottomY)); + var numTiles = this.source.getNumTiles(level); + + if (this.wrapHorizontal) { + topLeftTile.x += numTiles.x * Math.floor(topLeftBound.x); + bottomRightTile.x += numTiles.x * Math.floor(bottomRightBound.x); + } + if (this.wrapVertical) { + topLeftTile.y += numTiles.y * Math.floor(topLeftBound.y / aspectRatio); + bottomRightTile.y += numTiles.y * Math.floor(bottomRightBound.y / aspectRatio); + } + + return { + topLeft: topLeftTile, + bottomRight: bottomRightTile, + }; } }); @@ -1039,23 +1080,13 @@ function updateLevel(tiledImage, haveDrawn, drawLevel, level, levelOpacity, }); } - //OK, a new drawing so do your calculations - var topLeftTile = tiledImage.source.getTileAtPoint(level, topLeftBound); - var bottomRightTile = tiledImage.source.getTileAtPoint(level, bottomRightBound); - var numberOfTiles = tiledImage.source.getNumTiles(level); - resetCoverage(tiledImage.coverage, level); - if (!tiledImage.wrapHorizontal) { - // Adjust for floating point error - topLeftTile.x = Math.max(topLeftTile.x, 0); - bottomRightTile.x = Math.min(bottomRightTile.x, numberOfTiles.x - 1); - } - if (!tiledImage.wrapVertical) { - // Adjust for floating point error - topLeftTile.y = Math.max(topLeftTile.y, 0); - bottomRightTile.y = Math.min(bottomRightTile.y, numberOfTiles.y - 1); - } + //OK, a new drawing so do your calculations + var cornerTiles = tiledImage._getCornerTiles(level, topLeftBound, bottomRightBound); + var topLeftTile = cornerTiles.topLeft; + var bottomRightTile = cornerTiles.bottomRight; + var numberOfTiles = tiledImage.source.getNumTiles(level); var viewportCenter = tiledImage.viewport.pixelFromPoint( tiledImage.viewport.getCenter()); diff --git a/src/tilesource.js b/src/tilesource.js index fa52f61e..19ea1d63 100644 --- a/src/tilesource.js +++ b/src/tilesource.js @@ -345,18 +345,17 @@ $.TileSource.prototype = { * @param {OpenSeadragon.Point} point */ getTileAtPoint: function(level, point) { + var validPoint = point.x >= 0 && point.x <= 1 && + point.y >= 0 && point.y <= 1 / this.aspectRatio; + $.console.assert(validPoint, "[TileSource.getTileAtPoint] called with invalid point " + point.toString()); + var widthScaled = this.dimensions.x * this.getLevelScale(level); - var pixelX = $.positiveModulo(point.x, 1) * widthScaled; - var pixelY = $.positiveModulo(point.y, 1 / this.aspectRatio) * widthScaled; + var pixelX = point.x * widthScaled; + var pixelY = point.y * widthScaled; var x = Math.floor(pixelX / this.getTileWidth()); var y = Math.floor(pixelY / this.getTileHeight()); - // Fix for wrapping - var numTiles = this.getNumTiles(level); - x += numTiles.x * Math.floor(point.x); - y += numTiles.y * Math.floor(point.y * this.aspectRatio); - return new $.Point(x, y); }, From 3eee34a0f2c0c8bbd3c4a14076b87a3a7a39610c Mon Sep 17 00:00:00 2001 From: thejohnhoffer Date: Fri, 4 Nov 2016 17:37:48 -0400 Subject: [PATCH 02/77] count tiledImage._tilesLoading --- src/tiledimage.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/tiledimage.js b/src/tiledimage.js index e8092083..00fc520e 100644 --- a/src/tiledimage.js +++ b/src/tiledimage.js @@ -146,6 +146,7 @@ $.TiledImage = function( options ) { _midDraw: false, // Is the tiledImage currently updating the viewport? _needsDraw: true, // Does the tiledImage need to update the viewport again? _hasOpaqueTile: false, // Do we have even one fully opaque tile? + _tilesLoading: 0, // The number of pending tile requests. //configurable settings springStiffness: $.DEFAULT_SETTINGS.springStiffness, animationTime: $.DEFAULT_SETTINGS.animationTime, @@ -898,6 +899,7 @@ $.extend($.TiledImage.prototype, $.EventSource.prototype, /** @lends OpenSeadrag // private _updateViewport: function() { this._needsDraw = false; + this._tilesLoading = 0; // Reset tile's internal drawn state while (this.lastDrawn.length > 0) { @@ -994,7 +996,7 @@ $.extend($.TiledImage.prototype, $.EventSource.prototype, /** @lends OpenSeadrag this._needsDraw = true; this._setFullyLoaded(false); } else { - this._setFullyLoaded(true); + this._setFullyLoaded(this._tilesLoading === 0); } } }); @@ -1178,7 +1180,7 @@ function updateTile( tiledImage, drawLevel, haveDrawn, x, y, level, levelOpacity } } else if ( tile.loading ) { // the tile is already in the download queue - // thanks josh1093 for finally translating this typo + tiledImage._tilesLoading++; } else { best = compareTiles( best, tile ); } From 6370a6bafaedfe1548c79254c9ddb77829e32209 Mon Sep 17 00:00:00 2001 From: Antoine Vandecreme Date: Wed, 2 Nov 2016 22:35:23 +0100 Subject: [PATCH 03/77] Fix tests --- src/tilesource.js | 2 +- test/coverage.html | 1 + test/modules/basic.js | 8 ++++---- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/tilesource.js b/src/tilesource.js index 19ea1d63..74d7c315 100644 --- a/src/tilesource.js +++ b/src/tilesource.js @@ -347,7 +347,7 @@ $.TileSource.prototype = { getTileAtPoint: function(level, point) { var validPoint = point.x >= 0 && point.x <= 1 && point.y >= 0 && point.y <= 1 / this.aspectRatio; - $.console.assert(validPoint, "[TileSource.getTileAtPoint] called with invalid point " + point.toString()); + $.console.assert(validPoint, "[TileSource.getTileAtPoint] must be called with a valid point."); var widthScaled = this.dimensions.x * this.getLevelScale(level); var pixelX = point.x * widthScaled; diff --git a/test/coverage.html b/test/coverage.html index b04d5fda..65711abc 100644 --- a/test/coverage.html +++ b/test/coverage.html @@ -32,6 +32,7 @@ + diff --git a/test/modules/basic.js b/test/modules/basic.js index c6164560..4d787ab4 100644 --- a/test/modules/basic.js +++ b/test/modules/basic.js @@ -331,7 +331,7 @@ height: 155 } ] } ); - viewer.addHandler('tile-drawn', function() { + viewer.addOnceHandler('tile-drawn', function() { ok(OpenSeadragon.isCanvasTainted(viewer.drawer.context.canvas), "Canvas should be tainted."); start(); @@ -355,7 +355,7 @@ height: 155 } ] } ); - viewer.addHandler('tile-drawn', function() { + viewer.addOnceHandler('tile-drawn', function() { ok(!OpenSeadragon.isCanvasTainted(viewer.drawer.context.canvas), "Canvas should not be tainted."); start(); @@ -385,7 +385,7 @@ }, crossOriginPolicy : false } ); - viewer.addHandler('tile-drawn', function() { + viewer.addOnceHandler('tile-drawn', function() { ok(OpenSeadragon.isCanvasTainted(viewer.drawer.context.canvas), "Canvas should be tainted."); start(); @@ -414,7 +414,7 @@ crossOriginPolicy : "Anonymous" } } ); - viewer.addHandler('tile-drawn', function() { + viewer.addOnceHandler('tile-drawn', function() { ok(!OpenSeadragon.isCanvasTainted(viewer.drawer.context.canvas), "Canvas should not be tainted."); start(); From b162f197ea396be72e3cfe5f237687524f6bba6a Mon Sep 17 00:00:00 2001 From: Antoine Vandecreme Date: Sat, 5 Nov 2016 17:34:36 +0100 Subject: [PATCH 04/77] Add TileSource.getTileAtPoint test --- test/modules/multi-image.js | 2 +- test/modules/tilesource.js | 59 ++++++++++++++++++++++++++++++------- 2 files changed, 50 insertions(+), 11 deletions(-) diff --git a/test/modules/multi-image.js b/test/modules/multi-image.js index 4cbd5211..1dc9cbca 100644 --- a/test/modules/multi-image.js +++ b/test/modules/multi-image.js @@ -217,7 +217,7 @@ var firstImage = viewer.world.getItemAt(0); firstImage.addHandler('fully-loaded-change', function() { var imageData = viewer.drawer.context.getImageData(0, 0, - 500 * OpenSeadragon.pixelDensityRatio, 500 * density); + 500 * density, 500 * density); // Pixel 250,250 will be in the hole of the A var expectedVal = getPixelValue(imageData, 250 * density, 250 * density); diff --git a/test/modules/tilesource.js b/test/modules/tilesource.js index 59d8b77f..71fb053d 100644 --- a/test/modules/tilesource.js +++ b/test/modules/tilesource.js @@ -1,32 +1,32 @@ /* global module, ok, equal, start, test, testLog, Util */ (function() { - + module('TileSource', { setup: function() { testLog.reset(); } }); - - + + test("should set sane tile size defaults", function() { var source = new OpenSeadragon.TileSource(); - + equal(source.getTileWidth(), 0, "getTileWidth() should return 0 if not provided a size"); equal(source.getTileHeight(), 0, "getTileHeight() should return 0 if not provided a size"); }); - + test("providing tileSize", function(){ var tileSize = 256, source = new OpenSeadragon.TileSource({ tileSize: tileSize }); - + equal(source.tileSize, undefined, "tileSize should not be set on the tileSource"); equal(source.getTileWidth(), tileSize, "getTileWidth() should equal tileSize"); equal(source.getTileHeight(), tileSize, "getTileHeight() should equal tileSize"); }); - - + + test("providing tileWidth and tileHeight", function(){ var tileWidth = 256, tileHeight = 512, @@ -34,7 +34,7 @@ tileWidth: tileWidth, tileHeight: tileHeight }); - + equal(source._tileWidth, tileWidth, "tileWidth option should set _tileWidth"); equal(source._tileHeight, tileHeight, "tileHeight option should set _tileHeight"); equal(source.tileWidth, undefined, "tileWidth should be renamed _tileWidth"); @@ -42,10 +42,49 @@ equal(source.getTileWidth(), tileWidth, "getTileWidth() should equal tileWidth"); equal(source.getTileHeight(), tileHeight, "getTileHeight() should equal tileHeight"); }); - + test('getTileSize() deprecation', function() { var source = new OpenSeadragon.TileSource(); Util.testDeprecation(source, 'getTileSize'); }); + test('getTileAtPoint', function() { + var tileSource = new OpenSeadragon.TileSource({ + width: 1500, + height: 1000, + tileWidth: 200, + tileHeight: 150, + tileOverlap: 1, + }); + + equal(tileSource.maxLevel, 11, "The max level should be 11."); + + function assertTileAtPoint(level, position, expected) { + var actual = tileSource.getTileAtPoint(level, position); + ok(actual.equals(expected), "The tile at level " + level + + ", position " + position.toString() + + " should be tile " + expected.toString() + + " got " + actual.toString()); + } + + assertTileAtPoint(11, new OpenSeadragon.Point(0, 0), new OpenSeadragon.Point(0, 0)); + assertTileAtPoint(11, new OpenSeadragon.Point(0.5, 0.5), new OpenSeadragon.Point(3, 5)); + assertTileAtPoint(11, new OpenSeadragon.Point(1, 10 / 15), new OpenSeadragon.Point(7, 6)); + + assertTileAtPoint(10, new OpenSeadragon.Point(0, 0), new OpenSeadragon.Point(0, 0)); + assertTileAtPoint(10, new OpenSeadragon.Point(0.5, 0.5), new OpenSeadragon.Point(1, 2)); + assertTileAtPoint(10, new OpenSeadragon.Point(1, 10 / 15), new OpenSeadragon.Point(3, 3)); + + assertTileAtPoint(9, new OpenSeadragon.Point(0, 0), new OpenSeadragon.Point(0, 0)); + assertTileAtPoint(9, new OpenSeadragon.Point(0.5, 0.5), new OpenSeadragon.Point(0, 1)); + assertTileAtPoint(9, new OpenSeadragon.Point(1, 10 / 15), new OpenSeadragon.Point(1, 1)); + + // For all other levels, there is only one tile. + for (var level = 8; level >= 0; level--) { + assertTileAtPoint(level, new OpenSeadragon.Point(0, 0), new OpenSeadragon.Point(0, 0)); + assertTileAtPoint(level, new OpenSeadragon.Point(0.5, 0.5), new OpenSeadragon.Point(0, 0)); + assertTileAtPoint(level, new OpenSeadragon.Point(1, 10 / 15), new OpenSeadragon.Point(0, 0)); + } + }); + }()); From 4a1ae356315b0ae2ad47572c587d04ea8dcef8c7 Mon Sep 17 00:00:00 2001 From: Antoine Vandecreme Date: Sun, 6 Nov 2016 15:31:36 +0100 Subject: [PATCH 05/77] Add TiledImage._getCornerTiles unit tests --- test/modules/tiledimage.js | 155 +++++++++++++++++++++++++++++++++++++ 1 file changed, 155 insertions(+) diff --git a/test/modules/tiledimage.js b/test/modules/tiledimage.js index 20171432..1b05b557 100644 --- a/test/modules/tiledimage.js +++ b/test/modules/tiledimage.js @@ -515,4 +515,159 @@ }]); }); + // PhantomJS is missing Function.prototype.bind + function bind(func, _this) { + return function() { + return func.apply(_this, arguments); + }; + } + + test('_getCornerTiles without wrapping', function() { + var tiledImageMock = { + wrapHorizontal: false, + wrapVertical: false, + source: new OpenSeadragon.TileSource({ + width: 1500, + height: 1000, + tileWidth: 200, + tileHeight: 150, + tileOverlap: 1, + }), + }; + var _getCornerTiles = bind( + OpenSeadragon.TiledImage.prototype._getCornerTiles, + tiledImageMock); + + function assertCornerTiles(topLeftBound, bottomRightBound, + expectedTopLeft, expectedBottomRight) { + var cornerTiles = _getCornerTiles(11, topLeftBound, bottomRightBound); + ok(cornerTiles.topLeft.equals(expectedTopLeft), + 'Top left tile should be ' + expectedTopLeft.toString() + + ' found ' + cornerTiles.topLeft.toString()); + ok(cornerTiles.bottomRight.equals(expectedBottomRight), + 'Bottom right tile should be ' + expectedBottomRight.toString() + + ' found ' + cornerTiles.bottomRight.toString()); + } + + assertCornerTiles( + new OpenSeadragon.Point(0, 0), + new OpenSeadragon.Point(1, 10 / 15), + new OpenSeadragon.Point(0, 0), + new OpenSeadragon.Point(7, 6) + ) + + // Floating point errors should be handled + assertCornerTiles( + new OpenSeadragon.Point(-1e-14, -1e-14), + new OpenSeadragon.Point(1 + 1e-14, 10 / 15 + 1e-14), + new OpenSeadragon.Point(0, 0), + new OpenSeadragon.Point(7, 6) + ) + + assertCornerTiles( + new OpenSeadragon.Point(0.3, 0.5), + new OpenSeadragon.Point(0.5, 0.6), + new OpenSeadragon.Point(2, 5), + new OpenSeadragon.Point(3, 6) + ) + }); + + test('_getCornerTiles with horizontal wrapping', function() { + var tiledImageMock = { + wrapHorizontal: true, + wrapVertical: false, + source: new OpenSeadragon.TileSource({ + width: 1500, + height: 1000, + tileWidth: 200, + tileHeight: 150, + tileOverlap: 1, + }), + }; + var _getCornerTiles = bind( + OpenSeadragon.TiledImage.prototype._getCornerTiles, + tiledImageMock); + + function assertCornerTiles(topLeftBound, bottomRightBound, + expectedTopLeft, expectedBottomRight) { + var cornerTiles = _getCornerTiles(11, topLeftBound, bottomRightBound); + ok(cornerTiles.topLeft.equals(expectedTopLeft), + 'Top left tile should be ' + expectedTopLeft.toString() + + ' found ' + cornerTiles.topLeft.toString()); + ok(cornerTiles.bottomRight.equals(expectedBottomRight), + 'Bottom right tile should be ' + expectedBottomRight.toString() + + ' found ' + cornerTiles.bottomRight.toString()); + } + + assertCornerTiles( + new OpenSeadragon.Point(0, 0), + new OpenSeadragon.Point(1, 10 / 15), + new OpenSeadragon.Point(0, 0), + new OpenSeadragon.Point(8, 6) + ) + + assertCornerTiles( + new OpenSeadragon.Point(-1, 0), + new OpenSeadragon.Point(0.5, 10 / 15 + 1e-14), + new OpenSeadragon.Point(-8, 0), + new OpenSeadragon.Point(3, 6) + ) + + assertCornerTiles( + new OpenSeadragon.Point(1.3, 0.5), + new OpenSeadragon.Point(1.5, 0.6), + new OpenSeadragon.Point(10, 5), + new OpenSeadragon.Point(11, 6) + ) + }); + + test('_getCornerTiles with vertical wrapping', function() { + var tiledImageMock = { + wrapHorizontal: false, + wrapVertical: true, + source: new OpenSeadragon.TileSource({ + width: 1500, + height: 1000, + tileWidth: 200, + tileHeight: 150, + tileOverlap: 1, + }), + }; + var _getCornerTiles = bind( + OpenSeadragon.TiledImage.prototype._getCornerTiles, + tiledImageMock); + + function assertCornerTiles(topLeftBound, bottomRightBound, + expectedTopLeft, expectedBottomRight) { + var cornerTiles = _getCornerTiles(11, topLeftBound, bottomRightBound); + ok(cornerTiles.topLeft.equals(expectedTopLeft), + 'Top left tile should be ' + expectedTopLeft.toString() + + ' found ' + cornerTiles.topLeft.toString()); + ok(cornerTiles.bottomRight.equals(expectedBottomRight), + 'Bottom right tile should be ' + expectedBottomRight.toString() + + ' found ' + cornerTiles.bottomRight.toString()); + } + + assertCornerTiles( + new OpenSeadragon.Point(0, 0), + new OpenSeadragon.Point(1, 10 / 15), + new OpenSeadragon.Point(0, 0), + new OpenSeadragon.Point(7, 7) + ) + + assertCornerTiles( + new OpenSeadragon.Point(0, -10 / 15 / 2), + new OpenSeadragon.Point(0.5, 0.5), + new OpenSeadragon.Point(0, -4), + new OpenSeadragon.Point(3, 5) + ) + + assertCornerTiles( + new OpenSeadragon.Point(0, 10 / 15 + 0.1), + new OpenSeadragon.Point(0.3, 10 / 15 + 0.3), + new OpenSeadragon.Point(0, 7), + new OpenSeadragon.Point(2, 9) + ) + }); + })(); From 870bb2a99a815c214c07d7c16cbaaef9ee1dc5d6 Mon Sep 17 00:00:00 2001 From: Alexey Tikhonov Date: Mon, 7 Nov 2016 11:42:37 +0300 Subject: [PATCH 06/77] See #832, further fix for dzitilesource guessing of tilesUrl, for iiipserver configurations like /iiipsrv?DeepZoom=/path/my.dzi --- src/dzitilesource.js | 2 +- test/modules/dzitilesource.js | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/dzitilesource.js b/src/dzitilesource.js index 5d00980f..017594ca 100644 --- a/src/dzitilesource.js +++ b/src/dzitilesource.js @@ -140,7 +140,7 @@ $.extend( $.DziTileSource.prototype, $.TileSource.prototype, /** @lends OpenSead if (url && !options.tilesUrl) { options.tilesUrl = url.replace( - /([^\/]+?)(\.(dzi|xml|js))?\/?(\?.*)?$/, '$1_files/'); + /([^\/]+?)(\.(dzi|xml|js))?(\?[^\/]*)?\/?$/, '$1_files/'); if (url.search(/\.(dzi|xml|js)\?/) != -1) { options.queryParams = url.match(/\?.*/); diff --git a/test/modules/dzitilesource.js b/test/modules/dzitilesource.js index fe4677a0..395efaea 100644 --- a/test/modules/dzitilesource.js +++ b/test/modules/dzitilesource.js @@ -32,7 +32,10 @@ 'relative link should stay the same'); testImplicitTilesUrl( '/p/foo.dzi?a=1&b=2', '/p/foo_files/', - 'querystring in dzi url should be ignored'); + 'querystring in dzi url should be ignored after slashes'); + testImplicitTilesUrl( + '/iiipsrv?DeepZoom=/path/my.dzi', '/iiipsrv?DeepZoom=/path/mine_files/', + 'querystring in dzi url should not be ignored before slashes'); }); }()); From 63e4daab5042708c7095c855a5d833bdec2f1528 Mon Sep 17 00:00:00 2001 From: Alexey Tikhonov Date: Tue, 8 Nov 2016 02:02:59 +0300 Subject: [PATCH 07/77] fixed type im test case --- test/modules/dzitilesource.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/modules/dzitilesource.js b/test/modules/dzitilesource.js index 395efaea..e7eb2114 100644 --- a/test/modules/dzitilesource.js +++ b/test/modules/dzitilesource.js @@ -34,7 +34,7 @@ '/p/foo.dzi?a=1&b=2', '/p/foo_files/', 'querystring in dzi url should be ignored after slashes'); testImplicitTilesUrl( - '/iiipsrv?DeepZoom=/path/my.dzi', '/iiipsrv?DeepZoom=/path/mine_files/', + '/iiipsrv?DeepZoom=/path/my.dzi', '/iiipsrv?DeepZoom=/path/my_files/', 'querystring in dzi url should not be ignored before slashes'); }); From c27d424281474d44ff88a822c71814d677cd2495 Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Tue, 8 Nov 2016 09:51:40 -0800 Subject: [PATCH 08/77] Changelog updates for #1073 and #1066 --- changelog.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/changelog.txt b/changelog.txt index 99ee6973..a989e23c 100644 --- a/changelog.txt +++ b/changelog.txt @@ -8,10 +8,10 @@ OPENSEADRAGON CHANGELOG * Fixed CORS bug in IE 10 (#967) * Added support for commonjs (#984) * Added an option to addTiledImage to change the crossOriginPolicy (#981) -* Fixed issue with tiles not appearing with wrapHorizontal/wrapVertical if you pan too far away from the origin (#987) +* Fixed issue with tiles not appearing with wrapHorizontal/wrapVertical if you pan too far away from the origin (#987, #1066) * The Viewer's tileSources option is now smarter about detecting JSON vs XML vs URL (#999) * The navigationControlAnchor option now works for custom toolbar as well (#1004) -* Added getFullyLoaded method and "fully-loaded-change" event to TiledImage to know when tiles are fully loaded (#837) +* Added getFullyLoaded method and "fully-loaded-change" event to TiledImage to know when tiles are fully loaded (#837, #1073) * Fixed: Initial tile load wasn't happening in parallel (#1014) * Added Zoomify tile source (#863) * Fixed problem with "sparse image" DZI files (#995) From e2c43d64dbeab1898dc6bde6231b1933bfcde815 Mon Sep 17 00:00:00 2001 From: Sean Nichols Date: Tue, 8 Nov 2016 16:20:12 -0500 Subject: [PATCH 09/77] Fix incorrect call to getTileWidth and getTileHeight in getTileAtPoint --- src/tilesource.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tilesource.js b/src/tilesource.js index 74d7c315..b095a2db 100644 --- a/src/tilesource.js +++ b/src/tilesource.js @@ -353,8 +353,8 @@ $.TileSource.prototype = { var pixelX = point.x * widthScaled; var pixelY = point.y * widthScaled; - var x = Math.floor(pixelX / this.getTileWidth()); - var y = Math.floor(pixelY / this.getTileHeight()); + var x = Math.floor(pixelX / this.getTileWidth(level)); + var y = Math.floor(pixelY / this.getTileHeight(level)); return new $.Point(x, y); }, From b4d010420611b5ac1470f1abdadfb7c7dac12c91 Mon Sep 17 00:00:00 2001 From: Ryan Lester Date: Mon, 5 Sep 2016 19:27:18 -0400 Subject: [PATCH 10/77] Comments for some private functions in TiledImage. --- src/tiledimage.js | 150 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 147 insertions(+), 3 deletions(-) diff --git a/src/tiledimage.js b/src/tiledimage.js index 4291bf85..bca7c823 100644 --- a/src/tiledimage.js +++ b/src/tiledimage.js @@ -896,7 +896,13 @@ $.extend($.TiledImage.prototype, $.EventSource.prototype, /** @lends OpenSeadrag }; }, - // private + /** + * @private + * @inner + * Pretty much every other line in this needs to be documented so it's clear + * how each piece of this routine contributes to the drawing process. That's + * why there are so many TODO's inside this function. + */ _updateViewport: function() { this._needsDraw = false; this._tilesLoading = 0; @@ -1042,6 +1048,21 @@ $.extend($.TiledImage.prototype, $.EventSource.prototype, /** @lends OpenSeadrag } }); +/** + * @private + * @inner + * Updates all tiles at a given resolution level. + * @param {OpenSeadragon.TiledImage} tiledImage - Which TiledImage is being drawn. + * @param {Boolean} haveDrawn + * @param {Boolean} drawLevel + * @param {Number} level + * @param {Number} levelOpacity + * @param {Number} levelVisibility + * @param {OpenSeadragon.Point} viewportTL - The index of the most top-left visible tile. + * @param {OpenSeadragon.Point} viewportBR - The index of the most bottom-right visible tile. + * @param {Number} currentTime + * @param {OpenSeadragon.Tile} best - The current "best" tile to draw. + */ function updateLevel(tiledImage, haveDrawn, drawLevel, level, levelOpacity, levelVisibility, drawArea, currentTime, best) { @@ -1125,7 +1146,24 @@ function updateLevel(tiledImage, haveDrawn, drawLevel, level, levelOpacity, return best; } -function updateTile( tiledImage, drawLevel, haveDrawn, x, y, level, levelOpacity, levelVisibility, viewportCenter, numberOfTiles, currentTime, best){ +/** + * @private + * @inner + * Update a single tile at a particular resolution level. + * @param {OpenSeadragon.TiledImage} tiledImage - Which TiledImage is being drawn. + * @param {Boolean} haveDrawn + * @param {Boolean} drawLevel + * @param {Number} x + * @param {Number} y + * @param {Number} level + * @param {Number} levelOpacity + * @param {Number} levelVisibility + * @param {OpenSeadragon.Point} viewportCenter + * @param {Number} numberOfTiles + * @param {Number} currentTime + * @param {OpenSeadragon.Tile} best - The current "best" tile to draw. + */ +function updateTile( tiledImage, haveDrawn, drawLevel, x, y, level, levelOpacity, levelVisibility, viewportCenter, numberOfTiles, currentTime, best){ var tile = getTile( x, y, @@ -1219,6 +1257,21 @@ function updateTile( tiledImage, drawLevel, haveDrawn, x, y, level, levelOpacity return best; } +/** + * @private + * @inner + * Obtains a tile at the given location. + * @param {Number} x + * @param {Number} y + * @param {Number} level + * @param {OpenSeadragon.TileSource} tileSource + * @param {Object} tilesMatrix - A '3d' dictionary [level][x][y] --> Tile. + * @param {Number} time + * @param {Number} numTiles + * @param {Number} worldWidth + * @param {Number} worldHeight + * @returns {OpenSeadragon.Tile} + */ function getTile( x, y, level, tileSource, tilesMatrix, time, numTiles, worldWidth, worldHeight ) { var xMod, yMod, @@ -1264,6 +1317,14 @@ function getTile( x, y, level, tileSource, tilesMatrix, time, numTiles, worldWid return tile; } +/** + * @private + * @inner + * Dispatch a job to the ImageLoader to load the Image for a Tile. + * @param {OpenSeadragon.TiledImage} tiledImage + * @param {OpenSeadragon.Tile} tile + * @param {Number} time + */ function loadTile( tiledImage, tile, time ) { tile.loading = true; tiledImage._imageLoader.addJob({ @@ -1278,6 +1339,16 @@ function loadTile( tiledImage, tile, time ) { }); } +/** + * @private + * @inner + * Callback fired when a Tile's Image finished downloading. + * @param {OpenSeadragon.TiledImage} tiledImage + * @param {OpenSeadragon.Tile} tile + * @param {Number} time + * @param {Image} image + * @param {String} errorMsg + */ function onTileLoad( tiledImage, tile, time, image, errorMsg ) { if ( !image ) { $.console.log( "Tile %s failed to load: %s - error: %s", tile, tile.url, errorMsg ); @@ -1320,6 +1391,14 @@ function onTileLoad( tiledImage, tile, time, image, errorMsg ) { } } +/** + * @private + * @inner + * @param {OpenSeadragon.TiledImage} tiledImage + * @param {OpenSeadragon.Tile} tile + * @param {Image} image + * @param {Number} cutoff + */ function setTileLoaded(tiledImage, tile, image, cutoff) { var increment = 0; @@ -1370,6 +1449,16 @@ function setTileLoaded(tiledImage, tile, image, cutoff) { getCompletionCallback()(); } +/** + * @private + * @inner + * @param {OpenSeadragon.Tile} tile + * @param {Boolean} overlap + * @param {OpenSeadragon.Viewport} viewport + * @param {OpenSeadragon.Point} viewportCenter + * @param {Number} levelVisibility + * @param {OpenSeadragon.TiledImage} tiledImage + */ function positionTile( tile, overlap, viewport, viewportCenter, levelVisibility, tiledImage ){ var boundsTL = tile.bounds.getTopLeft(); @@ -1400,7 +1489,23 @@ function positionTile( tile, overlap, viewport, viewportCenter, levelVisibility, tile.visibility = levelVisibility; } - +/** + * @private + * @inner + * Updates the opacity of a tile according to the time it has been on screen + * to perform a fade-in. + * Updates coverage once a tile is fully opaque. + * Returns whether the fade-in has completed. + * + * @param {OpenSeadragon.TiledImage} tiledImage + * @param {OpenSeadragon.Tile} tile + * @param {Number} x + * @param {Number} y + * @param {Number} level + * @param {Number} levelOpacity + * @param {Number} currentTime + * @returns {Boolean} + */ function blendTile( tiledImage, tile, x, y, level, levelOpacity, currentTime ){ var blendTimeMillis = 1000 * tiledImage.blendTime, deltaTime, @@ -1441,6 +1546,12 @@ function blendTile( tiledImage, tile, x, y, level, levelOpacity, currentTime ){ * Note that out-of-bounds tiles provide coverage in this sense, since * there's no content that they would need to cover. Tiles at non-existent * levels that are within the image bounds, however, do not. + * + * @param {Object} coverage - A '3d' dictionary [level][x][y] --> Boolean. + * @param {Number} level - The resolution level of the tile. + * @param {Number} x - The X position of the tile. + * @param {Number} y - The Y position of the tile. + * @returns {Boolean} */ function providesCoverage( coverage, level, x, y ) { var rows, @@ -1480,6 +1591,12 @@ function providesCoverage( coverage, level, x, y ) { * Returns true if the given tile is completely covered by higher-level * tiles of higher resolution representing the same content. If neither x * nor y is given, returns true if the entire visible level is covered. + * + * @param {Object} coverage - A '3d' dictionary [level][x][y] --> Boolean. + * @param {Number} level - The resolution level of the tile. + * @param {Number} x - The X position of the tile. + * @param {Number} y - The Y position of the tile. + * @returns {Boolean} */ function isCovered( coverage, level, x, y ) { if ( x === undefined || y === undefined ) { @@ -1498,6 +1615,12 @@ function isCovered( coverage, level, x, y ) { * @private * @inner * Sets whether the given tile provides coverage or not. + * + * @param {Object} coverage - A '3d' dictionary [level][x][y] --> Boolean. + * @param {Number} level - The resolution level of the tile. + * @param {Number} x - The X position of the tile. + * @param {Number} y - The Y position of the tile. + * @param {Boolean} covers - Whether the tile provides coverage. */ function setCoverage( coverage, level, x, y, covers ) { if ( !coverage[ level ] ) { @@ -1521,6 +1644,9 @@ function setCoverage( coverage, level, x, y, covers ) { * Resets coverage information for the given level. This should be called * after every draw routine. Note that at the beginning of the next draw * routine, coverage for every visible tile should be explicitly set. + * + * @param {Object} coverage - A '3d' dictionary [level][x][y] --> Boolean. + * @param {Number} level - The resolution level of tiles to completely reset. */ function resetCoverage( coverage, level ) { coverage[ level ] = {}; @@ -1531,6 +1657,10 @@ function resetCoverage( coverage, level ) { * @inner * Determines whether the 'last best' tile for the area is better than the * tile in question. + * + * @param {OpenSeadragon.Tile} previousBest + * @param {OpenSeadragon.Tile} tile + * @returns {OpenSeadragon.Tile} The new best tile. */ function compareTiles( previousBest, tile ) { if ( !previousBest ) { @@ -1548,6 +1678,13 @@ function compareTiles( previousBest, tile ) { return previousBest; } +/** + * @private + * @inner + * Draws a TiledImage. + * @param {OpenSeadragon.TiledImage} tiledImage + * @param {OpenSeadragon.Tile[]} lastDrawn - An unordered list of Tiles drawn last frame. + */ function drawTiles( tiledImage, lastDrawn ) { if (lastDrawn.length === 0) { return; @@ -1720,6 +1857,13 @@ function drawTiles( tiledImage, lastDrawn ) { drawDebugInfo( tiledImage, lastDrawn ); } +/** + * @private + * @inner + * Draws special debug information for a TiledImage if in debug mode. + * @param {OpenSeadragon.TiledImage} tiledImage + * @param {OpenSeadragon.Tile[]} lastDrawn - An unordered list of Tiles drawn last frame. + */ function drawDebugInfo( tiledImage, lastDrawn ) { if( tiledImage.debugMode ) { for ( var i = lastDrawn.length - 1; i >= 0; i-- ) { From 18454ff3de5590aa6a38e685ed5b08407a3dda94 Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Thu, 22 Dec 2016 10:01:52 -0800 Subject: [PATCH 11/77] Changelog for #1074 --- changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.txt b/changelog.txt index a989e23c..155f777c 100644 --- a/changelog.txt +++ b/changelog.txt @@ -20,6 +20,7 @@ OPENSEADRAGON CHANGELOG * ImageTileSource now works in IE8 (#1041) * LegacyTileSource now allows any image URLs regardless of type (#1056) * Fixed error in IE8 when zooming in (due to edge smoothing) (#1064) +* Improved DziTileSource guessing of tilesUrl (#1074) 2.2.1: From 286ba36bf3a040efc6bd54148722e93ed3002ed3 Mon Sep 17 00:00:00 2001 From: leesei Date: Fri, 6 Jan 2017 11:30:09 +0800 Subject: [PATCH 12/77] fix param for `update()` Changes to be committed: modified: src/overlay.js --- src/overlay.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/overlay.js b/src/overlay.js index 25cc50d2..7ad7a646 100644 --- a/src/overlay.js +++ b/src/overlay.js @@ -41,6 +41,7 @@ * compatibility. * @member OverlayPlacement * @memberof OpenSeadragon + * @see OpenSeadragon.Placement * @static * @readonly * @type {Object} @@ -400,7 +401,7 @@ * @param {OpenSeadragon.Point|OpenSeadragon.Rect|Object} location * If an object is specified, the options are the same than the constructor * except for the element which can not be changed. - * @param {OpenSeadragon.Placement} position + * @param {OpenSeadragon.Placement} placement */ update: function(location, placement) { var options = $.isPlainObject(location) ? location : { From 41b8956df6757caee93ed2f47d776667dac2983d Mon Sep 17 00:00:00 2001 From: Antoine Vandecreme Date: Sat, 7 Jan 2017 17:38:38 +0100 Subject: [PATCH 13/77] Fix version object not filled. Fix #1024 --- .vscode/settings.json | 9 --------- Gruntfile.js | 5 +++-- package.json | 4 ++-- test/modules/basic.js | 8 ++++++++ test/test.html | 2 +- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 752fa89f..686e7452 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,8 +1,5 @@ // Place your settings in this file to overwrite default and user settings. { - // Controls the font size. - "editor.fontSize": 14, - // The number of spaces a tab is equal to. "editor.tabSize": 4, @@ -15,12 +12,6 @@ // Columns at which to show vertical rulers "editor.rulers": [80], - // Controls after how many characters the editor will wrap to the next line. Setting this to 0 turns on viewport width wrapping - "editor.wrappingColumn": 0, - - // Controls the indentation of wrapped lines. Can be one of 'none', 'same' or 'indent'. - "editor.wrappingIndent": "none", - // The default character set encoding to use when reading and writing files. "files.encoding": "utf8", diff --git a/Gruntfile.js b/Gruntfile.js index d1e86ae2..a48002b1 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -123,10 +123,11 @@ module.exports = function(grunt) { join_vars: false }, sourceMap: true, - sourceMapName: 'build/openseadragon/openseadragon.min.js.map' + sourceMapName: 'build/openseadragon/openseadragon.min.js.map', + sourceMapIn: 'build/openseadragon/openseadragon.js.map' }, openseadragon: { - src: sources, + src: distribution, dest: minified } }, diff --git a/package.json b/package.json index 19bd4d21..a1fe2301 100644 --- a/package.json +++ b/package.json @@ -18,10 +18,10 @@ "grunt": "^0.4.5", "grunt-contrib-clean": "^0.7.0", "grunt-contrib-compress": "^0.13.0", - "grunt-contrib-concat": "^0.5.1", + "grunt-contrib-concat": "^1.0.1", "grunt-contrib-connect": "^0.11.2", "grunt-contrib-jshint": "^0.11.0", - "grunt-contrib-uglify": "^0.11.0", + "grunt-contrib-uglify": "^2.0.0", "grunt-contrib-watch": "^0.6.1", "grunt-git-describe": "^2.3.2", "grunt-qunit-istanbul": "^0.6.0", diff --git a/test/modules/basic.js b/test/modules/basic.js index 4d787ab4..7dc2a9ef 100644 --- a/test/modules/basic.js +++ b/test/modules/basic.js @@ -423,4 +423,12 @@ }); } ); + + test('version object', function() { + equal(typeof OpenSeadragon.version.versionStr, "string", "versionStr should be a string"); + ok(OpenSeadragon.version.major >= 0, "major should be a positive number"); + ok(OpenSeadragon.version.minor >= 0, "minor should be a positive number"); + ok(OpenSeadragon.version.revision >= 0, "revision should be a positive number"); + }); + })(); diff --git a/test/test.html b/test/test.html index 74495ff6..985dcb3e 100644 --- a/test/test.html +++ b/test/test.html @@ -14,7 +14,7 @@ - + From a23a709fb17c60615bbceb5fafea4bf198130998 Mon Sep 17 00:00:00 2001 From: Antoine Vandecreme Date: Sat, 7 Jan 2017 19:56:37 +0100 Subject: [PATCH 14/77] Disable tile edge smoothing when only one tile is drawn. Fix #956 --- src/tiledimage.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/tiledimage.js b/src/tiledimage.js index bca7c823..21497a76 100644 --- a/src/tiledimage.js +++ b/src/tiledimage.js @@ -1702,8 +1702,11 @@ function drawTiles( tiledImage, lastDrawn ) { var zoom = tiledImage.viewport.getZoom(true); var imageZoom = tiledImage.viewportToImageZoom(zoom); // TODO: support tile edge smoothing with tiled image rotation. - if (imageZoom > tiledImage.smoothTileEdgesMinZoom && !tiledImage.iOSDevice && - tiledImage.getRotation() === 0 && $.supportsCanvas) { + if (lastDrawn.length > 1 && + imageZoom > tiledImage.smoothTileEdgesMinZoom && + !tiledImage.iOSDevice && + tiledImage.getRotation() === 0 && + $.supportsCanvas) { // When zoomed in a lot (>100%) the tile edges are visible. // So we have to composite them at ~100% and scale them up together. // Note: Disabled on iOS devices per default as it causes a native crash From 43bd0e972f1269e03d9d3d99320f7ca15708f968 Mon Sep 17 00:00:00 2001 From: Antoine Vandecreme Date: Sun, 8 Jan 2017 11:13:32 +0100 Subject: [PATCH 15/77] Fix sketch canvas not resizing properly. Fix #973 --- src/drawer.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/drawer.js b/src/drawer.js index 02a036aa..2355a828 100644 --- a/src/drawer.js +++ b/src/drawer.js @@ -328,7 +328,11 @@ $.Drawer.prototype = { // the viewport get rotated later on, we will need to resize it. if (this.viewport.getRotation() === 0) { var self = this; - this.viewer.addOnceHandler('rotate', function resizeSketchCanvas() { + this.viewer.addHandler('rotate', function resizeSketchCanvas() { + if (self.viewport.getRotation() === 0) { + return; + } + self.viewer.removeHandler('rotate', resizeSketchCanvas); var sketchCanvasSize = self._calculateSketchCanvasSize(); self.sketchCanvas.width = sketchCanvasSize.x; self.sketchCanvas.height = sketchCanvasSize.y; @@ -422,8 +426,8 @@ $.Drawer.prototype = { this.context.globalCompositeOperation = compositeOperation; } if (bounds) { - // Internet Explorer and Microsoft Edge throw IndexSizeError - // when you call context.drawImage with negative x or y + // Internet Explorer and Microsoft Edge throw IndexSizeError + // when you call context.drawImage with negative x or y // or width or height greater than the canvas width or height respectively if (bounds.x < 0) { bounds.width += bounds.x; @@ -439,7 +443,7 @@ $.Drawer.prototype = { if (bounds.height > this.canvas.height) { bounds.height = this.canvas.height; } - + this.context.drawImage( this.sketchCanvas, bounds.x, From 4eb386463938e1c0bf97ae8f4665174b7a70259f Mon Sep 17 00:00:00 2001 From: Adinata Thayib Date: Wed, 11 Jan 2017 20:11:43 -0800 Subject: [PATCH 16/77] Fix navigator doesn't get constrained although viewer have constrainDuringPan options on --- src/navigator.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/navigator.js b/src/navigator.js index fe977d0c..f7d1abd9 100644 --- a/src/navigator.js +++ b/src/navigator.js @@ -405,6 +405,9 @@ function onCanvasDrag( event ) { event.delta ) ); + if( this.viewer.constrainDuringPan ){ + this.viewer.viewport.applyConstraints(); + } } } From 97a63db40c8ad4fbbc0c1e084b66db8b825db23b Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Mon, 16 Jan 2017 11:21:34 -0800 Subject: [PATCH 17/77] Changelog updates --- changelog.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/changelog.txt b/changelog.txt index 155f777c..551f3c97 100644 --- a/changelog.txt +++ b/changelog.txt @@ -21,6 +21,9 @@ OPENSEADRAGON CHANGELOG * LegacyTileSource now allows any image URLs regardless of type (#1056) * Fixed error in IE8 when zooming in (due to edge smoothing) (#1064) * Improved DziTileSource guessing of tilesUrl (#1074) +* Fixed issue with OpenSeadragon.version in the minified JavaScript (#1099) +* Fixed smoothTileEdgesMinZoom performance degradation on single-tile images (#1101) +* Fixed issue with tiles not appearing after rotation (#1102) 2.2.1: From 8beac359a77b28ed048c1b5a82d422bb21c2b194 Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Mon, 16 Jan 2017 11:48:05 -0800 Subject: [PATCH 18/77] Changelog for #1104 --- changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.txt b/changelog.txt index 551f3c97..11d6810e 100644 --- a/changelog.txt +++ b/changelog.txt @@ -24,6 +24,7 @@ OPENSEADRAGON CHANGELOG * Fixed issue with OpenSeadragon.version in the minified JavaScript (#1099) * Fixed smoothTileEdgesMinZoom performance degradation on single-tile images (#1101) * Fixed issue with tiles not appearing after rotation (#1102) +* Fixed: The navigator wasn't respecting the constrainDuringPan setting (#1104) 2.2.1: From de25b68b431789d65037615ad95d4b00c31c1234 Mon Sep 17 00:00:00 2001 From: Antoine Vandecreme Date: Sun, 8 Jan 2017 15:52:57 +0100 Subject: [PATCH 19/77] Add eslint and hound --- .eslintrc.hound.json | 285 ++++++++++++++++++++++++++++++++++++ .eslintrc.json | 285 ++++++++++++++++++++++++++++++++++++ .hound.yml | 6 + Gruntfile.js | 9 +- package.json | 1 + src/button.js | 18 +-- src/control.js | 8 +- src/controldock.js | 2 +- src/drawer.js | 6 +- src/iiiftilesource.js | 19 ++- src/legacytilesource.js | 4 +- src/mousetracker.js | 25 ++-- src/navigator.js | 6 +- src/openseadragon.js | 74 +++++++--- src/referencestrip.js | 4 +- src/spring.js | 2 +- src/strings.js | 2 +- src/tiledimage.js | 2 +- src/tilesource.js | 18 +-- src/tilesourcecollection.js | 6 +- src/tmstilesource.js | 4 +- src/viewer.js | 21 ++- src/viewport.js | 8 +- src/world.js | 3 +- 24 files changed, 721 insertions(+), 97 deletions(-) create mode 100644 .eslintrc.hound.json create mode 100644 .eslintrc.json create mode 100644 .hound.yml diff --git a/.eslintrc.hound.json b/.eslintrc.hound.json new file mode 100644 index 00000000..027542f4 --- /dev/null +++ b/.eslintrc.hound.json @@ -0,0 +1,285 @@ +{ + "env": { + "browser": true + }, + "extends": "eslint:recommended", + "rules": { + "indent": [ + "error", + 4 + ], + "linebreak-style": [ + "error", + "unix" + ], + "quotes": [ + "error", + "double" + ], + "semi": [ + "error", + "always" + ], + "no-unused-vars": [ + "error", + { + "args": "none" + } + ], + "block-scoped-var": [ + "error" + ], + "consistent-return": [ + "error" + ], + "curly": [ + "error", + "all" + ], + "eqeqeq": [ + "error" + ], + "no-eval": [ + "error" + ], + "no-implicit-globals": [ + "error" + ], + "no-implied-eval": [ + "error" + ], + "no-invalid-this": [ + "error" + ], + "no-multi-spaces": [ + "error", + { + "exceptions": { + "Property": true, + "VariableDeclarator": true, + "AssignmentExpression": true + } + } + ], + "no-new-wrappers": [ + "error" + ], + "no-new": [ + "error" + ], + "no-return-assign": [ + "error" + ], + "no-self-compare": [ + "error" + ], + "no-unmodified-loop-condition": [ + "error" + ], + "no-unused-expressions": [ + "error" + ], + "no-useless-call": [ + "error" + ], + "no-useless-concat": [ + "error" + ], + "no-useless-escape": [ + "error" + ], + "no-useless-return": [ + "error" + ], + "no-with": [ + "error" + ], + "radix": [ + "error" + ], + "yoda": [ + "error" + ], + "no-undef-init": [ + "error" + ], + "no-use-before-define": [ + "error", + { + "functions": false + } + ], + "array-bracket-spacing": [ + "error", + "never" + ], + "block-spacing": [ + "error" + ], + "brace-style": [ + "error" + ], + "camelcase": [ + "error" + ], + "comma-spacing": [ + "error" + ], + "comma-style": [ + "error" + ], + "computed-property-spacing": [ + "error" + ], + "consistent-this": [ + "error", + "self" + ], + "eol-last": [ + "error" + ], + "func-call-spacing": [ + "error" + ], + "func-name-matching": [ + "error" + ], + "key-spacing": [ + "error", + { + "mode": "minimum" + } + ], + "keyword-spacing": [ + "error" + ], + "max-len": [ + "error", + 80 + ], + "max-statements-per-line": [ + "error", + { + "max": 1 + } + ], + "new-cap": [ + "error" + ], + "new-parens": [ + "error" + ], + "no-array-constructor": [ + "error" + ], + "no-mixed-operators": [ + "error", + { + "groups": [ + [ + "&", + "|", + "^", + "~", + "<<", + ">>", + ">>>" + ], + [ + "==", + "!=", + "===", + "!==", + ">", + ">=", + "<", + "<=" + ], + [ + "&&", + "||" + ], + [ + "in", + "instanceof" + ] + ] + } + ], + "no-new-object": [ + "error" + ], + "no-tabs": [ + "error" + ], + "no-trailing-spaces": [ + "error" + ], + "no-unneeded-ternary": [ + "error" + ], + "no-whitespace-before-property": [ + "error" + ], + "object-curly-spacing": [ + "error", + "always" + ], + "one-var-declaration-per-line": [ + "error" + ], + "one-var": [ + "error", + "never" + ], + "operator-assignment": [ + "error" + ], + "operator-linebreak": [ + "error", + "after" + ], + "quote-props": [ + "error", + "as-needed" + ], + "semi-spacing": [ + "error" + ], + "space-before-blocks": [ + "error" + ], + "space-before-function-paren": [ + "error", + "never" + ], + "space-in-parens": [ + "error", + "never" + ], + "space-infix-ops": [ + "error" + ], + "space-unary-ops": [ + "error", + { + "words": false, + "nonwords": false + } + ], + "unicode-bom": [ + "error" + ], + "no-caller": [ + "error" + ], + "no-loop-func": [ + "error" + ] + }, + "globals": { + "OpenSeadragon": true, + "define": false, + "module": false + } +} diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 00000000..7e027656 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,285 @@ +{ + "env": { + "browser": true + }, + "extends": "eslint:recommended", + "rules": { + "indent": [ + "off", + 4 + ], + "linebreak-style": [ + "error", + "unix" + ], + "quotes": [ + "off", + "double" + ], + "semi": [ + "error", + "always" + ], + "no-unused-vars": [ + "error", + { + "args": "none" + } + ], + "block-scoped-var": [ + "error" + ], + "consistent-return": [ + "off" + ], + "curly": [ + "error", + "all" + ], + "eqeqeq": [ + "off" + ], + "no-eval": [ + "error" + ], + "no-implicit-globals": [ + "error" + ], + "no-implied-eval": [ + "error" + ], + "no-invalid-this": [ + "error" + ], + "no-multi-spaces": [ + "error", + { + "exceptions": { + "Property": true, + "VariableDeclarator": true, + "AssignmentExpression": true + } + } + ], + "no-new-wrappers": [ + "error" + ], + "no-new": [ + "error" + ], + "no-return-assign": [ + "error" + ], + "no-self-compare": [ + "error" + ], + "no-unmodified-loop-condition": [ + "error" + ], + "no-unused-expressions": [ + "error" + ], + "no-useless-call": [ + "error" + ], + "no-useless-concat": [ + "error" + ], + "no-useless-escape": [ + "off" + ], + "no-useless-return": [ + "error" + ], + "no-with": [ + "error" + ], + "radix": [ + "error" + ], + "yoda": [ + "off" + ], + "no-undef-init": [ + "error" + ], + "no-use-before-define": [ + "error", + { + "functions": false + } + ], + "array-bracket-spacing": [ + "off", + "never" + ], + "block-spacing": [ + "off" + ], + "brace-style": [ + "off" + ], + "camelcase": [ + "error" + ], + "comma-spacing": [ + "error" + ], + "comma-style": [ + "error" + ], + "computed-property-spacing": [ + "off" + ], + "consistent-this": [ + "off", + "self" + ], + "eol-last": [ + "error" + ], + "func-call-spacing": [ + "error" + ], + "func-name-matching": [ + "error" + ], + "key-spacing": [ + "error", + { + "mode": "minimum" + } + ], + "keyword-spacing": [ + "off" + ], + "max-len": [ + "off", + 80 + ], + "max-statements-per-line": [ + "error", + { + "max": 1 + } + ], + "new-cap": [ + "error" + ], + "new-parens": [ + "error" + ], + "no-array-constructor": [ + "error" + ], + "no-mixed-operators": [ + "error", + { + "groups": [ + [ + "&", + "|", + "^", + "~", + "<<", + ">>", + ">>>" + ], + [ + "==", + "!=", + "===", + "!==", + ">", + ">=", + "<", + "<=" + ], + [ + "&&", + "||" + ], + [ + "in", + "instanceof" + ] + ] + } + ], + "no-new-object": [ + "error" + ], + "no-tabs": [ + "error" + ], + "no-trailing-spaces": [ + "error" + ], + "no-unneeded-ternary": [ + "error" + ], + "no-whitespace-before-property": [ + "error" + ], + "object-curly-spacing": [ + "off", + "always" + ], + "one-var-declaration-per-line": [ + "error" + ], + "one-var": [ + "off", + "never" + ], + "operator-assignment": [ + "error" + ], + "operator-linebreak": [ + "error", + "after" + ], + "quote-props": [ + "off", + "as-needed" + ], + "semi-spacing": [ + "error" + ], + "space-before-blocks": [ + "off" + ], + "space-before-function-paren": [ + "off", + "never" + ], + "space-in-parens": [ + "off", + "never" + ], + "space-infix-ops": [ + "error" + ], + "space-unary-ops": [ + "error", + { + "words": false, + "nonwords": false + } + ], + "unicode-bom": [ + "error" + ], + "no-caller": [ + "error" + ], + "no-loop-func": [ + "error" + ] + }, + "globals": { + "OpenSeadragon": true, + "define": false, + "module": false + } +} diff --git a/.hound.yml b/.hound.yml new file mode 100644 index 00000000..ef1551ba --- /dev/null +++ b/.hound.yml @@ -0,0 +1,6 @@ +jshint: + config_file: .jshintrc + +eslint: + enabled: true + config_file: .eslintrc.hound.json diff --git a/Gruntfile.js b/Gruntfile.js index a48002b1..c339e8ae 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -11,6 +11,7 @@ module.exports = function(grunt) { grunt.loadNpmTasks("grunt-contrib-connect"); grunt.loadNpmTasks("grunt-contrib-watch"); grunt.loadNpmTasks("grunt-contrib-clean"); + grunt.loadNpmTasks("grunt-eslint"); grunt.loadNpmTasks("grunt-git-describe"); grunt.loadNpmTasks('grunt-text-replace'); @@ -194,6 +195,12 @@ module.exports = function(grunt) { beforeconcat: sources, afterconcat: [ distribution ] }, + eslint: { + options: { + configFile: '.eslintrc.json' + }, + target: sources + }, "git-describe": { build: {} } @@ -266,7 +273,7 @@ module.exports = function(grunt) { // Cleans out the build folder and builds the code and images into it, checking lint. grunt.registerTask("build", [ "clean:build", "jshint:beforeconcat", "git-describe", "concat", "jshint:afterconcat", - "uglify", "replace:cleanPaths", "copy:build" + "eslint", "uglify", "replace:cleanPaths", "copy:build" ]); // ---------- diff --git a/package.json b/package.json index a1fe2301..2ef3b31c 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "grunt-contrib-uglify": "^2.0.0", "grunt-contrib-watch": "^0.6.1", "grunt-git-describe": "^2.3.2", + "grunt-eslint": "^19.0.0", "grunt-qunit-istanbul": "^0.6.0", "grunt-text-replace": "^0.4.0", "qunitjs": "^1.20.0" diff --git a/src/button.js b/src/button.js index 42f68afc..09010322 100644 --- a/src/button.js +++ b/src/button.js @@ -120,7 +120,7 @@ $.Button = function( options ) { * @member {Element} element * @memberof OpenSeadragon.Button# */ - this.element = options.element || $.makeNeutralElement( "div" ); + this.element = options.element || $.makeNeutralElement("div"); //if the user has specified the element to bind the control to explicitly //then do not add the default control images @@ -158,7 +158,7 @@ $.Button = function( options ) { this.imgDown.style.visibility = "hidden"; - if ( $.Browser.vendor == $.BROWSERS.FIREFOX && $.Browser.version < 3 ){ + if ($.Browser.vendor == $.BROWSERS.FIREFOX && $.Browser.version < 3) { this.imgGroup.style.top = this.imgHover.style.top = this.imgDown.style.top = @@ -172,13 +172,13 @@ $.Button = function( options ) { } - this.addHandler( "press", this.onPress ); - this.addHandler( "release", this.onRelease ); - this.addHandler( "click", this.onClick ); - this.addHandler( "enter", this.onEnter ); - this.addHandler( "exit", this.onExit ); - this.addHandler( "focus", this.onFocus ); - this.addHandler( "blur", this.onBlur ); + this.addHandler("press", this.onPress); + this.addHandler("release", this.onRelease); + this.addHandler("click", this.onClick); + this.addHandler("enter", this.onEnter); + this.addHandler("exit", this.onExit); + this.addHandler("focus", this.onFocus); + this.addHandler("blur", this.onBlur); /** * The button's current state. diff --git a/src/control.js b/src/control.js index c1ba2186..5a63c517 100644 --- a/src/control.js +++ b/src/control.js @@ -115,10 +115,10 @@ $.Control = function ( element, options, container ) { if ( this.anchor == $.ControlAnchor.ABSOLUTE ) { this.wrapper = $.makeNeutralElement( "div" ); this.wrapper.style.position = "absolute"; - this.wrapper.style.top = typeof ( options.top ) == "number" ? ( options.top + 'px' ) : options.top; - this.wrapper.style.left = typeof ( options.left ) == "number" ? (options.left + 'px' ) : options.left; - this.wrapper.style.height = typeof ( options.height ) == "number" ? ( options.height + 'px' ) : options.height; - this.wrapper.style.width = typeof ( options.width ) == "number" ? ( options.width + 'px' ) : options.width; + this.wrapper.style.top = typeof (options.top) == "number" ? (options.top + 'px') : options.top; + this.wrapper.style.left = typeof (options.left) == "number" ? (options.left + 'px') : options.left; + this.wrapper.style.height = typeof (options.height) == "number" ? (options.height + 'px') : options.height; + this.wrapper.style.width = typeof (options.width) == "number" ? (options.width + 'px') : options.width; this.wrapper.style.margin = "0px"; this.wrapper.style.padding = "0px"; diff --git a/src/controldock.js b/src/controldock.js index 2ee2d0f1..81443bf9 100644 --- a/src/controldock.js +++ b/src/controldock.js @@ -45,7 +45,7 @@ i; $.extend( true, this, { - id: 'controldock-'+$.now()+'-'+Math.floor(Math.random()*1000000), + id: 'controldock-' + $.now() + '-' + Math.floor(Math.random() * 1000000), container: $.makeNeutralElement( 'div' ), controls: [] }, options ); diff --git a/src/drawer.js b/src/drawer.js index 2355a828..8321b6fe 100644 --- a/src/drawer.js +++ b/src/drawer.js @@ -285,8 +285,8 @@ $.Drawer.prototype = { return new $.Rect( topLeft.x * $.pixelDensityRatio, topLeft.y * $.pixelDensityRatio, - size.x * $.pixelDensityRatio, - size.y * $.pixelDensityRatio + size.x * $.pixelDensityRatio, + size.y * $.pixelDensityRatio ); }, @@ -474,7 +474,7 @@ $.Drawer.prototype = { position.x - widthExt * scale, position.y - heightExt * scale, (this.canvas.width + 2 * widthExt) * scale, - (this.canvas.height + 2 * heightExt) * scale, + (this.canvas.height + 2 * heightExt) * scale, -widthExt, -heightExt, this.canvas.width + 2 * widthExt, diff --git a/src/iiiftilesource.js b/src/iiiftilesource.js index 4584f1cd..0af45c8b 100644 --- a/src/iiiftilesource.js +++ b/src/iiiftilesource.js @@ -45,6 +45,7 @@ */ $.IIIFTileSource = function( options ){ + /* eslint-disable camelcase */ $.extend( true, this, options ); @@ -86,7 +87,7 @@ $.IIIFTileSource = function( options ){ } else if ( canBeTiled(options.profile) ) { // use the largest of tileOptions that is smaller than the short dimension var shortDim = Math.min( this.height, this.width ), - tileOptions = [256,512,1024], + tileOptions = [256, 512, 1024], smallerTiles = []; for ( var c = 0; c < tileOptions.length; c++ ) { @@ -102,11 +103,11 @@ $.IIIFTileSource = function( options ){ options.tileSize = shortDim; } } else if (this.sizes && this.sizes.length > 0) { - // This info.json can't be tiled, but we can still construct a legacy pyramid from the sizes array. - // In this mode, IIIFTileSource will call functions from the abstract baseTileSource or the - // LegacyTileSource instead of performing IIIF tiling. + // This info.json can't be tiled, but we can still construct a legacy pyramid from the sizes array. + // In this mode, IIIFTileSource will call functions from the abstract baseTileSource or the + // LegacyTileSource instead of performing IIIF tiling. this.emulateLegacyImagePyramid = true; - + options.levels = constructLevels( this ); // use the largest available size to define tiles $.extend( true, options, { @@ -141,7 +142,7 @@ $.extend( $.IIIFTileSource.prototype, $.TileSource.prototype, /** @lends OpenSea * @param {Object|Array} data * @param {String} optional - url */ - + supports: function( data, url ) { // Version 2.0 and forwards if (data.protocol && data.protocol == 'http://iiif.io/api/image') { @@ -393,14 +394,16 @@ $.extend( $.IIIFTileSource.prototype, $.TileSource.prototype, /** @lends OpenSea */ function constructLevels(options) { var levels = []; - for(var i=0; i= 0 ) { $.Browser.vendor = $.BROWSERS.FIREFOX; $.Browser.version = parseFloat( diff --git a/src/referencestrip.js b/src/referencestrip.js index 9d88a6a3..5559f85a 100644 --- a/src/referencestrip.js +++ b/src/referencestrip.js @@ -592,6 +592,4 @@ function onKeyPress( event ) { } } - - -} ( OpenSeadragon ) ); +}(OpenSeadragon)); diff --git a/src/spring.js b/src/spring.js index 71c94d06..c4342892 100644 --- a/src/spring.js +++ b/src/spring.js @@ -226,7 +226,7 @@ $.Spring.prototype = { transform( this.springStiffness, ( this.current.time - this.start.time ) / - ( this.target.time - this.start.time ) + ( this.target.time - this.start.time ) ); if (this._exponential) { diff --git a/src/strings.js b/src/strings.js index 03f4ed42..670ed01d 100644 --- a/src/strings.js +++ b/src/strings.js @@ -75,7 +75,7 @@ $.extend( $, /** @lends OpenSeadragon */{ container = I18N, i; - for ( i = 0; i < props.length-1; i++ ) { + for (i = 0; i < props.length - 1; i++) { // in case not a subproperty container = container[ props[ i ] ] || {}; } diff --git a/src/tiledimage.js b/src/tiledimage.js index 21497a76..2fa48782 100644 --- a/src/tiledimage.js +++ b/src/tiledimage.js @@ -577,7 +577,7 @@ $.extend($.TiledImage.prototype, $.EventSource.prototype, /** @lends OpenSeadrag viewportToImageZoom: function( viewportZoom ) { var ratio = this._scaleSpring.current.value * this.viewport._containerInnerSize.x / this.source.dimensions.x; - return ratio * viewportZoom ; + return ratio * viewportZoom; }, /** diff --git a/src/tilesource.js b/src/tilesource.js index b095a2db..271fca7d 100644 --- a/src/tilesource.js +++ b/src/tilesource.js @@ -187,8 +187,8 @@ $.TileSource = function( width, height, tileSize, tileOverlap, minLevel, maxLeve //explicit configuration via positional args in constructor //or the more idiomatic 'options' object this.ready = true; - this.aspectRatio = ( options.width && options.height ) ? - ( options.width / options.height ) : 1; + this.aspectRatio = (options.width && options.height) ? + (options.width / options.height) : 1; this.dimensions = new $.Point( options.width, options.height ); if ( this.tileSize ){ @@ -454,7 +454,7 @@ $.TileSource.prototype = { //TODO: Its not very flexible to require tile sources to end jsonp // request for info with a url that ends with '.js' but for // now it's the only way I see to distinguish uniformly. - callbackName = url.split( '/' ).pop().replace('.js',''); + callbackName = url.split('/').pop().replace('.js', ''); $.jsonp({ url: url, async: false, @@ -574,12 +574,12 @@ $.TileSource.prototype = { */ tileExists: function( level, x, y ) { var numTiles = this.getNumTiles( level ); - return level >= this.minLevel && - level <= this.maxLevel && - x >= 0 && - y >= 0 && - x < numTiles.x && - y < numTiles.y; + return level >= this.minLevel && + level <= this.maxLevel && + x >= 0 && + y >= 0 && + x < numTiles.x && + y < numTiles.y; } }; diff --git a/src/tilesourcecollection.js b/src/tilesourcecollection.js index a180aa52..e019741f 100644 --- a/src/tilesourcecollection.js +++ b/src/tilesourcecollection.js @@ -32,11 +32,11 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -(function( $ ){ +(function($) { // deprecated -$.TileSourceCollection = function( tileSize, tileSources, rows, layout ) { +$.TileSourceCollection = function(tileSize, tileSources, rows, layout) { $.console.error('TileSourceCollection is deprecated; use World instead'); }; -}( OpenSeadragon )); +}(OpenSeadragon)); diff --git a/src/tmstilesource.js b/src/tmstilesource.js index 4c3d0ab0..e7640b15 100644 --- a/src/tmstilesource.js +++ b/src/tmstilesource.js @@ -83,7 +83,7 @@ $.TmsTileSource = function( width, height, tileSize, tileOverlap, tilesUrl ) { } else { max = bufferedHeight / 256; } - options.maxLevel = Math.ceil(Math.log(max)/Math.log(2)) - 1; + options.maxLevel = Math.ceil(Math.log(max) / Math.log(2)) - 1; options.tileSize = 256; options.width = bufferedWidth; options.height = bufferedHeight; @@ -129,7 +129,7 @@ $.extend( $.TmsTileSource.prototype, $.TileSource.prototype, /** @lends OpenSead // Convert from Deep Zoom definition to TMS zoom definition var yTiles = this.getNumTiles( level ).y - 1; - return this.tilesUrl + level + "/" + x + "/" + (yTiles - y) + ".png"; + return this.tilesUrl + level + "/" + x + "/" + (yTiles - y) + ".png"; } }); diff --git a/src/viewer.js b/src/viewer.js index 06b224e0..cea725a3 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -221,7 +221,7 @@ $.Viewer = function( options ) { $.ControlDock.call( this, options ); //Deal with tile sources - if ( this.xmlPath ){ + if (this.xmlPath) { //Deprecated option. Now it is preferred to use the tileSources option this.tileSources = [ this.xmlPath ]; } @@ -268,7 +268,7 @@ $.Viewer = function( options ) { this.innerTracker = new $.MouseTracker({ element: this.canvas, - startDisabled: this.mouseNavEnabled ? false : true, + startDisabled: !this.mouseNavEnabled, clickTimeThreshold: this.clickTimeThreshold, clickDistThreshold: this.clickDistThreshold, dblClickTimeThreshold: this.dblClickTimeThreshold, @@ -291,7 +291,7 @@ $.Viewer = function( options ) { this.outerTracker = new $.MouseTracker({ element: this.container, - startDisabled: this.mouseNavEnabled ? false : true, + startDisabled: !this.mouseNavEnabled, clickTimeThreshold: this.clickTimeThreshold, clickDistThreshold: this.clickDistThreshold, dblClickTimeThreshold: this.dblClickTimeThreshold, @@ -674,7 +674,7 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, this.navigator.close(); } - if( ! this.preserveOverlays) { + if (!this.preserveOverlays) { this.clearOverlays(); this.overlaysContainer.innerHTML = ""; } @@ -869,7 +869,6 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, bodyStyle = body.style, docStyle = document.documentElement.style, _this = this, - hash, nodes, i; @@ -1031,9 +1030,9 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, $.setPageScroll( _this.pageScroll ); var pageScroll = $.getPageScroll(); restoreScrollCounter++; - if ( restoreScrollCounter < 10 && - pageScroll.x !== _this.pageScroll.x || - pageScroll.y !== _this.pageScroll.y ) { + if (restoreScrollCounter < 10 && + (pageScroll.x !== _this.pageScroll.x || + pageScroll.y !== _this.pageScroll.y)) { $.requestAnimationFrame( restoreScroll ); } }; @@ -1526,7 +1525,7 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, onNextHandler = $.delegate( this, onNext ), onPreviousHandler = $.delegate( this, onPrevious ), navImages = this.navImages, - useGroup = true ; + useGroup = true; if( this.showSequenceControl ){ @@ -1622,7 +1621,7 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, onBlurHandler = $.delegate( this, onBlur ), navImages = this.navImages, buttons = [], - useGroup = true ; + useGroup = true; if ( this.showNavigationControl ) { @@ -1993,7 +1992,7 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, element = $.getElement( element ); i = getOverlayIndex( this.currentOverlays, element ); - if (i>=0) { + if (i >= 0) { return this.currentOverlays[i]; } else { return null; diff --git a/src/viewport.js b/src/viewport.js index 4cac87c3..7d5418bd 100644 --- a/src/viewport.js +++ b/src/viewport.js @@ -60,11 +60,11 @@ $.Viewport = function( options ) { //backward compatibility for positional args while prefering more //idiomatic javascript options object as the only argument var args = arguments; - if( args.length && args[ 0 ] instanceof $.Point ){ + if (args.length && args[0] instanceof $.Point) { options = { - containerSize: args[ 0 ], - contentSize: args[ 1 ], - config: args[ 2 ] + containerSize: args[0], + contentSize: args[1], + config: args[2] }; } diff --git a/src/world.js b/src/world.js index e68590b3..213aeaaa 100644 --- a/src/world.js +++ b/src/world.js @@ -212,7 +212,8 @@ $.extend( $.World.prototype, $.EventSource.prototype, /** @lends OpenSeadragon.W // We need to make sure any pending images are canceled so the world items don't get messed up this.viewer._cancelPendingImages(); var item; - for (var i = 0; i < this._items.length; i++) { + var i; + for (i = 0; i < this._items.length; i++) { item = this._items[i]; item.removeHandler('bounds-change', this._delegatedFigureSizes); item.removeHandler('clip-change', this._delegatedFigureSizes); From 30a6c4494bf10f43a64604aab6e8c230783c9391 Mon Sep 17 00:00:00 2001 From: Antoine Vandecreme Date: Mon, 16 Jan 2017 21:43:09 +0100 Subject: [PATCH 20/77] Remove jshint --- .hound.yml | 3 --- .jshintrc | 16 ---------------- Gruntfile.js | 12 ++---------- package.json | 1 - 4 files changed, 2 insertions(+), 30 deletions(-) delete mode 100644 .jshintrc diff --git a/.hound.yml b/.hound.yml index ef1551ba..8355a088 100644 --- a/.hound.yml +++ b/.hound.yml @@ -1,6 +1,3 @@ -jshint: - config_file: .jshintrc - eslint: enabled: true config_file: .eslintrc.hound.json diff --git a/.jshintrc b/.jshintrc deleted file mode 100644 index 013e31e8..00000000 --- a/.jshintrc +++ /dev/null @@ -1,16 +0,0 @@ -{ - "browser": true, - "curly": true, - "eqeqeq": false, - "loopfunc": false, - "noarg": true, - "trailing": true, - "undef": true, - "unused": false, - - "globals": { - "OpenSeadragon": true, - "define": false, - "module": false - } -} diff --git a/Gruntfile.js b/Gruntfile.js index c339e8ae..c2e821ad 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -5,7 +5,6 @@ module.exports = function(grunt) { // ---------- grunt.loadNpmTasks("grunt-contrib-compress"); grunt.loadNpmTasks("grunt-contrib-concat"); - grunt.loadNpmTasks("grunt-contrib-jshint"); grunt.loadNpmTasks("grunt-contrib-uglify"); grunt.loadNpmTasks("grunt-qunit-istanbul"); grunt.loadNpmTasks("grunt-contrib-connect"); @@ -188,13 +187,6 @@ module.exports = function(grunt) { files: [ "Gruntfile.js", "src/*.js", "images/*" ], tasks: "watchTask" }, - jshint: { - options: { - jshintrc: '.jshintrc' - }, - beforeconcat: sources, - afterconcat: [ distribution ] - }, eslint: { options: { configFile: '.eslintrc.json' @@ -272,8 +264,8 @@ module.exports = function(grunt) { // Build task. // Cleans out the build folder and builds the code and images into it, checking lint. grunt.registerTask("build", [ - "clean:build", "jshint:beforeconcat", "git-describe", "concat", "jshint:afterconcat", - "eslint", "uglify", "replace:cleanPaths", "copy:build" + "clean:build", "git-describe", "eslint", "concat", "uglify", + "replace:cleanPaths", "copy:build" ]); // ---------- diff --git a/package.json b/package.json index 2ef3b31c..2fd0cad7 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,6 @@ "grunt-contrib-compress": "^0.13.0", "grunt-contrib-concat": "^1.0.1", "grunt-contrib-connect": "^0.11.2", - "grunt-contrib-jshint": "^0.11.0", "grunt-contrib-uglify": "^2.0.0", "grunt-contrib-watch": "^0.6.1", "grunt-git-describe": "^2.3.2", From fc69c6568d8a27df04fd72b2e65fb15a464875fc Mon Sep 17 00:00:00 2001 From: Antoine Vandecreme Date: Sat, 7 Jan 2017 19:24:29 +0100 Subject: [PATCH 21/77] Animate rotation --- src/drawer.js | 6 ++-- src/spring.js | 4 +++ src/tiledimage.js | 78 +++++++++++++++++++++++++++-------------------- 3 files changed, 52 insertions(+), 36 deletions(-) diff --git a/src/drawer.js b/src/drawer.js index 8321b6fe..0289019a 100644 --- a/src/drawer.js +++ b/src/drawer.js @@ -500,9 +500,9 @@ $.Drawer.prototype = { if ( this.viewport.degrees !== 0 ) { this._offsetForRotation({degrees: this.viewport.degrees}); } - if (tiledImage.getRotation() !== 0) { + if (tiledImage.getRotation(true) !== 0) { this._offsetForRotation({ - degrees: tiledImage.getRotation(), + degrees: tiledImage.getRotation(true), point: tiledImage.viewport.pixelFromPointNoRotate( tiledImage._getRotationPoint(true), true) }); @@ -569,7 +569,7 @@ $.Drawer.prototype = { if ( this.viewport.degrees !== 0 ) { this._restoreRotationChanges(); } - if (tiledImage.getRotation() !== 0) { + if (tiledImage.getRotation(true) !== 0) { this._restoreRotationChanges(); } context.restore(); diff --git a/src/spring.js b/src/spring.js index c4342892..30a8956d 100644 --- a/src/spring.js +++ b/src/spring.js @@ -206,6 +206,7 @@ $.Spring.prototype = { /** * @function + * @returns true if the value got updated, false otherwise */ update: function() { this.current.time = $.now(); @@ -229,11 +230,14 @@ $.Spring.prototype = { ( this.target.time - this.start.time ) ); + var oldValue = this.current.value; if (this._exponential) { this.current.value = Math.exp(currentValue); } else { this.current.value = currentValue; } + + return oldValue != this.current.value; }, /** diff --git a/src/tiledimage.js b/src/tiledimage.js index 2fa48782..c6cdd7ec 100644 --- a/src/tiledimage.js +++ b/src/tiledimage.js @@ -132,7 +132,7 @@ $.TiledImage = function( options ) { var fitBoundsPlacement = options.fitBoundsPlacement || OpenSeadragon.Placement.CENTER; delete options.fitBoundsPlacement; - this._degrees = $.positiveModulo(options.degrees || 0, 360); + var degrees = $.positiveModulo(options.degrees || 0, 360); delete options.degrees; $.extend( true, this, { @@ -186,6 +186,12 @@ $.TiledImage = function( options ) { animationTime: this.animationTime }); + this._degreesSpring = new $.Spring({ + initial: degrees, + springStiffness: this.springStiffness, + animationTime: this.animationTime + }); + this._updateForScale(); if (fitBounds) { @@ -269,16 +275,12 @@ $.extend($.TiledImage.prototype, $.EventSource.prototype, /** @lends OpenSeadrag * @returns {Boolean} Whether the TiledImage animated. */ update: function() { - var oldX = this._xSpring.current.value; - var oldY = this._ySpring.current.value; - var oldScale = this._scaleSpring.current.value; + var xUpdated = this._xSpring.update(); + var yUpdated = this._ySpring.update(); + var scaleUpdated = this._scaleSpring.update(); + var degreesUpdated = this._degreesSpring.update(); - this._xSpring.update(); - this._ySpring.update(); - this._scaleSpring.update(); - - if (this._xSpring.current.value !== oldX || this._ySpring.current.value !== oldY || - this._scaleSpring.current.value !== oldScale) { + if (xUpdated || yUpdated || scaleUpdated || degreesUpdated) { this._updateForScale(); this._needsDraw = true; return true; @@ -313,7 +315,7 @@ $.extend($.TiledImage.prototype, $.EventSource.prototype, /** @lends OpenSeadrag */ getBounds: function(current) { return this.getBoundsNoRotate(current) - .rotate(this._degrees, this._getRotationPoint(current)); + .rotate(this.getRotation(current), this._getRotationPoint(current)); }, /** @@ -362,7 +364,7 @@ $.extend($.TiledImage.prototype, $.EventSource.prototype, /** @lends OpenSeadrag clip.width, clip.height); } - return bounds.rotate(this._degrees, this._getRotationPoint(current)); + return bounds.rotate(this.getRotation(current), this._getRotationPoint(current)); }, /** @@ -397,7 +399,7 @@ $.extend($.TiledImage.prototype, $.EventSource.prototype, /** @lends OpenSeadrag point = new $.Point(viewerX, viewerY); } - point = point.rotate(-this._degrees, this._getRotationPoint(current)); + point = point.rotate(-this.getRotation(current), this._getRotationPoint(current)); return current ? this._viewportToImageDelta( point.x - this._xSpring.current.value, @@ -439,7 +441,7 @@ $.extend($.TiledImage.prototype, $.EventSource.prototype, /** @lends OpenSeadrag point.y += this._ySpring.target.value; } - return point.rotate(this._degrees, this._getRotationPoint(current)); + return point.rotate(this.getRotation(current), this._getRotationPoint(current)); }, /** @@ -453,7 +455,7 @@ $.extend($.TiledImage.prototype, $.EventSource.prototype, /** @lends OpenSeadrag * @param {Boolean} [current=false] - Pass true to use the current location; false for target location. * @return {OpenSeadragon.Rect} A rect representing the coordinates in the viewport. */ - imageToViewportRectangle: function( imageX, imageY, pixelWidth, pixelHeight, current ) { + imageToViewportRectangle: function(imageX, imageY, pixelWidth, pixelHeight, current) { var rect = imageX; if (rect instanceof $.Rect) { //they passed a rect instead of individual components @@ -470,7 +472,7 @@ $.extend($.TiledImage.prototype, $.EventSource.prototype, /** @lends OpenSeadrag coordA.y, coordB.x, coordB.y, - rect.degrees + this._degrees + rect.degrees + this.getRotation(current) ); }, @@ -502,7 +504,7 @@ $.extend($.TiledImage.prototype, $.EventSource.prototype, /** @lends OpenSeadrag coordA.y, coordB.x, coordB.y, - rect.degrees - this._degrees + rect.degrees - this.getRotation(current) ); }, @@ -555,7 +557,7 @@ $.extend($.TiledImage.prototype, $.EventSource.prototype, /** @lends OpenSeadrag // coordinates (x in [0, 1] and y in [0, aspectRatio]) _viewportToTiledImageRectangle: function(rect) { var scale = this._scaleSpring.current.value; - rect = rect.rotate(-this.getRotation(), this._getRotationPoint(true)); + rect = rect.rotate(-this.getRotation(true), this._getRotationPoint(true)); return new $.Rect( (rect.x - this._xSpring.current.value) / scale, (rect.y - this._ySpring.current.value) / scale, @@ -769,24 +771,34 @@ $.extend($.TiledImage.prototype, $.EventSource.prototype, /** @lends OpenSeadrag }, /** - * Get the current rotation of this tiled image in degrees. - * @returns {Number} the current rotation of this tiled image in degrees. + * Get the rotation of this tiled image in degrees. + * @param {Boolean} [current=false] True for current rotation, false for target. + * @returns {Number} the rotation of this tiled image in degrees. */ - getRotation: function() { - return this._degrees; + getRotation: function(current) { + return current ? + this._degreesSpring.current.value : + this._degreesSpring.target.value; }, /** * Set the current rotation of this tiled image in degrees. * @param {Number} degrees the rotation in degrees. + * @param {Boolean} [immediately=false] Whether to animate to the new angle + * or rotate immediately. * @fires OpenSeadragon.TiledImage.event:bounds-change */ - setRotation: function(degrees) { + setRotation: function(degrees, immediately) { degrees = $.positiveModulo(degrees, 360); - if (this._degrees === degrees) { + if (this._degreesSpring.target.value === degrees && + this._degreesSpring.isAtTargetValue()) { return; } - this._degrees = degrees; + if (immediately) { + this._degreesSpring.resetTo(degrees); + } else { + this._degreesSpring.springTo(degrees); + } this._needsDraw = true; this._raiseBoundsChange(); }, @@ -1705,7 +1717,7 @@ function drawTiles( tiledImage, lastDrawn ) { if (lastDrawn.length > 1 && imageZoom > tiledImage.smoothTileEdgesMinZoom && !tiledImage.iOSDevice && - tiledImage.getRotation() === 0 && + tiledImage.getRotation(true) === 0 && $.supportsCanvas) { // When zoomed in a lot (>100%) the tile edges are visible. // So we have to composite them at ~100% and scale them up together. @@ -1739,9 +1751,9 @@ function drawTiles( tiledImage, lastDrawn ) { useSketch: useSketch }); } - if (tiledImage._degrees !== 0) { + if (tiledImage.getRotation(true) !== 0) { tiledImage._drawer._offsetForRotation({ - degrees: tiledImage._degrees, + degrees: tiledImage.getRotation(true), point: tiledImage.viewport.pixelFromPointNoRotate( tiledImage._getRotationPoint(true), true), useSketch: useSketch @@ -1754,7 +1766,7 @@ function drawTiles( tiledImage, lastDrawn ) { tiledImage._drawer.saveContext(useSketch); var box = tiledImage.imageToViewportRectangle(tiledImage._clip, true); - box = box.rotate(-tiledImage._degrees, tiledImage._getRotationPoint()); + box = box.rotate(-tiledImage.getRotation(true), tiledImage._getRotationPoint(true)); var clipRect = tiledImage._drawer.viewportToDrawerRectangle(box); if (sketchScale) { clipRect = clipRect.times(sketchScale); @@ -1816,7 +1828,7 @@ function drawTiles( tiledImage, lastDrawn ) { } if (!sketchScale) { - if (tiledImage._degrees !== 0) { + if (tiledImage.getRotation(true) !== 0) { tiledImage._drawer._restoreRotationChanges(useSketch); } if (tiledImage.viewport.degrees !== 0) { @@ -1832,9 +1844,9 @@ function drawTiles( tiledImage, lastDrawn ) { useSketch: false }); } - if (tiledImage._degrees !== 0) { + if (tiledImage.getRotation(true) !== 0) { tiledImage._drawer._offsetForRotation({ - degrees: tiledImage._degrees, + degrees: tiledImage.getRotation(true), point: tiledImage.viewport.pixelFromPointNoRotate( tiledImage._getRotationPoint(true), true), useSketch: false @@ -1849,7 +1861,7 @@ function drawTiles( tiledImage, lastDrawn ) { bounds: bounds }); if (sketchScale) { - if (tiledImage._degrees !== 0) { + if (tiledImage.getRotation(true) !== 0) { tiledImage._drawer._restoreRotationChanges(false); } if (tiledImage.viewport.degrees !== 0) { From b62d4a7bc15d0b01b076fac902209368ed487457 Mon Sep 17 00:00:00 2001 From: Antoine Vandecreme Date: Sun, 8 Jan 2017 18:36:37 +0100 Subject: [PATCH 22/77] Fix navigator with rotation and clip --- src/navigator.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/navigator.js b/src/navigator.js index 61d50734..45379fa1 100644 --- a/src/navigator.js +++ b/src/navigator.js @@ -369,9 +369,11 @@ $.extend( $.Navigator.prototype, $.EventSource.prototype, $.Viewer.prototype, /* // private _matchBounds: function(myItem, theirItem, immediately) { - var bounds = theirItem.getBounds(); + var bounds = theirItem.getBoundsNoRotate(); myItem.setPosition(bounds.getTopLeft(), immediately); myItem.setWidth(bounds.width, immediately); + myItem.setRotation(theirItem.getRotation(), immediately); + myItem.setClip(theirItem.getClip()); } }); From 63a8a2ffa6232a1c8a8e5495dc63b5d90198916b Mon Sep 17 00:00:00 2001 From: Antoine Vandecreme Date: Sat, 21 Jan 2017 19:58:21 +0100 Subject: [PATCH 23/77] Allow tiled image rotation outside the 0 to 360 range --- src/drawer.js | 4 ++-- src/tiledimage.js | 15 +++++++-------- test/modules/tiledimage.js | 13 ++++++++++--- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/src/drawer.js b/src/drawer.js index 0289019a..4485da98 100644 --- a/src/drawer.js +++ b/src/drawer.js @@ -500,7 +500,7 @@ $.Drawer.prototype = { if ( this.viewport.degrees !== 0 ) { this._offsetForRotation({degrees: this.viewport.degrees}); } - if (tiledImage.getRotation(true) !== 0) { + if (tiledImage.getRotation(true) % 360 !== 0) { this._offsetForRotation({ degrees: tiledImage.getRotation(true), point: tiledImage.viewport.pixelFromPointNoRotate( @@ -569,7 +569,7 @@ $.Drawer.prototype = { if ( this.viewport.degrees !== 0 ) { this._restoreRotationChanges(); } - if (tiledImage.getRotation(true) !== 0) { + if (tiledImage.getRotation(true) % 360 !== 0) { this._restoreRotationChanges(); } context.restore(); diff --git a/src/tiledimage.js b/src/tiledimage.js index c6cdd7ec..70859ec0 100644 --- a/src/tiledimage.js +++ b/src/tiledimage.js @@ -132,7 +132,7 @@ $.TiledImage = function( options ) { var fitBoundsPlacement = options.fitBoundsPlacement || OpenSeadragon.Placement.CENTER; delete options.fitBoundsPlacement; - var degrees = $.positiveModulo(options.degrees || 0, 360); + var degrees = options.degrees || 0; delete options.degrees; $.extend( true, this, { @@ -789,7 +789,6 @@ $.extend($.TiledImage.prototype, $.EventSource.prototype, /** @lends OpenSeadrag * @fires OpenSeadragon.TiledImage.event:bounds-change */ setRotation: function(degrees, immediately) { - degrees = $.positiveModulo(degrees, 360); if (this._degreesSpring.target.value === degrees && this._degreesSpring.isAtTargetValue()) { return; @@ -1713,11 +1712,11 @@ function drawTiles( tiledImage, lastDrawn ) { var zoom = tiledImage.viewport.getZoom(true); var imageZoom = tiledImage.viewportToImageZoom(zoom); - // TODO: support tile edge smoothing with tiled image rotation. + if (lastDrawn.length > 1 && imageZoom > tiledImage.smoothTileEdgesMinZoom && !tiledImage.iOSDevice && - tiledImage.getRotation(true) === 0 && + tiledImage.getRotation(true) % 360 === 0 && // TODO: support tile edge smoothing with tiled image rotation. $.supportsCanvas) { // When zoomed in a lot (>100%) the tile edges are visible. // So we have to composite them at ~100% and scale them up together. @@ -1751,7 +1750,7 @@ function drawTiles( tiledImage, lastDrawn ) { useSketch: useSketch }); } - if (tiledImage.getRotation(true) !== 0) { + if (tiledImage.getRotation(true) % 360 !== 0) { tiledImage._drawer._offsetForRotation({ degrees: tiledImage.getRotation(true), point: tiledImage.viewport.pixelFromPointNoRotate( @@ -1828,7 +1827,7 @@ function drawTiles( tiledImage, lastDrawn ) { } if (!sketchScale) { - if (tiledImage.getRotation(true) !== 0) { + if (tiledImage.getRotation(true) % 360 !== 0) { tiledImage._drawer._restoreRotationChanges(useSketch); } if (tiledImage.viewport.degrees !== 0) { @@ -1844,7 +1843,7 @@ function drawTiles( tiledImage, lastDrawn ) { useSketch: false }); } - if (tiledImage.getRotation(true) !== 0) { + if (tiledImage.getRotation(true) % 360 !== 0) { tiledImage._drawer._offsetForRotation({ degrees: tiledImage.getRotation(true), point: tiledImage.viewport.pixelFromPointNoRotate( @@ -1861,7 +1860,7 @@ function drawTiles( tiledImage, lastDrawn ) { bounds: bounds }); if (sketchScale) { - if (tiledImage.getRotation(true) !== 0) { + if (tiledImage.getRotation(true) % 360 !== 0) { tiledImage._drawer._restoreRotationChanges(false); } if (tiledImage.viewport.degrees !== 0) { diff --git a/test/modules/tiledimage.js b/test/modules/tiledimage.js index 1b05b557..b2206341 100644 --- a/test/modules/tiledimage.js +++ b/test/modules/tiledimage.js @@ -319,10 +319,16 @@ function testDefaultRotation() { var image = viewer.world.getItemAt(0); - strictEqual(image.getRotation(), 0, 'image has default rotation'); + strictEqual(image.getRotation(true), 0, 'image has default current rotation'); + strictEqual(image.getRotation(false), 0, 'image has default target rotation'); image.setRotation(400); - strictEqual(image.getRotation(), 40, 'rotation is set correctly'); + strictEqual(image.getRotation(true), 0, 'current rotation is not changed'); + strictEqual(image.getRotation(false), 400, 'target rotation is set correctly'); + + image.setRotation(200, true); + strictEqual(image.getRotation(true), 200, 'current rotation is set correctly'); + strictEqual(image.getRotation(false), 200, 'target rotation is set correctly'); viewer.addOnceHandler('open', testTileSourceRotation); viewer.open({ @@ -333,7 +339,8 @@ function testTileSourceRotation() { var image = viewer.world.getItemAt(0); - strictEqual(image.getRotation(), 300, 'image has correct rotation'); + strictEqual(image.getRotation(true), -60, 'image has correct current rotation'); + strictEqual(image.getRotation(false), -60, 'image has correct target rotation'); start(); } From cce1e9ac37efd150152ca6191e6e367bb01d6dc6 Mon Sep 17 00:00:00 2001 From: leesei Date: Wed, 1 Feb 2017 12:06:14 +0800 Subject: [PATCH 24/77] fix: overlay size calculation fix #1116 --- src/overlay.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/overlay.js b/src/overlay.js index 7ad7a646..9d9edd88 100644 --- a/src/overlay.js +++ b/src/overlay.js @@ -248,6 +248,8 @@ element.prevNextSibling = element.nextSibling; container.appendChild(element); + // have to set position before calculating size, fix #1116 + this.style.position = "absolute"; // this.size is used by overlays which don't get scaled in at // least one direction when this.checkResize is set to false. this.size = $.getElementSize(element); @@ -286,7 +288,6 @@ style[transformProp] = ""; } } - style.position = "absolute"; if (style.display !== 'none') { style.display = 'block'; From 9d96c58eaf43dbb854b8df4b4ae54a412b4af392 Mon Sep 17 00:00:00 2001 From: leesei Date: Thu, 2 Feb 2017 14:24:16 +0800 Subject: [PATCH 25/77] update doc for `$.Button` relates to #1080 On branch issue-1080 Changes to be committed: modified: src/button.js --- src/button.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/button.js b/src/button.js index 09010322..0ddb919a 100644 --- a/src/button.js +++ b/src/button.js @@ -61,7 +61,7 @@ $.ButtonState = { * @memberof OpenSeadragon * @extends OpenSeadragon.EventSource * @param {Object} options - * @param {Element} [options.element=null] Element to use as the button. If not specified, an HTML <button> element is created. + * @param {Element} [options.element=null] Element to use as the button. If not specified, an HTML <div> element is created. * @param {String} [options.tooltip=null] Provides context help for the button when the * user hovers over it. * @param {String} [options.srcRest=null] URL of image to use in 'rest' state. From 8f2bb593c8d3337540a8ec00609387cb56926119 Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Thu, 2 Feb 2017 14:24:42 -0800 Subject: [PATCH 26/77] Changelog for #1119 --- changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.txt b/changelog.txt index 11d6810e..981038eb 100644 --- a/changelog.txt +++ b/changelog.txt @@ -25,6 +25,7 @@ OPENSEADRAGON CHANGELOG * Fixed smoothTileEdgesMinZoom performance degradation on single-tile images (#1101) * Fixed issue with tiles not appearing after rotation (#1102) * Fixed: The navigator wasn't respecting the constrainDuringPan setting (#1104) +* Fixed an issue causing overlays to be mis-positioned in some circumstances (#1119) 2.2.1: From e65de72e3a80dda227cc3a8eae945c657838dfb7 Mon Sep 17 00:00:00 2001 From: Antoine Vandecreme Date: Sat, 4 Feb 2017 15:37:50 +0100 Subject: [PATCH 27/77] Fix simple image being drawn twice. Fix #1113 --- src/tilesource.js | 9 +++++++++ test/modules/tilesource.js | 11 +++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/tilesource.js b/src/tilesource.js index 271fca7d..f826ab48 100644 --- a/src/tilesource.js +++ b/src/tilesource.js @@ -356,6 +356,15 @@ $.TileSource.prototype = { var x = Math.floor(pixelX / this.getTileWidth(level)); var y = Math.floor(pixelY / this.getTileHeight(level)); + // When point.x == 1 or point.y == 1 / this.aspectRatio we want to + // return the last tile of the row/column + if (point.x >= 1) { + x = this.getNumTiles(level).x - 1; + } + if (point.y >= 1 / this.aspectRatio) { + y = this.getNumTiles(level).y - 1; + } + return new $.Point(x, y); }, diff --git a/test/modules/tilesource.js b/test/modules/tilesource.js index 71fb053d..21a9f30c 100644 --- a/test/modules/tilesource.js +++ b/test/modules/tilesource.js @@ -85,6 +85,17 @@ assertTileAtPoint(level, new OpenSeadragon.Point(0.5, 0.5), new OpenSeadragon.Point(0, 0)); assertTileAtPoint(level, new OpenSeadragon.Point(1, 10 / 15), new OpenSeadragon.Point(0, 0)); } + + // Test for issue #1113 + tileSource = new OpenSeadragon.TileSource({ + width: 1006, + height: 1009, + tileWidth: 1006, + tileHeight: 1009, + tileOverlap: 0, + maxLevel: 0, + }); + assertTileAtPoint(0, new OpenSeadragon.Point(1, 1009 / 1006), new OpenSeadragon.Point(0, 0)); }); }()); From ac12a3eed2c304e9a92fdd4dd12eea9f42edce70 Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Wed, 8 Feb 2017 10:07:29 -0800 Subject: [PATCH 28/77] Changelog for #1123 --- changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.txt b/changelog.txt index 981038eb..d01f4f03 100644 --- a/changelog.txt +++ b/changelog.txt @@ -26,6 +26,7 @@ OPENSEADRAGON CHANGELOG * Fixed issue with tiles not appearing after rotation (#1102) * Fixed: The navigator wasn't respecting the constrainDuringPan setting (#1104) * Fixed an issue causing overlays to be mis-positioned in some circumstances (#1119) +* Fixed: ImageTileSource would sometimes produce a double image (#1123) 2.2.1: From 219e4a14c68824efa28cb3b4600db4a8ad2cd2bd Mon Sep 17 00:00:00 2001 From: Peter Date: Thu, 9 Feb 2017 17:29:13 -0500 Subject: [PATCH 29/77] Update strings.js --- src/strings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings.js b/src/strings.js index 670ed01d..cd3c7907 100644 --- a/src/strings.js +++ b/src/strings.js @@ -82,7 +82,7 @@ $.extend( $, /** @lends OpenSeadragon */{ string = container[ props[ i ] ]; if ( typeof( string ) != "string" ) { - $.console.debug( "Untranslated source string:", prop ); + $.console.log( "Untranslated source string:", prop ); string = ""; // FIXME: this breaks gettext()-style convention, which would return source } From c81e10ba5783d20546e0c8d9da1f7c1391434912 Mon Sep 17 00:00:00 2001 From: Peter Date: Fri, 10 Feb 2017 15:20:05 -0500 Subject: [PATCH 30/77] updated test for console.log instead of console.debug --- test/modules/strings.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/modules/strings.js b/test/modules/strings.js index 0cc0d8d4..83f97d82 100644 --- a/test/modules/strings.js +++ b/test/modules/strings.js @@ -22,11 +22,11 @@ test("getInvalidString", function() { equal(OpenSeadragon.getString("Greeting"), "", "Handled unset string key"); - ok(testLog.debug.contains('["Untranslated source string:","Greeting"]'), + ok(testLog.log.contains('["Untranslated source string:","Greeting"]'), 'Invalid string keys are logged'); equal(OpenSeadragon.getString("Errors"), "", "Handled requesting parent key"); - ok(testLog.debug.contains('["Untranslated source string:","Errors"]'), + ok(testLog.log.contains('["Untranslated source string:","Errors"]'), 'Invalid string parent keys are logged'); }); From 06f9804497ca2bae3cba2ebe3c28f358609fdd40 Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Mon, 13 Feb 2017 09:58:33 -0800 Subject: [PATCH 31/77] Changelog for #1129 --- changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.txt b/changelog.txt index d01f4f03..69b73d6b 100644 --- a/changelog.txt +++ b/changelog.txt @@ -27,6 +27,7 @@ OPENSEADRAGON CHANGELOG * Fixed: The navigator wasn't respecting the constrainDuringPan setting (#1104) * Fixed an issue causing overlays to be mis-positioned in some circumstances (#1119) * Fixed: ImageTileSource would sometimes produce a double image (#1123) +* Fixed: console.debug caused exceptions on IE10 (#1129) 2.2.1: From 251f79b2311cf2c235e7122d59b8ab406efe2c3a Mon Sep 17 00:00:00 2001 From: Illya Moskvin Date: Mon, 20 Feb 2017 00:45:47 -0500 Subject: [PATCH 32/77] Compress images. Close #342, #50 - Used FileOptimizer 9.60.1708 - 64,065 bytes saved (47%) --- images/fullpage_grouphover.png | Bin 4907 -> 1085 bytes images/fullpage_hover.png | Bin 5214 -> 2184 bytes images/fullpage_pressed.png | Bin 5213 -> 2225 bytes images/fullpage_rest.png | Bin 5155 -> 1309 bytes images/home_grouphover.png | Bin 4808 -> 1062 bytes images/home_hover.png | Bin 5107 -> 2091 bytes images/home_pressed.png | Bin 5138 -> 2138 bytes images/home_rest.png | Bin 5061 -> 1258 bytes images/next_grouphover.png | Bin 3004 -> 1918 bytes images/next_hover.png | Bin 3433 -> 2358 bytes images/next_pressed.png | Bin 3503 -> 2411 bytes images/next_rest.png | Bin 3061 -> 2027 bytes images/previous_grouphover.png | Bin 2987 -> 1933 bytes images/previous_hover.png | Bin 3461 -> 2361 bytes images/previous_pressed.png | Bin 3499 -> 2413 bytes images/previous_rest.png | Bin 3064 -> 2029 bytes images/rotateleft_grouphover.png | Bin 1902 -> 1731 bytes images/rotateleft_hover.png | Bin 2289 -> 2094 bytes images/rotateleft_pressed.png | Bin 2242 -> 2036 bytes images/rotateleft_rest.png | Bin 1943 -> 1779 bytes images/rotateright_grouphover.png | Bin 1970 -> 1800 bytes images/rotateright_hover.png | Bin 2338 -> 2158 bytes images/rotateright_pressed.png | Bin 2228 -> 2039 bytes images/rotateright_rest.png | Bin 1961 -> 1812 bytes images/zoomin_grouphover.png | Bin 4794 -> 1060 bytes images/zoomin_hover.png | Bin 5126 -> 2116 bytes images/zoomin_pressed.png | Bin 5172 -> 2159 bytes images/zoomin_rest.png | Bin 5041 -> 1262 bytes images/zoomout_grouphover.png | Bin 4596 -> 977 bytes images/zoomout_hover.png | Bin 4931 -> 1926 bytes images/zoomout_pressed.png | Bin 5007 -> 1997 bytes images/zoomout_rest.png | Bin 4811 -> 1153 bytes 32 files changed, 0 insertions(+), 0 deletions(-) diff --git a/images/fullpage_grouphover.png b/images/fullpage_grouphover.png index 3ca4e1e3c366d44e9dbbde415f6addaef941b129..da9002b11ff438c59f78031f514d7fedfd623bd3 100644 GIT binary patch delta 1075 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 literal 5213 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 R`k?>-002ovPDHLkV1ijn#q9t9 diff --git a/images/home_grouphover.png b/images/home_grouphover.png index 204e1cc94b5057e04a42f0d4483ba0c96c05e7cc..cb412ba43bc4ea6d49a2d7b05f8d8aa7e00e2c9b 100644 GIT binary patch delta 1052 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 JPDHLkV1kxX^|Al} literal 5107 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 Eg5m!hoB#j- literal 5138 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 LNkvXXu0mjfLbX^W literal 5061 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 diff --git a/images/next_hover.png b/images/next_hover.png index ba24ca988f1536d596c595fd0beef8b985a17c35..fdce58203312024ed766a167a161a06a1645a1ca 100644 GIT binary patch delta 2348 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 JPDHLkV1lJUkg5Ox diff --git a/images/next_pressed.png b/images/next_pressed.png index 95f169d65150b1e5162585bd0695e4617363afbe..5297c52661475ec06ad3ca43c3494abd49cb1220 100644 GIT binary patch delta 2401 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 T|B*N300000NkvXXu0mjf7x|bs delta 3502 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 FV1jL+%4Tx0C)j~RL^S@K@|QrZmG~B2wH0n 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%0Dm|KH*Ze->L35uaN#+FFBD@p zcB=z>dZ8>W<}-?fB)CIv-@+;z^>m6m3JPH#d4x5Q(b|{XALfmicQRgnZlt&Zg8RPf;E>s{B7@kfAFREzWJY(g#|M-G_*X}s7aVr zWg0ey065?L=Jzf;r#t%`?EKrgOIvq@Mbi`Le21iD$`WS;0@GSC7y_(~01P9tiIkPL zOZg=hq<2i(&LO|&>T@r7OyT)255Mr)PhacK&41~rWj1PAefucFid9;)JSY5#&w6ow z?HQd9rrp0kyR>;9Ey`|fTJx5H7!N~c83RZWF&qzTti|$+HZU+&CNef~J9Tc~gy}!q z>pi!xW8=LyJ>=+hfBl`iwyO(~OnvS3YBH#7-AVw&gVtSjbuO5?m)yHQUM|IanM+u1 z6n}>TGg`qiPK^F@9gGFY7#jtQQm{%|72~#8OzGC)iNus&4u z7K_FD%7Zt}3jgbtEdqCac;@*VuX$?g(VOq;9$ca_wHWI-VAcq$w6IchC?y)Pa`~;~ zkW%O%JobJVE`OfMP%~QcL{=2jOVMQiZGWC^FOLtqk&LQVt2LRX%9P7x0w7*;?{m*g zRA(;2@K~x^7Ou%!E<&Hdaz>mX9v1`YQD2 z+S_x37j?zX+Pxn|A!GoczFFqDOmv^2Wd>RBm!eF)RQ;TSYnJ;JZuEav6)f6vVKwOFpx^gz$$6TTe6f+7LsRVowIf$e?TuR zF156@h*GJubN1vZoA z+7BCs*aFrXn9$fzNu7v8CPNB!F@I2Q)wMxTi4qFpNhJHwmQU%0C1HfA-%#nlWMU5I zDhykxSWHB_$E^x@$(^U|1)Kck)J*ChJ4QJGc;w(uw@(Rc0W>yBYXm_Ett9R~l#`Ea z&4U+wVAeIDkjKkTjFgjwqvH<1J!?4tTD3A2W2jQC5(NQE8O53MorOx3ZGWCB#{O}5 zmH}~eXBckVx*x}aMI<7^2!+NtGrfj{AeQh#4jJ+kH^P;qLeC=vnk>Mqwe-JafINX3L{a5^mX0Aob+ZbNc% z0h#mfcFjW`+=W*>M}IF~fW?scAUGT=BK8EIS*-=60mL#b%zSP!ocQLb|LfB9{BIKu zW{VO9080^mglZmOTXwqj0A|81hbM2#v7T!$@8eyUfp<88B_jwV03y0W5nD6S8sO4` z3BpaJmi{{D@0pwSws$2_n)ToT2pgYintvyYa9UfDphaY}1Al{e9XuoZsy7aWmtCTC zI#7{NjKBqfaR3ccjS|KHT3N8r+9VNyFmQk~KB+KkitppAp#iO;zJ7hlO)8X6>H00hBufGDD#ngPfHP!=Kt2-faVD){E^ z%F!QeuKu+%sei7osBqLf)}C@iH6o~0$8h|Q2*U`{wl#2PZ!7WAyl+g9FzK!~kxmKX zU;vLXuo!_H0$YX?tg&E3sKiM9a>||i>dx}m@AkU?fC;bVj+&|lSgeUOw`tYZH=c(Q zsT7i33c2AheFnPY4_e>N@3Z0DME|;>RQ8;_NOBFPEq^RyATYAK3PJUjakqNyLAUUS z1J!Nt!rMDIKN80DOvzi3C`D9i6_F<*L-qNo2_<^c$Q0(B_7cQk{~G6R=jX&ld53ky z1(FUYri`_rG{KCoXAT$T#KeTVivve{a$<4ORV7!VRBMY{-=2DVnq``Unkp2JNapj1 zbugq4Eq|aBKx;%MqCFy2`{l>~V1Gs|m5nNwTm(%LVT5cHIpITG!%)YTiK-OO#o)AM z;!cd&n09T#w-8YfXG(brrld$ORYMtuD36KvE{No$0 zB4h)NS6XvI$J-OEQXO7{)u@MQKs9}ghPS63)F>q5M8sCXi4b?jzeG;<_gI`_{2MeC V6sc>J=f3~|002ovPDHLkV1kLGgE;^I delta 3459 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 diff --git a/images/previous_pressed.png b/images/previous_pressed.png index f999fe498500de4f891f898be1fc09c368162864..75c7e7d253ba307c55b9b1bdb2d53bbe2dddbf33 100644 GIT binary patch delta 2403 zcmV-p37qz;8|@O1BYz1rNklxA?34 zrtqxNv#o27*`vm7C5`YThkL)B%$crKUSDHXzQe+I)><2ZFBlj>BCv(8JWxSie)(l` z{q@(=v(7q;?FHDe#~#b~(Rc;`v`z98gMF3^C;{BFXHQe6C4VDq@AVo5NQF?yY&I)2 zO%tP|qv5`1EqpE+Y@oiBba!`?pZ)A-6ae_?r(diO4)*Jrj1eE`>+29gP*1oxGc#YA znVBh%jpc)N>)!GJz*CtDrl+UL9?CA6zhkpPfbY+*9q-IX<-o5+7U;p6`n}7Vh@8tl%S9ra>y>2d-3jrW#llnv% zY@oi1u358&4h;?IcR%z{&lx8ke~bm#c3-W2ScP+EvM9GH#(z@FJnGU4IBaP6PnBk}-b!+ut5_@XDd9 zH@^DkQ^z-L9-5n&vh3WP5Or5-goO-1A~Zq}W@>1p(GoG%@AC>ZktWRVG7XU+T$q$djo@N>rIZjN z6#-?U?gwFQvPkXn`n2?dbB;LZDEH2L?vX$I-hcNt#e83=l1WuE5y_xJ(l!|q^$EY? ziknjBoOS92qwl_Q+s-%MUg6~{qEFL;tfq@DT^AN-pmBzTQbH&JBm{Bq51G2v5T&N< zNW~GNT!^C)_OMh(rR?M6u94lfWHKpj+g=>@OUYm?7Gnzw3)&-(+Sei3Tl+hY}&LX zm(oN)^jP4!Zm>^=wD*eYdeV3F>3V-p-%+!>cN|}x%4zH5yH8$&?&W21~nBtrco_!C>qzidCx6{Ix~|q#%TkBh(wkh znVg$T^`Lve0sX0d0EjW)*Q35A3T!PCQ8Oh?K}x^)iVF_s^@R)Vkq`gNvOUph=zn0v z4UBijNJoE)*alG7A|$&kgJwo2R;QxFXcANRMoNjBL`g^#LAVz`0D}@DI^*uR?W%ck zG;iv%PW6}+9^5P2&hEXsQ$6*=>VR5(truA_#q` z**18N14s8zJWYn+l?tI#u7L$Q>Ooy+Qkno%6B5*=Y>F&7&&aC4dc6)YB7e~01Whi{ z1qVKuE|6EostBM#cY?w{U)|8MOVAWv%P6fW0J=`;$1r0eBOWp?foXu03Jg3K0RqA} zL?V$)Ynd8h+p|z8l$?Y{++<2ei}@rI*Wm7sI2>|7M*MVpk?j1i3b$Xn9C|x-@IwKJ zxVXZgA`GQ$WOSuYr70wO34cN@pwdck;#oAXeb-mQ5;P6K`3vt!G=V$u>JlppcXW;f# zn<)5T3as%Gq;Ihgo2fd869aOVTF=`Cy@kz=u5-^0DXn0 zoLmA7nDouK^L9?|`u0C(-uc$AhSvbdVNK(+CEF_iKz~KiUZ#)S15*W47?x$3X|tA^ znungmvc3~8I52U{wI}r+e)OQx->roS;(0^}34|bk#^rRK6o>Qf+#lY{ZU63Dv)iCh z+TCSAPB1>ZQ1;6J(4ZQX$p1u{2%_MTkTIB{iS3h>GywD-edNHQE4%nWffT z&Go{-c7KE7d|j3%N`CSE4bx))kQ?kZDsz>vRI4>b?6&fJ#5}XK5LNI9v#-xE;vizX zX1o*tBovlH333C#7tt3x3a>ZCY+&5Z&DZN~5}v|u7x_4u_6$*l)<9)R?@4M}(hPNu zLbL0h%8E}J<7javU802*CkRSK->Z6_3jnP|5?qQ;{u8&fPy~%&kr-Dn!!Vc*fNnGj zqpuAWehWc_i1@63ZPfh~OQ_&1jO Vk+nO{C-wjU002ovPDHLkV1f+LmahN+ delta 3498 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 Y0L0QU)wC0D;s5{u07*qoM6N<$f;VoZNdN!< diff --git a/images/previous_rest.png b/images/previous_rest.png index 9716dac67b7ccd4c68b427eeca7de3548eed0726..902a7b4557742528e7dff4e2ae8d90cabd645905 100644 GIT binary patch delta 2016 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 KMNUMnLSTY5e@BV{ delta 1888 zcmV-m2cP)E4ekz*BYyx1a7bBm000XU000XU0RWnu7ytkO8FWQhbW?9;ba!ELWdK2B zZ(?O2No`?gWm08fWO;GPWjp`?2Kz}wK~#9!)R;|76;~9;=g!RY@hu_<(JCM-lg4UN z(Zpaabwy)rS536q#3h<&Y$9%(Xwr3YQ5&muBO7WLg<$Gep?`^rXf!cKP()COfXMgP zo9!?T{LMYIhn_sH)nqLoc}rZ3_>YoEp`YT{>Q*MXyHSJ%>T|(?|7hC z3?>9(8*|Lr|1Nw;^KhO$bC!z%xk~`?%`p}+_eDZbA`l55A`VNKvu8}vZ7Lvl2_SX= zB5EwHsj2Buet&*`r4ECX$y5yv4z}#xz5A>Ih{0yfITnDDsen?ZDFi~`Ww7*f=g#fg zv}x0~wr#J@%*?d2va%#TC-3t-&zhQ=vSBijNc3O5diCUq6DR(_r774nYz8)Gq9skn z)PgW6Kp2UPwzjsqjEszml`B^Y1EHNED)a8;?SLYX{eR}o8*6xYxV569;xI0c!zK+> zEEUi^n1w*@-MiPieEIUVg@uKl<2YQk!~-?RU;5Tw_22l7?YgeOZycn}2GFbW^77B{ zlTp~jLO@BFK-C06G68Z2+E@eg@LM@IHz#?Y`MEyZZ*!##U~+ZQXw=4aM#%2(?;qH@ zbt{2J41ds62+k-H9_F|D?AY-Iz8VUojOCwj7f4YQ5m*hATp3}JcX9ptwN$O&LMp9TY*s+Hx}1D*`!FyC zKYxn;099bpG;M6w?>}~^%WCn~*ViA0_yjcI5r&Rdty(3^%eSg{JYj|H!Gj0ZsZ*!K z37$w}+Ng`dQwOFvWGe!n4%Hh(OLe=A&5>(;H?VjAhZEhP-2fpD{cAo&1E zM}$GXDFsL5q3R*yv(IRQvXQDbZ)F zix)524Gq609rK}xghC`(VY*8)Qq&JpHkWE1N(G|@2V-^E%sYFGF@=aph}1i9;486l z<3{!3#S3<1YwzBD3j2|BvPy9&<1`ndy*FbQel|ngocO=K6&ya0?|7D02Kfd)D9oczy0ZC>m|iX&#GnF|hE8pg~L!Euqqv4;;Io`m=;G_nZN<+7I$hO1<{_z?dy z_oR-FcEOY#JN7l(fkY}4fPdMeL}_WM+uq*pvH+T!n}0Mz)=YSe2uH@BTVvA~5r28lV*i4<2m9Zk@k<`*w)|$%C*h zR0_8U4P=IEy(vO73Y8|-u3alyTU+g$H*eZ#|09TWwVCvW&2Bwz1}uLjUVPHyI6-iav=J<8 z=gyr6aPJoS2sO?7EiEneCj2u-tP}tE?O?I@CIgje>fRH(As?{r2F)OfU7lDdiib zdOQ9H9nb4Q#&I+>j|5@7#oj2xAd9~E|6A|csX+d7|Ai3$tN+g|0A(!zkqXLM48lMD a6kq_nUR@4PuDuNa0000BUZQC~f|Jt@~+qP{V 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 FV1irA-n0M! delta 2231 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 Q00000NkvXXt^-0~f^9mI3IG5A diff --git a/images/rotateright_grouphover.png b/images/rotateright_grouphover.png index 86e8689c14b1ef1af96adc7aa3ba9531113a31c4..9e71371209a165941aeb234f59ab46ebd977e822 100644 GIT binary patch delta 1785 zcmV1@U)#An;KE&bNB zZF@1(S2gK*nd`jG?%_)+Jv;cix;{+LN|Bz)@UaE^I!#*;)|h0H^oej(!Dzwu;{n=? zt{DNFQ2JzS6%^nAkq{grOvoY;2NGs<4Ri=;ld(zkGZ+B$|9|@Hudf|Fdh~9swe+R% zJb$dKtNZ!XQ%`-?5QqXj91RR9qY{yZ1tcQCKwvm9{-u{*y70)6BV|XA9(D8c^L2G~ zwOdobM&szkh#!1#(nK)zs9~ZrHGagqn>? zHX)&GWkSh1=#M}Ccw^+qkyFQv8RNpdo}L~LCWE9^uy{O=01IhqdWfI)_g6Y!80nV@=xL6vAYA6Ek1iW|_uY4|#)C{yx2vm5$6_%$6C4c@g_X+e>}+-Kz4uD= z6%mgogpKvCHj%cok$^`1rNc6q; z-hXvodg(>k(b3^6VPn{^p6+d?D zSa)7tUaYdR(rs&N(*pMHyYDDFBxs08YJbN+o;`bxo;h=tTV7u778MmGKt6`X8AY#g z;g`xu`z1^CMTSanB~*jQ3M{%Ms zLRDOh3B0EgTm)3sBtT{9m;UWNQ8H!x96{nrHZM~}5~E`E6crWrKD=w!Zhg^37k^{5 zjc!?4nY&}hF88v_E~A2cacUDHX`c714}M8T3d?LV+Q6%?um6cHTx+eEBXq>vfn)X$ zEsUX&2`Hv3Dk^kwak0lROqeh+4q_h92Sf-GfjKyj##neHn2TdFWjw&W?z-!qfFn-g zj2JP3>i9$uB0rJQwCI2d86>900)I3~06bQu^S{p!S8cbkQC0OnZ7f7-3iOrk0uu3#Z zL;l{7h>&q1P|5lE=bs}(h78Gh@x>QkHT#-Ypu>=g174VnJt{c(ZpV%tXJJn>4673p zCr%VdQUOIIdk$BMvgL2)M}I&h*j~sbOO`kYnfmOr&mzdZ<_8~q@RksfHlWj}eRiA$PsRLD;pMLu3 zD-8)-6_d!RcY1@(CVJGRmtOiLN^%7fS8m+6(Ob1@m4-1{1xFgM!GE|Rmw*2Gr@}Rj zrkL}_8*ki65(dp?>)C1LOnQ4@U>GnG8|z(o>)ujQQZkx30tHAw1V&;gUx96c0Ergl z($m<;?=vB3B~tEz(3kg|C)6Jp zWJnD$N^{t&g83S7(gQ$%VfyDpyFGOI{9xYhJ%@~4p{eLkTf=U5t bA*KBVIxI(cg+%|n00000NkvXXu0mjf{$o~} delta 1957 zcmV;W2U_@u4zdrBBYyx1a7bBm000XU000XU0RWnu7ytkO8FWQhbW?9;ba!ELWdK2B zZ(?O2No`?gWm08fWO;GPWjp`?2R}(fK~#9!q*zN#6;~LZb7n4Zd4muPj{v%GV{Kd% zNQ@|$bU`JyNmsVIaM#AvV%x-}CUwzuEyV^CO=Cz}Oc#>I8hTW9&G_4;XYYRYJ5CLV$ zu%w$eZ+?-Rn}1u2IVA|kapZk+a==iN$x4u1d=FDGsv7)#{(1r;(s$UGsf)fY|sAv`%mKWA}pjp zh5Z0+022pD>VpRldNMOJO9~1KY|}Jt>{?*Kw`8Z^GzH$_mSqtr6S8pt8mp+N_z}Uc7km{qpkiFAEC`$@61C$VX`B z1c+Ffo0~J6nwt2dN00cz!UBLgJS!`U2LeeFFMqvH45p-{7ywsI#0=AY3=6R2EQCV3f zojni;P^4KyLqk*5)zu&4m1!keNXcdMI1*u<#6!(cW&Jxz>6Mn*;=@E;55--K_NC;>)m>#v+-(68d+B4cW5TFSX=*MBZi zR#tAmdiBbN&qPC^kWHX=?%WxmO=5%0r^qtjLP@h z*NdY^k2+~->BiNoKlAI?+gL-xX&X@!ee>px4Vh%BCf_7>$nR)=pPtB<89^@-m6W_> zwnKiQoI=qvGBO++TvJmEAfMP^(SMnlnKcd^s1Z3ixomN9(Vm!?5UOCxOs)KlAs`40 zOVrP}U70gAHPwNQyaQUP#&AReBi|tjkUwGt37M4&p?LlJHHEx@l%k+uyLkEXr2vCe zzhqbw5ac6@LKE*JCr$KgeNSvY?$e>!r%s*vk)jBTn8=vKjs$`QNIHR}C4VP?LrU6l z7uW!Sa0m$f4S6I3G?qY-zm1NLniO3~2fu0A*99cFs%pa9p@EUffq{Vlc5jm8BpvM* zRahK3@{ypO_V(U$>nkH!0gB8ZCh0dxL_p|5Z88T32TlArr+S)oz1fmrJTf^7@%rP( zkIx|tjVDi@1a|D$VSyQjsDCg(G35;V^y#lDY>k0|ziC5qVU>MlG^*bc3~HQ(bYMXu zqobqal4`P6y=_E1FyZFr=06eA_fexPIHXlpR%VhUXa@u$g>r}8(C}5%G%bhZQ<5-E z8fmCc7B*q_^z;xb&)VAB?s=N5NUS&33Z53%+mVWTy!Q&YFp4)Re!}mNP!6XMUn66Ai=pQ zs6eHudr<2~^wXs6Il!%IXQs8y&P~3BQWZ8s3-t|QuO?6SwgB3hI-&tu*FtzhlH1aW zGR|4s)Y?+Z+Zg$rvu&;Eek=9+owfhVR|xI_!F@i5I35#Q`3k}Q<@Xu3$u}AuOuTP2 r|L^-uf{#Xghl%F@M}PqUhNUp3bc0=@00000NkvXXu0mjf^cJFD diff --git a/images/rotateright_hover.png b/images/rotateright_hover.png index d22a728fe9b973f28df270e165fe57ee10353d1a..08f14160e53a7fa05b3d8627d9c17dc7f823e859 100644 GIT binary patch delta 2146 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 IM6N<$f(S{>P5=M^ delta 2217 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 UnnRcVBLDyZ07*qoM6N<$g0KGgQUCw| literal 4794 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 U<@`%&ga7~l07*qoM6N<$f_Nk7;{X5v diff --git a/images/zoomin_hover.png b/images/zoomin_hover.png index 3cab721f1bd5b0360dd1eac094c36a409b517738..c25bda425812b9e74dd765dab52d196e0a96c25c 100644 GIT binary patch delta 2104 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 literal 5172 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 i1Lyy6&{uuIzXt$N%Ig>!&KNZS00001UV zeFhDz_Daf9S%5d5awqW_OnjE(S2_|M8gEBp)LjuCY%Q@?>!iS6wt{~wpmK+WUb_YBp|^gL_~42 zHA`QwMGRga)HsH!1Nz{!L(exg9+ClzEHas+wZD4gr+>qL4xC+(TnGh`Lh#Tey;Fp< z(}-#)0jbv^_1=u0Xs6-|X;Sq>8qgFhnbeYSKq>MOgCGUxQC!)(^WXz9zc$SwI3yeI z&7H$7qr|zCxVmetY zsU^tN9DkNHP$jU0)(S>})P`j zF#^Owl=~N4x7M;-I=lA$;>eA|Q}zf{VUDx8Cib(AYXOpPfCF>l5G(FqA& z2!BNwmg96uW4%Q^fg_<*+`MkhrmbAWf^#kzvl9PAo6?BDC&!dP{O6{FHy$})WIYc; zIR^A{kBgd0ZoZuM&`_(L>6%e;(+C@R2W%`(IfCVLexAXnbFoX6Mt0x zbh<_lw@vU`t`ZPnEM@hz4h;O>_ezjk94$tHDs#m76s@ZWLd>gW@|K)jSL+S0!rZ5KYAHA54^{98C5|gq`Sr_E)IM3(5gs P00000NkvXXu0mjf8*W+b literal 5041 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 Hu0mjf@M4@K diff --git a/images/zoomout_grouphover.png b/images/zoomout_grouphover.png index 46d21b3e507e7363b4e8afd0e77343814ad63748..b588ecf77670d984c29ae63728b44eb7ad087ef6 100644 GIT binary patch delta 966 zcmV;%13CQkBhd$t8Gi%-004iCsCNJW1DHufK~#9!gq8!aBUu!Nzg9A~p1HPdqg;#P z8iloO+qO|&jcwbuXOcHbns+m&y82c>oGZJ-TR)-Ip^0u(#(-d`xGddbS zdDxO8RaQh8zm=#%j7HdHIXE}=zq-jYBjewVKkX(Yz%MHx(0{1*FdC74y5^>v240>y zRB=!t2i9&J@zIapZN?R8R2maQENn7QRo!yWklRfnKp~d|RbbfM#r`FD(oP-e0y`=w(uM+W#rsDE@6B%crw3C3b@<5@@3oeVYx znA%JA7iIBevGMdo63*Bn3kd`QN(`g+Ou7li#ITc{u{gpdk4+y8JaX82heQEBS!^PT zC`_zIvN0R&DbpJqki%ss{aMUN22(|M1S5}bU=Js9A$#%2V&M0WAqHrSk&iq)3C%p~ z_!(lWVt+Hl)`wFl5?~O~qLTbiFu?x3B|<#8*2Kd&>0%_VZk8MfacCi*Coxldbl37d zC|pY9=*9VEotM(V<3Z#o;-c8d-VH?QoRZ})8$ay96C?~gO3C(W(*bCbVHR8G;uEHG zDk2!ZqDh+CO{mX?ti9VC(%!4)0rar@jJUmQJ^FnrK1=L zi{XFF8NQ#M5~m$0q$lf{JaflzS|~^|sPt?+N}GQAk!}L=+LJ&G-X!-Q`)Q$sm!1u> zmg17ho1Xm$hrw6`ZDcW+fG64WbzwUDXrYKtlD)_P_7`&F&cEiOV%c*UQ|x+~id~ryezsT59M+Uj|W$%R=5~%J9<5;k*aHX0bjZ|C7lOrz>UDDfaFb>_z>LKc8*3m~5)fNKW zvI?SN#|=i$$ig8*R+PcPirbWrhb!`u_&-%$HD4>KT5%5-XUVR2)qK+^{Z9fQ5`{z> o(WNCA8z+$+V-5Zvd4RA+0LY~cp-nwQP5=M^07*qoM6N<$g64L|A^-pY literal 4596 zcmVKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000LcNklH(?ZPyy5hPAL)Q z67iYw_ZVLbDCYYbke`vLR= z=mOBrzi;sU6aeJ$}QVSFxPdN<2W&d5E*J| zX^GvrbLWpIPMr7&hw1>3=lkgbXliN-larJGwS;hd0ivp^FpJ9ni}ZsB4~}o!w(V0z zQ5u|24jQpm6a|D35JKR(E>>1nFg`y1n^UJw{T0AE00)4_%@zV+%vGyuk}TesdH9v=Q%Hk$>dGGzP%pTJpGqGXN}(CeQOAnMVhZ?(OaUIF(Al^E^aR6sw;x*0A0PL}*G;6!i7= zVf*&&#{t}zqDu~c7Msa+U9nUE=%rF=#5B#HQA*+aev?UB`Hma};{7lT;dvem!@$76 zz`oO`Pag;H4v#G1$nn7dfZpC-IiaNrg~CWWordeWEkRlVv`Y737=ls?$8pf#-;b`Y zt`E82WB{b31WJ@-o&%s=xNzZnsZ{Dc;fw-egTxs7jl33S53WkS=ap=$?tgf!Y_kE<(X%IpX1VJGILN$**j`?~g0u33trAeBmCa&i)ji;G|IG9WT=OPB}% zEtN{;o}QjZLqkJDilWHb`K_;PHj8Stibszg%`Pu5KL+5-O;-{|ZWq1z`T0NHyLWGB z@7}$r)oP%WzBP!ZY1p)B6Glfzv9hxA58g(&yims4X=Nq~ASjhee_@RMcyMs=r@34X zl}hF7_V9nW6h%QkpU1Oj&oD7D@voOJUzPyWIFM*bSwjXscI=p}86SWkfGUS^`8ly>Vi?ij@IUwf>g95IVt#)9x0f$p zhOX-<7K>0-6_nC%6kdlwDaF~dXHltCK6f1Fp8(c4Or2{cR(IT7?ccv26B841bCu@R z)$Hl%`Oq+opC3JX^as0k?LwteLA6?i>$(l5Q&km)VZby^6bc30y?YneuU|*KUjIW7 z1Y-b}0aOyrl`s>FVTOl?5r!ciK71(mzXpITfOj-a>u7Ip|D|b~A00k?7&~_CKt7+3 zTMSiIk;!DRw6uij>1o`&c@vdNr9>(HGh=LtL#zR?B?qQbuK8LsgM)*Jq6kl(JRync zAkE8t8;AN%CX@My5b`6&SbtYn7qZzbY}>}%+#JF%e8L#}GK!)x#@Hf1+~Rj(9xnmX z2(x+f=D7cO@!~~tLJ%WMhHFZQp(x5`048Is&KP^a5AnD-lGG)qZ31b4>FDTa7&q6} z){^6_&ijwFBq{z}mB!nUJEku|dHi!S>o#<3F-$(6ZyL&7*KIZ43NT$7cayU=O^mmp zlxbNjkOmmTFq)d|#DpnBC5L|{QBtDB@c&wfCKy#!-z3An?kAC^>M#E!@;Zp73j2S! e$hY0#KLY>*6CH&u;pYAT0000CWa4?BYy`?Nklmpch`@LYX(rIaJv}{7 z|L})DyyKt${O1?|#2Ip=_AG-bJe6>7yz$1R8#Zis|H?(BYjNm7hW(ouOw`Comq;^0 zrjfZ4O?L_9%6|hWSa6DZWo!SPzy9^FZ~ezV{xJjqfhDpesgQ0L!Z#q|J^uLP7awuh zAzxrUw>kLo(>$80$OsoCvQXAWxCR(EpcOKia3^kZ-%PpQf|}FV?+{a6aHhQT?t6b@ zD|#;gG*hWKPso|`j!8wHdg`g`_TOvS273Glg?Lk7YJapQl${F_@O=%AV~{ff+O?I^ zM#riPgRonP@kzI1Y^%3$|DE2MCtvxQAN}Y@6)SX0TLCCDWWeXCiud=w|NX=x4n63r z-lIP#hA%6siq%%6TY~EnFovxFLktKQ7{dU7k1m~&}`P) zVu(B+s^JpVwXx4xgSQk9Km73X0brv=rDSh^${QwT5jWp_^A+8}&U4^}9=9s@3UtXK zrWFSu4vImmG6Z==w-Tl$rpYKt#2HnS4z+l5Z-42a{Z}5dcJ0~=e)-E^-j-g-G9v{n z=UU+wck$xIm-{c>QmKuWK{A&?A_au82SMaQ5YB>O)WVx3h&%}G{BU;;?fkd^krW9N ztTs~8`;I)YxaZZG7`85w3lC+B+MHuhly8-LwsV1o1lpF0IEgdm<&z#Z{o*Q+?3d5Hi2 zm?9uDpkqxEl&)wl%Q26r8f(>Pns~a#O3MRRh*c{9z-xP<=H5+AO4%i<6T(bYInE@; zO!NU~o&2Hcu<-p`hg{$Hp;#<}<2aBFA_AopG#U+v<5+y~^hNxW3l^woXAM|2L4VXu zUaC7nsb%Fh5u8f~>-9RZIAVU>bT}$>I0tVg<}o&K`}Xb79;H$Vn$0G(M{u~pf>0cS z5LBq3KrwH|u5QWZyz%qj+SAk1^$3wVbRbAe#*vXTCfO;gg!$G-_cOd(AbJRM1tkP} zTGH|87-yvJxQ&qUScAtUuNxlOlYb2%Cs_M_T8xj6_l@z6#4m(gP-yEKIDDeU4<4+; zdO)>Sfm|z5&BZzmay_9sVI&|vI>SWLoZU}re?1XTrlzLSr||smCbF1~8#li2^3kgr zXD*AD$GwIjBj7OrjxxY02EY-B!Q5d0Q4?@wz*sl~U=D)6EWwAWeq&^0aDN8?$W+G6 zC1Wh=fd?Mgxz9eI*f_Ydb9MLVOi>~LF#>F54FLL$e;<-#VF<1O*xD_E$6rncY-Rd0 zpAs!h`!G?aba7u_-#vfCqh2o_pb?9JrW2652%-CpW7ltOH@m&RzsB#szHoSAV&a9& zw@sX_PTnvni@eVUo`3$aXMY~Dbm4Jkd_hwo7!QDP0>Jq{5h?v+Gy+8k#V&$-D*n{X zkI9#;%rgMcNQIuNfVH+_sZ@>x8MGoc z2Uf&4uyX+qKJ)j=K&@75iOi%jktNAiCjWaT{eNp zE+bGG07^Dnpom~BRIs@PN8nbd+-czXGOu0xm-5cBYV)2j44(#o$&65(sSNSCs+J5z(%LlCU@yh5&@XHG(e)XtB{h+3t>f?oaN}43e8t7Qo?fxJV8+K3H%NNuO`^| z!wxp_@!yI5o1Zg}hEe=yt@V~Xk@i~~_t2sUi)ZmIWlQUwy~OwZa~Wet64BCwRw}Qn zNPMbJ`n7(DwbsK#)MNAW05E2$TWV=eMe;t#-*~GcEPhHcLvg`MEwi~qM2TfGJxH7q zWC-`vs&JS;D8;mOiAlQSuq9v_Nvlw6BdtcJXL>_T+#7Fid0T_;<*JbTTHved-0QqnD-}<_cq@C0sjjC={kSKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000PXNkl9)x703VQ-uE$Y#^bREu$^KsUkM+DHl$~%M^VJB0L{@D0{{;PlY$@s0)R}$=4VR5FaQHUr$@(e7yvIUEN~MbZT}Uf z4TP1L4ZuEp_;BaJg9rPgC=yz0I(zo)^c!!yF`ob^0C8d}F;gfM7ywU9OmHg<-7jWR zAZZA9XlSVK*s){J_Vn~TnX$}zH15!n%iUGH(9n~kqoW_b@WKm!d;Rs-rvZd1TY>_> zrBZ1LXvdBn?O{?NGJ$YToH)^Y{P^+b)~?R|h$h|>H2$f;Y=uqiFl)giGzljr)19Mu z?W5c%KBYb>jlX^R^y#-=d+oIe01W^EfG7dd0QmCd%WRCn;Najrm}Z1aDO*9@ix)3G zv+Jwde=A1+YSFb1Wl+w?0TrV-)1i&+7zk;g6^S^KR#=ywDLZblV%0WpH*>{3@!MzL zeR*hT=v@Hy1S(7e4G$0V-o1P8#Y`N>&Am%+jr+j|9~|B?(080Kp2~!uHcW-r`*EQd z!SggM%a9ZdUi_BQMu)148h*F3XYM+k(er?}xtoKjl8Xwg$%l$!6D8|Ndm;nK1$x2(Sjm1h^ zV3y2AYRl%Jvpb$af1s|$SamUx|LM`AN52iA1Avzt0to;I4jiCmrzs3Wq_)Qf z;BMNq>4(;pm$QveV$6Au#BehpZ6xAYvN9l{DE%YZfB^<;4c3O)^)To6sIHMQYdyW0 z-MMq;egGq>Ku#ZjUh+&31W0@3%$YL>yBjy2#+6ZLE-ol7EM~1F$C1rJXmc1i#`kR# zG%c_>3>^0T#s5cJA1cL|=V)4*X5(A4qVHgICVHgck8XU$P30qXAa(Yw# zQpbi3-})|q_fmlzt?*1LrCTRYo_x%$-Fi%n-F18|L2)E04sD8khm`LM4l=^{t}uQ^ zn7~~$Ke50S#?O%QU5b4NQD9RP$%d99H(7IfM5TXlaBxc!H%{UZYR$k)r)cx$%}=5LsM}Dk0j95jQ{3%dh z@us(7!-k!gE?xR81tS1ZYdH`Aq?B@_xHaMgw`N%vJ!xg6ZQCrPJe(;vblkipg}b;% zEp-{p20GLnL+QMhaYrZvo(r|A)lE2G5xGYij&1jU1%R7?H0#`o+C%_E9LHVu+^lWN zbCMP!V`j%7ML`bF`vE+W!( znX6j1QhgmQAap+%s#dEk!a#Uo-IAopk`nGhC_}2z=bwMRqI~3XIn?X*755uE6=iHC z(eR;sg$#$X9y+>KtD#NBZ(p_N=jW>d5qIi_%{ms61Y6Uwc>vzyJAWBfD)Pm+o8b zIb!JfmPGUYQB)6hAU%PH8QAHtA4xhSt~Xj;F+13v1z9>8p!xk*Az)bEN3Iy z1_wL(GKv&Hg6>bFnGF-nod)wvBs*Kv)E?FQVZ&uQoOH#lMq2r$>kOWMcw2$#txgDITgt1lR&t5F8sQb=!@L*P>hHa(O(} zN;LZ$h*qy8ONC=&W9MF>uiwr-s)@27Qvh)n6S^PXxQodYK$Hb}TQog?d)4IZ?Ch0P zZxg1y({7s-fcX6R^XF;*{@r`F_pbV;nJLy4!MK2s47ABGt&@NOqX`@kvR#aGd9Qrt z@A1{y+1ZZ()Doa(OS-&;ICSVx+A|S=V0?W1?ca@Ty*0kYt9xAx;}LX$z(oSD26zpC zl<^uY-Y*h#7r}UhY`4LU0ns?}ZvIxKQuzqLLIM+{>e6!0r1FGG9`Z}2(mw$F>DT_F zzdH5w^$oj%MrR`w&^dq{fRZe+q)`mO2H=n&8$hU*iJ978eBU1ia5wQxJ()jF9q)TR@b2Bap|!@fYuD2KZw5dXK;E*f zHN|4_$Eyos-;sUQ)z54R3tI~+Ya#-hMK1}9@$rnTohymTAK#I8C(HU{rPO=OJPn|n zc%_;OVAU38+qP{m#^Cz(>uHH%Ck4$*+Qqz-vd8nheL{$@F>~+MwaV?vvMg6w|7#qf z)_RheN43_M0Zb>0SCX;0Jz)#Ta+raEfh9q8`}XZtg0Fr3%ICF)?FsrmS75n z!U|Cy1VKA_+XS;yO0!jKs}^~y(@L@($TFBrCbJAAZ7pvcL>uuhT1tv(5&sW_SOFuY zToT|9t~U35C9kpI+MqnCl%GK{^AcNA#mXiLT6y8e-VX&G!^{G!yKIb{l>3?Z78Y~P${O3RaS-AS@ ztII|p)C7jm&?2=~nRp53WiNYK*W2Fqwnq#P4{wovb!hthsSZ*Kn$a`7z95-3d-CMT zv!D3HC+@oHs;lw<;I9%VwH6sPa3f*A@|Cabdh1)?`ozwJ{j{Su{A17Jg|mI7g{7oy zNJ52xsDL{HlYiZvmF~>=TxRcM4xhd}eZv>O_{H1*^{;;|0zg$$*EEcfY!$*ah&X@! z>t7EZ+`sRIcmDCGkDNMmXsk4y<&8o`Vi1z0RRjVd0U*;Ki!-Y&$=tzC)wXr(#Mq;r ze$%gh`@6q?=tCd68vrUs%8wJ`F*3|xX&n7lkK2?Pd4KT@Km6*mFW-Duf9c`^S!G{# za}f?$UfA!rs#iF&$97bguw`1IvMYg93q|yo<~vJ;sm#vDJdtNMYzp;wS~3l{bW>C& zJ}b_*zy0m4`*-hp=}kZW`tzr6JCO<(%CZ|pIBa{eSGcN8Sd`*|JTAax8sy+1S1uyC z0TCuu0XT}1DhjRO&FrZn5D~vD^$BBR4QBb?L%km#^I};wr}6QT>#Lg zNoX96FzsP{X3RMG$xnXr7+#ot`NWO4?2xlX-G3#v>~kEIbR1-sU}y;rLW^*|g3xee zgop}tNyLB@V^RW^s^D@z&HH<}*E_s)`0(MS)hQochoYH@E@<}1$jHI@6NmQrvw7LY zP<2^?T-!p_BCsNZ(5yQVR_cs7HbX}sXkTE+m;&PGmt=2Yde`R7n>PVKQsZgt$O4KY zE`Kv`c*7fp%F`G2R%hngym}CH*)Ak?Bi!b|J)wmxV4MMR4uIx;NC8Q%3kej4AnOYB z7ow1p3K-C`ui9qkQV$#L*{r*N;P~<5Wizvc$r6Z|%!qB900e`Y&k)K7X&jmz*PtqsAnPuu9D`#{JYncg? z84;fu(@nN*_Z2Tqq^oDnQJ3(*=}e>3vtJK8r@dtWGY!ObQ*)n5alhiQVitl@5sTR~N{9^Jj( z<7G7Ea+$ig!gP`_!3nIiWI&6ow6qMj-8KQO(G)8b3eXylepo-UbpUo-hzJBcO$BNla8P4u~?!3;D4kDxD()>E(bpLnh~id>)>^VNJ+$Wj{}ziRnRY6j;z9Dh?P;tjvc$OzJF)W#r4DO zJM7t6u-1jhtN;KcgrypUWi(?YK8OfFHBlfug-k#*laLy3higvcFY1?FUG$`pij`5C z@RnO{ncK2u%aMaSGmrDClO0y70L&pkCe8m}dyoQ9K0?wM{! zzKPuqc$0KGZF_BPeS1d34S$ZWWzq_o-NQYNyG9%UCJ-EHL;H9JzIKPa;i}sw4%ce6 zDF7&FmNj*gB^8yy2x4MlqM+;^Z})-WEkmrZ4xkDwMIelf_#YC?(WMQ59DxS{)}{O4 zLfgiv*M0WLKeE~EaRA5}nW~YI8j8sL_a23a;putXecTgt6;@~5SgGXRh`S*d9nEi&;}5xsU)6tUozvlKq| z$r}gyM3{tX9f&DF3xIJ1gEnNP^wS}qio#X8r$GSS*3UH_>P&EbQ1AvbJH3X~(Es+9` z_X6+V6#R9n?Zk86dfUHd=8MPm4dRp$DQL>AS&2OZx14`na}Y{%&bvA~Iv$l7O7H&g zYsUBP8^+;YtK0_l8jzAJJGh&Gsj8PfG!e{v@Tk8qbi3;38s2vm_#E8VfbPp&Frf@2@KH8RACB);JMtjTPDO$TSj|M*Rqlm{phV z-}Tmr8HAzrt~nhV0)xDt*V`*gwO;-WtDz#8EVM{G1V4#HBmO6mhcFQCXZ#zm^qq6+ SYa%rO0000KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000QONkl(2@iMr6E9K0)}8GHcnz^9e?b4KfF6T zGxzktv&(qB38-|WqdR+L-}{?$&%Nh=E-^E{%R@xe+{ZT z?HgfQKp2530P5hugR#Sh4|mmSHQ{+4z4g{x`BSG(l>z_{fE$<>m`)~>41i~6XSo@M zZWJ>ikT8Vx$Rm%WpMLu3?`JZZA>Uc;o4s_QorA%;GF$V$P}jcr;)}_nM~|L8dGcfq zfD^I?6ab!>m}meE4-dD734zD}!hGzp$I?$d_0+u`QS;EJ@BM4{!qj9>;re3CulY=x zK%^lpgJPW><<7xv*}*%1@X41mv+q6s{PQ24IB{YDz$$<$fLZ|L1K_h~&$8AUd-m-4 z8m1oMQp#o!>y0!eAy@0W5uKm0uuuyKtf5Ok}+X# z?$F8GZ@;|d?)%?=<<-~zdF05Ea{$T#loJMe=bd->z<~o_$BgT`^|cExjdkM0iT&I9 zH~;*^pPqYQ{?m!J%KVCNd)nQkl;39AIwA!mLldoikn4HES*lWX`Kl~l&uy7py54zk z|NWMD_Sxt&&ph)%X!oHW?B#Nq*Tqb+SVUV}Tiq)L0Q=anW5YlC;r?H}fBc1?Ui{Jzt1$iemml)ZA(Wj1Ey^d znTCKViIpT)f=CIWl%S|>=#(;ad}-A&$0p3$Cnpb$j*jjEkOU9~U2>PT}O0tv& zNg*vEU}g(`Y~o^P##lY@=%bJB29N+?2OllM69WJ;nN0XVGyD7d_s)Mlw%fUu^V5QK zS{ZDcibxp($`GUsf~knCkgfd|!ZHO}2EmYkAR#nZURw0K^Rv5l?AUP|fEa)X05f!e zQuCol0E{P|c%rW~J9X#kTs9f0x^CLE5wnz#ri6?bL`p$O0g@6RQ4bifFTvUedmj9% z2H0cvBx_fIi;hlS%f>eibnO@!8M$SAe7qFwEF*}UbtiCR7Yz>&-&UNT8RX>>r$C6C zl2ptft1~LhjtCiX8)O=wItT$^2D1iyAAYR{zo6JzBCcj#X4hfgVbENWd$*JZ2L}f; zbqYjR>rc1X<|_aequKci6(}ut{3M81FLQ0C#L=C-G0U=2O#v)gU=JjD}}U9Lxi=0(VuvsZ-+gyX%6m`k`^BvzyExb9>MRiTAdEGjo2=5>k;8!Y2(oA( z(blom0QJ+iE=hS^ZhGjUhr*tz0jSQ*%$z&=*Tpv%`gY~w(Jm;h zAWVW01&lagBmk8FRNGo>B!d1ZAWeeO3dwjEii0D$pB*{(W}#5H3}7XIsjI$*XBsfU z-mk|^4M1gjdivtT#hH^&zA*p#?55G{iR1vRN)+Tu5D|nVkb#B?xfa;uN|==>lF5E# zH|@NB->=WUer0ZH(s7)x0OSLhO5hp2VQU949FS75o~u(+Qy-PfW$*BB7O(u_$yTvsg>yv#B$)3Vkm&UmM}v@L(p1da&j_UqNpIDMF7MBB!m#@ zNF;KH5Mncc#C>}@(%tRK$}U%(H~+J+jPFf9FrB$gCDuKU->FMcNS8nF>`Q~y~1^UAZ znHluUP{~C4mW$8Gi%-004iCsCNJW1V~9lK~#9!ot8tmEJqlIzpD1=*obXg*d?o2 z+CLHY@hVzn8+(^sY}=NuFhbAtbaz$#sZ+yi{O=KF-u_Bp*ij8$LD*((OT#n(>whPs zq2BkM(J%vt1#Z4F4QUi)_mehPv27@9jRWW0?0HiO7wq-wTYn)W1X7LA3{+cch7{h_ z6StkPbYOOhxCx?4m7jjQ|I0Tkhz)(!mKvt9w8Fh^;?^_wJ%x`FF$E$p0#{7%R`sJV zAO7r(jcB2b1Ol=rVp~YOmybK;VrvWxiAtfmoyx$O4L7oir59em<0~|^DjtZezJ_ZY zcyF9`?1j!G34hgA5)3wTXhm)TN>FN3Ffu#8h_{NMexrsm5lTF5-+!hypqlg0ukPJd9OluUHUag}^iG=p#EkxA2? zZ0_>$eoiE0kpqV`aGBf5(?yGwEm_>!(?4*3WD&qMla%p6nj04L%S=il+Xy`7GarHZ z>UV$h$bn6^R9>_^b;!KY*kFL&Ph%gvzn@DJV%%mP&srJgGRr)M5kZlpl*ME#A|Vqb z^CNpL{eSSU(Qq)kKirl(({8la2Zcg`2d#<5nC)_lfiZwO9wCxUIV%xI?IcpRH`?uD zZqoGfh@23Wa%*+)*V5kap8M9!6c!MG0cMIs_!ngysxJ9x)gR4PCSX(2?@HLPhJ_R( zMFOU3wVxZ$qFY+F8oj!r-Ke)^0tX6Bbl1Pp^na@owQXs|Ak}Ce_WKQ)Ag~<_l@w95 z|F88ZQZalhwCgFlHP8@f-NrHtoESo>=IoD`{pb0XHLOu8ZiithY)J{`tYVcAs<);F z8uk63`=-ZbWGzui(iFwe;$Rpql1eBkC2{U$K1keFd_?%OYA}Ec( zHh-(&mnOap>qR6G8a2EaELeG$?RNlGS}93v8*a@{K9~LB?`RdOXrPT0s-s~B``@ZH zeZXFsW<3$x6oF3_)+|4{q4WdFsG1E-f{bRcu9#T0|FPpd3e&A8Vtg`h?Rjrf{#C9) z1r0<<`kKLkQf)&1w8t@%W1^KNq%aII-+x&cYwvldDE=A$iV|uF%??PzX{e*Cl;YOM z!Nl^Rz6+^R5=O>(&YLOB&3!oYP+a*X`B_V<2zyyJ-HR>Q@R32@nixB2{DAYl1LN_q zohrq7;I7L3efN>CLG6tWG!6%6j0bv-}9stlQX-^ye?_=r?+U#PoTg9-0`X6E4a>M!Id|3bh002ov JPDHLkV1fgKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000N}NklZpvOEENIVZ<#4OM(NW>^YgQ7%< z@&(wCU8IN)5SFa7NTNj9WtjzpKoXG=k~2bK$UqE%*x(WEw)sAlV?ds zRb5?G_gCkhd(QcnU}pT5O$Z_S&+!u;%FJtwhB?` z{Hao@RELI!CYV`TF+j`9%PTi-+_?4j+i%Z(`st@D020f3PyqPm&6_=-nVFfvFcyeo zApF-~e|`M)>C=DPv17*}Ddh%cW+4RS@oM5k5|L0!$!@p1dgaQMxpU{vUA=JO!b1RE z05O2n0BHa`H#f&bgy)`n?lDaMc8=rpg9M*^^2zL>Lx=w9I8Mp@ml9EyzhNGvxhI7X zE&xA@BBxfXEr0aUN9WI+IrBAuj)6*Spi7r7@sT4(9>+|UW%=CMQxjacaN)1}_wWCQ zlyaPiQf5w!R|Ei02qCSd%mB!MW45-@XM?)RD5(^@MbM0?w|Z5s|8IIs`E7=WU=$F)+!W0*LOVSDAn4?q0#rcImn z1JFt-#muf5s0Uzv`xaP`pJ!%|h+HCavMfu&FpQpk_SxUR_S$RD02ndXdp1KaW-676 zozVR0>FGZf3WZ^%R96V$FtaCw@QimHA%r7@kk-TOWS74!6OqJe zG)*HSa)Th)&= zeh7k~;5d%+Bp4#1BuV0SyWL)1UT$~0U9Gi-5W-tnSP&~KD{U(c^qR0iF!aqg-`w7@ zV@EbSJ6qIRH_|kvG)>b^r=x1MTHA3P*;ixMb(mUfQc972w6T;@20>7~di83yw6s(+ zeU7$^Z9fbFP+xuZ)l#)ueXwuezD=Iz)uSki%ztF6?JwR&M@I|G%gf_)b93!xvstrR ziM+pA17l~O6SxpsBT{Ukc(lj@-C$N$E*=I}jdi^$l zwgJjp(zPwbi!Z)tdnN@C-@SYH>-XP(KlVItYpGNkAtITkDSoaIkt~%;Bh0+@?Afz% zv)Q}{pkZKQt1i)++GN ycj~=+2!x-_6g@Upja0oOT>%d!O}=~gE@`dXM6^OgKNx_P z@kGm-o}>?CEzH)fTYG}){{8#?3c)i#q48911tCNUK!KUH8BAF^scTs@NUB)s;xWwR z%l9@qm0hbQQx@$yR4`ys^Y@H~N<9Lv~&A~iNY4&Sv z)hBPYtt1D5tbr*M3Tr@Y>-*v$2Z(>!S5l}?{QoG#IvB@sdIJ2%z6JcqCy{m4zfW!c l^oJnp?SJbge(MANKLGgW6Oj(y!CC+S002ovPDHLkV1hX!DhdDq From 3c9ce999a0e8740e3cc28d70479f2ad5c3415e0f Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Mon, 20 Feb 2017 10:48:11 -0800 Subject: [PATCH 33/77] Changelog for #1134 --- changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.txt b/changelog.txt index 69b73d6b..3cd4f811 100644 --- a/changelog.txt +++ b/changelog.txt @@ -28,6 +28,7 @@ OPENSEADRAGON CHANGELOG * Fixed an issue causing overlays to be mis-positioned in some circumstances (#1119) * Fixed: ImageTileSource would sometimes produce a double image (#1123) * Fixed: console.debug caused exceptions on IE10 (#1129) +* Better compression for our UI images (#1134) 2.2.1: From 726bb62a2cc39f014cf84ee95bd7e7e065d6d107 Mon Sep 17 00:00:00 2001 From: Hendrik Lammers Date: Mon, 20 Feb 2017 20:38:00 +0100 Subject: [PATCH 34/77] Add buttons without icons --- images/button_grouphover.png | Bin 0 -> 1506 bytes images/button_hover.png | Bin 0 -> 1827 bytes images/button_pressed.png | Bin 0 -> 1895 bytes images/button_rest.png | Bin 0 -> 1066 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100755 images/button_grouphover.png create mode 100755 images/button_hover.png create mode 100755 images/button_pressed.png create mode 100755 images/button_rest.png diff --git a/images/button_grouphover.png b/images/button_grouphover.png new file mode 100755 index 0000000000000000000000000000000000000000..9db590ea2adb845fc875b2e3a1fc45ad2a5fc8c8 GIT binary patch literal 1506 zcmV<81s(c{P);M1%f1T;mr?<=Ha+c?L;^&`#KKSXUpPrTg1t>37V40yV4#or#e*E#rTU>{zSFhgW zP$<;V_kB_-7K@ZjCifmZc<{GZUw!qH4?q0yFcD>y%ups6Gl(rALXSQ6ShE{$xZ$3L z4IAEUSr)+w;$R3BLI_e&sZ@%#ZQJ(oyYIgH{>LAGypM=dPzK6LpkgVIxCoH&>eZ_k zckI~lb%x-<7(}_DLY?#9Fcd43${X2YXY(jFqV|dAZymF zxw%c7HZRz=O@%^%^7%Z&C?Fj~fd=BgbsUFcu^3gaUVU7jK7BGj{P4q8mEbx=DU8XL z@Q*+KI2Mk)6Ap(Ng6&rW8$*XuVC+!Mnl%YAtZv=9+mkZACHM@hS z2OvgA^n2>s1jkbbclp>7t1z)_*|KeF$?J7UcSbL0p*nTy{GT6yB;+^K-&jcj7^Oh? zw+zFp3%N&4n>L+AMAe`ukE0b(VVRtH?z!iBVtTr2346|5Q7cD3SHZtiK>Qqbxj};l zZHEmT)?I^f)HIo#aay--J&s*b^X(M@!+r`PAN;N*$hKUvh08y}xkZ++0pj2q=e8~H zS^883E;nx6nDb{S5k(Y?a>gMov}x*sr1g{WxUd|DLLrCj0tRD7eGP#NX zlgERK~Xvi?Ezli)#YZBFEZ|(Y0Lkw1Q`Z@t^{#@0RAxn{Vua;K6yyt~A&cOh0YhxN#qx-=S?KSl+qXfz86c z#X;7OYu~;-KSVXk%M!bY=h5e%e@<}y8?3JNL{tvNp^S9N(_w@rXEy?G(-G0$bzLs! zsx4fSIBM0ZMJG<2V3?K1k01Yth|VyK+Hk4dQ7~lcQK-W4y?gi088Bc#@ZfYh%{g?@ zj&ShyfnNqKhRVy!--E+EMP<^JG?X*Llze)eJbCg2lCEsircI;!_3KB~s#Rkk)vwMg z20$MQTFTQ;Kg}!XJ-GV^5uJuApoF&L^UvjsufrkPc49>wMBA^6Xxg=FS5-v==~Kt| zxu>Dy2R#TIDSGk67dhu%LVNj9f|N5zsVl}kaLN8RA~!-c9LH&dy~rJ~ec{xpQ>jar zEaC28jaGiW5;Oo=FRloci$0e)vuV=FYz+Rv^Yd625E!+2`^i&s$9?*jGbH$r+&xrs2seKkIE7AhWz3`Ra^#=ifM|V4z=Pu#lUIk zh#Vv#<&%B*`3jhEB07*qo IM6N<$g437j#Q*>R literal 0 HcmV?d00001 diff --git a/images/button_hover.png b/images/button_hover.png new file mode 100755 index 0000000000000000000000000000000000000000..645c241b9fd4ceb3b2dc44ad9dc81c323ccdf803 GIT binary patch literal 1827 zcmV+;2i*9HP)Kn2s5j9y2q;GEZPKnIyKmyRNg-y0dZ~ zy?I(F=~JzDpuhQTH-vEJRrEXfjDOJ@iahXr_?mMvTyT9>WGIJlNQcP%n>_5X4l~sG zp`_?xN+?e-;B9Yv+sGT<@P-X(nhIkK?cTlnQ}$|$f$GZk>Wr-?AwirNc#$c8CDSsL4$;ZlOlku0Eh{$nAs8-ER2B}NEvOB z8m25k*GMsYtP{?xZ*O?|)1SV>rPJ|3%BO^)WYqTU+n*5~yCv=(m(nOLNu>m%!301M zGyq};{cl-X@v#gmh{(cPW`Gq9dXm7ThI+?Aa})dHEnBuc-pSkzAoLExL8{=jmaevn zLwAPBp#?S*u?PYovGV4)=73nSu?`^sFbDuMF);%YBnA>BhyjqvIO{Ciq}3Lc`ED2l z8`c4cyohv&)!rtNW!YHJTnKEVDY2MZUQhu1cqk~Mm9G$p`Tu8kQbLMmN@SL0Wl05E z&sB#+Xf+vHT3TX}^hKO3D@mG^lsKbO1l`jpaUz$K&~!Q-6s-7AD5zGewbUo#5z`IW zWI~c)oJmO{nHWSelS@|i-5=X4bS~JT@u^d%4x9`}(#@rwG#yP+)0xQ_KrmBW%EZ3@ zSlVbb^0P2|3T5n_ciwr^txw+2dEs1tKG|;t35HYvDFF%uAPEpyt^6wD!hjP2MqnO&h{*l|dTQ}R~I1LD>0aOK0 zaovGcUfM}fdCK!2cd9n2 zvoLc)Tpftee+Q-l33d`TA~2jtZ1Lc{?7r(CWBZz|_AagUegI9MO3#rF$rK+&>h*e4 z22tnY`rOv1J-HokjM7L$z*JYH;H21rGQm1dOAL?%X$jR)iyN!5{np=BA3WJy-qY*# zt_4tcEIK;59Urfj3_Fk$I-DAD>d*I#v06uCPut$B42+mp2Iat^9D)EQNJEGN22We_ z!~4VIAN_TBq`uhuTaqMKdXbi+Gn`7{9(ZW~TXK{gHKo+Fd#K+&H7Z{E;g>E=y?RG7 z`lwM|wkd%vKoSs&alkUG|7@46A8VK!wAL3h^U2(EvXpyP^jc&nzYliAj;f<3 zrJRZ5_@zRKCo=Qwqt@$atjw~p#O98JNQ^PZn0cS;Hv%~62XFiC6Di)1ul1-BIATvZ zN6AUe0jMx@>Ztoc5>Gcr@8KU+iW8DvD0Du;*UhmV-e1<{sZ6O!f_F; RjBo$|002ovPDHLkV1lbmc`X0{ literal 0 HcmV?d00001 diff --git a/images/button_pressed.png b/images/button_pressed.png new file mode 100755 index 0000000000000000000000000000000000000000..d5b1d7d0c94a08de3cc8a851523620f88df16db1 GIT binary patch literal 1895 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 literal 0 HcmV?d00001 From 68f1efb7d2e7963b95c87f3fff737baaf64f297a Mon Sep 17 00:00:00 2001 From: Hendrik Lammers Date: Mon, 20 Feb 2017 20:41:14 +0100 Subject: [PATCH 35/77] Add psd with button source Can be used to create new buttons in the original design, for example for custom plugins that need a button. --- psd/button.psd | Bin 0 -> 86539 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100755 psd/button.psd diff --git a/psd/button.psd b/psd/button.psd new file mode 100755 index 0000000000000000000000000000000000000000..d1574b81b265cdd269483536d1c0c23ec0f9f149 GIT binary patch literal 86539 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 T59O8URveLSpnC(|t3~%e9&zTX literal 0 HcmV?d00001 From 2515efa41407cfbb0c08ed9adc1159b5d2897065 Mon Sep 17 00:00:00 2001 From: Daniel Berthereau Date: Mon, 13 Mar 2017 00:00:00 +0100 Subject: [PATCH 36/77] Typo. --- src/zoomifytilesource.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/zoomifytilesource.js b/src/zoomifytilesource.js index ad6aee52..a9f44ac2 100644 --- a/src/zoomifytilesource.js +++ b/src/zoomifytilesource.js @@ -18,7 +18,7 @@ * tilesUrl: "/test/data/zoomify/" * } * - * The tileSize is currently hardcoded to 256 (the usual Zoomify default). The tileUrl must the the path to the image _directory_. + * The tileSize is currently hardcoded to 256 (the usual Zoomify default). The tileUrl must the path to the image _directory_. * * 2) Loading image metadata from xml file: (CURRENTLY NOT SUPPORTED) * From e6ae1ac4e168b5d3ff86d425ca8ffa05589f282e Mon Sep 17 00:00:00 2001 From: Daniel Berthereau Date: Mon, 13 Mar 2017 00:00:00 +0100 Subject: [PATCH 37/77] Typo. --- src/tilesource.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tilesource.js b/src/tilesource.js index f826ab48..135053de 100644 --- a/src/tilesource.js +++ b/src/tilesource.js @@ -318,7 +318,7 @@ $.TileSource.prototype = { /** * @function - * @param {Number} level + * @param {Rect} rect */ getClosestLevel: function( rect ) { var i, From f3198929b08f59387242da04fe9efc8533d797e4 Mon Sep 17 00:00:00 2001 From: Daniel Berthereau Date: Mon, 13 Mar 2017 00:00:00 +0100 Subject: [PATCH 38/77] Added a demo file for the Zoomify format. --- test/demo/zoomify.html | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 test/demo/zoomify.html diff --git a/test/demo/zoomify.html b/test/demo/zoomify.html new file mode 100644 index 00000000..f4ba031e --- /dev/null +++ b/test/demo/zoomify.html @@ -0,0 +1,38 @@ + + + + OpenSeadragon Zoomify Demo + + + + + +
+ Simple demo page to show a default OpenSeadragon viewer with a Zoomify tile source. +
+
+ + + From d5031835daf7a18c406d19f49676371755c69692 Mon Sep 17 00:00:00 2001 From: kinto Date: Tue, 14 Mar 2017 16:08:52 +0100 Subject: [PATCH 39/77] manage preventDefaultAction flag inside the canvas-click viewer event. Trigger the canvas-click event before default click zoom happens on the viewer --- src/viewer.js | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/src/viewer.js b/src/viewer.js index cea725a3..69c4b133 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -2463,16 +2463,15 @@ function onCanvasClick( event ) { this.canvas.focus(); } - if ( !event.preventDefaultAction && this.viewport && event.quick ) { - gestureSettings = this.gestureSettingsByDeviceType( event.pointerType ); - if ( gestureSettings.clickToZoom ) { - this.viewport.zoomBy( - event.shift ? 1.0 / this.zoomPerClick : this.zoomPerClick, - this.viewport.pointFromPixel( event.position, true ) - ); - this.viewport.applyConstraints(); - } - } + var canvasClickEventArgs = { + tracker: event.eventSource, + position: event.position, + quick: event.quick, + shift: event.shift, + originalEvent: event.originalEvent, + preventDefaultAction: event.preventDefaultAction + }; + /** * Raised when a mouse press/release or touch/remove occurs on the {@link OpenSeadragon.Viewer#canvas} element. * @@ -2487,13 +2486,18 @@ function onCanvasClick( event ) { * @property {Object} originalEvent - The original DOM event. * @property {?Object} userData - Arbitrary subscriber-defined object. */ - this.raiseEvent( 'canvas-click', { - tracker: event.eventSource, - position: event.position, - quick: event.quick, - shift: event.shift, - originalEvent: event.originalEvent - }); + this.raiseEvent( 'canvas-click', canvasClickEventArgs); + + if ( !canvasClickEventArgs.preventDefaultAction && this.viewport && event.quick ) { + gestureSettings = this.gestureSettingsByDeviceType( event.pointerType ); + if ( gestureSettings.clickToZoom ) { + this.viewport.zoomBy( + event.shift ? 1.0 / this.zoomPerClick : this.zoomPerClick, + this.viewport.pointFromPixel( event.position, true ) + ); + this.viewport.applyConstraints(); + } + } } function onCanvasDblClick( event ) { From bc5e235822646b5da318f9307da11b4a54304d17 Mon Sep 17 00:00:00 2001 From: kinto Date: Tue, 14 Mar 2017 19:23:07 +0100 Subject: [PATCH 40/77] Add comment instructions for using preventDefaultAction parameter in canvas-click event --- src/viewer.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/viewer.js b/src/viewer.js index 69c4b133..d3e68534 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -2484,6 +2484,7 @@ function onCanvasClick( event ) { * @property {Boolean} quick - True only if the clickDistThreshold and clickTimeThreshold are both passed. Useful for differentiating between clicks and drags. * @property {Boolean} shift - True if the shift key was pressed during this event. * @property {Object} originalEvent - The original DOM event. + * @property {Boolean} preventDefaultAction - Set to true to prevent default click to zoom behaviour. Default: false. * @property {?Object} userData - Arbitrary subscriber-defined object. */ this.raiseEvent( 'canvas-click', canvasClickEventArgs); From 741745433d9c17b8b5541a14059545ccb5ac554a Mon Sep 17 00:00:00 2001 From: kinto Date: Wed, 15 Mar 2017 09:51:44 +0100 Subject: [PATCH 41/77] manage preventDefaultAction flag inside the canvas-drag viewer event. Trigger the canvas-drag event before default drag happens on the viewer --- src/viewer.js | 48 +++++++++++++++++++++++++----------------------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/src/viewer.js b/src/viewer.js index cea725a3..8f6d160d 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -2532,20 +2532,16 @@ function onCanvasDblClick( event ) { function onCanvasDrag( event ) { var gestureSettings; - - if ( !event.preventDefaultAction && this.viewport ) { - gestureSettings = this.gestureSettingsByDeviceType( event.pointerType ); - if( !this.panHorizontal ){ - event.delta.x = 0; - } - if( !this.panVertical ){ - event.delta.y = 0; - } - this.viewport.panBy( this.viewport.deltaPointsFromPixels( event.delta.negate() ), gestureSettings.flickEnabled ); - if( this.constrainDuringPan ){ - this.viewport.applyConstraints(); - } - } + var canvasDragEventArgs = { + tracker: event.eventSource, + position: event.position, + delta: event.delta, + speed: event.speed, + direction: event.direction, + shift: event.shift, + originalEvent: event.originalEvent, + preventDefaultAction: event.preventDefaultAction + }; /** * Raised when a mouse or touch drag operation occurs on the {@link OpenSeadragon.Viewer#canvas} element. * @@ -2560,17 +2556,23 @@ function onCanvasDrag( event ) { * @property {Number} direction - Current computed direction, expressed as an angle counterclockwise relative to the positive X axis (-pi to pi, in radians). Only valid if speed > 0. * @property {Boolean} shift - True if the shift key was pressed during this event. * @property {Object} originalEvent - The original DOM event. + * @property {Boolean} preventDefaultAction - Set to true to prevent default drag behaviour. Default: false. * @property {?Object} userData - Arbitrary subscriber-defined object. */ - this.raiseEvent( 'canvas-drag', { - tracker: event.eventSource, - position: event.position, - delta: event.delta, - speed: event.speed, - direction: event.direction, - shift: event.shift, - originalEvent: event.originalEvent - }); + this.raiseEvent( 'canvas-drag', canvasDragEventArgs); + if ( !canvasDragEventArgs.preventDefaultAction && this.viewport ) { + gestureSettings = this.gestureSettingsByDeviceType( event.pointerType ); + if( !this.panHorizontal ){ + event.delta.x = 0; + } + if( !this.panVertical ){ + event.delta.y = 0; + } + this.viewport.panBy( this.viewport.deltaPointsFromPixels( event.delta.negate() ), gestureSettings.flickEnabled ); + if( this.constrainDuringPan ){ + this.viewport.applyConstraints(); + } + } } function onCanvasDragEnd( event ) { From c6add463d76ca1f67468860fb768cfbb5ae57723 Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Wed, 15 Mar 2017 09:34:44 -0700 Subject: [PATCH 42/77] Changelog for #1148 --- changelog.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/changelog.txt b/changelog.txt index 3cd4f811..1772c4e9 100644 --- a/changelog.txt +++ b/changelog.txt @@ -4,6 +4,9 @@ OPENSEADRAGON CHANGELOG 2.2.2: (in progress) * BREAKING CHANGE: Tile.distance has been removed (#1027) +* BREAKING CHANGE: Viewer's canvas-click event is now fired before it initiates the zoom (#1148) +* Optimization: Use the squared distance when comparing tiles (#1027) +* You can now prevent canvas-click events from zooming on a per-event basis (#1148) * You can now set the rotation of individual tiled images (#1006) * Fixed CORS bug in IE 10 (#967) * Added support for commonjs (#984) @@ -15,7 +18,6 @@ OPENSEADRAGON CHANGELOG * Fixed: Initial tile load wasn't happening in parallel (#1014) * Added Zoomify tile source (#863) * Fixed problem with "sparse image" DZI files (#995) -* Optimization: Use the squared distance when comparing tiles (#1027) * Fix IndexSizeError on IE and Edge that occurred under certain circumstances (e.g. multi-image with transparency) (#1035) * ImageTileSource now works in IE8 (#1041) * LegacyTileSource now allows any image URLs regardless of type (#1056) From a8dba2a494adc11b49ed9302a39745b829114f1f Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 12 Apr 2017 16:12:47 -0600 Subject: [PATCH 43/77] Documents the return type for imageToViewportRectangle --- src/viewport.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/viewport.js b/src/viewport.js index 7d5418bd..d34ab539 100644 --- a/src/viewport.js +++ b/src/viewport.js @@ -1208,6 +1208,7 @@ $.Viewport.prototype = { * in image coordinate system. * @param {Number} [pixelWidth] the width in pixel of the rectangle. * @param {Number} [pixelHeight] the height in pixel of the rectangle. + * @returns {OpenSeadragon.Rect} This image's bounds in viewport coordinates */ imageToViewportRectangle: function(imageX, imageY, pixelWidth, pixelHeight) { var rect = imageX; From be382a47b672a428234d817bf6872964a331e7e2 Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Fri, 21 Apr 2017 09:55:23 -0700 Subject: [PATCH 44/77] Changelog for #1149 --- changelog.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/changelog.txt b/changelog.txt index 1772c4e9..f5d43f58 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,12 +1,14 @@ OPENSEADRAGON CHANGELOG ======================= -2.2.2: (in progress) +2.3.0: (in progress) * BREAKING CHANGE: Tile.distance has been removed (#1027) * BREAKING CHANGE: Viewer's canvas-click event is now fired before it initiates the zoom (#1148) +* BREAKING CHANGE: Viewer's canvas-drag event is now fired before it pans (#1149) * Optimization: Use the squared distance when comparing tiles (#1027) * You can now prevent canvas-click events from zooming on a per-event basis (#1148) +* You can now prevent canvas-drag events from panning on a per-event basis (#1149) * You can now set the rotation of individual tiled images (#1006) * Fixed CORS bug in IE 10 (#967) * Added support for commonjs (#984) From ab6cdf102e0154701d4b04ec2597076baa175b5b Mon Sep 17 00:00:00 2001 From: jonw-cogapp Date: Fri, 21 Apr 2017 18:19:11 +0100 Subject: [PATCH 45/77] prevent unnecessary panBy on canvas-drag in viewer --- src/viewer.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/viewer.js b/src/viewer.js index 7e9f36c3..7a75d6a5 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -2573,7 +2573,9 @@ function onCanvasDrag( event ) { if( !this.panVertical ){ event.delta.y = 0; } - this.viewport.panBy( this.viewport.deltaPointsFromPixels( event.delta.negate() ), gestureSettings.flickEnabled ); + if( event.delta.x !== 0 || event.delta.y !== 0){ + this.viewport.panBy( this.viewport.deltaPointsFromPixels( event.delta.negate() ), gestureSettings.flickEnabled ); + } if( this.constrainDuringPan ){ this.viewport.applyConstraints(); } From bb229c24d323aaee5a2a9d569198eee928945250 Mon Sep 17 00:00:00 2001 From: superbland Date: Mon, 24 Apr 2017 22:47:40 +0100 Subject: [PATCH 46/77] Only apply constraints during an actual drag --- src/viewer.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/viewer.js b/src/viewer.js index 7a75d6a5..ec4c8242 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -2573,11 +2573,11 @@ function onCanvasDrag( event ) { if( !this.panVertical ){ event.delta.y = 0; } - if( event.delta.x !== 0 || event.delta.y !== 0){ + if( event.delta.x !== 0 || event.delta.y !== 0 ){ this.viewport.panBy( this.viewport.deltaPointsFromPixels( event.delta.negate() ), gestureSettings.flickEnabled ); - } - if( this.constrainDuringPan ){ - this.viewport.applyConstraints(); + if( this.constrainDuringPan ){ + this.viewport.applyConstraints(); + } } } } From 85e60b759bea564ef1f25e76f6554d2eb5be3e9d Mon Sep 17 00:00:00 2001 From: Robert Saric Date: Tue, 25 Apr 2017 21:07:37 +0200 Subject: [PATCH 47/77] fix for #1172 (ReferenceStrip not freeing resources) --- src/referencestrip.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/referencestrip.js b/src/referencestrip.js index 5559f85a..69fa8e29 100644 --- a/src/referencestrip.js +++ b/src/referencestrip.js @@ -178,6 +178,7 @@ $.ReferenceStrip = function ( options ) { this.panelWidth = ( viewerSize.x * this.sizeRatio ) + 8; this.panelHeight = ( viewerSize.y * this.sizeRatio ) + 8; this.panels = []; + this.miniViewers = {}; /*jshint loopfunc:true*/ for ( i = 0; i < viewer.tileSources.length; i++ ) { @@ -293,6 +294,12 @@ $.extend( $.ReferenceStrip.prototype, $.EventSource.prototype, $.Viewer.prototyp // Overrides Viewer.destroy destroy: function() { + if (this.miniViewers) { + for (var key in this.miniViewers) { + this.miniViewers[key].destroy(); + } + } + if (this.element) { this.element.parentNode.removeChild(this.element); } @@ -463,6 +470,8 @@ function loadPanels( strip, viewerSize, scroll ) { miniViewer.displayRegion ); + strip.miniViewers[element.id] = miniViewer; + element.activePanel = true; } } From b941864ac59b165d20bf21447b6dc6b151712a22 Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Wed, 26 Apr 2017 09:40:15 -0700 Subject: [PATCH 48/77] Changelog for #1175 --- changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.txt b/changelog.txt index f5d43f58..6a8f789f 100644 --- a/changelog.txt +++ b/changelog.txt @@ -33,6 +33,7 @@ OPENSEADRAGON CHANGELOG * Fixed: ImageTileSource would sometimes produce a double image (#1123) * Fixed: console.debug caused exceptions on IE10 (#1129) * Better compression for our UI images (#1134) +* Fixed: the reference strip would leak memory when opening new sets of images (#1175) 2.2.1: From ddab768696b0956fddb22c42e57c76ff2a5a08bb Mon Sep 17 00:00:00 2001 From: Sean Nichols Date: Fri, 21 Oct 2016 17:28:12 -0400 Subject: [PATCH 49/77] Add options for loading tiles via AJAX and custom AJAX request headers. --- src/imageloader.js | 140 +++++++++++++++++++++++++---------- src/openseadragon.js | 36 ++++++++- src/tile.js | 27 ++++++- src/tilecache.js | 16 ++-- src/tiledimage.js | 60 +++++++++++++-- src/tilesource.js | 19 ++++- src/viewer.js | 27 +++++++ test/data/testpattern.blob | Bin 0 -> 520078 bytes test/demo/basic.html | 3 +- test/demo/customheaders.html | 76 +++++++++++++++++++ test/modules/tilecache.js | 5 ++ 11 files changed, 349 insertions(+), 60 deletions(-) create mode 100644 test/data/testpattern.blob create mode 100644 test/demo/customheaders.html diff --git a/src/imageloader.js b/src/imageloader.js index cd654722..60f3ba2a 100644 --- a/src/imageloader.js +++ b/src/imageloader.js @@ -32,15 +32,26 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -(function( $ ){ +(function($){ -// private class -function ImageJob ( options ) { +/** + * @private + * @class ImageJob + * @classdesc Handles downloading of a single image. + * @param {Object} options - Options for this ImageJob. + * @param {String} [options.src] - URL of image to download. + * @param {String} [options.loadWithAjax] - Whether to load this image with AJAX. + * @param {String} [options.headers] - Headers to add to the image request. + * @param {String} [options.crossOriginPolicy] - CORS policy to use for downloads + * @param {Function} [options.callback] - Called once image has been downloaded. + * @param {Function} [options.abort] - Called when this image job is aborted. + */ +function ImageJob (options) { - $.extend( true, this, { - timeout: $.DEFAULT_SETTINGS.timeout, - jobId: null - }, options ); + $.extend(true, this, { + timeout: $.DEFAULT_SETTINGS.timeout, + jobId: null + }, options); /** * Image object which will contain downloaded image. @@ -52,42 +63,86 @@ function ImageJob ( options ) { ImageJob.prototype = { errorMsg: null, + + /** + * Starts the image job. + * @method + */ start: function(){ - var _this = this; + var self = this; + var selfAbort = this.abort; this.image = new Image(); - if ( this.crossOriginPolicy !== false ) { - this.image.crossOrigin = this.crossOriginPolicy; - } - this.image.onload = function(){ - _this.finish( true ); + self.finish(true); }; - this.image.onabort = this.image.onerror = function(){ - _this.errorMsg = "Image load aborted"; - _this.finish( false ); + this.image.onabort = this.image.onerror = function() { + self.errorMsg = "Image load aborted"; + self.finish(false); }; - this.jobId = window.setTimeout( function(){ - _this.errorMsg = "Image load exceeded timeout"; - _this.finish( false ); + this.jobId = window.setTimeout(function(){ + self.errorMsg = "Image load exceeded timeout"; + self.finish(false); }, this.timeout); - this.image.src = this.src; + // Load the tile with an AJAX request if the loadWithAjax option is + // set. Otherwise load the image by setting the source proprety of the image object. + if (this.loadWithAjax) { + this.request = $.makeAjaxRequest({ + url: this.src, + withCredentials: this.ajaxWithCredentials, + headers: this.headers, + responseType: "arraybuffer", + success: function(request) { + // Make the raw data into a blob + var blb = new window.Blob([request.response]); + // If the blob is empty for some reason consider the image load a failure. + if (blb.size === 0) { + self.errorMsg = "Empty image response."; + self.finish(false); + } + // Create a URL for the blob data and make it the source of the image object. + // This will still trigger Image.onload to indicate a successful tile load. + var url = (window.URL || window.webkitURL).createObjectURL(blb); + self.image.src = url; + }, + error: function(request) { + self.errorMsg = "Image load aborted - XHR error"; + self.finish(false); + } + }); + + // Provide a function to properly abort the request. + this.abort = function() { + self.request.abort(); + + // Call the existing abort function if available + if (typeof selfAbort === "function") { + selfAbort(); + } + }; + } else { + if (this.crossOriginPolicy !== false) { + this.image.crossOrigin = this.crossOriginPolicy; + } + + this.image.src = this.src; + } }, - finish: function( successful ) { + finish: function(successful) { this.image.onload = this.image.onerror = this.image.onabort = null; if (!successful) { this.image = null; } - if ( this.jobId ) { - window.clearTimeout( this.jobId ); + if (this.jobId) { + window.clearTimeout(this.jobId); } - this.callback( this ); + this.callback(this); } }; @@ -100,13 +155,13 @@ ImageJob.prototype = { * @param {Object} options - Options for this ImageLoader. * @param {Number} [options.jobLimit] - The number of concurrent image requests. See imageLoaderLimit in {@link OpenSeadragon.Options} for details. */ -$.ImageLoader = function( options ) { +$.ImageLoader = function(options) { - $.extend( true, this, { + $.extend(true, this, { jobLimit: $.DEFAULT_SETTINGS.imageLoaderLimit, jobQueue: [], jobsInProgress: 0 - }, options ); + }, options); }; @@ -116,22 +171,31 @@ $.ImageLoader.prototype = { /** * Add an unloaded image to the loader queue. * @method - * @param {String} src - URL of image to download. - * @param {String} crossOriginPolicy - CORS policy to use for downloads - * @param {Function} callback - Called once image has been downloaded. + * @param {Object} options - Options for this job. + * @param {String} [options.src] - URL of image to download. + * @param {String} [options.loadWithAjax] - Whether to load this image with AJAX. + * @param {String} [options.headers] - Headers to add to the image request. + * @param {String|Boolean} [options.crossOriginPolicy] - CORS policy to use for downloads + * @param {Boolean} [options.ajaxWithCredentials] - Whether to set withCredentials on AJAX + * requests. + * @param {Function} [options.callback] - Called once image has been downloaded. + * @param {Function} [options.abort] - Called when this image job is aborted. */ - addJob: function( options ) { + addJob: function(options) { var _this = this, - complete = function( job ) { - completeJob( _this, job, options.callback ); + complete = function(job) { + completeJob(_this, job, options.callback); }, jobOptions = { src: options.src, + loadWithAjax: options.loadWithAjax, + headers: options.loadWithAjax ? options.headers : null, crossOriginPolicy: options.crossOriginPolicy, + ajaxWithCredentials: options.ajaxWithCredentials, callback: complete, abort: options.abort }, - newJob = new ImageJob( jobOptions ); + newJob = new ImageJob(jobOptions); if ( !this.jobLimit || this.jobsInProgress < this.jobLimit ) { newJob.start(); @@ -166,18 +230,18 @@ $.ImageLoader.prototype = { * @param job - The ImageJob that has completed. * @param callback - Called once cleanup is finished. */ -function completeJob( loader, job, callback ) { +function completeJob(loader, job, callback) { var nextJob; loader.jobsInProgress--; - if ( (!loader.jobLimit || loader.jobsInProgress < loader.jobLimit) && loader.jobQueue.length > 0) { + if ((!loader.jobLimit || loader.jobsInProgress < loader.jobLimit) && loader.jobQueue.length > 0) { nextJob = loader.jobQueue.shift(); nextJob.start(); loader.jobsInProgress++; } - callback( job.image, job.errorMsg ); + callback(job.image, job.errorMsg, job.request); } -}( OpenSeadragon )); +}(OpenSeadragon)); diff --git a/src/openseadragon.js b/src/openseadragon.js index a470de14..59f2ffac 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -584,9 +584,16 @@ * not use CORS, and the canvas will be tainted. * * @property {Boolean} [ajaxWithCredentials=false] - * Whether to set the withCredentials XHR flag for AJAX requests (when loading tile sources). + * Whether to set the withCredentials XHR flag for AJAX requests. * Note that this can be overridden at the {@link OpenSeadragon.TileSource} level. * + * @property {Boolean} [loadTilesWithAjax=false] + * Whether to load tile data using AJAX requests. + * Note that this can be overridden at the {@link OpenSeadragon.TileSource} level. + * + * @property {Object} [ajaxRequestHeaders={}] + * A set of headers to include when making AJAX requests for tile sources or tiles. + * */ /** @@ -1005,6 +1012,8 @@ function OpenSeadragon( options ){ initialPage: 0, crossOriginPolicy: false, ajaxWithCredentials: false, + loadTilesWithAjax: false, + ajaxRequestHeaders: {}, //PAN AND ZOOM SETTINGS AND CONSTRAINTS panHorizontal: true, @@ -2120,11 +2129,16 @@ function OpenSeadragon( options ){ * @param {String} options.url - the url to request * @param {Function} options.success - a function to call on a successful response * @param {Function} options.error - a function to call on when an error occurs + * @param {Object} options.headers - headers to add to the AJAX request + * @param {String} options.responseType - the response type of the the AJAX request * @param {Boolean} [options.withCredentials=false] - whether to set the XHR's withCredentials * @throws {Error} + * @returns {XMLHttpRequest} */ makeAjaxRequest: function( url, onSuccess, onError ) { var withCredentials; + var headers; + var responseType; // Note that our preferred API is that you pass in a single object; the named // arguments are for legacy support. @@ -2132,6 +2146,8 @@ function OpenSeadragon( options ){ onSuccess = url.success; onError = url.error; withCredentials = url.withCredentials; + headers = url.headers; + responseType = url.responseType || null; url = url.url; } @@ -2147,9 +2163,9 @@ function OpenSeadragon( options ){ if ( request.readyState == 4 ) { request.onreadystatechange = function(){}; - // With protocols other than http/https, the status is 200 + // With protocols other than http/https, the status is in [200, 300) // on Firefox and 0 on other browsers - if ( request.status === 200 || + if ( (request.status >= 200 && request.status < 300) || ( request.status === 0 && protocol !== "http:" && protocol !== "https:" )) { @@ -2167,11 +2183,21 @@ function OpenSeadragon( options ){ try { request.open( "GET", url, true ); + if (responseType) { + request.responseType = responseType; + } + + if (headers) { + Object.keys(headers).forEach(function (headerName) { + request.setRequestHeader(headerName, headers[headerName]); + }); + } + if (withCredentials) { request.withCredentials = true; } - request.send( null ); + request.send(null); } catch (e) { var msg = e.message; @@ -2231,6 +2257,8 @@ function OpenSeadragon( options ){ } } } + + return request; }, /** diff --git a/src/tile.js b/src/tile.js index 72776aac..2dd2b95e 100644 --- a/src/tile.js +++ b/src/tile.js @@ -47,8 +47,10 @@ * @param {String} url The URL of this tile's image. * @param {CanvasRenderingContext2D} context2D The context2D of this tile if it * is provided directly by the tile source. + * @param {Boolean} loadWithAjax Whether this tile image should be loaded with an AJAX request . + * @param {Object} headers The headers to send with this tile's AJAX request (if applicable). */ -$.Tile = function(level, x, y, bounds, exists, url, context2D) { +$.Tile = function(level, x, y, bounds, exists, url, context2D, loadWithAjax, headers) { /** * The zoom level this tile belongs to. * @member {Number} level @@ -91,6 +93,29 @@ $.Tile = function(level, x, y, bounds, exists, url, context2D) { * @memberOf OpenSeadragon.Tile# */ this.context2D = context2D; + /** + * Whether to load this tile's image with an AJAX request. + * @member {Boolean} loadWithAjax + * @memberof OpenSeadragon.Tile# + */ + this.loadWithAjax = loadWithAjax; + /** + * The headers to be used in requesting this tile's image. + * Only used if loadWithAjax is set to true. + * @member {Object} headers + * @memberof OpenSeadragon.Tile# + */ + this.headers = headers; + /** + * The unique cache key for this tile. + * @member {String} cacheKey + * @memberof OpenSeadragon.Tile# + */ + if (this.headers) { + this.cacheKey = this.url + "+" + JSON.stringify(this.headers); + } else { + this.cacheKey = this.url; + } /** * Is this tile loaded? * @member {Boolean} loaded diff --git a/src/tilecache.js b/src/tilecache.js index ee3a4662..6300427f 100644 --- a/src/tilecache.js +++ b/src/tilecache.js @@ -149,16 +149,16 @@ $.TileCache.prototype = { cacheTile: function( options ) { $.console.assert( options, "[TileCache.cacheTile] options is required" ); $.console.assert( options.tile, "[TileCache.cacheTile] options.tile is required" ); - $.console.assert( options.tile.url, "[TileCache.cacheTile] options.tile.url is required" ); + $.console.assert( options.tile.cacheKey, "[TileCache.cacheTile] options.tile.cacheKey is required" ); $.console.assert( options.tiledImage, "[TileCache.cacheTile] options.tiledImage is required" ); var cutoff = options.cutoff || 0; var insertionIndex = this._tilesLoaded.length; - var imageRecord = this._imagesLoaded[options.tile.url]; + var imageRecord = this._imagesLoaded[options.tile.cacheKey]; if (!imageRecord) { $.console.assert( options.image, "[TileCache.cacheTile] options.image is required to create an ImageRecord" ); - imageRecord = this._imagesLoaded[options.tile.url] = new ImageRecord({ + imageRecord = this._imagesLoaded[options.tile.cacheKey] = new ImageRecord({ image: options.image }); @@ -232,9 +232,9 @@ $.TileCache.prototype = { }, // private - getImageRecord: function(url) { - $.console.assert(url, '[TileCache.getImageRecord] url is required'); - return this._imagesLoaded[url]; + getImageRecord: function(cacheKey) { + $.console.assert(cacheKey, '[TileCache.getImageRecord] cacheKey is required'); + return this._imagesLoaded[cacheKey]; }, // private @@ -246,11 +246,11 @@ $.TileCache.prototype = { tile.unload(); tile.cacheImageRecord = null; - var imageRecord = this._imagesLoaded[tile.url]; + var imageRecord = this._imagesLoaded[tile.cacheKey]; imageRecord.removeTile(tile); if (!imageRecord.getTileCount()) { imageRecord.destroy(); - delete this._imagesLoaded[tile.url]; + delete this._imagesLoaded[tile.cacheKey]; this._imagesLoadedCount--; } diff --git a/src/tiledimage.js b/src/tiledimage.js index 70859ec0..21b9c05c 100644 --- a/src/tiledimage.js +++ b/src/tiledimage.js @@ -75,6 +75,13 @@ * @param {Boolean} [options.debugMode] - See {@link OpenSeadragon.Options}. * @param {String|CanvasGradient|CanvasPattern|Function} [options.placeholderFillStyle] - See {@link OpenSeadragon.Options}. * @param {String|Boolean} [options.crossOriginPolicy] - See {@link OpenSeadragon.Options}. + * @param {Boolean} [options.ajaxWithCredentials] - See {@link OpenSeadragon.Options}. + * @param {Boolean} [options.loadTilesWithAjax] + * Whether to load tile data using AJAX requests. + * Defaults to the setting in {@link OpenSeadragon.Options}. + * @param {Object} [options.ajaxRequestHeaders={}] + * A set of headers to include when making tile AJAX requests. + * Note that these headers will be merged over any headers specified in {@link OpenSeadragon.Options}. */ $.TiledImage = function( options ) { var _this = this; @@ -161,6 +168,7 @@ $.TiledImage = function( options ) { iOSDevice: $.DEFAULT_SETTINGS.iOSDevice, debugMode: $.DEFAULT_SETTINGS.debugMode, crossOriginPolicy: $.DEFAULT_SETTINGS.crossOriginPolicy, + ajaxWithCredentials: $.DEFAULT_SETTINGS.ajaxWithCredentials, placeholderFillStyle: $.DEFAULT_SETTINGS.placeholderFillStyle, opacity: $.DEFAULT_SETTINGS.opacity, compositeOperation: $.DEFAULT_SETTINGS.compositeOperation @@ -1179,6 +1187,7 @@ function updateTile( tiledImage, haveDrawn, drawLevel, x, y, level, levelOpacity var tile = getTile( x, y, level, + tiledImage, tiledImage.source, tiledImage.tilesMatrix, currentTime, @@ -1237,7 +1246,7 @@ function updateTile( tiledImage, haveDrawn, drawLevel, x, y, level, levelOpacity if (tile.context2D) { setTileLoaded(tiledImage, tile); } else { - var imageRecord = tiledImage._tileCache.getImageRecord(tile.url); + var imageRecord = tiledImage._tileCache.getImageRecord(tile.cacheKey); if (imageRecord) { var image = imageRecord.getImage(); setTileLoaded(tiledImage, tile, image); @@ -1275,6 +1284,7 @@ function updateTile( tiledImage, haveDrawn, drawLevel, x, y, level, levelOpacity * @param {Number} x * @param {Number} y * @param {Number} level + * @param {OpenSeadragon.TiledImage} tiledImage * @param {OpenSeadragon.TileSource} tileSource * @param {Object} tilesMatrix - A '3d' dictionary [level][x][y] --> Tile. * @param {Number} time @@ -1283,12 +1293,23 @@ function updateTile( tiledImage, haveDrawn, drawLevel, x, y, level, levelOpacity * @param {Number} worldHeight * @returns {OpenSeadragon.Tile} */ -function getTile( x, y, level, tileSource, tilesMatrix, time, numTiles, worldWidth, worldHeight ) { +function getTile( + x, y, + level, + tiledImage, + tileSource, + tilesMatrix, + time, + numTiles, + worldWidth, + worldHeight +) { var xMod, yMod, bounds, exists, url, + headers, context2D, tile; @@ -1305,6 +1326,18 @@ function getTile( x, y, level, tileSource, tilesMatrix, time, numTiles, worldWid bounds = tileSource.getTileBounds( level, xMod, yMod ); exists = tileSource.tileExists( level, xMod, yMod ); url = tileSource.getTileUrl( level, xMod, yMod ); + + // Headers are only applicable if loadTilesWithAjax is set + if (tiledImage.loadTilesWithAjax) { + headers = tileSource.getTileHeaders( level, xMod, yMod ); + // Combine tile headers with global headers (if applicable) + if ($.isPlainObject(tiledImage.ajaxRequestHeaders)) { + headers = $.extend({}, tiledImage.ajaxRequestHeaders, headers); + } + } else { + headers = null; + } + context2D = tileSource.getContext2D ? tileSource.getContext2D(level, xMod, yMod) : undefined; @@ -1318,7 +1351,9 @@ function getTile( x, y, level, tileSource, tilesMatrix, time, numTiles, worldWid bounds, exists, url, - context2D + context2D, + tiledImage.loadTilesWithAjax, + headers ); } @@ -1340,9 +1375,12 @@ function loadTile( tiledImage, tile, time ) { tile.loading = true; tiledImage._imageLoader.addJob({ src: tile.url, + loadWithAjax: tile.loadWithAjax, + headers: tile.headers, crossOriginPolicy: tiledImage.crossOriginPolicy, - callback: function( image, errorMsg ){ - onTileLoad( tiledImage, tile, time, image, errorMsg ); + ajaxWithCredentials: tiledImage.ajaxWithCredentials, + callback: function( image, errorMsg, tileRequest ){ + onTileLoad( tiledImage, tile, time, image, errorMsg, tileRequest ); }, abort: function() { tile.loading = false; @@ -1359,8 +1397,9 @@ function loadTile( tiledImage, tile, time ) { * @param {Number} time * @param {Image} image * @param {String} errorMsg + * @param {XMLHttpRequest} tileRequest */ -function onTileLoad( tiledImage, tile, time, image, errorMsg ) { +function onTileLoad( tiledImage, tile, time, image, errorMsg, tileRequest ) { if ( !image ) { $.console.log( "Tile %s failed to load: %s - error: %s", tile, tile.url, errorMsg ); /** @@ -1373,8 +1412,15 @@ function onTileLoad( tiledImage, tile, time, image, errorMsg ) { * @property {OpenSeadragon.TiledImage} tiledImage - The tiled image the tile belongs to. * @property {number} time - The time in milliseconds when the tile load began. * @property {string} message - The error message. + * @property {XMLHttpRequest} tileRequest - The XMLHttpRequest used to load the tile if available. */ - tiledImage.viewer.raiseEvent("tile-load-failed", {tile: tile, tiledImage: tiledImage, time: time, message: errorMsg}); + tiledImage.viewer.raiseEvent("tile-load-failed", { + tile: tile, + tiledImage: tiledImage, + time: time, + message: errorMsg, + tileRequest: tileRequest + }); tile.loading = false; tile.exists = false; return; diff --git a/src/tilesource.js b/src/tilesource.js index 135053de..5f058fe9 100644 --- a/src/tilesource.js +++ b/src/tilesource.js @@ -65,6 +65,8 @@ * @param {Boolean} [options.ajaxWithCredentials] * If this TileSource needs to make an AJAX call, this specifies whether to set * the XHR's withCredentials (for accessing secure data). + * @param {Object} [options.ajaxRequestHeaders] + * A set of headers to include in AJAX requests. * @param {Number} [options.width] * Width of the source image at max resolution in pixels. * @param {Number} [options.height] @@ -475,6 +477,7 @@ $.TileSource.prototype = { $.makeAjaxRequest( { url: url, withCredentials: this.ajaxWithCredentials, + headers: this.ajaxRequestHeaders, success: function( xhr ) { var data = processResponse( xhr ); callback( data ); @@ -559,7 +562,7 @@ $.TileSource.prototype = { }, /** - * Responsible for retriving the url which will return an image for the + * Responsible for retrieving the url which will return an image for the * region specified by the given x, y, and level components. * This method is not implemented by this class other than to throw an Error * announcing you have to implement it. Because of the variety of tile @@ -575,6 +578,20 @@ $.TileSource.prototype = { throw new Error( "Method not implemented." ); }, + /** + * Responsible for retrieving the headers which will be attached to the image request for the + * region specified by the given x, y, and level components. + * This option is only relevant if {@link OpenSeadragon.Options}.loadTilesWithAjax is set to true. + * @function + * @param {Number} level + * @param {Number} x + * @param {Number} y + * @returns {Object} + */ + getTileHeaders: function( level, x, y ) { + return {}; + }, + /** * @function * @param {Number} level diff --git a/src/viewer.js b/src/viewer.js index ec4c8242..6117d572 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -1232,6 +1232,14 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, * @param {String} [options.compositeOperation] How the image is composited onto other images. * @param {String} [options.crossOriginPolicy] The crossOriginPolicy for this specific image, * overriding viewer.crossOriginPolicy. + * @param {Boolean} [options.ajaxWithCredentials] Whether to set withCredentials on tile AJAX + * @param {Boolean} [options.loadTilesWithAjax] + * Whether to load tile data using AJAX requests. + * Defaults to the setting in {@link OpenSeadragon.Options}. + * @param {Object} [options.ajaxRequestHeaders] + * A set of headers to include when making tile AJAX requests. + * Note that these headers will be merged over any headers specified in {@link OpenSeadragon.Options}. + * requests. * @param {Function} [options.success] A function that gets called when the image is * successfully added. It's passed the event object which contains a single property: * "item", the resulting TiledImage. @@ -1270,6 +1278,21 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, if (options.crossOriginPolicy === undefined) { options.crossOriginPolicy = options.tileSource.crossOriginPolicy !== undefined ? options.tileSource.crossOriginPolicy : this.crossOriginPolicy; } + if (options.ajaxWithCredentials === undefined) { + options.ajaxWithCredentials = this.ajaxWithCredentials; + } + if (options.loadTilesWithAjax === undefined) { + options.loadTilesWithAjax = this.loadTilesWithAjax; + } + if (options.ajaxRequestHeaders === undefined) { + options.ajaxRequestHeaders = this.ajaxRequestHeaders; + } else if ( + $.isPlainObject(options.ajaxRequestHeaders) && + $.isPlainObject(this.ajaxRequestHeaders) + ) { + options.ajaxRequestHeaders = $.extend({}, + this.ajaxRequestHeaders, options.ajaxRequestHeaders); + } var myQueueItem = { options: options @@ -1384,6 +1407,9 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, smoothTileEdgesMinZoom: _this.smoothTileEdgesMinZoom, iOSDevice: _this.iOSDevice, crossOriginPolicy: queueItem.options.crossOriginPolicy, + ajaxWithCredentials: queueItem.options.ajaxWithCredentials, + loadTilesWithAjax: queueItem.options.loadTilesWithAjax, + ajaxRequestHeaders: queueItem.options.ajaxRequestHeaders, debugMode: _this.debugMode }); @@ -2156,6 +2182,7 @@ function getTileSourceImplementation( viewer, tileSource, imgOptions, successCal crossOriginPolicy: imgOptions.crossOriginPolicy !== undefined ? imgOptions.crossOriginPolicy : viewer.crossOriginPolicy, ajaxWithCredentials: viewer.ajaxWithCredentials, + ajaxRequestHeaders: viewer.ajaxRequestHeaders, useCanvas: viewer.useCanvas, success: function( event ) { successCallback( event.tileSource ); diff --git a/test/data/testpattern.blob b/test/data/testpattern.blob new file mode 100644 index 0000000000000000000000000000000000000000..fe027d9118ac0aafa39ac9b68a41e6ccbb68258e GIT binary patch literal 520078 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

o| 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%0AKGo{WqVP@nq8m|eOpCgYb-u6@ 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�ijiW1nKC*;V&u#pIWBrv@ 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 Y-TjvvKmbe^uFCh8n1g&CK7S_v7X#^~%>V!Z literal 0 HcmV?d00001 diff --git a/test/demo/basic.html b/test/demo/basic.html index e238e5e1..2b9481e7 100644 --- a/test/demo/basic.html +++ b/test/demo/basic.html @@ -25,7 +25,8 @@ id: "contentDiv", prefixUrl: "../../build/openseadragon/images/", tileSources: "../data/testpattern.dzi", - showNavigator:true + showNavigator:true, + ajaxWithCredentials: true }); diff --git a/test/demo/customheaders.html b/test/demo/customheaders.html new file mode 100644 index 00000000..bc43263a --- /dev/null +++ b/test/demo/customheaders.html @@ -0,0 +1,76 @@ + + + + OpenSeadragon Custom Request Headers Demo + + + + + +

+ Demo of how the loadTilesWithAjax and ajaxRequestHeaders options as well as the getTileHeaders() method on TileSource can be applied. +

+

+ Examine the network requests in your browser developer tools to see the custom headers sent with each request. +

+
+ + + diff --git a/test/modules/tilecache.js b/test/modules/tilecache.js index 80bb44de..ba89b73a 100644 --- a/test/modules/tilecache.js +++ b/test/modules/tilecache.js @@ -25,12 +25,14 @@ var fakeTile0 = { url: 'foo.jpg', + cacheKey: 'foo.jpg', image: {}, unload: function() {} }; var fakeTile1 = { url: 'foo.jpg', + cacheKey: 'foo.jpg', image: {}, unload: function() {} }; @@ -74,18 +76,21 @@ var fakeTile0 = { url: 'different.jpg', + cacheKey: 'different.jpg', image: {}, unload: function() {} }; var fakeTile1 = { url: 'same.jpg', + cacheKey: 'same.jpg', image: {}, unload: function() {} }; var fakeTile2 = { url: 'same.jpg', + cacheKey: 'same.jpg', image: {}, unload: function() {} }; From 15fe35a5893c1bdbbf16b90ac0fbc5230a094ed3 Mon Sep 17 00:00:00 2001 From: Sean Nichols Date: Tue, 8 Nov 2016 12:27:30 -0500 Subject: [PATCH 50/77] Improve documentation and option/argument names --- src/imageloader.js | 8 ++++---- src/openseadragon.js | 8 ++++---- src/tile.js | 14 +++++++------- src/tilecache.js | 1 + src/tiledimage.js | 18 +++++++++--------- src/tilesource.js | 6 +++--- src/viewer.js | 18 +++++++----------- test/demo/basic.html | 3 +-- test/demo/customheaders.html | 10 +++++----- 9 files changed, 41 insertions(+), 45 deletions(-) diff --git a/src/imageloader.js b/src/imageloader.js index 60f3ba2a..83676af0 100644 --- a/src/imageloader.js +++ b/src/imageloader.js @@ -41,7 +41,7 @@ * @param {Object} options - Options for this ImageJob. * @param {String} [options.src] - URL of image to download. * @param {String} [options.loadWithAjax] - Whether to load this image with AJAX. - * @param {String} [options.headers] - Headers to add to the image request. + * @param {String} [options.ajaxHeaders] - Headers to add to the image request if using AJAX. * @param {String} [options.crossOriginPolicy] - CORS policy to use for downloads * @param {Function} [options.callback] - Called once image has been downloaded. * @param {Function} [options.abort] - Called when this image job is aborted. @@ -93,7 +93,7 @@ ImageJob.prototype = { this.request = $.makeAjaxRequest({ url: this.src, withCredentials: this.ajaxWithCredentials, - headers: this.headers, + headers: this.ajaxHeaders, responseType: "arraybuffer", success: function(request) { // Make the raw data into a blob @@ -174,7 +174,7 @@ $.ImageLoader.prototype = { * @param {Object} options - Options for this job. * @param {String} [options.src] - URL of image to download. * @param {String} [options.loadWithAjax] - Whether to load this image with AJAX. - * @param {String} [options.headers] - Headers to add to the image request. + * @param {String} [options.ajaxHeaders] - Headers to add to the image request if using AJAX. * @param {String|Boolean} [options.crossOriginPolicy] - CORS policy to use for downloads * @param {Boolean} [options.ajaxWithCredentials] - Whether to set withCredentials on AJAX * requests. @@ -189,7 +189,7 @@ $.ImageLoader.prototype = { jobOptions = { src: options.src, loadWithAjax: options.loadWithAjax, - headers: options.loadWithAjax ? options.headers : null, + ajaxHeaders: options.loadWithAjax ? options.ajaxHeaders : null, crossOriginPolicy: options.crossOriginPolicy, ajaxWithCredentials: options.ajaxWithCredentials, callback: complete, diff --git a/src/openseadragon.js b/src/openseadragon.js index 59f2ffac..a5116963 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -591,7 +591,7 @@ * Whether to load tile data using AJAX requests. * Note that this can be overridden at the {@link OpenSeadragon.TileSource} level. * - * @property {Object} [ajaxRequestHeaders={}] + * @property {Object} [ajaxHeaders={}] * A set of headers to include when making AJAX requests for tile sources or tiles. * */ @@ -1013,7 +1013,7 @@ function OpenSeadragon( options ){ crossOriginPolicy: false, ajaxWithCredentials: false, loadTilesWithAjax: false, - ajaxRequestHeaders: {}, + ajaxHeaders: {}, //PAN AND ZOOM SETTINGS AND CONSTRAINTS panHorizontal: true, @@ -2163,8 +2163,8 @@ function OpenSeadragon( options ){ if ( request.readyState == 4 ) { request.onreadystatechange = function(){}; - // With protocols other than http/https, the status is in [200, 300) - // on Firefox and 0 on other browsers + // With protocols other than http/https, a successful request status is in + // the 200's on Firefox and 0 on other browsers if ( (request.status >= 200 && request.status < 300) || ( request.status === 0 && protocol !== "http:" && diff --git a/src/tile.js b/src/tile.js index 2dd2b95e..61ba2e64 100644 --- a/src/tile.js +++ b/src/tile.js @@ -48,9 +48,9 @@ * @param {CanvasRenderingContext2D} context2D The context2D of this tile if it * is provided directly by the tile source. * @param {Boolean} loadWithAjax Whether this tile image should be loaded with an AJAX request . - * @param {Object} headers The headers to send with this tile's AJAX request (if applicable). + * @param {Object} ajaxHeaders The headers to send with this tile's AJAX request (if applicable). */ -$.Tile = function(level, x, y, bounds, exists, url, context2D, loadWithAjax, headers) { +$.Tile = function(level, x, y, bounds, exists, url, context2D, loadWithAjax, ajaxHeaders) { /** * The zoom level this tile belongs to. * @member {Number} level @@ -94,7 +94,7 @@ $.Tile = function(level, x, y, bounds, exists, url, context2D, loadWithAjax, hea */ this.context2D = context2D; /** - * Whether to load this tile's image with an AJAX request. + * Whether to load this tile's image with an AJAX request. * @member {Boolean} loadWithAjax * @memberof OpenSeadragon.Tile# */ @@ -102,17 +102,17 @@ $.Tile = function(level, x, y, bounds, exists, url, context2D, loadWithAjax, hea /** * The headers to be used in requesting this tile's image. * Only used if loadWithAjax is set to true. - * @member {Object} headers + * @member {Object} ajaxHeaders * @memberof OpenSeadragon.Tile# */ - this.headers = headers; + this.ajaxHeaders = ajaxHeaders; /** * The unique cache key for this tile. * @member {String} cacheKey * @memberof OpenSeadragon.Tile# */ - if (this.headers) { - this.cacheKey = this.url + "+" + JSON.stringify(this.headers); + if (this.ajaxHeaders) { + this.cacheKey = this.url + "+" + JSON.stringify(this.ajaxHeaders); } else { this.cacheKey = this.url; } diff --git a/src/tilecache.js b/src/tilecache.js index 6300427f..05d4e9cd 100644 --- a/src/tilecache.js +++ b/src/tilecache.js @@ -140,6 +140,7 @@ $.TileCache.prototype = { * may temporarily surpass that number, but should eventually come back down to the max specified. * @param {Object} options - Tile info. * @param {OpenSeadragon.Tile} options.tile - The tile to cache. + * @param {String} options.tile.cacheKey - The unique key used to identify this tile in the cache. * @param {Image} options.image - The image of the tile to cache. * @param {OpenSeadragon.TiledImage} options.tiledImage - The TiledImage that owns that tile. * @param {Number} [options.cutoff=0] - If adding this tile goes over the cache max count, this diff --git a/src/tiledimage.js b/src/tiledimage.js index 21b9c05c..f9b311cc 100644 --- a/src/tiledimage.js +++ b/src/tiledimage.js @@ -79,7 +79,7 @@ * @param {Boolean} [options.loadTilesWithAjax] * Whether to load tile data using AJAX requests. * Defaults to the setting in {@link OpenSeadragon.Options}. - * @param {Object} [options.ajaxRequestHeaders={}] + * @param {Object} [options.ajaxHeaders={}] * A set of headers to include when making tile AJAX requests. * Note that these headers will be merged over any headers specified in {@link OpenSeadragon.Options}. */ @@ -1309,7 +1309,7 @@ function getTile( bounds, exists, url, - headers, + ajaxHeaders, context2D, tile; @@ -1329,13 +1329,13 @@ function getTile( // Headers are only applicable if loadTilesWithAjax is set if (tiledImage.loadTilesWithAjax) { - headers = tileSource.getTileHeaders( level, xMod, yMod ); - // Combine tile headers with global headers (if applicable) - if ($.isPlainObject(tiledImage.ajaxRequestHeaders)) { - headers = $.extend({}, tiledImage.ajaxRequestHeaders, headers); + ajaxHeaders = tileSource.getTileAjaxHeaders( level, xMod, yMod ); + // Combine tile AJAX headers with tiled image AJAX headers (if applicable) + if ($.isPlainObject(tiledImage.ajaxHeaders)) { + ajaxHeaders = $.extend({}, tiledImage.ajaxHeaders, ajaxHeaders); } } else { - headers = null; + ajaxHeaders = null; } context2D = tileSource.getContext2D ? @@ -1353,7 +1353,7 @@ function getTile( url, context2D, tiledImage.loadTilesWithAjax, - headers + ajaxHeaders ); } @@ -1376,7 +1376,7 @@ function loadTile( tiledImage, tile, time ) { tiledImage._imageLoader.addJob({ src: tile.url, loadWithAjax: tile.loadWithAjax, - headers: tile.headers, + ajaxHeaders: tile.ajaxHeaders, crossOriginPolicy: tiledImage.crossOriginPolicy, ajaxWithCredentials: tiledImage.ajaxWithCredentials, callback: function( image, errorMsg, tileRequest ){ diff --git a/src/tilesource.js b/src/tilesource.js index 5f058fe9..66bb10ac 100644 --- a/src/tilesource.js +++ b/src/tilesource.js @@ -65,7 +65,7 @@ * @param {Boolean} [options.ajaxWithCredentials] * If this TileSource needs to make an AJAX call, this specifies whether to set * the XHR's withCredentials (for accessing secure data). - * @param {Object} [options.ajaxRequestHeaders] + * @param {Object} [options.ajaxHeaders] * A set of headers to include in AJAX requests. * @param {Number} [options.width] * Width of the source image at max resolution in pixels. @@ -477,7 +477,7 @@ $.TileSource.prototype = { $.makeAjaxRequest( { url: url, withCredentials: this.ajaxWithCredentials, - headers: this.ajaxRequestHeaders, + headers: this.ajaxHeaders, success: function( xhr ) { var data = processResponse( xhr ); callback( data ); @@ -588,7 +588,7 @@ $.TileSource.prototype = { * @param {Number} y * @returns {Object} */ - getTileHeaders: function( level, x, y ) { + getTileAjaxHeaders: function( level, x, y ) { return {}; }, diff --git a/src/viewer.js b/src/viewer.js index 6117d572..a5b3104f 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -1236,7 +1236,7 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, * @param {Boolean} [options.loadTilesWithAjax] * Whether to load tile data using AJAX requests. * Defaults to the setting in {@link OpenSeadragon.Options}. - * @param {Object} [options.ajaxRequestHeaders] + * @param {Object} [options.ajaxHeaders] * A set of headers to include when making tile AJAX requests. * Note that these headers will be merged over any headers specified in {@link OpenSeadragon.Options}. * requests. @@ -1284,14 +1284,10 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, if (options.loadTilesWithAjax === undefined) { options.loadTilesWithAjax = this.loadTilesWithAjax; } - if (options.ajaxRequestHeaders === undefined) { - options.ajaxRequestHeaders = this.ajaxRequestHeaders; - } else if ( - $.isPlainObject(options.ajaxRequestHeaders) && - $.isPlainObject(this.ajaxRequestHeaders) - ) { - options.ajaxRequestHeaders = $.extend({}, - this.ajaxRequestHeaders, options.ajaxRequestHeaders); + if (options.ajaxHeaders === undefined || options.ajaxHeaders === null) { + options.ajaxHeaders = this.ajaxHeaders; + } else if ($.isPlainObject(options.ajaxHeaders) && $.isPlainObject(this.ajaxHeaders)) { + options.ajaxHeaders = $.extend({}, this.ajaxHeaders, options.ajaxHeaders); } var myQueueItem = { @@ -1409,7 +1405,7 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, crossOriginPolicy: queueItem.options.crossOriginPolicy, ajaxWithCredentials: queueItem.options.ajaxWithCredentials, loadTilesWithAjax: queueItem.options.loadTilesWithAjax, - ajaxRequestHeaders: queueItem.options.ajaxRequestHeaders, + ajaxHeaders: queueItem.options.ajaxHeaders, debugMode: _this.debugMode }); @@ -2182,7 +2178,7 @@ function getTileSourceImplementation( viewer, tileSource, imgOptions, successCal crossOriginPolicy: imgOptions.crossOriginPolicy !== undefined ? imgOptions.crossOriginPolicy : viewer.crossOriginPolicy, ajaxWithCredentials: viewer.ajaxWithCredentials, - ajaxRequestHeaders: viewer.ajaxRequestHeaders, + ajaxHeaders: viewer.ajaxHeaders, useCanvas: viewer.useCanvas, success: function( event ) { successCallback( event.tileSource ); diff --git a/test/demo/basic.html b/test/demo/basic.html index 2b9481e7..e238e5e1 100644 --- a/test/demo/basic.html +++ b/test/demo/basic.html @@ -25,8 +25,7 @@ id: "contentDiv", prefixUrl: "../../build/openseadragon/images/", tileSources: "../data/testpattern.dzi", - showNavigator:true, - ajaxWithCredentials: true + showNavigator:true }); diff --git a/test/demo/customheaders.html b/test/demo/customheaders.html index bc43263a..4937b231 100644 --- a/test/demo/customheaders.html +++ b/test/demo/customheaders.html @@ -15,7 +15,7 @@

- Demo of how the loadTilesWithAjax and ajaxRequestHeaders options as well as the getTileHeaders() method on TileSource can be applied. + Demo of how the loadTilesWithAjax and ajaxHeaders options as well as the getTileHeaders() method on TileSource can be applied.

Examine the network requests in your browser developer tools to see the custom headers sent with each request. @@ -42,7 +42,7 @@ }, // This method will send the appropriate range header for this tile based on the data // in tileByteRanges. - getTileHeaders: function(level, x, y) { + getTileAjaxHeaders: function(level, x, y) { return { Range: "bytes=" + tileManifest.tileRanges[level][x][y].join("-") + "/" + tileManifest.totalSize } @@ -55,8 +55,8 @@ prefixUrl: "../../build/openseadragon/images/", showNavigator: true, loadTilesWithAjax: true, - ajaxRequestHeaders: { - // Example of using the viewer-level ajaxRequestHeaders option + ajaxHeaders: { + // Example of using the viewer-level ajaxHeaders option // for providing an authentication token. 'Authentication': 'Bearer MY_AUTH_TOKEN' } @@ -64,7 +64,7 @@ viewer.addTiledImage({ // The headers specified here will be combined with those in the Viewer object (if any) - ajaxRequestHeaders: { + ajaxHeaders: { "X-My-TileSource-Header": "Something" }, tileSource: myCustomTileSource From 6fdf81f26676a712966044a3bc7ced2fcdfc0a8f Mon Sep 17 00:00:00 2001 From: Sean Nichols Date: Mon, 19 Dec 2016 00:39:32 -0500 Subject: [PATCH 51/77] Ignore falsy header values and improve ajaxHeaders documentation --- src/openseadragon.js | 5 ++++- src/tiledimage.js | 1 - src/tilesource.js | 3 +++ src/viewer.js | 1 + test/demo/customheaders.html | 4 ++-- 5 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/openseadragon.js b/src/openseadragon.js index a5116963..d2c52174 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -2189,7 +2189,10 @@ function OpenSeadragon( options ){ if (headers) { Object.keys(headers).forEach(function (headerName) { - request.setRequestHeader(headerName, headers[headerName]); + // Falsy header values will be ignored + if (headers[headerName]) { + request.setRequestHeader(headerName, headers[headerName]); + } }); } diff --git a/src/tiledimage.js b/src/tiledimage.js index f9b311cc..16ef99b5 100644 --- a/src/tiledimage.js +++ b/src/tiledimage.js @@ -81,7 +81,6 @@ * Defaults to the setting in {@link OpenSeadragon.Options}. * @param {Object} [options.ajaxHeaders={}] * A set of headers to include when making tile AJAX requests. - * Note that these headers will be merged over any headers specified in {@link OpenSeadragon.Options}. */ $.TiledImage = function( options ) { var _this = this; diff --git a/src/tilesource.js b/src/tilesource.js index 66bb10ac..d8c16803 100644 --- a/src/tilesource.js +++ b/src/tilesource.js @@ -582,6 +582,9 @@ $.TileSource.prototype = { * Responsible for retrieving the headers which will be attached to the image request for the * region specified by the given x, y, and level components. * This option is only relevant if {@link OpenSeadragon.Options}.loadTilesWithAjax is set to true. + * The headers returned here will override headers specified at the Viewer or TiledImage level. + * Specifying a falsy value for a header will clear its existing value set at the Viewer or + * TiledImage level (if any). * @function * @param {Number} level * @param {Number} x diff --git a/src/viewer.js b/src/viewer.js index a5b3104f..a3a09828 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -1239,6 +1239,7 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, * @param {Object} [options.ajaxHeaders] * A set of headers to include when making tile AJAX requests. * Note that these headers will be merged over any headers specified in {@link OpenSeadragon.Options}. + * Specifying a falsy value for a header will clear its existing value set at the Viewer level (if any). * requests. * @param {Function} [options.success] A function that gets called when the image is * successfully added. It's passed the event object which contains a single property: diff --git a/test/demo/customheaders.html b/test/demo/customheaders.html index 4937b231..cdd98401 100644 --- a/test/demo/customheaders.html +++ b/test/demo/customheaders.html @@ -58,14 +58,14 @@ ajaxHeaders: { // Example of using the viewer-level ajaxHeaders option // for providing an authentication token. - 'Authentication': 'Bearer MY_AUTH_TOKEN' + "Authentication": "Bearer MY_AUTH_TOKEN" } }); viewer.addTiledImage({ // The headers specified here will be combined with those in the Viewer object (if any) ajaxHeaders: { - "X-My-TileSource-Header": "Something" + "X-My-TiledImage-Header": "Something" }, tileSource: myCustomTileSource }); From 11157999eb0f4a2a0bff99050580c435e6b5b880 Mon Sep 17 00:00:00 2001 From: Sean Nichols Date: Mon, 23 Jan 2017 13:44:39 -0500 Subject: [PATCH 52/77] Remove use of Object.keys and Array.prototype.forEach for IE8 compatibility --- src/openseadragon.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/openseadragon.js b/src/openseadragon.js index d2c52174..dae45c68 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -2188,12 +2188,11 @@ function OpenSeadragon( options ){ } if (headers) { - Object.keys(headers).forEach(function (headerName) { - // Falsy header values will be ignored - if (headers[headerName]) { + for (var headerName in headers) { + if (headers.hasOwnProperty(headerName) && headers[headerName]) { request.setRequestHeader(headerName, headers[headerName]); } - }); + } } if (withCredentials) { From 8e755c389a49676c12686acacac6efefd512a216 Mon Sep 17 00:00:00 2001 From: Antoine Vandecreme Date: Sat, 6 May 2017 18:24:32 +0200 Subject: [PATCH 53/77] Fix zoomTo/zoomBy with ref point and immediately to true. Fix #800 --- src/viewport.js | 59 +++++++++------- test/modules/viewport.js | 149 +++++++++++++++++++++++++-------------- 2 files changed, 132 insertions(+), 76 deletions(-) diff --git a/src/viewport.js b/src/viewport.js index d34ab539..a93a4922 100644 --- a/src/viewport.js +++ b/src/viewport.js @@ -805,7 +805,7 @@ $.Viewport.prototype = { * @return {OpenSeadragon.Viewport} Chainable. * @fires OpenSeadragon.Viewer.event:zoom */ - zoomTo: function( zoom, refPoint, immediately ) { + zoomTo: function(zoom, refPoint, immediately) { this.zoomPoint = refPoint instanceof $.Point && !isNaN(refPoint.x) && @@ -813,13 +813,16 @@ $.Viewport.prototype = { refPoint : null; - if ( immediately ) { - this.zoomSpring.resetTo( zoom ); + if (immediately) { + var _this = this; + this._adjustCenterSpringsForZoomPoint(function() { + _this.zoomSpring.resetTo(zoom); + }); } else { - this.zoomSpring.springTo( zoom ); + this.zoomSpring.springTo(zoom); } - if( this.viewer ){ + if (this.viewer) { /** * Raised when the viewport zoom level changes (see {@link OpenSeadragon.Viewport#zoomBy} and {@link OpenSeadragon.Viewport#zoomTo}). * @@ -832,7 +835,7 @@ $.Viewport.prototype = { * @property {Boolean} immediately * @property {?Object} userData - Arbitrary subscriber-defined object. */ - this.viewer.raiseEvent( 'zoom', { + this.viewer.raiseEvent('zoom', { zoom: zoom, refPoint: refPoint, immediately: immediately @@ -938,25 +941,10 @@ $.Viewport.prototype = { * @returns {Boolean} True if any change has been made, false otherwise. */ update: function() { - - if (this.zoomPoint) { - var oldZoomPixel = this.pixelFromPoint(this.zoomPoint, true); - this.zoomSpring.update(); - var newZoomPixel = this.pixelFromPoint(this.zoomPoint, true); - - var deltaZoomPixels = newZoomPixel.minus(oldZoomPixel); - var deltaZoomPoints = this.deltaPointsFromPixels( - deltaZoomPixels, true); - - this.centerSpringX.shiftBy(deltaZoomPoints.x); - this.centerSpringY.shiftBy(deltaZoomPoints.y); - - if (this.zoomSpring.isAtTargetValue()) { - this.zoomPoint = null; - } - } else { - this.zoomSpring.update(); - } + var _this = this; + this._adjustCenterSpringsForZoomPoint(function() { + _this.zoomSpring.update(); + }); this.centerSpringX.update(); this.centerSpringY.update(); @@ -972,6 +960,27 @@ $.Viewport.prototype = { return changed; }, + _adjustCenterSpringsForZoomPoint: function(zoomSpringHandler) { + if (this.zoomPoint) { + var oldZoomPixel = this.pixelFromPoint(this.zoomPoint, true); + zoomSpringHandler(); + var newZoomPixel = this.pixelFromPoint(this.zoomPoint, true); + + var deltaZoomPixels = newZoomPixel.minus(oldZoomPixel); + var deltaZoomPoints = this.deltaPointsFromPixels( + deltaZoomPixels, true); + + this.centerSpringX.shiftBy(deltaZoomPoints.x); + this.centerSpringY.shiftBy(deltaZoomPoints.y); + + if (this.zoomSpring.isAtTargetValue()) { + this.zoomPoint = null; + } + } else { + zoomSpringHandler(); + } + }, + /** * Convert a delta (translation vector) from viewport coordinates to pixels * coordinates. This method does not take rotation into account. diff --git a/test/modules/viewport.js b/test/modules/viewport.js index e49c1e68..236d4f9c 100644 --- a/test/modules/viewport.js +++ b/test/modules/viewport.js @@ -36,7 +36,7 @@ var TALL_PATH = '/test/data/tall.dzi'; var WIDE_PATH = '/test/data/wide.dzi'; - var testZoomLevels = [-1, 0, 0.1, 0.5, 4, 10]; + var testZoomLevels = [0.1, 0.2, 0.5, 1, 4, 10]; var testPoints = [ new OpenSeadragon.Point(0, 0), @@ -59,7 +59,6 @@ var reopenViewerHelper = function(config) { var expected, level, actual, i = 0; var openHandler = function(event) { - viewer.removeHandler('open', openHandler); var viewport = viewer.viewport; expected = config.processExpected(level, expected); actual = viewport[config.method](); @@ -70,7 +69,7 @@ "Test " + config.method + " with zoom level of " + level + ". Expected : " + expected + ", got " + actual ); i++; - if(i < testZoomLevels.length){ + if (i < testZoomLevels.length) { level = expected = testZoomLevels[i]; var viewerConfig = { id: VIEWER_ID, @@ -80,15 +79,22 @@ viewerConfig[config.property] = level; viewer = OpenSeadragon(viewerConfig); - viewer.addHandler('open', openHandler); + viewer.addOnceHandler('open', openHandler); viewer.open(DZI_PATH); } else { start(); } }; - viewer.addHandler('open', openHandler); level = expected = testZoomLevels[i]; - viewer[config.property] = level; + var viewerConfig = { + id: VIEWER_ID, + prefixUrl: PREFIX_URL, + springStiffness: SPRING_STIFFNESS + }; + + viewerConfig[config.property] = level; + viewer = OpenSeadragon(viewerConfig); + viewer.addOnceHandler('open', openHandler); viewer.open(DZI_PATH); }; @@ -211,15 +217,9 @@ property: 'defaultZoomLevel', method: 'getHomeBounds', processExpected: function(level, expected) { - // Have to special case this to avoid dividing by 0 - if(level === -1 || level === 0){ - expected = new OpenSeadragon.Rect(0, 0, 1, 1); - } else { - var sideLength = 1.0 / viewer.defaultZoomLevel; // it's a square in this case - var position = 0.5 - (sideLength / 2.0); - expected = new OpenSeadragon.Rect(position, position, sideLength, sideLength); - } - return expected; + var sideLength = 1.0 / viewer.defaultZoomLevel; // it's a square in this case + var position = 0.5 - (sideLength / 2.0); + return new OpenSeadragon.Rect(position, position, sideLength, sideLength); } }); }); @@ -333,44 +333,39 @@ // I don't use the helper for this one because it sets a couple more // properties that would need special casing. asyncTest('getHomeZoomWithHomeFillsViewer', function() { - var expected, level, i = 0; + var i = 0; var openHandler = function(event) { - viewer.removeHandler('open', openHandler); var viewport = viewer.viewport; viewport.zoomTo(ZOOM_FACTOR, null, true); - // Special cases for oddball levels - if (level === -1) { - expected = 0.25; - } else if(level === 0){ - expected = 1; - } - equal( viewport.getHomeZoom(), - expected, - "Test getHomeZoom with homeFillsViewer = true and default zoom level of " + expected + testZoomLevels[i], + "Test getHomeZoom with homeFillsViewer = true and default zoom level of " + testZoomLevels[i] ); i++; - if(i < testZoomLevels.length){ - level = expected = testZoomLevels[i]; + if (i < testZoomLevels.length) { viewer = OpenSeadragon({ - id: VIEWER_ID, - prefixUrl: PREFIX_URL, + id: VIEWER_ID, + prefixUrl: PREFIX_URL, springStiffness: SPRING_STIFFNESS, - defaultZoomLevel: level, + defaultZoomLevel: testZoomLevels[i], homeFillsViewer: true }); - viewer.addHandler('open', openHandler); + viewer.addOnceHandler('open', openHandler); viewer.open(TALL_PATH); // use a different image for homeFillsViewer } else { start(); } }; - viewer.addHandler('open', openHandler); - level = expected = testZoomLevels[i]; - viewer.homeFillsViewer = true; - viewer.defaultZoomLevel = expected; + viewer = OpenSeadragon({ + id: VIEWER_ID, + prefixUrl: PREFIX_URL, + springStiffness: SPRING_STIFFNESS, + defaultZoomLevel: testZoomLevels[i], + homeFillsViewer: true + }); + viewer.addOnceHandler('open', openHandler); viewer.open(TALL_PATH); // use a different image for homeFillsViewer }); @@ -725,27 +720,18 @@ viewer.open(DZI_PATH); }); - asyncTest('zoomBy', function(){ + asyncTest('zoomBy no ref point', function() { var openHandler = function(event) { viewer.removeHandler('open', openHandler); var viewport = viewer.viewport; - for (var i = 0; i < testZoomLevels.length; i++){ + for (var i = 0; i < testZoomLevels.length; i++) { viewport.zoomBy(testZoomLevels[i], null, true); propEqual( viewport.getZoom(), testZoomLevels[i], "Zoomed by the correct amount." ); - - // now use a ref point - // TODO: check the ending position due to ref point - viewport.zoomBy(testZoomLevels[i], testPoints[i], true); - propEqual( - viewport.getZoom(), - testZoomLevels[i], - "Zoomed by the correct amount." - ); } start(); @@ -754,27 +740,88 @@ viewer.open(DZI_PATH); }); - asyncTest('zoomTo', function(){ + asyncTest('zoomBy with ref point', function() { var openHandler = function(event) { viewer.removeHandler('open', openHandler); var viewport = viewer.viewport; - for (var i = 0; i < testZoomLevels.length; i++){ + var expectedCenters = [ + new OpenSeadragon.Point(5, 5), + new OpenSeadragon.Point(6.996, 6.996), + new OpenSeadragon.Point(7.246, 6.996), + new OpenSeadragon.Point(7.246, 6.996), + new OpenSeadragon.Point(7.621, 7.371), + new OpenSeadragon.Point(7.621, 7.371), + ]; + + for (var i = 0; i < testZoomLevels.length; i++) { + viewport.zoomBy(testZoomLevels[i], testPoints[i], true); + propEqual( + viewport.getZoom(), + testZoomLevels[i], + "Zoomed by the correct amount." + ); + assertPointsEquals( + viewport.getCenter(), + expectedCenters[i], + 1e-14, + "Panned to the correct location." + ); + } + + start(); + }; + viewer.addHandler('open', openHandler); + viewer.open(DZI_PATH); + }); + + asyncTest('zoomTo no ref point', function() { + var openHandler = function(event) { + viewer.removeHandler('open', openHandler); + var viewport = viewer.viewport; + + for (var i = 0; i < testZoomLevels.length; i++) { viewport.zoomTo(testZoomLevels[i], null, true); propEqual( viewport.getZoom(), testZoomLevels[i], "Zoomed to the correct level." ); + } - // now use a ref point - // TODO: check the ending position due to ref point + start(); + }; + viewer.addHandler('open', openHandler); + viewer.open(DZI_PATH); + }); + + asyncTest('zoomTo with ref point', function() { + var openHandler = function(event) { + viewer.removeHandler('open', openHandler); + var viewport = viewer.viewport; + + var expectedCenters = [ + new OpenSeadragon.Point(5, 5), + new OpenSeadragon.Point(4.7505, 4.7505), + new OpenSeadragon.Point(4.6005, 4.7505), + new OpenSeadragon.Point(4.8455, 4.9955), + new OpenSeadragon.Point(5.2205, 5.3705), + new OpenSeadragon.Point(5.2205, 5.3705), + ]; + + for (var i = 0; i < testZoomLevels.length; i++) { viewport.zoomTo(testZoomLevels[i], testPoints[i], true); propEqual( viewport.getZoom(), testZoomLevels[i], "Zoomed to the correct level." ); + assertPointsEquals( + viewport.getCenter(), + expectedCenters[i], + 1e-14, + "Panned to the correct location." + ); } start(); From b909caaf4552bd032ca836690ba1ad8ef9e2cbe9 Mon Sep 17 00:00:00 2001 From: Sean Nichols Date: Mon, 8 May 2017 11:14:26 -0400 Subject: [PATCH 54/77] Add some tests for AJAX tile loading --- src/tiledimage.js | 6 +- test/demo/customheaders.html | 7 +- test/modules/ajax-tiles.js | 207 +++++++++++++++++++++++++++++++++++ test/test.html | 1 + 4 files changed, 215 insertions(+), 6 deletions(-) create mode 100644 test/modules/ajax-tiles.js diff --git a/src/tiledimage.js b/src/tiledimage.js index 16ef99b5..f4178c8d 100644 --- a/src/tiledimage.js +++ b/src/tiledimage.js @@ -1434,7 +1434,7 @@ function onTileLoad( tiledImage, tile, time, image, errorMsg, tileRequest ) { var finish = function() { var cutoff = Math.ceil( Math.log( tiledImage.source.getTileWidth(tile.level) ) / Math.log( 2 ) ); - setTileLoaded(tiledImage, tile, image, cutoff); + setTileLoaded(tiledImage, tile, image, cutoff, tileRequest); }; // Check if we're mid-update; this can happen on IE8 because image load events for @@ -1455,7 +1455,7 @@ function onTileLoad( tiledImage, tile, time, image, errorMsg, tileRequest ) { * @param {Image} image * @param {Number} cutoff */ -function setTileLoaded(tiledImage, tile, image, cutoff) { +function setTileLoaded(tiledImage, tile, image, cutoff, tileRequest) { var increment = 0; function getCompletionCallback() { @@ -1490,6 +1490,7 @@ function setTileLoaded(tiledImage, tile, image, cutoff) { * @property {Image} image - The image of the tile. * @property {OpenSeadragon.TiledImage} tiledImage - The tiled image of the loaded tile. * @property {OpenSeadragon.Tile} tile - The tile which has been loaded. + * @property {XMLHttpRequest} tiledImage - The AJAX request that loaded this tile (if applicable). * @property {function} getCompletionCallback - A function giving a callback to call * when the asynchronous processing of the image is done. The image will be * marked as entirely loaded when the callback has been called once for each @@ -1498,6 +1499,7 @@ function setTileLoaded(tiledImage, tile, image, cutoff) { tiledImage.viewer.raiseEvent("tile-loaded", { tile: tile, tiledImage: tiledImage, + tileRequest: tileRequest, image: image, getCompletionCallback: getCompletionCallback }); diff --git a/test/demo/customheaders.html b/test/demo/customheaders.html index cdd98401..737cf863 100644 --- a/test/demo/customheaders.html +++ b/test/demo/customheaders.html @@ -24,7 +24,7 @@ + From 4e6badc54804a683a63c1a068d710f6f0c88a326 Mon Sep 17 00:00:00 2001 From: Sean Nichols Date: Mon, 8 May 2017 15:24:55 -0400 Subject: [PATCH 55/77] Fix format of Range headers --- test/demo/customheaders.html | 2 +- test/modules/ajax-tiles.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/demo/customheaders.html b/test/demo/customheaders.html index 737cf863..95063052 100644 --- a/test/demo/customheaders.html +++ b/test/demo/customheaders.html @@ -44,7 +44,7 @@ // in tileByteRanges. getTileAjaxHeaders: function(level, x, y) { return { - Range: "bytes " + tileManifest.tileRanges[level][x][y].join("-") + "/" + tileManifest.totalSize + Range: "bytes=" + tileManifest.tileRanges[level][x][y].join("-") + "/" + tileManifest.totalSize }; }, }; diff --git a/test/modules/ajax-tiles.js b/test/modules/ajax-tiles.js index f662c301..12eeb7e6 100644 --- a/test/modules/ajax-tiles.js +++ b/test/modules/ajax-tiles.js @@ -27,7 +27,7 @@ // in tileByteRanges. getTileAjaxHeaders: function(level, x, y) { return { - Range: 'bytes ' + tileManifest.tileRanges[level][x][y].join('-') + '/' + tileManifest.totalSize + Range: 'bytes=' + tileManifest.tileRanges[level][x][y].join('-') + '/' + tileManifest.totalSize }; }, }; From 2ed09bade2492328cb5a35e3c76a2bfd1561b2c2 Mon Sep 17 00:00:00 2001 From: Sean Nichols Date: Mon, 8 May 2017 15:34:46 -0400 Subject: [PATCH 56/77] Add fallback to BlobBuilder API when Blob constructor is missing --- src/imageloader.js | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/imageloader.js b/src/imageloader.js index 83676af0..4faaa1df 100644 --- a/src/imageloader.js +++ b/src/imageloader.js @@ -96,8 +96,25 @@ ImageJob.prototype = { headers: this.ajaxHeaders, responseType: "arraybuffer", success: function(request) { - // Make the raw data into a blob - var blb = new window.Blob([request.response]); + var blb; + // Make the raw data into a blob. + // BlobBuilder fallback adapted from + // http://stackoverflow.com/questions/15293694/blob-constructor-browser-compatibility + try { + blb = new window.Blob([request.response]); + } catch (e) { + var BlobBuilder = ( + window.BlobBuilder || + window.WebKitBlobBuilder || + window.MozBlobBuilder || + window.MSBlobBuilder + ); + if (e.name === 'TypeError' && BlobBuilder) { + var bb = new BlobBuilder(); + bb.append(request.response); + blb = bb.getBlob(); + } + } // If the blob is empty for some reason consider the image load a failure. if (blb.size === 0) { self.errorMsg = "Empty image response."; From e2585bd66ee3f1a5ace80b54785cd3c2d396b3ef Mon Sep 17 00:00:00 2001 From: Sean Nichols Date: Mon, 8 May 2017 16:21:35 -0400 Subject: [PATCH 57/77] Add more tests for AJAX tile loading --- test/coverage.html | 1 + test/modules/ajax-tiles.js | 37 ++++++++++++++++++++++++++++++++++++- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/test/coverage.html b/test/coverage.html index 65711abc..9262bb6e 100644 --- a/test/coverage.html +++ b/test/coverage.html @@ -80,6 +80,7 @@ + diff --git a/test/modules/ajax-tiles.js b/test/modules/ajax-tiles.js index 12eeb7e6..646e80b8 100644 --- a/test/modules/ajax-tiles.js +++ b/test/modules/ajax-tiles.js @@ -9,6 +9,10 @@ // eslint-disable-next-line var tileManifest = {"tileRanges":[[[[0,3467]]],[[[3467,6954]]],[[[344916,348425]]],[[[348425,351948]]],[[[351948,355576]]],[[[355576,359520]]],[[[359520,364663]]],[[[364663,374196]]],[[[374196,407307]]],[[[407307,435465],[435465,463663]],[[463663,491839],[491839,520078]]],[[[6954,29582],[29582,50315],[50315,71936],[71936,92703]],[[92703,113385],[113385,133265],[133265,154763],[154763,175710]],[[175710,197306],[197306,218807],[218807,242177],[242177,263007]],[[263007,283790],[283790,304822],[304822,325691],[325691,344916]]]],"totalSize":520078} + function getTileRangeHeader(level, x, y) { + return 'bytes=' + tileManifest.tileRanges[level][x][y].join('-') + '/' + tileManifest.totalSize; + } + // This tile source demonstrates how you can retrieve individual tiles from a single file // using the Range header. var customTileSource = { @@ -27,7 +31,7 @@ // in tileByteRanges. getTileAjaxHeaders: function(level, x, y) { return { - Range: 'bytes=' + tileManifest.tileRanges[level][x][y].join('-') + '/' + tileManifest.totalSize + Range: getTileRangeHeader(level, x, y) }; }, }; @@ -69,6 +73,22 @@ viewer.open(customTileSource); }); + asyncTest('withCredentials is set in tile AJAX requests', function() { + var tileLoaded = function tileLoaded(evt) { + viewer.removeHandler('tile-loaded', tileLoaded); + ok(evt.tileRequest, 'Event includes tileRequest property'); + equal(evt.tileRequest.readyState, XMLHttpRequest.DONE, 'tileRequest is in completed state'); + equal(evt.tileRequest.withCredentials, true, 'withCredentials is set in tile request'); + start(); + }; + + viewer.addHandler('tile-loaded', tileLoaded); + viewer.addTiledImage({ + tileSource: customTileSource, + ajaxWithCredentials: true + }); + }); + asyncTest('tile-load-failed event includes AJAX request object', function() { // Create a tile source that points to a broken URL var brokenTileSource = OpenSeadragon.extend({}, customTileSource, { @@ -88,6 +108,21 @@ viewer.open(brokenTileSource); }); + asyncTest('Headers can be set per-tile', function() { + var tileLoaded = function tileLoaded(evt) { + viewer.removeHandler('tile-loaded', tileLoaded); + var tile = evt.tile; + ok(tile, 'tile property exists on event'); + ok(tile.ajaxHeaders, 'Tile has ajaxHeaders property'); + equal(tile.ajaxHeaders.Range, getTileRangeHeader(tile.level, tile.x, tile.y), 'Tile has correct range header.'); + start(); + }; + + viewer.addHandler('tile-loaded', tileLoaded); + + viewer.open(customTileSource); + }); + asyncTest('Headers are propagated correctly', function() { // Create a tile source that sets a static header for tiles var staticHeaderTileSource = OpenSeadragon.extend({}, customTileSource, { From 2a251b219a84a377b7eef1b89bc51a9cd5f29825 Mon Sep 17 00:00:00 2001 From: Ganesh Iyer Date: Tue, 9 May 2017 14:55:23 -0400 Subject: [PATCH 58/77] added fix for supporting weird filenames that look like JSONs --- src/viewer.js | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/viewer.js b/src/viewer.js index ec4c8242..f59bf8a7 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -2113,6 +2113,20 @@ function _getSafeElemSize (oElement) { ); } + +/* + * @function + * @private + */ +function _isJSON(str){ + try{ + JSON.parse(str); + } catch (e) { + return false; + } + return true; +} + /** * @function * @private @@ -2127,7 +2141,7 @@ function getTileSourceImplementation( viewer, tileSource, imgOptions, successCal if ( tileSource.match( /^\s*<.*>\s*$/ ) ) { tileSource = $.parseXml( tileSource ); //json should start with "{" or "[" and end with "}" or "]" - } else if ( tileSource.match(/^\s*[\{\[].*[\}\]]\s*$/ ) ) { + } else if ( _isJSON(tileSource) ) { tileSource = $.parseJSON(tileSource); } } From b08efcf169756171ca4b06ac84e9ac777cb3efe6 Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Wed, 10 May 2017 10:11:06 -0700 Subject: [PATCH 59/77] Changelog for #1055 --- changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.txt b/changelog.txt index 6a8f789f..12134172 100644 --- a/changelog.txt +++ b/changelog.txt @@ -34,6 +34,7 @@ OPENSEADRAGON CHANGELOG * Fixed: console.debug caused exceptions on IE10 (#1129) * Better compression for our UI images (#1134) * Fixed: the reference strip would leak memory when opening new sets of images (#1175) +* You can now load tiles via AJAX and custom AJAX request headers (#1055) 2.2.1: From ce1360f5cb65e4c194183c96c7ae1c2221604ba7 Mon Sep 17 00:00:00 2001 From: Ganesh Iyer Date: Wed, 10 May 2017 17:51:59 -0400 Subject: [PATCH 60/77] using try/catch $.parseJSON to check for JSONs --- src/tilesource.js | 6 +++++- src/viewer.js | 22 +++++++--------------- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/src/tilesource.js b/src/tilesource.js index 135053de..431b37d3 100644 --- a/src/tilesource.js +++ b/src/tilesource.js @@ -629,7 +629,11 @@ function processResponse( xhr ){ data = xhr.responseText; } }else if( responseText.match(/\s*[\{\[].*/) ){ - data = $.parseJSON(responseText); + try{ + data = $.parseJSON(responseText); + } catch(e){ + data = responseText; + } }else{ data = responseText; } diff --git a/src/viewer.js b/src/viewer.js index f59bf8a7..91317cd3 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -2114,19 +2114,6 @@ function _getSafeElemSize (oElement) { } -/* - * @function - * @private - */ -function _isJSON(str){ - try{ - JSON.parse(str); - } catch (e) { - return false; - } - return true; -} - /** * @function * @private @@ -2141,8 +2128,13 @@ function getTileSourceImplementation( viewer, tileSource, imgOptions, successCal if ( tileSource.match( /^\s*<.*>\s*$/ ) ) { tileSource = $.parseXml( tileSource ); //json should start with "{" or "[" and end with "}" or "]" - } else if ( _isJSON(tileSource) ) { - tileSource = $.parseJSON(tileSource); + } else if ( tileSource.match(/^\s*[\{\[].*[\}\]]\s*$/ ) ) { + try { + var tileSourceJ = $.parseJSON(tileSource); + tileSource = tileSourceJ; + } catch (e) { + //tileSource = tileSource; + } } } From f1e324a4a7c51bdd40946dc8ba0c537142add19e Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Thu, 11 May 2017 10:02:49 -0700 Subject: [PATCH 61/77] Changelog for #1189 --- changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.txt b/changelog.txt index 12134172..d8f2e28c 100644 --- a/changelog.txt +++ b/changelog.txt @@ -35,6 +35,7 @@ OPENSEADRAGON CHANGELOG * Better compression for our UI images (#1134) * Fixed: the reference strip would leak memory when opening new sets of images (#1175) * You can now load tiles via AJAX and custom AJAX request headers (#1055) +* Added fix for supporting weird filenames that look like JSONs (#1189) 2.2.1: From de2fcb1b745e8547ada96b601fe646ef968f1719 Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Thu, 11 May 2017 10:19:43 -0700 Subject: [PATCH 62/77] Changelog for #1184 --- changelog.txt | 1 + src/viewport.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/changelog.txt b/changelog.txt index d8f2e28c..32b50acb 100644 --- a/changelog.txt +++ b/changelog.txt @@ -36,6 +36,7 @@ OPENSEADRAGON CHANGELOG * Fixed: the reference strip would leak memory when opening new sets of images (#1175) * You can now load tiles via AJAX and custom AJAX request headers (#1055) * Added fix for supporting weird filenames that look like JSONs (#1189) +* Fixed: zoomTo/zoomBy ignore refPoint if immediately is true (#1184) 2.2.1: diff --git a/src/viewport.js b/src/viewport.js index a93a4922..55851dc4 100644 --- a/src/viewport.js +++ b/src/viewport.js @@ -806,6 +806,7 @@ $.Viewport.prototype = { * @fires OpenSeadragon.Viewer.event:zoom */ zoomTo: function(zoom, refPoint, immediately) { + var _this = this; this.zoomPoint = refPoint instanceof $.Point && !isNaN(refPoint.x) && @@ -814,7 +815,6 @@ $.Viewport.prototype = { null; if (immediately) { - var _this = this; this._adjustCenterSpringsForZoomPoint(function() { _this.zoomSpring.resetTo(zoom); }); From 77da3063970675a1904bb3e91baed6f8bba4f44d Mon Sep 17 00:00:00 2001 From: "Mark Allen Matney, Jr" Date: Thu, 11 May 2017 21:36:27 -0700 Subject: [PATCH 63/77] Enable configuration of ImageJob timeout --- src/imageloader.js | 6 ++- src/openseadragon.js | 1 + src/viewer.js | 3 +- test/coverage.html | 1 + test/modules/imageloader.js | 88 +++++++++++++++++++++++++++++++++++++ test/test.html | 1 + 6 files changed, 98 insertions(+), 2 deletions(-) create mode 100644 test/modules/imageloader.js diff --git a/src/imageloader.js b/src/imageloader.js index 4faaa1df..14eb576b 100644 --- a/src/imageloader.js +++ b/src/imageloader.js @@ -45,6 +45,7 @@ * @param {String} [options.crossOriginPolicy] - CORS policy to use for downloads * @param {Function} [options.callback] - Called once image has been downloaded. * @param {Function} [options.abort] - Called when this image job is aborted. + * @param {Number} [options.timeout] - The max number of milliseconds that this image job may take to complete. */ function ImageJob (options) { @@ -171,11 +172,13 @@ ImageJob.prototype = { * You generally won't have to interact with the ImageLoader directly. * @param {Object} options - Options for this ImageLoader. * @param {Number} [options.jobLimit] - The number of concurrent image requests. See imageLoaderLimit in {@link OpenSeadragon.Options} for details. + * @param {Number} [options.timeout] - The max number of milliseconds that an image job may take to complete. */ $.ImageLoader = function(options) { $.extend(true, this, { jobLimit: $.DEFAULT_SETTINGS.imageLoaderLimit, + timeout: $.DEFAULT_SETTINGS.timeout, jobQueue: [], jobsInProgress: 0 }, options); @@ -210,7 +213,8 @@ $.ImageLoader.prototype = { crossOriginPolicy: options.crossOriginPolicy, ajaxWithCredentials: options.ajaxWithCredentials, callback: complete, - abort: options.abort + abort: options.abort, + timeout: this.timeout }, newJob = new ImageJob(jobOptions); diff --git a/src/openseadragon.js b/src/openseadragon.js index dae45c68..8ed6adcb 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -411,6 +411,7 @@ * The max number of images we should keep in memory (per drawer). * * @property {Number} [timeout=30000] + * The max number of milliseconds that an image job may take to complete. * * @property {Boolean} [useCanvas=true] * Set to false to not use an HTML canvas element for image rendering even if canvas is supported. diff --git a/src/viewer.js b/src/viewer.js index a3a09828..a50f6776 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -370,7 +370,8 @@ $.Viewer = function( options ) { // Create the image loader this.imageLoader = new $.ImageLoader({ - jobLimit: this.imageLoaderLimit + jobLimit: this.imageLoaderLimit, + timeout: options.timeout }); // Create the tile cache diff --git a/test/coverage.html b/test/coverage.html index 9262bb6e..7fda4329 100644 --- a/test/coverage.html +++ b/test/coverage.html @@ -81,6 +81,7 @@ + diff --git a/test/modules/imageloader.js b/test/modules/imageloader.js new file mode 100644 index 00000000..1750ea73 --- /dev/null +++ b/test/modules/imageloader.js @@ -0,0 +1,88 @@ +/* global module, asyncTest, $, ok, equal, notEqual, start, test, Util, testLog */ + +(function() { + var viewer, + baseOptions = { + id: 'example', + prefixUrl: '/build/openseadragon/images/', + springStiffness: 100 // Faster animation = faster tests + }; + + module('ImageLoader', { + setup: function () { + var example = $('

').appendTo("#qunit-fixture"); + + testLog.reset(); + }, + teardown: function () { + if (viewer && viewer.close) { + viewer.close(); + } + + viewer = null; + } + }); + + // ---------- + + test('Default timeout', function() { + var actual, + expected = OpenSeadragon.DEFAULT_SETTINGS.timeout, + message, + options = OpenSeadragon.extend(true, baseOptions, { + imageLoaderLimit: 1 + }), + viewer = OpenSeadragon(options), + imageLoader = viewer.imageLoader; + + message = 'ImageLoader timeout should be set to the default value of ' + expected + ' when none is specified'; + actual = imageLoader.timeout; + equal(actual, expected, message); + + // Manually seize the ImageLoader + imageLoader.jobsInProgress = imageLoader.jobLimit; + imageLoader.addJob({ + src: 'test', + loadWithAjax: false, + crossOriginPolicy: 'test', + ajaxWithCredentials: false, + abort: function() {} + }); + + message = 'ImageJob should inherit the ImageLoader timeout value'; + actual = imageLoader.jobQueue.shift().timeout; + equal(actual, expected, message); + }); + + // ---------- + + test('Configure timeout', function() { + var actual, + expected = 123456, + message, + options = OpenSeadragon.extend(true, baseOptions, { + imageLoaderLimit: 1, + timeout: expected + }), + viewer = OpenSeadragon(options), + imageLoader = viewer.imageLoader; + + message = 'ImageLoader timeout should be configurable'; + actual = imageLoader.timeout; + equal(actual, expected, message); + + imageLoader.jobsInProgress = imageLoader.jobLimit; + imageLoader.addJob({ + src: 'test', + loadWithAjax: false, + crossOriginPolicy: 'test', + ajaxWithCredentials: false, + abort: function() {} + }); + + message = 'ImageJob should inherit the ImageLoader timeout value'; + actual = imageLoader.jobQueue.shift().timeout; + equal(actual, expected, message); + }); + +})(); diff --git a/test/test.html b/test/test.html index b69247e8..16e7e54a 100644 --- a/test/test.html +++ b/test/test.html @@ -43,6 +43,7 @@ + From 85c204deceda38cb5863fb1981b52b6798ae16b0 Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Fri, 12 May 2017 10:30:43 -0700 Subject: [PATCH 64/77] Changelog for #1192 --- changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.txt b/changelog.txt index 32b50acb..47bbb5a7 100644 --- a/changelog.txt +++ b/changelog.txt @@ -37,6 +37,7 @@ OPENSEADRAGON CHANGELOG * You can now load tiles via AJAX and custom AJAX request headers (#1055) * Added fix for supporting weird filenames that look like JSONs (#1189) * Fixed: zoomTo/zoomBy ignore refPoint if immediately is true (#1184) +* Enabled configuration of ImageLoader timeout (#1192) 2.2.1: From bb6875569902cd0e51f4397e7900d311ad58cfc8 Mon Sep 17 00:00:00 2001 From: Robert Saric Date: Sun, 14 May 2017 15:56:21 +0200 Subject: [PATCH 65/77] fix for #1191 (extension of Viewer.open() function with initialPage argument) --- src/viewer.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/viewer.js b/src/viewer.js index ec4c8242..1ac95a0e 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -96,6 +96,12 @@ $.Viewer = function( options ) { //internal state and dom identifiers id: options.id, hash: options.hash || nextHash++, + /** + * If sequenceMode is true, display this page initially for the given tileSources. + * @member {Number} initialPage + * @memberof OpenSeadragon.Viewer# + */ + initialPage: 0, //dom nodes /** @@ -481,11 +487,13 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, * except for the index property; images are added in sequence. * A TileSource specifier is anything you could pass as the tileSource property * of the options parameter for {@link OpenSeadragon.Viewer#addTiledImage}. + * @param {Number} initialPage - If sequenceMode is true, display this page initially + * for the given tileSources. If specified, will overwrite the existing homonymous option. * @return {OpenSeadragon.Viewer} Chainable. * @fires OpenSeadragon.Viewer.event:open * @fires OpenSeadragon.Viewer.event:open-failed */ - open: function (tileSources) { + open: function (tileSources, initialPage) { var _this = this; this.close(); @@ -500,6 +508,10 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, this.referenceStrip = null; } + if (typeof initialPage != 'undefined' && !isNaN(initialPage)) { + this.initialPage = initialPage; + } + this.tileSources = tileSources; this._sequenceIndex = Math.max(0, Math.min(this.tileSources.length - 1, this.initialPage)); if (this.tileSources.length) { From 29f973029ff2a1f73ea8b0880ec494c35deb5924 Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Mon, 15 May 2017 10:13:34 -0700 Subject: [PATCH 66/77] Changelog for #1196 and doc tweaks --- changelog.txt | 1 + src/viewer.js | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/changelog.txt b/changelog.txt index 47bbb5a7..110d1905 100644 --- a/changelog.txt +++ b/changelog.txt @@ -38,6 +38,7 @@ OPENSEADRAGON CHANGELOG * Added fix for supporting weird filenames that look like JSONs (#1189) * Fixed: zoomTo/zoomBy ignore refPoint if immediately is true (#1184) * Enabled configuration of ImageLoader timeout (#1192) +* Viewer.open() now supports an initialPage argument for sequenceMode (#1196) 2.2.1: diff --git a/src/viewer.js b/src/viewer.js index 6d95515b..ded3ef4d 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -97,7 +97,7 @@ $.Viewer = function( options ) { id: options.id, hash: options.hash || nextHash++, /** - * If sequenceMode is true, display this page initially for the given tileSources. + * Index for page to be shown first next time open() is called (only used in sequenceMode). * @member {Number} initialPage * @memberof OpenSeadragon.Viewer# */ @@ -489,7 +489,7 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, * A TileSource specifier is anything you could pass as the tileSource property * of the options parameter for {@link OpenSeadragon.Viewer#addTiledImage}. * @param {Number} initialPage - If sequenceMode is true, display this page initially - * for the given tileSources. If specified, will overwrite the existing homonymous option. + * for the given tileSources. If specified, will overwrite the Viewer's existing initialPage property. * @return {OpenSeadragon.Viewer} Chainable. * @fires OpenSeadragon.Viewer.event:open * @fires OpenSeadragon.Viewer.event:open-failed From 1a60238c61b3f6a8d49384aca91d340ccdec36b0 Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Tue, 16 May 2017 13:49:59 -0700 Subject: [PATCH 67/77] Improved best first level calculation --- src/tiledimage.js | 2 +- src/tilesource.js | 13 +++---------- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/src/tiledimage.js b/src/tiledimage.js index f4178c8d..31a763c5 100644 --- a/src/tiledimage.js +++ b/src/tiledimage.js @@ -978,7 +978,7 @@ $.extend($.TiledImage.prototype, $.EventSource.prototype, /** @lends OpenSeadrag var targetZeroRatio = viewport.deltaPixelsFromPointsNoRotate( this.source.getPixelRatio( Math.max( - this.source.getClosestLevel(viewport.containerSize) - 1, + this.source.getClosestLevel(), 0 ) ), diff --git a/src/tilesource.js b/src/tilesource.js index 26c220b7..d4c1e044 100644 --- a/src/tilesource.js +++ b/src/tilesource.js @@ -320,21 +320,14 @@ $.TileSource.prototype = { /** * @function - * @param {Rect} rect */ - getClosestLevel: function( rect ) { + getClosestLevel: function() { var i, - tilesPerSide, tiles; - for( i = this.minLevel; i < this.maxLevel; i++ ){ + for( i = this.minLevel; i <= this.maxLevel; i++ ){ tiles = this.getNumTiles( i ); - tilesPerSide = new $.Point( - Math.floor( rect.x / this.getTileWidth(i) ), - Math.floor( rect.y / this.getTileHeight(i) ) - ); - - if( tiles.x + 1 >= tilesPerSide.x && tiles.y + 1 >= tilesPerSide.y ){ + if (tiles.x > 1 || tiles.y > 1) { break; } } From ed93a329129766eff94651892586aeb450fea152 Mon Sep 17 00:00:00 2001 From: Alexey Tikhonov Date: Wed, 17 May 2017 22:58:50 +0300 Subject: [PATCH 68/77] change regex determining tilesUrl to accept file as iipserver parameter without slash in front --- src/dzitilesource.js | 2 +- test/modules/dzitilesource.js | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/dzitilesource.js b/src/dzitilesource.js index 54b8cb68..443bfaca 100644 --- a/src/dzitilesource.js +++ b/src/dzitilesource.js @@ -140,7 +140,7 @@ $.extend( $.DziTileSource.prototype, $.TileSource.prototype, /** @lends OpenSead if (url && !options.tilesUrl) { options.tilesUrl = url.replace( - /([^\/]+?)(\.(dzi|xml|js))?(\?[^\/]*)?\/?$/, '$1_files/'); + /([^\/]+?)(\.(dzi|xml|js)?(\?[^\/]*)?)?\/?$/, '$1_files/'); if (url.search(/\.(dzi|xml|js)\?/) != -1) { options.queryParams = url.match(/\?.*/); diff --git a/test/modules/dzitilesource.js b/test/modules/dzitilesource.js index e7eb2114..25b0c265 100644 --- a/test/modules/dzitilesource.js +++ b/test/modules/dzitilesource.js @@ -36,6 +36,9 @@ testImplicitTilesUrl( '/iiipsrv?DeepZoom=/path/my.dzi', '/iiipsrv?DeepZoom=/path/my_files/', 'querystring in dzi url should not be ignored before slashes'); + testImplicitTilesUrl( + '/fcg-bin/iipsrv.fcgi?Deepzoom=123test.tif.dzi', '/fcg-bin/iipsrv.fcgi?Deepzoom=123test.tif_files/', + 'filename in querystring does not have to contain slash'); }); }()); From 23cba35ea0a9a93e21b249a59f97105230d06c1e Mon Sep 17 00:00:00 2001 From: larissasmith Date: Thu, 18 May 2017 15:17:02 -0600 Subject: [PATCH 69/77] Clamp device pixel ratio to a minimum of 1 for calculating pixelDensityRatio. A lower value can cause tile drawing issues. --- src/openseadragon.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/openseadragon.js b/src/openseadragon.js index a470de14..ca81739c 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -880,7 +880,7 @@ function OpenSeadragon( options ){ context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || context.backingStorePixelRatio || 1; - return devicePixelRatio / backingStoreRatio; + return Math.max(devicePixelRatio, 1) / backingStoreRatio; } else { return 1; } From aaff33e2678e1db5c06699b048f195d9d47c15e0 Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Fri, 19 May 2017 09:56:55 -0700 Subject: [PATCH 70/77] Changelog for #1199 --- changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.txt b/changelog.txt index 110d1905..5cf4e0ce 100644 --- a/changelog.txt +++ b/changelog.txt @@ -39,6 +39,7 @@ OPENSEADRAGON CHANGELOG * Fixed: zoomTo/zoomBy ignore refPoint if immediately is true (#1184) * Enabled configuration of ImageLoader timeout (#1192) * Viewer.open() now supports an initialPage argument for sequenceMode (#1196) +* Fixed: IIPImageServer didn't work with the latest OSD release (#1199) 2.2.1: From 52525f6697251615a533fb40373200e3c09f9118 Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Fri, 19 May 2017 10:06:48 -0700 Subject: [PATCH 71/77] Changelog for #1200 and comment tweak --- changelog.txt | 1 + src/openseadragon.js | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/changelog.txt b/changelog.txt index 5cf4e0ce..23f7d9d6 100644 --- a/changelog.txt +++ b/changelog.txt @@ -40,6 +40,7 @@ OPENSEADRAGON CHANGELOG * Enabled configuration of ImageLoader timeout (#1192) * Viewer.open() now supports an initialPage argument for sequenceMode (#1196) * Fixed: IIPImageServer didn't work with the latest OSD release (#1199) +* Now clamping pixel ratio density to a minimum of 1, fixing display issues on low density devices (#1200) 2.2.1: diff --git a/src/openseadragon.js b/src/openseadragon.js index fd41bf37..9b07d922 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -875,7 +875,8 @@ function OpenSeadragon( options ){ }; /** - * A ratio comparing the device screen's pixel density to the canvas's backing store pixel density. Defaults to 1 if canvas isn't supported by the browser. + * A ratio comparing the device screen's pixel density to the canvas's backing store pixel density, + * clamped to a minimum of 1. Defaults to 1 if canvas isn't supported by the browser. * @member {Number} pixelDensityRatio * @memberof OpenSeadragon */ From 82b1b3e599d0d65cd7b1c1890af2bd5198f99849 Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Fri, 19 May 2017 11:12:01 -0700 Subject: [PATCH 72/77] getClosestLevel refinement --- src/tilesource.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/tilesource.js b/src/tilesource.js index d4c1e044..e83c4fab 100644 --- a/src/tilesource.js +++ b/src/tilesource.js @@ -320,18 +320,20 @@ $.TileSource.prototype = { /** * @function + * @returns {Number} The highest level in this tile source that can be contained in a single tile. */ getClosestLevel: function() { var i, tiles; - for( i = this.minLevel; i <= this.maxLevel; i++ ){ - tiles = this.getNumTiles( i ); + for (i = this.minLevel + 1; i <= this.maxLevel; i++){ + tiles = this.getNumTiles(i); if (tiles.x > 1 || tiles.y > 1) { break; } } - return Math.max( 0, i - 1 ); + + return i - 1; }, /** From 867837bfef7c98b34c1da13974d23027b4a36446 Mon Sep 17 00:00:00 2001 From: vin Date: Mon, 22 May 2017 17:12:09 +0530 Subject: [PATCH 73/77] Add timeout for navigator item index change handler. Fix for issue# 1130 --- src/navigator.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/navigator.js b/src/navigator.js index 45379fa1..57dc5881 100644 --- a/src/navigator.js +++ b/src/navigator.js @@ -231,8 +231,10 @@ $.Navigator = function( options ){ }); viewer.world.addHandler("item-index-change", function(event) { - var item = _this.world.getItemAt(event.previousIndex); - _this.world.setItemIndex(item, event.newIndex); + window.setTimeout(function(){ + var item = _this.world.getItemAt(event.previousIndex); + _this.world.setItemIndex(item, event.newIndex); + },1); }); viewer.world.addHandler("remove-item", function(event) { From 4eca8aca9813b95b5e1f72f81acecfee439e83cc Mon Sep 17 00:00:00 2001 From: vin Date: Mon, 22 May 2017 17:12:09 +0530 Subject: [PATCH 74/77] Add timeout for navigator item index change handler. Fix for issue# 1130 --- src/navigator.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/navigator.js b/src/navigator.js index 45379fa1..12273b79 100644 --- a/src/navigator.js +++ b/src/navigator.js @@ -231,8 +231,10 @@ $.Navigator = function( options ){ }); viewer.world.addHandler("item-index-change", function(event) { - var item = _this.world.getItemAt(event.previousIndex); - _this.world.setItemIndex(item, event.newIndex); + window.setTimeout(function(){ + var item = _this.world.getItemAt(event.previousIndex); + _this.world.setItemIndex(item, event.newIndex); + }, 1); }); viewer.world.addHandler("remove-item", function(event) { From 5290d02d9a97c472e1b5963e3e76ab0e541b1597 Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Mon, 22 May 2017 10:19:30 -0700 Subject: [PATCH 75/77] Changelog for #1198 --- changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.txt b/changelog.txt index 23f7d9d6..614e4ae1 100644 --- a/changelog.txt +++ b/changelog.txt @@ -41,6 +41,7 @@ OPENSEADRAGON CHANGELOG * Viewer.open() now supports an initialPage argument for sequenceMode (#1196) * Fixed: IIPImageServer didn't work with the latest OSD release (#1199) * Now clamping pixel ratio density to a minimum of 1, fixing display issues on low density devices (#1200) +* Improved calculation for determining which level to load first (#1198) 2.2.1: From 5dc6700f0cff1ba7bc322a23b1f6c2f46572e003 Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Tue, 23 May 2017 10:02:19 -0700 Subject: [PATCH 76/77] Changelog for #1201 --- changelog.txt | 1 + test/demo/basic.html | 45 +++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/changelog.txt b/changelog.txt index 614e4ae1..3d2767bf 100644 --- a/changelog.txt +++ b/changelog.txt @@ -42,6 +42,7 @@ OPENSEADRAGON CHANGELOG * Fixed: IIPImageServer didn't work with the latest OSD release (#1199) * Now clamping pixel ratio density to a minimum of 1, fixing display issues on low density devices (#1200) * Improved calculation for determining which level to load first (#1198) +* Fixed: setItemIndex method not working with navigator inside "open" event (#1201) 2.2.1: diff --git a/test/demo/basic.html b/test/demo/basic.html index e238e5e1..2076612c 100644 --- a/test/demo/basic.html +++ b/test/demo/basic.html @@ -20,12 +20,51 @@
From 7d3a32d372f7afd5fe7c1ef0199746664df22e0d Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Wed, 24 May 2017 09:40:45 -0700 Subject: [PATCH 77/77] Reverting accidental change to basic.html --- test/demo/basic.html | 45 +++----------------------------------------- 1 file changed, 3 insertions(+), 42 deletions(-) diff --git a/test/demo/basic.html b/test/demo/basic.html index 2076612c..e238e5e1 100644 --- a/test/demo/basic.html +++ b/test/demo/basic.html @@ -20,51 +20,12 @@