跨多个内容的交互的计算机化动态拆分背景技术
手势和其它用户接口操纵准许用户操纵用户接口内的内容。这样的操纵包括平移
通过文章、图像的放大或缩小、旋转内容片段等。当前技术使得能够实现处理操纵的专用线
程中的用户接口上的内容的处理操纵,而不考虑由生成内容的应用运行的过程。然而,这样
的处置典型地受限于涉及由单个过程生成或与单个应用相关联的内容的用户接口操纵。作
为结果,当前技术导致欠佳的用户体验。
发明内容
描述了用于跨多个内容片段拆分交互的技术。在至少一个示例中,用户接口交互
可以通过消除与不同应用相关联或由其生成的可注意到的过程边界来执行。在各种示例
中,本文中的技术描述跨多个内容片段动态拆分操纵而不考虑用户接口操纵的各种类型
和/或状态和/或不考虑多个内容片段是否与不同的各个过程相关联。
在至少一个示例中,本文中的技术描述收集关于可用于用户接口(UI)上的操纵的
内容的信息以存储在交互式内容储存中。响应于在用户接口上接收到用户输入,可以标识
接收到其上的用户输入的各个内容片段。在至少一个示例中,本文中的技术描述标识交互
式内容储存中的各个内容片段以确定可用于各个内容片段的操纵。UI上的各个内容片段的
操纵可以至少部分地基于可用于各个内容片段的操纵而执行。
此外,在至少一个示例中,本文中所描述的技术包括接收涉及操纵与至少一个应
用相关联的视觉内容的两个或更多片段的用户输入并且至少部分地基于用户输入和交互
式内容的收集而确定可以在用户接口上操纵的视觉内容的片段。另外,本文所描述的技术
可以包括至少部分地基于交互式内容的收集而确定视觉内容的哪些片段能够执行操纵并
且在UI上呈现视觉内容的两个或更多片段的操纵结果。
本文中的技术还描述了用于实现以上描述的方法的系统。在至少一个示例中,系
统可以包括交互式内容模块,其用于存储和定义与一个或多个应用相关联的内容片段之间
的交互式关系,以及手势瞄准模块,其配置用于确定针对由与多个内容片段相关联的用户
输入导致的处置运动的内容的特定片段。
提供该概述来以简化的形式引入以下在具体实施方式中进一步描述的概念的选
择。该概述不旨在标识所要求保护的主题的关键特征或本质特征,也不旨在用于限制所要
求保护的主题的范围。
附图说明
参照附图来描述具体实施方式。在附图中,参考标号的(一个或多个)最左数位标
识参考标号首次出现在的附图。不同图中的相同参考标号指示类似或相同的项。
图1图示了其中可以体现用于跨多个片段内容的操纵的动态拆分的异步处置的技
术的示例环境。
图2图示了示例操作环境,其包括可以实现在各种环境中以用于跨多个内容片段
的操纵的动态拆分的异步处置的各种设备和组件。
图3图示了用于跨多个内容片段的操纵的动态拆分的异步处置的示例操作环境。
图4图示了用于操纵用户接口(UI)上的内容的片段的过程。
图5图示了用于呈现UI上的操纵的结果的过程。
图6图示了用于遍历交互式内容的全局树的过程。
图7图示了用于遍历交互式内容的全局树的过程。
具体实施方式
本文描述了用于优化涉及呈现在UI中的内容的用户接口(UI)操纵的技术。手势和
其它UI操纵(例如键盘敲击、使用鼠标作为用户输入进行选择等)准许用户操纵应用接口内
的内容。这样的操纵包括平移通过文章、图像的放大或缩小、旋转内容片段等。当前技术使
得能够实现从执行以其他方式与应用相关联的过程的线程分离的专用线程中的UI操纵的
执行。然而,这样的执行典型地受限于涉及单个过程中的内容的UI操纵。当前技术导致欠佳
的用户体验,特别是在UI操纵涉及以复杂配置呈现或由不同过程生成的内容时。例如,如果
用户希望与由不同应用生成的用户接口上的内容的两个或更多片段交互,用户可能受限于
与内容片段之一相关联的单个交互。作为结果,用户可能不能够同时移动两个内容片段。本
文所描述的技术通过消除与不同应用相关联或由其生成的可注意到的过程边界来改进UI
操纵。
本文中的技术描述跨多个内容片段动态拆分操纵而不考虑UI操纵的各种类型和/
或不考虑多个内容片段是否与不同过程相关联。在至少一个示例中,本文所描述的技术使
得能够实现具有UI上的内容的复杂配置和/或具有与多于一个应用相关联的多个内容片段
的快速、响应性且无缝的UI操纵。此外,本文所描述的技术还使得UI上的内容能够粘附到用
户输入操纵或随用户输入操纵移动,使得内容看起来保持与用户输入操纵直接接触。换言
之,用户可以在设备的显示器上移动或布置内容并且本文所描述的技术使得内容能够在显
示器上看起来就像其粘附到用户的手指和/或其它用户输入设备。
用户操纵可以包括众多用户输入和用于与用户设备的UI上的内容片段交互的输
入设备。例如,用户可以使用鼠标在可选控件上点击和/或做出基于鼠标的手势。作为附加
示例,用户可以使用一只或两只手上的一个或多个手指以通过触摸屏显示器做出手势。诸
如触笔或笔之类的可替换的或附加的输入设备可以用于在触摸屏显示器上或通过触摸屏
显示器做出手势。语音激活可以是用于提供用户操纵的附加或可替换的手段。用户操纵的
另一示例可以包括由一个或多个相机或其它图像捕获设备捕获到的三个维度中的物体和/
或个体的移动或运动。出于该讨论的目的,手势通常被用作指向UI操纵的示例用户输入;然
而,同样或替代性地可以使用非手势用户输入并且其包括在用户操纵的范围内。
在一些示例中,用户输入和/或输入设备的组合可以用于操纵设备UI上的内容片
段。例如,用户可以通过将两个手指放置在UI上并且使用笔设备在UI上绘画而同时两个手
指仍旧在UI上来与UI交互。附加组合,诸如触摸输入和语音激活的组合,也包括在用户操纵
的范围内。此外,用户输入和/或输入设备可以跨多个用户设备与多个UI交互。
内容,如本文所描述的,可以包括呈现在UI上的交互式内容。交互式内容可以包括
内容片段,其可以呈现在UI上并且可以经由UI上的用户输入来选择和/或交互。交互式内容
可以由用于运行各种功能的应用生成。在至少一个示例中,交互式内容可以作为视觉内容
来呈现。例如,内容可以包括文本文档、地图、游戏片段、图像数据、视频数据等。每一个内容
片段可以具有边界,其在确定响应于UI操纵的内容中的位置方面是有用的。边界可以包括
内容的总体大小、内容的当前分辨率、能够被显示的内容的分辨率、文档中的页数、每一页
的大小、总地图大小等。
如以上所讨论的,当前技术使得能够实现从执行以其他方式与应用相关联的过程
的线程分离的专用线程中的UI操纵的执行。本文所描述的技术还移动在从运行与应用相关
联的其它过程的线程分离的线程上的内容。然而,不同于当前技术,本文所描述的技术可以
移动由从运行与多个应用相关联的其它过程的线程分离的线程上的多个应用生成的内容。
这样的异步处理通过提供跨可以由多个应用生成的视觉内容片段的快速、响应性且无缝的
UI操纵来优化与UI操纵相关联的用户操纵。
说明性环境
以下描述的环境包括仅一个示例并且不旨在将以下描述的系统的应用限制到任何一
个特定操作环境。可以在不脱离所要求保护的主题的精神和范围的情况下,使用其它环境。
本文所描述的各种类型的处理可以实现在任何数目的环境中,包括但不限于,独立计算系
统、网络环境(例如局域网或广域网)、对等网络环境、分布式计算(例如云计算)环境等。
图1图示了其中可以体现用于跨多个内容片段的操纵的动态拆分的异步处置的技
术的示例环境100。在至少一些示例中,处置可以是指执行操纵、运行操纵、接收操纵和/或
处理操纵。环境100包括计算设备102。在至少一个示例中,计算设备102可以包括(一个或多
个)处理单元104和计算可读介质106。计算机可读介质106可以包括促进与用户设备102的
交互的组件。例如,计算机可读介质106可以至少包括操纵器模块108,其可以经由至少一个
处理单元104实现为计算机可读指令、各种数据结构等等以将设备配置成运行指令并且执
行用于处置跨多个内容片段的操纵的动态拆分的操作。执行这些操作的功能可以包括在多
个设备或单个设备中。此外,计算机可读介质106可以包括与各种操作相关联的(一个或多
个)应用110。(一个或多个)应用110可以在与计算设备102相关联的UI上再现与各种操作相
关联的内容。
计算设备102在触摸屏UI 118上呈现一个或多个应用接口116A和116B。触摸屏UI
118可以配置用于接收经由诸如用户120的一个或多个手指和/或配置用于提供触摸输入的
笔或其它触笔之类的用户输入的用户操纵。在触笔的情况下,触笔可以是有源和/或无源
的。如以上所描述的,用户操纵可以包括各种其它类型的用户输入和输入设备。用户输入可
以指向触摸屏UI 118上的应用110(例如与应用接口116A和116B相关联的应用)的UI操纵。
在至少一个示例中,如示例环境100中所示,用户输入通过箭头122示出并且指向操纵应用
接口116A和116B。用户输入120/122被示出为涉及通过快速平移通过显示在应用接口116A
和/或应用接口116B中的内容来操纵UI接口的上划、单手指手势。
在至少一个示例中,环境100可以包括(一个或多个)服务器和/或其它机器112和
(一个或多个)有线和/或无线通信网络114,其使得能够实现计算设备102与一个或多个服
务器和/或(一个或多个)其它机器112之间的通信。在一些示例中,(一个或多个)服务器和/
或其它机器112可以包括一个或多个计算设备,其操作在集群或其它分组配置中以共享资
源、平衡负载、增加性能、提供失效备援支持或冗余性,或用于其它目的,其使得能够实现计
算设备102与一个或多个服务器和/或其它机器112之间的通信。(一个或多个)通信网络114
可以是本领域中已知的任何类型的网络(诸如因特网并且如以下所描述的)。
图2图示了示例操作环境200,其包括可以实现在各种环境中的用于跨多个内容片
段的操纵的动态拆分的异步处置的各种设备和组件。在至少一个示例中,本文所描述的技
术可以远程执行(例如由服务器、云等执行)。在一些示例中,本文所描述的技术可以在用户
设备(诸如计算设备102)上本地执行。
示例操作环境200可以包括服务提供商202、一个或多个网络204、一个或多个用户
206和与一个或多个用户206相关联的一个或多个用户设备208。如所示,服务提供商202可
以包括一个或多个服务器和/或其它机器210,其中的任何一个可以包括一个或多个处理单
元212和计算机可读介质214。(一个或多个)服务器和/或其它机器210可以是与图1中所示
的相同的一个或多个服务器和/或其它机器112。在各种基于web服务或云的实施例中,服务
提供商202可以异步地执行跨显示在用户设备(诸如用户设备208或计算设备102中的任何
一个)上的多个内容片段的操纵的动态拆分。
在一些实施例中,(一个或多个)网络204可以是本领域中已知的任何类型的网络
(诸如因特网)。(一个或多个)网络204可以与如图1中所示的(一个或多个)网络114相同。而
且,用户设备208可以以任何方式通信耦合到(一个或多个)网络204,诸如通过全局或局部
有线或无线连接(例如局域网(LAN)、内联网等)。(一个或多个)网络204可以促进(一个或多
个)服务器和/或其它机器210和与用户206相关联的用户设备208之间的通信。
在一些实施例中,用户206可以操作对应用户设备208以执行与用户设备208相关
联的各种功能,用户设备可以包括一个或多个处理单元、计算机可读存储介质和显示器。另
外,用户206可以利用用户设备208来经由一个或多个网络204与其他用户206通信。
(一个或多个)用户设备208可以表示多种多样的设备类型并且不限于任何特定类
型的设备。(一个或多个)用户设备208的示例可以包括但不限于静止计算机、移动计算机、
嵌入式计算机或其组合。示例静止计算机可以包括台式计算机、网络站、个人计算机、瘦客
户端、终端、游戏控制台、个人视频记录器(PVR)、机顶盒等。示例移动计算机可以包括膝上
型计算机、平板计算机、可穿戴计算机、植入计算设备、电信设备、汽车计算机、个人数据助
理(PDA)、便携式游戏设备、媒体播放器、相机等。示例嵌入式计算机可以包括网络使能电
视、用于包括在计算设备中的集成组件、器具、微控制器、数字信号处理器或任何其它种类
的处理设备等。计算设备102可以是以上描述的(一个或多个)用户设备208中的任何一个。
服务提供商202可以是任何实体、(一个或多个)服务器、平台等,服务提供商可以
利用来自通信平台(包括在线通信平台)的特征的集合,以测量通信平台的用户之间的交互
动态性。而且,并且如所示,服务提供商202可以包括一个或多个服务器和/或其它机器210,
其他机器可以包括一个或多个处理单元212和计算机可读介质214(诸如存储器)。一个或多
个服务器和/或其它机器210可以包括设备。
示例支持场景,其中可以包括在一个或多个服务器和/或其它机器210中的(一个
或多个)设备可以包括操作在集群或其它分组配置中以共享资源、平衡负载、增加性能、提
供失效备援支持或冗余性或用于其它目的的一个或多个计算设备。包括在一个或多个服务
器和/或其它机器210中的(一个或多个)设备可以属于各种种类或类别的设备,诸如传统服
务器类型设备、台式计算机类型设备、移动设备、专用类型设备、嵌入式类型设备和/或可穿
戴类型设备。因此,尽管被图示为服务器计算机,但是(一个或多个)设备可以包括多种多样
的设备类型并且不限于特定类型的设备。包括在一个或多个服务器和/或其它机器210中的
(一个或多个)设备可以表示但不限于,台式计算机、服务器计算机、web服务器计算机、个人
计算机、移动计算机、膝上型计算机、平板计算机、可穿戴计算机、植入计算设备、电信设备、
汽车计算机、网络使能电视、瘦客户端、终端、个人数据助理(PDA)、游戏控制台、游戏设备、
工作站、媒体播放器、个人视频记录器(PVR)、机顶盒、相机、用于包括在计算设备中的集成
组件、器具或任何其它种类的计算设备。
可以包括在一个或多个服务器和/或其它机器210中的(一个或多个)设备可以包
括任何类型的计算设备,其具有可操作连接到(诸如经由总线)计算机可读介质214的一个
或多个处理单元212,总线在一些实例中可以包括以下中的一个或多个:系统总线、数据总
线、地址总线、PCI总线、Mini-PCI总线和任何种类的局部、外围和/或独立总线。存储在计算
机可读介质214上的可执行指令可以包括例如操纵器模块216和其它模块、程序或应用,其
由(一个或多个)处理单元212可加载和可执行。可替换地或此外,本文所描述的功能可以至
少部分地由一个或多个硬件逻辑组件或加速器执行。例如并且没有限制,可以使用的说明
性类型的硬件逻辑组件包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产
品(ASSP)、片上系统的系统(SOC)、复杂可编程逻辑器件(CPLD)等。例如,加速器可以表示混
合设备,诸如来自包括嵌入在PFGA构造中的CPU进程的ZYLEX或ALTERA的一个。
可以包括在一个或多个服务器和/或其它机器210中的(一个或多个)设备还可以
包括耦合到总线的一个或多个输入/输出(I/O)接口以允许(一个或多个)设备与诸如用户
输入外围设备(例如键盘、鼠标、笔、游戏控制器、语音输入设备、触摸输入设备、手势输入设
备等)和/或输出外围设备(例如显示器、打印机、音频扬声器、触感输出等)之类的其它设备
通信。可以包括在一个或多个服务器和/或其它机器210中的设备还可以包括耦合到总线的
一个或多个网络接口以使得能够实现计算设备与诸如(一个或多个)用户设备208之类的其
它联网设备之间的通信。这样的(一个或多个)网络接口可以包括一个或多个网络接口控制
器(NIC)或其它类型的收发器设备以通过网络发送和接收通信。为了简化,从所图示的设备
省略一些组件。
(一个或多个)处理单元212可以表示例如CPU类型处理单元、GPU类型处理单元、现
场可编程门阵列(FPGA)、另一类数字信号处理器(DSP)或其它硬件逻辑组件(其在一些实例
中可以由CPU驱动)。例如并且没有限制,可以使用的说明性类型的硬件逻辑组件包括专用
集成电路(ASIC)、专用标准产品(ASSP)、片上系统的系统(SOC)、复杂可编程逻辑器件
(CPLD)等。在各种实施例中,(一个或多个)处理单元212可以运行一个或多个模块和/或过
程以使(一个或多个)服务器和/或其它机器210执行如以上所阐述的和在以下公开中进一
步详细解释的各种功能。此外,(一个或多个)处理单元212中的每一个可以拥有其自身的本
地存储器,其还可以存储程序模块、程序数据和/或一个或多个操作系统。
在至少一个配置中,(一个或多个)服务器和/或其它机器210的计算机可读介质
214可以包括促进服务提供商202与用户206之间的交互。例如,计算机可读介质214可以至
少包括操纵器模块304,其可以经由至少一个处理单元212而实现为计算机可读指令、各种
数据结构等以将设备配置成运行指令和执行操作以用于处置跨多个内容片段的操纵的动
态划分。执行这些操作的功能可以包括在多个设备或单个设备中。
此外计算机可读介质214可以包括与各种操作相关联的(一个或多个)应用218。
(一个或多个)应用218可以在与(一个或多个)用户设备208相关联的UI上再现与各种操作
相关联的内容。内容可以包括视觉内容,并且在至少一些示例中,用户206可以经由用户设
备208上的UI操纵与内容交互。
取决于一个或多个服务器和/或其它机器210的确切配置和类型,计算机可读介质
(例如计算机可读介质106和计算机可读介质214)可以包括计算机存储介质和/或通信介
质。计算机存储介质可以包括易失性存储器、非易失性存储器和/或其它持久和/或辅助计
算机存储介质、可移除和非可移除计算机存储介质,其以用于存储诸如计算机可读指令、数
据结构、程序模块或其它数据之类的信息的任何方法或技术来实现。计算机存储器是计算
机存储介质的示例。因此,计算机存储介质包括有形和/或物理形式的介质,其包括在设备
和/或作为设备的部分或在设备外部的硬件组件中,包括但不限于随机存取存储器(RAM)、
静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、相变存储器(PRAM)、只读存储器
(ROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、闪速存储
器、致密盘只读存储器(CD-ROM)、数字多功能盘(DVD)、光卡或其它光学存储介质、微型硬盘
驱动器、存储器卡、磁盒、磁带、磁盘储存、磁卡或其它磁性存储设备或介质、固态存储器设
备、存储阵列、网络附连储存、存储区域网络、托管的计算机储存或任何其它储存存储器、存
储设备和/或可以用于存储和维护信息以供计算设备访问的存储介质。
相比之下,通信介质包括计算机可读指令、数据结构、程序模块或经调制的数据信
号中的其它数据(诸如载波或其它传输机制)。如本文所定义的,计算机存储介质不包括通
信介质。
图3图示了用于跨多个内容片段的操纵的动态拆分异步处置的示例操作环境300。
示例操作环境300示出计算机可读介质300,其可以更加详细地表示图1的计算机可读介质
106和/或图2的计算机可读介质214。在至少一个示例中,如上所述,计算机可读介质300可
以包括操纵器模块304(例如操纵器模块108和/或操纵器模块216)和一个或多个应用306
(例如一个或多个应用110和/或一个或多个应用218)。在至少一个示例中,操纵器模块304
包括用于跨多个内容片段异步处置UI操纵的各种模块和组件。在至少一个示例中,操纵器
模块304包括可以存储交互式内容的全局树310的交互式内容模块308、手势瞄准模块312、
行为处置模块314和结果模块316。
交互式内容模块308可以存储关于UI及其元件的信息。例如,交互式内容模块308
可以存储关于可用于用户操纵的内容和与在UI上呈现的特定内容片段相关联的交互式性
质的信息。在一些示例中,交互式内容模块308可以存储关于可用于用户操纵的内容和与呈
现在多个UI上的特定内容片段相关联的交互式性质的信息。在至少一个示例中,交互式内
容模块308可以在由节点构成的树中存储交互式内容。树的根节点可以表示UI窗口,并且树
的子节点可以表示UI窗口内的应用窗口。在至少一个示例中,表示应用(例如(一个或多个)
应用218)的子节点可以被视为父代节点。每一个父代节点可以包含表示与应用(例如(一个
或多个)应用218)相关联的视觉内容片段的子节点。在至少一个示例中,与父代节点相关联
的子节点可以被视为子代节点。
交互式内容模块308还可以存储存在于系统(例如200,300)内的视觉内容
(visual)。在至少一个示例中,视觉内容可以存储在视觉内容树中。在一些示例中,维护在
交互式内容树中的交互式内容和视觉内容树可以集成为交互式内容的全局树310。作为集
成的结果,交互式内容的全局树310可以将每一个操纵关联(tie)到视觉内容中的一个或多
个,从而允许交互式内容模块308理解视觉内容中的每一个到其它视觉内容之间的关系和/
或父代和子代关系。交互式内容的全局树310可以用于确定每一个内容片段可以如何与彼
此交互。交互式内容的全局树310可以存储在交互式内容模块308中。交互式内容的全局树
310可以用于确定哪些内容片段包括在给定操纵中,减少接收用户输入与实行操纵之间的
响应时间和/或跨过程边界的适应运动。
在至少一个示例中,交互式内容的全局树310可以允许与给定操纵相关联的内容
片段基于内容的集体(collective)配置来确定。在至少一些示例中,交互式内容的全局树
310包括运行在用户设备208上的所有过程中的应用中的每一个。交互式内容的全局树310
将交互式性质关联到如在UI上所看到的各个内容片段,而不考虑哪个过程生成每一个内容
片段。相应地,UI操纵可以在由不同过程生成的内容片段之间转移。这使得能够实现UI上的
内容的平滑、不间断的UI操纵,使得与UI交互的用户206不意识到各种内容片段由不同的过
程生成。
交互式内容模块308可以使用视觉内容树,以用于在接收到指向UI操纵的用户输
入之后执行初始命中测试。基于初始命中测试,操纵器模块可以确定几何形状或点值是否
落在内容片段的经再现的内容内以实行期望的UI操纵。命中测试可以对照非UI元件(诸如
视觉内容或图形对象)和/或多个对象(诸如重叠对象)而执行。交互式内容模块308可以基
于命中测试的结果而确定交互式内容链。在至少一个示例中,如果存在多个用户输入,各个
交互式内容链可以结合在一起以建立代表牵涉在多个用户输入操纵中的交互式内容的树。
交互式内容模块308可以比较作为结果得到的(resulting)交互式内容树与交互式内容的
全局树310,以标识潜在地可以基于用户输入来操纵的各个内容片段。当用户206与内容片
段交互时,所维护的交互式内容的全局树310可以标识各个内容片段可以如何被操纵或可
以如何移动。维护内容片段可以如何交互减少之前在在先系统中经历的决定作出延迟。
在至少一个示例中,用户206可以提供指向新的和/或不同的UI操纵的附加输入。
在一些示例中,用户206可以在进行中的UI操纵期间提供附加输入。通过维护交互式内容的
全局树310,当用户206一提供附加输入,交互式内容模块308就可以实行UI操纵。在至少一
个示例中,交互式内容模块308可以使用视觉内容树(visual tree)以执行附加命中测试,
以标识哪些几何形状或点值落在视觉内容的经再现的内容内以实行期望的UI操纵。在执行
命中测试之后,交互式内容模块308可以实行由用户输入所期望的UI操纵。
手势瞄准模块312存储用于确定哪个内容片段可以接收和/或执行由影响多个内
容片段的UI操纵创建的特定运动的手势瞄准逻辑。为了确定哪个内容片段接收和/或执行
运动,手势瞄准模块312考虑由特定内容片段支持的运动、内容的变换和/或其它内容片段
的运动。此外,手势瞄准逻辑包括针对内容片段如何执行链接反应或者当子代内容片段到
达边界并且作为结果可以操纵父代内容片段时,父代内容片段与子代内容片段之间的交互
的算法和策略规则。
在至少一个示例中,手势瞄准模块312遍历存储在交互式内容模块308中的交互式
内容的全局树310。手势瞄准模块312遍历交互式内容的全局树310,在与特定内容片段相关
联的父代节点处开始并且继续到与特定内容片段相关联的子代节点以确定可能用于特定
内容片段的操纵类型。此外,手势瞄准模块312可以标识父代节点在相关联的子代节点上设
置的约束或子代节点在相关联的父代节点上设置的约束。
然后,手势瞄准模块312在相反方向上遍历交互式内容的全局树310,在子代节点
处开始并且继续到父代节点。每一个子代节点标识子代节点或其父代节点可以执行的操
纵,并且取决于子代节点是否支持操纵,子代节点可以向由内容片段支持的坐标空间投射
操纵。如果从子代节点禁止操纵,手势瞄准模块312可以继续到将操纵投射到由内容片段支
持的坐标空间。然而,如果操纵由子代节点准许,手势瞄准模块312可以从投射到坐标空间
的过程过滤这样的操纵。任何不受支持(或不被执行)的操纵可以被投射到所支持的操纵的
坐标空间中。如果作为结果得到的UI操纵牵涉由该内容支持的操纵并且操纵基于父代节点
和子代节点限制而未被禁止,则内容执行运动并且在继续遍历树的其余部分之前将操纵标
记为被执行。以上描述的反向遍历使得子代节点能够在父代节点之前处理操纵并且还允许
不同节点执行不同操纵。
在至少一个示例中,手势瞄准模块312可以确定当用户206经由多个用户输入和/
或用户设备与父代内容片段和子代内容片段交互时可以如何分配用户输入。手势瞄准模块
312可以确定父代内容片段和子代内容片段如何共享各个用户输入。在至少一个示例中,父
代内容片段可以执行所有操纵。在其它示例中,父代内容片段可以准许子代内容片段执行
操纵。在一些示例中,父代内容片段可以准许子代内容片段过滤对其它内容片段的操纵以
执行操纵。手势瞄准模块312可以确定当用户206经由多个用户输入和/或用户设备基于手
势瞄准模块312遍历交互式内容的全局树310而与父代内容片段和子代内容片段交互时可
以如何分配用户输入。
在至少一个示例中,用户206可以输入指向两个内容片段的对角线手势。在至少一
个示例中,与一个内容片段相关联的一个子代节点可能限于竖直移动并且与另一内容片段
相关联的另一子代节点可能限于水平移动。作为交互式内容的全局树310的反向遍历的结
果,与限于竖直移动的内容片段相关联的子代节点可以执行竖直运动并且可以将水平运动
投射到由内容片段支持的坐标空间。与限于水平移动的另一内容片段相关联的另一子代节
点可以执行水平移动。作为结果,两个内容片段可以在其相应方向上移动使得内容看起来
粘附到用户输入。
手势瞄准模块312可以一起移动多个内容片段,而不管多个用户输入存在于内容
还是内容的不同旋转上。在至少一个示例中,如果用户206经由触摸输入与用户设备208交
互并且单个手指在子代内容片段上并且单个手指在父代内容片段上,手势瞄准模块312可
以移动子代和父代二者以保持内容处于用户206的手指下方。如果父代内容片段内部的子
代内容片段的一个旋转,手势瞄准模块312可以生成父代内容片段上的附加运动以保持子
代内容片段在用户206的手指正下方。
行为处置模块314可以利用多个准则来配置要在内容上执行的操作。在至少一个
示例中,行为处置模块314可以考虑手势类型、当前用户输入状态(例如有源或无源)和/或
由其它内容片段执行的运动。手势类型可以包括诸如拍击、保持、平移和/或缩放之类的手
势。平移和缩放手势的方向可以单独配置。例如,内容片段可以配置成接受向右平移,但是
可能被禁止向左平移。行为处置模块314还可以考虑当前用户输入状态,或者跨任何类型的
输入模态(诸如触摸、笔、鼠标、移动等)的用户输入状态。在至少一个示例中,如果用户206
经由触摸输入与用户设备208交互,行为处置模块314可以基于与屏幕接触的手指数目来提
供不同的手势配置。在另一示例中,如果用户206经由笔输入与用户设备208交互,行为处置
模块314可以基于圆管按钮的状态或笔的取向而将输入路由至不同内容片段。
行为处置模块314还可以考虑由其它内容片段执行的运动。例如,父代内容片段可
以基于父代内容片段正在执行的操纵而禁止子代内容片段执行操纵。例如,如果用户206正
在读取用户设备208上的长文档,与长文档相关联的内容可以禁止其它内容片段在除了竖
直之外的任何方向上平移。此外,父代内容片段可以基于由子代内容片段正在执行的操纵
而禁止自身执行操纵。在至少一个示例中,如果用户206正在与为用户206提供多个拼图片
段的应用交互,并且用户206将他或她的手指放置在UI上以移动两个或更多拼图片段,父代
内容片段可以被禁止缩放操纵,其否则将由用户206提供与父代内容片段相关联的多个用
户输入而引起。在另一示例中,应用(例如用于混合音乐的唱片骑师应用)可以向用户206提
供多个滑块控件。为了与滑块控件交互,用户206可以同时平移多个滑块。一般地,多个用户
输入将导致缩放功能。然而,父代内容片段可以禁止缩放操纵并且替代性地准许子代内容
片段同时平移而不实行缩放功能。
行为处置模块314还允许在UI操纵期间对可交互内容的配置的动态改变。在至少
一个实施例中,行为处置模块314在接收到用户输入之前声明用于内容的配置并且配置可
以至少部分地基于交互式内容的全局树310。动态改变使得行为处置模块314能够在UI操纵
期间修改运动或操纵的方向。例如,如果内容片段移动直到其到达边界,行为处置模块314
可以基于交互式内容的全局树310而决定如何重配置内容。
在至少一个示例中,内容可以积累其在单个操纵期间已经执行的任何运动。作为
结果得到的运动可以影响与父代内容片段和子代内容片段相关联的链接交互。如以上所描
述的,链接描述当子代内容片段到达边界并且作为结果,父代内容片段可以移动时,父代内
容片段与子代内容片段之间的交互。在至少一个示例中,用户206可以通过在特定方向上平
移子代内容片段来与子代内容片段交互。当子代内容片段到达边界时,子代内容片段可以
被约束在UI上任何进一步的移动,并且父代内容片段可以继续移动。与父代内容片段移动
在的方向相反的方向上的任何平移可以被约束,直到父代内容片段返回到其原始位置。也
就是说,子代内容片段可以不在相反方向上移动,直到其积累在相反方向上返回的运动。
一旦手势瞄准模块312和行为处置模块314确定了用于执行用户操纵的内容片段
以及将如何操纵内容片段,结果模块316可以向目标目的地递送结果以操纵UI上的各个内
容片段。目标目的地可以是应用或内容片段。在至少一个示例中,手势瞄准模块312和行为
处置模块314可以处理特定用户输入,并且结果模块316可以返回目标目的地或者可以推迟
目标决定,直到经过预定时间段。在至少一个示例中,结果模块316可以包括操纵管理模块
318和用于解释决定并且将输入路由至目标目的地的较低级输入栈。目标目的地可以是任
何通用的输入接收方(例如Win32 HWND或ALPC端点)。如果手势瞄准模块312和行为处置模
块314不标识针对特定用户输入的目标,结果模块316可以缓冲输入,直到在稍后时间由新
的输入或流逝的时间段决定目标。当手势瞄准模块312和行为处置模块314确定目标内容片
段时,可以以时间顺序向目标目的地重新指派针对用户输入的任何之前缓冲的输入。
在至少一个示例中,用户206可以提供多于一个输入。例如,用户206可以同时或接
近同时在触摸屏上使用两个手指。在至少一个示例中,结果模块316可以延迟返回针对第一
输入的目标,直到已经决定针对随后输入的目标。在至少一个示例中,操纵管理模块318可
以缓冲输入,直到已经决定针对随后输入的目标。决定可以基于接收到新的用户输入或流
逝的时间段。缓冲可以允许结果模块316确定是否应当向相同的目标内容片段发送第一输
入和第二输入,以及第一输入或第二输入是否与作为其它内容的子代内容的内容片段相关
联。
在一些示例中,用户206可以向特定内容片段引导其输入并且然后将输入重定向
到相同用户输入中的不同内容片段。在这样的示例中,结果模块316可以在输入递送中向每
一个内容片段通知改变,使得初始内容片段知晓不预期任何附加输入并且随后内容片段知
晓其将开始接收输入。为了完成这样的通知,结果模块316可以向每一个内容片段发送通
知。遗失捕获通知可以通知作为用户输入的原始目标的内容片段其将不再接收附加输入。
也就是说,响应于用户输入离开或从内容片段转移,结果模块316可以通知内容片段其将不
再接收输入。获取到捕获通知可以通知作为新目标的内容片段其现在将接收输入。也就是
说,响应于用户输入在新的内容片段上开始和/或转移到内容片段,结果模块316可以通知
内容片段其将接收向前的用户输入。结束捕获通知可以通知所有内容片段用户已经操纵脱
离用户设备208。
以上所描述的通知对于从具有操纵结束效应(例如快动点)的子代内容片段链接
到父代内容片段可以是有用的。例如,用户206可以平移以便使子代内容片段到达其边界。
当到达边界时,结果模块316可以提供捕获遗失通知以通知子代内容片段其将不再接收输
入,并且某个其它内容片段将接收针对相同用户操纵的输入。作为结果,子代内容片段可以
推迟任何操纵结束效应。此外,作为子代内容片段到达其边界和接收到遗失捕获通知的结
果,父代内容片段可以接收获取到捕获通知,该通知指示其是用户输入的目标。获取到捕获
通知可以允许父代内容片段区分用户输入从子代内容片段到父代内容片段的转移与新的
用户操纵。当用户206脱离用户输入208时,可以向所有内容片段提供结束捕获通知,使得每
一个可以实行其自身的操纵结束效应(例如快动点)。
如以上所描述的,结果模块316可以利用手势瞄准逻辑以用于计算可以应用于每
一个内容片段的任何运动的变换。手势瞄准逻辑可以用于直接向内容片段应用变换而不要
求来自应用的任何工作。除了直接应用变换之外,每一个变换可以作为用于每一个内容片
段的操纵的结构而向应用暴露(expose)。例如,手势瞄准逻辑可以确定的平移和缩放运动
可以由每一个内容片段针对给定输入帧而执行。在至少一些实施例中,多个内容片段可以
同时或基本上同时地执行运动。
图4图示了用于操纵UI(诸如UI 118)上的内容片段的过程400。
块402图示了交互式内容模块308,其收集和在交互式内容储存中存储信息。如以
上所描述的,交互式内容模块308可以存储关于UI及其元件的信息。例如,交互式内容模块
308可以存储关于可用于用户操纵的内容和与呈现在UI上的特定内容片段相关联的交互式
性质的信息。交互式内容模块308还可以存储呈现在系统(例如200,300)内的视觉内容。在
至少一个示例中,视觉内容可以存储在视觉内容树中。在一些示例中,维护在交互式内容树
和视觉内容树中的交互式内容可以集成在交互式内容的全局树310中。
块404图示了接收UI上的用户输入。如以上所描述的,用户206可以经由众多类型
的用户输入和输入设备与UI交互。此外,用户206可以与多个UI交互。
块406图示了标识各个内容片段的交互式内容模块308。如以上所描述的,交互式
内容模块308可以使用视觉内容树以用于在接收到指向UI操纵的用户输入之后执行初始命
中测试。基于初始命中测试,操纵器模块304可以确定几何形状或点值是否落在内容片段的
经再现的内容内以实行期望的UI操纵。在一些示例中,交互式内容模块308可以基于命中测
试的结果而确定交互式内容链。
块408图示了交互式内容模块308确定可用于各个内容片段的操纵。如以上所描述
的,交互式内容模块308可以比较命中测试的结果与交互式内容的全局树310,以基于当前
用户输入来标识可以潜在地被操纵的各个内容片段。当用户206与内容片段交互时,所维护
的交互式内容的全局树310可以标识各个内容片段可以如何移动或以其它方式被操纵。
块410图示了结果模块316导致UI上的各个内容片段的操纵。在至少一个示例中,
结果模块316可以直接修改UI上的各个内容片段的呈现。在其它示例中,结果模块316可以
向一个或多个应用306发送输入以操纵各个内容片段,而不是直接操纵UI上的各个内容片
段。
图5图示了用于在UI(诸如UI 118)上呈现视觉内容片段的过程500。
块502图示了在UI上接收用户输入。如以上所描述的,用户206可以经由众多用户
输入和输入设备与一个或多个UI交互。
块504图示了手势瞄准模块312,其确定可以在UI上操纵的视觉内容片段。如以上
所描述的,为了确定哪个内容片段执行操纵,手势瞄准模块312采用手势瞄准逻辑,该逻辑
考虑由特定内容片段支持的操纵、内容的变换和/或其它内容片段的操纵。
块506图示了行为处置模块314,其确定视觉内容片段以执行在UI上操纵视觉内容
片段。行为处置模块314可以利用多个准则来配置要在内容上执行的操作。如以上所描述
的,行为处置模块314可以考虑手势类型、当前用户输入状态和/或由其它内容片段执行的
运动。
块508图示了结果模块316,其在UI上呈现两个或更多视觉内容片段的操纵的结
果。
图6图示了用于交互式内容的全局树310的前向遍历的过程600。块602图示了手势
瞄准模块312遍历交互式内容的全局树310。手势瞄准模块312遍历交互式内容的全局树
310,在与特定内容片段相关联的父代节点处开始并且继续到与特定内容片段相关联的子
代节点,以确定可能用于特定内容片段的操纵类型。块604图示了手势瞄准模块312至少部
分地基于存储在交互式内容的全局树310中的交互而确定视觉内容片段能够执行的操纵。
块606图示了手势瞄准模块312确定父代节点禁止。如以上所描述的,在至少一个示例中,父
代节点可以在子代节点可以执行什么操纵上施加限制。作为结果,手势瞄准模块312基于父
代节点约束而确定一个或多个子代节点不被准许执行的操纵。
图7图示了用于交互式内容的全局树310的反向遍历的过程700。块702图示了手势
瞄准模块312在反向方向上遍历交互式内容的全局树310,在子代节点处开始并且继续到父
代节点。
块704图示了手势瞄准模块312在子代节点处执行每一个子代节点可以执行的操
纵。如以上所描述的,每一个子代节点标识子代节点或其父代节点可以执行的操纵,并且子
代节点将操纵投射到由内容片段支持的坐标空间。如果操纵被子代节点禁止,手势瞄准模
块312可以继续将操纵投射到由内容片段支持的坐标空间。如果操纵被子代节点准许,手势
瞄准模块312可以从投射到坐标空间的过程过滤这样的操纵。
块706图示了向交互式内容的全局树310的其它节点传递任何其余操纵以供处理。
任何不受支持(或未被处理)的操纵可以被投射到所支持的操纵的坐标空间中。
结论
最后,尽管已经以特定于结构特征和/或方法动作的语言描述了各种实施例,但是要理
解的是,在随附代表物中限定的主题不一定限于所描述的特定特征或动作。而是,特定特征
和动作作为实现所要求保护的主题的示例形式而公开。
示例条款
A. 一种计算机实现的方法,包括:在交互式内容储存中收集关于可用于用户接口(UI)
上的操纵的内容的信息;经由UI接收用户输入;响应于接收到用户输入,标识用户输入所关
于的至少一个内容片段;在交互式内容储存中标识至少一个内容片段以确定可用于至少一
个内容片段的操纵;以及响应于确定可用于至少一个内容片段的操纵,至少部分地基于可
用于至少一个内容片段的操纵而导致UI上的至少一个内容片段的操纵。
B. 如段落A所叙述的计算机实现的方法,其中标识至少一个内容片段包括标识两
个或更多内容片段,并且两个或更多内容片段中的至少一些由不同的应用生成。
C. 如段落A或B所叙述的计算机实现的方法,其中交互式内容储存包括交互式内
容树,其包括:关于可用于各个内容片段的交互的信息;以及关于可用于操纵的内容的信
息,以标识可用于操纵的内容之间的交互式关系。
D. 如段落C所叙述的计算机实现的方法,用户输入包括触摸输入并且触摸输入包
括两个或更多接触点;并且方法还包括基于至少一个内容片段和两个或更多接触点而确定
交互式内容链。
E. 如段落D所叙述的计算机实现的方法,还包括标识交互式内容树中的交互式内
容链以确定可用于至少一个内容片段的操纵。
F. 如段落C所叙述的计算机实现的方法,还包括经由UI接收新的用户输入;以及
至少部分地基于交互式内容树而导致UI上的各个内容片段的操纵。
G. 一种系统,包括至少存储操纵器模块和一个或多个应用的计算机可读介质;可
操作耦合到计算机可读介质的处理单元,处理单元适配成至少运行操纵器模块和一个或多
个应用,操纵器模块包括:配置成存储和定义与一个或多个应用相关联的内容片段之间的
交互式关系的交互式内容模块;以及配置成确定用于执行与多个内容片段相关联的用户输
入所导致的操纵的特定内容片段的手势瞄准模块。
H. 如段落G所叙述的系统,配置成基于以下中的至少一个来确定要在多个内容片
段上执行的操作的行为处置模块:手势类型、当前用户输入状态或由多个内容片段中的各
个片段执行的操纵。
H. 如段落G或H所叙述的系统,还包括,配置成向一个或多个应用递送结果或直接
递送由特定内容片段执行的操纵的结果模块。
I. 如段落G-I中的任何一个所叙述的系统,内容片段之间的交互式关系存储和定
义在交互式内容树中;并且手势瞄准模块还配置成遍历交互式内容树,在与一个或多个应
用相关联的父代节点处开始并且继续到与内容片段相关联的子代节点,以确定可准许用于
内容片段的操纵类型。
K. 如段落J所叙述的系统,其中父代节点约束子代节点的操纵,或子代节点约束
父代节点的操纵。
L. 如段落J所叙述的系统,其中响应于遍历交互式内容树,在父代节点开始并且
继续到子代节点,手势瞄准模块还配置成遍历交互式内容树,在子代节点处开始并且继续
到父代节点,以标识各个子代节点可以执行的操纵。
M. 如段落G-I、K或L所叙述的系统,其中结果模块还配置成响应于接收到用户输
入或在稍后时间递送结果。
N. 如段落M所叙述的系统,其中在稍后时间递送结果包括当接收到新的用户输入
时或在预定时间段流逝之后递送结果。
O. 如段落G-I、K、L或N所叙述的系统,其中结果模块还配置成向多个内容片段中
的各个片段提供通知,提供通知包括:响应于用户输入离开各个内容片段,向各个片段提供
遗失捕获通知;响应于用户输入转移到新的内容片段,提供获取到的捕获通知;以及响应于
终止用户输入,提供捕获结束通知。
P. 如段落G-I、K、L、N或O所叙述的系统,其中结果模块还配置成在多个内容片段
上执行变换,而不要求来自一个或多个应用的任何处理。
Q. 一个或多个编码有指令的计算机可读介质,指令在由处理器运行时,将计算机
配置成执行包括以下的动作:接收涉及操纵与至少一个应用相关联的两个或更多视觉内容
片段的用户输入,两个或更多视觉内容片段呈现在用户接口(UI)上;至少部分地基于用户
输入和交互式内容的集合而确定可以经由UI操纵的至少两个视觉内容片段;至少部分地基
于交互式内容的集合而确定执行操纵的至少两个视觉内容片段中的各个片段;以及在UI上
呈现两个或更多视觉内容片段的操纵结果。
R. 如段落Q的一个或多个计算机可读介质,其中交互式内容的集合包括交互式内
容树,并且确定执行操纵的至少两个视觉内容片段中的各个片段包括:遍历交互式内容树,
在与至少一个应用相关联的父代节点处开始并且继续到与父代节点相关联的一个或多个
子代节点;确定至少两个视觉内容片段能够执行的操纵;以及基于来自父代节点的约束而
确定一个或多个子代节点不被准许执行的被禁止操纵。
S. 如段落R所叙述的一个或多个计算机可读介质,其中确定执行操纵的至少两个
视觉内容片段中的各个片段还包括:以反向次序遍历交互式内容树,在一个或多个子代节
点处开始并且继续到父代节点;基于确定每一个子代节点可以执行的操纵,在子代节点处
执行每一个子代节点可以执行的操纵;以及向交互式内容树的其它节点传递任何其余操纵
以供处理。
T. 如段落Q或S中的任何一个所叙述的一个或多个计算机可读介质,其中两个或
更多视觉内容片段中的每一个与不同应用相关联。