conditional usage of draw() vs event handlers depending on initialization context

This commit is contained in:
Tom 2023-03-13 21:39:54 -04:00
parent 1089f79a5b
commit 36084703f0

View File

@ -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){
// actual drawing is handled by event listeneners if(this.viewer.drawer === this){
// just mark the tiledImages as having been drawn (possibly unnecessary) // tiledImages.forEach(tiledImage => this.)
this.drawScene();
} else {
// actual drawing is handled by event listeneners
// 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-- ) {