doodler/init.ts
2023-11-05 01:21:01 -07:00

51 lines
1.1 KiB
TypeScript

import { Doodler } from "./canvas.ts";
import { ZoomableDoodler } from "./zoomableCanvas.ts";
export type postInit = (ctx: CanvasRenderingContext2D) => void;
export function init(
opt: ZoomableDoodlerOptions,
zoomable: true,
postInit?: postInit,
): void;
export function init(
opt: DoodlerOptions,
zoomable: false,
postInit?: postInit,
): void;
export function init(
opt: DoodlerOptions | ZoomableDoodlerOptions,
zoomable: boolean,
postInit?: postInit,
) {
if (window.doodler) {
throw "Doodler has already been initialized in this window";
}
window.doodler = zoomable
? new ZoomableDoodler(opt, postInit)
: new Doodler(opt, postInit);
window.doodler.init();
}
type DoodlerOptionalOptions = {
canvas?: HTMLCanvasElement;
bg?: string;
framerate?: number;
};
type DoodlerRequiredOptions = {
width: number;
height: number;
fillScreen?: false;
} | {
width?: 0;
height?: 0;
fillScreen: true;
};
export type ZoomableDoodlerOptions = {
minScale?: number;
maxScale?: number;
} & DoodlerOptions;
export type DoodlerOptions = DoodlerOptionalOptions & DoodlerRequiredOptions;