skia-canvas 2.0.1 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +32 -1
- package/README.md +1 -1
- package/lib/classes/context.js +2 -0
- package/lib/classes/css.js +4 -4
- package/lib/classes/typography.js +4 -5
- package/lib/index.d.ts +471 -54
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,35 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- ## 🥚 ⟩ [Unreleased] -->
|
|
4
4
|
|
|
5
|
+
|
|
6
|
+
## 🥚 ⟩ [v2.0.2] ⟩ Jan 28, 2025
|
|
7
|
+
### New Features
|
|
8
|
+
- Added `fontHinting` attribute (off by default to better match font weights in browser rendering). Setting it to `true` may result in crisper edges but adds some weight to the font.
|
|
9
|
+
|
|
10
|
+
### Bugfixes
|
|
11
|
+
- Text spacing
|
|
12
|
+
- Setting `letterSpacing` no longer indents text at beginning of line
|
|
13
|
+
- `letterSpacing` now properly handles negative values
|
|
14
|
+
- Improved accuracy of [`measureText()`][measureText()]
|
|
15
|
+
- Now uses font metrics' default leading when the line-height is left unspecified in the `ctx.font` string (NB: this is likely to cause vertical shifts for non-`alphabetic` baselines)
|
|
16
|
+
- Updated baseline offset calculations for `middle` & `hanging` to better match browsers
|
|
17
|
+
- The `actualBoundingBox*` & `lines[].x/y/width/height` rectangles returned by measureText() are now just the glyph-occupied area, not the whole line-height of the textblock
|
|
18
|
+
- Fixed the sign on `actualBoundingBoxLeft` (positive values now mean *left* of the origin)
|
|
19
|
+
- `lines[].baseline` now corresponds to the selected `ctx.textBaseline`, previously it was always the alphabetic baseline
|
|
20
|
+
- TypeScript definitions no longer include the entire DOM library (which had been pulling in tons of non-Canvas-related object types that this library doesn't emulate)
|
|
21
|
+
|
|
22
|
+
## 📦 ⟩ [v2.0.1] ⟩ Dec 8, 2024
|
|
23
|
+
|
|
24
|
+
### Misc. Improvements
|
|
25
|
+
- Added support for Intel integrated GPUs that would previously throw an "instantiated but unable to render" error
|
|
26
|
+
- Note: you may need to upgrade to the latest Mesa drivers ([24.3.1 or later][mesa_ppa]), especially for in-window rendering to work correctly on Linux
|
|
27
|
+
- Fixed window initialization for Vulkan GPUs that default to a framebuffer color-format Skia doesn't support
|
|
28
|
+
- Vulkan drivers that fall back to the [Mesa LLVMpipe][mesa_llvmpipe] software renderer now work correctly
|
|
29
|
+
- Optimized font library initialization to improve SVG parsing speed
|
|
30
|
+
|
|
31
|
+
[mesa_ppa]: https://launchpad.net/~kisak/+archive/ubuntu/kisak-mesa
|
|
32
|
+
[mesa_llvmpipe]: https://docs.mesa3d.org/drivers/llvmpipe.html
|
|
33
|
+
|
|
5
34
|
## 📦 ⟩ [v2.0.0] ⟩ Dec 2, 2024
|
|
6
35
|
|
|
7
36
|
### New Features
|
|
@@ -384,7 +413,9 @@
|
|
|
384
413
|
|
|
385
414
|
**Initial public release** 🎉
|
|
386
415
|
|
|
387
|
-
[unreleased]: https://github.com/samizdatco/skia-canvas/compare/v2.0.
|
|
416
|
+
[unreleased]: https://github.com/samizdatco/skia-canvas/compare/v2.0.2...HEAD
|
|
417
|
+
[v2.0.2]: https://github.com/samizdatco/skia-canvas/compare/v2.0.1...v2.0.2
|
|
418
|
+
[v2.0.1]: https://github.com/samizdatco/skia-canvas/compare/v2.0.0...v2.0.1
|
|
388
419
|
[v2.0.0]: https://github.com/samizdatco/skia-canvas/compare/v1.0.2...v2.0.0
|
|
389
420
|
[v1.0.2]: https://github.com/samizdatco/skia-canvas/compare/v1.0.1...v1.0.2
|
|
390
421
|
[v1.0.1]: https://github.com/samizdatco/skia-canvas/compare/v1.0.0...v1.0.1
|
package/README.md
CHANGED
|
@@ -211,7 +211,7 @@ This project is deeply indebted to the work of the [Rust Skia project](https://g
|
|
|
211
211
|
- [@meihuanyu](https://github.com/meihuanyu) contributed filter & path rendering fixes
|
|
212
212
|
|
|
213
213
|
## Copyright
|
|
214
|
-
© 2020–
|
|
214
|
+
© 2020–2025 [Samizdat Drafting Co.](https://samizdat.co)
|
|
215
215
|
|
|
216
216
|
[bool-ops]: https://skia-canvas.org/api/path2d#complement-difference-intersect-union-and-xor
|
|
217
217
|
[c2d_font]: https://skia-canvas.org/api/context#font
|
package/lib/classes/context.js
CHANGED
|
@@ -236,6 +236,8 @@ class CanvasRenderingContext2D extends RustClass{
|
|
|
236
236
|
}
|
|
237
237
|
|
|
238
238
|
// -- non-standard typography extensions --------------------------------------------
|
|
239
|
+
get fontHinting(){ return this.prop("fontHinting") }
|
|
240
|
+
set fontHinting(flag){ this.prop("fontHinting", !!flag) }
|
|
239
241
|
get fontVariant(){ return this.prop('fontVariant') }
|
|
240
242
|
set fontVariant(str){ this.prop('fontVariant', css.variant(str)) }
|
|
241
243
|
get textWrap(){ return this.prop("textWrap") }
|
package/lib/classes/css.js
CHANGED
|
@@ -16,7 +16,7 @@ const styleRE = /^(normal|italic|oblique)$/,
|
|
|
16
16
|
smallcapsRE = /^(normal|small-caps)$/,
|
|
17
17
|
stretchRE = /^(normal|(semi-|extra-|ultra-)?(condensed|expanded))$/,
|
|
18
18
|
namedSizeRE = /(?:xx?-)?small|smaller|medium|larger|(?:xx?-)?large|normal/,
|
|
19
|
-
numSizeRE = /^([\d\.]+)(px|pt|pc|in|cm|mm|%|em|ex|ch|rem|q)/,
|
|
19
|
+
numSizeRE = /^(\-?[\d\.]+)(px|pt|pc|in|cm|mm|%|em|ex|ch|rem|q)/,
|
|
20
20
|
namedWeightRE = /^(normal|bold(er)?|lighter)$/,
|
|
21
21
|
numWeightRE = /^(1000|\d{1,3})$/,
|
|
22
22
|
parameterizedRE = /([\w\-]+)\((.*?)\)/,
|
|
@@ -56,7 +56,7 @@ function parseFont(str){
|
|
|
56
56
|
// so start processing what's been collected
|
|
57
57
|
let [emSize, leading] = splitBy(token, '/'),
|
|
58
58
|
size = parseSize(emSize),
|
|
59
|
-
lineHeight = parseSize(
|
|
59
|
+
lineHeight = leading ? parseSize(leading.replace(/(\d)$/, '$1em'), size) : undefined,
|
|
60
60
|
weight = parseWeight(font.weight),
|
|
61
61
|
family = splitBy(tokens.join(' '), /\s*,\s*/).map(unquote),
|
|
62
62
|
features = font.variant=='small-caps' ? {on:['smcp', 'onum']} : {},
|
|
@@ -64,7 +64,7 @@ function parseFont(str){
|
|
|
64
64
|
|
|
65
65
|
// make sure all the numeric fields have legitimate values
|
|
66
66
|
let invalid = !isFinite(size) ? `font size "${emSize}"`
|
|
67
|
-
: !isFinite(lineHeight) ? `line height "${leading}"`
|
|
67
|
+
: !isFinite(lineHeight) && lineHeight!==undefined ? `line height "${leading}"`
|
|
68
68
|
: !isFinite(weight) ? `font weight "${font.weight}"`
|
|
69
69
|
: family.length==0 ? `font family "${tokens.join(', ')}"`
|
|
70
70
|
: false;
|
|
@@ -78,7 +78,7 @@ function parseFont(str){
|
|
|
78
78
|
(variant !== style) && variant,
|
|
79
79
|
([variant, style].indexOf(weight) == -1) && weight,
|
|
80
80
|
([variant, style, weight].indexOf(stretch) == -1) && stretch,
|
|
81
|
-
`${size}px
|
|
81
|
+
`${size}px${isFinite(lineHeight) ? `/${lineHeight}px`: ''}`,
|
|
82
82
|
family.map(nm => nm.match(/\s/) ? `"${nm}"` : nm).join(", ")
|
|
83
83
|
].filter(Boolean).join(' ')
|
|
84
84
|
})
|
|
@@ -41,19 +41,18 @@ class FontLibrary extends RustClass {
|
|
|
41
41
|
|
|
42
42
|
class TextMetrics{
|
|
43
43
|
constructor([
|
|
44
|
-
|
|
45
|
-
fontAscent, fontDescent, emAscent, emDescent,
|
|
44
|
+
left, right, ascent, descent, fontAscent, fontDescent,
|
|
46
45
|
hanging, alphabetic, ideographic
|
|
47
46
|
], lines){
|
|
48
|
-
readOnly(this, "width",
|
|
47
|
+
readOnly(this, "width", Math.max(0, right) + Math.max(0, left))
|
|
49
48
|
readOnly(this, "actualBoundingBoxLeft", left)
|
|
50
49
|
readOnly(this, "actualBoundingBoxRight", right)
|
|
51
50
|
readOnly(this, "actualBoundingBoxAscent", ascent)
|
|
52
51
|
readOnly(this, "actualBoundingBoxDescent", descent)
|
|
53
52
|
readOnly(this, "fontBoundingBoxAscent", fontAscent)
|
|
54
53
|
readOnly(this, "fontBoundingBoxDescent", fontDescent)
|
|
55
|
-
readOnly(this, "emHeightAscent",
|
|
56
|
-
readOnly(this, "emHeightDescent",
|
|
54
|
+
readOnly(this, "emHeightAscent", fontAscent)
|
|
55
|
+
readOnly(this, "emHeightDescent", fontDescent)
|
|
57
56
|
readOnly(this, "hangingBaseline", hanging)
|
|
58
57
|
readOnly(this, "alphabeticBaseline", alphabetic)
|
|
59
58
|
readOnly(this, "ideographicBaseline", ideographic)
|
package/lib/index.d.ts
CHANGED
|
@@ -1,10 +1,110 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
//
|
|
2
|
+
// Geometry
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
interface DOMPointInit {
|
|
6
|
+
x?: number;
|
|
7
|
+
y?: number;
|
|
8
|
+
z?: number;
|
|
9
|
+
w?: number;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMPoint) */
|
|
13
|
+
interface DOMPoint extends DOMPointReadOnly {
|
|
14
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMPoint/x) */
|
|
15
|
+
x: number;
|
|
16
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMPoint/y) */
|
|
17
|
+
y: number;
|
|
18
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMPoint/z) */
|
|
19
|
+
z: number;
|
|
20
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMPoint/w) */
|
|
21
|
+
w: number;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
declare var DOMPoint: {
|
|
25
|
+
prototype: DOMPoint;
|
|
26
|
+
new(x?: number, y?: number, z?: number, w?: number): DOMPoint;
|
|
27
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMPoint/fromPoint_static) */
|
|
28
|
+
fromPoint(other?: DOMPointInit): DOMPoint;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMPointReadOnly) */
|
|
32
|
+
interface DOMPointReadOnly {
|
|
33
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMPointReadOnly/x) */
|
|
34
|
+
readonly x: number;
|
|
35
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMPointReadOnly/y) */
|
|
36
|
+
readonly y: number;
|
|
37
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMPointReadOnly/z) */
|
|
38
|
+
readonly z: number;
|
|
39
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMPointReadOnly/w) */
|
|
40
|
+
readonly w: number;
|
|
41
|
+
matrixTransform(matrix?: DOMMatrixInit): DOMPoint;
|
|
42
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMPointReadOnly/toJSON) */
|
|
43
|
+
toJSON(): any;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
declare var DOMPointReadOnly: {
|
|
47
|
+
prototype: DOMPointReadOnly;
|
|
48
|
+
new(x?: number, y?: number, z?: number, w?: number): DOMPointReadOnly;
|
|
49
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMPointReadOnly/fromPoint_static) */
|
|
50
|
+
fromPoint(other?: DOMPointInit): DOMPointReadOnly;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMRect) */
|
|
55
|
+
interface DOMRect extends DOMRectReadOnly {
|
|
56
|
+
height: number;
|
|
57
|
+
width: number;
|
|
58
|
+
x: number;
|
|
59
|
+
y: number;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
declare var DOMRect: {
|
|
63
|
+
prototype: DOMRect;
|
|
64
|
+
new(x?: number, y?: number, width?: number, height?: number): DOMRect;
|
|
65
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMRect/fromRect_static) */
|
|
66
|
+
fromRect(other?: DOMRectInit): DOMRect;
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
interface DOMRectList {
|
|
70
|
+
readonly length: number;
|
|
71
|
+
item(index: number): DOMRect | null;
|
|
72
|
+
[index: number]: DOMRect;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
declare var DOMRectList: {
|
|
76
|
+
prototype: DOMRectList;
|
|
77
|
+
new(): DOMRectList;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly) */
|
|
81
|
+
interface DOMRectReadOnly {
|
|
82
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/bottom) */
|
|
83
|
+
readonly bottom: number;
|
|
84
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/height) */
|
|
85
|
+
readonly height: number;
|
|
86
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/left) */
|
|
87
|
+
readonly left: number;
|
|
88
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/right) */
|
|
89
|
+
readonly right: number;
|
|
90
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/top) */
|
|
91
|
+
readonly top: number;
|
|
92
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/width) */
|
|
93
|
+
readonly width: number;
|
|
94
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/x) */
|
|
95
|
+
readonly x: number;
|
|
96
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/y) */
|
|
97
|
+
readonly y: number;
|
|
98
|
+
toJSON(): any;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
declare var DOMRectReadOnly: {
|
|
102
|
+
prototype: DOMRectReadOnly;
|
|
103
|
+
new(x?: number, y?: number, width?: number, height?: number): DOMRectReadOnly;
|
|
104
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/fromRect_static) */
|
|
105
|
+
fromRect(other?: DOMRectInit): DOMRectReadOnly;
|
|
106
|
+
};
|
|
3
107
|
|
|
4
|
-
export class DOMPoint extends globalThis.DOMPoint {}
|
|
5
|
-
export class DOMRect extends globalThis.DOMRect {}
|
|
6
|
-
export class CanvasGradient extends globalThis.CanvasGradient {}
|
|
7
|
-
export class CanvasTexture {}
|
|
8
108
|
|
|
9
109
|
//
|
|
10
110
|
// Images
|
|
@@ -57,6 +157,35 @@ export class Image extends EventEmitter {
|
|
|
57
157
|
// DOMMatrix
|
|
58
158
|
//
|
|
59
159
|
|
|
160
|
+
interface DOMMatrix2DInit {
|
|
161
|
+
a?: number;
|
|
162
|
+
b?: number;
|
|
163
|
+
c?: number;
|
|
164
|
+
d?: number;
|
|
165
|
+
e?: number;
|
|
166
|
+
f?: number;
|
|
167
|
+
m11?: number;
|
|
168
|
+
m12?: number;
|
|
169
|
+
m21?: number;
|
|
170
|
+
m22?: number;
|
|
171
|
+
m41?: number;
|
|
172
|
+
m42?: number;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
interface DOMMatrixInit extends DOMMatrix2DInit {
|
|
176
|
+
is2D?: boolean;
|
|
177
|
+
m13?: number;
|
|
178
|
+
m14?: number;
|
|
179
|
+
m23?: number;
|
|
180
|
+
m24?: number;
|
|
181
|
+
m31?: number;
|
|
182
|
+
m32?: number;
|
|
183
|
+
m33?: number;
|
|
184
|
+
m34?: number;
|
|
185
|
+
m43?: number;
|
|
186
|
+
m44?: number;
|
|
187
|
+
}
|
|
188
|
+
|
|
60
189
|
interface DOMMatrix {
|
|
61
190
|
a: number, b: number, c: number, d: number, e: number, f: number,
|
|
62
191
|
m11: number, m12: number, m13: number, m14: number,
|
|
@@ -144,14 +273,31 @@ export interface SaveOptions extends RenderOptions {
|
|
|
144
273
|
format?: ExportFormat
|
|
145
274
|
}
|
|
146
275
|
|
|
276
|
+
/** [Skia Canvas Docs](https://skia-canvas.org/api/canvas) */
|
|
147
277
|
export class Canvas {
|
|
148
|
-
/** @internal */
|
|
149
|
-
constructor(width?: number, height?: number)
|
|
150
278
|
static contexts: WeakMap<Canvas, readonly CanvasRenderingContext2D[]>
|
|
279
|
+
/**
|
|
280
|
+
* Gets or sets the height of a canvas element on a document.
|
|
281
|
+
*
|
|
282
|
+
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement/height)
|
|
283
|
+
*/
|
|
284
|
+
height: number;
|
|
285
|
+
/**
|
|
286
|
+
* Gets or sets the width of a canvas element on a document.
|
|
287
|
+
*
|
|
288
|
+
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement/width)
|
|
289
|
+
*/
|
|
290
|
+
width: number;
|
|
291
|
+
|
|
292
|
+
/** [Skia Canvas Docs](https://skia-canvas.org/api/canvas#creating-new-canvas-objects) */
|
|
293
|
+
constructor(width?: number, height?: number)
|
|
151
294
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
295
|
+
/**
|
|
296
|
+
* Returns an object that provides methods and properties for drawing and manipulating images and graphics on a canvas element in a document. A context object includes information about colors, line widths, fonts, and other graphic parameters that can be drawn on a canvas.
|
|
297
|
+
* @param type The type of canvas to create. Skia Canvas only supports a 2-D context using canvas.getContext("2d")
|
|
298
|
+
*
|
|
299
|
+
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement/getContext)
|
|
300
|
+
*/
|
|
155
301
|
getContext(type?: "2d"): CanvasRenderingContext2D
|
|
156
302
|
newPage(width?: number, height?: number): CanvasRenderingContext2D
|
|
157
303
|
readonly pages: CanvasRenderingContext2D[]
|
|
@@ -175,19 +321,75 @@ export class Canvas {
|
|
|
175
321
|
}
|
|
176
322
|
|
|
177
323
|
//
|
|
178
|
-
//
|
|
324
|
+
// Patterns
|
|
179
325
|
//
|
|
180
326
|
|
|
327
|
+
/**
|
|
328
|
+
* An opaque object describing a pattern, based on an image, a canvas, or a video, created by the CanvasRenderingContext2D.createPattern() method.
|
|
329
|
+
*
|
|
330
|
+
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasPattern)
|
|
331
|
+
*/
|
|
181
332
|
export class CanvasPattern{
|
|
182
333
|
setTransform(transform: Matrix): void;
|
|
183
334
|
setTransform(a: number, b: number, c: number, d: number, e: number, f: number): void
|
|
184
335
|
}
|
|
185
336
|
|
|
337
|
+
/**
|
|
338
|
+
* An opaque object describing a gradient. It is returned by the methods CanvasRenderingContext2D.createLinearGradient() or CanvasRenderingContext2D.createRadialGradient().
|
|
339
|
+
*
|
|
340
|
+
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasGradient)
|
|
341
|
+
*/
|
|
342
|
+
interface CanvasGradient {
|
|
343
|
+
/**
|
|
344
|
+
* Adds a color stop with the given color to the gradient at the given offset. 0.0 is the offset at one end of the gradient, 1.0 is the offset at the other end.
|
|
345
|
+
*
|
|
346
|
+
* Throws an "IndexSizeError" DOMException if the offset is out of range. Throws a "SyntaxError" DOMException if the color cannot be parsed.
|
|
347
|
+
*
|
|
348
|
+
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasGradient/addColorStop)
|
|
349
|
+
*/
|
|
350
|
+
addColorStop(offset: number, color: string): void;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
declare var CanvasGradient: {
|
|
354
|
+
prototype: CanvasGradient;
|
|
355
|
+
new(): CanvasGradient;
|
|
356
|
+
};
|
|
357
|
+
|
|
358
|
+
|
|
359
|
+
export class CanvasTexture {}
|
|
360
|
+
|
|
361
|
+
|
|
186
362
|
//
|
|
187
363
|
// Context
|
|
188
364
|
//
|
|
189
365
|
|
|
366
|
+
type CanvasDrawable = Canvas | Image | ImageData;
|
|
367
|
+
type CanvasPatternSource = Canvas | Image;
|
|
368
|
+
type CanvasDirection = "inherit" | "ltr" | "rtl";
|
|
369
|
+
type CanvasFillRule = "evenodd" | "nonzero";
|
|
370
|
+
type CanvasFontStretch = "condensed" | "expanded" | "extra-condensed" | "extra-expanded" | "normal" | "semi-condensed" | "semi-expanded" | "ultra-condensed" | "ultra-expanded";
|
|
371
|
+
type CanvasTextAlign = "center" | "end" | "left" | "right" | "start";
|
|
372
|
+
type CanvasTextBaseline = "alphabetic" | "bottom" | "hanging" | "ideographic" | "middle" | "top";
|
|
373
|
+
type CanvasLineCap = "butt" | "round" | "square";
|
|
374
|
+
type CanvasLineJoin = "bevel" | "miter" | "round";
|
|
375
|
+
// type CanvasFontKerning = "auto" | "none" | "normal";
|
|
376
|
+
// type CanvasFontVariantCaps = "all-petite-caps" | "all-small-caps" | "normal" | "petite-caps" | "small-caps" | "titling-caps" | "unicase";
|
|
377
|
+
// type CanvasTextRendering = "auto" | "geometricPrecision" | "optimizeLegibility" | "optimizeSpeed";
|
|
378
|
+
|
|
190
379
|
type Offset = [x: number, y: number] | number
|
|
380
|
+
type QuadOrRect = [x1:number, y1:number, x2:number, y2:number, x3:number, y3:number, x4:number, y4:number] |
|
|
381
|
+
[left:number, top:number, right:number, bottom:number] | [width:number, height:number]
|
|
382
|
+
type GlobalCompositeOperation = "color" | "color-burn" | "color-dodge" | "copy" | "darken" | "destination-atop" | "destination-in" | "destination-out" | "destination-over" | "difference" | "exclusion" | "hard-light" | "hue" | "lighten" | "lighter" | "luminosity" | "multiply" | "overlay" | "saturation" | "screen" | "soft-light" | "source-atop" | "source-in" | "source-out" | "source-over" | "xor";
|
|
383
|
+
type ImageSmoothingQuality = "high" | "low" | "medium";
|
|
384
|
+
|
|
385
|
+
type FontVariantSetting = "normal" |
|
|
386
|
+
/* alternates */ "historical-forms" |
|
|
387
|
+
/* caps */ "small-caps" | "all-small-caps" | "petite-caps" | "all-petite-caps" | "unicase" | "titling-caps" |
|
|
388
|
+
/* numeric */ "lining-nums" | "oldstyle-nums" | "proportional-nums" | "tabular-nums" | "diagonal-fractions" | "stacked-fractions" | "ordinal" | "slashed-zero" |
|
|
389
|
+
/* ligatures */ "common-ligatures" | "no-common-ligatures" | "discretionary-ligatures" | "no-discretionary-ligatures" | "historical-ligatures" | "no-historical-ligatures" | "contextual" | "no-contextual" |
|
|
390
|
+
/* east-asian */ "jis78" | "jis83" | "jis90" | "jis04" | "simplified" | "traditional" | "full-width" | "proportional-width" | "ruby" |
|
|
391
|
+
/* position */ "super" | "sub";
|
|
392
|
+
|
|
191
393
|
|
|
192
394
|
export interface CreateTextureOptions {
|
|
193
395
|
/** The 2D shape to be drawn in a repeating grid with the specified spacing (if omitted, parallel lines will be used) */
|
|
@@ -206,8 +408,12 @@ export interface CreateTextureOptions {
|
|
|
206
408
|
offset?: Offset
|
|
207
409
|
}
|
|
208
410
|
|
|
209
|
-
|
|
210
|
-
|
|
411
|
+
interface CanvasCompositing {
|
|
412
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/globalAlpha) */
|
|
413
|
+
globalAlpha: number;
|
|
414
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation) */
|
|
415
|
+
globalCompositeOperation: GlobalCompositeOperation;
|
|
416
|
+
}
|
|
211
417
|
|
|
212
418
|
interface CanvasDrawImage {
|
|
213
419
|
drawImage(image: CanvasDrawable, dx: number, dy: number): void;
|
|
@@ -218,69 +424,228 @@ interface CanvasDrawImage {
|
|
|
218
424
|
drawCanvas(image: Canvas, sx: number, sy: number, sw: number, sh: number, dx: number, dy: number, dw: number, dh: number): void;
|
|
219
425
|
}
|
|
220
426
|
|
|
427
|
+
interface CanvasDrawPath {
|
|
428
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/beginPath) */
|
|
429
|
+
beginPath(): void;
|
|
430
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/clip) */
|
|
431
|
+
clip(fillRule?: CanvasFillRule): void;
|
|
432
|
+
clip(path: Path2D, fillRule?: CanvasFillRule): void;
|
|
433
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/fill) */
|
|
434
|
+
fill(fillRule?: CanvasFillRule): void;
|
|
435
|
+
fill(path: Path2D, fillRule?: CanvasFillRule): void;
|
|
436
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/isPointInPath) */
|
|
437
|
+
isPointInPath(x: number, y: number, fillRule?: CanvasFillRule): boolean;
|
|
438
|
+
isPointInPath(path: Path2D, x: number, y: number, fillRule?: CanvasFillRule): boolean;
|
|
439
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/isPointInStroke) */
|
|
440
|
+
isPointInStroke(x: number, y: number): boolean;
|
|
441
|
+
isPointInStroke(path: Path2D, x: number, y: number): boolean;
|
|
442
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/stroke) */
|
|
443
|
+
stroke(): void;
|
|
444
|
+
stroke(path: Path2D): void;
|
|
445
|
+
}
|
|
446
|
+
|
|
221
447
|
interface CanvasFillStrokeStyles {
|
|
448
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/fillStyle) */
|
|
222
449
|
fillStyle: string | CanvasGradient | CanvasPattern | CanvasTexture;
|
|
450
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/strokeStyle) */
|
|
223
451
|
strokeStyle: string | CanvasGradient | CanvasPattern | CanvasTexture;
|
|
452
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/createConicGradient) */
|
|
224
453
|
createConicGradient(startAngle: number, x: number, y: number): CanvasGradient;
|
|
454
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/createLinearGradient) */
|
|
225
455
|
createLinearGradient(x0: number, y0: number, x1: number, y1: number): CanvasGradient;
|
|
226
|
-
|
|
456
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/createPattern) */
|
|
227
457
|
createPattern(image: CanvasPatternSource, repetition: string | null): CanvasPattern | null;
|
|
458
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/createRadialGradient) */
|
|
459
|
+
createRadialGradient(x0: number, y0: number, r0: number, x1: number, y1: number, r1: number): CanvasGradient;
|
|
460
|
+
|
|
461
|
+
/** [Skia Canvas Docs](https://skia-canvas.org/api/context#createtexture) */
|
|
228
462
|
createTexture(spacing: Offset, options?: CreateTextureOptions): CanvasTexture
|
|
229
463
|
}
|
|
230
464
|
|
|
231
|
-
|
|
232
|
-
|
|
465
|
+
interface CanvasFilters {
|
|
466
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/filter) */
|
|
467
|
+
filter: string;
|
|
468
|
+
}
|
|
233
469
|
|
|
234
|
-
|
|
470
|
+
interface CanvasImageData {
|
|
471
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/createImageData) */
|
|
472
|
+
createImageData(width: number, height: number, settings?: ImageDataSettings): ImageData;
|
|
473
|
+
createImageData(imagedata: ImageData): ImageData;
|
|
235
474
|
|
|
236
|
-
|
|
475
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/getImageData) */
|
|
476
|
+
getImageData(x: number, y: number, width: number, height: number, settings?: ImageDataSettings): ImageData;
|
|
237
477
|
|
|
238
|
-
|
|
478
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/putImageData) */
|
|
479
|
+
putImageData(imagedata: ImageData, dx: number, dy: number): void;
|
|
480
|
+
putImageData(imagedata: ImageData, dx: number, dy: number, dirtyX: number, dirtyY: number, dirtyWidth: number, dirtyHeight: number): void;
|
|
481
|
+
}
|
|
239
482
|
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
483
|
+
interface CanvasImageSmoothing {
|
|
484
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/imageSmoothingEnabled) */
|
|
485
|
+
imageSmoothingEnabled: boolean;
|
|
486
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/imageSmoothingQuality) */
|
|
487
|
+
imageSmoothingQuality: ImageSmoothingQuality;
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
|
|
491
|
+
interface CanvasPath {
|
|
492
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/arc) */
|
|
493
|
+
arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void;
|
|
494
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/arcTo) */
|
|
495
|
+
arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void;
|
|
496
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/bezierCurveTo) */
|
|
497
|
+
bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void;
|
|
498
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/closePath) */
|
|
499
|
+
closePath(): void;
|
|
500
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/ellipse) */
|
|
501
|
+
ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void;
|
|
502
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/lineTo) */
|
|
503
|
+
lineTo(x: number, y: number): void;
|
|
504
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/moveTo) */
|
|
505
|
+
moveTo(x: number, y: number): void;
|
|
506
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/quadraticCurveTo) */
|
|
507
|
+
quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void;
|
|
508
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/rect) */
|
|
509
|
+
rect(x: number, y: number, w: number, h: number): void;
|
|
510
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/roundRect) */
|
|
511
|
+
roundRect(x: number, y: number, w: number, h: number, radii?: number | DOMPointInit | (number | DOMPointInit)[]): void;
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
|
|
515
|
+
interface CanvasPathDrawingStyles {
|
|
516
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/lineCap) */
|
|
517
|
+
lineCap: CanvasLineCap;
|
|
518
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/lineDashOffset) */
|
|
519
|
+
lineDashOffset: number;
|
|
520
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/lineJoin) */
|
|
521
|
+
lineJoin: CanvasLineJoin;
|
|
522
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/lineWidth) */
|
|
523
|
+
lineWidth: number;
|
|
524
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/miterLimit) */
|
|
525
|
+
miterLimit: number;
|
|
526
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/getLineDash) */
|
|
527
|
+
getLineDash(): number[];
|
|
528
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/setLineDash) */
|
|
529
|
+
setLineDash(segments: Iterable<number>): void;
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
interface CanvasRect {
|
|
533
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/clearRect) */
|
|
534
|
+
clearRect(x: number, y: number, w: number, h: number): void;
|
|
535
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/fillRect) */
|
|
536
|
+
fillRect(x: number, y: number, w: number, h: number): void;
|
|
537
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/strokeRect) */
|
|
538
|
+
strokeRect(x: number, y: number, w: number, h: number): void;
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
interface CanvasShadowStyles {
|
|
542
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/shadowBlur) */
|
|
543
|
+
shadowBlur: number;
|
|
544
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/shadowColor) */
|
|
545
|
+
shadowColor: string;
|
|
546
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/shadowOffsetX) */
|
|
547
|
+
shadowOffsetX: number;
|
|
548
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/shadowOffsetY) */
|
|
549
|
+
shadowOffsetY: number;
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
interface CanvasState {
|
|
553
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/reset) */
|
|
554
|
+
reset(): void;
|
|
555
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/restore) */
|
|
556
|
+
restore(): void;
|
|
557
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/save) */
|
|
558
|
+
save(): void;
|
|
559
|
+
|
|
560
|
+
// UNIMPLEMENTED
|
|
561
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/isContextLost) */
|
|
562
|
+
// isContextLost(): boolean;
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
interface CanvasText {
|
|
566
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/fillText) */
|
|
567
|
+
fillText(text: string, x: number, y: number, maxWidth?: number): void;
|
|
568
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/measureText) */
|
|
569
|
+
measureText(text: string): TextMetrics;
|
|
570
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/strokeText) */
|
|
571
|
+
strokeText(text: string, x: number, y: number, maxWidth?: number): void;
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
interface CanvasTextDrawingStyles {
|
|
575
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/direction) */
|
|
576
|
+
direction: CanvasDirection;
|
|
577
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/font) */
|
|
578
|
+
font: string;
|
|
579
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/fontStretch) */
|
|
580
|
+
fontStretch: CanvasFontStretch;
|
|
581
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/letterSpacing) */
|
|
582
|
+
letterSpacing: string;
|
|
583
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/textAlign) */
|
|
584
|
+
textAlign: CanvasTextAlign;
|
|
585
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/textBaseline) */
|
|
586
|
+
textBaseline: CanvasTextBaseline;
|
|
587
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/wordSpacing) */
|
|
588
|
+
wordSpacing: string;
|
|
589
|
+
|
|
590
|
+
// UNIMPLEMENTED
|
|
591
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/textRendering) */
|
|
592
|
+
// textRendering: CanvasTextRendering;
|
|
593
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/fontKerning) */
|
|
594
|
+
// fontKerning: CanvasFontKerning;
|
|
595
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/fontVariantCaps) */
|
|
596
|
+
// fontVariantCaps: CanvasFontVariantCaps;
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
|
|
600
|
+
interface CanvasTransform {
|
|
601
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/getTransform) */
|
|
602
|
+
getTransform(): DOMMatrix;
|
|
603
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/resetTransform) */
|
|
604
|
+
resetTransform(): void;
|
|
605
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/rotate) */
|
|
606
|
+
rotate(angle: number): void;
|
|
607
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/scale) */
|
|
608
|
+
scale(x: number, y: number): void;
|
|
609
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/setTransform) */
|
|
610
|
+
setTransform(a: number, b: number, c: number, d: number, e: number, f: number): void;
|
|
247
611
|
|
|
612
|
+
/** transform argument extensions (accept DOMMatrix & matrix-like objectx, not just param lists) */
|
|
613
|
+
setTransform(transform?: Matrix): void
|
|
614
|
+
|
|
615
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/transform) */
|
|
616
|
+
transform(a: number, b: number, c: number, d: number, e: number, f: number): void
|
|
617
|
+
transform(transform: Matrix): void
|
|
248
618
|
|
|
249
|
-
|
|
619
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/translate) */
|
|
620
|
+
translate(x: number, y: number): void;
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
/**
|
|
624
|
+
* The CanvasRenderingContext2D interface, part of the Canvas API, provides the 2D rendering context for the drawing surface of a <canvas> element. It is used for drawing shapes, text, images, and other objects.
|
|
625
|
+
*
|
|
626
|
+
* - [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D)
|
|
627
|
+
* - [Skia Canvas Docs](https://skia-canvas.org/api/context)
|
|
628
|
+
*/
|
|
629
|
+
export interface CanvasRenderingContext2D extends CanvasCompositing, CanvasDrawImage, CanvasDrawPath, CanvasFillStrokeStyles, CanvasFilters, CanvasImageData, CanvasImageSmoothing, CanvasPath, CanvasPathDrawingStyles, CanvasRect, CanvasShadowStyles, CanvasState, CanvasText, CanvasTextDrawingStyles, CanvasTransform {
|
|
630
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/canvas) */
|
|
250
631
|
readonly canvas: Canvas
|
|
251
632
|
fontVariant: FontVariantSetting
|
|
633
|
+
fontHinting: boolean
|
|
252
634
|
textWrap: boolean
|
|
253
635
|
textDecoration: string
|
|
254
636
|
lineDashMarker: Path2D | null
|
|
255
637
|
lineDashFit: "move" | "turn" | "follow"
|
|
256
638
|
|
|
257
|
-
//
|
|
258
|
-
setTransform(transform?: Matrix): void
|
|
259
|
-
setTransform(a: number, b: number, c: number, d: number, e: number, f: number): void
|
|
260
|
-
|
|
261
|
-
transform(transform: Matrix): void
|
|
262
|
-
transform(a: number, b: number, c: number, d: number, e: number, f: number): void
|
|
263
|
-
|
|
639
|
+
// skia/chrome beziers & convenience methods
|
|
264
640
|
get currentTransform(): DOMMatrix
|
|
265
641
|
set currentTransform(matrix: Matrix)
|
|
266
642
|
createProjection(quad: QuadOrRect, basis?: QuadOrRect): DOMMatrix
|
|
267
|
-
|
|
268
|
-
// skia/chrome beziers & convenience methods
|
|
269
643
|
conicCurveTo(cpx: number, cpy: number, x: number, y: number, weight: number): void
|
|
270
|
-
roundRect(x: number, y: number, width: number, height: number, radii: number | CornerRadius[]): void
|
|
271
|
-
reset(): void
|
|
272
644
|
// getContextAttributes(): CanvasRenderingContext2DSettings;
|
|
273
645
|
|
|
274
|
-
// add maxWidth to work in conjunction with textWrap
|
|
646
|
+
// add optional maxWidth to work in conjunction with textWrap
|
|
275
647
|
measureText(text: string, maxWidth?: number): TextMetrics
|
|
276
648
|
outlineText(text: string, maxWidth?: number): Path2D
|
|
277
|
-
|
|
278
|
-
// use the local definitions for settings w/ supported ColorType values
|
|
279
|
-
createImageData(width: number, height: number, settings?: ImageDataSettings): ImageData;
|
|
280
|
-
createImageData(imagedata: ImageData): ImageData;
|
|
281
|
-
getImageData(x: number, y: number, width: number, height: number, settings?: ImageDataSettings): ImageData;
|
|
282
|
-
putImageData(imagedata: ImageData, dx: number, dy: number): void;
|
|
283
|
-
putImageData(imagedata: ImageData, dx: number, dy: number, dirtyX: number, dirtyY: number, dirtyWidth: number, dirtyHeight: number): void;
|
|
284
649
|
}
|
|
285
650
|
|
|
286
651
|
//
|
|
@@ -298,10 +663,22 @@ export interface Path2DBounds {
|
|
|
298
663
|
|
|
299
664
|
export type Path2DEdge = [verb: string, ...args: number[]]
|
|
300
665
|
|
|
301
|
-
|
|
302
|
-
|
|
666
|
+
/**
|
|
667
|
+
* This Canvas 2D API interface is used to declare a path that can then be used on a CanvasRenderingContext2D object. The path methods of the CanvasRenderingContext2D interface are also present on this interface, which gives you the convenience of being able to retain and replay your path whenever desired.
|
|
668
|
+
*
|
|
669
|
+
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Path2D)
|
|
670
|
+
*/
|
|
671
|
+
interface Path2D extends CanvasPath {
|
|
303
672
|
readonly bounds: Path2DBounds
|
|
304
673
|
readonly edges: readonly Path2DEdge[]
|
|
674
|
+
d: string
|
|
675
|
+
|
|
676
|
+
/**
|
|
677
|
+
* Adds the path given by the argument to the path
|
|
678
|
+
*
|
|
679
|
+
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Path2D/addPath)
|
|
680
|
+
*/
|
|
681
|
+
addPath(path: Path2D, transform?: DOMMatrix2DInit): void;
|
|
305
682
|
|
|
306
683
|
contains(x: number, y: number): boolean
|
|
307
684
|
conicCurveTo(
|
|
@@ -312,8 +689,6 @@ export class Path2D extends globalThis.Path2D {
|
|
|
312
689
|
weight: number
|
|
313
690
|
): void
|
|
314
691
|
|
|
315
|
-
roundRect(x: number, y: number, width: number, height: number, radii: number | CornerRadius[]): void
|
|
316
|
-
|
|
317
692
|
complement(otherPath: Path2D): Path2D
|
|
318
693
|
difference(otherPath: Path2D): Path2D
|
|
319
694
|
intersect(otherPath: Path2D): Path2D
|
|
@@ -334,14 +709,56 @@ export class Path2D extends globalThis.Path2D {
|
|
|
334
709
|
unwind(): Path2D
|
|
335
710
|
}
|
|
336
711
|
|
|
712
|
+
declare var Path2D: {
|
|
713
|
+
prototype: Path2D;
|
|
714
|
+
new(path?: Path2D | string): Path2D;
|
|
715
|
+
}
|
|
716
|
+
|
|
337
717
|
//
|
|
338
718
|
// Typography
|
|
339
719
|
//
|
|
340
720
|
|
|
341
|
-
|
|
342
|
-
|
|
721
|
+
|
|
722
|
+
/**
|
|
723
|
+
* The dimensions of a piece of text in the canvas, as created by the CanvasRenderingContext2D.measureText() method.
|
|
724
|
+
*
|
|
725
|
+
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextMetrics)
|
|
726
|
+
*/
|
|
727
|
+
interface TextMetrics {
|
|
728
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextMetrics/actualBoundingBoxAscent) */
|
|
729
|
+
readonly actualBoundingBoxAscent: number;
|
|
730
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextMetrics/actualBoundingBoxDescent) */
|
|
731
|
+
readonly actualBoundingBoxDescent: number;
|
|
732
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextMetrics/actualBoundingBoxLeft) */
|
|
733
|
+
readonly actualBoundingBoxLeft: number;
|
|
734
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextMetrics/actualBoundingBoxRight) */
|
|
735
|
+
readonly actualBoundingBoxRight: number;
|
|
736
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextMetrics/alphabeticBaseline) */
|
|
737
|
+
readonly alphabeticBaseline: number;
|
|
738
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextMetrics/emHeightAscent) */
|
|
739
|
+
readonly emHeightAscent: number;
|
|
740
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextMetrics/emHeightDescent) */
|
|
741
|
+
readonly emHeightDescent: number;
|
|
742
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextMetrics/fontBoundingBoxAscent) */
|
|
743
|
+
readonly fontBoundingBoxAscent: number;
|
|
744
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextMetrics/fontBoundingBoxDescent) */
|
|
745
|
+
readonly fontBoundingBoxDescent: number;
|
|
746
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextMetrics/hangingBaseline) */
|
|
747
|
+
readonly hangingBaseline: number;
|
|
748
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextMetrics/ideographicBaseline) */
|
|
749
|
+
readonly ideographicBaseline: number;
|
|
750
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextMetrics/width) */
|
|
751
|
+
readonly width: number;
|
|
752
|
+
|
|
753
|
+
/** Individual metrics for each line (only applicable when context's textWrap is set to `true` ) */
|
|
754
|
+
readonly lines: TextMetricsLine[]
|
|
343
755
|
}
|
|
344
756
|
|
|
757
|
+
declare var TextMetrics: {
|
|
758
|
+
prototype: TextMetrics;
|
|
759
|
+
new(): TextMetrics;
|
|
760
|
+
};
|
|
761
|
+
|
|
345
762
|
export interface TextMetricsLine {
|
|
346
763
|
readonly x: number
|
|
347
764
|
readonly y: number
|
|
@@ -367,7 +784,7 @@ export interface Font {
|
|
|
367
784
|
file: string
|
|
368
785
|
}
|
|
369
786
|
|
|
370
|
-
|
|
787
|
+
interface FontLibrary {
|
|
371
788
|
families: readonly string[]
|
|
372
789
|
family(name: string): FontFamily | undefined
|
|
373
790
|
has(familyName: string): boolean
|