We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent a6bf521 commit 0bdd67cCopy full SHA for 0bdd67c
lib/classes/canvas.js
@@ -5,7 +5,7 @@
5
"use strict"
6
7
const {RustClass, core, inspect, REPR} = require('./neon'),
8
- {Image, ImageData, pixelSize} = require('./imagery'),
+ {Image, ImageBitmap, ImageData, pixelSize} = require('./imagery'),
9
{toSkMatrix} = require('./geometry')
10
11
class Canvas extends RustClass{
@@ -98,6 +98,10 @@ class Canvas extends RustClass{
98
return `data:${mime};base64,${buffer.toString('base64')}`
99
}
100
101
+ transferToImageBitmap(){
102
+ const buffer = this.toBufferSync("png");
103
+ return new ImageBitmap(buffer);
104
+ }
105
106
[REPR](depth, options) {
107
let {width, height, gpu, engine, pages} = this
lib/classes/imagery.js
@@ -164,6 +164,25 @@ class ImageData{
164
165
166
167
+class ImageBitmap extends Image {
168
+ constructor(buffer) {
169
+ super()
170
+
171
+ if (Buffer.isBuffer(buffer)) {
172
+ this.prop('data', buffer)
173
174
175
176
+ close() {
177
+ // no-op
178
179
180
+ [REPR](depth, options) {
181
+ let {width, height} = this
182
+ return `ImageBitmap ${inspect({width, height}, options)}`
183
184
+}
185
186
function pixelSize(colorType){
187
const bpp = ["Alpha8", "Gray8", "R8UNorm"].includes(colorType) ? 1
188
: ["A16Float", "A16UNorm", "ARGB4444", "R8G8UNorm", "RGB565"].includes(colorType) ? 2
@@ -177,4 +196,4 @@ function pixelSize(colorType){
196
return bpp
197
198
-module.exports = {Image, ImageData, loadImage, loadImageData, pixelSize}
199
+module.exports = {Image, ImageData, ImageBitmap, loadImage, loadImageData, pixelSize}
lib/index.d.ts
@@ -153,6 +153,13 @@ export class Image extends EventEmitter {
153
decode(): Promise<Image>
154
155
156
+export class ImageBitmap {
157
+ constructor(buffer: Buffer)
158
+ get width(): number
159
+ get height(): number
160
+ close(): void
161
162
163
//
// DOMMatrix
lib/index.js
const {Canvas, CanvasGradient, CanvasPattern, CanvasTexture} = require('./classes/canvas'),
- {Image, ImageData, loadImage, loadImageData} = require('./classes/imagery'),
+ {Image, ImageBitmap, ImageData, loadImage, loadImageData} = require('./classes/imagery'),
{DOMPoint, DOMMatrix, DOMRect} = require('./classes/geometry'),
{TextMetrics, FontLibrary} = require('./classes/typography'),
{CanvasRenderingContext2D} = require('./classes/context'),
@@ -14,7 +14,7 @@ const {Canvas, CanvasGradient, CanvasPattern, CanvasTexture} = require('./classe
14
15
module.exports = {
16
Canvas, CanvasGradient, CanvasPattern, CanvasTexture,
17
- Image, ImageData, loadImage, loadImageData,
+ Image, ImageBitmap, ImageData, loadImage, loadImageData,
18
Path2D, DOMPoint, DOMMatrix, DOMRect,
19
FontLibrary, TextMetrics,
20
CanvasRenderingContext2D,
test/canvas.test.js
@@ -4,7 +4,7 @@ const _ = require('lodash'),
4
fs = require('fs'),
tmp = require('tmp'),
glob = require('glob').sync,
- {Canvas, Image} = require('../lib');
+ {Canvas, Image, ImageBitmap} = require('../lib');
const BLACK = [0,0,0,255],
WHITE = [255,255,255,255],
@@ -542,4 +542,10 @@ describe("Canvas", ()=>{
542
})
543
544
545
+ test('transferToImageBitmap', () => {
546
+ const imageBitmap = canvas.transferToImageBitmap()
547
+ expect(imageBitmap).toBeInstanceOf(ImageBitmap)
548
+ expect(imageBitmap.width).toBe(canvas.width)
549
+ expect(imageBitmap.height).toBe(canvas.height)
550
+ })
551
0 commit comments