今天開始看GUI(圖像使用者界面)子產品的實作部分了。首先是BuildInFont.h,内置字型,在這個頭檔案裡作者使用了Bin2H。Bin2H是免費軟體,可以從www.code3d.com 免費下載下傳,一個将二進制檔案轉換到 C 頭檔案中的Win32指令行實用工具,資料塊作為代表該檔案的内容。GUIIcons.h中建立了15種圖示,并注明在BuidInFont中還有13種。
接下來是各個GUI元件的實作部分了。首先看CGUIWindow.h/.cpp,除去構造及析構函數,還增加事件處理函數以及繪制元素函數,成員變量中包含了按鈕元素(元件)。由此可知GUI各個元素(元件)都會包含事件處理以及繪制元素的方法。
CGUIButton.h/.cpp,增加了一個設定字型的方法。
CGUICheckbox.h/.cpp,增加了設定標明狀态以及查詢標明狀态對的方法。
CGUIFont.h/.cpp,增加了載入字型檔案和繪制文本等方法。
CGUIFileOpenDialog.h/.cpp,增加擷取所選檔案的檔案名及用檔案填充清單框等方法。
CGUIImage.h/.cpp,沒有事件處理方法,增加設定圖像的方法。
CGUIListBox.h/.cpp,增加了對清單項的處理以及設定圖示字型等方法。
CGUIMeshViewer.h/.cpp,增加網格和材質的設定方法。
CGUIScrollBar.h/.cpp,增加設定或擷取滾動條及設定滾動條最大數目等方法。
CGUISkin.h/.cpp,沒有事件處理和繪制方法。擁有擷取或設定皮膚顔色、大小、字型等方法。
CGUIStaticText.h/.cpp,沒有事件處理方法。
最後看CGUIEnvironment.h/.cpp檔案,它作為GUI所有元素的管理器,将所有GUI元素(元件)的建立操作封裝在一起。并有處理滑鼠、鍵盤焦點消息的方法。這樣GUI子產品的實作全部完成。
最後這個引擎還剩下CIrrDeviceWin32.h/.cpp還未解決,在這個檔案裡,實作了一個派生類,基類在IrrlichtDevice.h中,該類封裝了視訊驅動裝置、檔案系統、場景管理器、GUI環境,使用該類執行個體來建立這些功能子產品的對象,該類還含有建立視窗、運作裝置、關閉裝置、全屏切換等方法。
今天解決28個代碼檔案,還剩0個。至此Irrlight1.0版的源碼剖析活動全部完成,接下來是用這個版本的引擎和最新版本的引擎進行對照,看看新增了哪些功能,修改了哪些東西等等。然後在利用該引擎做幾個例題,熟悉應用。OVER!!!