針對(duì)CGUI庫功能強(qiáng),但使用問題頗多的現(xiàn)象,決定重構(gòu)。
重構(gòu)總則:
1〉去除冗余部分,精簡(jiǎn)優(yōu)化代碼。
2〉刪除String類,其采用了兼容差的utf變長(zhǎng)字符編碼。
3〉去除多余組名規(guī)范,文件名具備GUID特性。
4〉給底層模塊代碼解耦,松耦合組織底層,禁止在基層使用全局對(duì)象和單體對(duì)象。
5〉修補(bǔ)異常處理,其大部分屬于錯(cuò)誤處理范疇。屏蔽了錯(cuò)誤調(diào)試,使斷言不能精確定位。改為try{}catch()
{assert(0);}
6〉規(guī)范命名空間,將所有對(duì)象放入 namespace DCH{ namespace GUI2D{}}。
7〉刪除Script模塊
8〉刪除動(dòng)態(tài)庫載入模塊
9〉實(shí)現(xiàn)GUIRenderer子類嵌入自家的3D引擎支持
10〉刪除Editbox類正則式模塊,這也符合類功能單一原則;同時(shí)也消除正則式PCRE庫隱患。
重構(gòu)細(xì)則:
1〉核心管理模塊文件放在根目錄。
2〉Image裝載采用FreeImage模塊。
3〉Utlit模塊負(fù)責(zé)基礎(chǔ)結(jié)構(gòu)和功能。
4〉Xml解析采用TinyXML模塊,修正缺省字符編碼為Unknown(即 ascii)。
5〉圖形原點(diǎn)規(guī)定在左上角,TopLeftToBottomRight坐標(biāo)系。
6〉刪除工廠別名Alias成員。
7〉調(diào)整在System類初始化時(shí)注冊(cè)所有控件及其渲染的工廠類,靜態(tài)創(chuàng)建注冊(cè)渲染窗工廠。
8〉修改圖形GUIRenderer的Quad_mode為貼圖圖層混合模式。
9〉刪除工廠類遍歷器的對(duì)外暴露。
10〉對(duì)混合中英字符統(tǒng)一為Unicode編碼,由FreeTypeFont類處理中文顯示。
11〉取消窗體前綴名
12〉修正FalagardComponentBase類,對(duì)窗體圖形的Alpha運(yùn)算錯(cuò)誤。
13〉刪除PCRE庫,有字符類緩沖區(qū)溢出漏洞,對(duì)堆有隱含的不穩(wěn)定操作。
/////////////////////////////////////////////////////////////////////////////
重構(gòu)結(jié)果:(part source open !)
http://blog.csdn.net/beidoustudio/archive/2009/02/07/3867995.aspx