diff --git a/src/drawer.js b/src/drawer.js index 614e6cbe..3534577e 100644 --- a/src/drawer.js +++ b/src/drawer.js @@ -130,6 +130,10 @@ $.Drawer = function( options ) { // explicit left-align this.container.style.textAlign = "left"; this.container.appendChild( this.canvas ); + + // Image smoothing for canvas rendering (only if canvas is used). + // Canvas default is "true", so this will only be changed if user specified "false". + this._imageSmoothingEnabled = true; }; /** @lends OpenSeadragon.Drawer.prototype */ @@ -254,6 +258,7 @@ $.Drawer.prototype = { this.sketchCanvas.width = sketchCanvasSize.x; this.sketchCanvas.height = sketchCanvasSize.y; } + this._updateImageSmoothingEnabled(); } this._clear(); } @@ -608,7 +613,6 @@ $.Drawer.prototype = { } }, - /** * Turns image smoothing on or off for this viewer. Note: Ignored in some (especially older) browsers that do not support this property. * @@ -619,16 +623,21 @@ $.Drawer.prototype = { */ setImageSmoothingEnabled: function(imageSmoothingEnabled){ if ( this.useCanvas ) { - var context = this.context; - context.mozImageSmoothingEnabled = imageSmoothingEnabled; - context.webkitImageSmoothingEnabled = imageSmoothingEnabled; - context.msImageSmoothingEnabled = imageSmoothingEnabled; - context.imageSmoothingEnabled = imageSmoothingEnabled; - + this._imageSmoothingEnabled = imageSmoothingEnabled; + this._updateImageSmoothingEnabled(); this.viewer.forceRedraw(); } }, + // private + _updateImageSmoothingEnabled: function(){ + var context = this.context; + context.mozImageSmoothingEnabled = this._imageSmoothingEnabled; + context.webkitImageSmoothingEnabled = this._imageSmoothingEnabled; + context.msImageSmoothingEnabled = this._imageSmoothingEnabled; + context.imageSmoothingEnabled = this._imageSmoothingEnabled; + }, + /** * Get the canvas size * @param {Boolean} sketch If set to true return the size of the sketch canvas @@ -686,8 +695,9 @@ $.Drawer.prototype = { var pixelDensityRatio = $.pixelDensityRatio; var viewportSize = this.viewport.getContainerSize(); return { - x: viewportSize.x * pixelDensityRatio, - y: viewportSize.y * pixelDensityRatio + // canvas width and height are integers + x: Math.round(viewportSize.x * pixelDensityRatio), + y: Math.round(viewportSize.y * pixelDensityRatio) }; },