魏永明
2.2 IAL 和输入引擎
蓝点软件(北京)研发中心技术主管
2001/04/15
Contents: |
![]() |
![]() |
1 引言 |
2 MiniGUI 的 GAL 和 IAL 接口 |
资源 |
关于作者 |
![]() |
本文将介绍 MiniGUI 的 GAL 和 IAL 接口,并介绍私有图形引擎和特定嵌入式系统下的输入引擎实现。
GAL 和 IAL 的结构是类似的,我们以 GAL 为例说明 MiniGUI GAL 和 IAL 抽象层的结构。
2.1 GAL 和图形引擎在代码实现上,MiniGUI 通过 GFX 数据结构来表示图形引擎,见清单 1。
清单 1 MiniGUI 中的图形引擎结构(src/include/gal.h) |
(*cur_gfx->drawhline) (gc, x, y, w, pixel); |
167 #define PHYSICALGC (cur_gfx->phygc) |
GAL_DrawVLine (gc, x, y, w, pixel); |
显然,只要在系统初始化时能够根据设定对 cur_gfx 进行适当的赋值,MiniGUI 就能够在相应的图形引擎之上进行绘制。
对底层图形引擎的调用,主要集中在 MiniGUI 的 GDI 函数中。比如,要绘制一条直线,MiniGUI 的 LineTo 函数定义如清单 2 所示:
清单 2 LineTo 函数(src/gdi/draw-lite.c) |
如前所属,MiniGUI IAL 结构和 GAL 结构类似。在代码实现上,MiniGUI 通过 INPUT数据结构来表示输入引擎,见清单 3。
清单 3 MiniGUI 中的输入引擎结构(src/include/ial.h) |
系统启动之后,将根据配置寻找特定的输入引擎作为当前的输入引擎,并且对全局变量 cur_input 赋值。
(*cur_gfx->drawhline) (gc, x, y, w, pixel); |
69 #define IAL_InitInput (*cur_input->init_input) |
在 src/kernel/event.c 中,我们如下调用底层的输入引擎,从而将输入引擎的数据转换为 MiniGUI 上层能够理解的消息(以 MiniGUI-Lite 为例),见清单 4:
清单 4 MiniGUI 对底层输入事件的处理 |
- Linux 图形相关资源
- MiniGUI 资源
- MiniGUI 邮件列表