概述
用C++做產品最痛苦的是什么?肯定是做UI。
SOUI的使命就是把痛苦的UI變化成快樂的UI。
什么?UI還能快樂?腦子進水了嗎?
當你看完這個系統教程的時候相信你面對UI至少不會再痛苦。你可以對於PM說,UI?Just SO SO!
閑話少說,進入正題。
SOUI是什么?SOUI是啟程軟件(其實就是我個人了,:)開發的一個C++ DirectUI庫。
雖然DirectUI不是什么新技術,但是要把UI做好,DirectUI確實是目前為止最有效的解決方案。
SOUI不是一個新項目,它是基於本人這前開發的DuiEngine再經過為期近半年的重構后完成的版本,目前版本號為0.9.0.1,除了skia渲染模塊還有待進一步完善外,其它模塊已經基本達到發布標准。(DuiEngine是一個基於原金山的Bkwin重構的UI庫,經過兩年的不斷更新,已經相對穩定,並且已經在多個有大量用戶的客戶端產品中使用,如多玩魔盒2.0等)
鑒於原有框架的局限,為了更好的滿足簡化UI開發的目的,我又重新開發了這套SOUI。
SOUI相對於DuiEngine的改進
做SOUI有幾個核心需求:
1、功能模塊化:特別是渲染部分要讓用戶可以根據需要選擇適合的模塊,如GDI,GDI+,SKIA。
2、性能優化
3、簡化XML配置
4、刪除原有項目中為了版本兼容而遺留的垃圾代碼
5、優化項目管理
6、增加代碼注釋
同時新版本也增加了一些新的特性:
1、新增多語言翻譯支持。
2、程序資源提供模塊支持多份,以便為從腳本創建UI提供更好的支持。
3、完善LUA腳本模塊。
SOUI模塊結構
下圖為SOUI模塊截圖:
soui模塊是整個項目的核心,除utilities模塊外,其它模塊都為soui模塊服務。
utilities模塊提供一些工具類,主要包含pugixml,及一個String類。
soui-sys-resource模塊是一個純資源DLL,提供一些內置控件必須的資源。
demo模塊是SOUI界面庫的功能演示程序。
translator實現一個從XML文件加載多語言翻譯資料的類似QT的語言翻譯模塊。
render-gdi和render-skia分別實現兩個基於GDI及SKIA的渲染模塊,它們可以相互替換。GDI的優點是體積小,但是對於apha通道支持能力有限;而skia的優點是速度快,全面支持alpha通道,但是程序體積會有所增加, DLL編譯后有1M,壓縮后有600K。
resprovider-zip實現了一個從ZIP文件加載程序資源的模塊。加上soui中內置的兩個資源加載模塊,SOUI可以選擇從文件中,從EXE資源中及從ZIP文件包中加載程序資源。
script-lua是一個腳本支持模塊,目前只實現了幾個基本類的導出,要使用更多SOUI類型,還需要增加導出代碼。
第一篇先介紹到這里,下一篇將介紹SOUI可以做什么。