import * as spec from '@galacean/effects-specification'; import { MaskableGraphic } from '../../components'; import type { Engine } from '../../engine'; import { TextLayout } from './text-layout'; import { TextStyle } from './text-style'; import type { ITextComponent } from './text-component-base'; import { TextComponentBase } from './text-component-base'; export declare const DEFAULT_FONTS: string[]; export interface TextComponent extends TextComponentBase { } /** * @since 2.0.0 */ export declare class TextComponent extends MaskableGraphic implements ITextComponent { isDirty: boolean; /** * 文本行数 */ lineCount: number; textStyle: TextStyle; canvas: HTMLCanvasElement; context: CanvasRenderingContext2D | null; textLayout: TextLayout; text: string; /** * 描边/阴影等特效导致的纹理扩容比例 X/Y */ protected effectScaleX: number; protected effectScaleY: number; /** * 每一行文本的最大宽度 */ protected maxLineWidth: number; /** * 初始文本宽度,用于计算缩放比例 */ private baseTextWidth; /** * 初始 `transform.size.x`,用于按比例更新显示宽度 */ private baseScaleX; private getDefaultProps; constructor(engine: Engine); onUpdate(dt: number): void; onDestroy(): void; fromData(data: spec.TextComponentData): void; private resetState; setText(value: string): void; /** * 根据配置更新文本样式和布局 */ updateWithOptions(options: spec.TextContentOptions): void; getLineCount(text: string): number; /** * 设置行高 * 行高表示每行占用的总高度 * @param value - 行高像素值 */ setLineHeight(value: number): void; /** * 设置字重 * @param value - 字重类型 * @returns */ setFontWeight(value: spec.TextWeight): void; /** * 设置字体样式 * @param value 设置字体样式 * @default "normal" * @returns */ setFontStyle(value: spec.FontStyle): void; /** * 设置文本水平布局 * @param value - 布局选项 * @returns */ setTextAlign(value: spec.TextAlignment): void; /** * 设置文本颜色 * @param value - 颜色内容 * @returns */ setTextColor(value: spec.RGBAColorValue): void; /** * 设置外描边文本颜色 * @param value - 颜色内容 * @returns */ setOutlineColor(value: spec.RGBAColorValue): void; /** * 设置字体清晰度 * @param value - 字体清晰度 * @returns */ setFontScale(value: number): void; /** * 更新文本 * @returns */ protected updateTexture(flipY?: boolean): void; renderText(options: spec.TextContentOptions): void; /** * 给渲染层用:获取特效扩容比例(描边/阴影导致的纹理扩容) * @returns */ getTextureExpandScale(): [number, number]; /** * 获取描边和阴影的 padding 值(单位:px) * @returns */ protected getEffectPadding(): { padL: number; padR: number; padT: number; padB: number; }; setAutoWidth(value: boolean): void; /** * 设置文本框宽度 * 手动设置宽度时会自动关闭 `autoWidth` * 同时会按比例更新 `transform.size.x`,让 UI 框宽度也跟着变化 * @param value - 文本框宽度 */ setTextWidth(value: number): void; /** * 设置文本框高度 * @param value - 文本框高度 */ setTextHeight(value: number): void; setFontSize(value: number): void; setOutlineWidth(value: number): void; /** * 设置是否启用文本描边 * @param value - 是否启用描边 * @returns */ setOutlineEnabled(value: boolean): void; setShadowBlur(value: number): void; setShadowColor(value: spec.RGBAColorValue): void; setShadowOffsetX(value: number): void; setShadowOffsetY(value: number): void; }