欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

在顯示設(shè)備上異步地維護(hù)圖像的方法

文檔序號:6409132閱讀:172來源:國知局
專利名稱:在顯示設(shè)備上異步地維護(hù)圖像的方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種用于管理執(zhí)行中的計(jì)算機(jī)程序和用戶之間的接口的系統(tǒng)。具體而言,這樣的系統(tǒng)通過由顯示在顯示屏幕上的圖形對象所組成的圖象向用戶提供數(shù)據(jù)。這種圖象是由計(jì)算機(jī)程序所提出的任何顯示更新請求所異步地維護(hù)的。
在下面的討論中,使用了一個(gè)面向?qū)ο蟮姆独?,其中每個(gè)要在顯示設(shè)備上顯示的圖形單元是由一個(gè)編程對象所表示的,這個(gè)對象又可以包含別的對象。每個(gè)這樣的圖形對象可以有屬性,并有處理該對象的各種方法,這些方法是響應(yīng)送到該對象的信息而調(diào)用的。例如,圖形對象的屬性包括它在屏幕上的位置、它的大小和它的顏色。有些圖形對象具有該類對象所獨(dú)有的屬性。例如,圓的對象有半徑屬性,而文字對象有字串屬性。
這些屬性具有值,值可以由應(yīng)用程序所改變。例如,對象的顏色屬性可以賦值為“藍(lán)”或“紅”;位置屬性可以被改變以便把對象移到顯示屏幕上的另外一個(gè)位置;和/或大小屬性可以被改變以便使該對象在顯示屏幕上改變大小。當(dāng)圖形對象的屬性被改變后,顯示管理程序就被調(diào)用以重畫該對象,或許還要重畫環(huán)繞該對象的其它對象以便體現(xiàn)改變后的屬性。例如,如果對象的顏色被應(yīng)用程序修改后,該對象就被以新的顏色重畫,如果對象被移動(dòng),則原來的地點(diǎn)要在沒有該對象的情況下重畫,而在新的地點(diǎn)上則重畫該對象。熟悉面向?qū)ο笙到y(tǒng)編程的人會(huì)懂得這一概念,并且會(huì)使用圖形對象來設(shè)計(jì)和實(shí)現(xiàn)這種系統(tǒng)。
大家都知道,在以圖形為基礎(chǔ)的處理器系統(tǒng)中,處理器要花掉它的處理時(shí)間中的大部分來執(zhí)行圖形功能,例如在顯示屏幕上畫或重畫圖形對象,因而優(yōu)化屏幕繪圖速度是很重要的。為了得到極限程度的響應(yīng)時(shí)間,現(xiàn)有的面向?qū)ο蟮囊詧D形為基礎(chǔ)的處理器系統(tǒng)在一個(gè)圖形對象的屬性有任何變化之后立即自動(dòng)調(diào)用顯示管理程序來重畫屏幕,但是,發(fā)明人認(rèn)為在執(zhí)行交互式程序的任何給定的時(shí)間里,其它的處理功能在增加可察覺的響應(yīng)速度方面可能比屏幕畫圖功能更加重要,例如,響應(yīng)用戶的輸入或響應(yīng)從大容量存儲(chǔ)設(shè)備或遠(yuǎn)距發(fā)送地點(diǎn)接收到的數(shù)據(jù)。
本發(fā)明可以在音頻視頻交互(AVI)系統(tǒng)中實(shí)施。AVI系統(tǒng)是一種建議的廣播系統(tǒng),它可以讓用戶和廣播的AVI程序進(jìn)行交互。在這種系統(tǒng)中AVI信號從發(fā)射地點(diǎn)廣播到遠(yuǎn)處的AVI接收機(jī)。AVI信號包括和標(biāo)準(zhǔn)電視信號相同的音頻和視頻分量以及一個(gè)交互式程序的分量。交互式程序的分量不斷地重復(fù)表示組成應(yīng)用程序的代碼和數(shù)據(jù)模塊的數(shù)據(jù)。每個(gè)AVI接收機(jī)包括一個(gè)處理器,它從發(fā)送的交互分量中按照需要而提取代碼和數(shù)據(jù)模塊,在所提取的應(yīng)用程序的控制之下產(chǎn)生圖形和聲音,它們可以覆蓋在音頻和視頻分量上并以交互的方式對用戶的輸入作出響應(yīng)。
重要之點(diǎn)在于AVI接收機(jī)應(yīng)該盡可能地降低成本以便在消費(fèi)者中盡可能多地推廣這種接收機(jī)。這個(gè)限制條件表明在AVI接收機(jī)中應(yīng)該使用廉價(jià)但比較慢速的處理器。但是,同樣重要的是交互式程序的可察覺的響應(yīng)速度應(yīng)該盡可能地快。因此就希望有一種方法,它既能增加交互式程序?qū)τ脩糨斎氲目刹煊X的響應(yīng)速度,同時(shí)又保持使用廉價(jià)的、相對較慢的處理器的能力。
按照本發(fā)明的原理,在顯示設(shè)備上異步地維護(hù)一個(gè)圖象的方法包括下列各步首先,從應(yīng)用程序接收一個(gè)畫圖請求。然后,根據(jù)收到的畫圖請求確定一個(gè)圖象的畫圖區(qū),把這個(gè)畫圖區(qū)插入到畫圖區(qū)列表中。然后從應(yīng)用程序接收一個(gè)屏幕更新請求。根據(jù)這個(gè)接收到的屏幕更新請求,從列表中檢索出畫圖區(qū),然后如果圖形對象的任何部分位于檢索出的畫圖區(qū)時(shí)所有圖形對象被重新畫出。
在圖中

圖1是部分以流程圖形式、部分以存儲(chǔ)器布置方式的圖示,說明含有本發(fā)明的處理系統(tǒng)的工作;圖2是顯示由圖形對象組成的圖象用的顯示設(shè)備的示意圖;圖3是和圖2所示的圖形對象相對應(yīng)的樹形圖;圖4是用于優(yōu)化畫圖區(qū)列表的相應(yīng)安排的圖示;圖5是說明按照本發(fā)明把一個(gè)圖形對象從一個(gè)位置移到另一位置所引起的在顯示設(shè)備上的屏幕顯示的序列的圖示;和圖6是對應(yīng)于圖5所示的顯示的樹形圖。
圖1是部分以流程形式、部分以存儲(chǔ)器布置方式表明含有本發(fā)明的處理系統(tǒng)的工作情況圖示。圖2是說明顯示圖形對象(10-74)的顯示設(shè)備100的圖示;圖3是對應(yīng)于顯示于圖2中的圖形對象(10-74)的樹形圖200,這兩個(gè)圖對于理解圖1是很有用的。在圖1中應(yīng)用程序的一部分示于左側(cè),其標(biāo)題為“應(yīng)用程序”(APPLN PROG),而用戶接口管理系統(tǒng)(UIMS)則示于它靠右面的一邊,其標(biāo)題為“UIMS”。圖的最右邊標(biāo)題為“數(shù)據(jù)”(DATA)的則表明由UIMS維護(hù)的數(shù)據(jù)結(jié)構(gòu)的一部分。
在圖2中,顯示設(shè)備100表明了應(yīng)用程序中一個(gè)屏幕對象10的顯示圖。屏幕對象10包括一個(gè)菜單對象30,它部分地覆蓋時(shí)鐘對象20。菜單對象30包括一個(gè)環(huán)繞框?qū)ο?1,一個(gè)標(biāo)題對象33,一個(gè)選擇對象35,一個(gè)OK按鈕對象37和一個(gè)CANCEL(取消)按鈕對象39。標(biāo)題對象33是一個(gè)文字對象,它帶有‘字串’屬性,該屬性的值為“MENU”(菜單)。選擇對象35含有一個(gè)環(huán)繞框?qū)ο?2以及三個(gè)選擇項(xiàng)對象54、56和58。選擇項(xiàng)對象54還含有一個(gè)選擇框?qū)ο?2,以及一個(gè)文字對象44,它有一個(gè)‘字串’屬性,其值為“STEREO”,還含有一個(gè)挑選對象46,其‘選中的’屬性有一個(gè)值為TRUE(真),這是用在選擇框?qū)ο?2中的一個(gè)對號(√)來顯示的。在選擇項(xiàng)對象56中,挑選對象66的‘選中的’屬性的值是FALSE(假),這在選擇框?qū)ο?2中以一個(gè)空白來顯示。文字對象64的‘字串’屬性的值是“THX”。在選擇項(xiàng)對象58中,文字對象84的‘字串’屬性的值是“EXPANDED”(擴(kuò)充)。在選擇項(xiàng)對象54、56和58中的所有其它相對應(yīng)的對象都是相同的,不再詳細(xì)說明。OK按鈕對象37包括一個(gè)環(huán)繞框?qū)ο?2和一個(gè)文字對象74,后者的屬性是‘字串’其值為“OK”。CANCEL按鈕對象39包括一個(gè)環(huán)繞框?qū)ο?2和一個(gè)文字對象94,后者的屬性為‘字串’而其值為“CANCEL”。時(shí)鐘對象20含有一個(gè)環(huán)繞框?qū)ο?2、一個(gè)時(shí)間文字對象24,后者的屬性為‘字串’,它的字符值是當(dāng)前的時(shí)間,例如“23037PM”,還有一個(gè)日期文字對象26,它的屬性是‘字串’,它的字符值為當(dāng)前的日期,如“5/18/91”。
在圖1中,應(yīng)用程序APPLN PROG在它編程的過程中要在塊302中改變圖形對象的屬性。為此,以一種已知方式對應(yīng)用程序員提供一個(gè)應(yīng)用程序接口(API),允許為這種屬性改變而提出一個(gè)請求。更具體地說,為了改變圖形對象的屬性,要對API中所規(guī)定的能夠改變圖形對象屬性的子例程進(jìn)行一次系統(tǒng)調(diào)用。這個(gè)被調(diào)用的子例程是UIMS的一部分。
在UIMS的塊342中,要確定作為改變屬性的結(jié)果而需要重畫的一個(gè)(或多個(gè))畫圖區(qū)。在這個(gè)說明的實(shí)施例中,包圍那個(gè)其屬性有改變的圖形對象的長方形是由UIMS在塊342中所確定的。例如,如果一個(gè)圓的顏色屬性被改變,則包圍該圓的一個(gè)長方形(或者更準(zhǔn)確地說是一個(gè)方形)被確定。這個(gè)方形畫出了由于屬性變化而需要重畫的圖象的那塊區(qū)域的輪廓。表示這個(gè)方形的位置和大小的數(shù)據(jù)則在塊344中被插入到畫圖區(qū)362的列表中。
插入到畫圖區(qū)列表362中的數(shù)據(jù)以后要被再取回而作進(jìn)一步的處理,其方式將在下面詳細(xì)說明。畫圖區(qū)列表362可以用一種已知方式構(gòu)造成一個(gè)先進(jìn)先出(FIFO)緩沖區(qū)。另外的方式也可以使用,可以控制以前插入的畫圖區(qū)的取出順序,例如優(yōu)選機(jī)制方式。
每當(dāng)有一個(gè)新的畫圖區(qū)插入列表362時(shí),在畫圖區(qū)列表362中的畫圖區(qū)也可以作一次優(yōu)化,如圖1中塊345的虛線所示。有兩種判據(jù)可以用來量度這種優(yōu)化。第一,在畫圖區(qū)列表中的項(xiàng)目數(shù)應(yīng)按實(shí)際需要越少越好。第二,畫圖列表中任何一個(gè)項(xiàng)都不應(yīng)如此之大以致無節(jié)制地耗費(fèi)處理時(shí)間來進(jìn)行重畫。在表示新的畫圖區(qū)的數(shù)據(jù)插入到畫圖區(qū)列表362中后,該新的畫圖區(qū)要和當(dāng)前已存放在畫圖區(qū)列表362中的每個(gè)畫圖區(qū)進(jìn)行逐個(gè)比較(如圖1中的從畫圖區(qū)列表362到塊345的虛線箭頭所示),畫圖列表根據(jù)這一比較進(jìn)行優(yōu)化。比較是根據(jù)兩個(gè)畫圖區(qū)的相對位置進(jìn)行的。
圖4是說明為優(yōu)化畫圖區(qū)列表而進(jìn)行的有關(guān)安排的圖示。圖4a表示畫圖區(qū)的兩種可能的安排。圖4a的左手側(cè)表示兩個(gè)互不覆蓋的第一畫圖區(qū)A和第二畫圖區(qū)B。在這種情況下,不可能進(jìn)行優(yōu)化,表明兩個(gè)畫圖區(qū)X和Y的數(shù)據(jù)保持在畫圖區(qū)的列表362中。圖4a的右手側(cè)表示第三畫圖區(qū)C和第四畫圖區(qū)D,后者完全覆蓋了第三畫圖區(qū)C。在這種情況下,僅僅表示一個(gè)畫圖區(qū)Z的數(shù)據(jù)保持在畫圖區(qū)列表362中。當(dāng)畫圖區(qū)Z被重畫時(shí),它將把兩個(gè)圖畫區(qū)C和D都重畫。
圖4b的左手側(cè)表明第一畫圖區(qū)A和第二畫圖區(qū)B,后者部分地覆蓋畫圖區(qū)A,它的右手側(cè)表明第三畫圖區(qū)C和第四畫圖區(qū)D,后者部分地覆蓋了畫圖區(qū)C。當(dāng)兩個(gè)畫圖區(qū)部分覆蓋時(shí),就產(chǎn)生一個(gè)建議的畫圖區(qū),它完全地環(huán)繞兩個(gè)部分覆蓋的畫圖區(qū)。新產(chǎn)生的畫圖區(qū)的面積與這兩個(gè)重迭的畫圖區(qū)的組合面積進(jìn)行比較。如果新產(chǎn)生的畫圖區(qū)的面積并不明顯地大于兩個(gè)部分覆蓋的畫圖區(qū)面積之和,則表示兩個(gè)互相覆蓋的畫圖區(qū)的數(shù)據(jù)就從畫圖區(qū)列表362中刪去,而表示新產(chǎn)生的畫圖區(qū)的數(shù)據(jù)則插入到畫圖區(qū)列表362中。否則畫圖區(qū)列表保持不變。
比較新產(chǎn)生的畫圖區(qū)的面積和部分覆蓋的畫圖區(qū)的面積之和的一個(gè)方法是從新產(chǎn)生的畫圖區(qū)的面積中減去部分覆蓋的畫圖區(qū)的面積之和,然后把其差值和一個(gè)固定的閾值相比較。例如,顯示屏幕的面積可以用象素的數(shù)目來表示。在一個(gè)優(yōu)選實(shí)施例中,如果差值小于1000個(gè)象素,則表示新產(chǎn)生的畫圖區(qū)的數(shù)據(jù)就取代畫圖區(qū)列表362中表示兩個(gè)部分覆蓋的畫圖區(qū)的數(shù)據(jù)。另外的辦法是,部分覆蓋的畫圖區(qū)的面積之和對新產(chǎn)生的畫圖區(qū)的面積之比可以和一個(gè)閾值比相比較。例如,如果該比例大于0.9,則表示新產(chǎn)生的畫圖區(qū)的數(shù)據(jù)就取代畫圖區(qū)列表362中表示兩個(gè)部分覆蓋的畫圖區(qū)的數(shù)據(jù)。
再參看圖4b,畫圖區(qū)W是新產(chǎn)生的,它用以包含部分覆蓋的畫圖區(qū)A和B。在這種情況下,新產(chǎn)生的畫圖區(qū)W的面積并不明顯地大于部分覆蓋的畫圖區(qū)A和B的面積之和。因此,表示兩個(gè)部分覆蓋畫圖區(qū)A和B的數(shù)據(jù)被從畫圖區(qū)列表362中刪掉,而代表畫圖區(qū)W的數(shù)據(jù)則插到畫圖區(qū)列表362中原來是它們的位置上。但是,新產(chǎn)生的、包括部分覆蓋的畫圖區(qū)C和D的畫圖區(qū)X的面積明顯地大于部分覆蓋的畫圖區(qū)C和D的面積之和。因此,這兩項(xiàng)保持在畫圖區(qū)列表362中畫圖區(qū)Y圍繞區(qū)C,畫圖區(qū)Z則圍繞區(qū)D。
圖4C的左手側(cè)表明第一畫圖區(qū)A和第二畫圖區(qū)B,后者部分地覆蓋畫圖區(qū)A。它的右手側(cè)表明第三畫圖區(qū)C。在圖4c的左手側(cè),畫圖區(qū)B以這樣的方式覆蓋畫圖區(qū)A使得這兩個(gè)區(qū)可以分解成兩個(gè)不同的畫圖區(qū)W和X。在顯示設(shè)備上,重畫畫圖區(qū)W和X的結(jié)果和重畫畫圖區(qū)A和B是一樣的,但這樣重畫的面積由于這一分解而被減少了。因此,表示畫圖區(qū)A和B的數(shù)據(jù)從畫圖區(qū)列表362中被刪掉,而由表示畫圖區(qū)W和X的數(shù)據(jù)所取代。
當(dāng)一個(gè)很大的畫圖區(qū)插入到畫圖區(qū)列表中時(shí),重畫這個(gè)區(qū)所需的時(shí)間是很長的。為了在重畫這個(gè)區(qū)時(shí)提供靈活性,它被分成若干部分。圖4c右手側(cè)的畫圖區(qū)C占據(jù)了顯示設(shè)備面積的近一半。因此,畫圖區(qū)C被分成兩個(gè)畫圖區(qū)Y和Z。表示畫圖區(qū)Y和Z的數(shù)據(jù)插入到畫圖區(qū)列表362中以代替表示畫圖區(qū)C的數(shù)據(jù)。
當(dāng)產(chǎn)生一個(gè)新的畫圖區(qū)并插入到畫圖區(qū)列表362中時(shí),這個(gè)新產(chǎn)生的畫圖區(qū)可能覆蓋其它畫圖區(qū),因而必須如上所說明的那樣和其它畫圖區(qū)進(jìn)行比較。當(dāng)不可能進(jìn)一步優(yōu)化時(shí),UIMS就把控制交回給應(yīng)用程序,它可以繼續(xù)進(jìn)行別的處理。在此,屏幕沒有進(jìn)行重畫。
再參見圖1,當(dāng)控制從UIMS子例程回到塊302的應(yīng)用程序時(shí),應(yīng)用程序就執(zhí)行進(jìn)一步的處理(這并不一定牽涉到圖形對象的屬性變化),這在圖1中用從塊302向下延伸的鋸齒狀線所表示。在以后的時(shí)間里,在塊304上,應(yīng)用程序執(zhí)行一次對UIMS子例程的調(diào)用,這是在API中規(guī)定的,這個(gè)子例程將更新屏幕。
為了對這個(gè)系統(tǒng)調(diào)用作出向應(yīng),UIMS在塊346處從畫圖區(qū)列表362中以上面說明過的一種FIFO(先進(jìn)先出)方式或別的方式檢索以前存放的表示畫圖區(qū)的數(shù)據(jù)。這種檢索的畫圖區(qū)以下面要說明的方式用作邊界框。在塊348中,對每個(gè)當(dāng)前已顯示在屏幕上的圖形對象都送去一個(gè)信息以便對其本身進(jìn)行重畫。
表示當(dāng)前已顯示的圖形對象的數(shù)據(jù)是存放在數(shù)據(jù)樹結(jié)構(gòu)364中的,每個(gè)圖形對象都有一個(gè)節(jié)點(diǎn)。這個(gè)樹以下面所說的方式游歷一次并且給每個(gè)圖形對象送去重畫信息,從而被游歷一次。圖形對象對這個(gè)信息所作出的響應(yīng)是執(zhí)行和這個(gè)圖形對象相關(guān)的方法之一REDRAW(重畫)。該REDRAW方法首先確定圖形對象有沒有哪一部分位于邊界框之內(nèi)。如果有,則該圖形對象就調(diào)用低級別的圖形顯示例程,它就重畫該圖形對象。否則就什么也不做。當(dāng)每個(gè)當(dāng)前顯示的圖形對象執(zhí)行了它的REDRAW方法時(shí),則檢索的畫圖區(qū)也就已完全重畫了。
圖3表明數(shù)據(jù)樹結(jié)構(gòu)200,這個(gè)樹表示圖2中在顯示設(shè)備100上的圖象。樹200中的每個(gè)節(jié)點(diǎn)表示一個(gè)圖形對象。子節(jié)點(diǎn)表示包含在父代對象中的圖形對象。參看圖3,通常稱作樹的根節(jié)點(diǎn)的頂端節(jié)點(diǎn)210表示屏幕對象10。如上所述,屏幕對象包括一個(gè)時(shí)鐘對象20和一個(gè)菜單對象30。相應(yīng)地,根節(jié)點(diǎn)210有一個(gè)第一子節(jié)點(diǎn)220表示時(shí)鐘對象以及一個(gè)第二子節(jié)點(diǎn)230表示菜單對象30。就時(shí)鐘節(jié)點(diǎn)220的子節(jié)點(diǎn)而言,節(jié)點(diǎn)222表示環(huán)繞框?qū)ο?2,節(jié)點(diǎn)224表示時(shí)鐘文字對象24,節(jié)點(diǎn)226則表示日期文字對象26。
至于菜單節(jié)點(diǎn)230的子節(jié)點(diǎn),節(jié)點(diǎn)231表示環(huán)繞框?qū)ο?1,節(jié)點(diǎn)233表示標(biāo)題文字對象33,節(jié)點(diǎn)235表示選擇對象35,節(jié)點(diǎn)237表示OK按鈕對象37,節(jié)點(diǎn)239則表示CANCEL按鈕對象39。關(guān)于選擇節(jié)點(diǎn)235的各個(gè)子節(jié)點(diǎn),節(jié)點(diǎn)252表示環(huán)繞框?qū)ο?2,節(jié)點(diǎn)254-25 8分別表示三個(gè)選擇項(xiàng)對象54-58。為了簡化該圖,只有從代表選擇項(xiàng)節(jié)點(diǎn)(254)和按鈕節(jié)點(diǎn)(37)來的子節(jié)點(diǎn)才顯示在圖3中。所有的選擇項(xiàng)節(jié)點(diǎn)和兩個(gè)按鈕節(jié)點(diǎn)都有相同的子節(jié)點(diǎn)結(jié)構(gòu)。關(guān)于選擇項(xiàng)節(jié)點(diǎn)254的各子節(jié)點(diǎn),節(jié)點(diǎn)242表示選擇框?qū)ο?2,文字節(jié)點(diǎn)244表示文字對象44,挑選節(jié)點(diǎn)246表示挑選對象46。至于OK按鈕節(jié)點(diǎn)237的子節(jié)點(diǎn),節(jié)點(diǎn)272表示環(huán)繞框?qū)ο?2和節(jié)點(diǎn)274表示文字對象74。
當(dāng)圖象被畫出或被重畫時(shí),表示該圖象的樹結(jié)構(gòu)被遞歸地游歷,其順序?yàn)閺母?jié)點(diǎn)開始自左向右,并在游歷時(shí)由每個(gè)節(jié)點(diǎn)時(shí)送出一個(gè)重畫信息到該節(jié)點(diǎn)所表示的對象。對象的REDRAW方法首先確定表示該對象的圖形圖象是否有任何部分位于邊界框之內(nèi)(從圖1的框346)。如果有,則REDRAW方法調(diào)用低級別圖形例程,它按照該圖形對象的屬性在顯示屏幕上畫出由該節(jié)點(diǎn)所表示的對象。
例如,為了畫一個(gè)框?qū)ο?,就調(diào)用低級別圖形例程,它將在由框?qū)ο蟮奈恢脤傩运?guī)定的位置上畫一個(gè)框,它的大小由大小屬性所規(guī)定而顏色則由顏色屬性所規(guī)定。其它屬性,如線的粗細(xì),陰影的濃黑程度等也可能是框?qū)ο蟮囊徊糠?,它們將影響環(huán)繞圖象的描繪。另一個(gè)例子是描繪一個(gè)文字對象,這時(shí)也要調(diào)用低級別圖形例程,它將在位置屬性的規(guī)定的位置以大小屬性所規(guī)定的大小描繪在字串屬性中的字符的圖象。在文字對象中可能出現(xiàn)的其它屬性是字體、文字屬性(黑體、斜體等)、背景顏色等等。所有其它的圖形對象都按照它們的屬性被類似地描繪。
對于含有子節(jié)點(diǎn)的節(jié)點(diǎn)(即父代節(jié)點(diǎn)),REDRAW方法這時(shí)就把重畫信息送到該節(jié)點(diǎn)的所有子節(jié)點(diǎn)。首先,重畫信息送到最左邊的子節(jié)點(diǎn)。父代節(jié)點(diǎn)的REDRAW方法等待來自該子節(jié)點(diǎn)返回的表示重繪已經(jīng)完成的信息,然后它從左到右繼續(xù)對同輩的各節(jié)點(diǎn)進(jìn)行處理,直到重畫信息已送到所有子節(jié)點(diǎn)和從所有子節(jié)點(diǎn)收到重畫完成信息為止。然后把一個(gè)信息送到它自己的父代節(jié)點(diǎn)表明重畫已完成且該對象的REDRAW方法已結(jié)束。所有圖形對象的REDRAW方法都可以參照該樹結(jié)構(gòu)(圖1的)384,這由從樹結(jié)構(gòu)364指向塊348的箭頭所表明。
現(xiàn)在請參考圖2所示的圖象,它也由圖3所示的樹結(jié)構(gòu)所表示。在前面最后一個(gè)時(shí)鐘節(jié)拍時(shí),即正好是23037PM(下午2點(diǎn)30分37秒),時(shí)鐘對象20的時(shí)間文字對象24的‘字串’屬性從“23036PM”改變成“23037PM”。這時(shí),表示圍繞著時(shí)間文字對象24的長方形(未示出)的數(shù)據(jù)由UIMS(圖1)的塊344插入到繪圖區(qū)列表362中。當(dāng)表示該長方形的數(shù)據(jù)由UIMS的塊346從畫圖區(qū)列表362中檢索時(shí),圖象就按以下方式重畫。
如上所述,由檢索的數(shù)據(jù)所表示的長方形是用作邊界框的。這時(shí)(圖1的)UIMS的塊348送出一個(gè)重畫信息到由根節(jié)點(diǎn)210所表示的屏幕對象10。屏幕對象10的REDRAW方法首先從它的圖形屬性確定是否有任何部分位于邊界框之內(nèi)。在目前情況下,它沒有,所以不調(diào)用低級別的圖形例程。這時(shí)屏幕對象10的REDRAW方法就送出一個(gè)重畫信息到由根節(jié)點(diǎn)210的左邊節(jié)點(diǎn)220所代表的時(shí)鐘對象20,并等待表示時(shí)鐘對象20已經(jīng)完成其自身的重畫的信息。
時(shí)鐘對象20的REDRAW方法首先送出重畫信息到由節(jié)點(diǎn)222所表示的環(huán)繞框?qū)ο?2,并等待重畫完成信息。環(huán)繞框?qū)ο?2的REDRAW方法首先根據(jù)位置和大小屬性確定環(huán)繞框22是否有環(huán)繞框22的任何部分位于邊界框以內(nèi)。在目前情況下,仍然沒有,所以一個(gè)表明重畫已經(jīng)完成的信息被送回到時(shí)鐘對象20的REDRAW方法,環(huán)繞框?qū)ο?2的REDRAW方法到此結(jié)束。
當(dāng)時(shí)鐘對象20的REDRAW方法從環(huán)繞框?qū)ο?2的REDRAW方法收到重畫完成信息時(shí),它然后就送出一個(gè)重畫信息到由節(jié)點(diǎn)224所表示的時(shí)間文字對象24,并等待重畫完成信息。時(shí)間文字對象24的REDRAW方法首先確定是否有任何一部分文字位于邊界框內(nèi)。由于時(shí)間文字對象24確實(shí)位于邊界框內(nèi),就要調(diào)用低級別例程以便按照其屬性畫出時(shí)間文字對象,也就是,表示新時(shí)間的字符被畫在圖象上。然后重畫完成信息送回給時(shí)鐘對象20,REDRAW方法結(jié)束。然后時(shí)鐘對象20送一個(gè)重畫信息到日期文字對象26,它的工作和時(shí)間文字對象24相類似。在目前情況下,不必進(jìn)行重畫,REDRAW方法送回一個(gè)重畫完成信息給時(shí)鐘對象20。當(dāng)時(shí)鐘對象20收到了從日期文字對象26發(fā)出的重畫完成信息時(shí),它的REDRAW方法就告完成。它向屏幕對象10送回一個(gè)表示此種情況的信息,然后它的REDRAW方法就結(jié)束。
當(dāng)屏幕對象10從時(shí)鐘對象20收到這個(gè)信息時(shí),它送出一個(gè)重畫信息到菜單對象30。菜單對象30的REDRAW方法則又送出重畫信息到環(huán)繞框?qū)ο?1,并等待從環(huán)繞框31送回的重畫完成信息。環(huán)繞框?qū)ο?1的右下角位于環(huán)繞框之內(nèi),所以它要進(jìn)行重畫(即低級別圖形例程要被調(diào)用)。然后送回一個(gè)重畫完成信息到菜單對象30。當(dāng)這個(gè)重畫完成信息被收到時(shí),就依次對標(biāo)題文字對象33、選擇對象35、OK按鈕37和CANCEL按鈕39重復(fù)同樣的過程。這些對象的每一個(gè)都遞歸地按上面所詳細(xì)說明的方式工作,因而就重畫了屏幕。在目前情況下,只有CANCEL按鈕39的環(huán)繞框?qū)ο?4位于邊界框之內(nèi)并被重畫。
如上所述,時(shí)鐘對象20的重畫在菜單對象30重畫之前,因此它被菜單對象30所覆蓋,并且好像位于顯示設(shè)備100上的菜單對象30的下面。一般說來,由樹中最右邊的節(jié)點(diǎn)所代表的對象都出現(xiàn)在顯示圖象的面上,而由最左邊的節(jié)點(diǎn)所表示的對象則在顯示圖象的底下。這被稱作Z次序。改變屬性有可能改變對象的Z次序位置,這時(shí)屏幕樹就需要作改變。更具體地說,當(dāng)一個(gè)對象放在Z次序的最‘頂上’時(shí),這個(gè)對象就被放在父代對象的最右邊的同輩節(jié)點(diǎn)上,而其它同輩對象則仍保持它們相同的相對位置。參考圖1,這由從塊302到塊364的虛線所表示。不過,這僅僅是一種圖解式的聯(lián)系。在API屬性調(diào)用時(shí)所執(zhí)行的UIMS中的一個(gè)例程將實(shí)際上更新樹形圖364。
參考圖5,也有可能由于單個(gè)的屬性改變而導(dǎo)致產(chǎn)生兩個(gè)畫圖區(qū)。例如,如果圖形對象的位置屬性有所改變,即圖形對象由一處移到另一處,則將會(huì)產(chǎn)生在其老位置上包圍該對象的第一長方形和在其新位置上包圍該對象的第二長方形,而與這兩個(gè)圖形相關(guān)的數(shù)據(jù)將存放在(圖1的)畫圖區(qū)列表362中。在圖5中,要移動(dòng)時(shí)鐘對象20。在圖5a中,在屏幕10右下角用粗虛線所表明的第一個(gè)長方形OLD在其老位置包圍了時(shí)鐘對象20。屏幕10的中上部分用粗虛線所表示的第二個(gè)長方形NEW則包圍了屏幕,10中的將由在其新位置上的時(shí)鐘對象20所占據(jù)的區(qū)域。這一移動(dòng)是由從老位置OLD到新位置NEW的粗虛線箭頭所表示的。所有這些粗虛線都僅用作說明及示意,在顯示設(shè)備100上并不顯示這樣的線條。表示這兩個(gè)長方形的位置和大小的數(shù)據(jù)(OLD和NEW)存放在(圖1的)畫圖區(qū)列表362中。但是,如上所述,這時(shí)顯示器還不進(jìn)行重畫。相反,顯示設(shè)備100繼續(xù)顯示如圖2所示的屏幕10。
再參看圖5,時(shí)鐘對象20不僅移動(dòng)了,而且這時(shí)它出現(xiàn)在菜單30的面上。因此,圖3的樹結(jié)構(gòu)要改變以便使時(shí)鐘節(jié)點(diǎn)220現(xiàn)在成為根節(jié)點(diǎn)210的最右邊的子節(jié)點(diǎn),而菜單節(jié)點(diǎn)230則成為最左邊的節(jié)點(diǎn)。新的樹結(jié)構(gòu)示于圖6中。在圖6中它和圖3的唯一差別是現(xiàn)在菜單節(jié)點(diǎn)230是根節(jié)點(diǎn)210的左邊的子節(jié)點(diǎn)而時(shí)鐘節(jié)點(diǎn)220則成為根節(jié)點(diǎn)210的右邊子節(jié)點(diǎn)。如上所述,這將使時(shí)鐘節(jié)點(diǎn)20在當(dāng)游歷該樹而重畫圖象時(shí)被顯示在菜單節(jié)點(diǎn)30的面上。
圖5b表示如上面所述的通過游歷了圖6所示的樹結(jié)構(gòu)而重畫了OLD和NEW兩個(gè)長方形畫圖區(qū)之后所得到的圖象。首先考慮OLD長方形的重畫。屏幕背景位于OLD長方形之內(nèi),所以它由屏幕對象10的REDRAW方法所重畫(即調(diào)用低級別圖形例程),如上面說明的那樣。然后重畫信息送給菜單對象30。在菜單對象30中,菜單對象30的環(huán)繞框?qū)ο?1和CANCEL按鈕39的環(huán)繞框?qū)ο?4兩者都位于OLD長方形之內(nèi),所以要用它們的REDRAW方法重畫它們。由于菜單對象30的其它圖形對象不在OLD長方形之內(nèi),所以沒有其它圖形對象需要重畫。
現(xiàn)在來考慮NEW長方形的重畫。屏幕背景位于NEW長方形之內(nèi),所以它由屏幕對象10的REDRAW方法所重畫。然后給菜單對象30送去一個(gè)重畫信息。菜單對象30的環(huán)繞框?qū)ο?1、選擇對象35的環(huán)繞框?qū)ο?2、和第一選擇項(xiàng)對象54的文字對象44都位于NEW長方形之內(nèi),所以它們都要分別由他們的REDRAW方法所重畫。然后對時(shí)鐘對象20送去一個(gè)重畫信息。時(shí)鐘對象20中的每個(gè)圖形對象都位于NEW長方形之內(nèi),所以它們也都由他們相應(yīng)的REDRAW方法所重畫。由于時(shí)鐘對象20的圖形對象是最后畫的,所以它們畫在其它圖形對象(屏幕對象10和菜單對象30)的面上,使得時(shí)鐘對象20顯得是覆蓋在它們上面的。由于時(shí)鐘對象20的位置屬性的改變以及隨后的OLD和NEW長方形的異步的重畫而得到的圖象示于圖5c中。
再參看圖1,在塊304中,應(yīng)用程序可能請求對單獨(dú)一個(gè)畫圖區(qū)進(jìn)行重畫。為了響應(yīng)這樣的請求,在UIMS的塊346中,從畫圖區(qū)列表362中檢索下一個(gè)畫圖區(qū);在塊348中,如同上面所說明的那樣通過游歷塊364的樹結(jié)構(gòu)而重畫該畫圖區(qū)。當(dāng)重畫完成時(shí),UIMS就回到應(yīng)用程序,后者可以作進(jìn)一步的處理,如從塊304往下延伸的箭頭所示。
另外的可能是,應(yīng)用程序可能請求把整個(gè)圖象重畫。為了響應(yīng)這一請求,在UIMS的塊346中,從畫圖區(qū)列表362中檢索下一個(gè)畫圖區(qū),在塊348中,如上面所說明的那樣通過游歷塊364的樹結(jié)構(gòu)而重畫該畫圖區(qū)。然后進(jìn)行一次檢查以確定在畫圖區(qū)列表362中是否還剩下別的畫圖區(qū)。如果還有,則由塊346和348所表示的過程被重復(fù),這在圖1中由從塊348返回塊346的以虛線畫出的箭頭所表示。只有在畫圖區(qū)列表362中所有的畫圖區(qū)都已重畫完時(shí)UIMS才返回到應(yīng)用程序,后者然后執(zhí)行進(jìn)一步的處理,如從塊304往下延伸的箭頭所示。
通過允許應(yīng)用程序在響應(yīng)圖形對象的屬性改變時(shí)控制屏幕重畫的時(shí)序,應(yīng)用程序員可以優(yōu)化應(yīng)用程序的可覺察的響應(yīng)時(shí)間。例如,如果應(yīng)用程序的可覺察的響應(yīng)要通過從用戶處接收并處理輸入而得到優(yōu)化,那么應(yīng)用程序可以采取循環(huán)的形式,它重復(fù)地從用戶接收和處理輸入,然后更新屏幕上的一個(gè)畫圖區(qū)。如果應(yīng)用程序的可覺察的響應(yīng)要求盡快地通過維護(hù)屏幕而得到優(yōu)化,那么應(yīng)用程序所采用的形式應(yīng)是在圖形對象的屬性有任何改變后總是請求對屏幕進(jìn)行完全更新。簡而言之,通過使屏幕更新和圖形對象的屬性改變異步地進(jìn)行,并且使屏幕的更新由應(yīng)用程序來進(jìn)行控制,同時(shí)讓應(yīng)用程序可以選擇只更新屏幕的一部分或全部更新,則應(yīng)用程序員就可以寫出這樣的應(yīng)用程序以便使該應(yīng)用程序能優(yōu)化可察覺的響應(yīng)。
權(quán)利要求
1.在執(zhí)行顯示多個(gè)圖形對象的應(yīng)用程序的處理系統(tǒng)中,一種在顯示設(shè)備上異步地維持圖象的方法,其特征在于下列各步從應(yīng)用程序接收一個(gè)畫圖請求(302);響應(yīng)所收到的畫圖請求來確定圖象的一個(gè)畫圖區(qū)(342);把畫圖區(qū)插入到畫圖區(qū)列表中(344);從應(yīng)用程序接收一個(gè)圖象更新請求(304);從該列表檢索畫圖區(qū)(346);和如果圖形對象的任何部分位于該檢索的畫圖區(qū)之內(nèi),則請求讓相關(guān)的圖形對象被重畫(348)。
2.如權(quán)利要求1的方法,其特征在于,把畫圖區(qū)插入到畫圖區(qū)列表的該步驟包括下列各步驟把該畫圖區(qū)和畫圖區(qū)列表中的各有關(guān)畫圖區(qū)相比較;根據(jù)該比較的結(jié)果優(yōu)化畫圖區(qū)列表。
3.如權(quán)利要求2的方法,其特征在于該比較步驟包括確定新插入的畫圖區(qū)是否完全位于畫圖區(qū)列表中的另一個(gè)畫圖區(qū)內(nèi)的步驟;和該優(yōu)化步驟包括刪除新插入的畫圖區(qū)的步驟。
4.如權(quán)利要求2的方法,其特征在于該比較步驟包括確定新插入的畫圖區(qū)是否完全包圍畫圖區(qū)列表中的另外一個(gè)畫圖區(qū)的步驟;該優(yōu)化步驟包括刪除新插入的畫圖區(qū)的步驟。
5.如權(quán)利要求1的方法,其特征在于該接收畫圖請求步驟包括接收在圖象上畫出圖形對象的請求的步驟;和該確定畫圖區(qū)的步驟包括確定一個(gè)長方形的位置和大小的步驟,這個(gè)長方形將包圍一個(gè)圖象區(qū)域,所述圖形對象就畫在這個(gè)區(qū)域內(nèi)。
6.如權(quán)利要求5的方法,其特征在于,該插入畫圖區(qū)的步驟包括把長方形的位置和大小插入到畫圖區(qū)列表中的步驟。
7.如權(quán)利要求1的方法,其特征在于該接收畫圖請求的步驟包括接收使圖形對象在圖象上移動(dòng)的請求的步驟;和該確定畫圖區(qū)的步驟包括下列各步驟確定第一長方形的位置和大小,這個(gè)長方形將包圍該圖形對象原來顯示的圖象區(qū)域;和確定第二長方形的位置和大小,這個(gè)長方形將包圍該圖形對象將要顯示的圖象區(qū)域。
8.如權(quán)利要求7的方法,其特征在于,該插入畫圖區(qū)的步驟包括把第一和第二長方形的相應(yīng)的位置和大小插入到畫圖區(qū)列表中的步驟。
9.如權(quán)利要求1的方法,其進(jìn)一步的特征在于以先進(jìn)先出的列表來維護(hù)畫圖區(qū)列表的步驟。
10.如權(quán)利要求1的方法,其進(jìn)一步的特征在于,包括使用優(yōu)先級方式來維護(hù)畫圖區(qū)列表的步驟。
11.如權(quán)利要求1的方法,其進(jìn)一步的特征包括下列步驟維護(hù)有多個(gè)節(jié)點(diǎn)的樹結(jié)構(gòu),其中每個(gè)節(jié)點(diǎn)對應(yīng)于多個(gè)圖形對象中的一個(gè)相應(yīng)的對象,其中該請求使該相應(yīng)的圖形對象被重畫的步驟包括下列步驟游歷樹結(jié)構(gòu)的每一節(jié)點(diǎn);和如果圖形對象的任何部分位于檢索的畫圖區(qū)之內(nèi),則請求使與當(dāng)前被游歷的樹結(jié)構(gòu)中的節(jié)點(diǎn)相對應(yīng)的圖形對象被重畫。
12.如權(quán)利要求11的方法,其特征在于,所述請求使與當(dāng)前被游歷的樹結(jié)構(gòu)中的節(jié)點(diǎn)相對應(yīng)的圖形對象被重畫的步驟包括下列各步驟確定與當(dāng)前被游歷的節(jié)點(diǎn)相對應(yīng)的圖形對象的任何部分是否位于被檢索的畫圖區(qū)內(nèi);如果有任何部分位于被檢索的畫圖區(qū)內(nèi),則重畫該圖形對象;和向父代節(jié)點(diǎn)送回一個(gè)表示重畫已完成的信息。
13.如權(quán)利要求11的方法,其特征在于,對樹結(jié)構(gòu)的每個(gè)節(jié)點(diǎn)的游歷包括下列各步驟從根節(jié)點(diǎn)開始;和遞歸地游歷各子節(jié)點(diǎn),其順序?yàn)閺淖钭筮叺淖庸?jié)點(diǎn)到最右邊的子節(jié)點(diǎn)。
14.如權(quán)利要求13的方法,其特征在于,所述請求使對應(yīng)于被游歷的樹結(jié)構(gòu)的節(jié)點(diǎn)的圖形對象被重畫的步驟包括下列各步驟確定對應(yīng)于當(dāng)前被游歷的節(jié)點(diǎn)的圖形對象是否有任何部分位于被檢索的畫圖區(qū)內(nèi);如果某些部分位于被檢索的畫圖區(qū)內(nèi),則重畫該圖形對象;如果當(dāng)前被游歷的節(jié)點(diǎn)具有子節(jié)點(diǎn),按從最左邊的子節(jié)點(diǎn)到最右邊的子節(jié)點(diǎn)的順序游歷各子節(jié)點(diǎn);和向父代節(jié)點(diǎn)送回一個(gè)表示重畫已完成的信息。
15.如權(quán)利要求14的方法,其特征在于,游歷各子節(jié)點(diǎn)的步驟還包括以下各步驟游歷子節(jié)點(diǎn);和等待從子節(jié)點(diǎn)返回的表明重畫已完成的信息。
16.如權(quán)利要求1的方法,其特征在于所述接收屏幕更新請求的步驟包括接收一個(gè)使整個(gè)圖象進(jìn)行更新的請求的步驟;和該方法還包括響應(yīng)于被接收完整的圖象更新的請求而重復(fù)檢索和請求步驟的步驟。
全文摘要
一種在顯示設(shè)備上異步地維護(hù)一個(gè)圖像的方法,它包括下列各步。首先從應(yīng)用程序接收一個(gè)畫圖請求(302)。然后根據(jù)接收的畫圖請求確定一個(gè)畫圖區(qū)(342)并把此畫圖區(qū)插入到畫圖區(qū)列表中(344)。然后從應(yīng)用程序接收一個(gè)屏幕更新請求。根據(jù)這一接收到的屏幕更新請求,從列表檢索一個(gè)畫圖區(qū)(346),如果圖形對象的任何部分位于檢索的畫圖區(qū)之內(nèi),則所有圖形對象都被重畫(348)。
文檔編號G06T11/80GK1121602SQ9510765
公開日1996年5月1日 申請日期1995年6月27日 優(yōu)先權(quán)日1994年6月28日
發(fā)明者A·M·德爾皮什 申請人:湯姆森消費(fèi)電子有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1
乐清市| 防城港市| 乌拉特前旗| 宝坻区| 康乐县| 北碚区| 莱西市| 峨边| 慈利县| 洛扎县| 迭部县| 泸州市| 南雄市| 金山区| 永德县| 石阡县| 新密市| 天水市| 贺州市| 常熟市| 民丰县| 巩义市| 枣庄市| 景德镇市| 拜城县| 澳门| 银川市| 嘉鱼县| 衡山县| 荆州市| 徐闻县| 宜黄县| 崇礼县| 浪卡子县| 灵川县| 塘沽区| 象山县| 东海县| 吉水县| 吉安市| 买车|