專利名稱:窗口管理中的深度緩存器剪取的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及的是計算機顯示的開窗口問題,特別是給出了硬件為基礎(chǔ)的剪取系統(tǒng)用于協(xié)助以軟件為基礎(chǔ)的窗口管理。
在有關(guān)由數(shù)據(jù)處理器控制的交互顯示終端的技術(shù)上,最近的發(fā)展已經(jīng)能夠使操作者在一個顯示終端屏幕上同時顯示幾個文件或幾個記錄的內(nèi)容。這些內(nèi)容通常是以一組常常是互相重迭的窗口來顯示的,其中每個窗口各顯示一個具體的計算機文件的內(nèi)容。美國專利4586035和4714918說明了在計算機系統(tǒng)里使用這樣的重迭窗口的方法。
在象X窗口這樣典型的開窗口系統(tǒng)中(如“X-WindowUserGuidandReference”fortheIBMRT-PC,1987中所述),一單個的實際屏幕以“空間多路傳輸”的形式來顯示幾個窗口。在比較新的這種計算機系統(tǒng)中,幾個應(yīng)用程序可以在計算機中同時運行。正在計算機中運行的每個應(yīng)用程序在顯示屏幕上一般都“占有”一個或幾個窗口。通常,這些應(yīng)用程序都是彼此獨立的,因此,一個屏幕上的內(nèi)容與其它屏幕上的內(nèi)容是無關(guān)的。這些窗口可以具有不同的尺寸,也可以部分或全部重迭。
這些窗口通常由一個以軟件為基礎(chǔ)的顯示管理系統(tǒng)來控制,這個顯示管理系統(tǒng)把這些窗口看成一個堆棧,因此這些窗口相對于深度有一個總的順序。例如,在一給定的時刻,一個窗口在頂部,一個在底部,而其它窗口在這兩個窗口之間順序排在某一位置上。因為一個窗口通常都不占據(jù)顯示屏幕的整個顯示面積,并且可以部分地或全部被其它窗口遮住,所以在有開窗口能力的多任務(wù)計算機系統(tǒng)中運行的應(yīng)用程序,不允許為了產(chǎn)生與這些應(yīng)用程序有關(guān)的顯示而被直接寫入到顯示適配器中去。
通常,在這種計算機系統(tǒng)中的應(yīng)用程序必須請求窗口管理器將數(shù)據(jù)傳送到屬于它的屏幕上去。通過“剪取”輸出請求并擯棄來自應(yīng)用程序但應(yīng)位于一個程序在屏幕上形成的窗口或部分窗口之外的那部分圖表或文字的輸出,以軟件為基礎(chǔ)的窗口管理器保證一個應(yīng)用程序的輸出只會被寫到那個程序所占有的窗口上。這種剪取通常是一個軟件為基礎(chǔ)的實用程序完成的,并且它可能是非常費時的。
最近,在交互計算機圖表領(lǐng)域中已經(jīng)有了長足的發(fā)展,大大加速了為了生成代表當(dāng)今技術(shù)發(fā)展水平的復(fù)雜的計算機生成圖形所需要的數(shù)據(jù)處理過程。例如,J.D.Foley和A.VanDan在FundamentalsofInterractiveComputerGraphics,AddisonWesley,1982中說明了這種技術(shù)。在三維交互計算機圖表領(lǐng)域中普遍使用的技術(shù)之一是“Z緩存器”。尤其是,Z緩存器是一個簡單的硬件器件,用來在光柵掃描顯示器上顯示計算機產(chǎn)生的圖形時消去隱線和隱面。
過去,交互計算機圖表系統(tǒng)一般使用專用計算機來產(chǎn)生通常由多個多邊形組成的三維物體模型。每個多邊形在三維空間中有它自己的位置和方向,以及它自己的顏色和強度信息。
由計算機系統(tǒng)顯示三維物體需要計算出每一個象素的顏色/強度值。對于正在屏幕上顯示的物體的一給定方向,顯示屏幕上的一個象素可能來自該物體的一個以上的多邊形。在這樣的系統(tǒng)中顯示的象素值來自從觀察者到所討論的這個象素的視線上最前面的那個多邊形。
當(dāng)在這種計算機圖表系統(tǒng)中顯示一個三維物體的圖形時,將按某種順序來處理組成這個物體的多邊形。這個順序可以是這些多邊形被遇到時的自然順序,這取決于定義這個物體的數(shù)據(jù)結(jié)構(gòu)的構(gòu)成方法,或者,它可以按某種使輸出過程更容易的方法貯存起來。例如,多邊形可以按深度(Z值)貯存起來,以便離觀察者較遠的那些多邊形被首先遇到。這種分選通常是在計算機圖表系統(tǒng)中完成的,這樣就可通過按分選的順序處理各多邊形、并對于每個多邊形在被那個多邊形覆蓋的象素中插入適當(dāng)值的方法在屏幕上顯示任何特定的場景。一個象素可以被寫入若干次,這取決于在任一給定的三維物體中有多少個多邊形與在屏幕上由這個象素所定義的點重迭。由于多邊形是按深度分選的,寫到任一象素上的最后一個值將是那個象素上最近的多邊形的值。換句話說,離觀察者最近的那些多邊形將遮住后面較遠的多邊形。
已經(jīng)發(fā)現(xiàn),按深度分選多邊形通常并不是所希望的,因為它需要很長的處理時間,還因為這種分選并不能防止錯誤操作。例如,在三維空間中措綜復(fù)雜地彼此交叉或彼此重迭的多邊形未必就能根據(jù)一個Z值來進行分選;因此,如果分選是要完全精確的,實際上就需要對每個象素都進行分選。如果這個物體被旋轉(zhuǎn),或相對于背景運動,或相對于屏幕中的其它物體運動,或者,如果觀察者的視線變化了,那末就必須重新做這種分選。
已經(jīng)發(fā)現(xiàn),在這種三維計算機圖表應(yīng)用程序中,使用Z緩存器通過與顏色/強度值一起記住每個象素的深度信息(Z值),就可以避免任何一種分選工作。參見Foley和VanDan文章的第560~561頁。因此,使用Z緩存器允許多邊形組成一個以任意順序處理的場景,這是因為深度信息是按各象素而不是按多邊形進行跟蹤。因此,重迭很大的多邊形和交叉的多邊形將不會對計算機圖象有不利的影響。
本發(fā)明通過在通用的顯示適配器中附加一個硬件為基礎(chǔ)的窗口深度緩存器就可在具有共用顯示平面的計算機系統(tǒng)中克服更新窗口時與耗時的軟件剪取有關(guān)的那些缺點。本發(fā)明在保證屬于其它正在該計算機系統(tǒng)中運行的應(yīng)用程序的窗口上的題目完整性的同時,通過允許具體的應(yīng)用程序直接與計算機系統(tǒng)的顯示適配器進行通訊,還可以減小更新或重排窗口所需要的時間。
本發(fā)明提供了一種新的經(jīng)過改善的在計算機系統(tǒng)中更新和重排窗口的方法和系統(tǒng),該計算機具有一個刷新緩存器和一個具有屏幕顯示的交互顯示終端,在屏幕上形成一組至少是部分重迭的窗口,其中每個窗口正在顯示的內(nèi)容與屏幕其余部分上顯示的內(nèi)容是不同的。這種改善包括一個用于請求重排(從當(dāng)前的排列變成新的排列)這組重迭窗口相對于基準位置的深度位置的輸入器件,一個用來讀出這組重迭窗口中各窗口的當(dāng)前深度位置和給出當(dāng)前與這組重迭窗口中每個窗口相關(guān)的內(nèi)容分配深度值的窗口管理器。為了響應(yīng)輸入請求,這個窗口管理器還要定出這個新的窗口排列的新的深度位置,將新的深度值分配給與那個輸入請求作用到的各窗口相關(guān)的內(nèi)容,以及通知任何受到作用的應(yīng)用程序重新傳送將受到輸入請求作用的正在屏幕上顯示的那部分內(nèi)容。最好,與每個窗口相關(guān)的內(nèi)容被定義成一個具有特定象素地址的象素值陣列。
計算機系統(tǒng)包括一個深度緩存器,用來接收和貯存與每個正在屏幕上顯示的重迭窗口相關(guān)的各內(nèi)容的深度值。為了響應(yīng)重新傳送來自受到作用的應(yīng)用程序的內(nèi)容及相關(guān)的深度值用以響應(yīng)輸入請求,深度緩存器中的比較器將新傳來的深度值與當(dāng)前正在屏幕上顯示的內(nèi)容的深度值加以比較。如果這個新內(nèi)容具有一個與這同一窗口或更靠近觀察者的窗口相關(guān)的深度值,則該緩存器通知刷新緩存器貯存這個新內(nèi)容以便刷新屏幕,并通知深度緩存器貯存這個新深度值。
本發(fā)明的實現(xiàn)可以有幾個可供選擇的硬件結(jié)構(gòu)。在一種結(jié)構(gòu)中,與這一窗口內(nèi)的內(nèi)容相關(guān)的深度值是將窗口深度位置與窗口內(nèi)內(nèi)容的深度值串聯(lián)起來組成的。然后深度緩存器將這個新的串聯(lián)起來的值與當(dāng)前的串聯(lián)值加以比較,確定出刷新緩存器和深度緩存器是否應(yīng)該將新的內(nèi)容和深度值分別貯存起來。
在另一個具體實現(xiàn)中,深度緩存器包括一個窗口深度表,它貯存與各窗口識別標志有關(guān)的當(dāng)前深度位置。在這個具體實現(xiàn)中,根據(jù)輸入請求,窗口管理器輸出這個窗口深度表中列出的各窗口識別標志的新的象素深度值。然后比較器從窗口深度表中讀出正在深度緩存器中的各象素密度的窗口識別標志的深度值和新的窗口識別標志的深度值,并將由窗口深度表得到的各深度值加以比較。
在本發(fā)明的另一個具體實現(xiàn)中,深度緩存器包括兩個比較器,其中第一比較器將新的窗口識別標志與當(dāng)前窗口識別標志加以比較,第二比較器將與各當(dāng)前窗口識別標志相關(guān)的象素深度值與新的窗口識別標志相關(guān)的新象素深度值加以比較。如果第一比較器確定出當(dāng)前窗口和新窗口識別標志是相等的,并且第二比較器確定出新象素值小于等于當(dāng)前象素值,則一個與第一、第二比較器輸出端相連的邏輯單元就通知刷新緩存器將新象素值貯存起來,并通知深度緩存器貯存起新的窗口識別標志。
在另一個具體實現(xiàn)中,深度緩存器包括兩個緩存器陣列,其中第一緩存器陣列貯存正在各重迭窗口上顯示的內(nèi)容的當(dāng)前窗口識別標志,第二緩存器陣列貯存正在各窗口上顯示的內(nèi)容的當(dāng)前象素深度值。該深度緩存器還包括一個第一比較器,它與第一緩存器陣列相連,用于將新的窗口識別標志與當(dāng)前窗口識別標志加以比較,如果當(dāng)前的和新的窗口識別標志相同,則第一比較器輸出一個允許信號。第二比較器與第二緩存器陣列相連,根據(jù)收到的來自第一比較器的允許信號,將當(dāng)前象素深度值與新的象素深度值加以比較,如果新的象素深度值小于等于當(dāng)前象素深度值,則第二比較器輸出一個信號到第一和第二緩存器陣列,通知第一緩存器陣列貯存新的窗口識別標志,第二緩存器陣列貯存新的深度值。
在本發(fā)明可應(yīng)用于一組重迭的各窗口中的二維圖象的具體實現(xiàn)中,與屏幕上一窗口內(nèi)的內(nèi)容相關(guān)的深度值只包括一個窗口識別標志,其中深度緩存器只貯存當(dāng)前窗口的識別標志。為了響應(yīng)一個輸入請求,窗口管理器向深度緩存器輸出一個新的窗口識別標志,深度緩存器中的比較器將新傳來的內(nèi)容的窗口識別標志與當(dāng)前顯示的內(nèi)容的窗口識別標志加以比較。如果新的窗口識別標志識別出這個窗口是同一個窗口或更接近觀察者的窗口,則比較器向刷新緩存器和深度緩存器輸出信號,指示刷新緩存器貯存這個新的內(nèi)容,以使用這個新內(nèi)容刷新屏幕顯示,并指示深度緩存器將新的窗口識別標志貯存起來。
圖1是一個表示適用于本發(fā)明實踐的通用計算機系統(tǒng)的總的概圖。
圖2是一個表示適用于本發(fā)明實踐的計算機系統(tǒng)中的交互顯示部分的概圖。
圖3說明了與使用本發(fā)明在一交互顯示監(jiān)視器上形成一組至少是部分重迭的窗口有關(guān)的邏輯單元的組合。
圖4A說明了一組在屏幕顯示上至少部分重迭的窗口的初始位置。
圖4B說明了圖4A中的這組至少部分重迭的窗口當(dāng)頂窗口被移到底部時的重新排序的情況。
圖5是一個表示可以用在本發(fā)明實踐的顯示適配器概圖。
圖6是一個表示可以用在本發(fā)明的一個具體實現(xiàn)中的Z緩存器的概圖。
圖7A說明了在屏幕上至少部分重迭的窗口的堆棧的相對位置,以及代表正在屏幕上顯示的內(nèi)容的深度的象素值的格式化柵網(wǎng);
圖7B說明了圖7A中窗口重新排序的屏幕顯示,以及代表正在屏幕上顯示的內(nèi)容深度的變化的象素值的格式化柵網(wǎng),這些變化在本發(fā)明的第一個具體實現(xiàn)中是由窗口管理器產(chǎn)生的。
圖8是表示可用于實踐本發(fā)明的Z緩存器系統(tǒng)的第二個具體實現(xiàn)的概圖。
圖9A說明了一組在顯示監(jiān)示器屏幕上至少部分重迭的窗口的相對位置,以及代表正在顯示的內(nèi)容的識別標志的象素的柵網(wǎng);
圖9B說明了圖9A中的重新排序了的窗口的屏幕顯示,以及代表了正在屏幕上顯示的內(nèi)容的窗口識別標志的象素的格式化柵網(wǎng),該窗口識別標志在本發(fā)明的第二個具體實現(xiàn)中是由窗口管理器來改變的。
圖10是表示可用于實踐本發(fā)明的Z緩存器系統(tǒng)的第三個具體實現(xiàn)的概圖。
圖11A說明了一組在顯示監(jiān)視器的顯示屏幕上至少部分重迭的窗口,以及代表了正在屏幕上顯示的內(nèi)容的窗口識別標志的象素的格式化柵網(wǎng);
圖11B說明了被重新排序了的圖11A中窗口的屏幕顯示,以及代表了正在屏幕顯示的內(nèi)容的窗口識別標志的變化的象素的格式化柵網(wǎng),這些變化在本發(fā)明第三個具體實現(xiàn)中是由窗口管理器來改變的。
圖12是表示適用于實踐本發(fā)明的Z緩存器系統(tǒng)的第四個具體實現(xiàn)的概圖。
為了更詳細地理解本發(fā)明,參照圖1說明適于完成本發(fā)明技術(shù)的先前技術(shù)計算機系統(tǒng)的主要部件。通用計算機系統(tǒng)中的CPU2由貯存全部應(yīng)用程序的系統(tǒng)存儲器4支持。在近期的先前技術(shù)計算機系統(tǒng)中,CPU2可以同時運行兩個以上的應(yīng)用程序。與存儲器4一起,CPU2控制顯示單元6。計算機系統(tǒng)通常都具有輔助磁盤存儲器8。向系統(tǒng)的輸入可通過鍵盤10完成,鍵盤可用來輸入指定的命令,也可以用來將顯示單元6的顯示屏幕上的光標運動到菜單區(qū)內(nèi)的一個命令上。此外,也可以從另一個輸入單元12(如鼠標器)接收輸入命令。這個計算機系統(tǒng)中的各部分通過系統(tǒng)總線14互連。
一個可以用來實現(xiàn)本發(fā)明裝置及方法的計算機系統(tǒng)包括一個具有由2MB以上內(nèi)存和2.2以后版本又AIX操作系統(tǒng)支持的基于簡化指令組結(jié)構(gòu)(RISA)的CPU的IBM RT。對于某些具體實現(xiàn),可以使用IBM PS/2,它具有一個由OS/2③操作系統(tǒng)和1MB以上內(nèi)存支持的通用Intel 80286或80386微處理器。
圖2和圖3更詳細地示出了這種計算機系統(tǒng)中的系統(tǒng)邏輯和裝置。圖2中,由通用的輸入適配器12提供輸入,適配器12通過輸入驅(qū)動器14連到計算機系統(tǒng),適配器12具有將輸入操作與實現(xiàn)本發(fā)明的具體數(shù)據(jù)處理系統(tǒng)相對接所要求的通用裝置和邏輯。驅(qū)動器14的作用是把從輸入適配器收到的信號轉(zhuǎn)變成本發(fā)明可以運行的數(shù)據(jù)。
本發(fā)明所要求的程序和邏輯操作通常是由應(yīng)用程序監(jiān)督器16監(jiān)督,下面將分別加以說明。送到顯示單元6的變化由顯示管理器18控制,它通過顯示適配器22與顯示監(jiān)視器20進行通訊。顯示適配器22使來自顯示管理器的命令適于轉(zhuǎn)換成顯示監(jiān)視器20更易于使用的信號。
實現(xiàn)本發(fā)明的軟件貯存在存儲器4中,并在應(yīng)用程序監(jiān)督器16的指揮下運行,通常,這個指揮也貯存在處于CPU2控制下的存儲器4中?,F(xiàn)參照圖3對這個軟件詳加說明。
在近期的計算機系統(tǒng)中,標有應(yīng)用程序“A”18至應(yīng)用程序“n”20的各應(yīng)用程序可以并行運行。這些不同的應(yīng)用程序的各個輸出可以在交互屏幕顯示監(jiān)示器上標有28、30、32和34的不同窗口“A、B、C、D、…、n”上分別顯示出來(見圖4)。計算機系統(tǒng)的用戶通過輸入適配器12和與各應(yīng)用程序A和“n”的應(yīng)用程序用戶接口22和24相對應(yīng)的輸入驅(qū)動器14,與各應(yīng)用程序?qū)υ?。這些接口通常還包含一個通用的回聲管理器,它通過總線20把使某一窗口立即產(chǎn)生顯示變化的輸入命令直接傳輸?shù)斤@示管理器18。應(yīng)用程序監(jiān)督器單元16對這些不同的獨立的窗口操作進行協(xié)調(diào)和多路傳輸,并通過應(yīng)用程序接口26對顯示管理器18實行控制。顯示管理器18通常包括一個窗口管理器,它按照經(jīng)總線20從輸入驅(qū)動器14得到的輸入來控制各重迭窗口之間的相互位置。
在這種具有由顯示監(jiān)視器20和顯示適配器22組成的交互顯示器6的計算機系統(tǒng)中,這組在監(jiān)視器屏幕上形成的重迭窗口A、B、C和D(如圖4所示),其中每個窗口顯示的是源于不同應(yīng)用程序如A、B、C和D的內(nèi)容,同時在CPU2中運行。實際上,每個應(yīng)用程序在屏幕上都“占有”一個窗口。通常,這些應(yīng)用程序都是彼此獨立的,所以每個窗口的內(nèi)容均與其它各應(yīng)用程序所占有的窗口的內(nèi)容無關(guān)。如圖4所示,這些窗口可以具有不同的尺寸,并可以重迭。
為了改變這些窗口的相互位置,用戶通過輸入單元12輸入一個請求。例如,如果用戶想要把頂部的窗口A推到底部,則窗口B就變成了新的頂部窗口?,F(xiàn)在就可看到窗口B的全部,也可以看到窗口C原來被窗口A遮住的部分。當(dāng)一個窗口全部或部分變成可見(即“露出”)時,窗口管理器就通知占有該窗口的應(yīng)用程序必須重新生成部分或全部被移到其窗口上的內(nèi)容。重寫新露出的窗口的這一部分是每個應(yīng)用程序的責(zé)任。另一方案是,各應(yīng)用程序可以干脆重寫它的整個窗口。
在本例中(圖4),窗口B30的應(yīng)用程序至少必須重寫其窗口B的左上部分,窗口C的應(yīng)用程序必須在其窗口左上部的一小部分上做同樣的工作。因為每個窗口并沒有占據(jù)整個顯示屏幕,所以可能是部分地或全部地被其它窗口遮住。
不允許為了生成與各應(yīng)用程序有關(guān)的顯示而將各應(yīng)用程序直接寫入顯示適配器22中,而是各應(yīng)用程序A、B、C和D必須請求窗口管理器將數(shù)據(jù)傳輸?shù)斤@示適配器22中,以便為那個特定的應(yīng)用程序刷新這一部分顯示屏幕。因此,以軟件為基礎(chǔ)的窗口管理通過“剪取”被其它窗口部分或全部遮住的那個特定的應(yīng)用程序的輸出,保證一給定應(yīng)用程序的輸出僅被寫入該應(yīng)用程序所占據(jù)的窗口。過去,這種剪取是由軟件完成的,那是相當(dāng)費時的。
各應(yīng)用程序A、B、C和D輸出的內(nèi)容經(jīng)總線14傳送到顯示適配器中的專用處理器36,它控制顯示適配器22的操作。專用處理器22與貯存它所要運行的數(shù)據(jù)的專用存儲器38相連。該處理器把來自CPU2的內(nèi)容轉(zhuǎn)換到具有特定象素地址的二維象素值陣列中,這些地址與顯示屏幕上的特定點相關(guān),其中,所傳送的各應(yīng)用程序的內(nèi)容被其它應(yīng)用程序部分的或重迭的窗口遮住的那些部分已經(jīng)被剪取過了。然后,專用處理器將這些剪取過的數(shù)據(jù)以轉(zhuǎn)變過的形式經(jīng)總線40傳輸?shù)綆彺嫫骰蛩⑿戮彺嫫?2中。幀緩存器或刷新緩存器42一般是一個RAM陣列,它將象素值以數(shù)字形式存儲在有關(guān)位置上,它們將以這些位置顯示在顯示監(jiān)視器20的實際屏幕上。這些象素值然后由顯示控制器44轉(zhuǎn)換成用來將顯示的內(nèi)容投射到顯示監(jiān)視器20上的信號。一般,這個顯示必須每1/30秒或1/60秒被重新傳來的幀緩存器42中的象素值刷新。
在本發(fā)明的計算機系統(tǒng)中,給顯示適配器22加上了一個新型的Z緩存器子系統(tǒng),這樣就顯著地減小了在將計算機應(yīng)用程序傳給顯示適配器22時窗口管理器所需進行的軟件剪取工作量。實際上,以軟件為基礎(chǔ)的窗口管理器將各窗口都做為一個三維空間中的多邊形來處理。對于本發(fā)明所要求的特定的生成窗口的目的,各多邊形都是與背景平面平行的,并與使用者的視線垂直的;因此,各多邊形均使用了一個信號深度值。因此,不會有兩個多邊形或“窗口”具有相同的深度,所以當(dāng)計算象素值時,決不會產(chǎn)生“哪個多邊形是在前面”這樣的模糊問題。但應(yīng)注意,這個發(fā)明也適用于這樣的開窗口系統(tǒng)在這個系統(tǒng)中,正在各窗口上顯示的內(nèi)容是由位于三維空間中的內(nèi)容組成的。
下面將比較詳細地給出協(xié)助窗口管理器工作的五種不同的Z緩存器系統(tǒng)46的具體實現(xiàn)。在每個具體實現(xiàn)中,顯示管理器18的窗口管理器確定窗口A、B、C和D的新順序(從頂?shù)降?,對將要貯存在顯示適配器22中Z緩存器系統(tǒng)中的窗口深度項目進行一些調(diào)整,然后通知正在CPU2中運行的受到作用的應(yīng)用程序必須全部或部分地重畫它的窗口。然后,在CPU2中運行的各應(yīng)用程序通過顯示適配器22傳送這些內(nèi)容,以便重畫與該應(yīng)用程序有關(guān)的窗口Z緩存器系統(tǒng)46提供那種在先前技術(shù)計算機系統(tǒng)中窗口管理器所提供的剪取。
在每個具體實現(xiàn)中,Z緩存器系統(tǒng)46實行一種“Z緩存器代數(shù)運算”。在Z緩存器系統(tǒng)46中所實行的代數(shù)運算可以如下述(A)將全部象素值/強度值C(x,y)初始化為“背景值”。
(B)將全部Z緩存器值Z(x,y)初始化為最大可能呈現(xiàn)(最遠)的Z值。
(C)對顯示屏幕上的每個多邊形(窗口)和對多邊形中的每個象素P(x,y)*計算Cp,象素的顏色/強度值;
*計算Zp,象素的Z值;
*如果Zp小于等于Z(x,y),則
·貯存新的顏色/強度值C(x,y)←Cp·貯存新的Z值Z(x,y)←Zp。
在第一個具體實現(xiàn)中(圖6),Z緩存器系統(tǒng)46由比較器50和Z緩存器陣列51組成,陣列51含有屏幕上內(nèi)容的當(dāng)前Z緩存器深度值。各Z緩存器值與象素顏色/強度值有特定的關(guān)系,而象素顏色/強度值根據(jù)它在幀緩存器42構(gòu)成的二維陣列中的相對位置具有特定的象素地址?,F(xiàn)存的被貯存起來的深度值包括在屏幕上形成的相對于“背景”基準位置(它通常是離視者最遠的位置)的窗口的深度和象素所在窗口內(nèi)的具體的象素的深度。
為了貯存在Z緩存器陣列51中,窗口深度與窗口內(nèi)的象素深度連接在一起而構(gòu)成深度值。例如,在寄存器48中為了貯存一個現(xiàn)存的來自Z緩存器陣列51的象素值以便在比較器50中使用,窗口深度占據(jù)高位52,而窗口內(nèi)的象素貯存在低位53,這樣,在一給定的窗口內(nèi)的全部象素就被認為是處在與堆棧內(nèi)較低的窗口有關(guān)的全部象素的前面。但應(yīng)注意,對于大多數(shù)應(yīng)用程序而言,窗口內(nèi)獨立的象素深度是一個常數(shù)。
為了對來自輸入器件12的重新在顯示屏幕上排列窗口的請求做出響應(yīng),窗口管理器將確定這組窗口A、B、C和D的新的相對的深度位置,給幀緩存器42內(nèi)的每個象素分配緩存器深度值,以及通知其顯示受到作用的各個應(yīng)用程序或者重新傳送與其顯示相關(guān)的全部內(nèi)容,或者至少重新傳送其中受到所提出的屏幕重新排列所作用到的那一部分內(nèi)容。
然后窗口管理器將重新生成的內(nèi)容傳送到顯示適配器22,以便轉(zhuǎn)換成能夠貯存在緩存寄存器56中的象素值,同時,把它的相應(yīng)的象素地址傳送到寄存器58,把它的相應(yīng)的Z緩存器深度值傳送到寄存器54。對于每個象素地址,通用的比較器60將來自窗口寄存器54的新的Z緩存器深度值與從Z緩存器陣列中所在的位置傳到寄存器48的現(xiàn)存的Z緩存器深度值進行比較。
如果新的Z緩存器深度值大于現(xiàn)存的Z緩存器深度值,則比較器60指示幀緩存器42不理睬來自窗口管理器的“寫入”命令。當(dāng)新的Z緩存器深度值小于等于現(xiàn)存的Z緩存器深度值,則比較器60輸出一個信號到幀緩存器42,通知它將這個新的象素值貯存在給定的象素地址上,并輸出一個信號到Z緩存器陣列,通知它貯存這個新的Z緩存器深度值。這個過程一直持續(xù)到與幀緩存器42中各個受到作用的象素地址相關(guān)的每個現(xiàn)存的Z緩存器深度值都與那個地址上的新的Z緩存器深度值都進行了比較為止。
因此,第一個具體實現(xiàn)的Z緩存器系統(tǒng)46達到了使Z緩存器系統(tǒng)46為窗口管理器進行“剪取”的目標。只要來自窗口管理器的“寫入”請求含有適于與具體的應(yīng)用程序相關(guān)的窗口的Z緩存器深度值,Z緩存器系統(tǒng)46就保證只有那些對于窗口是實際可見的象素被更新。然而在這個具體實現(xiàn)中,窗口管理器改變窗口相對的堆棧次秩有些耗費時間。圖7A示出了在本發(fā)明的顯示監(jiān)視器20的屏幕上堆棧的窗口A、B、C和D的相對位置,以及格式化的代表正顯示在屏幕上的內(nèi)容的各象素的9×8柵網(wǎng),其中與各象素位置相關(guān)的數(shù)字與具體象素所在的相關(guān)窗口的深度相對應(yīng),如0、1、2、3和4。圖7B示出了同樣窗口的屏幕顯示,只是窗口B已被推到了底部,這要求在為了新的窗口排列而取消這些窗口之前必須更新與全部這些象素有關(guān)的深度值和全部的窗口。代表新的窗口位置的相應(yīng)的格式化象素9×8柵網(wǎng)示于圖7B中的屏幕下方。在將窗口A移到窗口堆棧底部時所必須更新的象素在圖7B的格式化柵網(wǎng)中黑體字標出。
在第二個具體實現(xiàn)中(圖8),Z緩存器陣列66也含有在屏幕上的內(nèi)容的當(dāng)前Z緩存器深度值,但是現(xiàn)存的被貯存的深度值是用一個與第一個具體實現(xiàn)不同的方式規(guī)定的。在第二個具體實現(xiàn)中,現(xiàn)存的被貯存的深度值包括一個識別具體窗口A、B、C和D的窗口識別整數(shù)和一個在屏幕上形成的窗口內(nèi)的象素深度值。然后用窗口識別整數(shù)作為窗口深度表68的索引來得到窗口的深度,窗口深度表包含每個窗口相對于基準位置的深度。更可取的是,窗口深度表是一個通用的RAM陣列。
現(xiàn)在詳細討論第二個具體實現(xiàn)。為了響應(yīng)來自輸入器件12的重排屏幕顯示上的窗口的請求,窗口管理器確定這組窗口A、B、C和D的新的相對深度位置,給每個窗口分配新的窗口深度值,以及將新的窗口深度值傳給窗口深度表68。窗口管理器還通知其顯示受到影響的各應(yīng)用程序重新傳送或是與其顯示相關(guān)的全部內(nèi)容,或者至少是受到所提出的屏幕重排影響的那部分內(nèi)容。
所傳送的內(nèi)容按規(guī)定路線被傳送到顯示適配器22,以便由處理器36轉(zhuǎn)變成象素值陣列,在處理器36中,用與第一個具體實現(xiàn)相同的方式,每個象素可以依次存入寄存器56中,并且其相應(yīng)的象素地址依次存入寄存器58中。然而該窗口管理器傳送到寄存器70的深度值是與第一個具體實現(xiàn)中傳送到寄存器54的深度值不同的,在這里,是一個窗口識別整數(shù)(而不是真實的深度值)被存入寄存器70的高位72;與具體窗口相關(guān)的象素深度被存入低位74。
以相應(yīng)的方式,寄存器76從具體象素位置的Z緩存器陣列66接收現(xiàn)存的深度值,其中這個深度值包括寄存器76高位中的窗口識別整數(shù)和寄存器76低位中窗口內(nèi)的象素深度。
在第二個具體實現(xiàn)中,在Z緩存器值被分別存入寄存器78、80之前,包含在寄存器74和76中的Z緩存器深度值先要經(jīng)過修改,用適當(dāng)?shù)纳疃戎荡鎭碜源翱谏疃缺?8的各窗口識別標志,然后,通用比較器82將寄存器78中的新的Z緩存器深度值與寄存器80中的現(xiàn)存的Z緩存器深度值加以比較。如果寄存器78中的新值大于寄存器80中的現(xiàn)存值,則比較器82指示幀緩存器42不理睬來自窗口管理器的寫入命令,并且不更新這一象素地址的象素值。如果寄存器78中的新值小于等于寄存器80中的現(xiàn)存值,則比較器82通知幀緩存器42接收這一象素地址上的新象素值,并通知Z緩存器66更新這一象素地址上的Z緩存器值。
應(yīng)該注意,不一定非要改變Z緩存器66中全部象素位置上的全部深度值。例如,對于一個8位的窗口識別標志,最多只要改變256個窗口深度表項目。然而,如果這些窗口在一個1024×1024象素顯示器上復(fù)蓋了大部分屏幕顯示面積,那在第一個具體實現(xiàn)中就必須改變約1百萬個Z緩存器項目。然而為了獲得這方面的益處,所以要求有這個附加的窗口緩存器表68。
為了使表68在更新幀緩存器和Z緩存器時不產(chǎn)生延遲,表68必須非常迅速地讀出寄存器70和76中的窗口識別整數(shù),并非常迅速地將相應(yīng)的真實的深度值傳給寄存器78和80。事實上,這個處理過程必須以與畫象素相同的速度進行。如果在圖表流程圖中的另一階段上實現(xiàn)表68,則將稍許增大一些顯示一個操作步驟中的第一個象素所需要的等待時間,但並不降低畫象素的速度。
圖9A和圖9B示出了當(dāng)窗口A從頂部推到底部時,象素深度值的窗口識別部分是怎樣變化的。應(yīng)該注意,雖然某些值已經(jīng)改變了,但它們并沒有用黑體字標出,因為它們并沒有被窗口管理器改變,這與第一個具體實現(xiàn)中的情況相同。在這個例子中,窗口管理器只改變了窗口深度表中的幾個項目(在這里是4)。然后,在應(yīng)用程序B和C按照窗口深度表68中的新深度值重畫窗口時,Z緩存器中的窗口識別整數(shù)被自動地改變。
在第三個具體實現(xiàn)中,Z緩存器陣列88也包含一個由窗口識別整數(shù)和各象素的窗口內(nèi)象表深度組成的深度值。但代替窗口深度表的,第三個具體實現(xiàn)是采用了直接將送到寄存器90的新窗口識別整數(shù)與從Z緩存器陣列88傳送到寄存器92的現(xiàn)存窗口深度值直接加以比較的方法。寄存器90和92的窗口識別整數(shù)以與其它具體實現(xiàn)相同的方式貯存在高位上,象素深度值貯存在低位上。下面更詳細地討論第三個具體實現(xiàn)。來自寄存器92的現(xiàn)存窗口識別整數(shù)和來自寄存器90的窗口識別整數(shù)被通用比較器94讀出。如果比較器94確定出兩個窗口識別標志是相等的,則輸出一個允許信號到AND門96。此外,寄存器92中的象素深度值與來自通用比較器98中寄存器90的新象素深度值進行比較。如果新象素深度值小于等于舊的象素深度值,則比較器98輸出一個允許信號到AND門96。如果AND門96沒有收到來自比較器94和比較器98的允許信號,則AND門指示幀緩存器42和Z緩存器88不理睬來自窗口管理器的寫入命令。如果AND門96收到了來自比較器94和比較器98的允許信號,則通知Z緩存器貯存新Z緩存器值100,并通知幀緩存器42貯存這個象素位置的新象素值102。
第三個具體實現(xiàn)的Z緩存器提供了一個超過第二個具體實現(xiàn)中Z緩存器的優(yōu)點,即不需要一個單獨的高速窗口深度表。應(yīng)該注意,比較器94和比較器98所進行的比較過程可以并行進行。這種方法的缺點是,在重排窗口時,窗口管理器必須通過在Z緩存器88中貯存新的窗口識別整數(shù)明確地改變各象素的所有權(quán)。
圖11A和11B示出了當(dāng)窗口A從堆棧的頂部推到底部時,Z緩存器值是怎樣變化的。由窗口管理器修改過的Z緩存器值用黑體字標出。然而應(yīng)注意到,必須用Z緩存器系統(tǒng)修改過的Z值要比第一個具體實現(xiàn)少得多,在第一個具體實現(xiàn)中,全部象素和全部窗口都要求更新而不管窗口實際上受到影響與否。在第三個具體實現(xiàn)中,僅僅受到影響的窗口的重迭區(qū)域中的象素被更新。
在第四個具體實現(xiàn)中,窗口管理以與第三個具體實現(xiàn)相同的方式把信息傳輸?shù)斤@示適配器,但在顯示適配器22中組織信息的方法是不同的。下面較詳細地討論第四個具體實現(xiàn)。顯示適配器22包含貯存窗口內(nèi)象素值深度信息的Z緩存器陣列104和一個單獨的貯存與各象素位置相關(guān)的窗口識別整數(shù)的W緩存器陣列106。在這個具體實現(xiàn)中,窗口管理器輸出新窗口識別標志到顯示適配器中的寄存器108。窗口內(nèi)相關(guān)的象素深度值被窗口管理器裝入寄存器10。對于這個序列中的任一象素位置,來自W緩存器106的現(xiàn)存窗口識別整數(shù)被貯存在寄存器112中,來自Z緩存器104的相應(yīng)的象素深度值被貯存在寄存器114中。然后,通用比較器116將來自寄存器108的新窗口識別整數(shù)與來自寄存器112的現(xiàn)存窗口識別整數(shù)加以比較。如果兩個窗口識別標志不相等,比較器116輸出一個信號到Z緩存器和幀緩存器,指示它們不理睬來自窗口管理器的寫入命令。然而,如果來自寄存器108和寄存器112的窗口識別整數(shù)是相等的,則比較器116產(chǎn)生一個允許信號傳送到通用比較器118。比較器118也將貯存在寄存器114中的現(xiàn)存象素深度值與貯存在寄存器110中的新象素深度值加以比較。如果新象素深度值大于現(xiàn)存的象素深度值,則比較118輸出一個命令到Z緩存器和幀緩沖器,不理睬來自窗口管理器的寫入命令。如果新象素深度值小于等于舊的象素深度值,并且比較器118已經(jīng)收到了來自比較器116的允許信號,則比較器118輸出一個允許信號,命令Z緩存器貯存新象素深度值,并命令幀緩存器42貯存新象素值。
第四個具體實現(xiàn)優(yōu)于第三個具體實現(xiàn)的地方在于,對于每組圖表操作,只需一次即可將窗口顯示標志傳輸?shù)斤@示適配器22。此外,窗口管理器對顯示適配器22上的新窗口識別標志寄存器108的寫入訪問可以被限制在監(jiān)督器狀態(tài)程序內(nèi),以便使寄存器不會被應(yīng)用程序碼攪亂。一旦適當(dāng)?shù)南笏氐乃袡?quán)被窗口管理器設(shè)置好,并且適當(dāng)?shù)拇翱谧R別標志已被裝入寄存器108,則可以使應(yīng)用程序直接訪問顯示適配器22,因為知道它不會攪亂它所占有的窗口以外的屏幕區(qū),這就顯著地節(jié)省了輔助操作。雖然圖12有兩個順序比較過程,但應(yīng)注意到這兩個比較是不能并行進行的。還應(yīng)注意到,經(jīng)窗口管理器修改過的Z值被限制在如圖11B中第三個具體實現(xiàn)所示的象素上。
第五個具體實現(xiàn)可適于在一組重迭的各窗口上顯示兩維的內(nèi)容,與屏幕上一個窗口內(nèi)的內(nèi)容相關(guān)的深度值只包括一個窗口識別標志。因此深度緩存器陣列只貯存現(xiàn)存的窗口識別標志,而不貯存由窗口深度和窗口內(nèi)象素深度組成的組合深度值。在這個具體實現(xiàn)中,可以使用在第一個具體實現(xiàn)中所敘述的窗口管理器和Z緩存器系統(tǒng),只需按下述進行一些改進。Z緩存器陣列51和寄存器48只貯存作為Z緩存器深度值的窗口識別整數(shù),而窗口管理器22只輸出一個新窗口識別整數(shù)到寄存器54。在其它所有方面,在第一個具體實現(xiàn)中說明的比較器的工作過程,都與上述的方式基本相同。雖然第五個具體實現(xiàn)可能不適于在一個窗口內(nèi)顯示復(fù)雜的內(nèi)容,但它對很多類型的窗口應(yīng)用程序來說卻是一個簡單易行的辦法。
由于按照優(yōu)選的具體實現(xiàn)詳細示出并說明了本發(fā)明,精于這門技術(shù)的人們即會明白,在不脫離本發(fā)明的精神和目標的前提下,可以在形式和細節(jié)上做出多種多樣的其它變化。
權(quán)利要求
1.一個具有刷新緩存器和帶屏幕顯示的交互顯示終端的計算機系統(tǒng),在屏幕上形成一組至少是部分重迭的窗口,各窗口正在顯示的內(nèi)容與屏幕上其余部分所顯示的內(nèi)容不同,該計算機系統(tǒng)的特征是請求從當(dāng)前排列到新的排列重排這組窗口相對于基準位置的深度的裝置;確定與各窗口相關(guān)的內(nèi)容深度的管理器,其中,為了響應(yīng)輸入請求,上述管理器確定這組窗口在新的排列中的各窗口內(nèi)受到影響的內(nèi)容的新的深度;以及貯存與當(dāng)前正在屏幕上顯示的各窗口相關(guān)的內(nèi)容的深度值的緩存器,其中,為了響應(yīng)輸入請求,上述緩存器包含將新傳輸?shù)膬?nèi)容的深度值與正在顯示的內(nèi)容的深度值進行比較的裝置,并且,如果新內(nèi)容具有與這同一個窗口或與一個更靠近觀察者的窗口相關(guān)的深度值,則該比較器命令刷新緩存器貯存新傳輸?shù)膬?nèi)容,以便刷新屏幕。
2.權(quán)利要求1中的計算機系統(tǒng),其中上述比較器通知深度緩存器貯存在刷新緩存器中貯存的新傳送的內(nèi)容的深度值。
3.權(quán)利要求2中的計算機系統(tǒng),其中如果這新內(nèi)容具有與離觀察者較遠的一個窗口相關(guān)的深度值,則上述比較器禁止刷新緩存器貯存新傳送的內(nèi)容,并且,用刷新緩存器中的當(dāng)前內(nèi)容刷新屏幕。
4.權(quán)利要求2中的計算機系統(tǒng),其中與各窗口相關(guān)的內(nèi)容作為一個具有特定地址的象素值陣列貯存在刷新緩存器中;以及上述管理器給與正在屏幕上的各窗口相關(guān)的各象素陣列中的各象素值分配深度值,給與受到輸入請求影響的各窗口相關(guān)的象素值部分分配新的深度值,并且傳送這些深度值。
5.權(quán)利要求4中的計算機系統(tǒng),其中的深度值包括的是一個窗口深度位置和各窗口內(nèi)的內(nèi)容的深度值的串聯(lián)組合。
6.權(quán)利要求1中的計算機系統(tǒng),其中與屏幕上形成的窗口相關(guān)的內(nèi)容的深度值包括一個窗口識別標志和一個代表窗口內(nèi)內(nèi)容深度的象素深度值;上述緩存器貯存這組重迭窗口的當(dāng)前窗口識別標志;上述比較器包含一個貯存與各窗口識別標志相關(guān)的當(dāng)前深度位置的窗口深度表;為了響應(yīng)來自上述輸入裝置的請求,上述管理器輸出新窗口識別標志和象素深度值到上述比較器,并輸出一個窗口深度表中所列的各窗口識別標志的新深度位置;以及比較器從上述窗口深度表中讀出正在緩存器中的每個新窗口識別標志的深度值和新窗口識別標志的深度值,并將從上述窗口深度表獲得的這些窗口各自的深度值加以比較。
7.權(quán)利要求6中的計算機系統(tǒng),其中各深度值包括一個窗口識別標志和窗口內(nèi)象素深度值的串聯(lián)組合;以及上述比較器將正在上述緩存器中的串聯(lián)組合值與新串聯(lián)組合值加比較。
8.權(quán)利要求1中的計算機系統(tǒng),其中窗口內(nèi)內(nèi)容的深度值包括一個窗口識別標志和一個代表窗口內(nèi)內(nèi)容深度的象素深度值;上述緩存器貯存這組重迭窗口的當(dāng)前窗口識別標志和相關(guān)的象素深度值;為了響應(yīng)來自上述輸入裝置的請求,上述管理器輸出這組重迭窗口的新窗口識別標志和相關(guān)的象素深度值到上述比較器;上述比較器包括將新窗口識別標志與其中的當(dāng)前窗口識別標志進行比較的第一比較器,如果當(dāng)前窗口識別標志和新窗口識別標志是相等的,則第一比較器輸出一個第一允許信號;第二比較器用來將與各當(dāng)前窗口識別標志相關(guān)的當(dāng)前象素深度值與其中新窗口識別標志相關(guān)的新象素深度值加以比較,如果新象素值小于等于當(dāng)前象素深度值,則第二比較器輸出一個第二允許信號;以及與上述第一、第二比較器的輸出端相連的邏輯裝置,用來輸出一個刷新信號到上述刷新緩存器和上述緩存器,以響應(yīng)收到的來自上述比較器的第一、第二允許信號。其中,為了響應(yīng)這個刷新信號,刷新緩存器接收新象素值,緩存器接收新窗口識別標志。
9.權(quán)利要求1中的計算機系統(tǒng),其中與各窗口內(nèi)容相關(guān)的深度值包括一個窗口識別標志和一個代表窗口內(nèi)內(nèi)容深度的象素深度值;上述緩存器包括第一緩存器,用來貯存顯示在各重迭窗口上的內(nèi)容的當(dāng)前窗口識別標志;和第二緩存器,用來貯存顯示在各重迭窗口上的內(nèi)容的當(dāng)前象素深度值;為了響應(yīng)上述輸入裝置的請求,上述管理器輸出新窗口識別標志和象素深度值到上述比較器,并輸出各窗口識別標志的新深度位置到窗口識別標志表;上述比較器包括與第一緩存器相連的第一比較器,用來將新窗口識別標志與其中的當(dāng)前窗口識別標志相比較,如果當(dāng)前的與新的窗口識別標志相同,則第一比較器輸出一個允許信號到第二比較器;以及與上述第二緩存器相連的第二比較器,用來根據(jù)從上述第一比較器收到的允許信號將當(dāng)前象素值與新象素值加以比較,其中,如果新象素值小于等于當(dāng)前象素深度值,則上述第二比較器輸出刷新信號到第一和第二緩存器,于是上述第一緩存器貯存新窗口識別標志,上述第二緩存器貯存新深度值。
10.權(quán)利要求1中的計算機系統(tǒng),其中(a)與屏幕上窗口內(nèi)內(nèi)容相關(guān)的深度值包含一個窗口識別標志;(b)上述緩存器貯存在各重迭窗口上顯示的內(nèi)容的當(dāng)前窗口識別標志;(c)為了響應(yīng)輸入裝置的請求,上述管理器輸出一個新的窗口識別標志。(d)上述比較器將新傳送的內(nèi)容的窗口識別標志與當(dāng)前顯示的內(nèi)容的窗口識別標志加以比較,如果新窗口識別標志識別出是同一窗口或是更靠近觀察者的窗口,則比較器輸出允許信號到刷新緩存器和緩存器;以及(e)為了響應(yīng)允許信號,刷新緩存器貯存新內(nèi)容,以便用新內(nèi)容刷新屏幕顯示,并且,緩存器貯存新窗口識別標志。
11.一個能夠運行一組具有一個帶刷新緩存器的顯示適配器和一個帶屏幕顯示的交互顯示終端的應(yīng)用程序的計算機系統(tǒng),在這個屏幕顯示上形成一組至少是部分重迭的窗口,每個窗口正在顯示的內(nèi)容均與該屏幕上其余部分上顯示的內(nèi)容是不同的,其特征是請求將這組窗口相對于基準位置的深度位置由當(dāng)前的排列重新排列成新的排列的裝置;管理器用來讀出這組各窗口的深度位置,并給與各窗口相關(guān)的內(nèi)容分配深度值,其中,為了響應(yīng)輸入請求,上述管理器確定這組窗口的新深度位置,給與各受到影響的窗口相關(guān)的內(nèi)容分配新深度值,并輸出這些深度值,以及緩存器用來貯存與屏幕上當(dāng)前正在顯示的各窗口相關(guān)的內(nèi)容的深度值,其中上述緩存器包含為了響應(yīng)輸入請求而將新傳送的內(nèi)容的深度值與當(dāng)前顯示內(nèi)容的深度值加以比較的方法,如果新內(nèi)容具有與這同一窗口或更靠近觀察者的窗口相關(guān)的深度值,則比較器指示刷新緩存器貯存新傳送的內(nèi)容,以便刷新屏幕。
12.權(quán)利要求11中的計算機系統(tǒng),其中上述緩沖器是一個位于顯示適配器中的RAM陣列;以及上述管理器指示各應(yīng)用程序?qū)⑴c受到窗口重排影響的這些應(yīng)用程序相關(guān)的內(nèi)容直接傳送到顯示適配器。
全文摘要
在一個具有顯示適配器、刷新緩存器和帶屏幕顯示(在屏幕顯示上形成一組至少是部分重疊的窗口)的交互顯示終端的計算機系統(tǒng)中,給顯示適配器附加一個深度緩存器,以便為CPU中的以軟件為基礎(chǔ)的窗口管理器提供一個剪取輔助設(shè)備。為了控制每個窗口的當(dāng)前深度位置而對窗口管理器編程。為了響應(yīng)重排窗口的輸入請求,窗口管理器給與各受到影響的窗口相關(guān)的內(nèi)容分配一個新的深度值,并請求各應(yīng)用程序至少重新傳送受到影響的內(nèi)容。
文檔編號G09G5/14GK1044718SQ9010048
公開日1990年8月15日 申請日期1990年1月21日 優(yōu)先權(quán)日1989年2月6日
發(fā)明者拉里·凱西·露克斯, 里查德·奧曼德·西普森 申請人:國際商業(yè)機器公司