第⼀篇: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类。engine什么意思
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可以做什么。