diff --git a/src/display/base_factory.js b/src/display/base_factory.js index 0325779a1..69d0954a9 100644 --- a/src/display/base_factory.js +++ b/src/display/base_factory.js @@ -23,7 +23,14 @@ class BaseCanvasFactory { } create(width, height) { - unreachable("Abstract method `create` called."); + if (width <= 0 || height <= 0) { + throw new Error("Invalid canvas size"); + } + const canvas = this._createCanvas(width, height); + return { + canvas, + context: canvas.getContext("2d"), + }; } reset(canvasAndContext, width, height) { @@ -48,6 +55,13 @@ class BaseCanvasFactory { canvasAndContext.canvas = null; canvasAndContext.context = null; } + + /** + * @private + */ + _createCanvas(width, height) { + unreachable("Abstract method `_createCanvas` called."); + } } class BaseCMapReaderFactory { diff --git a/src/display/display_utils.js b/src/display/display_utils.js index eba1a6fbd..7021c6fd4 100644 --- a/src/display/display_utils.js +++ b/src/display/display_utils.js @@ -37,18 +37,11 @@ class DOMCanvasFactory extends BaseCanvasFactory { this._document = ownerDocument; } - create(width, height) { - if (width <= 0 || height <= 0) { - throw new Error("Invalid canvas size"); - } + _createCanvas(width, height) { const canvas = this._document.createElement("canvas"); - const context = canvas.getContext("2d"); canvas.width = width; canvas.height = height; - return { - canvas, - context, - }; + return canvas; } } diff --git a/src/display/node_utils.js b/src/display/node_utils.js index cf8a387c5..5ea0d42aa 100644 --- a/src/display/node_utils.js +++ b/src/display/node_utils.js @@ -55,16 +55,9 @@ if ((typeof PDFJSDev === "undefined" || PDFJSDev.test("GENERIC")) && isNodeJS) { }; NodeCanvasFactory = class extends BaseCanvasFactory { - create(width, height) { - if (width <= 0 || height <= 0) { - throw new Error("Invalid canvas size"); - } + _createCanvas(width, height) { const Canvas = __non_webpack_require__("canvas"); - const canvas = Canvas.createCanvas(width, height); - return { - canvas, - context: canvas.getContext("2d"), - }; + return Canvas.createCanvas(width, height); } };