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;