diff --git a/src/context2ddrawer.js b/src/context2ddrawer.js index 0b0c2cec..b07d9411 100644 --- a/src/context2ddrawer.js +++ b/src/context2ddrawer.js @@ -375,7 +375,8 @@ class Context2dDrawer extends $.DrawerBase{ if( this.viewer ){ /** - * Raised when a tile is drawn to the canvas + * Raised when a tile is drawn to the canvas. Only valid for + * context2d and html drawers. * * @event tile-drawn * @memberof OpenSeadragon.Viewer diff --git a/src/htmldrawer.js b/src/htmldrawer.js index 43759633..1b3306fa 100644 --- a/src/htmldrawer.js +++ b/src/htmldrawer.js @@ -145,7 +145,8 @@ class HTMLDrawer extends $.DrawerBase{ if( this.viewer ){ /** - * Raised when a tile is drawn to the canvas + * Raised when a tile is drawn to the canvas. Only valid for + * context2d and html drawers. * * @event tile-drawn * @memberof OpenSeadragon.Viewer diff --git a/src/webgldrawer.js b/src/webgldrawer.js index 9c9c7d33..f3387960 100644 --- a/src/webgldrawer.js +++ b/src/webgldrawer.js @@ -342,28 +342,23 @@ $.WebGLDrawer = class WebGLDrawer extends OpenSeadragon.DrawerBase{ this._drawDebugInfo(tilesToDraw, tiledImage, strokeStyle, fillStyle); } - // TO DO: this is necessary for the tests to pass, but doesn't totally make sense for the webgl drawer. - // Iterate over the tiles that were just drawn and fire the tile-drawn event - for(let i = 0; i < tilesToDraw.length; i++){ - let tile = tilesToDraw[i].tile; - - if( this.viewer ){ - /** - * Raised when a tile is drawn to the canvas - * - * @event tile-drawn - * @memberof OpenSeadragon.Viewer - * @type {object} - * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised the event. - * @property {OpenSeadragon.TiledImage} tiledImage - Which TiledImage is being drawn. - * @property {OpenSeadragon.Tile} tile - * @property {?Object} userData - Arbitrary subscriber-defined object. - */ - this.viewer.raiseEvent( 'tile-drawn', { - tiledImage: tiledImage, - tile: tile - }); - } + if( this.viewer ){ + /** + * Raised when a tiled image is drawn to the canvas. Only valid + * for webgl drawer. + * + * @event tiled-image-drawn + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised the event. + * @property {OpenSeadragon.TiledImage} tiledImage - Which TiledImage is being drawn. + * @property {Array} tiles - An array of Tile objects that were drawn. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.viewer.raiseEvent( 'tiled-image-drawn', { + tiledImage: tiledImage, + tiles: tilesToDraw.map(info => info.tile), + }); } }); diff --git a/test/demo/tilesource-swap.html b/test/demo/tilesource-swap.html index 3420927c..176ffbf7 100644 --- a/test/demo/tilesource-swap.html +++ b/test/demo/tilesource-swap.html @@ -80,12 +80,12 @@ // The changeover will look better if we wait for the first tile to be drawn. var tileDrawnHandler = function(event) { if (event.tiledImage === fullImage) { - viewer.removeHandler('tile-drawn', tileDrawnHandler); + viewer.removeHandler('tiled-image-drawn', tileDrawnHandler); viewer.world.removeItem(standin); } }; - viewer.addHandler('tile-drawn', tileDrawnHandler); + viewer.addHandler('tiled-image-drawn', tileDrawnHandler); } }); } diff --git a/test/modules/basic.js b/test/modules/basic.js index 1315d96d..6742bb7b 100644 --- a/test/modules/basic.js +++ b/test/modules/basic.js @@ -322,8 +322,8 @@ height: 155 } ] } ); - viewer.addOnceHandler('tile-drawn', function(event) { - assert.ok(OpenSeadragon.isCanvasTainted(event.tile.getCanvasContext().canvas), + viewer.addOnceHandler('tiled-image-drawn', function(event) { + assert.ok(OpenSeadragon.isCanvasTainted(event.tiles[0].getCanvasContext().canvas), "Canvas should be tainted."); done(); }); @@ -342,8 +342,8 @@ height: 155 } ] } ); - viewer.addOnceHandler('tile-drawn', function(event) { - assert.ok(!OpenSeadragon.isCanvasTainted(event.tile.getCanvasContext().canvas), + viewer.addOnceHandler('tiled-image-drawn', function(event) { + assert.ok(!OpenSeadragon.isCanvasTainted(event.tiles[0].getCanvasContext().canvas), "Canvas should not be tainted."); done(); }); @@ -366,8 +366,8 @@ }, crossOriginPolicy : false } ); - viewer.addOnceHandler('tile-drawn', function(event) { - assert.ok(OpenSeadragon.isCanvasTainted(event.tile.getCanvasContext().canvas), + viewer.addOnceHandler('tiled-image-drawn', function(event) { + assert.ok(OpenSeadragon.isCanvasTainted(event.tiles[0].getCanvasContext().canvas), "Canvas should be tainted."); done(); }); @@ -390,8 +390,8 @@ crossOriginPolicy : "Anonymous" } } ); - viewer.addOnceHandler('tile-drawn', function(event) { - assert.ok(!OpenSeadragon.isCanvasTainted(event.tile.getCanvasContext().canvas), + viewer.addOnceHandler('tiled-image-drawn', function(event) { + assert.ok(!OpenSeadragon.isCanvasTainted(event.tiles[0].getCanvasContext().canvas), "Canvas should not be tainted."); done(); }); diff --git a/test/modules/formats.js b/test/modules/formats.js index 7a30dd84..a41ee49b 100644 --- a/test/modules/formats.js +++ b/test/modules/formats.js @@ -45,12 +45,12 @@ var openHandler = function(event) { viewer.removeHandler('open', openHandler); assert.ok(true, 'Open event was sent'); - viewer.addHandler('tile-drawn', tileDrawnHandler); + viewer.addHandler('tiled-image-drawn', tileDrawnHandler); }; var tileDrawnHandler = function(event) { - viewer.removeHandler('tile-drawn', tileDrawnHandler); - assert.ok(true, 'A tile has been drawn'); + viewer.removeHandler('tiled-image-drawn', tileDrawnHandler); + assert.ok(true, 'A tiled image has been drawn'); viewer.addHandler('close', closeHandler); viewer.close(); }; diff --git a/test/modules/tiledimage.js b/test/modules/tiledimage.js index 6c7cef56..e9675356 100644 --- a/test/modules/tiledimage.js +++ b/test/modules/tiledimage.js @@ -178,12 +178,12 @@ } - viewer.addHandler('tile-drawn', function tileDrawnHandler(event) { - viewer.removeHandler('tile-drawn', tileDrawnHandler); + viewer.addHandler('tiled-image-drawn', function tileDrawnHandler(event) { + viewer.removeHandler('tiled-image-drawn', tileDrawnHandler); handlerCount++; - assert.equal(event.eventSource, viewer, 'sender of tile-drawn event was viewer'); + assert.equal(event.eventSource, viewer, 'sender of tiled-image-drawn event was viewer'); assert.equal(event.tiledImage, image, 'tiledImage of update-level event is correct'); - assert.ok(event.tile, 'tile-drawn event includes tile'); + assert.ok(event.tiles, 'tiled-image-drawn event includes tiles'); assert.equal(handlerCount, expectedHandlers, 'correct number of handlers called'); done(); @@ -198,14 +198,14 @@ // ---------- QUnit.test('reset', function(assert) { var done = assert.async(); - viewer.addHandler('tile-drawn', function updateHandler() { - viewer.removeHandler('tile-drawn', updateHandler); - assert.ok(viewer.tileCache.numTilesLoaded() > 0, 'we have tiles after tile-drawn'); + viewer.addHandler('tiled-image-drawn', function updateHandler() { + viewer.removeHandler('tiled-image-drawn', updateHandler); + assert.ok(viewer.tileCache.numTilesLoaded() > 0, 'we have tiles after tiled-image-drawn'); viewer.world.getItemAt(0).reset(); assert.equal(viewer.tileCache.numTilesLoaded(), 0, 'no tiles after reset'); - viewer.addHandler('tile-drawn', function updateHandler2() { - viewer.removeHandler('tile-drawn', updateHandler2); + viewer.addHandler('tiled-image-drawn', function updateHandler2() { + viewer.removeHandler('tiled-image-drawn', updateHandler2); assert.ok(viewer.tileCache.numTilesLoaded() > 0, 'more tiles load'); viewer.world.getItemAt(0).destroy(); assert.equal(viewer.tileCache.numTilesLoaded(), 0, 'no tiles after destroy'); diff --git a/test/modules/world.js b/test/modules/world.js index 29830f7f..a4c3990f 100644 --- a/test/modules/world.js +++ b/test/modules/world.js @@ -176,9 +176,9 @@ // ---------- QUnit.test('resetItems', function(assert) { var done = assert.async(); - viewer.addHandler('tile-drawn', function updateHandler() { - viewer.removeHandler('tile-drawn', updateHandler); - assert.ok(viewer.tileCache.numTilesLoaded() > 0, 'we have tiles after tile-drawn'); + viewer.addHandler('tiled-image-drawn', function updateHandler() { + viewer.removeHandler('tiled-image-drawn', updateHandler); + assert.ok(viewer.tileCache.numTilesLoaded() > 0, 'we have tiles after tiled-image-drawn'); viewer.world.resetItems(); assert.equal(viewer.tileCache.numTilesLoaded(), 0, 'no tiles after reset'); done();