第一篇:SOUI是什么?


概述

用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可以做什么。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM