UNPKG

tav-media

Version:

Cross platform media editing framework

204 lines (203 loc) 7.55 kB
/// <reference types="offscreencanvas" /> import { DebugData, PAGScaleMode, PAGViewListenerEvent } from './types'; import { PAGPlayer } from './pag-player'; import { EventManager, Listener } from './utils/event-manager'; import { PAGSurface } from './pag-surface'; import { BackendContext } from './core/backend-context'; import { RenderCanvas } from './core/render-canvas'; import type { PAGComposition } from './pag-composition'; import type { Matrix } from './core/matrix'; export interface PAGViewOptions { /** * Use style to scale canvas. default false. * When target canvas is offscreen canvas, useScale is false. */ useScale?: boolean; /** * Can choose Canvas2D mode in chrome. default false. */ useCanvas2D?: boolean; /** * Render first frame when pag view init. default true. */ firstFrame?: boolean; } export declare class PAGView { /** * Create pag view. * @param file pag file. * @param canvas target render canvas. * @param initOptions pag view options * @returns */ static init(file: PAGComposition, canvas: string | HTMLCanvasElement | OffscreenCanvas, initOptions?: PAGViewOptions): Promise<PAGView | undefined>; protected static makePAGSurface(pagGlContext: BackendContext, width: number, height: number): PAGSurface; /** * The repeat count of player. */ repeatCount: number; /** * Indicates whether or not this pag view is playing. */ isPlaying: boolean; /** * Indicates whether or not this pag view is destroyed. */ isDestroyed: boolean; protected pagViewOptions: PAGViewOptions; protected renderCanvas: RenderCanvas | null; protected pagGlContext: BackendContext | null; protected frameRate: number; protected pagSurface: PAGSurface | null; protected player: PAGPlayer; protected currentFrame: number; protected canvasElement: HTMLCanvasElement | OffscreenCanvas | null; protected timer: number | null; protected flushingNextFrame: boolean; protected playTime: number; protected startTime: number; protected repeatedTimes: number; protected eventManager: EventManager; private canvasContext; private rawWidth; private rawHeight; private debugData; private fpsBuffer; private file; constructor(pagPlayer: PAGPlayer, canvasElement: HTMLCanvasElement | OffscreenCanvas, file: PAGComposition); /** * The duration of current composition in microseconds. */ duration(): number; /** * Adds a listener to the set of listeners that are sent events through the life of an animation, * such as start, repeat, and end. */ addListener(eventName: PAGViewListenerEvent, listener: Listener): void; /** * Removes a listener from the set listening to this animation. */ removeListener(eventName: PAGViewListenerEvent, listener?: Listener): void; /** * Start the animation. */ play(): Promise<void>; /** * Pause the animation. */ pause(): void; /** * Stop the animation. */ stop(notification?: boolean): Promise<void>; /** * Set the number of times the animation will repeat. The default is 1, which means the animation * will play only once. 0 means the animation will play infinity times. */ setRepeatCount(repeatCount: number): void; /** * Returns the current progress of play position, the value is from 0.0 to 1.0. It is applied only * when the composition is not null. */ getProgress(): number; /** * Set the progress of play position, the value is from 0.0 to 1.0. */ setProgress(progress: number): number; /** * Return the value of videoEnabled property. */ videoEnabled(): boolean; /** * If set false, will skip video layer drawing. */ setVideoEnabled(enable: boolean): void; /** * If set to true, PAG renderer caches an internal bitmap representation of the static content for * each layer. This caching can increase performance for layers that contain complex vector content. * The execution speed can be significantly faster depending on the complexity of the content, but * it requires extra graphics memory. The default value is true. */ cacheEnabled(): boolean; /** * Set the value of cacheEnabled property. */ setCacheEnabled(enable: boolean): void; /** * This value defines the scale factor for internal graphics caches, ranges from 0.0 to 1.0. The * scale factors less than 1.0 may result in blurred output, but it can reduce the usage of graphics * memory which leads to better performance. The default value is 1.0. */ cacheScale(): number; /** * Set the value of cacheScale property. */ setCacheScale(value: number): void; /** * The maximum frame rate for rendering. If set to a value less than the actual frame rate from * PAGFile, it drops frames but increases performance. Otherwise, it has no effect. The default * value is 60. */ maxFrameRate(): number; /** * Set the maximum frame rate for rendering. */ setMaxFrameRate(value: number): void; /** * Returns the current scale mode. */ scaleMode(): PAGScaleMode; /** * Specifies the rule of how to scale the pag content to fit the surface size. The matrix * changes when this method is called. */ setScaleMode(value: PAGScaleMode): void; /** * Call this method to render current position immediately. If the play() method is already * called, there is no need to call it. Returns true if the content has changed. */ flush(): Promise<boolean>; /** * Free the cache created by the pag view immediately. Can be called to reduce memory pressure. */ freeCache(): void; /** * Returns the current PAGComposition for PAGView to render as content. */ getComposition(): PAGComposition; /** * Sets a new PAGComposition for PAGView to render as content. * Note: If the composition is already added to another PAGView, it will be removed from * the previous PAGView. */ setComposition(pagComposition: PAGComposition): void; /** * Returns a copy of current matrix. */ matrix(): Matrix; /** * Set the transformation which will be applied to the composition. The scaleMode property * will be set to PAGScaleMode::None when this method is called. */ setMatrix(matrix: Matrix): void; getLayersUnderPoint(localX: number, localY: number): import("./types").Vector<import("./pag-image-layer").PAGImageLayer | import("./pag-layer").PAGLayer | import("./pag-solid-layer").PAGSolidLayer | import("./pag-text-layer").PAGTextLayer>; /** * Update size when changed canvas size. */ updateSize(): void; /** * Prepares the player for the next flush() call. It collects all CPU tasks from the current * progress of the composition and runs them asynchronously in parallel. It is usually used for * speeding up the first frame rendering. */ prepare(): Promise<void>; destroy(): void; getDebugData(): DebugData; setDebugData(data: DebugData): void; protected flushLoop(): Promise<void>; protected flushNextFrame(): Promise<boolean>; protected getNowTime(): number; protected clearTimer(): void; protected resetSize(useScale?: boolean): void; private updateFPS; }