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.
This commit is contained in:
Jonas Jenwald 2021-06-11 16:35:42 +02:00
parent 7b4fa0a038
commit d10b850916
3 changed files with 19 additions and 19 deletions

View File

@ -23,7 +23,14 @@ class BaseCanvasFactory {
} }
create(width, height) { 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) { reset(canvasAndContext, width, height) {
@ -48,6 +55,13 @@ class BaseCanvasFactory {
canvasAndContext.canvas = null; canvasAndContext.canvas = null;
canvasAndContext.context = null; canvasAndContext.context = null;
} }
/**
* @private
*/
_createCanvas(width, height) {
unreachable("Abstract method `_createCanvas` called.");
}
} }
class BaseCMapReaderFactory { class BaseCMapReaderFactory {

View File

@ -37,18 +37,11 @@ class DOMCanvasFactory extends BaseCanvasFactory {
this._document = ownerDocument; this._document = ownerDocument;
} }
create(width, height) { _createCanvas(width, height) {
if (width <= 0 || height <= 0) {
throw new Error("Invalid canvas size");
}
const canvas = this._document.createElement("canvas"); const canvas = this._document.createElement("canvas");
const context = canvas.getContext("2d");
canvas.width = width; canvas.width = width;
canvas.height = height; canvas.height = height;
return { return canvas;
canvas,
context,
};
} }
} }

View File

@ -55,16 +55,9 @@ if ((typeof PDFJSDev === "undefined" || PDFJSDev.test("GENERIC")) && isNodeJS) {
}; };
NodeCanvasFactory = class extends BaseCanvasFactory { NodeCanvasFactory = class extends BaseCanvasFactory {
create(width, height) { _createCanvas(width, height) {
if (width <= 0 || height <= 0) {
throw new Error("Invalid canvas size");
}
const Canvas = __non_webpack_require__("canvas"); const Canvas = __non_webpack_require__("canvas");
const canvas = Canvas.createCanvas(width, height); return Canvas.createCanvas(width, height);
return {
canvas,
context: canvas.getContext("2d"),
};
} }
}; };