全部博文(584)
分类: LINUX
2010-10-30 15:35:19
一种确定图形用户界面中窗口剪切关系的方法,其特征在于:
1)每次创建新的窗口时,按照其Z序插入到所有窗口列表的合适位置,计算该窗口被按Z序大于它的所有窗口剪切而形成的剪切域,对剪切域这一集合中 的各矩形进行标记,标记方法是:如果该矩形区域其上不被任何窗口遮盖,则标记为0,否则,其上如有N个窗口遮盖,则标记为-N;
2)每次显示已经创建的窗口时,遍历所有Z序小于它的窗口的原有剪切域中各矩形区域,如果某个矩形区域和待显示窗口相交,则计算该矩形区域被待显示 窗口剪裁的剪切域,该下层窗口的剪切域为原有剪切域减去该矩形区域后和该矩形区域剪切域的并集,也按照1)中的叙述标记规则进行标记;
3)每次隐藏已经显示的窗口时,遍历所有Z序小于它的窗口的原有剪切域中各矩形区域,如果某个矩形区域和待显示窗口相交,则将该矩形区域的标记加一,如果标记达到0,则意味着该矩形区域将被显示;
4)每次移动已经显示的窗口时,在移动过程中只重画,不修改剪切域,当移动结束后,将利用3)的步骤隐藏原位置窗口,利用2)的步骤在新位置显示窗口;
5)每次在已显示的窗口中切换,则利用3)的步骤,将该窗口隐藏,修改该窗口的Z序到最顶层,按照2)的步骤显示该窗口,但只需要遍历所有Z序大于该窗口原有Z序的窗口;
6)每次销毁已有的窗口时,如果该窗口已经被显示,则先利用3)的步骤隐藏该窗口,再将该窗口从窗口列表中移除;如果该窗口已经被隐藏,则直接将该窗口从窗口列表中移除。