hanjiezhou abe3a6ea3c
Patch refactor scm and textui (#289)
* 重构屏幕管理器和textui框架

* 切换字体为spleen,并增加对字体的抽象

* 修正文档

---------

Co-authored-by: longjin <longjin@RinGoTek.cn>
2023-08-20 00:19:36 +08:00

33 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 文本显示框架textui
:::{note}
作者: 周瀚杰 <2625553453@qq.com>
:::
&emsp;&emsp;文本框架主要用于DragonOS的文本的窗口渲染显示往屏幕窗口中输出打印文本信息往窗口显示文本分成两种情况一种是当内存管理单元mm未被初始化时不能进行动态内存分配限制颇多例如不能使用vec,mpsc等所以直接往窗口的帧缓冲区输出打印信息不使用虚拟行等复杂结构体另一种是当内存管理单元mm已经初始化可以进行动态内存分配便可以使用一些复杂的结构体来处理要打印的文本信息。
## 主要API
### rs_textui_init() -textui框架初始化
#### 原型
```rust
pub extern "C" fn rs_textui_init() -> i32
```
#### 说明
&emsp;&emsp;rs_textui_init()主要是初始化一些textui框架要使用到的一些全局变量信息例如TEXTUIFRAMEWORKTEXTUI_PRIVATE_INFO等以及将textui框架注册到scm中。
### textui_putchar -往textui框架中的当前使用的窗口打印文本信息
#### 原型
```rust
pub extern "C" fn rs_textui_putchar(character: u8, fr_color: u32, bk_color: u32) -> i32
pub fn textui_putchar(
character: char,
fr_color: FontColor,
bk_color: FontColor,
) -> Result<(), SystemError>
```
#### 说明
&emsp;&emsp;textui_putchar()要处理两种情况一种是当内存管理单元mm未被初始化时不能进行动态内存分配限制颇多例如不能使用vec,mpsc等所以直接往窗口的帧缓冲区输出打印信息不使用虚拟行等复杂结构体另一种是当内存管理单元mm已经初始化可以进行动态内存分配便可以使用一些复杂的结构体来处理要打印的文本信息。