数字电视接收机及其确定多级窗口剪切关系的方法
技术领域
本发明涉及计算机图形技术领域,尤其是涉及一种数字电视接收机及其确定图形用户界面中多级窗口剪切关系的方法。
背景技术
随着数字电视的日益普及,数字电视接收机的应用与发展越来越快,人们对数字电视接收机的功能与界面要求也越来越高。受制于嵌入式处理器主频较低的限制,目前绝大多数数字电视接收机采用的都是简单图形系统,这种图形系统对于复杂的图形应用往往力不从心,比如多窗口叠加,悬浮窗显示等。
在任何一个多窗口的图形用户界面系统中,必须确保一个窗口中的显示输出不会影响到其它窗口。因此处理窗口之间的互相剪切关系是至关重要的问题。由于任何窗口位置的改变,都会影响到剪切关系的重新计算,因此窗口剪切关系的计算方法,也成为制约。
多窗口系统通常利用Z序来管理窗口之间的互相剪切关系。Z序实际定义了窗口之间的层叠顺序。屏幕上的所有窗口使用通常原点在左上角,X轴水平向右,Y轴垂直向下的基准坐标系。Z序就是相对于一条假想的从屏幕内指向屏幕外的Z轴而言的。窗口在这个Z轴上的值,就确定了其Z序。Z序值大的窗口,覆盖了Z序值小的窗口。
根据窗口在Z序中所处的位置,图形用户界面系统要计算每个窗口和桌面受剪切的区域(桌面可以看成特殊的窗口),即剪切域。窗口的剪切域定义为互不相交的矩形集合。屏幕上没有任何窗口时,桌面的剪切域由一个矩形组成,即屏幕矩形;当屏幕上只有一个窗口时,该窗口的剪切域由包围该窗口的最小矩形组成,而桌面的剪切域是由桌面的矩形被该窗口的分割成的个数尽可能少的矩形组成的集合。当屏幕上有新的窗口出现,将按照上述规则,同时剪切已有的窗口和桌面,从而改变已有窗口和桌面的剪切域。
图形用户系统的底层图形引擎在进行向显示设备的输出时,要根据当前输出的剪切域进行输出的剪切操作,从而保证窗口的绘制输出不会互相影响。因为任何一个窗口的创建、销毁、隐藏、显示均有可能影响其他窗口的剪切域,因此剪切域维护方法的效率是决定图形用户界面效率的关键。
现有的图形用户系统,在每次可能影响剪切域的事件发生--即窗口的创建、销毁、隐藏、显示、切换时,使用的方法是将所有窗口和桌面的剪切域清空,再重新按照Z序依次计算之,该方法实现简单,在桌面计算机的图形用户界面系统中广泛运用,但其效率不高,在计算能力弱而性能要求高的嵌入式系统中无法满足要求。
因此,如果能提出更高效的剪切关系确定方法,则可以在数字电视接收机中提高整个图形用户界面系统的运行效率,减少响应时间。
发明内容
本发明公开一种数字电视接收机及其确定图形用户界面中多级窗口剪切关系的方法, 通过确定多级窗口的剪切域的计算,从而为多级窗口显示时的剪切域的计算提供了解决方案。
为解决本发明的技术问题,本发明公开一种确定多级窗口剪切关系的方法,用于在显示一个窗口时计算该窗口与其他窗口的剪切关系,其包括步骤:
计算该显示窗口的剪切域;
将父窗口的剪切域减去该显示窗口的窗口区域;
对于父窗口的每个控件,如果该控件与该显示窗口相交,则将该控件的剪切域减去该显示窗口的窗口区域;
判断是否存在Z序比该显示窗口的Z序小的其他窗口,如果存在则转入下一步骤;
如果其他窗口与该显示窗口相交,则将该其他窗口的剪切域减去该显示窗口的窗口区域、将该其他窗口的可继承区域减去该显示窗口的窗口区域、将该其他窗口的所有控件的剪切域减去该显示窗口的窗口区域;
对该其他窗口所包含的每一个子窗口,如果该子窗口与该显示窗口相交,则将该子窗口的剪切域减去该显示窗口的窗口区域、将该子窗口的可继承区域减去该显示窗口的窗口区域、将该子窗口的所有控件的剪切域减去该显示窗口的窗口区域。
其中,如果该显示窗口为主窗口,则计算主窗口的剪切域的步骤包括:
将主窗口的窗口区域减去所有悬浮窗的窗口区域,得到主窗口的可继承区域;
将主窗口的剪切域初始化为可继承区域,然后,初始化的剪切域减去被主窗口的所有控件裁剪部分,如果存在子窗口,则进一步减去所有子窗口的窗口区域,得到主窗口的剪切域。
其中,如果该显示窗口为子窗口,则计算子窗口的剪切域的步骤包括:
计算子窗口的可继承区域;
将子窗口的剪切域初始化为可继承区域;
初始化的剪切域减去被子窗口所包含的子窗口、控件的裁剪部分,得到子窗口的剪切域。
其中,所述计算子窗口的可继承区域的步骤包括:
将可继承区域初始化为父窗口的可继承区域;
子窗口与父窗口的客户区求交集得到子窗口的当前窗口区域;
将初始化的可继承区域与当前窗口区域求交集,并减去被所有Z序比该子窗口的Z序大的其他窗口的裁剪部分,获得该子窗口的可继承区域。
其中,如果该显示窗口为控件,则计算该控件的剪切域的步骤包括:
将剪切域初始化为父窗口的可继承区域;
将控件与父窗口的客户区求交集,得到该控件的当前窗口区域;
将初始化的剪切域与该控件的当前窗口区域求交集,减去被父窗口的所有子窗口的裁剪部分,进一步减去被所有Z序比该控件的Z序大的其他控件的裁剪部分。
其中,如果该显示窗口为悬浮窗口,则计算该悬浮窗口的剪切域的步骤包括:
计算该悬浮窗口的可继承区域;
该悬浮窗口的剪切域初始化为该悬浮窗口的可继承区域;
将初始化的剪切域与该悬浮窗口的当前窗口区域求交集,减去被该悬浮窗口的当前窗口区域中的所有子窗口、所有控件的裁剪部分,得到该悬浮窗口的剪切域。
其中,所述计算该悬浮窗口的可继承区域的步骤包括:
如果该悬浮窗口的父窗口为主窗口,则可继承区域初始化为父窗口的整个客户区域,否则继承父窗口的可继承区域;
将该悬浮窗口与父窗口的客户区求交集,获得该悬浮窗口的当前窗口区域;
将初始化的可继承区域与当前窗口区域求交集,并减去被所有Z序比自身大的其他窗口的裁剪区域,得到该悬浮窗口的可继承区域。
一种数字电视接收机,其在窗口显示时使用了所述确定多级窗口剪切关系的方法。
与现有技术相比,本发明具有如下有益效果:
综上,在本发明中,除主窗口外,每个窗口都有且仅有一个父窗口;每个窗口除了剪切域之外,还维护一个可继承区域;计算剪切区域时,子窗口的可继承区域继承父窗口的可继承区域。本发明通过确定多级窗口的剪切域的计算,从而为多级窗口显示时的剪切域的计算提供了解决方案,具有计算过程简单、运行效率高的优点。应用本发明可以实现对数字电视接收机界面的多级窗口支持,为复杂的图形应用提供了极大的便利。
附图说明
图1是数字电视接收机用户界面中各级窗口的拓扑结构示意图;
图2是显示一个窗口时的桌面的剪切域的示意图;
图3A和图3B分别是主窗口的可继承区域和剪切域的示意图;
图4A和图4B分别是子窗口的可继承区域和剪切域的示意图;
图5是控件的可继承区域和剪切域的示意图;
图6A和图6B分别是悬浮窗口的可继承区域和剪切域的示意图;
图7是本发明确定各级窗口剪切域的流程示意图。
具体实施方式
针对机顶盒越来越复杂的图形应用的需求,本方案实现机顶盒界面显示的多级窗口机制,解决多级窗口显示时的剪切域计算问题。
如图1所示,在本发明中,将数字电视接收机的整体用户界面作为一棵树,树中的每个节点对应界面上的一个显示元素,主要包含4类显示元素:主窗口、子窗口、悬浮窗口和控件。其中,主窗口是所有窗口的父窗口;子窗口本身可以包含一组子窗口和控件;悬浮窗口本身可以包含一组子悬浮窗口和控件;控件为显示的基本元素,不再包含子窗口和子控件。
比如,在图1中主窗口是子窗口1到子窗口n、悬浮窗口1到悬浮窗口n的父窗口,子窗口1是子窗口11到子窗口1n的父窗口。
基于窗口树的多级层次结构,提出如下的窗口裁剪机制。主要分为两步完成:计算可继承区域和剪切区域。
可继承区域定义为:窗口内所有显示元素(包括控件、子窗口)可以继承的区域,为一系列矩形的集合。其中,可继承区域大于剪切域
剪切域定义为:窗口的实际可显示区域,表示为若干互不相交的矩形之并集,这些矩形称为剪切矩形。最初,屏幕上没有任何窗口时,桌面的剪切域由一个矩形组成,即屏幕矩形;当屏幕上只有一个窗口时,该窗口的剪切域由一个矩形组成,该矩形即为窗口在屏幕上的矩形,而桌面的剪切域却可能是由多个矩形组成的。如图2所示说明了只有一个窗口时的桌面的剪切域组成。从图中可以看出,此时桌面的剪切域由四个矩形组成,分别是区域A、B、C和D。
一个窗口的可继承区域位于父窗口的客户区内,不能超出。因此,计算一个窗口的可继承区域按如下步骤:
A、将该窗口与父窗口的可继承区域求交集(保证可继承区域必须位于自己的窗口区域内),得到该窗口的理论可继承区域。
B、将该窗口的理论可继承区域减去所有Z序比该窗口的Z序大的其他窗口的窗口区域,得到该窗口的可继承区域。
对于剪切域计算,需要遵循以下3点规则:1、窗口的剪切域初始化为窗口的可继承区域;2、窗口的剪切域被该窗口的所有子窗口裁剪;3、窗口的剪切域被该窗口的所有控件裁剪。
下面分别说明主窗口、悬浮窗、子窗口的剪切域计算方法:
对于主窗口的剪切域的计算,包括步骤:首先,计算主窗口的可继承区域--将主窗口的窗口区域减去所有悬浮窗的窗口区域,得到主窗口的可继承区域,如图3A中的有图案底色的区域部分;其次,剪切域初始化为可继承区域;然后,剪切域被主窗口的所有控件裁剪,如果存在子窗口,剪切域减去所有子窗口的窗口区域,得到主窗口的剪切域,如图3B中的有图案底色的区域部分。
结合图4A和图4B所示,以计算子窗口3(其包含控件31和32,以及子窗口31)的剪切域为例来说明如何计算一个子窗口的剪切域,其包括步骤:
首先,计算子窗口3的可继承区域:A、可继承区域初始化为父窗口的可继承区域;B、子窗口3与父窗口的客户区求交集得到子窗口3的当前窗口区域(保证可继承区域不超出父窗口之外);C、将初始化的可继承区域与当前窗口区域求交集,并减去被所有Z序比子窗口3的Z序大的其他窗口(比如,子窗口1和2)裁剪,获得子窗口3的可继承区域,如图4A所示。
其次,计算子窗口3的剪切域:剪切域初始化为可继承区域;剪切域被子窗口3所包含的子窗口31裁剪;剪切域被子窗口3所包含的控件31和32裁剪,最终得到子窗口3的剪切域,如图4B所示。
如图5所示,对于控件而言,其剪切域计算过程如下:A、剪切域初始化为父窗口的可继承区域。B、将控件与父窗口的客户区相交。C、将剪切域与控件窗口区相交。D、剪切域被父窗口的所有子窗口裁剪。E、剪切域被所有Z序比自身大的其他控件裁剪。
结合图6A所示,悬浮窗口的可继承区域计算如下:A、如果该悬浮窗口的父窗口为主 窗口,则可继承区域初始化为父窗口的整个客户区域,否则继承父窗口的可继承区域;B、将该悬浮窗口与父窗口的客户区取交集(保证显示区域不能超出父窗口之外),获得该悬浮窗口的当前窗口区域;C、将初始化的可继承区域与当前窗口区域求交集,并减去被所有Z序比自身大的其他窗口的裁剪区域,得到该悬浮窗口的可继承区域。
结合图6B所示,悬浮窗口的剪切域的计算过程如下:该悬浮窗口的剪切域初始化为该悬浮窗口的可继承区域;剪切域被该悬浮窗口的当前窗口区域中的所有子窗口裁剪、所有控件裁剪,得到该悬浮窗口的剪切域。
在数字电视接收机的图形系统中,由于显示某个窗口时可能会掩盖到其他的窗口,因此需要对受影响的剪切域进行重新计算。基于本发明所提供的窗口剪切域的计算方法,如图7所示,包括如下步骤:
步骤S1、计算该显示窗口的剪切域;
步骤S2、将父窗口的剪切域减去该显示窗口的窗口区域(该显示窗口的窗口区域为该显示窗口与主窗口的客户区域的交集部分);
步骤S3、对于父窗口的每个控件,如果该控件与该显示窗口相交,则将该控件的剪切域减去该显示窗口的窗口区域。
步骤S4、对于Z序比该显示窗口的Z序小的其他窗口,如果其他窗口与该显示窗口相交,则将该其他窗口的剪切域减去该显示窗口的窗口区域、将该其他窗口的可继承区域减去该显示窗口的窗口区域、将该其他窗口的所有控件的剪切域减去该显示窗口的窗口区域。
步骤S5、对该其他窗口所包含的每一个子窗口,如果该子窗口与该显示窗口相交,则将该子窗口的剪切域减去该显示窗口的窗口区域、将该子窗口的可继承区域减去该显示窗口的窗口区域、将该子窗口的所有控件的剪切域减去该显示窗口的窗口区域。
综上,在本发明中,除主窗口外,每个窗口都有且仅有一个父窗口;每个窗口除了剪切域之外,还维护一个可继承区域;计算剪切区域时,子窗口的可继承区域继承父窗口的可继承区域。本发明通过确定多级窗口的剪切域的计算,从而为多级窗口显示时的剪切域的计算提供了解决方案,具有计算过程简单、运行效率高的优点。应用本发明可以实现对数字电视接收机界面的多级窗口支持,为复杂的图形应用提供了极大的便利。