在显示设备上异步地维护图像的方法

文档序号:6409132阅读:142来源:国知局
专利名称:在显示设备上异步地维护图像的方法
技术领域
本发明涉及一种用于管理执行中的计算机程序和用户之间的接口的系统。具体而言,这样的系统通过由显示在显示屏幕上的图形对象所组成的图象向用户提供数据。这种图象是由计算机程序所提出的任何显示更新请求所异步地维护的。
在下面的讨论中,使用了一个面向对象的范例,其中每个要在显示设备上显示的图形单元是由一个编程对象所表示的,这个对象又可以包含别的对象。每个这样的图形对象可以有属性,并有处理该对象的各种方法,这些方法是响应送到该对象的信息而调用的。例如,图形对象的属性包括它在屏幕上的位置、它的大小和它的颜色。有些图形对象具有该类对象所独有的属性。例如,圆的对象有半径属性,而文字对象有字串属性。
这些属性具有值,值可以由应用程序所改变。例如,对象的颜色属性可以赋值为“蓝”或“红”;位置属性可以被改变以便把对象移到显示屏幕上的另外一个位置;和/或大小属性可以被改变以便使该对象在显示屏幕上改变大小。当图形对象的属性被改变后,显示管理程序就被调用以重画该对象,或许还要重画环绕该对象的其它对象以便体现改变后的属性。例如,如果对象的颜色被应用程序修改后,该对象就被以新的颜色重画,如果对象被移动,则原来的地点要在没有该对象的情况下重画,而在新的地点上则重画该对象。熟悉面向对象系统编程的人会懂得这一概念,并且会使用图形对象来设计和实现这种系统。
大家都知道,在以图形为基础的处理器系统中,处理器要花掉它的处理时间中的大部分来执行图形功能,例如在显示屏幕上画或重画图形对象,因而优化屏幕绘图速度是很重要的。为了得到极限程度的响应时间,现有的面向对象的以图形为基础的处理器系统在一个图形对象的属性有任何变化之后立即自动调用显示管理程序来重画屏幕,但是,发明人认为在执行交互式程序的任何给定的时间里,其它的处理功能在增加可察觉的响应速度方面可能比屏幕画图功能更加重要,例如,响应用户的输入或响应从大容量存储设备或远距发送地点接收到的数据。
本发明可以在音频视频交互(AVI)系统中实施。AVI系统是一种建议的广播系统,它可以让用户和广播的AVI程序进行交互。在这种系统中AVI信号从发射地点广播到远处的AVI接收机。AVI信号包括和标准电视信号相同的音频和视频分量以及一个交互式程序的分量。交互式程序的分量不断地重复表示组成应用程序的代码和数据模块的数据。每个AVI接收机包括一个处理器,它从发送的交互分量中按照需要而提取代码和数据模块,在所提取的应用程序的控制之下产生图形和声音,它们可以覆盖在音频和视频分量上并以交互的方式对用户的输入作出响应。
重要之点在于AVI接收机应该尽可能地降低成本以便在消费者中尽可能多地推广这种接收机。这个限制条件表明在AVI接收机中应该使用廉价但比较慢速的处理器。但是,同样重要的是交互式程序的可察觉的响应速度应该尽可能地快。因此就希望有一种方法,它既能增加交互式程序对用户输入的可察觉的响应速度,同时又保持使用廉价的、相对较慢的处理器的能力。
按照本发明的原理,在显示设备上异步地维护一个图象的方法包括下列各步首先,从应用程序接收一个画图请求。然后,根据收到的画图请求确定一个图象的画图区,把这个画图区插入到画图区列表中。然后从应用程序接收一个屏幕更新请求。根据这个接收到的屏幕更新请求,从列表中检索出画图区,然后如果图形对象的任何部分位于检索出的画图区时所有图形对象被重新画出。
在图中

图1是部分以流程图形式、部分以存储器布置方式的图示,说明含有本发明的处理系统的工作;图2是显示由图形对象组成的图象用的显示设备的示意图;图3是和图2所示的图形对象相对应的树形图;图4是用于优化画图区列表的相应安排的图示;图5是说明按照本发明把一个图形对象从一个位置移到另一位置所引起的在显示设备上的屏幕显示的序列的图示;和图6是对应于图5所示的显示的树形图。
图1是部分以流程形式、部分以存储器布置方式表明含有本发明的处理系统的工作情况图示。图2是说明显示图形对象(10-74)的显示设备100的图示;图3是对应于显示于图2中的图形对象(10-74)的树形图200,这两个图对于理解图1是很有用的。在图1中应用程序的一部分示于左侧,其标题为“应用程序”(APPLN PROG),而用户接口管理系统(UIMS)则示于它靠右面的一边,其标题为“UIMS”。图的最右边标题为“数据”(DATA)的则表明由UIMS维护的数据结构的一部分。
在图2中,显示设备100表明了应用程序中一个屏幕对象10的显示图。屏幕对象10包括一个菜单对象30,它部分地覆盖时钟对象20。菜单对象30包括一个环绕框对象31,一个标题对象33,一个选择对象35,一个OK按钮对象37和一个CANCEL(取消)按钮对象39。标题对象33是一个文字对象,它带有‘字串’属性,该属性的值为“MENU”(菜单)。选择对象35含有一个环绕框对象52以及三个选择项对象54、56和58。选择项对象54还含有一个选择框对象42,以及一个文字对象44,它有一个‘字串’属性,其值为“STEREO”,还含有一个挑选对象46,其‘选中的’属性有一个值为TRUE(真),这是用在选择框对象42中的一个对号(√)来显示的。在选择项对象56中,挑选对象66的‘选中的’属性的值是FALSE(假),这在选择框对象62中以一个空白来显示。文字对象64的‘字串’属性的值是“THX”。在选择项对象58中,文字对象84的‘字串’属性的值是“EXPANDED”(扩充)。在选择项对象54、56和58中的所有其它相对应的对象都是相同的,不再详细说明。OK按钮对象37包括一个环绕框对象72和一个文字对象74,后者的属性是‘字串’其值为“OK”。CANCEL按钮对象39包括一个环绕框对象92和一个文字对象94,后者的属性为‘字串’而其值为“CANCEL”。时钟对象20含有一个环绕框对象22、一个时间文字对象24,后者的属性为‘字串’,它的字符值是当前的时间,例如“23037PM”,还有一个日期文字对象26,它的属性是‘字串’,它的字符值为当前的日期,如“5/18/91”。
在图1中,应用程序APPLN PROG在它编程的过程中要在块302中改变图形对象的属性。为此,以一种已知方式对应用程序员提供一个应用程序接口(API),允许为这种属性改变而提出一个请求。更具体地说,为了改变图形对象的属性,要对API中所规定的能够改变图形对象属性的子例程进行一次系统调用。这个被调用的子例程是UIMS的一部分。
在UIMS的块342中,要确定作为改变属性的结果而需要重画的一个(或多个)画图区。在这个说明的实施例中,包围那个其属性有改变的图形对象的长方形是由UIMS在块342中所确定的。例如,如果一个圆的颜色属性被改变,则包围该圆的一个长方形(或者更准确地说是一个方形)被确定。这个方形画出了由于属性变化而需要重画的图象的那块区域的轮廓。表示这个方形的位置和大小的数据则在块344中被插入到画图区362的列表中。
插入到画图区列表362中的数据以后要被再取回而作进一步的处理,其方式将在下面详细说明。画图区列表362可以用一种已知方式构造成一个先进先出(FIFO)缓冲区。另外的方式也可以使用,可以控制以前插入的画图区的取出顺序,例如优选机制方式。
每当有一个新的画图区插入列表362时,在画图区列表362中的画图区也可以作一次优化,如图1中块345的虚线所示。有两种判据可以用来量度这种优化。第一,在画图区列表中的项目数应按实际需要越少越好。第二,画图列表中任何一个项都不应如此之大以致无节制地耗费处理时间来进行重画。在表示新的画图区的数据插入到画图区列表362中后,该新的画图区要和当前已存放在画图区列表362中的每个画图区进行逐个比较(如图1中的从画图区列表362到块345的虚线箭头所示),画图列表根据这一比较进行优化。比较是根据两个画图区的相对位置进行的。
图4是说明为优化画图区列表而进行的有关安排的图示。图4a表示画图区的两种可能的安排。图4a的左手侧表示两个互不覆盖的第一画图区A和第二画图区B。在这种情况下,不可能进行优化,表明两个画图区X和Y的数据保持在画图区的列表362中。图4a的右手侧表示第三画图区C和第四画图区D,后者完全覆盖了第三画图区C。在这种情况下,仅仅表示一个画图区Z的数据保持在画图区列表362中。当画图区Z被重画时,它将把两个图画区C和D都重画。
图4b的左手侧表明第一画图区A和第二画图区B,后者部分地覆盖画图区A,它的右手侧表明第三画图区C和第四画图区D,后者部分地覆盖了画图区C。当两个画图区部分覆盖时,就产生一个建议的画图区,它完全地环绕两个部分覆盖的画图区。新产生的画图区的面积与这两个重迭的画图区的组合面积进行比较。如果新产生的画图区的面积并不明显地大于两个部分覆盖的画图区面积之和,则表示两个互相覆盖的画图区的数据就从画图区列表362中删去,而表示新产生的画图区的数据则插入到画图区列表362中。否则画图区列表保持不变。
比较新产生的画图区的面积和部分覆盖的画图区的面积之和的一个方法是从新产生的画图区的面积中减去部分覆盖的画图区的面积之和,然后把其差值和一个固定的阈值相比较。例如,显示屏幕的面积可以用象素的数目来表示。在一个优选实施例中,如果差值小于1000个象素,则表示新产生的画图区的数据就取代画图区列表362中表示两个部分覆盖的画图区的数据。另外的办法是,部分覆盖的画图区的面积之和对新产生的画图区的面积之比可以和一个阈值比相比较。例如,如果该比例大于0.9,则表示新产生的画图区的数据就取代画图区列表362中表示两个部分覆盖的画图区的数据。
再参看图4b,画图区W是新产生的,它用以包含部分覆盖的画图区A和B。在这种情况下,新产生的画图区W的面积并不明显地大于部分覆盖的画图区A和B的面积之和。因此,表示两个部分覆盖画图区A和B的数据被从画图区列表362中删掉,而代表画图区W的数据则插到画图区列表362中原来是它们的位置上。但是,新产生的、包括部分覆盖的画图区C和D的画图区X的面积明显地大于部分覆盖的画图区C和D的面积之和。因此,这两项保持在画图区列表362中画图区Y围绕区C,画图区Z则围绕区D。
图4C的左手侧表明第一画图区A和第二画图区B,后者部分地覆盖画图区A。它的右手侧表明第三画图区C。在图4c的左手侧,画图区B以这样的方式覆盖画图区A使得这两个区可以分解成两个不同的画图区W和X。在显示设备上,重画画图区W和X的结果和重画画图区A和B是一样的,但这样重画的面积由于这一分解而被减少了。因此,表示画图区A和B的数据从画图区列表362中被删掉,而由表示画图区W和X的数据所取代。
当一个很大的画图区插入到画图区列表中时,重画这个区所需的时间是很长的。为了在重画这个区时提供灵活性,它被分成若干部分。图4c右手侧的画图区C占据了显示设备面积的近一半。因此,画图区C被分成两个画图区Y和Z。表示画图区Y和Z的数据插入到画图区列表362中以代替表示画图区C的数据。
当产生一个新的画图区并插入到画图区列表362中时,这个新产生的画图区可能覆盖其它画图区,因而必须如上所说明的那样和其它画图区进行比较。当不可能进一步优化时,UIMS就把控制交回给应用程序,它可以继续进行别的处理。在此,屏幕没有进行重画。
再参见图1,当控制从UIMS子例程回到块302的应用程序时,应用程序就执行进一步的处理(这并不一定牵涉到图形对象的属性变化),这在图1中用从块302向下延伸的锯齿状线所表示。在以后的时间里,在块304上,应用程序执行一次对UIMS子例程的调用,这是在API中规定的,这个子例程将更新屏幕。
为了对这个系统调用作出向应,UIMS在块346处从画图区列表362中以上面说明过的一种FIFO(先进先出)方式或别的方式检索以前存放的表示画图区的数据。这种检索的画图区以下面要说明的方式用作边界框。在块348中,对每个当前已显示在屏幕上的图形对象都送去一个信息以便对其本身进行重画。
表示当前已显示的图形对象的数据是存放在数据树结构364中的,每个图形对象都有一个节点。这个树以下面所说的方式游历一次并且给每个图形对象送去重画信息,从而被游历一次。图形对象对这个信息所作出的响应是执行和这个图形对象相关的方法之一REDRAW(重画)。该REDRAW方法首先确定图形对象有没有哪一部分位于边界框之内。如果有,则该图形对象就调用低级别的图形显示例程,它就重画该图形对象。否则就什么也不做。当每个当前显示的图形对象执行了它的REDRAW方法时,则检索的画图区也就已完全重画了。
图3表明数据树结构200,这个树表示图2中在显示设备100上的图象。树200中的每个节点表示一个图形对象。子节点表示包含在父代对象中的图形对象。参看图3,通常称作树的根节点的顶端节点210表示屏幕对象10。如上所述,屏幕对象包括一个时钟对象20和一个菜单对象30。相应地,根节点210有一个第一子节点220表示时钟对象以及一个第二子节点230表示菜单对象30。就时钟节点220的子节点而言,节点222表示环绕框对象22,节点224表示时钟文字对象24,节点226则表示日期文字对象26。
至于菜单节点230的子节点,节点231表示环绕框对象31,节点233表示标题文字对象33,节点235表示选择对象35,节点237表示OK按钮对象37,节点239则表示CANCEL按钮对象39。关于选择节点235的各个子节点,节点252表示环绕框对象52,节点254-25 8分别表示三个选择项对象54-58。为了简化该图,只有从代表选择项节点(254)和按钮节点(37)来的子节点才显示在图3中。所有的选择项节点和两个按钮节点都有相同的子节点结构。关于选择项节点254的各子节点,节点242表示选择框对象42,文字节点244表示文字对象44,挑选节点246表示挑选对象46。至于OK按钮节点237的子节点,节点272表示环绕框对象72和节点274表示文字对象74。
当图象被画出或被重画时,表示该图象的树结构被递归地游历,其顺序为从根节点开始自左向右,并在游历时由每个节点时送出一个重画信息到该节点所表示的对象。对象的REDRAW方法首先确定表示该对象的图形图象是否有任何部分位于边界框之内(从图1的框346)。如果有,则REDRAW方法调用低级别图形例程,它按照该图形对象的属性在显示屏幕上画出由该节点所表示的对象。
例如,为了画一个框对象,就调用低级别图形例程,它将在由框对象的位置属性所规定的位置上画一个框,它的大小由大小属性所规定而颜色则由颜色属性所规定。其它属性,如线的粗细,阴影的浓黑程度等也可能是框对象的一部分,它们将影响环绕图象的描绘。另一个例子是描绘一个文字对象,这时也要调用低级别图形例程,它将在位置属性的规定的位置以大小属性所规定的大小描绘在字串属性中的字符的图象。在文字对象中可能出现的其它属性是字体、文字属性(黑体、斜体等)、背景颜色等等。所有其它的图形对象都按照它们的属性被类似地描绘。
对于含有子节点的节点(即父代节点),REDRAW方法这时就把重画信息送到该节点的所有子节点。首先,重画信息送到最左边的子节点。父代节点的REDRAW方法等待来自该子节点返回的表示重绘已经完成的信息,然后它从左到右继续对同辈的各节点进行处理,直到重画信息已送到所有子节点和从所有子节点收到重画完成信息为止。然后把一个信息送到它自己的父代节点表明重画已完成且该对象的REDRAW方法已结束。所有图形对象的REDRAW方法都可以参照该树结构(图1的)384,这由从树结构364指向块348的箭头所表明。
现在请参考图2所示的图象,它也由图3所示的树结构所表示。在前面最后一个时钟节拍时,即正好是23037PM(下午2点30分37秒),时钟对象20的时间文字对象24的‘字串’属性从“23036PM”改变成“23037PM”。这时,表示围绕着时间文字对象24的长方形(未示出)的数据由UIMS(图1)的块344插入到绘图区列表362中。当表示该长方形的数据由UIMS的块346从画图区列表362中检索时,图象就按以下方式重画。
如上所述,由检索的数据所表示的长方形是用作边界框的。这时(图1的)UIMS的块348送出一个重画信息到由根节点210所表示的屏幕对象10。屏幕对象10的REDRAW方法首先从它的图形属性确定是否有任何部分位于边界框之内。在目前情况下,它没有,所以不调用低级别的图形例程。这时屏幕对象10的REDRAW方法就送出一个重画信息到由根节点210的左边节点220所代表的时钟对象20,并等待表示时钟对象20已经完成其自身的重画的信息。
时钟对象20的REDRAW方法首先送出重画信息到由节点222所表示的环绕框对象22,并等待重画完成信息。环绕框对象22的REDRAW方法首先根据位置和大小属性确定环绕框22是否有环绕框22的任何部分位于边界框以内。在目前情况下,仍然没有,所以一个表明重画已经完成的信息被送回到时钟对象20的REDRAW方法,环绕框对象22的REDRAW方法到此结束。
当时钟对象20的REDRAW方法从环绕框对象22的REDRAW方法收到重画完成信息时,它然后就送出一个重画信息到由节点224所表示的时间文字对象24,并等待重画完成信息。时间文字对象24的REDRAW方法首先确定是否有任何一部分文字位于边界框内。由于时间文字对象24确实位于边界框内,就要调用低级别例程以便按照其属性画出时间文字对象,也就是,表示新时间的字符被画在图象上。然后重画完成信息送回给时钟对象20,REDRAW方法结束。然后时钟对象20送一个重画信息到日期文字对象26,它的工作和时间文字对象24相类似。在目前情况下,不必进行重画,REDRAW方法送回一个重画完成信息给时钟对象20。当时钟对象20收到了从日期文字对象26发出的重画完成信息时,它的REDRAW方法就告完成。它向屏幕对象10送回一个表示此种情况的信息,然后它的REDRAW方法就结束。
当屏幕对象10从时钟对象20收到这个信息时,它送出一个重画信息到菜单对象30。菜单对象30的REDRAW方法则又送出重画信息到环绕框对象31,并等待从环绕框31送回的重画完成信息。环绕框对象31的右下角位于环绕框之内,所以它要进行重画(即低级别图形例程要被调用)。然后送回一个重画完成信息到菜单对象30。当这个重画完成信息被收到时,就依次对标题文字对象33、选择对象35、OK按钮37和CANCEL按钮39重复同样的过程。这些对象的每一个都递归地按上面所详细说明的方式工作,因而就重画了屏幕。在目前情况下,只有CANCEL按钮39的环绕框对象94位于边界框之内并被重画。
如上所述,时钟对象20的重画在菜单对象30重画之前,因此它被菜单对象30所覆盖,并且好像位于显示设备100上的菜单对象30的下面。一般说来,由树中最右边的节点所代表的对象都出现在显示图象的面上,而由最左边的节点所表示的对象则在显示图象的底下。这被称作Z次序。改变属性有可能改变对象的Z次序位置,这时屏幕树就需要作改变。更具体地说,当一个对象放在Z次序的最‘顶上’时,这个对象就被放在父代对象的最右边的同辈节点上,而其它同辈对象则仍保持它们相同的相对位置。参考图1,这由从块302到块364的虚线所表示。不过,这仅仅是一种图解式的联系。在API属性调用时所执行的UIMS中的一个例程将实际上更新树形图364。
参考图5,也有可能由于单个的属性改变而导致产生两个画图区。例如,如果图形对象的位置属性有所改变,即图形对象由一处移到另一处,则将会产生在其老位置上包围该对象的第一长方形和在其新位置上包围该对象的第二长方形,而与这两个图形相关的数据将存放在(图1的)画图区列表362中。在图5中,要移动时钟对象20。在图5a中,在屏幕10右下角用粗虚线所表明的第一个长方形OLD在其老位置包围了时钟对象20。屏幕10的中上部分用粗虚线所表示的第二个长方形NEW则包围了屏幕,10中的将由在其新位置上的时钟对象20所占据的区域。这一移动是由从老位置OLD到新位置NEW的粗虚线箭头所表示的。所有这些粗虚线都仅用作说明及示意,在显示设备100上并不显示这样的线条。表示这两个长方形的位置和大小的数据(OLD和NEW)存放在(图1的)画图区列表362中。但是,如上所述,这时显示器还不进行重画。相反,显示设备100继续显示如图2所示的屏幕10。
再参看图5,时钟对象20不仅移动了,而且这时它出现在菜单30的面上。因此,图3的树结构要改变以便使时钟节点220现在成为根节点210的最右边的子节点,而菜单节点230则成为最左边的节点。新的树结构示于图6中。在图6中它和图3的唯一差别是现在菜单节点230是根节点210的左边的子节点而时钟节点220则成为根节点210的右边子节点。如上所述,这将使时钟节点20在当游历该树而重画图象时被显示在菜单节点30的面上。
图5b表示如上面所述的通过游历了图6所示的树结构而重画了OLD和NEW两个长方形画图区之后所得到的图象。首先考虑OLD长方形的重画。屏幕背景位于OLD长方形之内,所以它由屏幕对象10的REDRAW方法所重画(即调用低级别图形例程),如上面说明的那样。然后重画信息送给菜单对象30。在菜单对象30中,菜单对象30的环绕框对象31和CANCEL按钮39的环绕框对象94两者都位于OLD长方形之内,所以要用它们的REDRAW方法重画它们。由于菜单对象30的其它图形对象不在OLD长方形之内,所以没有其它图形对象需要重画。
现在来考虑NEW长方形的重画。屏幕背景位于NEW长方形之内,所以它由屏幕对象10的REDRAW方法所重画。然后给菜单对象30送去一个重画信息。菜单对象30的环绕框对象31、选择对象35的环绕框对象52、和第一选择项对象54的文字对象44都位于NEW长方形之内,所以它们都要分别由他们的REDRAW方法所重画。然后对时钟对象20送去一个重画信息。时钟对象20中的每个图形对象都位于NEW长方形之内,所以它们也都由他们相应的REDRAW方法所重画。由于时钟对象20的图形对象是最后画的,所以它们画在其它图形对象(屏幕对象10和菜单对象30)的面上,使得时钟对象20显得是覆盖在它们上面的。由于时钟对象20的位置属性的改变以及随后的OLD和NEW长方形的异步的重画而得到的图象示于图5c中。
再参看图1,在块304中,应用程序可能请求对单独一个画图区进行重画。为了响应这样的请求,在UIMS的块346中,从画图区列表362中检索下一个画图区;在块348中,如同上面所说明的那样通过游历块364的树结构而重画该画图区。当重画完成时,UIMS就回到应用程序,后者可以作进一步的处理,如从块304往下延伸的箭头所示。
另外的可能是,应用程序可能请求把整个图象重画。为了响应这一请求,在UIMS的块346中,从画图区列表362中检索下一个画图区,在块348中,如上面所说明的那样通过游历块364的树结构而重画该画图区。然后进行一次检查以确定在画图区列表362中是否还剩下别的画图区。如果还有,则由块346和348所表示的过程被重复,这在图1中由从块348返回块346的以虚线画出的箭头所表示。只有在画图区列表362中所有的画图区都已重画完时UIMS才返回到应用程序,后者然后执行进一步的处理,如从块304往下延伸的箭头所示。
通过允许应用程序在响应图形对象的属性改变时控制屏幕重画的时序,应用程序员可以优化应用程序的可觉察的响应时间。例如,如果应用程序的可觉察的响应要通过从用户处接收并处理输入而得到优化,那么应用程序可以采取循环的形式,它重复地从用户接收和处理输入,然后更新屏幕上的一个画图区。如果应用程序的可觉察的响应要求尽快地通过维护屏幕而得到优化,那么应用程序所采用的形式应是在图形对象的属性有任何改变后总是请求对屏幕进行完全更新。简而言之,通过使屏幕更新和图形对象的属性改变异步地进行,并且使屏幕的更新由应用程序来进行控制,同时让应用程序可以选择只更新屏幕的一部分或全部更新,则应用程序员就可以写出这样的应用程序以便使该应用程序能优化可察觉的响应。
权利要求
1.在执行显示多个图形对象的应用程序的处理系统中,一种在显示设备上异步地维持图象的方法,其特征在于下列各步从应用程序接收一个画图请求(302);响应所收到的画图请求来确定图象的一个画图区(342);把画图区插入到画图区列表中(344);从应用程序接收一个图象更新请求(304);从该列表检索画图区(346);和如果图形对象的任何部分位于该检索的画图区之内,则请求让相关的图形对象被重画(348)。
2.如权利要求1的方法,其特征在于,把画图区插入到画图区列表的该步骤包括下列各步骤把该画图区和画图区列表中的各有关画图区相比较;根据该比较的结果优化画图区列表。
3.如权利要求2的方法,其特征在于该比较步骤包括确定新插入的画图区是否完全位于画图区列表中的另一个画图区内的步骤;和该优化步骤包括删除新插入的画图区的步骤。
4.如权利要求2的方法,其特征在于该比较步骤包括确定新插入的画图区是否完全包围画图区列表中的另外一个画图区的步骤;该优化步骤包括删除新插入的画图区的步骤。
5.如权利要求1的方法,其特征在于该接收画图请求步骤包括接收在图象上画出图形对象的请求的步骤;和该确定画图区的步骤包括确定一个长方形的位置和大小的步骤,这个长方形将包围一个图象区域,所述图形对象就画在这个区域内。
6.如权利要求5的方法,其特征在于,该插入画图区的步骤包括把长方形的位置和大小插入到画图区列表中的步骤。
7.如权利要求1的方法,其特征在于该接收画图请求的步骤包括接收使图形对象在图象上移动的请求的步骤;和该确定画图区的步骤包括下列各步骤确定第一长方形的位置和大小,这个长方形将包围该图形对象原来显示的图象区域;和确定第二长方形的位置和大小,这个长方形将包围该图形对象将要显示的图象区域。
8.如权利要求7的方法,其特征在于,该插入画图区的步骤包括把第一和第二长方形的相应的位置和大小插入到画图区列表中的步骤。
9.如权利要求1的方法,其进一步的特征在于以先进先出的列表来维护画图区列表的步骤。
10.如权利要求1的方法,其进一步的特征在于,包括使用优先级方式来维护画图区列表的步骤。
11.如权利要求1的方法,其进一步的特征包括下列步骤维护有多个节点的树结构,其中每个节点对应于多个图形对象中的一个相应的对象,其中该请求使该相应的图形对象被重画的步骤包括下列步骤游历树结构的每一节点;和如果图形对象的任何部分位于检索的画图区之内,则请求使与当前被游历的树结构中的节点相对应的图形对象被重画。
12.如权利要求11的方法,其特征在于,所述请求使与当前被游历的树结构中的节点相对应的图形对象被重画的步骤包括下列各步骤确定与当前被游历的节点相对应的图形对象的任何部分是否位于被检索的画图区内;如果有任何部分位于被检索的画图区内,则重画该图形对象;和向父代节点送回一个表示重画已完成的信息。
13.如权利要求11的方法,其特征在于,对树结构的每个节点的游历包括下列各步骤从根节点开始;和递归地游历各子节点,其顺序为从最左边的子节点到最右边的子节点。
14.如权利要求13的方法,其特征在于,所述请求使对应于被游历的树结构的节点的图形对象被重画的步骤包括下列各步骤确定对应于当前被游历的节点的图形对象是否有任何部分位于被检索的画图区内;如果某些部分位于被检索的画图区内,则重画该图形对象;如果当前被游历的节点具有子节点,按从最左边的子节点到最右边的子节点的顺序游历各子节点;和向父代节点送回一个表示重画已完成的信息。
15.如权利要求14的方法,其特征在于,游历各子节点的步骤还包括以下各步骤游历子节点;和等待从子节点返回的表明重画已完成的信息。
16.如权利要求1的方法,其特征在于所述接收屏幕更新请求的步骤包括接收一个使整个图象进行更新的请求的步骤;和该方法还包括响应于被接收完整的图象更新的请求而重复检索和请求步骤的步骤。
全文摘要
一种在显示设备上异步地维护一个图像的方法,它包括下列各步。首先从应用程序接收一个画图请求(302)。然后根据接收的画图请求确定一个画图区(342)并把此画图区插入到画图区列表中(344)。然后从应用程序接收一个屏幕更新请求。根据这一接收到的屏幕更新请求,从列表检索一个画图区(346),如果图形对象的任何部分位于检索的画图区之内,则所有图形对象都被重画(348)。
文档编号G06T11/80GK1121602SQ9510765
公开日1996年5月1日 申请日期1995年6月27日 优先权日1994年6月28日
发明者A·M·德尔皮什 申请人:汤姆森消费电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1