May 10,2007
Embedded system GUI design
我使用過以下套件
wxWidget, http://www.wxwidgets.org/
這是我第一個找到的開源套件, 號碼功能強大, Native誇平台. 我也把他port好了, 搞了兩個星期發現他實在太大. 至少3.5MB而很多功能都不會用到. 而且他的MFC GUI編程方法實在不想領教.
WxWidgets License, 由LGPL改寫, 但容許最後作品不用公開程式碼
Microwindows (Nano-X Windows System), http://www.microwindows.org/
這是最多人提到的Open source GUI, 尤其是他使用MPL License, 這可能是最多人用的原因吧. 他是一個比較low level的widget套件. 可以使用兩套API, 一個是Win32 SDK style, 一個是類Xlib style, 但是MFC的那套API好像已不再維護了, 轉而又開發另一個子project, NxLib, 這使得原來的Nano-X API可以兼容真正的Xlib API. 好處是所有Linux下的更高階的widget套件都可以架構在Microwindows系統之上, 如GTK, Qt, WxWidget, fltk 等等. 但是他最後更新的日期是2005年, 也不曉得是活還是死了.
FOX, http://www.fox-toolkit.org/
這個看起來不錯, 但是同樣感覺footprint太大, 而且用了很多高級C++編程方式, 在當時我要port到1998年出產的VxWorks實在困難重重.
LGPL License
Qtopia, http://www.trolltech.com/
大公司都使用這個, 可是我公司付不起錢. 所以我也沒有研究下去. 不過其大概要2MB才真的做出一個GUI出來.
GPL or Qt Commerical License
MiniGUI, http://www.minigui.org/
C API界面. 但是要不就GPL,要不就$$$. 算了吧.
FLTK, http://www.fltk.org/
最後我的選擇是使用fltk. 主要原因是小 700KB左右. 簡單, 很多功能都可以拿掉. 支援UTF8. C++界面. 一開始我是使用FLNX 即係所謂FLTK over Nano-X. 但是當microwindows出了nxlib後, 我就改用FLTK+NxLib+Nano-X三層架構. 同時Nano-X使用LINK_APP_INTO_SERVER模式, footprint大概在1MB以下.
同時他採用FLTK license, 主要是根據LGPL修改而成, 使得所有以靜態連結的程式, 以及繼承的widget都不需要公開程式碼
如果你想要fltk顯示中文, 那麼你可以參看這個project, 它主要根據fltk 1.1.6版作修改, 以便顯示utf8的字串, 不過microwindows上也要作一些小修改
希望這些資訊對做embedded system GUI 的人有用啦.
引用URL
我也來試試看用NXLib+FLTK的組合...
真的要做得好, 你可能要用Alpha blending的方式把圖畫出來.
又或者 哪個網站有相關資訊呢?