xref: /DragonOS/docs/kernel/libs/lib_ui/textui.md (revision abe3a6ea3c543425e2cad12722e8a658b324d515)
1*abe3a6eaShanjiezhou# 文本显示框架(textui)
2*abe3a6eaShanjiezhou
3*abe3a6eaShanjiezhou:::{note}
4*abe3a6eaShanjiezhou作者: 周瀚杰 <2625553453@qq.com>
5*abe3a6eaShanjiezhou:::
6*abe3a6eaShanjiezhou&emsp;&emsp;文本框架主要用于DragonOS的文本的窗口渲染显示,往屏幕窗口中输出打印文本信息,往窗口显示文本分成两种情况:一种是当内存管理单元(mm)未被初始化时,不能进行动态内存分配,限制颇多(例如不能使用vec,mpsc等),所以直接往窗口的帧缓冲区输出打印信息,不使用虚拟行等复杂结构体;另一种是当内存管理单元(mm)已经初始化,可以进行动态内存分配,便可以使用一些复杂的结构体来处理要打印的文本信息。
7*abe3a6eaShanjiezhou
8*abe3a6eaShanjiezhou
9*abe3a6eaShanjiezhou## 主要API
10*abe3a6eaShanjiezhou### rs_textui_init() -textui框架初始化
11*abe3a6eaShanjiezhou#### 原型
12*abe3a6eaShanjiezhou```rust
13*abe3a6eaShanjiezhoupub extern "C" fn rs_textui_init() -> i32
14*abe3a6eaShanjiezhou```
15*abe3a6eaShanjiezhou#### 说明
16*abe3a6eaShanjiezhou&emsp;&emsp;rs_textui_init()主要是初始化一些textui框架要使用到的一些全局变量信息(例如TEXTUIFRAMEWORK,TEXTUI_PRIVATE_INFO等),以及将textui框架注册到scm中。
17*abe3a6eaShanjiezhou
18*abe3a6eaShanjiezhou### textui_putchar() -往textui框架中的当前使用的窗口打印文本信息
19*abe3a6eaShanjiezhou#### 原型
20*abe3a6eaShanjiezhou```rust
21*abe3a6eaShanjiezhoupub extern "C" fn rs_textui_putchar(character: u8, fr_color: u32, bk_color: u32) -> i32
22*abe3a6eaShanjiezhou
23*abe3a6eaShanjiezhoupub fn textui_putchar(
24*abe3a6eaShanjiezhou    character: char,
25*abe3a6eaShanjiezhou    fr_color: FontColor,
26*abe3a6eaShanjiezhou    bk_color: FontColor,
27*abe3a6eaShanjiezhou) -> Result<(), SystemError>
28*abe3a6eaShanjiezhou```
29*abe3a6eaShanjiezhou#### 说明
30*abe3a6eaShanjiezhou&emsp;&emsp;textui_putchar()要处理两种情况:一种是当内存管理单元(mm)未被初始化时,不能进行动态内存分配,限制颇多(例如不能使用vec,mpsc等),所以直接往窗口的帧缓冲区输出打印信息,不使用虚拟行等复杂结构体;另一种是当内存管理单元(mm)已经初始化,可以进行动态内存分配,便可以使用一些复杂的结构体来处理要打印的文本信息。
31*abe3a6eaShanjiezhou
32*abe3a6eaShanjiezhou
33