GUI 系统需求描述
作者: 刘鹏
日期: 2009-09-21
文本总结了一个 GUI 系统需要具备的 features 及其需要考虑的问题。
核心需求
- 体系结构 :C/S 架构,灵活,易于扩展
- 消息驱动机制 :消息队列、消息循环、消息处理
- 鼠标、键盘、触摸屏的事件处理
- 高效的窗口剪切算法 :使用 Z 序管理窗口的覆盖关系;绘制窗口前要将多个 窗口映射到屏幕上,计算每个窗口受剪切的区域,被覆盖的部分被剪掉不绘 制,一个高效的窗口剪切算法非常重要3 ;
- 窗口管理器(Window Manager) : 窗口管理,可以考虑做一个窗口管理器抽象 层,使 GUI 不依赖于某个具体的窗口管理器;
- 组合窗口管理器(Compositing window manager) : 多个 surface 的组合;
- 强大高效的图形库 :支持 2D/3D,2D图形库(矢量的/栅格的),3D图形库 (OpenGL)
- 图像处理能力
- 半透明窗口、不规则窗口
- 图形抽象层 :如 MiniGUI 的 GAL
- 输入抽象层 :如 MiniGUI 的 IAL
- 字体引擎 :text/font
- 手势识别引擎(gesture recoginzation engine) : 点击、滑动(fling)、多点触摸等;可纯软件实现,也可硬件支持;
- 窗口主题(theme)
- 窗口界面描述(UI define files) :xml/css/JSON
- 硬件加速功能
- 支持定点数运算
- 动画(animation)支持
- SDK 和 IDE
- 跨平台 :linux, unix, windows, MacOS X,......
- testing framework
图形功能
- 基本图元的绘制:点、线、多边形
- alpha blend:可用于实现光源、火光、烟雾等;
- clip:支持任意形状的剪切域;
- Compositing images:Porter-Duff operation,12 种组合方式;
- gamma 校正:可用于实现淡入、淡出、渐变等效果;
- gradient 梯度:可用于渐变填充;
- Patterns 填充样式;
- shadow 阴影;
- Transparency Layers
- Bitmap Images and Image Masks
- 粒子系统及其辅助设计工具
图像处理功能1 2
- 多种图像格式的支持
- 复制(duplicate)
- Mode (RGB, Grayscale, indexed)
- 缩放、平移、旋转
- 颜色:color balance,brightness-contrast,levels
- 图像 Alpha 值的调整
- 模糊 (blur)
- 增强 (enhance)
- 扭曲 (distort):page curl, ripple, wave
- 光照和阴影 (light and shadow)
- 噪声 (noise) 处理
- 边缘检测 (edge detect)
- 卷积矩阵 (convolution matrix)
- 图像处理辅助设计工具
高级需求
- video support
- audio support
- database support
- xml support
- webkit integrated
- language bind
- online desktop,与 web 集成
说明
- 消息驱动机制,拟支持等待多个事件源,如 socket, 子进程退出和内核事件等;并且要降低消息源与消息目标之间的耦合程度
- 需要支持多种输入的设备:鼠标、键盘、触摸屏、jobstick、.....
- 关于控件,使用容器机制分离控件的职责,将控件做成容器,它可以容纳其它控件,容器机制的实现是使用组合还是继承,据说前者更符合现代设计规则。
- 使用 layout 机制,避免硬编码
- resolution independence
- text/font 模块需要考虑 Unicode 的支持,考虑 Bidi 文本的处理
另外需要考虑的几点
- separate engine and UI code
- not hard-coding:
- layout information
- screen resolutin
- screen color depth
- design scalability in mind from the very beginning.
Reference
- PhotoShop/Gimp Filter
- ActionScript3.0 的显示虑镜
- MiniGUI 的窗口剪切算法