From 1239b22c30679174cb1ea0403db3d583997b5259 Mon Sep 17 00:00:00 2001 From: Tom Date: Fri, 22 Dec 2023 13:46:36 -0500 Subject: [PATCH] updates to viewer --- src/canvasdrawer.js | 4 ++-- src/viewer.js | 6 +++++- src/webgldrawer.js | 6 ++++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/canvasdrawer.js b/src/canvasdrawer.js index 49dd1047..e91a0459 100644 --- a/src/canvasdrawer.js +++ b/src/canvasdrawer.js @@ -62,7 +62,7 @@ class CanvasDrawer extends $.DrawerBase{ this.sketchContext = null; // Image smoothing for canvas rendering (only if canvas is used). - // Canvas default is "true", so this will only be changed if user specifies "false" in setImageSmoothinEnabled. + // Canvas default is "true", so this will only be changed if user specifies "false" in the options or via setImageSmoothinEnabled. this._imageSmoothingEnabled = true; } @@ -138,7 +138,7 @@ class CanvasDrawer extends $.DrawerBase{ * {@link OpenSeadragon.Options} for more explanation. */ setImageSmoothingEnabled(imageSmoothingEnabled){ - this._imageSmoothingEnabled = imageSmoothingEnabled; + this._imageSmoothingEnabled = !!imageSmoothingEnabled; this._updateImageSmoothingEnabled(this.context); this.viewer.forceRedraw(); } diff --git a/src/viewer.js b/src/viewer.js index b32d8015..954bfc56 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -447,6 +447,8 @@ $.Viewer = function( options ) { } let drawerCandidates = Array.isArray(this.drawer) ? this.drawer : [this.drawer]; if (drawerCandidates.length === 0){ + // if an empty array was passed in, throw a warning and use the defaults + // note: if the drawer option is not specified, the defaults will already be set so this won't apply drawerCandidates = [$.DEFAULT_SETTINGS.drawer].flat(); // ensure it is a list $.console.warn('No valid drawers were selected. Using the default value.'); } @@ -487,13 +489,15 @@ $.Viewer = function( options ) { throw('Error with creating the selected drawer(s)'); } + // Pass the imageSmoothingEnabled option along to the drawer + this.drawer.setImageSmoothingEnabled(this.imageSmoothingEnabled); // Overlay container this.overlaysContainer = $.makeNeutralElement( "div" ); this.canvas.appendChild( this.overlaysContainer ); // Now that we have a drawer, see if it supports rotate. If not we need to remove the rotate buttons - if (this.drawer && !this.drawer.canRotate()) { + if (!this.drawer.canRotate()) { // Disable/remove the rotate left/right buttons since they aren't supported if (this.rotateLeft) { i = this.buttonGroup.buttons.indexOf(this.rotateLeft); diff --git a/src/webgldrawer.js b/src/webgldrawer.js index ff0cbd5b..9baccf5d 100644 --- a/src/webgldrawer.js +++ b/src/webgldrawer.js @@ -392,8 +392,10 @@ * @param {Boolean} enabled */ setImageSmoothingEnabled(enabled){ - this._clippingContext.imageSmoothingEnabled = enabled; - this._outputContext.imageSmoothingEnabled = enabled; + //TODO: does imageSmoothingEnabled make sense in the WebGL drawer? + // We aren't scaling small images up to larger ones using context2d canvas operations so it may not apply + this._clippingContext.imageSmoothingEnabled = !!enabled; + this._outputContext.imageSmoothingEnabled = !!enabled; } /**