基于Elastos操作系統(tǒng)的圖形引擎的設計與實現(xiàn)doc - GoogleCode_第1頁
基于Elastos操作系統(tǒng)的圖形引擎的設計與實現(xiàn)doc - GoogleCode_第2頁
基于Elastos操作系統(tǒng)的圖形引擎的設計與實現(xiàn)doc - GoogleCode_第3頁
基于Elastos操作系統(tǒng)的圖形引擎的設計與實現(xiàn)doc - GoogleCode_第4頁
基于Elastos操作系統(tǒng)的圖形引擎的設計與實現(xiàn)doc - GoogleCode_第5頁
全文預覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、基于Elastos操作系統(tǒng)的圖形引擎的設計與實現(xiàn)張金煥, 陳榕,張曼夕(同濟大學 基礎(chǔ)軟件工程中心,上海 200092) 摘 要: Elastos圖形系統(tǒng)Vinci是Elastos操作系統(tǒng)的一個子系統(tǒng),負責在屏幕上繪制像素、文本和用戶界面(包括窗口、菜單、對話框)等。圖形引擎的體系結(jié)構(gòu)決定了此系統(tǒng)的簡易型、靈活性、效率和穩(wěn)定性,所以它的設計又顯得至關(guān)重要.本文分別介紹了基于Elastos操作系統(tǒng)的圖形系統(tǒng)Vinci、此圖形引擎的設計需求,在此基礎(chǔ)上根據(jù)圖形系統(tǒng)的引擎功能設計需求結(jié)合Elastos圖形系統(tǒng)Vinci自有的特點,實現(xiàn)了Vinci引擎的設計,使得基于Vinci系統(tǒng)的Elastos操作

2、系統(tǒng)可以完成各種各樣的操作。關(guān)鍵詞: 圖形系統(tǒng)Vinci、圖形引擎、設計需求、具體實現(xiàn)中圖法分類號:TP316文獻標識碼: A The Design and Realization of Graphics Engine Design Based On the Elastos operating systemZhang Jinhuan, Chen Rong, Zhang Manxi(System Software Engineering Centre of Tongji University, Shanghai 200092, China)Abstract: Elastos graphics s

3、ystem Elastos Vinci is a subsystem of the operating system, responsible for drawing pixels on the screen, text and the user interface (including windows, menus, and dialog). The architecture of graphics engine determines that the system is easy-to-use, flexibility, efficiency and stability, so it is

4、 essential. This paper introduces the graphics-based operating system Elastos Vinci system, the design of the graphics engine demand ,and According to graphics system and the engine function design demand and Elastos graphics system Vincis own characteristics ,we realize the Vinci engine design whic

5、h makes he operating system Elastos based on Vinci system can completed a wide range of operations. Keywords: Vinci、 Graphics Engine、 Engine Demand 、Realization-基金項目:國家“863”基金項目(2001AA113400) 1 引言通常,我們把引擎看作是一種動力裝置,圖形引擎也一樣,GDI(Graphic Device Interface)之所以可以完成各種各樣的操作,就是依賴于底層圖形引擎的支持。 Elastos圖形引擎5由五部分組成

6、:窗口管理、事件管理、繪圖、字體和圖像處理,它提供了完成窗口、事件、繪圖、字體管理和圖像處理所需的各項操作,GDI就是將這些底層操作封裝起來,使用戶可以在不了解底層實現(xiàn)的基礎(chǔ)上方便的調(diào)用底層的函數(shù),完成各項操作。本文介紹了Elastos操作系統(tǒng)中圖形系統(tǒng)中圖形引擎的設計及具體實現(xiàn)過程。2 Elastos圖形系統(tǒng)Vinci2.1 Vinci系統(tǒng)簡介Elastos圖形系統(tǒng)Vinci是Elastos操作系統(tǒng)1的一個子系統(tǒng),負責在屏幕上繪制像素、文本和用戶界面(包括窗口、菜單、對話框)等。Elastos圖形系統(tǒng)還負責和硬件設備的通信,所以在Elastos操作系統(tǒng)上編寫圖形應用程序時,應用程序不需要直接

7、訪問硬件設備。2.2 Vinci系統(tǒng)整體架構(gòu)從整體結(jié)構(gòu)上看,Elastos圖形系統(tǒng)Vinci是分層設計的,見圖2.1 Vinci整體結(jié)構(gòu)圖。底層是驅(qū)動層;中間層為Vinci的圖形引擎層,其中包括了窗口系統(tǒng)必不可少的各個模塊,負責創(chuàng)建Window(實際對應上層Form),收發(fā)消息,以及一些基本繪圖操作;頂層是控件集3,是用戶可見的,與用戶進行交互的主要一層,多種控件為用戶建立了豐富的用戶界面提供了保障。應用程序應用程序應用程序控件集控件集控件集圖形引擎設備驅(qū)動圖2.1 Vinci整體結(jié)構(gòu)圖在Vinci系統(tǒng)UI模型中,Grafix.dll作為低層圖形引擎為繪圖組件eladgi.dll和控件組件el

8、actrl.dll提供了底層服務。elagdi.dll處于頂層控件于引擎進行繪圖及窗口處理的交互中間態(tài),也提供一些獨立的API,可以直接通過這些API2與引擎進行交互;elactrl.dll作為UI控件構(gòu)件為應用程序的UI Application提供了應用界面服務。而控件6中的所需要進行的繪圖操作需elagdi.dll引擎中的font、image的支持。3 Vinci圖形系統(tǒng)引擎設計3.1 Vinci圖形引擎功能需求3.1.1 窗口的創(chuàng)建和銷毀由CreatWindow創(chuàng)建窗口。CreateWindow可以創(chuàng)建用戶定義屬性的窗口,包括窗口大小,像素格式,窗口屬性等。函數(shù)返回一個窗口指針,用于以后

9、的窗口操作。由于窗口上的繪圖操作都是在對應的surface上進行的,所以與CreateWindow對應的CreateSurface方法,用于創(chuàng)建window對應的surface,與CreateWindow類似的是,創(chuàng)建surface是也可以指定一系列參數(shù),包括surface大小與surface像素格式等。3.1.2 在窗口中繪圖每一個窗口對應一塊內(nèi)存,即surface,在窗口內(nèi)繪圖就是將相應的像素內(nèi)容填入surface內(nèi)存中,當然,首先要將像素格式轉(zhuǎn)換為目的顯存支持的格式。這一系列轉(zhuǎn)換格式及寫入內(nèi)存的操作都是引擎處理的重點。3.1.3 消息隊列的處理Vinci不直接與硬件交互,通過驅(qū)動層與硬件

10、交互。圖形系統(tǒng)的消息除了來自驅(qū)動層傳入的觸筆和鍵盤消息,還來自窗口的變換等,例如,窗口的切換和拖動將觸發(fā)重繪消息;如果用戶使用了定時器,還存在定時消息的處理等等。3.1.4 窗口的繪制屏幕上出現(xiàn)多個窗口時,就存在Z序處理問題4。3.2 引擎設計綜合上述引擎功能的需求,初步將引擎結(jié)構(gòu)設計為由以下幾個接口分工合作完成:ILayer接口:負責window和surface的創(chuàng)建,surface的配置,layer透明度的設置等。IWindow接口:負責window的顯示,隱藏,移動,定時器的設置與銷毀,透明度的設置,向消息隊列增加新消息等。ISurface接口:負責簡單的圖形繪制以及窗口信息的獲得等。E

11、ventbuffer接口:負責管理消息,包括增加消息,獲取消息等處理消息的操作。Windowstack接口:負責窗口的管理,多個窗口創(chuàng)建后以隊列形式被管理。窗口的創(chuàng)建、銷毀、移動等都需要在windowstack中留下記錄。4 Vinci引擎的實現(xiàn)4.1 顯示層ILayer的實現(xiàn)顯示層主要負責創(chuàng)建window和surface,另外還需要設置方法以進行顯示層的切換和透出等特殊效果。ILayer接口中,主要使用到以下幾個重要的數(shù)據(jù)結(jié)構(gòu):LayerFormat: 該數(shù)據(jù)結(jié)構(gòu)記錄了某一層的基本信息。當用戶要求Enable某一層時,將以此結(jié)構(gòu)體類型的變量為參數(shù)傳入Layer的Enable()方法。Disp

12、layInformation: 該數(shù)據(jù)結(jié)構(gòu)記錄了層的顯示信息。在Enable Baseplane、Overlay1或Overlay2任一層時,需要對DisplayInformation的各項賦值,將用于windowstack中。類buffer: 主要用來記錄一些層的信息,用于surface的繪制。每一個window都對應了一塊surface(即內(nèi)存空間),如果window是Doublebuffer模式,則獨占一塊內(nèi)存空間,否則和其它window共用一塊內(nèi)存空間。上層對于window或Form的繪制操作都是在內(nèi)存中進行的,最后通過Flip操作將內(nèi)存中的數(shù)據(jù)copy到當前層的顯存上,才能顯示在屏幕

13、上。4.2 窗口隊列管理的實現(xiàn) Windowstack中使用了一個結(jié)構(gòu)體FusionVector記錄各項參數(shù),包括windowstack中的window element,window的數(shù)量以及windowstack的最大容量。每層layer具有一個windowstack隊列,各個窗口被創(chuàng)建后,將被加入相應layer的windowstack中,作為一個Fusion元素。各窗口在隊列中的次序按照優(yōu)先級排列,如果用戶沒有特別指定窗口優(yōu)先級,后創(chuàng)建的窗口默認優(yōu)先級較高,對應的視覺效果就是顯示在上層,覆蓋先創(chuàng)建的窗口。Windowstack中主要的接口方法是對于添加刪除窗口的處理以及各種窗口操作引起的焦

14、點切換和窗口刷新操作。4.3 窗口管理的實現(xiàn) 窗口對事件的管理是根據(jù)不同的窗口類型的進行不同的操作的。窗體有兩種類型,即WindowType_Common和WindowType_Main,對于WindowType_Main型的窗體,我們會在窗體初始化的時候,為該系列window創(chuàng)建一個eventbuffer。而對于WindowType_Common型的窗體,它與同environment的主窗體共用一個eventbuffer。一個應用可能有多個窗體,其中只有一個主窗體,只要這些窗體具有相同的enviroment,所有相關(guān)的事件統(tǒng)一進入主窗口創(chuàng)建的eventbuffer。4.4 窗口繪制的實現(xiàn) W

15、indow對應的內(nèi)存可繪制區(qū)域是由surface管理的,通過類 buffer主要用來記錄一些層的信息,用于surface的繪制。在layer初始化的時候,會創(chuàng)建windowstack,并且在windowstack中記錄了primarysurface,primarysurface是記錄顯存地址的一塊特殊的surface。當窗口內(nèi)容改變時,引擎修改窗口的surface相應內(nèi)存地址的內(nèi)容,經(jīng)過窗口的一系列處理,最終通過Blit操作使更新后的內(nèi)容顯示在屏幕上。 上層的一些繪圖操作實際上是將顏色信息寫入window對應的surface buffer,這只是在內(nèi)存中進行操作,沒有反映在屏幕上。經(jīng)過一系列判

16、斷和處理之后,此時內(nèi)存中已經(jīng)是應該顯示的結(jié)果,我們只需要將內(nèi)存中記錄的顏色信息拷貝到顯存中即可。primarysurface的buffer中記錄的就是當前l(fā)ayer在顯存中的首址, Enable Overlay1時需要修改primarysurface的buffer中的值,將buffer中記錄的首址改為驅(qū)動為Overlay1分配的顯存首址。確定了顯存的地址后,開始拷貝操作,這里涉及到格式轉(zhuǎn)換的問題。不同格式之間的拷貝要注意格式轉(zhuǎn)換。5 總結(jié) 基于此圖形引擎的Vinci系統(tǒng)實現(xiàn)了具有高效的事件處理機制和面向構(gòu)件的體系結(jié)構(gòu),這樣大大提高了圖形程序與用戶交互效率,同時它為用戶靈活的實現(xiàn)多種圖形界面提供

17、了保障。參考文獻:1 陳榕, 劉藝平. 技術(shù)報告: 基于構(gòu)件、中間件的因特網(wǎng)操作系統(tǒng)及跨操作系統(tǒng)的構(gòu)件、中間件運行平臺(863課題技術(shù)鑒定文件), 2003.2 Elastos, Inc. Elastos 2.1 Information Repository. Available online at /download.php 2008,33 上??铺┦兰o科技有限公司.CAR構(gòu)件大全EB/OL. / 2008-01-014 Feng Yuan. Windows圖形編程. 機械工業(yè)出版社,2002,65 Koretide WebsiteEB/OL. / 2008,36 Chen Rong. The Application of Middleware Technology in Embedded OSR. Hangzhou: Workshop on Embedded System, In Conjunction with t

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論