使用多帧缓冲器绘制的合成图像转让专利

申请号 : CN200480035479.7

文献号 : CN1886779B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 迈克尔·J.·帕克特

申请人 : 苹果公司

摘要 :

提供了一个由经典应用程序使用的次级帧缓冲器(720),所述经典应用程序被设计为直接绘制到帧缓冲器。经典应用程序将其窗口绘制到所述次级帧缓冲器,而并非绘制到初级帧缓冲器(716)。一个合成器(706)从所述次级帧缓冲器读取窗口数据,并将其绘制到初级帧缓冲器。所述合成器还读取由其他应用程序写入到后备缓冲器(708)的窗口数据,并将这些数据绘制到所述初级帧缓冲器。由于所述合成器为所有窗口保存可视区域数据,因此所述窗口可以被正确地绘制到所述初级帧缓冲器,无论这些数据是来自后备缓冲窗口还是来自经典应用程序。此外,由于是由所述合成器而非应用程序自身负责将传统窗口绘制到所述帧缓冲器,因此由经典应用程序的优化所导致的经典窗口被不恰当地绘制并覆盖到新形式窗口之上的情况将不会再发生。

权利要求 :

1.一种用于绘制应用程序窗口的系统,包括:

初级帧缓冲器,用于提供输出给显示设备的窗口数据;

经典应用程序,被配置为将与该经典应用程序相关的多个窗口的内容直接绘制到提供输出给显示设备的显示帧缓冲器;

经典帧缓冲器,被配置为从所述经典应用程序接收与该经典应用程序相关的窗口的所绘制的内容;

合成器应用程序,被配置为将与该合成器应用程序相关的多个窗口的内容绘制到后备缓冲器;

多个后备缓冲器,每个后备缓冲器被配置为从合成器应用程序接收窗口的所绘制的内容;

合成器,被配置为:

从所述经典帧缓冲器接收该经典帧缓冲器的内容,包括与经典应用程序相关的每个窗口的几何形状,并为每个窗口确定一个相对于和经典应用程序相关的其它窗口的第一可视区域;

从每个后备缓冲器接收所绘制的内容和存储在后备缓冲器中的窗口的几何形状;

为与经典应用程序相关的每个窗口以及为与合成器应用程序相关的每个窗口确定一个第二可视区域,所述第二可视区域相对于存储在后备缓冲器和经典帧缓冲器中的每个窗口的几何形状被确定;并且向所述初级帧缓冲器输出用于和经典应用程序相关的每个窗口以及和合成器应用程序相关的每个窗口的第二可视区域。

2.根据权利要求1所述的系统,其中所述初级帧缓冲器构成计算机存储设备的一部分。

3.根据权利要求1所述的系统,其中所述初级帧缓冲器构成图形处理单元的一部分。

4.根据权利要求1所述的系统,其中所述经典帧缓冲器构成计算机存储器设备的一部分。

5.根据权利要求1所述的系统,其中所述经典帧缓冲器构成图形处理单元的一部分。

6.根据权利要求1所述的系统,其中所述第二可视区域数据包括由所述系统显示的窗口的列表。

7.根据权利要求6所述的系统,其中所述窗口列表按照从前到后的顺序排列。

8.根据权利要求6所述的系统,其中所述窗口列表按照从上到下的顺序排列。

9.一种用于绘制应用程序窗口的方法,包括:

将经典应用程序窗口内容接收到一个经典帧缓冲器中,所述经典应用程序窗口内容由经典应用程序所绘制,并包括窗口几何形状;

将合成器应用程序窗口内容接收到后备缓冲器中,所述合成器应用程序窗口由合成器应用程序所绘制,并包括窗口几何形状;

根据经典帧缓冲器的内容,为每个经典应用程序窗口确定一个相对于其它经典应用程序窗口的第一可视区域;

根据经典帧缓冲器和每个后备缓冲器的内容确定一个第二可视区域,所述第二可视区域相对于存储在后备缓冲器和经典帧缓冲器中的每个窗口的几何形状被确定;并且向所述初级帧缓冲器输出用于和经典应用程序相关的每个窗口以及和合成器应用程序相关的每个窗口的第二可视区域。

10.根据权利要求9所述的方法,其中所述初级帧缓冲器构成计算机存储设备的一部分。

11.根据权利要求9所述的方法,其中所述初级帧缓冲器构成图形处理单元的一部分。

12.根据权利要求9所述的方法,其中所述经典帧缓冲器构成计算机存储设备的一部分。

13.根据权利要求9所述的方法,其中所述经典帧缓冲器构成图形处理单元的一部分。

14.根据权利要求9所述的方法,还包括:

响应于将新的合成器应用程序窗口几何形状接收到至少一个后备缓冲器中的步骤:根据新的窗口几何形状更新所述第二可视区域数据。

15.根据权利要求14所述的方法,还包括向所述初级帧缓冲器输出更新后的第二可视区域数据。

16.一种用于绘制应用程序窗口的合成器,该合成器包括:第一接收模块,用于接收经典帧缓冲器的内容,包括由经典应用程序所绘制的经典应用程序窗口的几何形状;

第一可视区域确定模块,用于为每个经典应用程序窗口确定一个相对于其它经典应用程序窗口的第一可视区域;

第二接收模块,用于接收后备缓冲器的内容,该内容具有由合成器应用程序所绘制的窗口内容,并包括窗口几何形状;

第二可视区域确定模块,用于为每个经典应用程序窗口以及为每个合成器应用程序窗口确定一个第二可视区域,所述第二可视区域相对于存储在后备缓冲器和经典帧缓冲器中的每个窗口的几何形状被确定;以及输出模块,用于向一个初级帧缓冲器输出用于每个经典应用程序窗口和每个合成器应用程序窗口的第二可视区域。

说明书 :

技术领域

本发明总体上涉及计算机环境下的图像绘制。更具体地说,本发明涉及使用具有图像合成器的多帧缓冲器。

背景技术

支持窗口重叠和窗口放置的视窗系统必须在显示帧缓冲器中保存关于每个窗口中的哪些部分将要被显示的信息。当一个窗口的几何形状——即位置、大小或窗口层叠显示的顺序(从前到后的顺序)——发生改变时,视窗系统必须确定在每一个窗口的可视区域内即将发生的变化,执行必要的操作以更新窗口的可视区域,并刷新显示帧缓冲器中反映窗口的可视区域内发生的变化的内容。
图1示出了向数字显示器或模拟监视器绘制内容的一种常规方法。在帧缓冲存储器106或图像处理单元104中的任意一个可用时,CPU 102或者直接向帧缓冲存储器106(指帧缓冲器)绘制一个对象,或者通过图像处理单元104来绘制一个对象。视频控制器108从帧缓冲器106中读取所述对象,然后将所述对象直接输出到一个数字显示器110,或者输出到一个数/模转换器112中,所述数/模转换器转换输出信号使其能够在模拟监视器114上显示。
图2示出了一个如上述图1所示的帧缓冲器106。在图2中,帧缓冲器106包括两个窗口204、206。例如,窗口204可以是一个文本编辑窗口,而窗口206可以是一个弹出窗口。在所示的情况下,窗口204的一部分被窗口206掩盖而不可见(即被覆盖)。窗口204未被覆盖的部分在本技术领域中称为窗口的“可视区域”(visible region)。在如苹果电脑公司的OS 9、微软公司的Windows Me等传统操作系统中,应用程序将其自身的窗口直接写到帧缓冲器106,应用程序自身负责检查其每一窗口的可视区域,从而确保窗口已被覆盖部分不会被绘制到帧缓冲器中。这种方法(下文称为经典方法)的一个缺点就是应用程序开发人员需要引入非常多行的代码用于检查每一窗口的可视区域。由上述第一个缺点推导出的另一个缺点就是应用程序具有在其他应用程序的窗口之上进行绘制的能力,尽管不希望它们这样做。
绘制窗口的另一种常规方法需要使用合成器。参见图3,每个窗口304、306的拷贝均保存在一个后备缓冲器308、310中。应用程序在后备缓冲器中绘制其自身的窗口,除非窗口内容发生变化,否则这些应用程序将不再负责重新绘制其自身的窗口。合成器312保存与每一窗口的可视区域相关联的数据,并且当所述窗口的可视区域发生变化时,在帧缓冲器302中正确地重绘每个窗口。上述方法使得应用程序开发人员无需追踪可视区域。
图4示出了一种使用如图3所描述的合成器的常规方法。在CPU 402上运行的应用程序将窗口绘制到窗口缓冲器406、408。作为替代,应用程序可将数据传递给GPU 404,由CPU404依次将数据绘制到窗口缓冲器406、408。合成器410从窗口缓冲器406、408中获取这些窗口,并将其绘制在帧缓冲器412中。在一个窗口的可视区域发生变化时,例如当窗口306移到左侧,并覆盖窗口304的更多区域时,合成器仅简单地从窗口缓冲器308中重新提获取窗口304,将正确的可视区域重绘到帧缓冲器中。生成该窗口的应用程序并不参与上述过程。因此,操作执行得更快,并且往往对用户的视觉效果更好。
为了使依赖直接写入帧缓冲器的应用程序与运行在具有合成器的操作系统中的应用程序共存,一些常规的操作系统使用混合图形子系统以适应这两种类型的应用程序。现在参考图5,图5示出了一种包含经典窗口504及合成器窗口506的帧缓冲器的示例。经典窗口504是一个由应用程序通过直接存取帧缓冲器而绘制的窗口,正如前面的图2和图1所描述的。合成器窗口506是一个由合成器在帧缓冲器中绘制的窗口,并由前面图3和图4所描述的方法来创建。
图6示出了一种将合成器环境与经典环境相结合的常规方法。要使用合成器(“合成器应用程序”)来实现的应用程序602将它们的窗口写入到后备缓冲器608。合成器606依次从所述后备缓冲器608中读取数据,并结合其自身拥有的每个窗口的可视区域记录,将窗口适当地绘制在帧缓冲器616中。
如先前所述,通常希望经典应用程序604能够检查其自身的可视窗口区域,并且仅将可视的区域绘制到帧缓冲器616。一种典型的方法是通过系统调用,如“VisRegion”,它向进行调用的应用程序及特定窗口返回正确的可视区域。在图6所示的常规的混合系统中,经典应用程序604请求其自身的VisRegion,并且该调用由合成器606处理。由于所述合成器知道其他经典应用程序窗口614和对于合成器友好的应用程序窗口610、612的位置,合成器向经典应用程序604返回关于其可视区域的正确信息。经典应用程序604随后将其窗口正确绘制到帧缓冲器616。
虽然这种混合方法允许经典窗口及合成器窗口在同一操作系统中共存,但这种方法具有严重的缺陷。当在概念上(conceptually)希望使经典应用程序604“精确地(nicely)”请求其可视区域时(例如通过VisRegion调用),多年以来应用程序开发者已发现能使其代码更有效率的捷径。一种普通的捷径就是调用“GetFrontWindow”,在经典环境下,“GetFrontWindow”将返回在所有其他窗口前面的窗口的ID。如果由GetFrontWindow返回的这个ID与经典应用程序604希望绘制的窗口ID相同,那么接下来将绘制整个窗口,而无需检查其可视区域——这是由于该窗口在最前面,因而不会被其他窗口覆盖。正如本领域的技术人员可以理解的,在如图6所示的应用中,这种方法可能会带来灾难性的后果。这里经典窗口614是屏幕上唯一的经典窗口,尽管该窗口被由合成器606绘制的窗口610和612所覆盖。因此,如果经典应用程序604调用GetFrontWindow,由于它是所有经典窗口中最靠前的窗口,它将会收到其自身的窗口ID。接下来,如果窗口614自身整个绘制到帧缓冲器616,帧缓冲器616会将窗口614绘制在窗口610和612之上,而这样做的结果是不正确的。
因此,在本技术领域中,仍需要一种方法能够使经典应用程序及合成器应用程序共存于一个操作系统中,而不会出现一个应用程序干扰其他应用程序操作的情况。

发明内容

本发明提供了一个用于由经典(传统)应用程序所使用的次级帧缓冲器。经典应用程序是指被设计成直接绘制到帧缓冲器,而非绘制到例如由合成器所使用的后备缓冲器的应用程序。根据本发明,经典应用程序仅将其窗口绘制到次级帧缓冲器,它们如经典帧缓冲器一样是已知的,而并非绘制到初级帧缓冲器。作为替代,合成器从次级帧缓冲器中读取窗口数据,并将其绘制到初级帧缓冲器。另外,所述合成器还从后备缓冲器读取由较为新式的应用程序所写入的窗口数据,并依次将这些数据绘制到初级帧缓冲器。由于所述合成器为所有窗口保存可视区数据,因此无论是来自较为新式的应用程序的窗口还是来自经典应用程序的窗口都能被正确地绘制到所述初级帧缓冲器。另外,由于是由所述的合成器而非应用程序自身负责将传统窗口绘制到所述帧缓冲器,因此,对特定经典应用程序的优化而通常导致的经典窗口不能被正确地绘制到新式窗口之上的有害影响将不会再发生。
最好使用下面两种方法中的任一种实现绘制。对于经典窗口,将其内容直接绘制到次级帧缓冲器而非后备缓冲器,应用程序响应一个重绘消息或者在需要反映正确的窗口内容时重新绘制窗口的可视区域内容。
当需要反映正确的窗口内容时,将要通过后备缓冲器绘制的窗口及合成器使它们的内容通过应用程序不时地被刷新。窗口的完整内容被保存在后备缓冲器中。所述合成器可以与任何应用程序动作无关地从该缓冲器中读取,以绘制由于窗口几何形状变化而要表示出的区域。
为了响应窗口几何形状的变化,或者响应来自已经重新绘制其后备缓冲器中的某些部分的应用程序的明确刷新请求,所述合成器收集所有窗口内与要重新绘制的显示帧缓冲器区域重叠的区域。然后,所述合成器从最前面的窗口到后面的窗口对每个窗口进行检查,从窗口后备缓冲器收集内容,以组装到将被重绘的区域中。在每一窗口处,合成器对所收集的内容进行评估,以判定是否已经为需要重绘的区域积累了所有可能的内容,并且一旦整个区域充满了不透明的像素值,即停止操作。除了不透明像素值之外,所述合成器可以积累并非不透明的像素值。可以使用诸如Porter-Duff SOVER合成方程式等在本技术领域内众所周知的数学运算,将每一个像素处的值累积起来。
在本发明中,合成器将不再忽略经典窗口。相反,如果合成器遍历窗口列表时遇到经典窗口,它将确定经典帧缓存器中包含在初级帧缓冲器中可见的经典窗口内容部分的区域,并从经典帧缓冲器中收集将要组装到要重新绘制的区域内的内容。所述经典帧缓冲器被视为由所有经典窗口共享的共用后备缓冲器。
为了实现本发明,提供了一种用于绘制应用程序窗口的系统,包括:初级帧缓冲器,用于提供输出给显示设备的窗口数据;经典应用程序,被配置为将与该经典应用程序相关的多个窗口的内容直接绘制到提供输出给显示设备的显示帧缓冲器;经典帧缓冲器,被配置为从所述经典应用程序接收与该经典应用程序相关的窗口的所绘制的内容;合成器应用程序,被配置为将与该合成器应用程序相关的多个窗口的内容绘制到后备缓冲器;多个后备缓冲器,每个后备缓冲器被配置为从合成器应用程序接收窗口的所绘制的内容;合成器,被配置为:从所述经典帧缓冲器接收该经典帧缓冲器的内容,包括与经典应用程序相关的每个窗口的几何形状,并为每个窗口确定一个相对于和经典应用程序相关的其它窗口的第一可视区域;从每个后备缓冲器接收所绘制的内容和存储在后备缓冲器中的窗口的几何形状;为与经典应用程序相关的每个窗口以及为与合成器应用程序相关的每个窗口确定一个第二可视区域,所述第二可视区域相对于存储在后备缓冲器和经典帧缓冲器中的每个窗口的几何形状被确定;并且向所述初级帧缓冲器输出用于和经典应用程序相关的每个窗口以及和合成器应用程序相关的每个窗口的第二可视区域。
为了实现本发明,提供了一种用于绘制应用程序窗口的方法,包括:将经典应用程序窗口内容接收到一个经典帧缓冲器中,所述经典应用程序窗口内容由经典应用程序所绘制,并包括窗口几何形状;将合成器应用程序窗口内容接收到后备缓冲器中,所述合成器应用程序窗口由合成器应用程序所绘制,并包括窗口几何形状;根据经典帧缓冲器的内容,为每个经典应用程序窗口确定一个相对于其它经典应用程序窗口的第一可视区域;根据经典帧缓冲器和每个后备缓冲器的内容确定一个第二可视区域,所述第二可视区域相对于存储在后备缓冲器和经典帧缓冲器中的每个窗口的几何形状被确定;并且向所述初级帧缓冲器输出用于和经典应用程序相关的每个窗口以及和合成器应用程序相关的每个窗口的第二可视区域。
为了实现本发明,提供了一种用于绘制应用程序窗口的合成器,该合成器包括:第一接收模块,用于接收经典帧缓冲器的内容,包括由经典应用程序所绘制的经典应用程序窗口的几何形状;第一可视区域确定模块,用于为每个经典应用程序窗口确定一个相对于其它经典应用程序窗口的第一可视区域;第二接收模块,用于接收后备缓冲器的内容,该内容具有由合成器应用程序所绘制的窗口内容,并包括窗口几何形状;第二可视区域确定模块,用于为每个经典应用程序窗口以及为每个合成器应用程序窗口确定一个第二可视区域,所述第二可视区域相对于存储在后备缓冲器和经典帧缓冲器中的每个窗口的几何形状被确定;以及输出模块,用于向一个初级帧缓冲器输出用于每个经典应用程序窗口和每个合成器应用程序窗口的第二可视区域。

附图说明

图1显示了一种在数字显示器或模拟监视器上绘制内容的常规方法。
图2显示了具有多个窗口的帧缓冲器。
图3显示了合成器在显示窗口中的使用。
图4显示了一种使用合成器的常规方法。
图5显示了包括一个经典窗口和一个合成器窗口的帧缓冲器的实例。
图6显示了将合成器环境和经典环境相结合的一种常规方法。
图7显示了根据本发明一个实施例的框图实例。
图8显示了根据本发明一个实施例的绘制窗口的方法。

具体实施方式

所述附图仅仅出于说明的目的描述了本发明的优选实施例。本领域的技术人员能够很容易从下文的讨论中认识到,可以使用这里所描述的结构和方法的替代方案,而不会背离这里所述的本发明的原理。
图7示出了根据本发明一个实施例的框图实例。图7包括合成器应用程序702,每一个合成器应用程序都具有一个后备缓冲器708;经典应用程序704;合成器706;与经典窗口712、714一起显示的经典帧缓冲器720;以及与经典窗口712、714和合成窗口710一起显示的帧缓冲器716。
经典应用程序704将窗口绘制到经典帧缓冲器720。在一个优选实施例中,经典帧缓冲器720是主存储器中的一个软件帧缓冲器;或者在另一个作为替代的实施例中,经典帧缓冲器720是视频卡中的一个硬件帧缓冲器。在任一种情况下,都将为任一经典应用程序提供该帧缓冲器的地址,通常希望为这些经典应用程序提供“真实的”帧缓冲器地址。
同以前一样,应用程序702被设计为使用合成器类型的系统,将其数据写到后备缓冲器708。所述合成器706读取后备缓冲器708的内容,并在确定每一窗口的正确可视区域后,将这些内容绘制到帧缓冲器716。然而,现在经典应用程序704将其窗口绘制到一个经典帧缓冲器720,而不是初级帧缓冲器。经典应用程序仍然不需要任何关于非经典应用程序窗口的信息以正常工作。响应于来自经典应用程序的请求,合成器706将返回正确的(在经典应用程序的范围域内)可视区域,并且经典应用程序通过惯用的方式将窗口绘制到经典帧缓冲器720。从经典应用程序的角度来看,需要注意的是,它所写入的“真实的”帧缓冲区是该应用程序所知道的唯一帧缓冲区。实际上,在最初为应用程序提供帧缓冲器信息时,返回的是经典帧缓冲器720,而不是帧缓冲器716。通常,帧缓冲器的地址是作为图形状态(graphics state)的一部分而提供的,所述图形状态是在应用程序启动并初始化其绘制代码时创建的,例如在Macintosh环境中调用QDInit()函数。在其他的编程环境中根据需要来提供该信息,作为图像状态创建或窗口创建的一部分。
合成器706保存一个已经显示在系统显示器上的所有窗口列表。在一个实施例中,该列表按照从前到后的顺序排列,而在另一实施例中,按照从上到下的顺序排列,从而使相应的窗口排列,即哪个窗口在顶部,成为已知。当一个窗口的几何形状改变时,合成器706将对该窗口以及该窗口下面的所有窗口执行窗口三步窗口几何形状调整。
首先,确定每个窗口中从可见变为被其他窗口遮盖的区域,并将这些将被遮盖的区域从窗口的可视区域中去除,以防止这些区域被绘制。第二步,更新几何形状发生变化的窗口,以反映其新的几何形状。第三步,确定所有窗口中先前被遮盖但现在变为可见的区域,并且在经典窗口的情况下通过向应用程序发送一个重绘消息,或者通过由所述合成器706从窗口后备缓冲器708组装显示器的适当区域,将这些显现出来的区域重新绘制到初级帧缓冲器。
在本发明中,向每一经典窗口添加了第二组窗口可见性数据。当一个经典窗口的几何形状发生变化时,由合成器执行两遍上述的三步窗口几何形状调整过程,第一遍用于更新将应用于初级帧缓冲器的实际窗口可见性信息,第二遍用于更新仅考虑其他经典窗口时将要绘制到经典帧缓冲器的窗口的可见性。
通过将来自缓冲器708的窗口与经典帧缓冲器720中的窗口合并,以及为每一窗口确定适当的可视窗口区域,合成器706将窗口绘制到帧缓冲器716。由于合成器706负责全部的绘制,因此即使当拥有该窗口的应用程序使用简化操作确定可视区域时,经典窗口也不会再被不正确地绘制在其他窗口之上。例如,正如经典帧缓冲器720中所示,经典窗口712部分地覆盖着经典窗口714。假设生成窗口712的经典应用程序704采用GetFrontWindow调用确定了窗口712实际上就是其范围域内最前面的窗口,并因此简单地将窗口712直接绘制到帧缓冲器720,而不是从合成器706调用VisRegion。然而,由于应用程序704仅仅是绘制到经典帧缓冲器720,这种优化不会产生任何危害。合成器706读取经典帧缓冲器720的内容,将其绘制到帧缓冲器716,并且还将窗口710绘制到其合适的位置,重叠在经典窗口712、714之上。
图8示出了根据本发明一个实施例的绘制窗口的方法。当所述合成器检测802出一个窗口的几何形状变化时,首先重新绘制当前窗口804。如果在几何形状变化之前或之后没有其他的窗口位于被重绘的窗口下方806,则该过程停止。否则,为位于被重绘的窗口下方的窗口确定该窗口中即将被遮盖或显现的区域808。如果该窗口是一个经典窗口810,则更新将要应用于初级帧缓冲器的实际窗口可见性信息812,以及更新经典可视区域列表及窗口列表。如果在步骤810中发生几何形状变化的不是经典窗口,那么仅更新将要应用于初级帧缓冲器的实际可见性信息814。如果有多个窗口将被遮盖或者显现816,则为每个窗口重复执行步骤808至814。接下来,在步骤818中,为所有窗口积累的已改变的区域由合成器写入(flush)到所述初级帧缓冲器。如果一个经典窗口的几何形状发生变化820,则将一个重绘消息发送到具有已改变的窗口的经典应用程序822,然后上述过程结束。
在一个优选实施例中,当经典应用程序704完成其显现的窗口区域的重绘或重画过程后,合成器706将对于初级帧缓冲器716中由经典窗口刷新其内容的部分重新运行。合成器最好能够通过两种方式中的任一种确定由经典应用程序重绘的区域。
在一个实施例中,经典环境通过发送一个ShieldCursor请求来请求所述合成器706隐藏要重新绘制的区域内的鼠标光标。这一请求中包括需要重绘其中的窗口内容、并且不需要显示光标的区域,以避免光标和窗口内容绘制操作之间的冲突。所述合成器706收集光标已经被屏蔽的区域,并且周期性地将该区域刷新到所述帧缓冲器716。
作为替代,在其中运行所有经典应用程序704的经典环境自身可以观察到应用程序的行为,包括监测将要由ShieldCursor调用保护的区域,一旦确定应用程序704已完成了绘制操作,就可以请求将ShieldCursor调用及绘制原语(drawing primitives)所应用的积累区域刷新到帧缓冲器716。当应用程序进行已知的系统调用以等待完成更多工作时,如“WaitNextEvent”,就可以确定这些应用程序已经完成了绘制操作。
因此,本发明使得操作系统环境能够完全支持自身实现窗口管理并将窗口直接绘制到帧缓冲器的经典应用程序以及依赖合成器来管理其可视区域的合成器应用程序。
本发明已经非常详细地对有限数目的实施例进行了描述。本领域的技术人员可以理解,本发明也可以由其他的实施例实现。首先,部件的特定命名、名词术语的大小写、属性特征、数据结构、或任何其他程序设计或结构方面,并不是强制性的或重要的,并且实施本发明或其特征的机制也可以使用不同的名字、格式、或协议。此外,如前所述,系统可以通过结合硬件和软件的结合、或者完金以硬件的形式实现。并且,此处所描述的各种系统组件间特定的功能性划分也仅仅是示例性的,而不是强制的;即由单个系统组件完成的功能也可由多个组件替代完成,而由多个组件完成的功能也可由单个组件替代完成。例如,所述合成器的特定功能等等可以在多个或一个模块中提供。另外,出于易读性和易于理解的考虑,主要通过绘制应用程序窗口描述了本发明。但本领域的技术人员应认识到本发明的应用比计算机图形绘制更为广泛。
上文的描述中某些部分对本发明的算法及符号表达方面的特征进行了说明。这些算法描述和表达是由计算机图形显示领域的技术人员所采用的、能够最有效地向本领域的其他技术人员传达其工作实质内容的手段。这些操作,虽然是从功能上或逻辑上进行的描述,也应被理解为能够通过计算机程序实现。此外,在将这些操作设置当作模块或代码设备提及时,也已方便地证明其不失普遍性。
但是还应当记住的是,所有这些术语及类似的术语均应当与适当的物理量联系起来,仅仅作为应用于这些物理量的方便标注。除非本描述中明显有相反的特别声明,贯穿整个说明书或讨论中所使用的术语,如“处理”或“计算处理(computing)”或“计算(calculating)”或“确定”或“显示”或者类似的术语,指的是计算机系统或类似的电子运算设备的行为或处理,它们操作并转换在计算机系统存储器或寄存器或者其他信息存储、传输或显示设备中用物理(电子)量来代表的数据。
本发明的特定方面包括处理步骤以及在此用算法形式描述的指令。应当注意的是,本发明的处理步骤及指令可以以软件、固件或硬件形式实现,并且当以软件形式体现时可以被下载,从而驻留可通过实时网络操作系统所采用的不同平台上,并由这些平台进行操作。
本发明还涉及用于执行在此所描述的操作的设备。该设备可根据所需的目的专门制造,或者可包括一个通用计算机,该通用计算机由存储在计算机中的计算机程序选择性地启动或重配置。这样的计算机程序可存储在计算机可读存储介质中,例如、但不限于任何类型的盘,包括软盘、光盘、CD-ROM、磁光盘(magnetic-optical disk)、只读存储器(ROM),随机访问存储器(RAM)、EPROM、EEPROM、磁卡或光卡、专用集成电路(ASIC)、或者任何适于存储电子指令的介质类型,并且以上存储介质的每一种都与计算机系统总线相耦合。此外,在本说明书中提及的计算机可包括单一处理器,或者是为增强计算能力而设计使用的多处理器体系结构。
这里所描述的算法和显示并非固有地关联到任何特定的计算机或其他设备。也可使用具有根据上述指导的程序的各种通用系统,或者可以证明便于为执行上述所需方法步骤而构建更专业的设备。对于这些各种各样的系统所需的结构可以从前面的描述中清楚地获得。另外,对本发明的描述并未参照任何特定的编程语言。可以理解,正如在此所描述的,可以使用多种编程语言来实现本发明的指导,并且任何对特定语言的参照均属本发明的公开内容及最佳实施方式的范围内。
最后,还应注意到,说明书中所使用的语言主要是出于可读性和指导性目的而选用的,并非为划界或限定所述发明主题而选用。相应地,本发明的公开内容是为了说明,而非用于限制本发明的范围。