import { ColorRGBInstance, TextGradientStyleInstance, BubbleTextSourceInstance, Vector } from '../../core/resource/type-helper/base/instcance.js'; import { AEStyleInstance } from '../../core/resource/type-helper/AEStyle/instance.js'; import { TTrack } from '../index.js'; import { Options } from '../../utils/EngineManager/baseEngine.js'; import Base, { BaseLayerProps } from '../BaseLayer/index.js'; import { IFontStyle, IThemeStyle } from '../CaptionLayer/index.js'; interface CommonStyle { color: { R: number; G: number; B: number; }; opacity: number; } interface StyleConfig { fill: Partial; shadow: Partial; stroke: Partial; background: Partial<{ showBoard: boolean; boardRound: number; color: { R: number; G: number; B: number; }; opacity: number; }>; } type AssetInfo = { text: string; fontUrl: string; themeUrl: string; fontId: string; themeId: string; defaultFontListConfig?: Array<{ fontId: string; fontUrl: string; }>; }; 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 TextLayerProps = { uuid?: string; assetInfo: AssetInfo; srcRange?: Range; trimRange?: Range; destRange?: Range; dstPos?: number; layerId?: number; styleConfig?: StyleConfig; fontStyle?: IFontStyle; fontSize?: number; lineHeight?: number; position?: PostionWithPartial; defaultBottom?: number; isPrimal?: boolean; } & BaseLayerProps; type Range = { start: number; end: number; }; declare class TextLayer extends Base { srcRange?: Range; trimRange?: Range; destRange?: Range; dstPos: number; parent: TTrack; assetInfo: AssetInfo; styleConfig: StyleConfig | undefined; fontStyle: IFontStyle; fontSize: number; lineHeight: number; position?: PostionWithPartial; isPrimal: boolean; size: { width: number; height: number; } | undefined; constructor(namespace: string, props: TextLayerProps); init(options?: Options): Promise; /** * 初始化资源(下载&存储DB) */ prepareAssets: (assetsConfig: Array<{ assetId: string; url: string; type: "font" | "theme" | "zip"; }>, options?: Options) => Promise; /** * 初始化主题资源 */ prepareThemeAssets: (themePath: string) => Promise<{ fontFilePath: string; themeFilePath: string; } | null>; /** * 创建颜色 */ createColor: (config: { R: number; G: number; B: number; }) => ColorRGBInstance; /** * 创建渐变 */ createGradient: (config: { angle: number; scale: number; point: Array<{ position: number; color: { R: number; G: number; B: number; }; }>; }) => TextGradientStyleInstance; /** * 打开样式实例 */ getStyle: (path: string) => AEStyleInstance; /** * 设置字体样式 */ changeFontStyle: (style: IFontStyle, withRefresh?: boolean) => void; /** * 设置字体大小 */ changeFontSize: (fontSize: number, withRefresh?: boolean) => void; private initAssets; /** * 设置字体 */ changeFont: (config: { fontId: string; fontUrl: string; }, options?: Options, withRefresh?: boolean) => Promise; /** * 设置字体主题 */ changeTheme: (assetsInfo: { themeId: string; themeUrl: string; fontId?: string; fontUrl?: string; }, options?: Options, withRefresh?: boolean) => Promise; getThemeStyle: () => IThemeStyle; /** * 获取模板信息 */ getTemplete: (config: AssetInfo, options?: Options) => { tempTextSource: BubbleTextSourceInstance; measureResDefault: { bubbleW: number; bubbleH: number; }; }; /** * 设置字幕位置 */ changeTransform: (position: PostionWithPartial, withRefresh?: boolean) => void; /** * 设置字幕样式 */ changeStyle: (style: Partial, withRefresh?: boolean) => void; /** * 获取当前字幕尺寸位置信息 */ getCurrentPosition(): { width: number; height: number; x: any; y: any; scaleX: any; scaleY: any; }; /** * 设置字幕媒体合成 */ setComp(config: AssetInfo, options?: Options): void; setLineHeight(lineHeight: number, withRefresh?: boolean): void; /** * 设置默认字体 */ initDefaultFont(options?: Options): Vector; /** * 更新字幕 */ updateBubble(text: string): void; setSrcRange(range: Range): void; setTrimRange(range: Range): void; setDestRange(range: Range): void; setDstPos(pos: number): void; /** * 获取草稿 */ getLayerDraft(): TextLayerProps; duplicate(): TextLayer; } export { TextLayer }; export type { TextLayerProps };