现在的位置: 首页 > 综合 > 正文

关于GUI的一些想法

2012年09月05日 ⁄ 综合 ⁄ 共 913字 ⁄ 字号 评论关闭
最近一直想改进一下garnet engine中的UI部分。因为考虑到实现一个完善的UI需要很大的工作量,所以想找一个现成的开源库来用。

在网上转了转,发现了http://www.cegui.org.ui。功能挺强,而且是专门为在3D程序中使用而设计的,现在已经被整合到OGRE中。但是这个库有些过于臃肿,需要很多外部的dependencies才能运行,比如freetype, xerces等等,并且对中文的支持也比较弱。

又在网上找到了几个比较轻量级的UI库,如:

http://guichan.darkbits.org/

http://www.paragui.org/ 

http://www.picogui.org

没有仔细考察它们的功能,粗看上去都还凑合,但也不是非常理想。于是想如果有时间的话,还是自己写一个UI库算了。

左思右想,如果能给UI部分定义一个标准的程序接口,然后再分别写不同的实现,那就方便多了。而且这样还有助于分离程序的功能和界面。

目前有几个备选方案:

1. 将GUI定义成两组事件的集合:

  - 一组事件由GUI根据用户的输入产生,由后台程序负责响应;

  - 另一组事件由后台程序产生,由GUI来负责响应;

  - 后台程序和GUI都不知道对方的实现细节,它们只能通过这些事件来做交互;

  - 这些事件也可以按照“属性”的形式提供给对方:

    - 每个属性有如下几个事件组成:

      - for application:

        - app_read(...)

        - app_write(...)

        - on_gui_read(...)

        - on_gui_write(...)

      - for GUI:

        - gui_read(...)

        - gui_write(...)

        - on_app_read(...)

        - on_app_write(...)

  - GUI的具体表现形式由script文件定义,对application是透明的,类似effect的描述文件(TBD)

2. 后台程序提供一组功能函数供GUI调用,GUI提供一组通用函数用于创建和定制用户界面。

  - TBD

抱歉!评论已关闭.