@napi-rs/canvas 0.1.68 → 0.1.70

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.
Files changed (3) hide show
  1. package/README.md +2 -1
  2. package/index.d.ts +275 -5
  3. package/package.json +17 -17
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # `skr canvas`
2
2
 
3
3
  [![CI](https://github.com/Brooooooklyn/canvas/actions/workflows/CI.yaml/badge.svg)](https://github.com/Brooooooklyn/canvas/actions/workflows/CI.yaml)
4
- ![Skia Version](https://img.shields.io/badge/Skia-chrome%2Fm134-hotpink)
4
+ ![Skia Version](https://img.shields.io/badge/Skia-chrome%2Fm136-hotpink)
5
5
  [![install size](https://packagephobia.com/badge?p=@napi-rs/canvas)](https://packagephobia.com/result?p=@napi-rs/canvas)
6
6
  [![Downloads](https://img.shields.io/npm/dm/@napi-rs/canvas.svg?sanitize=true)](https://npmcharts.com/compare/@napi-rs/canvas?minimal=true)
7
7
 
@@ -228,6 +228,7 @@ export class Path2D {
228
228
  getBounds(): [left: number, top: number, right: number, bottom: number]
229
229
  computeTightBounds(): [left: number, top: number, right: number, bottom: number]
230
230
  trim(start: number, end: number, isComplement?: boolean): Path2D
231
+ round(radius: number): Path2D
231
232
  equals(path: Path2D): boolean
232
233
  }
233
234
  ```
package/index.d.ts CHANGED
@@ -3,6 +3,279 @@ import { ReadableStream } from 'node:stream/web'
3
3
  // Clear all type of caches in Skia
4
4
  export function clearAllCache(): void
5
5
 
6
+ interface CanvasRenderingContext2D
7
+ extends CanvasCompositing,
8
+ CanvasDrawPath,
9
+ CanvasFillStrokeStyles,
10
+ CanvasFilters,
11
+ CanvasImageData,
12
+ CanvasImageSmoothing,
13
+ CanvasPath,
14
+ CanvasPathDrawingStyles,
15
+ CanvasRect,
16
+ CanvasSettings,
17
+ CanvasShadowStyles,
18
+ CanvasState,
19
+ CanvasText,
20
+ CanvasTextDrawingStyles,
21
+ CanvasTransform {}
22
+
23
+ interface CanvasState {
24
+ isContextLost(): boolean
25
+ reset(): void
26
+ restore(): void
27
+ save(): void
28
+ }
29
+ interface CanvasShadowStyles {
30
+ shadowBlur: number
31
+ shadowColor: string
32
+ shadowOffsetX: number
33
+ shadowOffsetY: number
34
+ }
35
+ interface CanvasRenderingContext2DSettings {
36
+ alpha?: boolean
37
+ colorSpace?: PredefinedColorSpace
38
+ desynchronized?: boolean
39
+ willReadFrequently?: boolean
40
+ }
41
+ interface CanvasSettings {
42
+ getContextAttributes(): CanvasRenderingContext2DSettings
43
+ }
44
+
45
+ interface CanvasRect {
46
+ clearRect(x: number, y: number, w: number, h: number): void
47
+ fillRect(x: number, y: number, w: number, h: number): void
48
+ strokeRect(x: number, y: number, w: number, h: number): void
49
+ }
50
+
51
+ interface TextMetrics {
52
+ readonly actualBoundingBoxAscent: number
53
+ readonly actualBoundingBoxDescent: number
54
+ readonly actualBoundingBoxLeft: number
55
+ readonly actualBoundingBoxRight: number
56
+ readonly alphabeticBaseline: number
57
+ readonly emHeightAscent: number
58
+ readonly emHeightDescent: number
59
+ readonly fontBoundingBoxAscent: number
60
+ readonly fontBoundingBoxDescent: number
61
+ readonly hangingBaseline: number
62
+ readonly ideographicBaseline: number
63
+ readonly width: number
64
+ }
65
+
66
+ interface CanvasText {
67
+ fillText(text: string, x: number, y: number, maxWidth?: number): void
68
+ measureText(text: string): TextMetrics
69
+ strokeText(text: string, x: number, y: number, maxWidth?: number): void
70
+ }
71
+
72
+ type CanvasLineCap = 'butt' | 'round' | 'square'
73
+ type CanvasLineJoin = 'bevel' | 'miter' | 'round'
74
+
75
+ interface CanvasPathDrawingStyles {
76
+ lineCap: CanvasLineCap
77
+ lineDashOffset: number
78
+ lineJoin: CanvasLineJoin
79
+ lineWidth: number
80
+ miterLimit: number
81
+ getLineDash(): number[]
82
+ setLineDash(segments: number[]): void
83
+ }
84
+
85
+ interface CanvasPath {
86
+ arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void
87
+ arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void
88
+ bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void
89
+ closePath(): void
90
+ ellipse(
91
+ x: number,
92
+ y: number,
93
+ radiusX: number,
94
+ radiusY: number,
95
+ rotation: number,
96
+ startAngle: number,
97
+ endAngle: number,
98
+ counterclockwise?: boolean,
99
+ ): void
100
+ lineTo(x: number, y: number): void
101
+ moveTo(x: number, y: number): void
102
+ quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void
103
+ rect(x: number, y: number, w: number, h: number): void
104
+ roundRect(x: number, y: number, w: number, h: number, radii?: number | DOMPointInit | (number | DOMPointInit)[]): void
105
+ }
106
+
107
+ type ImageSmoothingQuality = 'high' | 'low' | 'medium'
108
+
109
+ interface CanvasImageSmoothing {
110
+ imageSmoothingEnabled: boolean
111
+ imageSmoothingQuality: ImageSmoothingQuality
112
+ }
113
+
114
+ interface CanvasTransform {
115
+ resetTransform(): void
116
+ rotate(angle: number): void
117
+ scale(x: number, y: number): void
118
+ setTransform(a: number, b: number, c: number, d: number, e: number, f: number): void
119
+ setTransform(transform?: DOMMatrix2DInit): void
120
+ transform(a: number, b: number, c: number, d: number, e: number, f: number): void
121
+ translate(x: number, y: number): void
122
+ }
123
+ type PredefinedColorSpace = 'display-p3' | 'srgb'
124
+
125
+ interface ImageDataSettings {
126
+ colorSpace?: PredefinedColorSpace
127
+ }
128
+ interface CanvasImageData {
129
+ createImageData(sw: number, sh: number, settings?: ImageDataSettings): ImageData
130
+ createImageData(imagedata: ImageData): ImageData
131
+ getImageData(sx: number, sy: number, sw: number, sh: number, settings?: ImageDataSettings): ImageData
132
+ putImageData(imagedata: ImageData, dx: number, dy: number): void
133
+ putImageData(
134
+ imagedata: ImageData,
135
+ dx: number,
136
+ dy: number,
137
+ dirtyX: number,
138
+ dirtyY: number,
139
+ dirtyWidth: number,
140
+ dirtyHeight: number,
141
+ ): void
142
+ }
143
+
144
+ type CanvasDirection = 'inherit' | 'ltr' | 'rtl'
145
+ type CanvasFontKerning = 'auto' | 'none' | 'normal'
146
+ type CanvasFontStretch =
147
+ | 'condensed'
148
+ | 'expanded'
149
+ | 'extra-condensed'
150
+ | 'extra-expanded'
151
+ | 'normal'
152
+ | 'semi-condensed'
153
+ | 'semi-expanded'
154
+ | 'ultra-condensed'
155
+ | 'ultra-expanded'
156
+ type CanvasFontVariantCaps =
157
+ | 'all-petite-caps'
158
+ | 'all-small-caps'
159
+ | 'normal'
160
+ | 'petite-caps'
161
+ | 'small-caps'
162
+ | 'titling-caps'
163
+ | 'unicase'
164
+ type CanvasTextAlign = 'center' | 'end' | 'left' | 'right' | 'start'
165
+ type CanvasTextBaseline = 'alphabetic' | 'bottom' | 'hanging' | 'ideographic' | 'middle' | 'top'
166
+ type CanvasTextRendering = 'auto' | 'geometricPrecision' | 'optimizeLegibility' | 'optimizeSpeed'
167
+
168
+ interface CanvasTextDrawingStyles {
169
+ direction: CanvasDirection
170
+ font: string
171
+ fontKerning: CanvasFontKerning
172
+ fontStretch: CanvasFontStretch
173
+ fontVariantCaps: CanvasFontVariantCaps
174
+ letterSpacing: string
175
+ textAlign: CanvasTextAlign
176
+ textBaseline: CanvasTextBaseline
177
+ textRendering: CanvasTextRendering
178
+ wordSpacing: string
179
+ }
180
+
181
+ interface CanvasFilters {
182
+ filter: string
183
+ }
184
+
185
+ interface CanvasFillStrokeStyles {
186
+ fillStyle: string | CanvasGradient | CanvasPattern
187
+ strokeStyle: string | CanvasGradient | CanvasPattern
188
+ createConicGradient(startAngle: number, x: number, y: number): CanvasGradient
189
+ createLinearGradient(x0: number, y0: number, x1: number, y1: number): CanvasGradient
190
+ createRadialGradient(x0: number, y0: number, r0: number, x1: number, y1: number, r1: number): CanvasGradient
191
+ }
192
+
193
+ type CanvasFillRule = 'evenodd' | 'nonzero'
194
+
195
+ interface CanvasDrawPath {
196
+ beginPath(): void
197
+ clip(fillRule?: CanvasFillRule): void
198
+ clip(path: Path2D, fillRule?: CanvasFillRule): void
199
+ fill(fillRule?: CanvasFillRule): void
200
+ fill(path: Path2D, fillRule?: CanvasFillRule): void
201
+ isPointInPath(x: number, y: number, fillRule?: CanvasFillRule): boolean
202
+ isPointInPath(path: Path2D, x: number, y: number, fillRule?: CanvasFillRule): boolean
203
+ isPointInStroke(x: number, y: number): boolean
204
+ isPointInStroke(path: Path2D, x: number, y: number): boolean
205
+ stroke(): void
206
+ stroke(path: Path2D): void
207
+ }
208
+
209
+ type GlobalCompositeOperation =
210
+ | 'color'
211
+ | 'color-burn'
212
+ | 'color-dodge'
213
+ | 'copy'
214
+ | 'darken'
215
+ | 'destination-atop'
216
+ | 'destination-in'
217
+ | 'destination-out'
218
+ | 'destination-over'
219
+ | 'difference'
220
+ | 'exclusion'
221
+ | 'hard-light'
222
+ | 'hue'
223
+ | 'lighten'
224
+ | 'lighter'
225
+ | 'luminosity'
226
+ | 'multiply'
227
+ | 'overlay'
228
+ | 'saturation'
229
+ | 'screen'
230
+ | 'soft-light'
231
+ | 'source-atop'
232
+ | 'source-in'
233
+ | 'source-out'
234
+ | 'source-over'
235
+ | 'xor'
236
+
237
+ interface CanvasCompositing {
238
+ globalAlpha: number
239
+ globalCompositeOperation: GlobalCompositeOperation
240
+ }
241
+
242
+ interface DOMPointInit {
243
+ w?: number
244
+ x?: number
245
+ y?: number
246
+ z?: number
247
+ }
248
+ interface CanvasPattern {
249
+ setTransform(transform?: DOMMatrix2DInit): void
250
+ }
251
+
252
+ interface CanvasGradient {
253
+ addColorStop(offset: number, color: string): void
254
+ }
255
+
256
+ interface DOMRectInit {
257
+ height?: number
258
+ width?: number
259
+ x?: number
260
+ y?: number
261
+ }
262
+
263
+ interface DOMMatrixInit extends DOMMatrix2DInit {
264
+ is2D?: boolean
265
+ m13?: number
266
+ m14?: number
267
+ m23?: number
268
+ m24?: number
269
+ m31?: number
270
+ m32?: number
271
+ m33?: number
272
+ m34?: number
273
+ m43?: number
274
+ m44?: number
275
+ }
276
+
277
+ // ----------- added types
278
+
6
279
  export interface DOMMatrix2DInit {
7
280
  a: number
8
281
  b: number
@@ -240,6 +513,7 @@ export class Path2D {
240
513
  computeTightBounds(): [left: number, top: number, right: number, bottom: number]
241
514
  trim(start: number, end: number, isComplement?: boolean): Path2D
242
515
  dash(on: number, off: number, phase: number): Path2D
516
+ round(radius: number): Path2D
243
517
  equals(path: Path2D): boolean
244
518
  }
245
519
 
@@ -250,11 +524,7 @@ export interface StrokeOptions {
250
524
  join?: StrokeJoin
251
525
  }
252
526
 
253
- export interface SKRSContext2D
254
- extends Omit<
255
- CanvasRenderingContext2D,
256
- 'drawImage' | 'createPattern' | 'getTransform' | 'drawFocusIfNeeded' | 'scrollPathIntoView' | 'canvas'
257
- > {
527
+ export interface SKRSContext2D extends CanvasRenderingContext2D {
258
528
  canvas: Canvas
259
529
  /**
260
530
  * @param startAngle The angle at which to begin the gradient, in radians. Angle measurements start vertically above the centre and move around clockwise.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@napi-rs/canvas",
3
- "version": "0.1.68",
3
+ "version": "0.1.70",
4
4
  "description": "Canvas for Node.js with skia backend",
5
5
  "main": "index.js",
6
6
  "repository": {
@@ -64,7 +64,7 @@
64
64
  "postpublish": "pinst --enable",
65
65
  "test:ci": "ava -c 1",
66
66
  "test": "ava",
67
- "version": "napi version && conventional-changelog -p angular -i CHANGELOG.md -s && git add CHANGELOG.md"
67
+ "version": "napi version && conventional-changelog -p angular -i CHANGELOG.md -s && git add ."
68
68
  },
69
69
  "devDependencies": {
70
70
  "@jimp/core": "^1.0.0",
@@ -81,7 +81,7 @@
81
81
  "@types/semver": "^7",
82
82
  "ava": "^6.1.1",
83
83
  "canvas": "^3.0.0",
84
- "canvaskit-wasm": "^0.39.1",
84
+ "canvaskit-wasm": "^0.40.0",
85
85
  "colorette": "^2.0.20",
86
86
  "conventional-changelog-cli": "^5.0.0",
87
87
  "core-js": "^3.38.0",
@@ -90,15 +90,15 @@
90
90
  "lint-staged": "^15.2.1",
91
91
  "lodash": "^4.17.21",
92
92
  "npm-run-all2": "^7.0.0",
93
- "oxlint": "^0.15.0",
93
+ "oxlint": "^0.16.0",
94
94
  "pinst": "^3.0.0",
95
95
  "png.js": "^0.2.1",
96
96
  "prettier": "^3.2.5",
97
- "pretty-bytes": "^6.1.1",
97
+ "pretty-bytes": "^7.0.0",
98
98
  "semver": "^7.5.4",
99
99
  "skia-canvas": "^2.0.0",
100
100
  "table": "^6.8.1",
101
- "tinybench": "^3.0.6",
101
+ "tinybench": "^4.0.0",
102
102
  "typescript": "^5.3.3"
103
103
  },
104
104
  "lint-staged": {
@@ -136,17 +136,17 @@
136
136
  "singleQuote": true,
137
137
  "arrowParens": "always"
138
138
  },
139
- "packageManager": "yarn@4.7.0",
139
+ "packageManager": "yarn@4.9.1",
140
140
  "optionalDependencies": {
141
- "@napi-rs/canvas-linux-x64-gnu": "0.1.68",
142
- "@napi-rs/canvas-darwin-x64": "0.1.68",
143
- "@napi-rs/canvas-win32-x64-msvc": "0.1.68",
144
- "@napi-rs/canvas-linux-arm-gnueabihf": "0.1.68",
145
- "@napi-rs/canvas-linux-x64-musl": "0.1.68",
146
- "@napi-rs/canvas-linux-arm64-gnu": "0.1.68",
147
- "@napi-rs/canvas-linux-arm64-musl": "0.1.68",
148
- "@napi-rs/canvas-darwin-arm64": "0.1.68",
149
- "@napi-rs/canvas-android-arm64": "0.1.68",
150
- "@napi-rs/canvas-linux-riscv64-gnu": "0.1.68"
141
+ "@napi-rs/canvas-linux-x64-gnu": "0.1.70",
142
+ "@napi-rs/canvas-darwin-x64": "0.1.70",
143
+ "@napi-rs/canvas-win32-x64-msvc": "0.1.70",
144
+ "@napi-rs/canvas-linux-arm-gnueabihf": "0.1.70",
145
+ "@napi-rs/canvas-linux-x64-musl": "0.1.70",
146
+ "@napi-rs/canvas-linux-arm64-gnu": "0.1.70",
147
+ "@napi-rs/canvas-linux-arm64-musl": "0.1.70",
148
+ "@napi-rs/canvas-darwin-arm64": "0.1.70",
149
+ "@napi-rs/canvas-android-arm64": "0.1.70",
150
+ "@napi-rs/canvas-linux-riscv64-gnu": "0.1.70"
151
151
  }
152
152
  }