国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

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

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

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