import type { IBaseRepetition, Scene, ShapePrimitive } from '@urpflanze/core'; import { Canvas } from 'canvas'; import { Emitter } from './Emitter'; import { Timeline } from './Timeline'; import { IDrawerCanvasEvents, IDrawerCanvasOptions, IDrawerCanvasStreamProps, IDrawerPropArguments, TTimelineTickMode } from './types'; /** * @category DrawerCanvas */ export declare type DCanvas = Canvas | HTMLCanvasElement | OffscreenCanvas; declare type TDrawerOptions = Required> & { backgroundImage?: CanvasImageSource; ghostSkipFunction?: (ghostRepetition: IBaseRepetition, currentTime: number) => number; }; /** * * @category DrawerCanvas * @extends {Emitter} */ declare class DrawerCanvas extends Emitter { protected scene?: Scene; protected drawerOptions: TDrawerOptions; protected animation_id: number | null; protected draw_id: number | null; protected redraw_id: number | null; timeline: Timeline; protected canvas: Canvas | HTMLCanvasElement | OffscreenCanvas; protected context: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D | null; constructor(scene?: Scene, canvasOrContainer?: HTMLElement | DCanvas, drawerOptions?: IDrawerCanvasOptions, duration?: number, framerate?: number, tickMode?: TTimelineTickMode); /** * Return option value or default * * @param {K keyof IDrawerCanvasOptions} name * @param {IDrawerCanvasOptions[K]} defaultValue */ getOption(name: K, defaultValue: IDrawerCanvasOptions[K]): IDrawerCanvasOptions[K]; /** * Set Drawer options * * @param {K keyof TDrawerOptions} name * @param {TDrawerOptions[K]} value */ setOption(name: K, value: TDrawerOptions[K]): void; getOptions(): TDrawerOptions; /** * Create instance of canvas (HTMLCanvasElement in browser o Canvas in Node) */ setCanvas(canvasOrContainer?: HTMLElement | DCanvas): void; /** * Return instance of canvas * * @returns canvas */ getCanvas(): Canvas | HTMLCanvasElement | OffscreenCanvas; setScene(scene: Scene): void; getScene(): Scene | undefined; getTimeline(): Timeline; draw(): number; realDraw(options: IDrawerCanvasOptions & { ghostIndex?: number; }): void; /** * Return a drawer value * * @static * @template T * @param {ShapePrimitive} shape * @param {keyof T} key * @param {IDrawerPropArguments} propArguments * @param {*} [defaultValue] * @returns {*} */ static getStreamDrawerProp(shape: ShapePrimitive, key: keyof IDrawerCanvasStreamProps, propArguments: IDrawerPropArguments, defaultValue?: any): any; /** * Create color based on ghostMultiplier * * @static * @param {any} color * @param {number} ghostMultiplier * @return {*} {(string | undefined)} */ static ghostifyColor(color: any, ghostMultiplier: number): string | undefined; /** * Clear canvas, draw background or image (and fit) * * @param context * @param width * @param height * @param background * @param backgroundImage * @param backgroundImageFit */ static clear(context: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D, width: number, height: number, background: string | boolean, backgroundImage?: CanvasImageSource, backgroundImageFit?: 'cover' | 'contain' | 'none'): void; /** * Draw utility lines * * @param context * @param simmetricLines * @param width * @param height * @param color */ static drawSimmetricLines(context: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D, simmetricLines: number, width: number, height: number, color: string): void; } export { DrawerCanvas }; //# sourceMappingURL=DrawerCanvas.d.ts.map