From d10b8509167b26b59b6c968ac3be937b8095ece2 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Fri, 11 Jun 2021 16:35:42 +0200 Subject: [PATCH] Move most functionality in the `create` methods into the `BaseCanvasFactory` This *slightly* reduces the amount of code duplication in the `DOMCanvasFactory.create` and `NodeCanvasFactory.create` methods. --- src/display/base_factory.js | 16 +++++++++++++++- src/display/display_utils.js | 11 ++--------- src/display/node_utils.js | 11 ++--------- 3 files changed, 19 insertions(+), 19 deletions(-) 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); } };