【CEGUI】概念简介
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】概念简介相关推荐
- 进程控制概念简介 多线程上篇(三)
进程控制 进程的基本数据信息是操作系统控制管理进程的数据集合,这些信息就是用来控制进程的,此处我们说的进程控制就是进程的管理. 比如进程有状态,那么进程的创建.终止,状态的切换,这都不是进程自主进行的 ...
- 【设计模式】原型模式 ( 概念简介 | 使用场景 | 优缺点 | 基本用法 )
文章目录 I . 原型模式 概念简介 II . 原型模式 使用场景 III . 原型模式 优缺点 IV . 原型模式 实现及 简单示例 I . 原型模式 概念简介 原型模式 : 用原型实例指定创建对象 ...
- 项目背景介绍及文件系统基本概念简介
文章目录 1 项目背景介绍 2 文件系统基本概念简介 2.1 文件系统接口 2.2 存储的基本单位 2.3 文件存储单位 2.4 文件结构 3 海量存储选用大文件结构的原因 1 项目背景介绍 根据淘宝 ...
- OS操作系统概念简介
操作系统 操作系统是一种程序:控制应用程序执行的程序 操作系统是一种接口:应用程序和计算机硬件间的接口 操作系统就是让普通人也会用电脑的软件(为了方便),就是把整个电脑资源包装起来的一个图形界面(为了 ...
- java 并发多线程显式锁概念简介 什么是显式锁 多线程下篇(一)
java 并发多线程显式锁概念简介 什么是显式锁 多线程下篇(一) 目前对于同步,仅仅介绍了一个关键字synchronized,可以用于保证线程同步的原子性.可见性.有序性 对于synchronize ...
- 1-2 李宏毅2021春季机器学习教程-第一节(下)-深度学习基本概念简介
上篇文章1-1 李宏毅2021春季机器学习教程-第一节(上)-机器学习基本概念简介介绍了回归的一些知识,重点介绍了机器学习寻找函式的三个步骤.接着我们继续学习第一节Introduction的内容. 目 ...
- 计算机动画基本概念,计算机三维动画基本概念简介
简单介绍三维计算机动画技术的原理和实现,对里面的几项关键部分的概念进行阐述说明. 2 1 0 0年 9月 第 9期 (第 1 2期 )总 4 广西轻工业 G A G IOR A F IH D SR 计 ...
- 【概念简介】编辑器及第一个Javas cript程序
[概念简介]编辑器及第一个Javas cript程序 Javas cript编辑器 在编写Javas cript代码的过程中,一款好的编辑器能让我们事半功倍.目前市面上流行的Javas cript编辑 ...
- 【读书笔记->统计学】09-02 将正态分布运用到其他概率分布-用正态分布近似代替二项分布、泊松分布概念简介
用正态分布近似代替二项分布 假设一个情境:有40道题,每一道你都不知道答案,答对概率为1/4.求答对30题及以上的概率. 这个是典型的二项分布,具体介绍见:[读书笔记->统计学]07-02 离散 ...
最新文章
- ZOJ 2587 Unique Attack
- The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online
- 逻辑斯谛回归(Logistic回归)最详解
- JavaScript在物联网中的应用
- js src 变量_Js基础学习笔记(一)
- /etc/fstab 官方文档
- java lampo整车,lampo
- 数模学习(10):灰色系统(老哥)
- 究竟是谁,害了骑手小哥?
- C++-----------notify_one()与notify_all()
- imx6ul之OpenWRT中使用mpd作为音频Server及其使用
- 英语初级语法--句子成分(词性)(成分)
- 【实习之路】在广州欢聚时代入职的第一天
- hihoCoder #1558 : H国的身份证号码I
- stata:应用stata学习计量经济学原理 practice 6 边际效用 Marginal effect
- 万物联网的原则:从这瓶可乐“真智能”到这瓶可乐“真贴心”
- 固定资产管理系统提升企业固定资产管理效率
- pyqt5 QPainter绘制图形,并旋转
- 37个极具创意的响应式布局网站
- 莫得感情的资源记录器
热门文章
- 15台电脑无盘服务器配置,15台有盘网吧电脑配置、服务器配置、
- VS2017中使用GitHub
- 如何成为“一分钟经理人”?
- JS中判断对象是对象还是数组
- LimeSDR USB 使用gqrx来收听FM广播
- CentOS 6.8 curl支持的NSS修改为OpenSSL的方法
- yum Failed to initialize NSS library恢复
- Object类的各个方法及其作用
- 遥感图像处理-Spectral–Spatial Weighted Kernel Manifold Embedded Distribution Alignment for Remote Sensing
- 按键控制两位数码管加减