mirror of
https://github.com/openseadragon/openseadragon.git
synced 2024-12-01 09:36:08 +03:00
conditional usage of draw() vs event handlers depending on initialization context
This commit is contained in:
parent
9821b4589d
commit
8a4c95ef4b
@ -150,8 +150,15 @@ export class ThreeJSDrawer extends OpenSeadragon.DrawerBase{
|
|||||||
* @param {Array} tiledImages Array of TiledImage objects to draw
|
* @param {Array} tiledImages Array of TiledImage objects to draw
|
||||||
*/
|
*/
|
||||||
draw(tiledImages){
|
draw(tiledImages){
|
||||||
|
if(this.viewer.drawer === this){
|
||||||
|
// tiledImages.forEach(tiledImage => this.)
|
||||||
|
this.drawScene();
|
||||||
|
} else {
|
||||||
// actual drawing is handled by event listeneners
|
// actual drawing is handled by event listeneners
|
||||||
// just mark the tiledImages as having been drawn (possibly unnecessary)
|
// just mark the tiledImages as having been drawn (happens below)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
tiledImages.forEach(tiledImage => tiledImage._needsDraw = false);
|
tiledImages.forEach(tiledImage => tiledImage._needsDraw = false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -214,12 +221,15 @@ export class ThreeJSDrawer extends OpenSeadragon.DrawerBase{
|
|||||||
this.viewer.world.addHandler("remove-item", ev => this._removeTiledImage(ev));
|
this.viewer.world.addHandler("remove-item", ev => this._removeTiledImage(ev));
|
||||||
this.viewer.addHandler("tile-ready", ev => this._tileReadyHandler(ev));
|
this.viewer.addHandler("tile-ready", ev => this._tileReadyHandler(ev));
|
||||||
this.viewer.addHandler("tile-unloaded", ev => this._tileUnloadedHandler(ev));
|
this.viewer.addHandler("tile-unloaded", ev => this._tileUnloadedHandler(ev));
|
||||||
this.viewer.addHandler("viewport-change", () => this._viewportChangeHandler());
|
|
||||||
this.viewer.addHandler("home", () => this._viewportChangeHandler());
|
|
||||||
|
|
||||||
this.viewer.addHandler("update-viewport", () => this.render());
|
if(this.viewer.drawer && this.viewer.drawer !== this){
|
||||||
|
// Add listeners to sync viewer, since this is not the main drawer
|
||||||
|
this.viewer.addHandler("viewport-change", () => this.drawScene());
|
||||||
|
this.viewer.addHandler("home", () => this.drawScene());
|
||||||
|
this.viewer.addHandler("update-viewport", () => this.drawScene());
|
||||||
|
}
|
||||||
|
|
||||||
this._viewportChangeHandler();
|
this.drawScene();
|
||||||
}
|
}
|
||||||
|
|
||||||
_addTiledImage(event){
|
_addTiledImage(event){
|
||||||
@ -485,7 +495,7 @@ export class ThreeJSDrawer extends OpenSeadragon.DrawerBase{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_viewportChangeHandler(){
|
drawScene(){
|
||||||
//this._stats && this._stats.begin();
|
//this._stats && this._stats.begin();
|
||||||
let viewer = this.viewer;
|
let viewer = this.viewer;
|
||||||
|
|
||||||
@ -673,7 +683,7 @@ export class ThreeJSDrawer extends OpenSeadragon.DrawerBase{
|
|||||||
_drawDebugInfo( tiledImage ) {
|
_drawDebugInfo( tiledImage ) {
|
||||||
let scene = this._tiledImageMap[tiledImage[this._uuid]];
|
let scene = this._tiledImageMap[tiledImage[this._uuid]];
|
||||||
let level = scene.userData.currentLevel;
|
let level = scene.userData.currentLevel;
|
||||||
let tiles = tiledImage.getTileInfoForDrawing().filter(tile=>tile.level === level);
|
let tiles = tiledImage.getTilesToDraw().filter(tile=>tile.level === level);
|
||||||
|
|
||||||
// only draw on the highest level tiles
|
// only draw on the highest level tiles
|
||||||
for ( var i = tiles.length - 1; i >= 0; i-- ) {
|
for ( var i = tiles.length - 1; i >= 0; i-- ) {
|
||||||
|
Loading…
Reference in New Issue
Block a user