44 lines
1,021 B
TypeScript
44 lines
1,021 B
TypeScript
import { CollageModes } from "../src/common/collages.ts";
|
|
import {
|
|
CanvasRenderingContext2D,
|
|
Image,
|
|
} from "https://deno.land/x/canvas/mod.ts";
|
|
import { CollageContext, CollageImage } from "../src/common/types.ts";
|
|
|
|
export class ProxyImage implements CollageImage {
|
|
private image: Image;
|
|
public readonly height: number;
|
|
public readonly width: number;
|
|
|
|
constructor(image: Image) {
|
|
this.image = image;
|
|
this.width = image.width();
|
|
this.height = image.height();
|
|
}
|
|
|
|
public get(): Image {
|
|
return this.image;
|
|
}
|
|
}
|
|
|
|
export type CastCanvasRenderingContext =
|
|
& CanvasRenderingContext2D
|
|
& CollageContext;
|
|
|
|
export default class BrowserCollageModes
|
|
extends CollageModes<CastCanvasRenderingContext, ProxyImage> {
|
|
drawImage(
|
|
ctx: CastCanvasRenderingContext,
|
|
image: ProxyImage,
|
|
sx: number,
|
|
sy: number,
|
|
sw: number,
|
|
sh: number,
|
|
dx: number,
|
|
dy: number,
|
|
dw: number,
|
|
dh: number,
|
|
): void {
|
|
ctx.drawImage(image.get(), sx, sy, sw, sh, dx, dy, dw, dh);
|
|
}
|
|
}
|