• 第一篇: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可以做什么。

  • 相关阅读:
    Spring基础——小的知识点
    Spring总结—— IOC 和 Bean 的总结
    UML 类图
    Spring基础—— 泛型依赖注入
    Spring重点—— IOC 容器中 Bean 的生命周期
    Spring基础—— SpEL
    《大话设计模式》学习笔记13:适配器模式
    《大话设计模式》学习笔记12:状态模式
    《大话设计模式》学习笔记11:抽象工厂模式
    《大话设计模式》学习笔记10:观察者模式
  • 原文地址:https://www.cnblogs.com/setoutsoft/p/3903677.html
Copyright © 2020-2023  润新知