CEGUI 概念简介

背景

Crazy Eddie’s GUI(MIT License),一款开源的GUI(图形用户界面)库。使用C++实现,遵循OOP,其宗旨:

games developers who should be spending their time creating great games, not building GUI sub-systems.

目前最新版为0.8.7,官网(http://cegui.org.uk/)
下文以0.8.7版本进行介绍。

架构图

  • ImageCode:图形解码模块(如:FreeImage、SILY等)
  • ResourceProvider:资源管理模块
  • XMLParser: XML解析
  • ScriptMode:脚本模块
  • Render+Texture:渲染器模块(如:OpenGL、DirectX等)
  • InputEvent:输入系统模块
  • CEGUICoreWindowRenderSet:窗口渲染模块
  • Base(System):CEGUI核心控制体系模块,包括执行流、资源管理、图像集、系统接口

主要概念

属性

属性系统(Property)
CEGUI中的属性,其实就是一组数据。这些数据可以影响窗口的外观、行为等等。
不仅Window,所有对象,都可以有属性。
属性系统的诞生,是为了可以通过脚本,利用xml动态配置窗口的相关数据。

<Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />

事件

事件系统(Event)
事件是窗口通知外部自身状态改变的机制或者方法。当某个时间发生时,调用某些函数处理通知事件。
CEGUI中的事件系统通过事件标识+一组处理函数组成。
对于Callback函数,CEGUI封装了下面几种类型:

事件和属性系统,主要是为了在XML中设置窗口事件和窗口逻辑。

资源管理

CEGUI中主要有以下几种资源:

  • .scheme文件:CEGUI系统用到的各种数据的定义,如字体信息、图像集信息、窗口外观信息。
<?xml version="1.0" ?>                                  <GUIScheme Name="TaharezLook">// 表示scheme                  <Imageset Name="TaharezLook" Filename="TaharezLook.imageset" />// 图像集   <Font Name="Commonwealth-10" Filename="Commonwealth-10.font" />// 字体        <LookNFeel Filename="TaharezLook.looknfeel" />//外观文件(falagard系统)   <WindowRendererSet Filename="CEGUICoreWindowRenderSet" />// 窗口渲染模块     <FalagardMapping WindowType="TaharezLook/Tree" TargetType="CEGUI/Tree"                                     Renderer="Falagard/Tree" LookNFeel="TaharezLook/Tree" />// 外部名称、内部名称、渲染窗口、外观
</GUIScheme>                                  
  • .looknfeel文件:外观系统,可以提供 XML 文件指定窗口的图像布局,子窗口的布局,默认属性,属性定义等.
  • .imageset文件:图像集文件。将一副图像看成若干小图像的集合。图片位置信息,区分各个小图像。(图像集的大小,需为2的幂尺寸,此时显卡处理效率最佳)
  • .layout文件:布局文件,包含了一个窗口的布局信息。
<?xml version="1.0" encoding="UTF-8"?>
<GUILayout version="4">                                <Window type="TaharezLook/FrameWindow" name="Frame" >                               <Property name="Text" value="Console" />                                <Property name="TitlebarFont" value="DejaVuSans-10" />                              <Property name="MaxSize" value="{{1,0},{1,0}}" />                               <Property name="TitlebarEnabled" value="True" />                                <Property name="Area" value="{{0.208832,0},{0.650387,0},{0.80736,0},{0.998062,0}}" />                               <Window type="TaharezLook/MultiLineEditbox" name="ConsoleText" >                                <Property name="Text" value=""/>                                <Property name="ReadOnly" value="True" />                               <Property name="MaxTextLength" value="1073741823" />                                <Property name="MaxSize" value="{{1,0},{1,0}}" />                               <Property name="Area" value="{{0.019238,0},{0.030633,0},{0.973721,0},{0.769186,0}}" />                              </Window>                             <Window type="TaharezLook/Editbox" name="Input" >                               <Property name="MaxTextLength" value="1073741823" />                                <Property name="MaxSize" value="{{1,0},{1,0}}" />                               <Property name="Area" value="{{0.019238,0},{0.772141,0},{0.973721,0},{0.980658,0}}" />                              </Window>                             </Window>
</GUILayout>

窗口

  • CEGUI中的窗口是一个抽象的概念。其可简单理解为,是一个可独立描画的单位
  • CEGUI的设计思想,以窗口为单位的WidgetSets。

【CEGUI】概念简介相关推荐

  1. 进程控制概念简介 多线程上篇(三)

    进程控制 进程的基本数据信息是操作系统控制管理进程的数据集合,这些信息就是用来控制进程的,此处我们说的进程控制就是进程的管理. 比如进程有状态,那么进程的创建.终止,状态的切换,这都不是进程自主进行的 ...

  2. 【设计模式】原型模式 ( 概念简介 | 使用场景 | 优缺点 | 基本用法 )

    文章目录 I . 原型模式 概念简介 II . 原型模式 使用场景 III . 原型模式 优缺点 IV . 原型模式 实现及 简单示例 I . 原型模式 概念简介 原型模式 : 用原型实例指定创建对象 ...

  3. 项目背景介绍及文件系统基本概念简介

    文章目录 1 项目背景介绍 2 文件系统基本概念简介 2.1 文件系统接口 2.2 存储的基本单位 2.3 文件存储单位 2.4 文件结构 3 海量存储选用大文件结构的原因 1 项目背景介绍 根据淘宝 ...

  4. OS操作系统概念简介

    操作系统 操作系统是一种程序:控制应用程序执行的程序 操作系统是一种接口:应用程序和计算机硬件间的接口 操作系统就是让普通人也会用电脑的软件(为了方便),就是把整个电脑资源包装起来的一个图形界面(为了 ...

  5. java 并发多线程显式锁概念简介 什么是显式锁 多线程下篇(一)

    java 并发多线程显式锁概念简介 什么是显式锁 多线程下篇(一) 目前对于同步,仅仅介绍了一个关键字synchronized,可以用于保证线程同步的原子性.可见性.有序性 对于synchronize ...

  6. 1-2 李宏毅2021春季机器学习教程-第一节(下)-深度学习基本概念简介

    上篇文章1-1 李宏毅2021春季机器学习教程-第一节(上)-机器学习基本概念简介介绍了回归的一些知识,重点介绍了机器学习寻找函式的三个步骤.接着我们继续学习第一节Introduction的内容. 目 ...

  7. 计算机动画基本概念,计算机三维动画基本概念简介

    简单介绍三维计算机动画技术的原理和实现,对里面的几项关键部分的概念进行阐述说明. 2 1 0 0年 9月 第 9期 (第 1 2期 )总 4 广西轻工业 G A G IOR A F IH D SR 计 ...

  8. 【概念简介】编辑器及第一个Javas cript程序

    [概念简介]编辑器及第一个Javas cript程序 Javas cript编辑器 在编写Javas cript代码的过程中,一款好的编辑器能让我们事半功倍.目前市面上流行的Javas cript编辑 ...

  9. 【读书笔记->统计学】09-02 将正态分布运用到其他概率分布-用正态分布近似代替二项分布、泊松分布概念简介

    用正态分布近似代替二项分布 假设一个情境:有40道题,每一道你都不知道答案,答对概率为1/4.求答对30题及以上的概率. 这个是典型的二项分布,具体介绍见:[读书笔记->统计学]07-02 离散 ...

最新文章

  1. ZOJ 2587 Unique Attack
  2. The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online
  3. 逻辑斯谛回归(Logistic回归)最详解
  4. JavaScript在物联网中的应用
  5. js src 变量_Js基础学习笔记(一)
  6. /etc/fstab 官方文档
  7. java lampo整车,lampo
  8. 数模学习(10):灰色系统(老哥)
  9. 究竟是谁,害了骑手小哥?
  10. C++-----------notify_one()与notify_all()
  11. imx6ul之OpenWRT中使用mpd作为音频Server及其使用
  12. 英语初级语法--句子成分(词性)(成分)
  13. 【实习之路】在广州欢聚时代入职的第一天
  14. hihoCoder #1558 : H国的身份证号码I
  15. stata:应用stata学习计量经济学原理 practice 6 边际效用 Marginal effect
  16. 万物联网的原则:从这瓶可乐“真智能”到这瓶可乐“真贴心”
  17. 固定资产管理系统提升企业固定资产管理效率
  18. pyqt5 QPainter绘制图形,并旋转
  19. 37个极具创意的响应式布局网站
  20. 莫得感情的资源记录器

热门文章

  1. 15台电脑无盘服务器配置,15台有盘网吧电脑配置、服务器配置、
  2. VS2017中使用GitHub
  3. 如何成为“一分钟经理人”?
  4. JS中判断对象是对象还是数组
  5. LimeSDR USB 使用gqrx来收听FM广播
  6. CentOS 6.8 curl支持的NSS修改为OpenSSL的方法
  7. yum Failed to initialize NSS library恢复
  8. Object类的各个方法及其作用
  9. 遥感图像处理-Spectral–Spatial Weighted Kernel Manifold Embedded Distribution Alignment for Remote Sensing
  10. 按键控制两位数码管加减