【CEGUI】CEGUI入门篇之数据文件及默认初始化(三)
2017-04-13 07:09
369 查看
以下内容翻译自http://static.cegui.org.uk/docs/0.8.7/datafile_tutorial.html
开始之前需要了解CEGUI Render和System的创建及ResourceProvider的用法,不懂的请参考“CEGUI入门篇之初始化(一)”和“CEGUI入门篇之使用ResourceProvider加载资源(二)”。
使用Xerces-C++进行schema校验——
CEGUI中xml文件的解析模块默认为Expat,但也支持其它的xml解析模块如Apache Software Foundation的Xerces-C++,这个库的优点是提供了schema校验功能,以保证xml文件格式正确,为此我们需要提供schema文件,即CEGUI中名字以.xsd为扩展的文件,供ResouceProvider使用,最好是设置资源组,相关用法可参照“CEGUI入门篇之使用ResourceProvider加载资源(二)”。建议CEGUI开发者使用Xerces-C++进行开发和测试,避免不良xml文件的流入,最后软件部署阶段可转换为其它轻量级的xml解析模块。
Imageset——
Imageset是一系列图片或纹理的集合,包括若干Image,它们都有自己的名字。在xml文件中,根元素为Imageset,包括若干Image子元素,Imageset的属性包括version(资源文件都应该设置这个属性,当前版本为2)、name(必选)、imagefile(必选)、resourceGroup(可选)、autoScaled(可选,支持vertical、horizontal、min、max、true、false,默认false)、nativeHorzRes(可选,默认640)、nativeVertRes(可选,默认480),Image的属性包括name(必选)、xPos(必选)、yPos(必选)、width(必选)、height(必选)、xOffset(可选,默认0)、yOffset(可选,默认0)。Imageset的详细用法可参考http://static.cegui.org.uk/docs/0.8.7/xml_imageset.html,下面是一个简单的例子(DriveIcons.imageset):
Font——
Font即CEGUI中使用的字体,包括两种类型,FreeTypeFont和PixmapFont,前者使用标准的.ttf字体文件,对字体进行动态渲染,后者使用Imageset,包括了与字体对应的位图。在xml文件中,根元素为Font,字体类型为PixmapFont还包括若干Mapping子元素,Font的属性包括version(资源文件都应该设置这个属性,当前版本为3)、type(FreeType或Pixmap)、name(必选)、filename(根据type选择对应的imageset或ttf)、resourceGroup(可选)、size(可选,用于FreeTypeFont,默认12)、antiAlias(可选,用于FreeTypeFont,默认true)、autoScaled(可选,支持vertical、horizontal、min、max、true、false,默认false)、nativeHorzRes(可选,默认640)、nativeVertRes(可选,默认480),lineSpacing(可选,用于FreeTypeFont,默认0),Mapping的属性包括codepoint(必选)、image(必选)、horzAdvance(可选,默认-1)。Font的详细用法可参考http://static.cegui.org.uk/docs/0.8.7/xml_font.html,下面是一个字体类型为FreeTypeFont的例子(Batang-18.font):
LookNFeel——
LookNFeel是CEGUI皮肤系统的主要部分,在xml文件中,根元素为Falagard(CEGUI皮肤系统),包括若干WidgetLook子元素,具体用法可参考http://static.cegui.org.uk/docs/0.8.7/fal_man.html。
Scheme——
Scheme用于组合所有的资源文件,在xml文件中,根元素为GUIScheme,子元素包括Imageset、Font、LookNFeel、WindowSet、WindowRendererSet、WindowAlias、FalagardMapping。GUIScheme的属性包括version(资源文件都应该设置这个属性,当前版本为5)、name(必选)。FalagardMapping的属性包括windowType(必选)、targetType(必选)、renderer(必选)、lookNFeel(必选)、renderEffect(可选)。Font的属性包括name(可选)、filename(必选)、resourceGroup(可选)。Imageset的属性包括name(可选)、filename(必选)、resourceGroup(可选)。ImagesetFromImage的属性包括name(可选)、filename(必选)、resourceGroup(可选)。LookNFeel的属性包括filename(必选)、resourceGroup(可选)。WindowAlias的属性包括alias(必选)、target(必选)。WindowFactory的属性包括name(必选)。WindowRendererFactory的属性包括name(必选)。WindowRendererSet的属性包括filename(必选)。WindowSet的属性包括filename(必选)。Scheme的详细用法可参考http://static.cegui.org.uk/docs/0.8.7/xml_scheme.html,下面是一个简单的例子(GameMenu.scheme):
Layout——
Layout即Window布局,可设置属性以及绑定事件。在xml文件中,根元素为GUILayout,只能包含一个Window子元素。GUILayout的属性包括version(资源文件都应该设置这个属性,当前版本为4)。Window的属性包括type(必选)、name(可选),Window可嵌套使用,作为GUILayout、Window、AutoWindow的子元素,Window的子元素有一定的顺序,依次是LayoutImport、Property、Event、Window和/或AutoWindow,最后还可以是Property。Property的属性包括name(必选)、value(可选,省略时使用文本内容)。Event的属性包括name(必选)、function(必选)。LayoutImport的属性包括filename(必选)、resourceGroup(必选)。AutoWindow的属性包括namePath(必选),AutoWindow可嵌套使用,作为Window、AutoWindow的子元素,AutoWindow的子元素有一定的顺序,依次是LayoutImport、Property、Event、Window和/或AutoWindow,最后还可以是Property。Layout的详细用法可参考http://static.cegui.org.uk/docs/0.8.7/xml_layout.html,下面是一个简单的例子(application_templates.layout):
Config——
Config可以配置系统默认资源及ScriptModule中的脚本文件,在xml文件中,根元素为CEGUIConfig,没有属性,其子元素包括Logging、AutoLoad、ResourceDirectory、DefaultResourceGroup、Scripting、DefaultXMLParser、DefaultImageCodec、DefaultFont、DefaultMouseCursor、DefaultTootip、DefaultGUISheet,具体用法可参考http://static.cegui.org.uk/docs/0.8.7/xml_config.html。
另一个需要设置的对象是mouse cursor,方法如下:
如果使用了Tootip,还要设置Tootip的类型,如下:
开始之前需要了解CEGUI Render和System的创建及ResourceProvider的用法,不懂的请参考“CEGUI入门篇之初始化(一)”和“CEGUI入门篇之使用ResourceProvider加载资源(二)”。
1、简介
CEGUI使用了许多不同类型的数据文件,至少在初始化时可能会感到困惑,这些文件到底是什么东西,它们之间有什么关系,一些系统级别的默认设置,这里将对这些内容作个说明,描述这些数据文件的用法。2、一切都是xml
在CEGUI中,Font、Imageset、LookNFeel、Scheme、XSD都是xml文件,不过也有几个例外,如图像文件、脚本文件、lib库文件等,下面介绍XSD。使用Xerces-C++进行schema校验——
CEGUI中xml文件的解析模块默认为Expat,但也支持其它的xml解析模块如Apache Software Foundation的Xerces-C++,这个库的优点是提供了schema校验功能,以保证xml文件格式正确,为此我们需要提供schema文件,即CEGUI中名字以.xsd为扩展的文件,供ResouceProvider使用,最好是设置资源组,相关用法可参照“CEGUI入门篇之使用ResourceProvider加载资源(二)”。建议CEGUI开发者使用Xerces-C++进行开发和测试,避免不良xml文件的流入,最后软件部署阶段可转换为其它轻量级的xml解析模块。
3、数据文件
正如前面提到的,CEGUI中不多数的数据文件是基于xml的,这些xml文件并不以.xml为后缀,而是根据数据文件的类型进行设置,如Imageset数据文件的后缀为.imageset,Font数据文件的后缀为.font,这种后缀命名方法虽不是强制的,但可读性更好。下面介绍不同类型的数据文件。Imageset——
Imageset是一系列图片或纹理的集合,包括若干Image,它们都有自己的名字。在xml文件中,根元素为Imageset,包括若干Image子元素,Imageset的属性包括version(资源文件都应该设置这个属性,当前版本为2)、name(必选)、imagefile(必选)、resourceGroup(可选)、autoScaled(可选,支持vertical、horizontal、min、max、true、false,默认false)、nativeHorzRes(可选,默认640)、nativeVertRes(可选,默认480),Image的属性包括name(必选)、xPos(必选)、yPos(必选)、width(必选)、height(必选)、xOffset(可选,默认0)、yOffset(可选,默认0)。Imageset的详细用法可参考http://static.cegui.org.uk/docs/0.8.7/xml_imageset.html,下面是一个简单的例子(DriveIcons.imageset):
<?xml version="1.0"?> <Imageset version="2" name="DriveIcons" imagefile="DriveIcons.png" nativeHorzRes="800" nativeVertRes="600" autoScaled="vertical"> <Image name="Artic" xPos="1" yPos="1" width="62" height="54" /> <Image name="Lime" xPos="64" yPos="1" width="62" height="54" /> <Image name="Sunset" xPos="127" yPos="1" width="62" height="54" /> <Image name="Black" xPos="190" yPos="1" width="62" height="54" /> <Image name="Blue" xPos="1" yPos="58" width="62" height="54" /> <Image name="Silver" xPos="65" yPos="58" width="62" height="54" /> <Image name="DriveStack" xPos="128" yPos="57" width="62" height="54" /> <Image name="GreenCandy" xPos="192" yPos="57" width="62" height="54" /> <Image name="GlobalDrive" xPos="1" yPos="114" width="62" height="54" /> </Imageset>
Font——
Font即CEGUI中使用的字体,包括两种类型,FreeTypeFont和PixmapFont,前者使用标准的.ttf字体文件,对字体进行动态渲染,后者使用Imageset,包括了与字体对应的位图。在xml文件中,根元素为Font,字体类型为PixmapFont还包括若干Mapping子元素,Font的属性包括version(资源文件都应该设置这个属性,当前版本为3)、type(FreeType或Pixmap)、name(必选)、filename(根据type选择对应的imageset或ttf)、resourceGroup(可选)、size(可选,用于FreeTypeFont,默认12)、antiAlias(可选,用于FreeTypeFont,默认true)、autoScaled(可选,支持vertical、horizontal、min、max、true、false,默认false)、nativeHorzRes(可选,默认640)、nativeVertRes(可选,默认480),lineSpacing(可选,用于FreeTypeFont,默认0),Mapping的属性包括codepoint(必选)、image(必选)、horzAdvance(可选,默认-1)。Font的详细用法可参考http://static.cegui.org.uk/docs/0.8.7/xml_font.html,下面是一个字体类型为FreeTypeFont的例子(Batang-18.font):
<?xml version="1.0" ?> <Font version="3" name="Batang-18" filename="batang.ttf" type="FreeType" size="18" nativeHorzRes="1280" nativeVertRes="720" autoScaled="vertical"/>
LookNFeel——
LookNFeel是CEGUI皮肤系统的主要部分,在xml文件中,根元素为Falagard(CEGUI皮肤系统),包括若干WidgetLook子元素,具体用法可参考http://static.cegui.org.uk/docs/0.8.7/fal_man.html。
Scheme——
Scheme用于组合所有的资源文件,在xml文件中,根元素为GUIScheme,子元素包括Imageset、Font、LookNFeel、WindowSet、WindowRendererSet、WindowAlias、FalagardMapping。GUIScheme的属性包括version(资源文件都应该设置这个属性,当前版本为5)、name(必选)。FalagardMapping的属性包括windowType(必选)、targetType(必选)、renderer(必选)、lookNFeel(必选)、renderEffect(可选)。Font的属性包括name(可选)、filename(必选)、resourceGroup(可选)。Imageset的属性包括name(可选)、filename(必选)、resourceGroup(可选)。ImagesetFromImage的属性包括name(可选)、filename(必选)、resourceGroup(可选)。LookNFeel的属性包括filename(必选)、resourceGroup(可选)。WindowAlias的属性包括alias(必选)、target(必选)。WindowFactory的属性包括name(必选)。WindowRendererFactory的属性包括name(必选)。WindowRendererSet的属性包括filename(必选)。WindowSet的属性包括filename(必选)。Scheme的详细用法可参考http://static.cegui.org.uk/docs/0.8.7/xml_scheme.html,下面是一个简单的例子(GameMenu.scheme):
<?xml version="1.0" ?> <GUIScheme version="5" name="GameMenu"> <Imageset filename="GameMenu.imageset" /> <Font filename="Jura-10.font" /> <Font filename="Jura-13.font" /> <Font filename="Jura-18.font" /> <LookNFeel filename="GameMenu.looknfeel" /> <WindowRendererSet filename="CEGUICoreWindowRendererSet" /> <FalagardMapping windowType="GameMenu/Editbox" targetType="CEGUI/Editbox" renderer="Core/Editbox" lookNFeel="GameMenu/Editbox" /> </GUIScheme>
Layout——
Layout即Window布局,可设置属性以及绑定事件。在xml文件中,根元素为GUILayout,只能包含一个Window子元素。GUILayout的属性包括version(资源文件都应该设置这个属性,当前版本为4)。Window的属性包括type(必选)、name(可选),Window可嵌套使用,作为GUILayout、Window、AutoWindow的子元素,Window的子元素有一定的顺序,依次是LayoutImport、Property、Event、Window和/或AutoWindow,最后还可以是Property。Property的属性包括name(必选)、value(可选,省略时使用文本内容)。Event的属性包括name(必选)、function(必选)。LayoutImport的属性包括filename(必选)、resourceGroup(必选)。AutoWindow的属性包括namePath(必选),AutoWindow可嵌套使用,作为Window、AutoWindow的子元素,AutoWindow的子元素有一定的顺序,依次是LayoutImport、Property、Event、Window和/或AutoWindow,最后还可以是Property。Layout的详细用法可参考http://static.cegui.org.uk/docs/0.8.7/xml_layout.html,下面是一个简单的例子(application_templates.layout):
<?xml version="1.0" encoding="UTF-8"?> <GUILayout version="4" > <Window type="DefaultWindow" name="DefaultWindow" > <Property name="Area" value="{{0,0},{0,0},{1,0},{1,0}}" /> <Property name="MaxSize" value="{{1,0},{1,0}}" /> <Window type="TaharezLook/FrameWindow" name="FrameWindow" > <Property name="Area" value="{{0.3,0},{0.3,0},{0.7,0},{0.7,0}}" /> <Property name="Text" value="Demo Window" /> <Window type="TaharezLook/Button" name="Button" > <Property name="Area" value="{{1,-160},{1,-43},{1,-15},{1,-11}}" /> <Property name="Text" value="DemoButton" /> </Window> <Window type="TaharezLook/Editbox" name="Editbox" > <Property name="Area" value="{{0,10},{0,8},{1,-10},{0,40}}" /> </Window> </Window> </Window> </GUILayout>
Config——
Config可以配置系统默认资源及ScriptModule中的脚本文件,在xml文件中,根元素为CEGUIConfig,没有属性,其子元素包括Logging、AutoLoad、ResourceDirectory、DefaultResourceGroup、Scripting、DefaultXMLParser、DefaultImageCodec、DefaultFont、DefaultMouseCursor、DefaultTootip、DefaultGUISheet,具体用法可参考http://static.cegui.org.uk/docs/0.8.7/xml_config.html。
4、加载资源
为了CEGUI程序的正常运行,需要加载一些必备资源,包括Imageset、Font、LookNFeel和Scheme,其中Scheme组合了其它资源,可以帮我们自动加载其它资源文件。下面的例子加载了scheme和font,前提是关联了资源组与目录并设置了默认资源组,资源组相关介绍可参照“CEGUI入门篇之使用ResourceProvider加载资源(二)”。// create (load) the TaharezLook scheme file // (this auto-loads the TaharezLook looknfeel and imageset files) CEGUI::SchemeManager::getSingleton().createFromFile( "TaharezLook.scheme" ); // create (load) a font. // The first font loaded automatically becomes the default font, but note // that the scheme might have already loaded a font, so there may already // be a default set - if we want the "DejaVuSans-10" font to definitely // be the default, we should set the default explicitly afterwards. CEGUI::FontManager::getSingleton().createFromFile( "DejaVuSans-10.font" );
5、系统默认初始化
最后,还需要为CEGUI系统设置一些默认选项,以保证window或widget没有设置font、mouse cursor时,有默认的font、mouse cursor可以使用。FontManager自动设置第一个加载的font为系统默认font,如果这个font不是我们想要的默认font或者难以保证font的加载顺序,就需要显式地设置默认font,如下所示:CEGUI::System::getSingleton().getDefaultGUIContext().setDefaultFont( "DejaVuSans-10" );
另一个需要设置的对象是mouse cursor,方法如下:
CEGUI::System::getSingleton().getDefaultGUIContext(). getMouseCursor().setDefaultImage( "TaharezLook/MouseArrow" );
如果使用了Tootip,还要设置Tootip的类型,如下:
CEGUI::System::getSingleton().getDefaultGUIContext(). setDefaultTooltipType( "TaharezLook/Tooltip" );
相关文章推荐
- CEGUI初学者指南2——装载数据文件和初始化
- cegui 3 数据文件的装载和初始化
- CEGUI 装载数据文件和初始化
- primitive数据何时被默认初始化
- net控件中数据导到Excel的格式 首先,我们了解一下excel从web页面上导出的原理。当我们把这些数据发送到客户端时,我们想让客户端程序(浏览器)以excel的格式读取它,所以把mime类型设为:application/vnd.ms-excel,当excel读取文件时会以每个cell的格式呈现数据,如果cell没有规定的格式,则excel会以默认的格式去呈现该cell的数据。这样就给我们提供了自定义数据格式的空间,当然我们必须使用excel支持的格式。下面就列出常用的一些格式: 1) 文本
- 怎么修改Outlook2010 PST数据文件位置(默认邮件存储目录)
- Jetspeed2 将文件数据初始化到数据库的实现方法
- Python学习入门基础教程(learning Python)--5.7 Python文件数据记录存储与处理
- Android入门学习笔记(一)|基础知识|文件数据存储读取|解析XML
- Your First ASP.NET MVC4 App(初学者入门的第一个MVC4)#2,自订Class文件 数据模块
- 怎么修改Outlook2010 PST数据文件位置(默认邮件存储目录)
- ActionScript 3.0入门:Hello World、文件读写、数据存储(SharedObject)、与JS互调
- 获取SQL Server默认数据文件存放路径
- 入门计划->使用(C++库)ofstream写文件数据
- 初始化参数文件的默认文件名及默认…
- PostgreSQL启动过程中的那些事九_十_十一:初始化活跃backend进程列表、创建opts文件、保持非默认GUC参数文件
- ASP.NET的默认数据文件ASP.NETDB.MDF说明
- 使用dom4j读取xml文件初始化数据
- [CentOS]MySQL更改默认数据文件存储目录
- 在Win8系统下如何手动修改Outlook 2013默认的ost数据文件位置