SimpleGUI
一套针对单色显示屏的开源 GUI 接口
SimpleGUI API 文档
开源,是一种态度。
目录
目录 ................................................................................................................................. 2
文件结构 ........................................................................................................................ 3
环境参数设置 ................................................................................................................ 4
数据类型定义 ................................................................................................................ 5
API .................................................................................................................................. 7
文件结构
Todo
环境参数设置
为方便用户配置和移植,SimpleGUI 在 SGUI _Config.h 文件中定义了一些列的控制
和开关宏,用户可以通过打开、关闭以及修改宏定义的值来对 SimpleGUI 的一些全局属性
进行修改。
1、 _SIMPLE_GUI_ENABLE_ICONV_GB2312_
此宏定义关联文字显示 API 对非 ASCII 文字的解码方式。设置值大于 0 时有效,文字
相关的 API 接口将会视输入的文字为 UTF-8 格式并转换成 GB2312 格式进行解析,若此值
为 0,则视输入文字为 GB2312 格式进行解析。具体操作将会在“文字显示”章节详细阐
述。
2、 _SIMPLE_GUI_VIRTUAL_ENVIRONMENT_SIMULATOR_
此宏定义关联 SimpleGUI 的运行环境,设置值大于 0 时有效。当此宏定义有效,意味
着 SimpleGUI 正运行于模拟环境中,用户在移植到目标平台后,请将此宏定义的值修改为
0。
3、 _SIMPLE_GUI_ENABLE_DYNAMIC_MEMORY_
此宏定义关联 SimpleGUI 移植目标平台的动态内存操作, 设置值大于 0 时有效。当
此宏定义设置为有效时,意味着目标平台已实现了动态内存管理或支持动态内存管理,且
用户已经做好相应的实现或移植,此时 SimpleGUI 的相关依赖内容也会被使能,如列表项
目的动态增减。
4、 _SIMPLE_GUI_ENABLE_BASIC_FONT_
此宏定义关联 SimpleGUI 的内置基础字体, 设置值大于 0 时有效。SimpleGUI 内部
存储了一组尺寸为 6*8 像素的可见 ASCII 字符集数据,当此宏定义有效时,此套字体数据
将被支持,且文字显示 API 将可以使用此文字数据显示基本 ASCII 字符内容。
此功能设计为,如果用户使用外部字库且外部字库出现损坏或数据异常时,可以使用
此字库数据输出一些警告或调试信息。
数据类型定义
1 基本数据类型定义。
为避免因平台和编译器的差异造成的对基本数据类型的定义不同,进而导致代码产生
不可预知的错误,SimpleGUI 在 SGUI_Typedef.h 文件中重新定义了包括整数、字符、字
符指针在内的一系列基本数据类型,在 SimpleGUI 内部的代码实现中将一致性的使用重新
定义过的数据类型,用户需要在使用前明确所在平台的数据类型定义并作出相应修改,以
避免因溢出或其他异常导致的错误。
具体内容请参照 SGUI_Typedef.h 文件。
2 特殊数据类型定义。
为方便 API 的实现、表达与使用,SimpleGUI 在基本数据类型的基础上,定义了一些
特殊的数据结构。
2.1 矩形区域
此定义主要用于位图绘制时,标示显示区域、实际位图数据与位图数据偏移,其原
型定义如下:
PosX 为矩形左上角的 X 坐标。
PosY 为矩形左上角的 Y 坐标。
Width 为矩形宽度。
Height 为矩形高度。
由于此数据结构是为绘图设计,在实际使用中,除了以上四项参数外,可能还需要
其他判断,为此,此数据类型还有相应的运算宏定义:
RECTANGLE_X_START 意为矩形左边界 X 轴坐标。
RECTANGLE_X_END 意为矩形右边界 X 坐标。
RECTANGLE_Y_START 意为矩形上边界 Y 坐标。
RECTANGLE_Y_END 意为矩形下边界 Y 坐标。
typedef struct
_st_rectangle_
{
SGUI_INT PosX;
SGUI_INT PosY;
SGUI_INT Width;
SGUI_INT Height;
}SGUI_RECT_AREA;
#define RECTANGLE_X_START(ST) ((ST).PosX)
#define RECTANGLE_X_END(ST) (((ST).PosX + (ST).Width - 1))
#define RECTANGLE_Y_START(ST) ((ST).PosY)
#define RECTANGLE_Y_END(ST) (((ST).PosY + (ST).Height - 1))
#define RECTANGLE_WIDTH(ST) ((ST).Width)
#define RECTANGLE_HEIGHT(ST) ((ST).Height)
#define RECTANGLE_VALID_WIDTH(ST)
((RECTANGLE_X_START(ST)>0)?RECTANGLE_WIDTH(ST):(RECTANGLE_WIDTH(ST)+RECTANGLE_X_START(ST))
)
#define RECTANGLE_VALID_HEIGHT(ST)
((RECTANGLE_Y_START(ST)>0)?RECTANGLE_HEIGHT(ST):(RECTANGLE_HEIGHT(ST)+RECTANGLE_Y_START(ST
)))