51 lines
1.1 KiB
TypeScript
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;
|