1 | const Canvas = require('./lib/canvas')
|
2 | const Image = require('./lib/image')
|
3 | const CanvasRenderingContext2D = require('./lib/context2d')
|
4 | const parseFont = require('./lib/parse-font')
|
5 | const packageJson = require('./package.json')
|
6 | const bindings = require('./lib/bindings')
|
7 | const fs = require('fs')
|
8 | const PNGStream = require('./lib/pngstream')
|
9 | const PDFStream = require('./lib/pdfstream')
|
10 | const JPEGStream = require('./lib/jpegstream')
|
11 | const DOMMatrix = require('./lib/DOMMatrix').DOMMatrix
|
12 | const DOMPoint = require('./lib/DOMMatrix').DOMPoint
|
13 |
|
14 | function createCanvas (width, height, type) {
|
15 | return new Canvas(width, height, type)
|
16 | }
|
17 |
|
18 | function createImageData (array, width, height) {
|
19 | return new bindings.ImageData(array, width, height)
|
20 | }
|
21 |
|
22 | function loadImage (src) {
|
23 | return new Promise((resolve, reject) => {
|
24 | const image = new Image()
|
25 |
|
26 | function cleanup () {
|
27 | image.onload = null
|
28 | image.onerror = null
|
29 | }
|
30 |
|
31 | image.onload = () => { cleanup(); resolve(image) }
|
32 | image.onerror = (err) => { cleanup(); reject(err) }
|
33 |
|
34 | image.src = src
|
35 | })
|
36 | }
|
37 |
|
38 |
|
39 |
|
40 |
|
41 |
|
42 |
|
43 |
|
44 |
|
45 | function registerFont (src, fontFace) {
|
46 |
|
47 |
|
48 | return Canvas._registerFont(fs.realpathSync(src), fontFace)
|
49 | }
|
50 |
|
51 | module.exports = {
|
52 | Canvas,
|
53 | Context2d: CanvasRenderingContext2D,
|
54 | CanvasRenderingContext2D,
|
55 | CanvasGradient: bindings.CanvasGradient,
|
56 | CanvasPattern: bindings.CanvasPattern,
|
57 | Image,
|
58 | ImageData: bindings.ImageData,
|
59 | PNGStream,
|
60 | PDFStream,
|
61 | JPEGStream,
|
62 | DOMMatrix,
|
63 | DOMPoint,
|
64 |
|
65 | registerFont,
|
66 | parseFont,
|
67 |
|
68 | createCanvas,
|
69 | createImageData,
|
70 | loadImage,
|
71 |
|
72 | backends: bindings.Backends,
|
73 |
|
74 |
|
75 | version: packageJson.version,
|
76 |
|
77 | cairoVersion: bindings.cairoVersion,
|
78 |
|
79 | jpegVersion: bindings.jpegVersion,
|
80 |
|
81 | gifVersion: bindings.gifVersion ? bindings.gifVersion.replace(/[^.\d]/g, '') : undefined,
|
82 |
|
83 | freetypeVersion: bindings.freetypeVersion
|
84 | }
|