Release package version 0.0.5
Some checks failed
CI / build (push) Failing after 16s

Support ImageData
This commit is contained in:
Andrey Kernichniy 2026-03-15 01:00:19 +07:00
parent c0150f85fa
commit 6e062dcadb
6 changed files with 38 additions and 17 deletions

View file

@ -155,7 +155,7 @@ export class Artist {
this._context.restore();
}
drawImage(source: HTMLImageElement, position: IPoint, size: ISize) {
drawImageElement(source: HTMLImageElement, position: IPoint, size: ISize) {
this._context.save();
const scaleY = size.height / source.naturalHeight;
const scaleX = size.width / source.naturalWidth;
@ -167,7 +167,7 @@ export class Artist {
this._context.restore();
}
drawImage2(source: ImageBitmap, position: IPoint, size: ISize) {
drawImageBitmap(source: ImageBitmap, position: IPoint, size: ISize) {
this._context.save();
const scaleY = size.height / source.height;
const scaleX = size.width / source.width;
@ -179,6 +179,20 @@ export class Artist {
this._context.restore();
}
drawImageData(source: ImageData, position: IPoint, size: ISize) {
const osc = new OffscreenCanvas(source.width, source.height).getContext("2d");
osc.putImageData(source, 0, 0);
this._context.save();
const scaleY = size.height / source.height;
const scaleX = size.width / source.width;
this._context.translate(position.x + size.width / 2, position.y + size.height / 2);
this._context.scale(scaleY, scaleX);
this._context.drawImage(osc.canvas, -source.width / 2, -source.height / 2);
this._context.restore();
}
drawPath(path: string) {
const path2d = new Path2D(path);
this._context.stroke(path2d);

View file

@ -93,13 +93,19 @@ export class Canvas2DRenderer implements IRenderer {
this._artist.setTransform(dn.transform);
if (dn.source instanceof HTMLImageElement) {
this._artist.drawImage(
this._artist.drawImageElement(
dn.source,
{ x: dn.rectangle.x, y: dn.rectangle.y },
{ width: dn.rectangle.width, height: dn.rectangle.height },
);
} else if (dn.source instanceof ImageBitmap) {
this._artist.drawImage2(
this._artist.drawImageBitmap(
dn.source,
{ x: dn.rectangle.x, y: dn.rectangle.y },
{ width: dn.rectangle.width, height: dn.rectangle.height },
);
} else if (dn.source instanceof ImageData) {
this._artist.drawImageData(
dn.source,
{ x: dn.rectangle.x, y: dn.rectangle.y },
{ width: dn.rectangle.width, height: dn.rectangle.height },

View file

@ -0,0 +1 @@
export * from "./canvas-2d-renderer";

View file

@ -1,6 +1,6 @@
{
"name": "@gxc-solutions/renderer-canvas-2d",
"version": "0.0.4",
"version": "0.0.5",
"main": "index.js",
"author": "GXC Solutions",
"publishConfig": {
@ -8,7 +8,7 @@
"registry": "https://npm.gxc-solutions.ru"
},
"peerDependencies": {
"@gxc-solutions/math": "^0.0.2",
"@gxc-solutions/renderer-base": "^0.0.10"
"@gxc-solutions/math": "^0.0.3",
"@gxc-solutions/renderer-base": "^0.0.11"
}
}