Skip to content

Commit 60c264e

Browse files
committed
Renamed drawOnCanvas to writeToCanvas.
1 parent 5ddbf77 commit 60c264e

File tree

3 files changed

+73
-73
lines changed

3 files changed

+73
-73
lines changed

src/magick-image.ts

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -359,31 +359,6 @@ export class MagickImage extends NativeInstance {
359359
settings._removeArtifacts(this);
360360
}
361361

362-
drawOnCanvas(canvas: HTMLCanvasElement): void {
363-
canvas.width = this.width;
364-
canvas.height = this.height;
365-
366-
const ctx = canvas.getContext('2d');
367-
if (ctx === null)
368-
return;
369-
370-
PixelCollection._map(this, 'RGBA', q => {
371-
const imageData = ctx.createImageData(this.width, this.height);
372-
373-
let p = 0;
374-
for (let y = 0; y < this.height; y++) {
375-
for (let x = 0; x < this.width; x++) {
376-
imageData.data[p++] = ImageMagick._api.HEAPU8[q++];
377-
imageData.data[p++] = ImageMagick._api.HEAPU8[q++];
378-
imageData.data[p++] = ImageMagick._api.HEAPU8[q++];
379-
imageData.data[p++] = ImageMagick._api.HEAPU8[q++];
380-
}
381-
}
382-
383-
ctx.putImageData(imageData, 0, 0);
384-
});
385-
}
386-
387362
evaluate(channels: Channels, operator: EvaluateOperator, value: number): void;
388363
evaluate(channels: Channels, operator: EvaluateOperator, value: Percentage): void;
389364
evaluate(channels: Channels, geometry: MagickGeometry, operator: EvaluateOperator, value: number): void;
@@ -696,6 +671,31 @@ export class MagickImage extends NativeInstance {
696671
return func(bytes);
697672
}
698673

674+
writeToCanvas(canvas: HTMLCanvasElement): void {
675+
canvas.width = this.width;
676+
canvas.height = this.height;
677+
678+
const ctx = canvas.getContext('2d');
679+
if (ctx === null)
680+
return;
681+
682+
PixelCollection._map(this, 'RGBA', q => {
683+
const imageData = ctx.createImageData(this.width, this.height);
684+
685+
let p = 0;
686+
for (let y = 0; y < this.height; y++) {
687+
for (let x = 0; x < this.width; x++) {
688+
imageData.data[p++] = ImageMagick._api.HEAPU8[q++];
689+
imageData.data[p++] = ImageMagick._api.HEAPU8[q++];
690+
imageData.data[p++] = ImageMagick._api.HEAPU8[q++];
691+
imageData.data[p++] = ImageMagick._api.HEAPU8[q++];
692+
}
693+
}
694+
695+
ctx.putImageData(imageData, 0, 0);
696+
});
697+
}
698+
699699
/** @internal */
700700
static _createFromImage(instance: number, settings: MagickSettings): MagickImage {
701701
return new MagickImage(instance, settings);

tests/magick-image/draw-on-canvas.spec.ts

Lines changed: 0 additions & 48 deletions
This file was deleted.
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
/* Copyright Dirk Lemstra https://github.com/dlemstra/Magick.WASM */
2+
3+
import { ImageMagick } from '../../src/image-magick';
4+
import { JSDOM } from 'jsdom';
5+
import { MagickColors } from '../../src/magick-colors';
6+
import { MagickImage } from '../../src/magick-image';
7+
8+
let image: MagickImage;
9+
10+
beforeEach(() => {
11+
ImageMagick._api = (global as any).native;
12+
image = MagickImage.create();
13+
});
14+
15+
afterEach(() => {
16+
image.dispose();
17+
});
18+
19+
describe('MagickImage#writeToCanvas', () => {
20+
it('should write the image on the canvas', () => {
21+
let canvasData: Uint8ClampedArray | null = null;
22+
23+
const window = new JSDOM().window;
24+
const canvas = window.document.createElement('canvas');
25+
26+
window.HTMLCanvasElement.prototype.getContext = <any> jest.fn(function(contextId: string) {
27+
expect(contextId).toBe('2d');
28+
return {
29+
createImageData: function(width: number, height: number) {
30+
return {
31+
data: new Array(width*height*4)
32+
};
33+
},
34+
putImageData: function(imageData: ImageData, x: number, y: number) {
35+
expect(x).toBe(0);
36+
expect(y).toBe(0);
37+
38+
canvasData = imageData.data;
39+
}
40+
};
41+
});
42+
43+
image.read(MagickColors.Magenta, 1, 1);
44+
image.writeToCanvas(canvas);
45+
46+
expect(canvasData).toEqual([255, 0, 255, 255]);
47+
});
48+
});

0 commit comments

Comments
 (0)