專利名稱:高級(jí)圖形流的制作方法
高級(jí)圖形流本發(fā)明要求在35 U.S.C. § 119下2005年9月7日提交的美國(guó)臨時(shí)專利申請(qǐng) No. 60/714,880的優(yōu)先權(quán),所公開(kāi)的內(nèi)容被結(jié)合于此。發(fā)明背景當(dāng)應(yīng)用程序或進(jìn)程提供要顯示的圖像或圖形時(shí),應(yīng)用程序或進(jìn)程可以向操作 系統(tǒng)組件或其他進(jìn)程發(fā)送圖形命令,該操作系統(tǒng)組件或其它進(jìn)程使用圖形命令來(lái)呈 現(xiàn)圖像或圖形。也稱為高級(jí)圖形命令或圖元(primitives)的圖形命令可以指定或 定義色彩、線條、形狀或其他圖形構(gòu)造。接收?qǐng)D形命令的操作系統(tǒng)組件或進(jìn)程可以 將圖形命令翻譯或轉(zhuǎn)換成低級(jí)圖形信息,諸如用于在顯示設(shè)備上呈現(xiàn)圖形的個(gè)別像 素值或位圖。圖形命令的一個(gè)示例是表示"圖示設(shè)備接口"、"圖形設(shè)備接口"或"圖形 顯示接口"的GDI。在GDI實(shí)現(xiàn)中,接口 (即GDI接口)可以是接收?qǐng)D形命令的 組件或進(jìn)程的部分或支持該組件或進(jìn)程。具體地,GDI接口從應(yīng)用程序接收參數(shù), 其中參數(shù)用于要示出的圖像或圖形。GDI接口通過(guò)將命令發(fā)送給進(jìn)程或組件來(lái)生成 圖像,該進(jìn)程或組件接著將圖像呈現(xiàn)到顯示器或諸如監(jiān)視器、打印機(jī)等的輸出設(shè)備 上。在某些實(shí)現(xiàn)中,發(fā)送這種圖形命令的應(yīng)用程序或進(jìn)程駐留在獨(dú)立于主存接收 圖形命令的操作系統(tǒng)組件或進(jìn)程的設(shè)備或計(jì)算機(jī)的設(shè)備或計(jì)算機(jī)上。這些實(shí)現(xiàn)可以 被稱為跨機(jī)器系統(tǒng),其示例包括終端服務(wù)系統(tǒng),其中應(yīng)用程序駐留在中央服務(wù)器計(jì) 算機(jī)上,而遠(yuǎn)程客戶機(jī)計(jì)算機(jī)接收在本地呈現(xiàn)(即在客戶機(jī)計(jì)算機(jī)處)的圖形命令。 在其他實(shí)現(xiàn)中,接收?qǐng)D形命令的應(yīng)用程序和操作系統(tǒng)組件(進(jìn)程)駐留在相同的設(shè) 備或計(jì)算機(jī)上,并且可以被稱為跨進(jìn)程系統(tǒng)。其他實(shí)現(xiàn)可以使用相同的進(jìn)程來(lái)發(fā)送 圖形命令;然而,這種實(shí)現(xiàn)可以使用在其中傳遞圖形命令的不同的線程。這些實(shí)現(xiàn) 可以被稱為跨線程系統(tǒng)。不管特定的實(shí)現(xiàn)或系統(tǒng)是跨機(jī)器的、跨進(jìn)程的或是跨線程的,應(yīng)用程序發(fā)送 的圖形命令通常是短暫的。換言之, 一旦應(yīng)用程序發(fā)送了圖形命令以供處理并被接 收到,就馬上被消耗或處理。在使用GDI時(shí)尤其如此,其中接口接收參數(shù)、創(chuàng)建圖形命令,并且圖形命令被馬上消耗。因此,如果丟失了特定的圖形或圖像,那么 應(yīng)用程序或進(jìn)程必須將圖形命令(參數(shù))重新發(fā)送給接收組件或進(jìn)程。此外,由于 圖形命令可以在它們被接收到時(shí)消耗,因此如果用戶期望復(fù)制為圖形命令所特有的 圖形或圖像,則必須重新發(fā)送特定的圖形命令。在某些情況下,最優(yōu)化或壓縮圖形命令。這種最優(yōu)化或壓縮通常在諸如終端 服務(wù)系統(tǒng)等跨機(jī)器實(shí)現(xiàn)中執(zhí)行,其中中央服務(wù)器計(jì)算機(jī)和遠(yuǎn)程客戶機(jī)計(jì)算機(jī)之間的 通信是通過(guò)諸如網(wǎng)絡(luò)等通信介質(zhì)的。通信介質(zhì)或網(wǎng)絡(luò)上的帶寬通常是有限的。由此, 可能需要最優(yōu)化或壓縮。最優(yōu)化或壓縮會(huì)導(dǎo)致受損的圖像質(zhì)量。例如,在某些情況 下,期望在接收計(jì)算機(jī)或設(shè)備處放大圖形或圖像;然而,由于圖形命令已經(jīng)過(guò)壓縮, 因此放大會(huì)導(dǎo)致圖像降級(jí)。此外,在某些情況下,不同的應(yīng)用程序可以支持或提供不同類型或不同的圖形命令。例如, 一應(yīng)用程序可以支持諸如GDI的傳統(tǒng)圖形命令格式,而另一應(yīng)用程序可以支持新的或不同的圖形命令格式。然而,可能期望支持不同的圖形命令格 式,并允許從使用不同圖形命令格式的應(yīng)用程序來(lái)處理圖形。發(fā)明內(nèi)容在圖形流的數(shù)據(jù)分組中提供了圖形命令。數(shù)據(jù)分組表示諸如視覺(jué)樹(shù)等可編輯 模型的對(duì)象和資源。通過(guò)專用的信道來(lái)發(fā)送圖形流或數(shù)據(jù)分組,其中可以在信道中 引入修改圖形流和數(shù)據(jù)分組的應(yīng)用程序。由創(chuàng)建類似于視覺(jué)樹(shù)的合成樹(shù)的合成引擎 接收數(shù)據(jù)分組。提供了本概述是為了以簡(jiǎn)化的形式引入將在以下具體實(shí)施方式
中進(jìn)一步描述 的一些概念。本概述并不旨在標(biāo)識(shí)所要求保護(hù)的主題的關(guān)鍵特征或必要特征,它也 不旨在用作協(xié)助確定所要求保護(hù)的主題的范圍。
參考附圖描述了詳細(xì)的描述。在附圖中,參考標(biāo)號(hào)的最左面的位標(biāo)識(shí)了該參 考標(biāo)號(hào)首次出現(xiàn)所在的附圖。在不同附圖中相同參考標(biāo)號(hào)的使用指示相似或相同的 物品。圖1是實(shí)現(xiàn)用以提供視覺(jué)樹(shù)形式的圖形的信道的系統(tǒng)的框圖。圖2是表示圖形或圖像的視覺(jué)樹(shù)和類似的合成樹(shù)的圖示。圖3是實(shí)現(xiàn)視覺(jué)樹(shù)和合成樹(shù)以提供圖形和圖像的計(jì)算設(shè)備的框圖。圖4是實(shí)現(xiàn)修改圖形或圖像的合成樹(shù)的應(yīng)用程序和應(yīng)用程序編程接口的系統(tǒng) 的框圖。圖5是經(jīng)修改的合成樹(shù)的圖示。 圖6是示出一進(jìn)程的流程圖。圖7是示出一進(jìn)程的流程圖。
具體實(shí)施方式
圖1示出了提供和呈現(xiàn)圖形或圖像的系統(tǒng)100。具體地,系統(tǒng)100實(shí)現(xiàn)使用視 覺(jué)樹(shù)和合成樹(shù)來(lái)提供和呈現(xiàn)圖形或圖像。系統(tǒng)100可以被實(shí)現(xiàn)為跨機(jī)器系統(tǒng),其中 系統(tǒng)100的元件或進(jìn)程駐留在一個(gè)以上的機(jī)器或設(shè)備中,并且機(jī)器或設(shè)備之間的通 信通過(guò)諸如包括內(nèi)聯(lián)網(wǎng)和互聯(lián)網(wǎng)的網(wǎng)絡(luò)等通信介質(zhì)??鐧C(jī)器系統(tǒng)的示例包括終端服 務(wù)系統(tǒng),其中中央服務(wù)器計(jì)算機(jī)支持一個(gè)或多個(gè)客戶機(jī)計(jì)算機(jī)。具體地,應(yīng)用程序 駐留在中央服務(wù)器計(jì)算機(jī)處,并且由客戶機(jī)計(jì)算機(jī)訪問(wèn)或使用。系統(tǒng)100也可以被 實(shí)現(xiàn)跨進(jìn)程系統(tǒng),其中元件或進(jìn)程駐留在相同的機(jī)器或設(shè)備上。系統(tǒng)100的另一示 例性實(shí)現(xiàn)是跨線程系統(tǒng),其中圖形通過(guò)相同進(jìn)程中的不同線程發(fā)送。為了簡(jiǎn)單起見(jiàn),系統(tǒng)100示出了單個(gè)應(yīng)用程序102;然而,系統(tǒng)100可以包括 多個(gè)應(yīng)用程序。系統(tǒng)IOO還包括框架104。框架104的一個(gè)示例包括微軟公司提供 的Windows Presentation Foundation??蚣?04訪問(wèn)諸如應(yīng)用程序102的一個(gè)和多 個(gè)應(yīng)用程序。具體地,應(yīng)用程序102將圖形命令提供給框架104??蚣?04可以實(shí) 現(xiàn)或包括與應(yīng)用程序102通信的特定應(yīng)用程序編程接口 (API)。系統(tǒng)100包括從框架104接收?qǐng)D形命令并創(chuàng)建視覺(jué)樹(shù)108的核心106。視覺(jué)樹(shù) 108是框架104提供的圖形或圖像的表示,其中圖形或圖像代表來(lái)自應(yīng)用程序102 的圖形命令。視覺(jué)樹(shù)106由視覺(jué)對(duì)象和資源組成,如以下進(jìn)一步詳細(xì)描述的。視覺(jué)對(duì)象和 資源可以被轉(zhuǎn)換成組成數(shù)據(jù)或圖形流的特定數(shù)據(jù)分組。圖形流在專用信道110上被 傳送給合成引擎112。信道110是專用信道,即當(dāng)系統(tǒng)100中包括其他應(yīng)用程序時(shí), 每個(gè)應(yīng)用程序具有它自己的專用信道。在跨線程系統(tǒng)中,其中圖形流在不同的線程 上傳送,每個(gè)專用信道代表一特定的線程。如以下進(jìn)一步描述的,信道110也可以 被分成不同的功能部分,包括上半信道和下半信道??梢杂锰囟ǖ母袷教峁﹫D形流的數(shù)據(jù)分組。 一示例性數(shù)據(jù)分組格式是32位數(shù) 據(jù)分組大小值和32位無(wú)符號(hào)分組標(biāo)識(shí)值,之后是一個(gè)和多個(gè)命令的分組數(shù)據(jù)。此外,當(dāng)實(shí)現(xiàn)多個(gè)信道時(shí),可以使每個(gè)信道與特定的連接相關(guān)聯(lián)。數(shù)據(jù)分組可以提供 指定信道連接的消息。這種消息可以用以下格式實(shí)現(xiàn)包括示例性字段"連接ID" 之后是"信道ID",之后是"命令I(lǐng)D",之后是"命令數(shù)據(jù)"??梢蕴峁┓祷匦诺?14,以使合成引擎112能將消息發(fā)送回核心106、框架104 和應(yīng)用程序102??梢韵蛎總€(gè)專用信道(例如信道IIO)提供諸如返回信道114等 返回信道。通過(guò)返回信道114發(fā)回的消息可以包括硬件狀態(tài)和/或?qū)铣梢?12 支持的硬件或硬件配置的改變。由合成引擎112返回的消息的其他示例包括存儲(chǔ)器 外信息、幀頻消耗信息、硬件改變等。可以分批地安排數(shù)據(jù)分組,其中通過(guò)信道108將成批的數(shù)據(jù)分組發(fā)送給合成 引擎112。例如,視覺(jué)樹(shù)108的視覺(jué)對(duì)象和資源作為一批發(fā)送給合成引擎112。合 成引擎112在創(chuàng)建類似的合成樹(shù)116之前,等待接收整批的視覺(jué)對(duì)象和資源。除了 在圖形流中發(fā)送的對(duì)象和資源之外,圖形流中包括命令或指令。這些命令或指令被 特別地用于創(chuàng)建合成樹(shù)116。當(dāng)系統(tǒng)100包括多個(gè)應(yīng)用程序時(shí),由于每個(gè)應(yīng)用程序 具有其自身專用的信道,其中傳送圖形流、特別是成批的數(shù)據(jù)分組,因此合成引擎 112不必等待在信道上傳送的其他批或圖形流。換言之,專用信道防止不同應(yīng)用程 序傳送圖形流(數(shù)據(jù)分組批次)的干擾。此外,專用信道允許圖形流的內(nèi)在同步, 使得以它們的相關(guān)時(shí)序接收數(shù)據(jù)分組。合成樹(shù)116包括與視覺(jué)樹(shù)108相同的信息(即類似的對(duì)象和資源);然而, 合成樹(shù)116被格式化以供進(jìn)程/功能118使用。進(jìn)程/功能118可以是使用合成樹(shù)116 呈現(xiàn)圖形或圖像的操作系統(tǒng)組件或應(yīng)用程序組件。進(jìn)程/功能118可以將合成樹(shù)116 翻譯或轉(zhuǎn)換成低級(jí)圖形信息,諸如用于在顯示設(shè)備(未示出)上呈現(xiàn)圖形的個(gè)別像 素值或位圖。如以下進(jìn)一步描述的,合成樹(shù)116的對(duì)象和資源以及有關(guān)重建合成樹(shù) 116的其他命令或指令可以被作為一文件存儲(chǔ)在本地存儲(chǔ)器中,以供今后使用或在 諸如當(dāng)由合成表示的圖形或圖像丟失時(shí)"刷新"的情況下使用。可以在經(jīng)由信道110或其他信道發(fā)送圖形流時(shí)對(duì)它們執(zhí)行最優(yōu)化或壓縮。最 優(yōu)化或壓縮可以實(shí)現(xiàn)各種最優(yōu)化和/或壓縮方法之一。此外,可以使用各種傳輸協(xié) 議(例如RPC、 RDP、 TCP/IP等)和/或方法之一來(lái)傳輸圖形流消息或圖形流。圖2示出了示例性視覺(jué)樹(shù)108和示例性合成樹(shù)116。視覺(jué)樹(shù)108由分層圖形或 視覺(jué)對(duì)象V1200(l)到VN200(N)組成。視覺(jué)樹(shù)108表示圖形或圖像。每個(gè)視覺(jué)對(duì)象 200還可以通過(guò)命令、指令或資源(統(tǒng)稱為"資源")描述。具體地,資源可用于 描述如何畫(huà)出視覺(jué)對(duì)象。資源可以具有更高順序或更低順序的資源。例如,圖形對(duì)象V3 200(3)由"畫(huà)線"資源202定義。"畫(huà)線"資源202進(jìn)一步地由"筆"資源 204描述。"筆"資源204進(jìn)一步地由"刷子"資源206描述。如上所述,視覺(jué)對(duì)象V200與資源(例如資源202、 204、 206) —起被轉(zhuǎn)換成 數(shù)據(jù)分組并且在圖形流中與命令或指令一起發(fā)送。命令或指令被用于使用類似的合 成對(duì)象C1208(1)到CN208(N)和定義每個(gè)合成對(duì)象C208 (例如"畫(huà)線"資源210、 "筆"資源212和"刷子"資源214)的資源來(lái)構(gòu)建合成樹(shù)116。如上所述,接收 視覺(jué)對(duì)象、資源、命令和指令的圖形流的合成引擎可以在構(gòu)建合成之前等待要接收 的所有數(shù)據(jù)分組。因此,可以將視覺(jué)對(duì)象、資源、命令和指令作為一個(gè)批次發(fā)送。圖3示出了實(shí)現(xiàn)視覺(jué)樹(shù)和合成樹(shù)以便提供和呈現(xiàn)圖形或圖像的示例性計(jì)算設(shè) 備300。計(jì)算設(shè)備300是跨進(jìn)程系統(tǒng)的一種實(shí)現(xiàn);然而,會(huì)變得顯然的是計(jì)算設(shè)備 300中的元件也可以被實(shí)現(xiàn)為跨機(jī)器和跨線程系統(tǒng)的一部分、或在其中具有類似的 元素。計(jì)算設(shè)備300可以是常規(guī)的桌面?zhèn)€人計(jì)算機(jī)(PC),包括本地操作系統(tǒng)、 處理單元或處理器302、以及存儲(chǔ)系統(tǒng)或存儲(chǔ)器304。作為一個(gè)示例,計(jì)算設(shè)備300 是使用來(lái)自微軟公司的Windows⑧品牌操作系統(tǒng)實(shí)現(xiàn)的通用PC。在該示例中,應(yīng)用程序306和傳統(tǒng)應(yīng)用程序308可以是駐留在存儲(chǔ)器304中 或獨(dú)立于存儲(chǔ)器304駐留的多個(gè)應(yīng)用程序的一部分。程序306和308由處理器302 特別地訪問(wèn)和控制。傳統(tǒng)應(yīng)用程序308可以包括實(shí)現(xiàn)諸如GDI等圖形命令格式的 應(yīng)用程序。計(jì)算設(shè)備300包括支持應(yīng)用程序306的框架和核心310??蚣芎秃诵?10包括 上述的框架104和核心106。在該示例中,傳統(tǒng)框架和核心312支持傳統(tǒng)應(yīng)用程序 308。在其他實(shí)現(xiàn)中,可以使用單個(gè)框架和核心來(lái)支持多個(gè)應(yīng)用程序。基于從各自 的應(yīng)用程序306和傳統(tǒng)應(yīng)用程序308接收到的命令,框架和核心310與傳統(tǒng)框架和 核心312可以被特別地配置以創(chuàng)建和提供諸如視覺(jué)樹(shù)108的視覺(jué)樹(shù)。框架和核心310被連接到重定向器314,它可以是到支持應(yīng)用程序306的專用 信道"A"的接口。重定向器314可以被認(rèn)為是信道"A"的"上半部分"。傳統(tǒng) 框架和核心312同樣地被連接到傳統(tǒng)重定向器316,傳統(tǒng)重定向器316是到支持傳 統(tǒng)應(yīng)用程序308的獨(dú)立信道"B"的接口。同樣地,重定向器316可以被視為信道 "B"的"上半部分"。重定向器314和316可以被連接到或使用傳輸層或傳輸318。 重定向器層320是信道"A"的下半部分,而重定向器層322是信道"B"的下半 部分。合成引擎"A" 324通過(guò)信道"A"接收?qǐng)D形流,并創(chuàng)建合成樹(shù)以供進(jìn)程/功能"A" 326使用。同樣地,合成引擎"B" 328通過(guò)信道"B"接收?qǐng)D形流,并創(chuàng)建 合成樹(shù)以供進(jìn)程/功能"B" 330使用。進(jìn)程/功能"A" 326和進(jìn)程/功能"B" 330 的每一個(gè)使用所創(chuàng)建的合成樹(shù)來(lái)向本地顯示器或輸出設(shè)備呈現(xiàn)或生成圖形或圖形。圖4示出了實(shí)現(xiàn)用于修改圖形和圖像的合成樹(shù)的應(yīng)用程序和應(yīng)用程序編程接 口。在該示例中,系統(tǒng)400是上述系統(tǒng)100的變體。在某些情況下,期望修改諸如 應(yīng)用程序306和傳統(tǒng)應(yīng)用程序308等應(yīng)用程序提供的圖形或圖像??紤]到可能在發(fā) 送圖形流消息或圖形流時(shí)發(fā)生最優(yōu)化或壓縮,尤其是在跨機(jī)器系統(tǒng)中,期望在發(fā)生 修改時(shí)使得圖形或圖像的降級(jí)最小化。在該示例中,應(yīng)用程序402位于信道404的上半部分和信道406的下半部分 之間。應(yīng)用程序402可以執(zhí)行圖形或圖像修改,或者在某些情況下應(yīng)用程序402 可以被配置成能夠訪問(wèn)或査看通過(guò)信道(即信道半部分404和406之間)傳遞的圖 形流的可訪問(wèn)應(yīng)用程序。 一般地,應(yīng)用程序402被認(rèn)為是可置于信道內(nèi)的中介。圖形或圖像修改的一個(gè)示例是擴(kuò)大或放大圖形或圖像。應(yīng)用程序402特別地 修改傳遞通過(guò)信道的圖形流或特定數(shù)據(jù)分組,使得經(jīng)修改的合成樹(shù)408被創(chuàng)建。如 以下進(jìn)一步描述地,可以對(duì)合成樹(shù)的一個(gè)特定節(jié)點(diǎn)或多個(gè)節(jié)點(diǎn)作出修改,而不管該 節(jié)點(diǎn)或多個(gè)節(jié)點(diǎn)在合成中處于何層次。如果修改了相對(duì)高級(jí)的節(jié)點(diǎn),就會(huì)影響到(即 修改)合成樹(shù)上其下的所有節(jié)點(diǎn)。也可以提供圖形流應(yīng)用程序編程接口 (API) 410和回放API 412,并且向核 心104和合成引擎110顯示應(yīng)用程序402。具體地,圖形流API410用于訪問(wèn)來(lái)自 核心104的圖形流,而回放API412由合成引擎110用于打開(kāi)來(lái)自應(yīng)用程序402的 圖形流。圖形流API410可以包括"圖形流打開(kāi)"API,用于打開(kāi)圖形流以供讀取。此 外,指針可以由"圖形流打開(kāi)"API實(shí)現(xiàn)并被提供給應(yīng)用程序402,以用于合成引 擎110支持的特定功能或進(jìn)程。圖形流API410還可以包括"圖形流關(guān)閉"API, 用于關(guān)閉圖形流不被讀取。"圖形流關(guān)閉"API使得關(guān)閉消息被發(fā)送給合成引擎 110或合成引擎110所支持的特定功能或進(jìn)程。圖形流API 410也可以包括"圖形流集轉(zhuǎn)換提示"API,用于向核心104、或 在跨機(jī)器系統(tǒng)(例如終端服務(wù)系統(tǒng))的情況下向圖形服務(wù)器(即核心104駐留在圖 形服務(wù)器上)提供應(yīng)用程序402想要對(duì)圖形流執(zhí)行動(dòng)作或修改(例如放大)的提示 或消息。例如,在放大的情況下,"圖形流轉(zhuǎn)換提示"API向應(yīng)用程序102提供回 消息以導(dǎo)致擴(kuò)大或放大。此外,可以提供指向特定的經(jīng)修改合成樹(shù)404的指針??梢酝ㄟ^(guò)諸如返回信道114等返回信道發(fā)送消息。回放API412提供合成引擎112繪制或創(chuàng)建經(jīng)修改的合成樹(shù)408的能力。一般 地,回放API412向應(yīng)用程序402展示信道406的下半部分和合成引擎112。圖5是經(jīng)改進(jìn)或修改的合成樹(shù)的圖示。具體地,示出了由應(yīng)用程序402修改 的經(jīng)修改合成樹(shù)408。在該示例中,修改是要擴(kuò)大或放大現(xiàn)有的合成樹(shù)(例如合成 樹(shù)116)。當(dāng)有關(guān)圖形或圖像發(fā)生修改時(shí),對(duì)合成樹(shù),具體地是對(duì)合成樹(shù)的一個(gè)節(jié)點(diǎn)或 多個(gè)節(jié)點(diǎn)執(zhí)行修改。取決于哪個(gè)或哪幾個(gè)節(jié)點(diǎn)被修改,可能影響其他的節(jié)點(diǎn)。換言 之,如果修改一特定節(jié)點(diǎn),就會(huì)影響或修改該特定節(jié)點(diǎn)的分支的所有低級(jí)節(jié)點(diǎn)。在 該示例中,由"放大"節(jié)點(diǎn)500修改節(jié)點(diǎn)C1 208(1)。因此,現(xiàn)有的合成樹(shù)116被 修改(即被放大)并且作為經(jīng)修改合成樹(shù)408提供。圖6示出了向進(jìn)程或功能提供代表視覺(jué)樹(shù)的圖形流的進(jìn)程600。進(jìn)程600還可 以被實(shí)現(xiàn)為支持對(duì)圖形流的修改的API。進(jìn)程600被示作邏輯流程圖中框的集合, 表示可以用硬件、軟件、固件或其組合實(shí)現(xiàn)的一系列操作。在軟件的環(huán)境中,框表 示在由一個(gè)和多個(gè)處理器執(zhí)行時(shí)執(zhí)行所述的操作的計(jì)算機(jī)指令。雖然作為流程圖描 述,但是可構(gòu)想某些框可以并發(fā)地或以不同的順序發(fā)生。進(jìn)程600可以由例如圖1 的系統(tǒng)100和/或圖3中所討論的計(jì)算設(shè)備300實(shí)現(xiàn),雖然進(jìn)程600可以由其他體 系結(jié)構(gòu)實(shí)現(xiàn)。在框602,將圖形命令發(fā)送給位于信道中的應(yīng)用程序,并被其接收到。應(yīng)用程 序可以是可訪問(wèn)應(yīng)用程序或執(zhí)行修改的應(yīng)用程序。這種應(yīng)用程序的一個(gè)示例是應(yīng)用 程序402。圖形流可以包括代表組成視覺(jué)樹(shù)的視覺(jué)對(duì)象和資源的數(shù)據(jù)分組。在框604,應(yīng)用程序打開(kāi)或訪問(wèn)圖形流。打開(kāi)可以僅與讀取圖形流和圖形流的 數(shù)據(jù)分組有關(guān),或者可以對(duì)圖形流執(zhí)行修改。此外,可以向接收?qǐng)D形流的合成引擎 所支持的功能或進(jìn)程提供指針。在框606,執(zhí)行對(duì)圖形流和/或數(shù)據(jù)分組的實(shí)際修改。修改的示例包括放大。 在某些情況下,可以向提供圖形流的核心提供消息,其中消息指示要發(fā)生諸如放大 等修改。在框608,將經(jīng)修改的流傳遞給合成引擎,它可以基于原始的視覺(jué)樹(shù)和來(lái)自修 改的改變或修改來(lái)創(chuàng)建合成樹(shù)。在框610,可以關(guān)閉圖形流。換言之,阻止應(yīng)用程序讀取圖形流。可以將指示 正在發(fā)生或已發(fā)生關(guān)閉的消息發(fā)送給合成引擎。圖7示出了允許框架和合成引擎之間的通信的進(jìn)程700。進(jìn)程700還可以被實(shí) 現(xiàn)為提供這種通信的協(xié)議。進(jìn)程700被示作邏輯流程圖中框的集合,表示可以用硬 件、軟件、固件或其組合實(shí)現(xiàn)的一系列操作。在軟件的環(huán)境中,框表示在由一個(gè)和 多個(gè)處理器執(zhí)行時(shí)執(zhí)行所述的操作的計(jì)算機(jī)指令。雖然作為流程圖描述,但是可構(gòu) 想某些框可以并發(fā)地或以不同的順序發(fā)生。進(jìn)程700可以由例如圖1的系統(tǒng)100 和/或圖3中所討論的計(jì)算設(shè)備300實(shí)現(xiàn),雖然進(jìn)程700可以由其他體系結(jié)構(gòu)實(shí)現(xiàn)。在框702,創(chuàng)建允許框架或核心與合成引擎之間的通信的專用信道。也可以創(chuàng) 建專用返回信道,以允許合成引擎將消息發(fā)送回框架或核心。在框704,在專用信道上發(fā)送或提供數(shù)據(jù)分組。數(shù)據(jù)分組可以是圖形流的部分 并且作為一個(gè)批次發(fā)送。數(shù)據(jù)分組的批次包括創(chuàng)建可編輯模型所需的所有對(duì)象和資 源。模型代表圖形或圖像,例如可以是諸如上述的視覺(jué)樹(shù)108的分層樹(shù)。在框706,可以在信道中引入應(yīng)用程序以修改圖形流或數(shù)據(jù)分組。應(yīng)用程序的 示例包括圖形流讀取器或放大器??梢詫⒅甘疽獔?zhí)行修改的消息返回給框架或核 心。在框708,使用未經(jīng)修改或經(jīng)修改的數(shù)據(jù)分組構(gòu)建可編輯模型。如所述的,可 編輯模型可以是與在核心處創(chuàng)建的視覺(jué)樹(shù)類似的分層樹(shù)。具體地,可編輯模型被認(rèn) 為是或稱為合成樹(shù),諸如合成樹(shù)116和408。結(jié)論上述系統(tǒng)支持將諸如視覺(jué)樹(shù)的可編輯模型傳送給創(chuàng)建用于呈現(xiàn)圖形或圖像的 合成樹(shù)的合成引擎。雖然以特定于結(jié)構(gòu)化特征和/或方法動(dòng)作的語(yǔ)言描述了本發(fā) 明,但是應(yīng)該理解在所附權(quán)利要求書(shū)中限定的本發(fā)明不是必須限于上述的特定 特征或動(dòng)作。相反,上述特定的特征和動(dòng)作是作為實(shí)現(xiàn)所要求保護(hù)的本發(fā)明的 示例性形式來(lái)公開(kāi)的。
權(quán)利要求
1.一種修改代表視覺(jué)樹(shù)的圖形命令的方法,包括接收?qǐng)D形流中的所述圖形命令;打開(kāi)所述圖形流;將所述圖形流修改成經(jīng)修改的圖形流;以及將經(jīng)修改的圖形流傳遞給創(chuàng)建類似于所述視覺(jué)樹(shù)的經(jīng)修改合成樹(shù)的合成引擎。
2. 如權(quán)利要求l所述的方法,其特征在于,所述接收?qǐng)D形流中的圖形命令包 括代表組成所述視覺(jué)樹(shù)的視覺(jué)對(duì)象和資源的數(shù)據(jù)分組。
3. 如權(quán)利要求l所述的方法,其特征在于,所述打開(kāi)是由可訪問(wèn)應(yīng)用程序執(zhí) 行的。
4. 如權(quán)利要求l所述的方法,其特征在于,所述打開(kāi)包括向所述合成引擎支 持的應(yīng)用程序提供指針。
5. 如權(quán)利要求l所述的方法,其特征在于,所述修改包括對(duì)所述圖形流的放 大操作。
6. 如權(quán)利要求l所述的方法,還包括關(guān)閉所述圖形流不被讀取。
7. 如權(quán)利要求6所述的方法,其特征在于,所述關(guān)閉還包括將正在關(guān)閉的消 息發(fā)送給合成引擎。
8. 如權(quán)利要求1所述的方法,還包括向所述核心提供有關(guān)修改所述圖形流的 消息。
9. 一種在框架和合成引擎之間通信的方法,包括 在所述框架和合成引擎之間創(chuàng)建專用信道;在所述信道上提供數(shù)據(jù)分組,其中所述數(shù)據(jù)分組代表圖形的可編輯模型的元素;以及在所述合成引擎處構(gòu)建所述圖形的可編輯模型。
10. 如權(quán)利要求9所述的方法,其特征在于,所述創(chuàng)建還包括為所述合成引 擎創(chuàng)建返回信道,用于將狀態(tài)信息發(fā)送給所述框架。
11. 如權(quán)利要求9所述的方法,其特征在于,所述提供還包括將所述數(shù)據(jù)分 組分批,其中僅在接收到完整批次的數(shù)據(jù)分組時(shí)所述合成引擎才構(gòu)建所述可編輯模 型。
12. 如權(quán)利要求9所述的方法,其特征在于,所述提供包括在所述信道上發(fā) 送包括所述數(shù)據(jù)分組的圖形流。
13. 如權(quán)利要求9所述的方法,還包括在所述構(gòu)建之前訪問(wèn)和修改所述數(shù)據(jù) 分組。
14. 如權(quán)利要求9所述的方法,其特征在于,所述可編輯模型是包括在數(shù)據(jù) 分組中表示的視覺(jué)元素和資源的樹(shù),并且命令在構(gòu)建所述可編輯模型時(shí)在所述數(shù)據(jù) 分組中提供。
15. —種系統(tǒng),包括框架,從一個(gè)或多個(gè)應(yīng)用程序訪問(wèn)表示圖形或圖像的圖形命令; 核心,從所述框架接收所述圖形命令并創(chuàng)建視覺(jué)樹(shù);信道,從所述核心傳送表示所述視覺(jué)樹(shù)的對(duì)象和資源的數(shù)據(jù)分組;以及 連接到所述信道的合成引擎,用于創(chuàng)建類似于所述視覺(jué)樹(shù)的合成樹(shù)。
16. 如權(quán)利要求15所述的系統(tǒng),其特征在于,所述核心通過(guò)創(chuàng)建分層視覺(jué)對(duì) 象和資源來(lái)創(chuàng)建所述視覺(jué)樹(shù),其中所述資源描述所述視覺(jué)對(duì)象。
17. 如權(quán)利要求15所述的系統(tǒng),其特征在于,所述信道是所述核心和合成引 擎的專用信道。
18. 如權(quán)利要求15所述的系統(tǒng),其特征在于,所述信道是由上半部分和下半 部分組成的,其中應(yīng)用程序可以在所述上半部分和所述下半部分之間實(shí)現(xiàn)。
19. 如權(quán)利要求15所述的系統(tǒng),還包括返回信道,其中所述合成引擎通過(guò)所 述返回信道將消息發(fā)送給所述核心。
20. 如權(quán)利要求15所述的系統(tǒng),其特征在于,所述系統(tǒng)是以下之一跨機(jī)器 系統(tǒng)、跨進(jìn)程系統(tǒng)或跨線程系統(tǒng)。
全文摘要
向消耗進(jìn)程提供表示圖形或圖像的圖形命令的系統(tǒng)。圖形命令由包括對(duì)象和描述對(duì)象的資源的視覺(jué)樹(shù)表示。對(duì)象和資源被傳送給創(chuàng)建類似于視覺(jué)樹(shù)的類似合成樹(shù)的合成引擎。合成樹(shù)用于呈現(xiàn)圖形或圖像。
文檔編號(hào)G06F17/00GK101258478SQ200680032788
公開(kāi)日2008年9月3日 申請(qǐng)日期2006年8月15日 優(yōu)先權(quán)日2005年9月7日
發(fā)明者A·百奧拉, G·科扎姆, I·雷齊特林, J·奇克, L·E·布蘭科, O·D·厄格拉紐, P·奧勒澤塔, P·戴維, S·瑟伯拉瑪尼亞, S·薩姆帕斯 申請(qǐng)人:微軟公司