具体实施方式
在各个实施例的以下描述中要参阅附图,这些附图形成了说明书的一部分并在其中作为可实践本发明的各个实施例的示图而示出。要理解可利用其它实施例,并可作结构和功能更改而不背离本发明的范围和精神。
本发明提供将桌面合成用作其优选描绘模型的桌面视窗管理器(DWM)。该发明桌面视窗管理器在此被称为合成桌面视窗管理器(CDWM)。合称为统一合成引擎(UCE)的CDWM和合成子系统在桌面上提供了3D图形和动画、阴影、透明度、高级的打光技术、以及其它丰富的视觉特征。在此使用的合成描绘模型从本质上消除了描绘中的无效步骤,并最小化或消除了传送绘制和其它通知消息的需要,因为该系统保留的足够的状态信息用以按需描绘每个视窗。
说明性操作环境
图1示出了本发明可在其中实现的适当的计算系统环境100的示例。该计算系统环境100仅是适当计算环境的一个示例,并非旨在提出对本发明使用或功能性范围作任何限制。计算环境100也不应被解释为对示例性操作环境100中所示的任一组件或其组合有任何依赖性或任何需求。
本发明也可在很多其它通用或专用计算系统环境或配置中使用。适于本发明使用的众所周知的计算系统、环境、和/或配置的示例包括,但不限于,个人计算机、服务器计算机、诸如个人数字助理(PDA)、输入板PC或膝上型PC的手持式或膝上型装置、多处理器系统、基于微处理器的系统、机顶盒、可编程消费品电器、网络PC、小型计算机、大型机、包括任一种以上系统或设备的分布式计算环境等等。
本发明可以计算机可执行指令的一般上下文进行说明,诸如由计算机执行的程序模块。一般而言,程序模块包括执行具体任务或实现具体抽象数据结构的例程、程序、对象、组件、数据结构等等。本发明还可在任务由经通信网络连接的远程处理设备执行的分布式计算环境中实践。在分布式计算环境中,程序模块可置于包括存储器存储设备的本地和远程计算机存储介质中。
参照图1,实现本发明的示例性系统包括以计算机110形式的通用计算设备。计算机110的组件可包括,但不限于,处理单元120、系统存储器130以及把包括系统存储器在内的各种系统组件耦合到处理单元120的系统总线121。系统总线121可能是若干总线结构类型中的任何一种,包括存储器总线或存储器控制器、周围总线、以及使用多种总线体系结构的任一种的局部总线。作为示例,而非限制,这些体系结构包括工业标准体系结构(ISA)总线、微信道体系结构(MCA)总线、扩展ISA(EISA)总线、视频电子标准协会(VESA)局部总线和也称为Mezzanine总线的周围部件互连(PCI)总线。
计算机110通常包括各种计算机可读介质。计算机可读介质可以是能被计算机110访问的任何可用介质,并包括易失性和非易失性介质、可移动和不可移动介质。作为示例,而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以任何方法或技术实现的易失性和非易失性介质、可移动和不可移动介质,用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字化多功能光盘(DVD)或其它光学存储技术、磁带盒、磁带、磁盘存储或其它磁性存储设备、或任何其它可用于存储所需信息并可由计算机110访问的介质。通信介质通常在诸如载波或其它传输机制的已调制数据信号中体现计算机可读指令、数据结构、程序模块、或其它数据,且包括任何信息输送介质。术语“已调制数据信号”意指用在信号中编码信息的方式设置或改变其一个或多个特征的信号。作为示例,而非限制,通信介质包括诸如有线网络或直线连接的有线介质,和诸如声学、射频、红外线和其它无线介质的无线介质。以上任何的组合也应包括在计算机可读介质的范围中。
系统存储器130包括诸如只读存储器(ROM)131和随机存取存储器(RAM)132的易失性和/或非易失性存储器形式的计算机可读介质。包含有助于计算机110如起动时在元件间传送信息的基本例程的基本输入/输出系统(BIOS)133通常存储在ROM 131中。RAM 132通常包含可被处理单元120立即访问和/或当时正被操作的数据和/或程序模块。作为示例,而非限制,图1示出了操作系统134、应用程序135、其它程序模块136、和程序数据137。
计算机110还可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。作为示例,图1图示了读取和写入不可移动、非易失性磁性介质的硬盘驱动器141,读取和写入可移动、非易失性磁盘152的磁盘驱动器151,读取和写入可移动、非易失性光盘156,诸如CD-ROM或其它光学介质的光盘驱动器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还可包括与监视器184一起使用的数字化仪185,以使用户能使用笔输入装置186提供输入。除了监视器,计算机还可包括诸如扬声器189和打印机188的其它周围输出设备,它们通过输出周围接口187相连。
计算机110可以在使用与一台或多台远程计算机,诸如远程计算机180的逻辑连接的网络化环境中运行。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等装置或其它公共网络节点,而且通常包括上述与个人计算机110相关的许多或全部组件,尽管在图1中仅图示了存储器存储设备181。图1中所描绘的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但也可包括其它网络。这样的网络化环境在办公室、企业范围计算机网络、内联网和因特网上是常见的。
当用于LAN网络化环境中时,计算机110通过网络接口或适配器170与局域网171连接。当用于WAN网络化环境中时,计算机110通常包括调制解调器172或其它用于在广域网173,诸如因特网中建立通信的装置。可以是内置式或外置式的调制解调器172与系统总线121通过用户输入接口160或其它适当机制连接。在网络化环境中,与计算机110相关的程序模块或其一部分可存储在远程存储器存储装置中。作为示例,而非限制,图1示出了驻留于存储器存储设备181中的远程应用程序182。应当理解,所示网络连接是示例性的,且其它用于在计算机间建立通信连接的技术也可以使用。
说明性实施例
本发明可使用合成桌面视窗管理器(CDWM)来绘制并维护使用合成桌面模型(即从下到上的描绘方法)的桌面显示。该CDWM可将内容保持在缓存存储器区域中以备后来的引用。该CDWM通过从下到上地绘制桌面、从桌面背景开始并以逆向Z顺序遍历堆叠视窗,来组成桌面。在组成桌面时,CDWM可部分地基于在其顶上绘制视窗的内容以及部分地根据其它环境因素(例如光源、反射属性等)来绘制每个视窗。例如,CDWM可使用ARGB格式纹理的α频道来提供视窗的透明度,并可有选择地基于虚拟光源强调部分视窗内容(例如框架)。
CDWM可驻留为操作系统134、144的一部分,或独立于操作系统例如在其它程序模块136、146中驻留。另外,CDWM可依赖于在此称为统一合成引擎(UCE)的下层图形合成子系统,它将在后面描述,并在共未决的申请序列号(律师案号50037.201US01)于2003年10月23日提交题为“用于图形处理系统中统一合成引擎的系统和方法”(“System and Method for a Unified Composition Engine in aGraphics Processing System”)的申请中描述,在此全文引入作为参考。在一说明性实施例中,UCE基于或使用华盛顿州Redmond微软公司的
和
技术。在另外实施例中,可使用其它图形合成子系统,诸如基于加州MountainViewSilicon Graphic公司的
图形引擎。该UCE使能在桌面上做到3D图形和动画、透明度、阴影、打光效果、颠簸映射、环境映射、以及其它丰富的视觉特征。
图1B示出了根据桌面合成平台一说明性实施例的组件体系结构。合成桌面视窗管理器(CDWM)190可包括应用程序编程接口190a,通过它感知合成应用程序软件191获取CDWM视窗以及内容创建和管理服务;子系统编程接口190b,通过它继承视窗图形子系统192发送影响各个视窗的经重新指向图形输出的变化的更新通知(视窗图形输出重新指向在后面详细描述);以及UI对象管理器190c,它维护用于诸如视窗及其相关联内容的桌面UI对象的Z序库。该UI对象管理器可与主题管理器193通信,以检索与活动桌面主题相关联的资源、对象行为特性、以及描绘度量。
继承特性用户接口子系统192可包括继承视窗管理器192a和继承图形装置接口192b。继承视窗管理器192a为在CDWM出现之前开发的软件应用程序提供无效模型视窗和桌面服务。继承图形装置接口192b向继承应用程序以及继承视窗管理器提供2D图形服务。基于用于描绘桌面的无效模型的继承图形装置接口,可能缺少对3D、硬件加速描绘图元和变换的支持,并可能未固有地支持位图复制和传送操作中每个象素的α频道透明度。总之,继承视窗管理器192a和图形装置接口192b继续进行服务,以降低希望更新其操作系统但不牺牲使用无效模型来运行其喜爱或重要的软件应用程序能力的用户的所有者成本。为了以增加极少甚至察觉不到的终端用户损失的方式来获得继承应用程序视窗与感知合成应用程序视窗的无隙、并行集成,继承图形用户接口子系统192在合成过程中可有积极的参与。实际上,继承应用程序察觉到的平台环境最好不作改变以便避免丧失其在合成桌面上的稳固性,然而向桌面描绘继承视窗的基本方式将有根本的改变。本发明描述如何通过在此描述为视窗图形输出的重新指向的特征添加来达到。
统一合成引擎(UCE)194可通过编程接口194a来服务CDWM发出的描绘指令和结合资源。在广泛意义上,与CDWM相关的UCE角色类似于与继承输出管理器192a相关的继承图形装置接口192b角色。UCE编程接口194a向CDWM以及最终向应用程序提供与广泛图形服务的接口。这些UCE服务包括资源管理、来自多显示情形的封装、以及远程桌面支持。
CDWM写操作和描绘操作之间的图形资源争夺由内部资源管理器194b仲裁。对资源更新和描绘服务的请求由编程接口子组件194a置于UCE请求队列194c上。这些请求可由描绘模块194d在与安装在系统上的显示装置刷新率相一致的间隔上进行异步处理。因而,UCE194的描绘模块194d可将CDWM请求从队列中取出,按需访问并操纵存储在资源管理器194b中的资源,并组装显示特定描绘指令并将其传送给3D图形接口195。
向多个显示描绘桌面需要抽象在刷新率、象素格式支持、以及不同显示装置之间的装置坐标映射上的差异。UCE可提供这种抽象。
UCE还可负责在远程桌面配置中通过网络连接上传递图形。为了有效地将一特定系统的桌面遥控为另一桌面,应避免资源争夺,应进行性能优化,且安全应当是稳固的。这些责任也可落于UCE上。
3D图形接口195可包括下层的即时方式(无阶段的)图形服务,诸如
等。3D图形接口的目的可以是提供特定图形硬件配置的各特征之上的抽象接口。该3D图形接口可服务单个显示装置;UCE可通过多个装置驱动器196在多显示系统中多个图形输出装置197之间解析并分发CDWM的描绘指令。
应注意,图1B中所示的组件体系结构是说明性实施例的。该图旨在说明本发明可包括的各个功能。根据平台的能力和所需特征集,这些功能可在比图中呈现的更少或更多数量的软件组件中分布。例如,缺少主题管理的系统可从系统中导出所有库存资源,比如由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。当请求该格式时,应用程序可隐含地知道,可使用α(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向CDWM190通知任何可使视觉更新成为必要的影响经重新指向的视窗内容纹理的变化。
在步骤211、219、以及223,CDWM 190分别从尺寸、位置/大小以及象素级别纹理更新的请求以及动作中进行辨别。在尺寸更新上(步骤211),CDWM首先判断是否有一框架与该目标视窗相关联(步骤213)。如果一框架与目标视窗相关联(步骤215),则CDWM基于感知合成应用程序直接提供的两维或三维内容、或基于继承和CDWM视窗度量及经重新指向继承平面的经更新尺寸的组合,来确定框架元的适当尺寸和方向。当已确定框架尺寸时,CDWM对框架网格中顶点的位置信息作出适当改变,并向UCE转发顶点数据缓存。UCE将网格更新指示和新的顶点信息置于异步处理的队列上。如果视窗没有框架,则绕过步骤215。在有框架或无框架视窗的情形中,影响内容区域的尺寸变化可导致CDWM调整内容网格的尺寸,并将适当的网格更新请求和数据排列在UCE中(步骤217)。
在位置(包括旋转)或大小更新中(步骤219),CDWM确定新的变换参数,并将变换资源更新请求以及数据排列在UCE中用于异步处理(步骤221)。资源最少由4×4的变换矩阵组成,但可包含支持经过滤变换的附加数据。
在步骤223中,CDWM接收涉及散射内容纹理的象素数据变化的更新请求,即应用程序已在其视窗中更新其内容。在步骤225,CDWM通过将新的象素信息排对到UCE用于异步处理来服务该请求。
本领域技术人员将理解,可支持除图2所示请求之外的其它更新请求。例如,对视窗图标或标题文本的改变还需要重新绘制分别与视窗相关联的CDWM管理图标或标题内容对象。视窗输入焦点可在框架的外表中得到反射,因而在继承视窗情形中,继承视窗管理器可向CDWM传送输入焦点变化更新,该更新可相应地重新描绘框架以及可能的其它内容。
在步骤227,UCE处理来自CDWM的输入合成和资源更新,且在与参与桌面合成的每个活动视频图形适配器的刷新率相一致的间隔上,将桌面(或多显示器配置中的适当部分)重新描绘到显示器尺寸的反向缓存。这使用由3D图形引擎(诸如微软
)提供的中间模式描绘服务来完成,而该引擎又将桌面传递到主要显示平面。
为了绘制3D视窗,CDWM可使用各种组件来定义视窗分解,包括一基本内容对象以及一个或多个子内容对象。该基本内容对象定义视窗框架或边界,并由基本几何图形、基本范围、基本材质属性以及基本内容边缘组成。这些基本和子内容对象的每一个都可由系统完全定义和管理,或者在定制内容元素的情形中可由应用程序管理。内容对象在后面详述。
图3根据本发明一说明性方面示出一应用程序视窗。应用程序视窗301可包括各个区域和组件。视窗301的框架或基本内容303可包容子内容,包括按钮305(例如用以恢复、最大化、最小化、关闭视窗等)、指示性图标307、滚动条309、菜单条311、以及视窗标题文本313。主要内容对象区域315可源自从继承视窗和图形用户接口子系统中获取的重新指向缓存器,或可被创建并附于标准基本内容上并由感知合成所有的应用程序进行描绘。本领域技术人员将理解,图3仅是基本视窗元素的说明,并可另外或有选择地使用其它或不同的视窗元素。另外,视窗框架元素另选地由一应用程序提供,例如以向应用程序提供不同的观感。示例会是,何处应用程序提供滚动条作为定制子内容对象,从而它们表明该应用程序特有的表现和行为。此外,应用程序可使用CDWM API来选择移除或重新配置一个或多个库存框架元素。应用程序无需限于作为现有技术中普遍限制的单个主要内容区域。
CDWM可支持与单个视窗相关联的多个应用程序创建的和描绘的内容区域。为了提供给应用程序提供更独特用户体验的能力,在本发明一个或多个实施例中CDWM提供绘制视窗的方式中的灵活性。即,CDWM可通过使各应用程序能定义多个定制内容对象而使应用程序能改变视窗的缺省分解,其中每个对象具有任意形状而不是将每个应用程序限制在单个长方形客户内容区域中。
因而,每个CDWM视窗可包括一基本内容对象(即框架)和一个或多个子内容对象的集合。每个内容对象可由独特的内容特性集来定义,且可被配置成可选地接收键盘和鼠标事件。CDWM将相关的鼠标点击测试点映射到应用程序定义的内容局部的3D坐标中,并向应用程序传递鼠标事件通知。内容对象可完全由系统管理,或者在定制内容元素的情形中可由应用程序管理。系统管理的内容对象的示例包括应用程序指示性图标、框架按钮(例如最小化、恢复、关闭)、标题文本、以及某些菜单条和滚动条。应用程序管理的内容对象包括应用程序描绘其主要视觉输出的那些内容对象,例如字处理器的文本、电子制表应用程序的数字网格、或照片编辑应用程序的图像。
内容纹理可以是由系统管理(或在定制内容情形中由应用程序管理)的位图。可用一次重复将内容纹理线性地映射到内容几何图形中。纵横比可由内容几何图形确定,而纹理坐标则在内容几何图形中展现。内容的放大可用影响内容纹理到其几何图形的映射的缩放变换来控制。CDWM可提供一种通过它用户可调整放大比例的缺省交互式机制,诸如系统提供的菜单选项、滑条控制、和/或鼠标和键盘组合。
在每次重新描绘之前,其散射纹理是支持每个象素α格式的内容平面可在应用程序(在库存内容对象情形中为系统)的判断之下由系统初始化为零α因此,下层的基本内容对象可在内容平面的未绘制区域中显示。这提升了编程模型和用户体验,因为应用程序无需在描绘之前擦除内容平面,且使用户不用面对视窗中闪烁和陈旧的或未绘制的区域。
在某些实施例中,某些内容对象,特别是应用程序描绘其主要图形输出的内容对象可不具有与其相关联的材质属性,因为具有以打扰用户或以其它方式干扰用户动作的方式与灯光或环境交互的内容不是所希望的。在这些实施例中,内容对象的视觉表现可完全由其纹理、几何图形、以及可能每个顶点或每个象素的α值来确定。
图6示出了具有动态非标准分解的视窗601的示例,如下所示。视窗601具有非标准形状(即非长方形)的基本框架对象603、位于非标准位置(不是视窗的右上角)的非标准形状(即非长方形)的框架按键对象605、位于非标准位置(不是视窗的左上角)的系统提供的指示性框架特别对象607、以及也位于非标准位置(不是框架顶端左对齐)的框架视窗标题对象613。在图6中,与视窗相关联的应用程序已定义了两个主要内容对象区域615a和615b。主要内容对象区域615a是常规(即长方形)形状,而主要内容对象区域615b则是非常规非长方形的形状。视窗601还可包括应用程序定义的例如在浏览环境中分别提供向后和向前导航控制的框架按键对象617和619。
CDWM可将应用程序视窗301的基本部分描绘为三维(3D)对象。3D网格元可被用以定义视窗对象的形状(基本几何图形),主要散射纹理可被映射到网格的3D几何图形,而可任选的材质属性在描绘过程的应用中,包括灯光、阴影、折射、模糊以及其它包括辅助纹理的特定效果参数和资源。辅助纹理可被用作本领域中众所周知的图形效果的资源,以便提供桌面环境中与光源、光标、以及其它UI对象的“活动”的物理上模拟的交互。因而,纹理可用作每个象素3D正常信息的源(正常/颠簸映射)、灯光遮罩(周围、散射、以及镜面光过滤器)、反射源(例如当在视窗上盘旋时的光标反射)、静态环境映射等等。
基本几何图形的顶点格式可选地包括ARGB格式的32比特散射色彩组件,以及用于将最多n个纹理映射到网格几何图形的纹理坐标对{tun,tvn},如上所述。如本领域中已制定的,tu和tv的每个整数增量可定义纹理在相应尺度上的一次重复。例如,范围从{0.0,0.0}(纹理左端,顶部)到{1.0,1.0}(纹理右端,底部)的值表示在整个网格上的一次重复,而从{0.0,0.0}到{6.0,4.0}则定义在x尺度中的6次重复和y尺度上的4次重复。
内容范围可被定义为一个定义边界范围{xleft,ytop,zfront,xright,ybottom,zback}的三维点对,或者被定义为包含基本几何图形的最小框的坐标。这类似于2D边界视窗长方形{xleft,ytop,xright,ybottom}。三元组的{xleft-xright,,ytop-ybottom,zfront-zback}定义内容范围的宽度、高度和深度。该范围由系统计算和管理,并表示该内容的尺寸和局部位置。
如果视窗对象是可调整尺寸的,操纵该基本内容范围的是通过它CDWM可调整视窗尺寸的方法。为了保存边界和角落的轮廓,可调整尺寸网格中每个顶点的位置可能未根据新范围简单地缩放。为了使能精细控制网格尺寸,预定顶点位置过滤函数以及可应用参数可由应用程序在视窗创建时间指定,或由CDWM选择为缺省。调整过滤函数尺寸的顶点的作用是要确定在改变其边界范围时目标网格中每个顶点如何表现。每个过滤函数应对每个成员顶点确定每维(x,y,z)上的位移方向和大小。
最简单的过滤函数确定方向(正或负)以及大小(与新范围或偏移有关的缩放量等于3D空间中网格边界框6个表面之一的量)。每个顶点在调整尺寸操作中如何动作可在每个顶点、每一维基础上被描述为与顶点本身相关联的属性,或者可为网格以几何图形术语整个地定义。后面方法的一示例是定义6个边缘边界平面的向量{mxleft,mytop,mzfront,mxright,mybottom,mzback},每个平面与网格边界框的平面相关联并有效地将边界框的体积分成27个立方体子区域。边缘值的大小可不管网格尺寸而保持常数,或可基于边界框的初始尺寸进行计算。在一任意网格调整尺寸操作中,上、左、前方的立方体子区域(以{xleft,ytop,zfront,xright,ybottom,zback}为边界)中出现的顶点都根据边界范围上左前方角的大小和方向作一样地偏移。在最中央立方体子区域中出现的顶点(以{mxleft,mytop,mzfront,mxright,mybottom,mzback}为边界)相对该子区域的新范围而缩放。出现在前方中央立方体子区域的顶点相对该子区域新范围在x和y维上缩放,而根据网格前方Z边界平面的相同大小和相同方向作位移。
为帮助理解上述原理,图7示出了两维空间中网格调整尺寸操作的示例。视窗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维可将该算法扩展为三维。
网格尺寸调整过滤函数的另一变体可解释手动制作的顶点元数据,而不依赖于总体几何结构诸如为边界定尺寸,以判断顶点位置是否在任一方向上缩放或偏移。这种函数可被用以在网格尺寸调整期间保护复杂的平面拓扑,诸如峰和谷。网格调整尺寸的过滤函数的另一变体可使顶点以线性或非线性方式在每一维上位移,其中判别比特和函数系数作为每个顶点的元数据被存储。这种函数使能各种效果,诸如伴随网格尺寸调整的线性或非线性、局部化或一般化的凸起或变平。
基本内容边界定义限制子内容的边界。内容边界可以是以像为边界定尺寸一样的方式定义的三维边界。然而,不像为边界定尺寸,内容边界可线性地随视窗缩放而缩放,并可不影响网格尺寸调整。
局部和桌面总体的资源和参数(根据抽象材质属性的值指定)以及象素阴影,包括通过它CDWM可实现物理模拟桌面内容的描绘的数据和机制。
高级内容材质属性定义内容与灯光及周围环境交互的方式。对诸如毛玻璃的复杂材质的描绘可使用在视频硬件中非固有支持的技术。结果,CDWM使用少量预定象素阴影之一来实现材质属性。象素阴影是载入显示硬件的小例程,它基于预定资源集在显示之前操纵象素的值,这些资源包括但不限于光源、纹理、网格元中的顶点以及诸如变换和度量的参数。CDWM可从预定象素阴影的集合中选择适当的阴影以描绘特定的对象材质属性集,它可包括周围色彩(强度和透明度)、散射色彩(强度和透明度)、镜面色彩(强度和透明度)、反射标量、折射指数、散射纹理、以及颠簸纹理,其中每一个在后面描述。桌面总体属性可被用以定义总体环境属性,诸如眼睛位置、总光源、环境映射等等。定义这些桌面总体属性的资源和参数可与基本视窗材质属性一起被转发给3D图形接口,作为描绘视窗之前活动象素阴影的参数。
周围色彩模拟从所有方向上打在对象表面上的光线。作为可应用于任意CDWM管理的UI内容对象的材质属性,周围强度确定接触该对象表面的周围光线的相对量,而32比特ARGB值可被用以指定周围的色彩和透明度。在一说明性实施例中,周围强度的范围可以是从0.0(零周围光线,给予均匀全黑显现)到1.0(均匀分布于该对象上的特定色彩的最大强度)。带有白色周围色彩的周围强度的效果允许对象一般亮度的控制。
散射强度确定在接触对象表面之后在所有方向上发散的有向光线的数量。光线本身由一个或多个有向光或立体光线映射提供。作为可应用于任意CDWM管理的UI内容对象的材质属性,散射色彩可由规定色彩的32比特ARGB值来指定,其中α组件规定散射反射的光线的透明度。散射强度的范围可以是从0.0(没有光线散射反射,给予对象全黑显现)到1.0(所有光线散射反射,根据散射色彩值给予对象阴影显现)。当周围和散射强度值的总和接近于1.0时,被照亮的表面将显现为得到更为现实的模拟。
镜面强度控制多少光线直接从对象表面反射回查看器,并且镜面色彩可被指定为对象的ARGB色彩。光源本身可以是一个或多个有向光线或立体光线映射的形式。作为可应用于任意CDWM管理的UI内容对象的材质属性,高镜面强度值可被用以模拟带有强高亮的发亮表面,而低值则可被用以模拟带有微弱光或无高亮的暗淡光表面。色彩的α组件确定镜面高亮的透明度。
类似于镜像,反射性确定从对象表面直接反射回查看器的光线量。反射与镜像不同,因为反射应用于整个环境而不仅仅是光源。作为可应用于任意CDWM管理的UI内容对象的材质属性,0.0的反射性值在表面上没有环境的反射,而1.0的值在表面上产生类似镜面的环境反射。该环境可使用立体环境映射和鼠标光标来模拟。因而,鼠标光标以及环境的静态调整可从视窗表面反射到由反射强度标量控制的程度。
每个对象的折射指数确定在穿行它的光线传输的角度。可使用Snell规则n1sinθ1=n2sinθ2,其中n1和n2是介质1和2的折射指数,而θ1和θ2分别是相对于平面法线的入射和射出角度。因此如果介质1表示带有赋予折射指数1.0(无折射)的桌面环境,而介质2是视窗基本对象的桌面环境,则折射角度被确定为θobj=sin-1(sinθenv/nobj)。各种可模拟的已知折射指数如下表所示。
介质 |
折射指数 |
真空 |
1.00 |
冰 |
1.31 |
水 |
1.33 |
玻璃 |
一般为1.50-1.75 |
钻石 |
2.42 |
表格1
一旦已确定/计算了折射角度,就可使用它来从背景中选择适当的象素以在对象的可视平面上进行描绘,随后还进行与其它材质属性相关联的处理。为折射实时描绘所做的最优化可结合本领域技术人员所知道的Fresnel技术。
视觉风格(主题)可被用以定义CDWM视觉和行为政策。视觉风格一般指用户可选择的主题,这些主题可指定应用于公共用户接口元素的精细的手工设计图形和行为特性。应用程序可选地覆盖部分这些特性,而其它特性则由对用户界面的一致性感兴趣的系统来有选择地实施。视觉特性包括公共视窗内容的显现,诸如框架区域(基本内容)、非客户按键、以及其它应用程序无关元素。行为特性包括视窗可桌面转换动画,视窗可随鼠标交互地移动或调整尺寸的方式(例如快速移动、粘贴、伸展和限制)、以及其它应用程序无关行为。视觉和行为政策可集中于CDWM,而不是将该政策分布于整个软件描绘管线中,因而提供了更为一致的终端用户体验以及更简单的开发环境。
根据本发明一说明性实施例,视觉风格的缺省(或定制)纹理可包括基于其更改每个象素的α级和/或位图。例如,α级被用以更改透明度,如本领域技术人员所众所周知的。此外,纹理可包括使用它客户和/或非客户区域、或客户和/或非客户区域的一部分可被象素加阴影的位图。例如,在一说明性实施例中,位图可给出毛玻璃的显现。图5示出了用毛玻璃框架503描绘的视窗501,其中在确定哪个来自视窗框架503后面内容的象素应显示时可指定折射指数来模拟玻璃。通过利用图形描绘引擎的高级纹理、灯光和3D能力,并使用适当的位图,CDWM可用具有毛玻璃显现的框架503来组成视窗501(该框架从3D桌面环境中可选地指定的虚拟光源反射光线),而具有不透明的客户内容区域从而客户内容的视觉敏锐并未减少。
桌面描绘模型(无效对合成)的每一个都具有用于与应用程序交互的唯一模式,从而应用程序的视窗在桌面上得以合理维护。例如,在无效模型中,桌面描绘依赖于视窗“剪辑区域”的管理和持续更新。剪辑是通过它描绘受限于视窗适当区域的过程。当一视窗部分地被另一视窗遮蔽时,剪辑区域对应于被遮蔽区域的逆。如果下层视窗以响应于绘制消息的方式或以主动提供的方式绘制其内容,无效模型DWM确保其剪辑区域被应用于输出,从而确保没有绘制会发生在上层视窗中。如果移动上层视窗,或者下层视窗被移到Z序的顶端,则在发送给视窗绘制消息以更新任意新展现内容之前,下层视窗的剪辑区域由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使得继承DWM192a绘制用户的文本输入。在步骤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的交互,例如使用户更容易用鼠标抓取视窗边界以移动或调整视窗的尺寸,而并不遮掩视窗之下的内容(因为玻璃是透明或半透明的)。各种毛玻璃效果被用以使用户更便于区分活动和/或不活动视窗的状态。另外,毛玻璃使用户更便于在屏幕上读取和/或查看内容,因为用户在任一给定时间上可查看更多的屏幕区域(因为毛玻璃是透明或半透明的),且桌面显现为不太杂乱,因为玻璃是显示屏上不太突出的元素。
本领域技术人员将理解,尽管图中示出了毛玻璃的特定示例,本发明并不受那样的限制。通过将不同的位图和/或不同的象素形状应用于外观的描绘,毛玻璃的外观可轻易改变。此外,应用不同的环境变量(例如改变光源,这影响反射和镜面高亮)或改变玻璃的虚拟物理属性(例如折射、反射指数等)也将影响毛玻璃的外观。可以理解,本发明也可用以模拟其它纹理和合成物,例如金属、塑料、纸张、棉、以及其它自然和合成材质。
尽管已参照包括执行本发明的当前优选模式的特定示例描述了本发明,本领域技术人员将理解有上述系统和技术的很多变体和置换。因而,本发明的精神和范围应广泛地解释为如所附权利要求所陈述。