1
1
// TypeScript Version: 3.0
2
- /// <reference lib="dom" />
3
2
4
3
import { Readable } from 'stream'
5
4
@@ -80,7 +79,7 @@ export class Canvas {
80
79
81
80
constructor ( width : number , height : number , type ?: 'image' | 'pdf' | 'svg' )
82
81
83
- getContext ( contextId : '2d' , contextAttributes ?: NodeCanvasRenderingContext2DSettings ) : NodeCanvasRenderingContext2D
82
+ getContext ( contextId : '2d' , contextAttributes ?: NodeCanvasRenderingContext2DSettings ) : CanvasRenderingContext2D
84
83
85
84
/**
86
85
* For image canvases, encodes the canvas as a PNG. For PDF canvases,
@@ -128,19 +127,126 @@ export class Canvas {
128
127
toDataURL ( mimeType : 'image/jpeg' , quality : number , cb : ( err : Error | null , result : string ) => void ) : void
129
128
}
130
129
131
- declare class NodeCanvasRenderingContext2D extends CanvasRenderingContext2D {
130
+ export interface TextMetrics {
131
+ readonly actualBoundingBoxAscent : number ;
132
+ readonly actualBoundingBoxDescent : number ;
133
+ readonly actualBoundingBoxLeft : number ;
134
+ readonly actualBoundingBoxRight : number ;
135
+ readonly fontBoundingBoxAscent : number ;
136
+ readonly fontBoundingBoxDescent : number ;
137
+ readonly width : number ;
138
+ }
139
+
140
+ export type CanvasFillRule = 'evenodd' | 'nonzero' ;
141
+
142
+ export type GlobalCompositeOperation =
143
+ | 'clear'
144
+ | 'copy'
145
+ | 'destination'
146
+ | 'source-over'
147
+ | 'destination-over'
148
+ | 'source-in'
149
+ | 'destination-in'
150
+ | 'source-out'
151
+ | 'destination-out'
152
+ | 'source-atop'
153
+ | 'destination-atop'
154
+ | 'xor'
155
+ | 'lighter'
156
+ | 'normal'
157
+ | 'multiply'
158
+ | 'screen'
159
+ | 'overlay'
160
+ | 'darken'
161
+ | 'lighten'
162
+ | 'color-dodge'
163
+ | 'color-burn'
164
+ | 'hard-light'
165
+ | 'soft-light'
166
+ | 'difference'
167
+ | 'exclusion'
168
+ | 'hue'
169
+ | 'saturation'
170
+ | 'color'
171
+ | 'luminosity'
172
+ | 'saturate' ;
173
+
174
+ export type CanvasLineCap = 'butt' | 'round' | 'square' ;
175
+
176
+ export type CanvasLineJoin = 'bevel' | 'miter' | 'round' ;
177
+
178
+ export type CanvasTextBaseline = 'alphabetic' | 'bottom' | 'hanging' | 'ideographic' | 'middle' | 'top' ;
179
+
180
+ export type CanvasTextAlign = 'center' | 'end' | 'left' | 'right' | 'start' ;
181
+
182
+ export class CanvasRenderingContext2D {
183
+ drawImage ( image : Canvas | Image , dx : number , dy : number ) : void
184
+ drawImage ( image : Canvas | Image , dx : number , dy : number , dw : number , dh : number ) : void
185
+ drawImage ( image : Canvas | Image , sx : number , sy : number , sw : number , sh : number , dx : number , dy : number , dw : number , dh : number ) : void
186
+ putImageData ( imagedata : ImageData , dx : number , dy : number ) : void ;
187
+ putImageData ( imagedata : ImageData , dx : number , dy : number , dirtyX : number , dirtyY : number , dirtyWidth : number , dirtyHeight : number ) : void ;
188
+ getImageData ( sx : number , sy : number , sw : number , sh : number ) : ImageData ;
189
+ createImageData ( sw : number , sh : number ) : ImageData ;
190
+ createImageData ( imagedata : ImageData ) : ImageData ;
191
+ /**
192
+ * For PDF canvases, adds another page. If width and/or height are omitted,
193
+ * the canvas's initial size is used.
194
+ */
195
+ addPage ( width ?: number , height ?: number ) : void
196
+ save ( ) : void ;
197
+ restore ( ) : void ;
198
+ rotate ( angle : number ) : void ;
199
+ translate ( x : number , y : number ) : void ;
200
+ transform ( a : number , b : number , c : number , d : number , e : number , f : number ) : void ;
201
+ getTransform ( ) : DOMMatrix ;
202
+ resetTransform ( ) : void ;
203
+ setTransform ( transform ?: DOMMatrix ) : void ;
204
+ isPointInPath ( x : number , y : number , fillRule ?: CanvasFillRule ) : boolean ;
205
+ scale ( x : number , y : number ) : void ;
206
+ clip ( fillRule ?: CanvasFillRule ) : void ;
207
+ fill ( fillRule ?: CanvasFillRule ) : void ;
208
+ stroke ( ) : void ;
209
+ fillText ( text : string , x : number , y : number , maxWidth ?: number ) : void ;
210
+ strokeText ( text : string , x : number , y : number , maxWidth ?: number ) : void ;
211
+ fillRect ( x : number , y : number , w : number , h : number ) : void ;
212
+ strokeRect ( x : number , y : number , w : number , h : number ) : void ;
213
+ clearRect ( x : number , y : number , w : number , h : number ) : void ;
214
+ rect ( x : number , y : number , w : number , h : number ) : void ;
215
+ roundRect ( x : number , y : number , w : number , h : number , radii ?: number | number [ ] ) : void ;
216
+ measureText ( text : string ) : TextMetrics ;
217
+ moveTo ( x : number , y : number ) : void ;
218
+ lineTo ( x : number , y : number ) : void ;
219
+ bezierCurveTo ( cp1x : number , cp1y : number , cp2x : number , cp2y : number , x : number , y : number ) : void ;
220
+ quadraticCurveTo ( cpx : number , cpy : number , x : number , y : number ) : void ;
221
+ beginPath ( ) : void ;
222
+ closePath ( ) : void ;
223
+ arc ( x : number , y : number , radius : number , startAngle : number , endAngle : number , counterclockwise ?: boolean ) : void ;
224
+ arcTo ( x1 : number , y1 : number , x2 : number , y2 : number , radius : number ) : void ;
225
+ ellipse ( x : number , y : number , radiusX : number , radiusY : number , rotation : number , startAngle : number , endAngle : number , counterclockwise ?: boolean ) : void ;
226
+ setLineDash ( segments : number [ ] ) : void ;
227
+ getLineDash ( ) : number [ ] ;
228
+ createPattern ( image : Canvas | Image , repetition : 'repeat' | 'repeat-x' | 'repeat-y' | 'no-repeat' | '' | null ) : CanvasPattern
229
+ createLinearGradient ( x0 : number , y0 : number , x1 : number , y1 : number ) : CanvasGradient ;
230
+ createRadialGradient ( x0 : number , y0 : number , r0 : number , x1 : number , y1 : number , r1 : number ) : CanvasGradient ;
132
231
/**
133
232
* _Non-standard_. Defaults to 'good'. Affects pattern (gradient, image,
134
233
* etc.) rendering quality.
135
234
*/
136
235
patternQuality : 'fast' | 'good' | 'best' | 'nearest' | 'bilinear'
137
-
138
- /**
139
- * _Non-standard_. Defaults to 'good'. Like `patternQuality`, but applies to
140
- * transformations affecting more than just patterns.
141
- */
142
- quality : 'fast' | 'good' | 'best' | 'nearest' | 'bilinear'
143
-
236
+ imageSmoothingEnabled : boolean ;
237
+ globalCompositeOperation : GlobalCompositeOperation ;
238
+ globalAlpha : number ;
239
+ shadowColor : string ;
240
+ miterLimit : number ;
241
+ lineWidth : number ;
242
+ lineCap : CanvasLineCap ;
243
+ lineJoin : CanvasLineJoin ;
244
+ lineDashOffset : number ;
245
+ shadowOffsetX : number ;
246
+ shadowOffsetY : number ;
247
+ shadowBlur : number ;
248
+ /** _Non-standard_. Sets the antialiasing mode. */
249
+ antialias : 'default' | 'gray' | 'none' | 'subpixel'
144
250
/**
145
251
* Defaults to 'path'. The effect depends on the canvas type:
146
252
*
@@ -165,55 +271,27 @@ declare class NodeCanvasRenderingContext2D extends CanvasRenderingContext2D {
165
271
* (aside from using the stroke and fill style, respectively).
166
272
*/
167
273
textDrawingMode : 'path' | 'glyph'
168
-
169
- /** _Non-standard_. Sets the antialiasing mode. */
170
- antialias : 'default' | 'gray' | 'none' | 'subpixel'
171
-
172
- // Standard, but not in the TS lib and needs node-canvas class return type.
173
- /** Returns or sets a `DOMMatrix` for the current transformation matrix. */
174
- currentTransform : NodeCanvasDOMMatrix
175
-
176
- // Standard, but need node-canvas class versions:
177
- getTransform ( ) : NodeCanvasDOMMatrix
178
- setTransform ( a : number , b : number , c : number , d : number , e : number , f : number ) : void
179
- setTransform ( transform ?: NodeCanvasDOMMatrix ) : void
180
- createImageData ( sw : number , sh : number ) : NodeCanvasImageData
181
- createImageData ( imagedata : NodeCanvasImageData ) : NodeCanvasImageData
182
- getImageData ( sx : number , sy : number , sw : number , sh : number ) : NodeCanvasImageData
183
- putImageData ( imagedata : NodeCanvasImageData , dx : number , dy : number ) : void
184
- putImageData ( imagedata : NodeCanvasImageData , dx : number , dy : number , dirtyX : number , dirtyY : number , dirtyWidth : number , dirtyHeight : number ) : void
185
- drawImage ( image : Canvas | Image , dx : number , dy : number ) : void
186
- drawImage ( image : Canvas | Image , dx : number , dy : number , dw : number , dh : number ) : void
187
- drawImage ( image : Canvas | Image , sx : number , sy : number , sw : number , sh : number , dx : number , dy : number , dw : number , dh : number ) : void
188
274
/**
189
- * **Do not use this overload. Use one of the other three overloads.** This
190
- * is a catch-all definition required for compatibility with the base
191
- * `CanvasRenderingContext2D` interface.
192
- */
193
- drawImage ( ...args : any [ ] ) : void
194
- createPattern ( image : Canvas | Image , repetition : 'repeat' | 'repeat-x' | 'repeat-y' | 'no-repeat' | '' | null ) : NodeCanvasCanvasPattern
195
- /**
196
- * **Do not use this overload. Use the other three overload.** This is a
197
- * catch-all definition required for compatibility with the base
198
- * `CanvasRenderingContext2D` interface.
199
- */
200
- createPattern ( ...args : any [ ] ) : NodeCanvasCanvasPattern
201
- createLinearGradient ( x0 : number , y0 : number , x1 : number , y1 : number ) : NodeCanvasCanvasGradient ;
202
- createRadialGradient ( x0 : number , y0 : number , r0 : number , x1 : number , y1 : number , r1 : number ) : NodeCanvasCanvasGradient ;
203
-
204
- /**
205
- * For PDF canvases, adds another page. If width and/or height are omitted,
206
- * the canvas's initial size is used.
275
+ * _Non-standard_. Defaults to 'good'. Like `patternQuality`, but applies to
276
+ * transformations affecting more than just patterns.
207
277
*/
208
- addPage ( width ?: number , height ?: number ) : void
278
+ quality : 'fast' | 'good' | 'best' | 'nearest' | 'bilinear'
279
+ /** Returns or sets a `DOMMatrix` for the current transformation matrix. */
280
+ currentTransform : DOMMatrix
281
+ fillStyle : string | CanvasGradient | CanvasPattern ;
282
+ strokeStyle : string | CanvasGradient | CanvasPattern ;
283
+ font : string ;
284
+ textBaseline : CanvasTextBaseline ;
285
+ textAlign : CanvasTextAlign ;
209
286
}
210
- export { NodeCanvasRenderingContext2D as CanvasRenderingContext2D }
211
287
212
- declare class NodeCanvasCanvasGradient extends CanvasGradient { }
213
- export { NodeCanvasCanvasGradient as CanvasGradient }
288
+ export class CanvasGradient {
289
+ addColorStop ( offset : number , color : string ) : void ;
290
+ }
214
291
215
- declare class NodeCanvasCanvasPattern extends CanvasPattern { }
216
- export { NodeCanvasCanvasPattern as CanvasPattern }
292
+ export class CanvasPattern {
293
+ setTransform ( transform ?: DOMMatrix ) : void ;
294
+ }
217
295
218
296
// This does not extend HTMLImageElement because there are dozens of inherited
219
297
// methods and properties that we do not provide.
@@ -312,14 +390,79 @@ export class JPEGStream extends Readable {}
312
390
/** This class must not be constructed directly; use `canvas.createPDFStream()`. */
313
391
export class PDFStream extends Readable { }
314
392
315
- declare class NodeCanvasDOMMatrix extends DOMMatrix { }
316
- export { NodeCanvasDOMMatrix as DOMMatrix }
393
+ export class DOMPoint {
394
+ w : number ;
395
+ x : number ;
396
+ y : number ;
397
+ z : number ;
398
+ }
317
399
318
- declare class NodeCanvasDOMPoint extends DOMPoint { }
319
- export { NodeCanvasDOMPoint as DOMPoint }
400
+ export class DOMMatrix {
401
+ constructor ( init : string | number [ ] ) ;
402
+ toString ( ) : string ;
403
+ multiply ( other ?: DOMMatrix ) : DOMMatrix ;
404
+ multiplySelf ( other ?: DOMMatrix ) : DOMMatrix ;
405
+ preMultiplySelf ( other ?: DOMMatrix ) : DOMMatrix ;
406
+ translate ( tx ?: number , ty ?: number , tz ?: number ) : DOMMatrix ;
407
+ translateSelf ( tx ?: number , ty ?: number , tz ?: number ) : DOMMatrix ;
408
+ scale ( scaleX ?: number , scaleY ?: number , scaleZ ?: number , originX ?: number , originY ?: number , originZ ?: number ) : DOMMatrix ;
409
+ scale3d ( scale ?: number , originX ?: number , originY ?: number , originZ ?: number ) : DOMMatrix ;
410
+ scale3dSelf ( scale ?: number , originX ?: number , originY ?: number , originZ ?: number ) : DOMMatrix ;
411
+ scaleSelf ( scaleX ?: number , scaleY ?: number , scaleZ ?: number , originX ?: number , originY ?: number , originZ ?: number ) : DOMMatrix ;
412
+ rotateFromVector ( x ?: number , y ?: number ) : DOMMatrix ;
413
+ rotateFromVectorSelf ( x ?: number , y ?: number ) : DOMMatrix ;
414
+ rotate ( rotX ?: number , rotY ?: number , rotZ ?: number ) : DOMMatrix ;
415
+ rotateSelf ( rotX ?: number , rotY ?: number , rotZ ?: number ) : DOMMatrix ;
416
+ rotateAxisAngle ( x ?: number , y ?: number , z ?: number , angle ?: number ) : DOMMatrix ;
417
+ rotateAxisAngleSelf ( x ?: number , y ?: number , z ?: number , angle ?: number ) : DOMMatrix ;
418
+ skewX ( sx ?: number ) : DOMMatrix ;
419
+ skewXSelf ( sx ?: number ) : DOMMatrix ;
420
+ skewY ( sy ?: number ) : DOMMatrix ;
421
+ skewYSelf ( sy ?: number ) : DOMMatrix ;
422
+ flipX ( ) : DOMMatrix ;
423
+ flipY ( ) : DOMMatrix ;
424
+ inverse ( ) : DOMMatrix ;
425
+ invertSelf ( ) : DOMMatrix ;
426
+ setMatrixValue ( transformList : string ) : DOMMatrix ;
427
+ transformPoint ( point ?: DOMPoint ) : DOMPoint ;
428
+ toFloat32Array ( ) : Float32Array ;
429
+ toFloat64Array ( ) : Float64Array ;
430
+ readonly is2D : boolean ;
431
+ readonly isIdentity : boolean ;
432
+ a : number ;
433
+ b : number ;
434
+ c : number ;
435
+ d : number ;
436
+ e : number ;
437
+ f : number ;
438
+ m11 : number ;
439
+ m12 : number ;
440
+ m13 : number ;
441
+ m14 : number ;
442
+ m21 : number ;
443
+ m22 : number ;
444
+ m23 : number ;
445
+ m24 : number ;
446
+ m31 : number ;
447
+ m32 : number ;
448
+ m33 : number ;
449
+ m34 : number ;
450
+ m41 : number ;
451
+ m42 : number ;
452
+ m43 : number ;
453
+ m44 : number ;
454
+ static fromMatrix ( other : DOMMatrix ) : DOMMatrix ;
455
+ static fromFloat32Array ( a : Float32Array ) : DOMMatrix ;
456
+ static fromFloat64Array ( a : Float64Array ) : DOMMatrix ;
457
+ }
320
458
321
- declare class NodeCanvasImageData extends ImageData { }
322
- export { NodeCanvasImageData as ImageData }
459
+ export class ImageData {
460
+ constructor ( sw : number , sh : number ) ;
461
+ constructor ( data : Uint8ClampedArray , sw : number , sh ?: number ) ;
462
+ readonly data : Uint8ClampedArray ;
463
+ readonly height : number ;
464
+ readonly width : number ;
465
+ }
323
466
324
467
// This is marked private, but is exported...
325
468
// export function parseFont(description: string): object
0 commit comments