具体实施方式
在下面各种实施例的说明中,对附图进行参考,它构成说明的一部分,并且在其中作为说明示出可实践本发明的各种实施例。要理解,可使用其它实施例,并且可在不脱离本发明范围和精神的情况下作出结构和功能的修改。
本发明提供一种桌面窗口管理器(DWM),它使用桌面合成作为其优选的呈现模型。本发明的桌面窗口管理器在这里称为合成桌面窗口管理器(CDWM)。CDWM与合成系统一起,称为统一合成引擎(UCE),提供3D图形和动画、阴影、透明性、高级灯光技术和其它丰富的桌面上的视觉特征。因为系统保留了足够的状态信息以在需要时呈现每个窗口,这里使用的合成呈现模型固有地消除了在呈现时的无效步骤,且最小化或者消除了发送绘画和其它通知消息的需求。
示例性操作环境
图1示出了在其中可实现本发明的合适的计算系统环境100的例子。计算系统环境100只是合适的计算环境的一个例子,而非旨在建议任何对本发明的使用或功能范围的限制。计算环境100既不应解释为具有对示例性操作环境100中所示的组件的任意之一或组合的任何依赖性和要求。
本发明可用于众多其它通用或专用计算系统环境或配置。可适合于本发明使用的众所周知的计算系统、环境和/或配置的例子包括,但不限于,个人计算机;服务器计算机;便携式和手持设备如个人数字助理(PDA);写字板PC或膝上型PC;多处理器系统;基于微处理机系统;机顶盒;可编程消费电子产品;网络PC;小型计算机;大型计算机;包括任何上述系统或设备的分布式计算环境;等等。
本发明可在由计算机执行的计算机可执行指令如程序模块的一般环境中描述。通常,程序模块包括例程、程序、对象、组件、数据结构等,它们完成特定任务或实现特定抽象数据类型。本发明还可在分布式计算环境中实施,其中任务可由通过通信网络连接的远程处理设备完成。在分布式计算环境中,程序模块可位于本地或远程两者的计算机存储介质中,包括存储器存储设备。
参考图1,实现本发明的示例性系统包括计算机110形式中的通用计算设备。计算机110的组件可包括,但不限于,处理单元120、系统存储器130和连接包括系统存储器在内的各种系统组件到处理单元120的系统总线121。系统总线121可以是任何若干类型的总线结构,包括存储器总线或存储器控制器、外围设备总线和使用任意各种总线结构的局部总线。作为示例,而非限制,这种结构包括工业标准结构(ISA)总线、微通道结构(MCA)总线、增强ISA(EISA)总线、视频电子标准协会(VESA)局部总线、加速图形接口(AGP)总线和也称为Mezzanine总线的外围组件互连(PCI)总线。
计算机110一般包括各种计算机可读介质。计算机可读介质可以是任何可由计算机110存取的可用介质,并包括易失性和非易失性、可移动和不可移动的介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以任何用于存储诸如计算机可读指令、数据结构、程序模块或其它数据的信息的方法或技术实现的易失性和非易失性、可移动和不可移动的介质。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储器、磁带盒、磁带、磁盘存储器或其它磁存储设备,或者任何可用来存储所想要的信息并能由计算机110存取的其它介质。通信介质一般包含在诸如载波或其它传输机制的调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据,并包括任意信息传输介质。术语“调制数据信号”意指使得以编码信号中信息的方法设置或改变其一个或多个特征的信号。作为示例,但非限制,通信介质包括有线介质,诸如有线网络或直接线连接,和无线介质,诸如声波、RF、红外线和其它无线介质。上述任意的组合也应包括在计算机可读介质的范围内。
系统存储器130包括易失性和/或非易失性存储器形式的计算机存储介质,诸如只读存储器(ROM)131和随机存取存储器(RAM)132。基本输入/输出系统133(BIOS),包含帮助在计算机110内的元件间传送信息的基本例程,诸如在起动期间,一般存储在ROM 131中。RAM 132一般包含由处理单元120可立即访问和/或现在正操作的数据和/或程序模块。作为示例,而非限制,图1示出操作系统134、应用程序135、其它程序模块136和程序数据137。
计算机110还可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图1示出读写不可移动、非易失性的磁介质的硬盘驱动器141、读写可移动、非易失性的磁盘152的磁盘驱动器151和读写诸如CD ROM或其它光介质的可移动、非易失性的光盘156的光盘驱动器155。其它可用于示例性操作环境的可移动/不可移动、易失性/非易失性计算机存储介质包括,但不限于,磁带盒、闪存卡、数字多功能盘、数字视频带、固态RAM、固态ROM等。硬盘驱动器141一般通过诸如接口140的不可移动存储接口连接到系统总线121,而磁盘驱动器151和光盘驱动器155一般由诸如接口150的可移动存储器接口连接到系统总线121。
以上讨论并示于图1的驱动器及其相关的计算机存储介质为计算机110提供了计算机可读指令、数据结构、程序模块和其它数据的存储。在图1中,例如,硬盘驱动器141被示为存储操作系统144、应用程序145、其它程序模块146和程序数据147。注意这些组件可以相同也可以不同于操作系统134、应用程序135、其它程序模块136和程序数据137。操作系统144、应用程序145、其它程序模块146和程序数据147在这里给出不同数字以至少示出它们是不同的拷贝。用户可通过诸如键盘162和通常称为鼠标、轨迹球或触摸板的指点设备161的输入设备将命令和信息输入到计算机110中。其它输入设备(未示出)可包括游戏操纵杆、游戏垫、卫星天线、扫描仪等。这些和其它输入设备常常通过耦合到系统总线的用户输入接口160连接到处理单元120上,但也可通过其它接口和总线结构连接,诸如并行端口、游戏端口或通用串行总线(USB)来连接。监视器184或其它类型的显示设备也通过诸如视频接口183的接口连接到系统总线121上。计算机110也可包括数字化仪185,结合监示器184使用以允许用户使用输入笔输入设备186提供输入。除监示器之外,计算机还可包括其它外围输出设备,诸如扬声器189和打印机188,它们可通过输出外围设备接口187连接。
计算机110可运行在使用逻辑连接到一或多台诸如远程计算机180的远程计算机上的网络化环境中。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其它公共网络节点,且一般包括许多或所有上面相对于计算机110所述的元件,尽管只有存储器存储设备181示于图1。绘于图1的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但还可包括其它网络。这样的网络化环境在办公室、企业级计算机网络、内联网和因特网中都很普通。
当在LAN网络环境中使用时,计算机110通过网络接口或适配器170连接到LAN 171上。当在WAN网络环境中使用时,计算机110一般包括调制解调器172或其它在诸如因特网的WAN 173上建立通信的设备。调制解调器172,它可以是内置或外置的,可通过用户输入接口160或其它合适的机制连接到系统总线121上。在网络化环境中,相关于计算机110所述的程序模块或其部分可存储在远程存储器设备中。作为示例,而非限制,图1示出了远程应用程序182,驻留在存储器设备181上。要意识到所示网络连接都是示例性的,并可使用其它在计算机间建立通信连接的装置。
示例性实施例
本发明可使用合成桌面窗口管理器(CDWM)绘制和保存使用合成桌面模型(即,自底至顶的呈现技术)的桌面显示。CDWM可在缓冲器存储区中保存内容用于将来的引用。CDWM通过从底向上绘制桌面,从桌面背景开始并且以逆Z顺序继续通过叠盖窗口来合成桌面。在合成桌面时,CDWM可部分地基于在其上绘制窗口的内容,并且部分地基于其它环境因素(例如,光源、反射性等)来绘制每个窗口。例如,CDWM可使用ARGB格式纹理的alpha信道来提供窗口的透明性,并且可基于虚拟光源选择性地强调窗口内容的诸部分(例如,框架)。
CDWM可作为操作系统134、144的一部分驻留,或者可独立于操作系统驻留,例如驻留在程序模块136、146中。另外,CDWM可依赖于一个低层图形合成子系统(这里称为统一合成引擎(UCE)),在下面并在共同待批的申请序列号(代理人摘要编号50037.201US01)于2003年10月23日提交的题为“Systemand Method for a Unified Composition Engine(用于统一合成引擎的系统和方法)”中进一步描述,为此通过引用将它全部包括在此。在一个示例性实施例中UCE基于或者使用华盛顿州雷蒙德的Microsoft公司的
和
技术。在另一个实施例中可使用其它图形合成子系统,诸如基于加利福尼亚芒廷维尤的Silicon Graphics公司的
图形引擎的X Window平台的变体等等。UCE支持3D图形和动画、透明性、阴影、灯光效果、凹凸贴图、环境贴图和桌面上的其它丰富视觉特征。
图1B例示按照桌面合成平台的示例性实施例的组件体系结构。CDWM(CDWM)190可包括应用编程接口190a,通过它知道合成的应用程序软件191获得CDWM窗口和内容创建和管理服务;子系统编程接口190b,通过它传统窗口图形子系统192发送影响各窗口重定向图形输出的变化的更新通知(在下面更详细地描述窗口图形输出重定向);以及UI对象管理器190c,它保存Z-顺序的储存库用于桌面UI对象如窗口及其相关联的内容。UI对象管理器可与主题管理器193通信以检索资源、对象行为属性和与活动桌面主题相关联的呈现度量标准。
传统图形用户接口子系统192可包括传统窗口管理器192a和传统图形设备接口192b。传统窗口管理器192a为在CDWM出现之前开发的软件应用程序提供无效模型窗口和桌面服务。传统图形设备接口192b提供2D图形服务给传统应用程序以及传统窗口管理器两者。基于无效模型用于呈现桌面的传统图形设备接口缺乏对3D、硬件加速的呈现图元和变换的支持,并且不能原本地在位图拷贝和传送操作中支持每像素alpha信道透明性。传统窗口管理器192a和图形设备接口192b一起继续用于减少希望升级其操作系统而不牺牲运行它们喜爱或重要的使用无效模型的软件应用程序的能力的用户的拥有成本。为了实现将传统应用程序窗口与知道合成的应用程序无缝、并列地集成起来,以强加很少或没有可辨别的最终用户损失的方式,可存在合成过程中传统图形用户接口子系统192的积极参与。确实,感觉到的传统应用程序平台环境最好不改变以便避免包括它们在合成上的稳健性,尽管向桌面呈现传统窗口的基本方式将根本被改变。本发明描述如何通过添加在此描述的特征作为窗口图形输出重定向来实现。
统一合成引擎(UCE)194可提供呈现指令并通过编程接口194a接合从CDWM发出的资源。在宽泛意义上,UCE相对于CDWM的角色与传统图形设备接口192b相对于传统窗口管理器192a相似。UCE编程接口194a为CDWM且最终为应用程序提供抽象接口到各种各样图形服务。在这些UCE中服务是资源管理、多显示情况的封装和远程桌面支持。
在CDWM写操作和呈现操作之间的图形资源争用可由内部资源管理器192b仲裁。对资源更新和呈现服务的请求是由编程接口子组件194a放置在UCE的请求队列194c上的。这些请求可异步地由呈现模块194d以与安装在系统上的显示设备的刷新率一致的时间间隔来处理。因而,UCE 194的呈现模块194d可从队列中取出CDWM请求,在需要时访问和操纵存储在资源管理器194b中的资源,并且装配和传递显示专用呈现指令到3D图形接口195。
将桌面呈现到多个显示要求在刷新率、像素格式支持和在异构显示设备之中的设备坐标映射方面的差异的抽象。
UCE也可负责通过远程桌面配置中网络连接传递图形数据。为了有效遥控一个特定系统的桌面到另一个,资源争用应当被避免,应当制定性能优化且安全性应当是稳健的。这些责任也可依靠UCE。
3D图形接口195可包括低层、立即模式(无状态)图形服务如
等等。3D图形接口的目的是在特定图形硬件配置的特征上提供抽象接口。3D图形接口可为单一显示设备服务;UCE可通过多个设备驱动程序196在多显示系统中多个图形输出设备197之间分析和分发CDWM的呈现指令。
应当注意图1B所示的组件体系结构是示例性实施例的组件体系结构。该图目的是要例示本发明可包括的功能。这些功能可按照平台的性能和所希望的特征集,在除该图中所示的那些以外的或多或少的软件组件之间分布。例如,缺乏主题管理的系统可从系统,有可能是象由CDWM本身所管理的静态资源而不是从单独主题管理器得到所有库存的资源。允许插入式窗口管理器的平台可用插入式窗口管理器接口代替CDWM中的应用编程接口190a,以便抽象合成的UI对象和资源管理的细节。另一种可能的变体可消除子系统编程接口190b,如果不要求传统应用程序兼容性。图1B所示的UCE 194的子组件可断开成分离的过程,折叠到CDWM本身之中或者集成到3D图形接口中。因而,特定组件设计的宽广范围是可能的,每种设计能够实现包括本发明功能的全部范围或子集。
图2例示按照本发明的一个示例性方面的一般方法,用于执行桌面合成。步骤201至205描述使用合成桌面窗口管理器(CDWM)API的知道合成的应用程序的交互,用于创建和管理窗口和窗口内容。步骤207和209描述在传统的无效模型窗口管理器应用程序与CDWM之间的交互,用于合成传统窗口内容。
在步骤201中,合成桌面窗口管理器(CDWM)从知道合成的应用程序接收请求以(1)创建合成窗口和(2)附上内容对象。本发明不限于每窗口单个内容对象;应用程序可以通过CDWM API动态地创建任意数量的内容对象并附到一个窗口(也可以分离并销毁它们),如下进一步所述。内容对象包括指定尺寸的光栅表面和要用作贴图到应用程序或系统定义的网格的漫射纹理的像素格式,连同可选的附件资源如附加的纹理(光照贴图、镜面贴图、凹凸/正常贴图等等)、光照和像素明暗着色器。漫射内容纹理的像素格式可以是由安装在系统上的视频硬件支持的任何可用的格式,但为了当前例示的目的,可以是32位ARGB。当请求这个格式时,应用程序可隐含地知道alpha(A)信道可用于改变内容像素的透明性等级,因而在用最终呈现的源像素调制的桌面背景信息量上提供精细的控制。在步骤203中,CDWM为窗口分配一个状态块,将CDWM实现的内容对象附到它。内容对象分配所请求的资源或者附上由应用程序转送的资源,随后引导这些资源到UCE,以允许在UCE更新请求时随时访问。在步骤205中,应用程序通知CDWM关于窗口或窗口内容的主动提供的改变。这些改变可以影响任何窗口或内容状态,但为了简单,本例描述三个普通更新请求:内容尺寸,窗口定位或缩放,或对内容的漫射纹理的像素的改变。
合成传统窗口的过程开始于桌面合成初始化,其中CDWM 190传递一个请求给传统窗口图形子系统192以将每个传统窗口的图形输出重定向到临时存储单元(步骤207)。步骤207可以更一般地描述为将传统窗口图形子系统放在“合成模式”中,其中每个单独窗口的呈现被重定向到单独的存储缓冲器中。在一个示例性实施例中,传统图形用户接口子系统192将在呈现窗口时涉及的图形指令的输出重定向到与窗口相关联的位图化存储器面。然而,本发明包括保留本地绘制指令和相关参数的能力,并且在为目标显示设备合成下一个视频框架期间在UCE中执行这些指令。这些重定向缓冲器(表面或绘制指令块)可由CDWM或传统窗口管理器192a来管理,但为了例示的目的,表面资源管理被集中在CDWM中。每个重定向缓冲器或者构成或者用于产生漫射内容纹理资源用于窗口。传统窗口管理器192a不需要启用CDWM窗口和内容创建API;用于通知的传统子系统-CDWM通信信道与应用程序接口的不同,并且CDWM从现有传统窗口属性导得合成窗口属性(框架和边风格,标题等)和状态(隐藏/显示,最小化/最大化等)。在步骤209中,传统窗口管理器192a通知CDWM 190关于影响重定向窗口内容纹理的需要视觉更新的任何改变。
在步骤211、219和223中,CDWM 190鉴别出尺寸、位置/缩放和图元层纹理更新请求并相应地行动。在尺寸更新时(步骤211),CDWM首先确定一个框架是否与目标窗口相关联(步骤213)。如果框架与窗口相关联(步骤215),则CDWM基于二或三维范围(由知道合成的应用程序显式地提供的)确定框架图元的适当尺寸和方向,或者基于传统和CDWM窗口度量标准与重定向传统表面的被更新维的组合。当框架尺寸已经确定时,CDWM对框架网格中的顶点的位置信息作出适当的改变,并且将顶点数据缓冲器转送到UCE。UCE将网格更新指令和新的顶点信息放在一个队列上用于异步处理。如果窗口没有框架,则步骤215可被绕过。在有框架或无框架的窗口的情况下,影响内容区域的尺寸改变可使CDWM改变内容网格的尺寸并将适当的网格更新请求和数据排队到UCE(步骤217)。
在位置(包括旋转)或缩放更新时(步骤219),CDWM确定新的变换参数并且将变换资源更新请求连同数据一起排队到UCE用于异步处理(步骤221)。资源至少包括一个四乘四变换矩阵,但可包含附加的数据以支持过滤的变换。
在步骤223中,CDWM接收涉及漫射内容纹理的像素数据的改变的更新请求,即应用程序已经在其窗口内更新了其内容。在步骤225中,CDWM通过将新的像素信息排队到UCE用于异步处理来为请求服务。
那些本领域熟练技术人员将意识到,除图2所示的那些之外,可支持其它更新请求。例如,窗口图标和标题文本的改变也需要相应地重新绘制CDWM管理的与窗口相关联的图标或标题内容对象。窗口输入焦点可在框架的外观中反映,因而在传统窗口的情况下,传统窗口管理器可传递输入焦点改变更新给CDWM,它相应地重新呈现该框架和可能的其它内容。
在步骤227中,UCE处理从CDWM传入的合成和资源更新,并且以与每个参与桌面合成的活动视频图形适配器的视频刷新率同步的时间间隔,重新呈现桌面(或多显示配置中其适当部分)到显示尺寸的支持缓冲器(backing buffer)。这是使用由3D图形引擎(如Microsoft
)提供的立即模式呈现服务来实现的,并进而将桌面传送到主要显示表面。
为了在3D中绘制窗口,CDWM可使用各种组件(包括基内容对象和一或多个子内容对象)来定义窗口骨骼(anatomy)。基内容对象定义窗口框架或边,并且由基几何形状、基范围、基材料属性和基内容页边距组成。基和子内容对象可各自完整地由系统定义和管理,或者在定制内容元素的情况下,可由应用程序管理。下面更详细地讨论内容对象。
图3例示按照本发明一个示例性方面的应用程序窗口。应用程序窗口301可包括各种区域和组件。窗口301的框架或基内容303可主宿子内容,包括按钮305(例如,用于恢复、最大化、最小化、关闭窗口等)、指示图标307、滚动栏309、菜单栏311和窗口标题文本313。主要内容对象区域315可从重定向缓冲器(它从传统窗口和图形用户界面子系统获得)得到,或者可创建或附到标准基内容并且由知道合成的自己的应用程序呈现。那些本领域熟练技术人员将意识到,图3仅是基本窗口元素的例示,并且可另外或替换地使用其它或不同的窗口元素。另外,窗口框架元素可替换地由一个应用程序提供,例如,为应用程序提供不同的外观和感觉。一个例子是应用程序提供滚动条元素作为定制的子内容对象,使得它们显示出应用程序特有的外观和行为。而且,应用可使用CDWM API选择删除或重新配置一个或多个库存框架元素。应用程序不需要限制在单个主内容区域,而这是原有技术中普遍的限制。
CDWM可支持多应用程序创建和呈现的与单个窗口相关联的内容区域。为了给应用程序提供能力以提供更唯一的用户体验,在本发明的一或多个实施例中CDWM以绘制窗口的方式提供灵活性。即,CDWM可通过允许应用程序定义多个定制内容对象来允许应用程序改变窗口的默认骨骼,每个内容对象具有任意形状,代替将每个应用程序限制于单个矩形客户内容区域。
因而,每个CDWM窗口可由基内容对象(即框架)和一个或多个子内容对象的集合组成。每个内容对象可由唯一一组内容属性来定义,并且可以配置为可选地接收键盘和鼠标事件。CDWM将鼠标击中测试点映射为相对于应用程序定义的、内容本地的3D坐标,并且将鼠标事件通知传递给应用程序。内容对象可完全由系统来管理,或者在定制内容元素的情况下,可由应用程序来管理。系统管理的内容对象的例子包括应用程序表示图标、框架按钮(例如,最小化、恢复、关闭)、标题文本和某些菜单栏和滚动条。应用程序管理的内容对象包括这样的内容对象,应用程序向其呈现其主要视觉输出,例如,字处理器的文本,电子表格应用程序的数字格栅,或者照片编辑应用程序的图像。
内容纹理可是由系统管理的位图,或者在定制内容的情况下由应用程序管理。可将内容纹理线性地在单次重复中映射到内容几何形状。纵横比可由内容几何形状确定,并且纹理坐标可在内容几何形状中揭示。内容的放大可由缩放变形(它影响内容纹理到其几何形状的映射)来控制。CDWM可提供默认的交互机制,通过它用户可以调整放大比,如系统提供的菜单选项、滑动块控件和/或鼠标和键盘组合。
在每次重新呈现之前,其漫射纹理为支持每像素alpha格式的内容表面可由系统初始化为零alpha,任凭应用程序(或在库存的内容对象的情况下任凭系统)处理。因此,在底下的基内容对象可在内容表面的未绘画区域中显示。这改进了编程模型和用户体验两者,因为不要求应用程序在呈现前消除内容表面,并且使用户免遭窗口中闪烁和失时效的或未绘画区域。
在某些实施例中,某些内容对象,特别是应用程序要向它们呈现其主要图形输出的那些,可以没有与它们相关联的材料属性,因为不希望让内容与灯光或环境以分散用户的注意力或者干扰用户活动的方式交互。内容对象的视觉外观在这类实施例中可仅由其纹理、几何形状和可能的每顶点或每像素alpha值来确定。
图6例示一个带有如在此所述的动态非标准骨骼的窗口601。窗口601具有非标准形状(即,非矩形)的基框架对象603、非标准形状的(非矩形)位于非标准位置(不是窗口的右上角)的框架按钮对象605、在非标准位置(不是窗口的左上角)的系统提供的指示框架图标对象607和也在非标准位置的(不在框架上部左对齐)的框架窗口标题对象613。在图6中,与窗口相关联的应用程序定义了两个主要内容对象区域615a和615b。主要内容对象区域615a是规则的(即矩形)形状,然而主要内容对象区域615b是不规则的非矩形形状。窗口601也可包括应用程序定义的框架按钮对象617和619在浏览环境中分别提供向后和向前导航控制。
CDWM可呈现应用程序窗口301的基部作为3维(3D)对象。3D网格图元可用于定义窗口对象的形状(基几何形状),主要漫射纹理可被贴图到网格的3D几何形状,并且在呈现过程期间应用程序可任选的材料属性,可包括光照、着色、折射、模糊和包括辅助纹理在内其它特效参数和资源。辅助纹理可用作在本领域中众所周知的图形效果的资源,以便提供“活的”物理地模型化的与光源、光标和桌面环境中其它UI对象的交互。因而,纹理可用作每像素3D正常信息的源(正常/凹凸贴图)、光屏蔽(周围的、漫射的和镜面的光过滤器)、反射源(例如,当在窗口上悬浮时光标的反射)、静态环境贴图等等。
基几何形状的顶点格式可选地包括ARGB格式的32位漫射颜色组件和纹理坐标对{tun,tvn}用于将直到n个纹理贴图到网格几何形状,如上所述。如在本领域中适当建立的,tu和tv的每个整数增量可定义在相应维中纹理的重复。例如,从{0.0,0.0}(纹理左、上)到{1.0,1.0}(纹理右、下)范围的值表示在整个网格上的单次重复,然而{0.0,0.0}到{6.0,4.0}定义在x维中六次重复和在y维中四次重复。
内容范围可定义为一对三维点,它们定义边界范围{xleft,ytop,zfront,xright,ybottom,zback},或者包含基几何形状的最小方框的坐标。这与2D边界窗口矩形{xleft,ytop,xright,ybottom}相似。三元组{xleft-xright,ytop-ybottom,zback-zback}定义内容范围的宽度、高度和深度。范围由系统计算和管理并且表示内容的尺寸和本地位置。
如果窗口对象是可改变尺寸的,则操纵基内容的范围是CDWM用于改变窗口尺寸的方法。为了保留边缘和角轮廓,在可改变尺寸的网格中每个顶点的位置不能简单地缩放到新的范围。为能够对网格改变尺寸精细控制,预定的顶点位置过滤器功能连同可应用的参数可由应用程序在窗口创建时指定,或者由CDWM选择为默认值。顶点改变尺寸过滤器功能的角色是要确定在目标网格中每个顶点当目标网格的边界范围被改变时如何表现。每个过滤器功能应当为每个成员顶点确定在每一维(x,y,z)中移动方向和幅度。
最简单的过滤器功能确定方向(正或负)和幅度(相对于新范围缩放或按等于网格边界框的六个面之一在3D空间中位移)。每个顶点如何在改变尺寸操作中表现可以在每顶点、每维基础上描述,作为与顶点本身相关联的属性,或者可为网格按几何形状术语来定义。后一种方法的例子是一对向量{mxleft,mytop,mzfront,mxright,mybottom,mzback},定义六个定尺寸页边距(sizing margin)平面,每个与网格边界框的一个面相关联,有效地将边界框的容量划分成27个立方子区域。定尺寸页边距值可保持不变,不管网格的尺寸,或者可基于边界框的初始尺寸来计算。在任意网格改变尺寸操作中,在上、左、前立方子区域(以{xleft,ytop,zfront,mxleft,mytop,mzfront}为边界)中出现的顶点按与边界范围的左上前角相同的幅度和方向位移。在最中央立方子区域(以{mxleft,mytop,mzfront,mxright,mybottom,mzback}为边界)中出现的顶点相对于该子区域的新范围缩放。在前、中立方子区域中出现的顶点相对于该子区域在x和y维中缩放,但按与网格的前Z边界平面的相同幅度和相同方向移动。
为帮助理解上述原理,图7例示在2维空间中网格改变尺寸操作的例子。窗口701具有带有角半径的圆角707。如果窗口改变尺寸操作仅缩放窗口所基于的网格,则角半径将与网格一起缩放。然而,如果缩放角半径,则圆角的半径会变得太大或太小并且有损于用户体验并有损于用户界面的使用性能。因而,当改变窗口701的尺寸时,角半径最好不改变。为了防止角半径被缩放,可将网格划分成每维(x,y,z可应用时)三个部分。因而在本例中,窗口被划分成9个象限703a-i。在3D空间中,窗口可被划分成27个区域。每维可均等地划分或者不均等地划分,因而允许均等地确定尺寸的区域或者不均等地确定尺寸的区域。当不均等地确定区域尺寸时,可使由边界框限定的区域尽可能小以包括不应当缩放的材料。
在窗口改变尺寸操作期间,在其中象限在由边界框限定的每维中位移象限,并且在其中象限以区域分隔线705a-d界定的每维中缩放象限。例如,区域703a、703c、703g和703i在X和Y两维中至少一条边上是以边界框为边界,因此在改变窗口尺寸时在区域703a、703c、703g和703i中有网格顶点保持离边界框相同的位移。区域703b和703h在Y(垂直)维中至少一条边上以边界框为边界,但仅以在X(水平)维中的区域分隔线705为边界。因而,在区域703b和703h中的网格顶点将在Y维中保持其位移,但在X维中缩放。区域703d和703f在X(水平)维中至少一条边上以边界框为边界,但仅以在Y(垂直)维中的区域分隔线705为边界。因而,在区域703d和703f中的网格顶点将在X维中保持其位移,但在Y维中缩放。区域703e在X和Y两维中都以分隔线705为边界,因此落在区域703e内的网格顶点将在X和Y两维中都被缩放。那些本领域中熟练技术人员将认识到,这个算法通过包括在前面段落中描述的Z维扩展到3维。
网格改变尺寸过滤器功能的另一个变体可解释手工编写的顶点元数据而不是依赖于全局几何形状结构诸如定尺寸页边距来确定在任何方向中顶点位置是缩放还是位移。这样的功能可用于在网格改变尺寸期间保持复杂表面拓扑如隆起和凹部。网格改变尺寸过滤器功能的另一个变体可允许以线性或非线性方式在每维中移动顶点,带有存储为每顶点元数据的鉴别位和功能系数。这样的功能支持诸如在网格改变尺寸时线性或非线性、局部或普遍的膨胀或塌陷伴生物的效果。
基内容页边距定义了约束子内容的边界。内容页边距可以是以与调整页边距尺寸相同方式定义的三维边界。然而,不像调整页边距尺寸,内容页边距可线性地随窗口缩放而缩放,并且可不影响网格改变尺寸。
局部和桌面-全局资源和参数,如按照抽象材料属性值指定的,结合像素明暗着色器,包括CDWM可用于实现物理地模型化的桌面内容的数据和机制。
高层内容材料属性定义了内容与光照和周围环境交互的方式。复杂材料诸如磨砂玻璃的呈现可使用视频硬件中原本不支持的技术。结果,CDWM使用少量预定义的像素明暗着色器之一实现材料属性。像素是载入显示硬件的小例程,它在显示前基于一组预定义的资源处理像素值,该组资源包括但不限于光源、纹理和网格图元中的顶点,以及参数如变形和度量标准。CDWM可从其预定义的像素明暗着色器集合中选择适当的明暗着色器以呈现一组特殊的对象材料属性,包括周围颜色(亮度和透明性)、漫射颜色(亮度和透明性)、镜面颜色(亮度和透明性)、反射标量、折射率、漫射纹理和凹凸纹理,下面描述它们每一个。桌面全局属性可用于定义全局环境属性,诸如眼睛位置、全局光源、环境贴图等等。在呈现窗口之前,定义这些桌面全局属性的资源和参数可与基窗口材料属性一起被转送到3D图形接口作为活动的像素明暗着色器的参数。
周围颜色模拟从所有方向击中对象表面的灯光。与可应用于任何CDWM管理的UI内容对象的材料属性一样,周围亮度确定接触对象表面的周围光的相对量,并且可使用32位ARGB值来指定周围颜色和透明性。在一个示例性实施例中,周围亮度范围从0.0(零周围光,给出均匀的黑色外观)到1.0(均匀分布在对象上指定颜色的最大强度)。具有白色周围颜色的周围强度的效果允许控制对象的一般亮度。
漫射强度确定在接触对象表面之后在所有方向散开的定向光的数量。光本身或者由一或多个定向光或者由立方光贴图(cubic light map)提供。与可应用于任何CDWM管理的UI内容对象的材料属性一样,漫射颜色可由规定颜色的32位ARGB值来指定,其中alpha分量规定漫射地反射的灯光的透明性。漫射亮度值范围从0.0(没有光被漫射地反射,给对象一个均匀的黑色外观)到1.0(漫射地反射所有光,按照漫射颜色值给对象一个着色的外观)。被照亮的表面随着周围和漫射强度值之和接近1.0,将显得更逼真地被模拟。
镜面强度控制在观察器处多少光从对象的表面直接反射回来,并且镜面颜色可指定为对象ARGB颜色。光源本身可用一或多个定向光或者立体光贴图的形式。与可应用于任何CDWM管理的UI内容对象的材料属性一样,高镜面强度值可用于模拟具有强烈辉亮部分的光亮表面,而低强度值可用于模拟具有微弱或缺少辉亮部分的无光泽表面。颜色的alpha组件确定镜面辉亮部分的透明性。
反射性,像镜面性一样,确定在观察器处从对象的表面直接反射回来的光量。反射与镜面性不同之处在于反射应用于整个环境,而不只是光源。与可应用于任何CDWM管理UI内容对象的材料属性一样,0.0的反射性值在表面中不产生环境的反射,并且1.0的值在表面中产生类似镜子的环境反射。可使用立方环境贴图和鼠标光标的组合来模拟环境。因而,可从窗口表面反射鼠标光标以及环境的静态特征至由反射度标量控制的程度。
每个对象的反射率确定灯光行进通过它时的透射角。可使用斯涅耳(Snell)法则,n1 sinθ1=n2 sinθ2,其中n1和n2是介质1和2的折射率,并且θ1和θ2分别是光相对于表面法线的入射角和透射角。因此,如果介质1表示具有给定折射率1.0(无折射)的桌面环境,且介质2是窗口基对象的介质,则折射角由θobj=sin-1(sinθenv/nobj)确定。已知可模拟的各种介质折射率在下面的表1中示出。
介质 |
折射率 |
真空 |
1.00 |
冰 |
1.31 |
水 |
1.33 |
玻璃 |
通常1.50-1.75 |
钻石 |
2.42 |
表1
一旦确定/计算了折射角,随后就可使用它从背景中选择适当的像素以在对象的可见表面上呈现,之后是与其它材料属性相关联的进一步处理。为了折射的实时呈现的优化可结合菲涅耳(Fresnel)技术,一种那些本领域熟练技术人员所理解的方法。
视觉风格(主题)可用于定义CDWM视觉和行为策略。视觉风格一般指用户可选择的主题,它指定应用于普通用户界面元素的精心制作、手工设计的图形和行为属性。应用程序可选地覆盖这些属性中的一些,而为了在用户界面的一致性其它属性由系统选择性地实施。视觉属性包括普通窗口内容的外观如框架区域(基内容)、非客户按钮和其它应用程序无关元素。行为属性包括窗口和桌面转换动画,用鼠标交互地移动窗口或改变窗口尺寸的方式(例如,抓住、粘上和拉伸和固定),以及其它与应用程序无关的行为。视觉和行为策略可集中在CDWM中而不是让该策略分布遍及软件呈现管道,因而提供更一致的最终用户体验,以及更简单的开发环境。
按照本发明的一个示例性实施例,视觉风格的默认(或定制)纹理可包括alpha等级和/或位图,基于它们修改每个像素。例如,alpha等级可用于修改透明性等级,如本领域中已知的。另外,纹理可包括位图,用它可像素着色客户和/或非客户区或者客户和/或非客户区的一部分。在一个示例性实施例中,例如,位图可给出磨砂玻璃的外观。图5例示用磨砂玻璃框架503呈现的窗口501,其中可指定折射率以在确定来自窗口框架503后面的内容中哪个像素应当出现时模拟玻璃。通过利用图形呈现引擎的高级纹理、光照和3D性能,并且使用适当的位图,CDWM可以用具有磨砂玻璃外观的框架503合成窗口501,磨砂玻璃反射来自3D桌面环境内可选地指定的虚拟光源的灯光,但具有一个不透明的客户内容,使得客户内容的视觉分辨力不减少。
桌面呈现模型(无效对合成)各自具有唯一的模式用于与应用程序交互,使得应用程序的窗口适当地保持在桌面上。例如,在无效模型中,桌面呈现依赖于窗口“剪辑区域”的管理和连续更新。剪辑是用于将呈现限制于窗口的适当区域的过程。当一个窗口部分地被另一个遮盖时,它的剪辑区域相应于被遮盖区域的补。如果在底下的窗口绘画其内容,无论响应于绘画消息还是以主动提供的方式,无效模型DWM保证其剪辑区域应用于输出,因而保证没有绘画会发生在上方的窗口中。如果移动上方的窗口,或者将在底下的窗口带到Z-顺序的上面,则在DWM向所述底下的窗口发送更新任何新暴露内容的绘画消息之前,在底下的窗口的剪辑区域由DWM相应地调整。
无效模型DWM和合成模型DWM因而依赖于不同的信息来绘制桌面。例如,在无效模型DWM中,因为DWM不存储桌面上每个窗口的整个表面的拷贝,所以DWM必须在改变尺寸和重新绘制期间与应用程序通信以刷新内容。同样,应用程序预期不需要刷新其内容除非DWM要求它这么做(当然,除非作为用户输入结果更新内容)。如果应用程序确实需要独立地更新其自己的内容,则它请求DWM无效其自己窗口的一部分,预期从DWM接收相应于无效区域的绘画请求。因为在合成桌面的情况下CDWM保留了足够信息来绘制每个窗口全部,所以CDWM不需要在诸如上面所述的那些事件上给窗口发送绘画消息。这进而避免了无效步骤;应用程序只需要按内部事件所规定的重新绘制其全部或部分。
由于这些基本差异,因此DWM和/或CDWM各自具有一组唯一的API,通过它们应用程序预期与DWM通信以保证窗口内容保持最新。结果,原来为与无效模型DWM一起使用而编程的应用程序,即依赖于绘画消息呈现其内容的应用程序,将不必与合成模型CDWM一起工作。因而,参考图4,CDWM可提供对原来为在无效模型DWM中使用而开发的应用程序的支持。这些应用程序在这里可称为传统应用程序,并且向后兼容的支持在这里可称为传统支持。传统API指用于使用传统应用程序所兼容的无效模型DWM的操作系统的以前版本的API。传统API 192b(图1B)允许应用程序与无效模型DWM(传统DWM)192a通信。传统DWM可使用单独的传统API元素代表应用程序处理各种传统通知到CDWM,传送有关状态信息到CDWM,并且在传统和CDWM坐标空间之间转换用于输入和焦点确定。可修改传统DWM以重定向数据到CDWM,如下所述。
图4例示按照本发明一个示例性方面的窗口合成方法的一部分。步骤401-409表示与传统应用程序窗口相关联的内容的初始呈现,其源呈现表面(或者如果有产生该表面所需的指令则设置)是从传统窗口管理器192a(图1B)获得的。步骤411-419例示由知道合成的应用程序创建的窗口内容的呈现。
在步骤401中,CDWM从传统窗口管理器接收用于主要窗口内容的初始更新通知,作为传统应用程序调用传统API 192b按照设计应用程序所用的无效模型绘制桌面上的窗口的结果。例如,
XP可调用传统API,因此传统DWM 192a绘制由用户输入的文本。在步骤403中,CDWM从主题管理器检索内容的默认网格。在步骤405中,CDWM从传统窗口管理器检索(或产生)重定向表面。这个表面可用作内容的漫射纹理。在步骤407中,CDWM保证只保留所要的传统纹理的区域,因此不呈现包含传统窗口框架、边和/或标题的那些区域。方便地实现这个的一种方式是通过变换网格的纹理贴图坐标,使得只有所要的区域被贴图到网格的x和y边界范围。在步骤409中,CDWM检索内容的默认材料属性。呈现传统内容所需的资源和参数现在还没有收集。
在步骤411中,CDWM从要求呈现与窗口相关联的内容对象所需的应用程序接收信息。内容可任选地伴随有定制网格、定制纹理和/或定制材料属性。定制网格仅在应用程序想要具有现有内容对象的非标准形状时提供。如果所述内容对象是窗口基内容,则定制网格将重新定义窗口的形状。定制纹理和/或定制材料属性仅在应用程序想要给予系统定义的内容对象一个非标准外观(即,不是由活动主题指定的外观)时提供。如果所述内容对象是窗口基内容,则定制纹理和/或材料属性重新定义窗口的外观而不改变其形状。更普通地,应用程序从零开始创建内容对象并在创建时指定其网格(这可从一组预定义的系统网格中选择)、纹理和材料属性(这可从一组预定义的系统材料属性中选择)。
在步骤413中,CDWM确定定制内容网格是否指定,且如果否,则从主题管理器检索默认的网格(步骤403)。在步骤415中,CDWM确定定制纹理是否指定,且如果否,则从主题管理器检索默认的纹理。在步骤417中,CDWM确定定制材料属性是否由应用程序指定,且如果否,则从主题管理器检索一组默认的材料属性。现在已经收集了呈现定制内容所需的资源和属性。
在步骤419中,CDWM通过UCE编程接口根据适当的网格、纹理和材料属性装配呈现指令块以呈现内容。呈现指令块被排队以由UCE执行。指令块由UCE呈现模型在目标设备的未结束的刷新时间间隔期满时执行。
通过提供传统支持,其中固有地集成了CDWM和传统DWM的操作系统具有使用无效DWM(传统DWM 192a)或合成DWM(CDWM 190)呈现桌面的能力。即,除合成模型之外操作系统还支持无效模型DWM,以便提供传统支持。因而,在没有有效执行桌面合成所需的处理器密集计算所必需的视频硬件的系统中(例如,在具有很少视频存储器的系统中,或者在没有3D加速硬件的系统中),CDWM和/或操作系统可允许用户选择应当使用合成还是传统绘制模式。可自动或人工地作出该选择。例如,可通过人工用户控制按照由用户选择的激活的视觉风格(主题)定义的绘制模式来作出选择。选择可替换地或者也可基于节能条件。例如,当便携式设备脱开AC电源并切换到电池电源,则操作系统可实施传统绘制模式,因为视频图形处理单元(GPU)活动较少并因而消耗较少能量。
使用上述方法和系统,操作系统可提供物理地模型化的使用高级3D图形性能的图形用户界面。窗口框架不仅有磨砂玻璃或某些其它复杂材料的外观,而且还有其特性,提供一个模拟的表面外观,它至少具有与可见内容的至少某种扭曲结合起来的某种透明性作为透明性的结果,产生半透明的效果。即,本发明不仅具有使窗口框架或边看上去像磨砂玻璃的能力,而且还能像磨砂玻璃一样表现,因为它在GUI环境中返射内容,包括虚拟光源的光谱辉亮部分,模拟与玻璃相似的折射率,使得在“磨砂玻璃”边后面的内容相应地轻微位移,并且通过一或多个像素着色器应用位图以提供在底下的内容的扭曲。
类似磨砂玻璃或其它玻璃物理地模型化的对象为图形用户界面的用户提供许多优点。例如,玻璃的艺术外观改进了GUI并且提供丰富的用户体验,通过为用户提供一个明亮开放的感觉而使本发明的GUI比作为其它操作系统的GUI的最终用户更想要的。同时,物理地模型化的具有真实或接近真实的玻璃特性的磨砂玻璃还提供有用的优点。
磨砂玻璃外观帮助用户在多窗口环境中理解窗口层顺序。着色、反射和镜面辉亮部分在桌面上创建很强的深度和层次感,并且帮助用户确定桌面上各种窗口的Z顺序。尽管某些已知的系统应用程序一致的透明性到整个窗口,但用户可能不能容易地感觉出在感兴趣的窗口内是什么内容和在窗口后面是什么内容。通过改变这种一致,每像素透明性作为Z-顺序的函数,有可能改善这个问题,但以一种不自然的非直观的方式。相反,通过将一种可调整的模糊算法结合到像素明暗着色器中,并且在呈现窗口框架的处理过程中执行这个明暗着色器,本发明模拟由真实世界的磨砂玻璃的材料不足所引起的光发散行为。这种物理地模型化的背景扭曲允许用户立即区别出背景和前景内容。并且因为效果是累积的,叠盖的磨砂玻璃窗口框架变成从前景到背景逐渐地越来越扭曲。因而,用户可以直观地区分磨砂玻璃窗口框架在多层底下的背景内容。
磨砂玻璃还允许用户加厚边以方便用户与GUI交互,例如,通过使得用户更容易用鼠标抓住窗口边来移动窗口或改变窗口的尺寸,但不遮盖在窗口之下的内容(因为玻璃是透明的或者半透明的)。各种磨砂玻璃效果可用于使用户更容易说出活动与不活动窗口状态的区别。另外,磨砂玻璃使用户更容易读和/或观看屏幕上的内容,因为用户可以在任何给定时间观看更多的屏幕区域(因为磨砂玻璃是半透明或透明的),并且桌面出现较少混乱,因为玻璃是显示屏幕上非突出的元素。
那些本领域的熟练技术人员将意识到,尽管附图绘出磨砂玻璃的特定例子,但本发明不限于此。可通过应用不同的位图和/或不同的像素明暗着色器到外观的呈现来容易地改变磨砂玻璃外观。另外,应用不同的环境变量(例如,不同的光源,影响反射和镜面辉亮部分)或者改变玻璃的视觉物理属性(例如,折射率,反射等),也将影响磨砂玻璃的外观。将意识到,本发明也可用于模拟其它纹理和复合物,例如,金属、塑料、纸、棉和其它自然和合成材料。
尽管已经相关于包括当前实现本发明的较佳模式的特定例子描述了本发明,但那些本领域熟练技术人员将意识到,存在上述系统和技术的众多变更和置换方案。因而,本发明的精神和范围应当按所附权利要求书所述来宽泛地解释。