import { AECompWrapperInstance } from '../../core/resource/type-helper/AECompWrapper/instance.js'; import { Options } from '../../utils/EngineManager/baseEngine.js'; import Base, { BaseLayerProps } from '../BaseLayer/index.js'; import { TTrack } from '../index.js'; import { AssetInfo } from '../type.js'; interface PostionWithPartial { scale?: Partial<{ x: number; y: number; z: number; }>; shift?: Partial<{ x: number; y: number; z: number; }>; anchor?: Partial<{ x: number; y: number; z: number; }>; angle?: Partial<{ x: number; y: number; z: number; }>; } type Range = { start: number; end: number; }; interface ImageLayerType { /** * 媒体资源类型 */ mediaFormType: number; /** * 原始范围 */ srcRange?: Range; /** * 裁剪范围 */ trimRange?: Range; /** * 目标位置起点 */ dstPos?: number; parent: TTrack; createImageComp(): AECompWrapperInstance; setSrcRange(range: Range): void; setTrimRange(range: Range): void; setDstPos(pos: number): void; setPlaceholderComp(comp: AECompWrapperInstance): void; setMediaSourceToComp(comp: AECompWrapperInstance, path: string): Promise; assetInfo: Partial; onChange: (layer: ImageLayerType) => void; } type ImageLayerProps = { mediaFormType: number; uuid?: string; assetInfo?: Partial; dstPos?: number; layerId?: number; trimRange?: Range; srcRange?: Range; crop?: { top: number; left: number; bottom: number; right: number; }; isPrimal?: boolean; position?: PostionWithPartial; } & BaseLayerProps; declare class ImageLayer extends Base implements ImageLayerType { srcRange: Range | undefined; crop?: { top: number; left: number; bottom: number; right: number; }; trimRange?: Range | undefined; dstPos: number; parent: TTrack; assetInfo: Partial; mediaFormType: number; isPrimal: boolean; position?: PostionWithPartial; onChange: (layer: ImageLayerType) => void; constructor(namespace: string, props: ImageLayerProps); /** * 资源初始化 */ init(options?: Options): Promise; /** * 创建视频元素 */ createImageComp: () => AECompWrapperInstance; /** * 设置占位容器内元素 */ setContentElementComp(comp: AECompWrapperInstance): void; /** * 获取占位容器内元素 */ getContentElementComp(): AECompWrapperInstance; /** * 创建视频占位容器 */ setPlaceholderComp(): void; refreshAssetsMapItem: (assetId: string, fileId: string) => Promise; runWithDBPath: (path: string, options?: Options, completed?: boolean) => Promise; /** * 加载本地媒体文件 */ loadFile: (file: File, options?: Options) => Promise; /** * 加载远程媒体文件 */ loadUrl: (url: string, options?: Options) => Promise; /** * 设置裁剪 */ setCrop(cropData: { top: number; bottom: number; left: number; right: number; }, callback?: () => void): void; /** * 清除裁剪 */ clearCrop(callback?: () => void): void; /** * 设置源范围 */ setSrcRange(range: Range): void; /** * 设置裁剪范围 */ setTrimRange(range: Range, syncPlaceholder?: boolean): void; /** * 设置目标起点 */ setDstPos(pos: number): void; /** * 设置媒体源 */ setMediaSourceToComp: (comp: AECompWrapperInstance, path: string) => Promise; /** * 获取图层位置信息 */ getPosition: () => { scale: { x: number; y: number; z: number; }; shift: { x: number; y: number; z: number; }; anchor: { x: number; y: number; z: number; }; angle: { x: number; y: number; z: number; }; }; /** * 设置字幕位置 */ changeTransform: (position: PostionWithPartial, withRefresh?: boolean) => void; /** * 获取当前图层位置信息 */ getCurrentPosition(): { width: number; height: number; x: number; y: number; scaleX: number; scaleY: number; left: number; top: number; }; /** * 重置Layer */ resetLayer(): void; /** * 获取草稿 */ getLayerDraft(): ImageLayerProps; /** * 拷贝合成 */ duplicate(): ImageLayer; } export { ImageLayer }; export type { ImageLayerProps };