import * as spec from '@galacean/effects-specification'; import type { Engine } from '../../engine'; import type { Material } from '../../material'; import type { ItemRenderer } from '../../components'; import type { VFXItem } from '../../vfx-item'; import type { BaseLayout } from './base-layout'; import type { TextStyle } from './text-style'; /** * 纯文本组件特有 API */ export interface ITextComponent { setOutlineWidth(value: number): void; setOutlineEnabled(value: boolean): void; setShadowBlur(value: number): void; setShadowColor(value: spec.RGBAColorValue): void; setShadowOffsetX(value: number): void; setShadowOffsetY(value: number): void; setAutoWidth(value: boolean): void; setFontSize(value: number): void; } /** * 富文本组件特有 API */ export interface IRichTextComponent extends ITextComponent { } export declare class TextComponentBase { textStyle: TextStyle; textLayout: BaseLayout; text: string; canvas: HTMLCanvasElement; context: CanvasRenderingContext2D | null; isDirty: boolean; engine: Engine; material: Material; item: VFXItem; renderer: ItemRenderer; lineCount: number; protected maxLineWidth: number; protected readonly ALPHA_FIX_VALUE: number; setText(value: string): void; setTextAlign(value: spec.TextAlignment): void; setTextVerticalAlign(value: spec.TextVerticalAlign): void; /** * @deprecated 2.8.0 本方法已废弃,请使用 setTextVerticalAlign 替代。 */ setTextBaseline(value: spec.TextBaseline): void; setTextColor(value: spec.RGBAColorValue): void; setFontFamily(value: string): void; setFontWeight(value: spec.TextWeight): void; setFontStyle(value: spec.FontStyle): void; setOutlineColor(value: spec.RGBAColorValue): void; setOutlineEnabled(value: boolean): void; setFontScale(value: number): void; setOverflow(overflow: spec.TextOverflow): void; protected getFontDesc(size?: number): string; protected setupOutline(): void; protected setupShadow(): void; protected disposeTextTexture(): void; /** * 通用纹理渲染辅助方法 */ protected renderToTexture(width: number, height: number, flipY: boolean, drawCallback: (ctx: CanvasRenderingContext2D) => void, options?: { disposeOld?: boolean; }): void; protected initTextBase(engine: Engine): void; }