Skip to content

CLI GUI Rendering

MemoryShadow edited this page Sep 12, 2022 · 1 revision

CLI GUI Rendering

接口与调用

此项正在编辑

在此处展示这个头文件的相关函数与相关类型

类型

这个头文件中包含了以下几个类型

类型名 原始类型 作用
Paint_layer struct 中文称谓(在注释中):绘制层 其中储存了有关于本层的绘制信息,可以在相关控制函数的帮助下移动或者绘制新的信息
Window_layer struct 中文称谓(在注释中):窗口层 其中标记了一个"界面",不可储存数据,但是可以拥有多个绘制层
Event struct 中文称谓(在注释中):事件结构 在事件中会传入回调函数的结构
_Layer_Flag enum 中文称谓(在注释中):层选项 创建新的层时可用于配置, 不同值可以用|符号进行隔开同时提交
EventTypes enum 中文称谓(在注释中):事件类型 当发生事件时会包含在事件类型当中

Paint_layer

声明结构
struct Paint_layer
{
    // 层的宽
    unsigned width;
    // 层的高
    unsigned height;
    // 记录每个点的内容
    CHAR **Data;
    // 为链表做的准备
    Paint_layer *Next;
};

Window_layer

声明结构
typedef struct Paint_layer Window_layer;

Event

声明结构
typedef struct
{
    // 事件类型
    EventTypes type;
    // 事件触发的层
    struct _Layer *layer;
    unsigned layer_index;
    // 事件触发的位置
    COORD position;
    // 事件触发的值
    struct {
        // 碰撞事件的值
        CHAR *old;
        CHAR *new;
    } P_value;
} Event;

_Layer_Flag

声明结构
typedef enum
{
    // 用于标识此层的属性,1为窗口层,0为绘制层
    Attributes = 1, // (0000 0001)
    // "不再更新" 选项,设置为1将预渲染此层数据,并置于底层用于加快渲染,设置为0将渲染此层,默认为0
    NotUpdate = 2,  // (0000 0010)
    // "不要渲染" 选项,设置为1将不渲染此层数据,用于加快渲染,设置为0将渲染此层,默认为0
    NotRender = 4,  // (0000 0100)
} _Layer_Flag;

EventTypes

声明结构
typedef enum
{
    // 碰撞事件
    Collision = 1,  // (0000 0001)
} EventTypes;

函数

这个头文件中包含了以下几个函数

函数名 参数列表 返回类型 具体作用 使用示例
new_Window_layer unsigned width
unsigned height
Window_layer * 创建一个Window_layer结构,返回新建的指针您可以理解为面向对象语言中的new操作符 Window_layer *main_layer = new_Window_layer(20, 15);
new_Paint_layer Window_layer *Window Paint_layer * 在指定窗口的顶层创建一个绘制层您可以理解为面向对象语言中的new操作符 Paint_layer *edge_layer = new_Paint_layer(main_layer);
layer_length const Window_layer *Window unsigned 计算某个窗口层的绘制层数量 示例代码见详解
Remove_layer Window_layer *Window
unsigned index
Paint_layer * 将某个绘制层从所属的窗口层中剥离出来(会拒绝剥离0) Remove_layer(main_layer,1)
delete_Paint_layer Paint_layer *layer Paint_layer * 释放某个窗口层的内容,您可以理解为面向对象语言中的delete操作符(别忘记先将其从窗口层中剥离) delete_Paint_layer(Window)
delete_Window_layer Window_layer *Window void 释放某个窗口层(会删除其所有绘制层)您可以理解为面向对象语言中的delete操作符 delete_Window_layer(main_layer)
layer_index Window_layer *Window
unsigned index
Paint_layer * 取得某个窗口层中指定索引的绘制层指针 layer_index(main_layer,1)
Write_Point Paint_layer *layer
unsigned x
unsigned y
CHAR Char
Paint_layer * 在指定的层中指定的位置,填充指定的字符(成功返回此层指针,失败返回NULL) 示例代码见详解
Get_Point Paint_layer *layer
unsigned x
unsigned y
CHAR 在指定的层中获取指定位置的字符(成功返回此字符,失败..就返回\0好了) 示例代码见详解
WindowDraw Window_layer *Window
int Convert = 0
void 绘制指定的窗口,参数Convert控制是否对于特定的半角字符转换为全角进行渲染 WindowDraw(main_layer)
layer_Move Paint_layer *layer
unsigned Direction
unsigned length
Paint_layer * 将一个绘制层按照指定的方向移动指定的步长 layer_Move(layer_length(main_layer,1),Up,1)

new_Window_layer

函数原型:

Window_layer *new_Window_layer(unsigned width, unsigned height);

对于它的两个参数:

unsigned width:标记了这个窗口层的最大宽度

unsigned height:标记了这个窗口层的最大高度

创建一个Window_layer结构,返回新建的指针

您可以理解为面向对象语言中的new操作符

示例代码:

Window_layer *main_layer = new_Window_layer(20, 15);
Clone this wiki locally