Patch refactor scm and textui (#289)

* 重构屏幕管理器和textui框架

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

* 修正文档

---------

Co-authored-by: longjin <longjin@RinGoTek.cn>
This commit is contained in:
hanjiezhou
2023-08-20 00:19:36 +08:00
committed by GitHub
parent 5db5a5652c
commit abe3a6ea3c
42 changed files with 2005 additions and 1726 deletions

View File

@ -0,0 +1,32 @@
# 文本显示框架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已经初始化可以进行动态内存分配便可以使用一些复杂的结构体来处理要打印的文本信息。