UNPKG

modern-canvas

Version:

A JavaScript WebGL rendering engine. only the ESM.

66 lines (65 loc) 2.75 kB
import type { GlRenderer, RectangleLike } from '../../core'; import type { Material } from '../resources'; import type { Rectangulable } from './interfaces'; import type { Node } from './Node'; import type { SceneTree } from './SceneTree'; import type { TimelineNodeEvents, TimelineNodeProperties } from './TimelineNode'; import { Aabb2D } from '../../core'; import { TimelineNode } from './TimelineNode'; import { Viewport } from './Viewport'; export type EffectMode = 'before' | 'parent' | 'children' | 'transition'; export interface EffectProperties extends TimelineNodeProperties { effectMode?: EffectMode; glsl?: string; glslSrc?: string; material?: Material; } export interface EffectContext { redraw?: boolean; /** parent redraw */ target?: Node; /** transition */ from?: Viewport; to?: Viewport; } export interface EffectEvents extends TimelineNodeEvents { updateRect: []; } export interface Effect { on: <K extends keyof EffectEvents & string>(event: K, listener: (...args: EffectEvents[K]) => void) => this; once: <K extends keyof EffectEvents & string>(event: K, listener: (...args: EffectEvents[K]) => void) => this; off: <K extends keyof EffectEvents & string>(event: K, listener: (...args: EffectEvents[K]) => void) => this; emit: <K extends keyof EffectEvents & string>(event: K, ...args: EffectEvents[K]) => this; } export declare class Effect extends TimelineNode implements Rectangulable { material?: Material; effectMode?: EffectMode; glsl?: string; glslSrc?: string; protected get _effectMode(): EffectMode; /** Viewports */ readonly viewport1: Viewport; readonly viewport2: Viewport; /** Render call */ protected _renderId: number; protected _renderViewport?: Viewport; /** Temporary nodes for transition */ protected _previousSibling?: Node; protected _nextSibling?: Node; protected _rect: RectangleLike; constructor(properties?: Partial<EffectProperties>, children?: Node[]); protected _updateProperty(key: string, value: any, oldValue: any): void; protected _treeEnter(tree: SceneTree): void; protected _treeExit(oldTree: SceneTree): void; protected _onProcessing(): void; protected _onNodeProcessed(node: Node): void; getRect(): Aabb2D; protected _processParent(): void; protected _processChildren(): void; _onProcess(delta?: number): void; protected _renderBefore(renderer: GlRenderer): void; protected _renderTransition(renderer: GlRenderer): void; protected _renderParentOrChildren(renderer: GlRenderer): void; protected _render(renderer: GlRenderer): void; apply(renderer: GlRenderer, viewport: Viewport, context?: EffectContext): void; }