版本下载

点此下载
  1. 1.BOLT引擎正式提供union版本
  2. 2.全新的字体&文本架构
  3. 3.全新字体反走样技术,更清晰的渲染效果
  4. 4.文本渲染性能大幅度提升
  5. 5.更优秀的内存性能
  6. 6.文本格式增加XLTEXT_DT_VISIBLEWIDTH属性,可以获取整行的最小可显示宽度
  7. 7.图形库依赖的freetype库更新
  8. 8.more......

详细更新列表如下:

 

1.         BOLT引擎正式提供union版本

union版本在文件形式上,合并XLGraphic.dll/XLLuaRuntime.dll/ XLFSIO.dll/XLTS.DLL/XLGraphicPlus.dll/libpng13.dll/zlib1.dll/libexpat.dll以及cc++atl的运行库到XLUE.DLL里面,但是功能和正常版本保持一致,union版本的详细说明,请参考在线文档:

http://xldoc.xl7.xunlei.com/0000000018/00000000180001000047.html

 

2.         全新的字体&文本架构

新版引擎采用了字体引擎层(freetype+gdi)、字模层、字体位图层,文本排版引擎(包括智能分词器等),文本渲染引擎的五层架构,在性能考虑上有多级缓存、垃圾回收策略的设计,新的架构下逻辑更加清晰、优雅,扩展功能更加方便,freetypegdi两个字体引擎也很大程度上做到了一致,并且文本排版效果也基本相同,这也就意味着在freetypegdi两种模式下可以无缝切换,不用再担心排版的各种问题了

 

3.         全新字体反走样技术,更清晰的渲染效果

新版引擎的使用了独特的基于subpixel的颜色抖动技术,可以非常好的模拟windows下的ClearType效果,字体渲染效果清晰度大大提升,并且不再受系统是否开启ClearType效果制约,所有系统下都有一致的渲染效果,可以给各产品带来更加优秀的产品体验!

 

4.         文本渲染性能大幅度提升

基于全新的架构+多重缓存+高效文本渲染器,无论是freetype还是gdi性能都有大幅度的提升,其中GDI的渲染性能有接近一千倍的提升,freetype在默认模式(LCD)下也有数十倍的提升。

 

5.         更优秀的内存性能

新版字体引擎引入了多级缓存机制,在保证字体渲染性能的情况下,内存占用也减少,尤其是freetype,现已经去掉了freetype自带的缓存机制,使用我们内部的缓存机制。并且在此基础引入了垃圾回收策略,内存占用方面有更大的可控制性

 

6.         文本格式增加XLTEXT_DT_VISIBLEWIDTH属性,可以获取整行的最小可显示宽度

该属性主要用以图形库的XL_GetSingleLineTextExtend接口,如果不指定该属format,那么获取的文本宽度是可用以排版的宽度;如果指定了,那么获取的是可显示的宽度,这种情况下包括了LCD模式下的超距抖动色区域和斜体字的悬垂区域的大小,确保获取的宽度可以显示所有文本内容而不被剪裁。  TextObject默认会使用该属性

 

7.         图形库依赖的freetype库更新

freetype库更新到使用官方的最新稳定版本:2411版,详细改动可参考freetype官方网站: http://freetype.org

 

8.         完善引擎里的光标策略

光标策略做了较大修正,和之前版本的光标策略基本兼容,具体内容参考以下在线文档:

http://xldoc.xl7.xunlei.com/0000000018/00000000180001000051.html

 

9.         增加核心功能:增加OnControlMouseWheel事件

该事件是为了方便控件开发而增设的,可以更好的在大粒度上操控鼠标滚轮事件,从而避免频繁调用RouteToFather或者消息重定向函数。事件签名式和OnMouseWheel一致,触发原理和OnControlFocusChangeOnControlMouseEnter一致,当一个对象收到mousewheel事件后,会向上寻找所有属于control的父对象,依次触发该事件

 

10.     核心功能扩展:layoutobjOnFocusChange事件增加焦点来源字段

扩展后的事件签名式如下:

ret,handled,callnext OnFocusChange(self, bool getFocus, layoutobj oppositeObj, string focusReason)

其中reason指定了导致这次焦点切换的原因,可以取值如下:

l  system  引擎内部原因导致,比如用户点击,窗口获取焦点等

l  user    用户显式调用SetFocus导致

l  tab        引擎的导航系统导致

 

11.     增加核心功能:元对象增加OnAlphaChange基础事件

alpha属性是所有元对象的基础属性,考虑到在开发中很多情况下需要监视该属性的改变,本版本增加了该事件,事件原型为

result handled, callnext OnAlphaChange(self, int newAlpha, int oldAlpha)

所有元对象和xml自定义控件均支持该事件

 

12.     核心功能扩展:AlphaChangeAnimation增加recursive相关属性和方法,支持递归改变子对象的alpha

根据一些产品的实际使用和反馈,AlphaChangeAnimation很多时候不止需要改变绑定obj本身的alpha,而且还需要递归的改变所有子对象的alpha,所以本版本起,增加recursive属性和相应的方法,方便对一组对象做统一动画。

 

属性配置如下: <recursive>1</recursive>

方法如下: void SetRecursive(bool rescursive)

默认值是fasle

 

13.     完善元对象事件解析:一个事件在指定redirect情况下,可以不用指定funcfile

现在一个事件可以直接redirect,而不用附带filefunc了,形如

<eventlist>

         <event name="OnRButtonDown" redirect="tree:b2:x3"/>

</eventlist>

 

14.     WindowlessFlashObject绘制增加支持mask

现在MaskObjectWindowlessFlashObject也生效了,在界面上使用flash素材的自由度更大

 

15.     Animation增加GetNeedLevel的方法

该方法和SetNeedLevel为对称方法,原型如下

int GetNeedLevel()

 

16.     完善Animation的动画定义level,可以取值-1

取值-1标志着该动画不受全局动画执行级别的影响

 

17.     规范XLUE主模块对XlGraphicPlus.dllXLTS.dll 的加载

修正后的加载策略为:只从XLUE.dll同目录加载,不再尝试从其它目录加载

 

18.     hostwnd增加OnBeginDragOnEndDrag事件

这两个事件是在hostwnd作为drag源,并开始/结束一个drag操作时候触发,可以用来做一些准备和收尾工作

事件原型为:

result,handled,callnext OnBeginDrag(self)

result,handled,callnext OnEndDrag(self)

 

19.     XLUEOPC.dll去除对XLGraphicXLFSIO两模块的依赖

 

20.     完善TurnObjectAnimationGetBindRenderObject接口

现在这个方法可以返回绑定的frontback两个对象了

local frontObj, backObj GetBindRenderObject()

 

21.     XLGraphic字体强制映射到truetype字体

为了避免指定了非truetype/opentype字体,导致图形库无法正常渲染,强制映射此类字体到默认的truetype字体

 

22.     XGP增加XLGP_LoadCursorFromStreamEx接口,支持加载curani类型光标

 

23.     完善XGP加载光标策略

完善了调用系统接口加载ani类型光标,避免某些情况下加载失败

对于cur类型光标,优先使用内部的parser

 

24.     完善光标类型资源cursor,支持anicur类型

新的策略将依据文件后缀名来判断光标类型,支持.cur.ani两种类型光标资源

 

25.     日志版的错误提示MsgBox增加限制,避免日志版连续弹框导致的堆栈溢出

现在限制是最多同时存在20个弹框,或者主线程堆栈大小不超过800kb;如果超出上述限制,那么不再弹框提示

 

26.     完善LuaRuntime的线程安全监测,增强对decoda的支持

由于decoda会在辅助线程里面,操作主线程的luastate,所以在调试过程中会导致lunruntime出现线程安全监测的弹框;版本起对这种情况作了排除

 

27.     RichEditObject的快捷键支持,排除ctrlshift或者atl的组合键情况

现在只有ctrl+字母的两者组合才会触发相应操作,而ctrl+shift+字母,ctrl+atl+字母的情况不再触发相应操作

 

28.     EditObject默认开启nohidesel属性

该属性开启后,EditObject的选中内容,在失去焦点后,也会呈现选中状态,和RichEditObject保持一致。

目前EditObject没有提供属性或者方法来控制该属性

 

29.     修复动画在Stop时候,某些内部对象不会立刻删除的bug

 

30.     完善LuaEnv的移除GlobalApiClassGlobalObj策略

新的策略确保在移除这些全局class\api\obj的时候,同时会清除当前LuaEnv关联的所有luaruntime里面已经注册的对应的元表和方法,从而避免可能导致的崩溃

 

31.     完善元对象的焦点策略

智能焦点策略增加以下修正: 如果一个元对象对一个或者多个键盘消息进行了重定向,那么该元对象也可以接收焦点

 

32.     日志版禁用FPO优化,方便调试和崩溃定位

 

33.     日志版XLGraphic的字体接口增加线程安全检测

需要注意,图形库的字体、文本相关接口,只可在单线程里面使用,切忌多线程操作字体、文本等接口

 

34.     完善FreeType字体引擎的字体链接策略,修正不可使用默认字体链接的bug

 

35.     完善FreeType字体引擎,在解析字体名称时候,对空格等字符的兼容性处理

 

36.     强化引擎可接收hostwnd/hwnd为参数的所有接口,也可接收number类型句柄值

传入的number类型参数会当做hwnd句柄值来解释

 

37.     修正EditObject的光标策略

基于win32平台的textservice内核的EditObject,修正后的光标策略,不再依赖系统光标,而是使用引擎自身的统一光标策略,避免出现冲突

 

38.     修正多行排版的末行排版策略

修正后的策略为,如果多行区域高度不足以容纳一行,那么会对这行剪裁后显示,而不是不显示

 

39.     修复HostWndGetWindowBitmap,在对象树绑定原点不在(0,0)时候的出错的bug

 

40.     WindowlessFlashObjectlocal模式,提供对等的回调函数

WindowlessFlashObject的支持回调的接口,在使用local service模式下,提供同样的回调支持,方便开发者做统一处理

 

41.     修正HitTestDragHitTest的命中测试逻辑

新的逻辑尽量避免对较小zorder对象进行回调处理(OnHitTestOnDragQuery),避免由此可能导致的错误

 

42.     完善XLUEIPC的等待机制

为了适应更广泛的应用环境,现在异步等待不再做线程限制,也就是同一个线程里面可以发起多个异步等待,但同步等待仍然限制为同一个线程最多只有一个等待

 

43.     RichEditObject默认文本引擎改用GDI

 

44.     修复了RichEditObject选中绘制,在某些情况下可能出错的bug

 

45.     修复TipsHostWndauto模式下,在DelayCancel时,某些情况下可能导致对象树无法删除的bug

bug会在特定情况下触发,从而导致对象树的泄露,本版本已经修复

 

46.     修复WindowlessFlashObject在某些情况下设置无效cursorbug

 

47.     修正TextObject属性解析
主要修复了wordBreak属性默认不生效的bug

 

48.     修正文本多行排版的剪裁策略

修正后的策略为:  第一行强制显示,不管是否被剪裁;第二行起,如果指定了省略属性,那么如果一行不能完全显示,那么不予显示;没有指定省略属性,强制显示到最后一行,即使被剪裁

 

49.     修复远程flash在初始化失败的情况下,没有事件通知的bug

 

50.     修复WindowlessFlashObject某些异步调用回调函数返回值无效的bug

对于某些返回bool类型的函数的异步调用模式,比如LoadMovie,返回值会恒为false,新版本已经修复

 

51.     修复XLUEIPC通道在断开连接时候,在某些情况下可能重入的bug

 

52.     修复GetMultilineTextExtend在多行情况下,宽度可能不正确的bug

 

53.     修复ts一处字体格式bug

 

54.     修复图形库文本排版,在居中对齐情况下可能出错的bug

 

55.     完善hostwndtoolwindowappwindow属性支持

 

56.     日志版去除WindowlessFlashObject一处无效的错误提示(迅雷7反馈)

该错误提示在创建flash服务过程中,对象自身销毁会导致出现

 

57.     修正文本排版的一处居中对齐的bug

该问题在文本居中对齐,并且显示区域不够需要省略情况下出现,现在修正为最多显示三个”.”,并且确保头部文字不被剪裁

 

58.     修正RichEditObject背景颜色无效的bug

 

59.     修正XLUEIPCSyncCallSyncCallReply等同步调用接口的返回值

修正后的返回值,可以正确反映下层信道的状态,包括超时等出错情况下,可以返回相应的错误码

 

60.     修正FreeType的字体创建策略,在字体未安装的情况下,不再最底层逻辑进行替换,避免导致FT_Face重复而可能导致的崩溃 

61.     修复元对象GetMaskPos方法,在没有配置mask情况下可能导致的崩溃

62.     修复了FreeType字体引擎,某些情况下size为空,可能导致的崩溃 

63.     修复XLUEIPCstream读写int64可能导致的崩溃 

64.     修正一处XLLuaRuntimeXLPrintStack的可能导致的内存泄露

65.     修复动画一处可能的崩溃

版本历程:
1.1.0.332   >   1.1.0.340   >   1.2.0.382   >   1.2.0.386   >   1.2.0.436   >   1.5.0.468