constructor(options) {
        super(options);

        /**
         * The HTML element (canvas) that this drawer uses for drawing
         * @member {Element} canvas
         * @memberof OpenSeadragon.CanvasDrawer#
         */

        /**
         * The parent element of this Drawer instance, passed in when the Drawer was created.
         * The parent of {@link OpenSeadragon.WebGLDrawer#canvas}.
         * @member {Element} container
         * @memberof OpenSeadragon.CanvasDrawer#
         */

        /**
         * 2d drawing context for {@link OpenSeadragon.CanvasDrawer#canvas}.
         * @member {Object} context
         * @memberof OpenSeadragon.CanvasDrawer#
         * @private
         */
        this.context = this.canvas.getContext('2d');

        // Sketch canvas used to temporarily draw tiles which cannot be drawn directly
        // to the main canvas due to opacity. Lazily initialized.
        this.sketchCanvas = null;
        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 the options or via setImageSmoothinEnabled.
        this._imageSmoothingEnabled = true;

        // Since the tile-drawn and tile-drawing events are fired by this drawer, make sure handlers can be added for them
        this.viewer.allowEventHandler("tile-drawn");
        this.viewer.allowEventHandler("tile-drawing");

    }
@class OpenSeadragon.CanvasDrawer
@extends OpenSeadragon.DrawerBase
@classdesc Default implementation of CanvasDrawer for an {@link OpenSeadragon.Viewer}.
@param {Object} options - Options for this Drawer.
@param {OpenSeadragon.Viewer} options.viewer - The Viewer that owns this Drawer.
@param {OpenSeadragon.Viewport} options.viewport - Reference to Viewer viewport.
@param {Element} options.element - Parent element.
@param {Number} [options.debugGridColor] - See debugGridColor in {@link OpenSeadragon.Options} for details.