跳到主要内容

📦Text 文本显示

作者: 泡泡


代码文件:src/text.c

DeactivateAllTextPrinters

void DeactivateAllTextPrinters(void);

💬将所有文本显示进程的active设置为FALSE,终止所有的文本显示,通常用于在窗口创建后的初始化



AddTextPrinterParameterized

u16 AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16));

💬设置参数并调用文本显示函数,将指定的文本显示到对应ID的窗口,相较于其他的AddTextPrinterParameterized系列函数,该函数省略了文本颜色文本间隔的设置,使用了字体默认的颜色和间隔

参数类型介绍
windowIdu8窗口Id
fontIdu8字体类型
strconst u8*文本地址
xu8在窗口中的x起始坐标
yu8在窗口中的y起始坐标
speedu8文本打印的速度,(-10xFF时直接显示 )
callbackvoid*回调函数,在文本打印的进程中会随时执行该函数
提示

该函数会执行AddTextPrinter并返回一个bool16的TRUE值,似乎并没有什么用



AddTextPrinter

bool16 AddTextPrinter(struct TextPrinterTemplate *printerTemplate, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16));

💬基础的文本显示函数,根据传入的模板添加文本显示任务,直接调用的情况比较少(比如战斗内文本显示),该函数会被AddTextPrinterParameterized系列调用

参数类型介绍
printerTemplatestruct TextPrinterTemplate *文本显示参数模板地址
speedu8文本打印的速度,(-10xFF时直接显示 )
callbackvoid*回调函数,在文本打印的进程中会随时执行该函数
提示

当文本显示速度为-10xFF时,文本图像会直接被渲染,并且active设置为FALSE

该函数结束时会返回一个bool16的TRUE值,似乎并没有什么用



RunTextPrinters

void RunTextPrinters(void);

💬执行所有active为TRUE的文本显示任务,并调用其回调函数,该函数通常放置在VblankCallBack实时监控并显示文本

当设置gDisableTextPrintersTRUE时所有文本显示停止

提示

回调函数仅在文字显示的等待时执行



GetStringWidth

s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing);

💬根据指定字体获取一串文本的图像宽度,可用于计算左右对齐的x起始坐标

参数类型介绍
fontIdu8该文本的字体
strconst u8*文本地址
letterSpacings16每个字之间的间隔,当该值为-1时使用字体默认的间隔值

✔️返回值:

  • s32: 该文本的宽度,当文本中存在换行时则返回其中最长一行的宽度


GetFontAttribute

u8 GetFontAttribute(u8 fontId, u8 attributeId);

💬获取字体的指定属性的默认值

参数类型介绍
fontIdu8字体
attributeIdu8指定的属性

✔️attributeId参考:

attributeId类型介绍
FONTATTR_COLOR_SHADOWu8字体阴影色编号
FONTATTR_COLOR_BACKGROUNDu8字体背景色编号
FONTATTR_COLOR_FOREGROUNDu8字体填充色编号
FONTATTR_LETTER_SPACINGu8该字体文字的间隔
FONTATTR_LINE_SPACINGu8该字体文字行间距

✔️返回值:

  • u8: 获取到的属性的默认值,不存在时返回0