CN107667338A - 用于在协作***中对对象进行分组的对象组处理和选择手势 - Google Patents

用于在协作***中对对象进行分组的对象组处理和选择手势 Download PDF

Info

Publication number
CN107667338A
CN107667338A CN201680031959.9A CN201680031959A CN107667338A CN 107667338 A CN107667338 A CN 107667338A CN 201680031959 A CN201680031959 A CN 201680031959A CN 107667338 A CN107667338 A CN 107667338A
Authority
CN
China
Prior art keywords
group
event
identified
client
touch
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201680031959.9A
Other languages
English (en)
Inventor
R·普科里奇卡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sea Wo Shi Co
Haworth Inc
Original Assignee
Sea Wo Shi Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sea Wo Shi Co filed Critical Sea Wo Shi Co
Publication of CN107667338A publication Critical patent/CN107667338A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04842Selection of displayed objects or displayed text elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/04817Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance using icons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • G06F3/04883Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures for inputting data by handwriting, e.g. gesture or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • G06Q10/101Collaborative creation, e.g. joint development of products or services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1044Group management mechanisms 
    • H04L67/1046Joining mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1044Group management mechanisms 
    • H04L67/1048Departure or maintenance mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2203/00Indexing scheme relating to G06F3/00 - G06F3/048
    • G06F2203/048Indexing scheme relating to G06F3/048
    • G06F2203/04808Several contacts: gestures triggering a specific function, e.g. scrolling, zooming, right-click, when the user establishes several contacts with the surface simultaneously; e.g. using several fingers or a combination of fingers and pen

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Business, Economics & Management (AREA)
  • Software Systems (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Human Resources & Organizations (AREA)
  • Strategic Management (AREA)
  • Computing Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Quality & Reliability (AREA)
  • Operations Research (AREA)
  • Marketing (AREA)
  • Economics (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

一种协作***,其可以被配置成在工作空间中支持大量活动客户端,其中工作空间被分配到不同对象组中。在参与工作空间同时,第一活动客户端可以将多个对象合并成一个组。对该组采取的动作维持群体内对象的比例和相对位置。这些动作被分配到工作空间中的第二活动客户端,其中第二活动客户端将这些动作应用到它们的对象副本,从而同步第一活动客户端和第二活动客户端的视口。总的来说,对对象组的动作包括调整大小、移动、钉住、删除和复制组。

Description

用于在协作***中对对象进行分组的对象组处理和选择手势
相关应用
本申请要求2015年6月26日提交的题为“Multi-Touch Selection Gestures”的美国申请No.62/185,501(律师案卷号No.HAWT 1020-1)的权利。
2013年11月26日提交的题为“Collaboration System Including A SpatialEvent Map”的共同未决、共同所有的美国专利申请No.14/090,830(律师案卷号No.HAWT1011-2)通过引用并入本文,就如同在本文中也充分阐述一样。
技术领域
所公开的技术涉及用于数字协作的方法和***,并且更具体地涉及数字显示***,该***促进具有在全局工作空间中对对象进行分组的工具的多个同时用户并且促进用于在这种***中可用的分组的控制操作。
背景技术
数字显示器通常与触摸屏覆盖一起,以与白板类似的方式而被使用。在一些***中,这样的显示器被联网并且可以用于协作,以使得对一个显示器上的显示图像做出的修改被复制在另一个显示器上。协作***可以被配置成运行协作会话,在该会话中,位于不同客户端平台的用户共享工作空间,该工作空间例如在我们2013年11月26日提交的题为“Collaboration System Including A Spatial Event Map”的共同未决美国申请No.14/090,830中描述的。这种***的分布式特性允许不同地方的多个用户同时在同一工作空间中进行数据交互和改变,并且还可以在没有其他用户观察工作空间时进行。
发明内容
描述了一种***和方法,其用于在协作会话内以及在协作会话的参与者的分布式网络内选择和管理图形构造的组。例如,公开了一种***和方法,通过该***和方法,一个客户端平台处的用户可以使用组规则对对象工作空间中的对象进行分组,以实现对对象进行移动、调整大小、编辑、删除、复制和其他类型的操纵目的,并且同时以有效方式与其他平台处的用户进行通信。
本文中所描述的***包括网络节点,该网络节点包括具有物理显示空间的显示器、用户输入设备、处理器以及通信端口。网络节点可以被配置有逻辑以便建立与一个或多个其他网络节点的通信,并且为协作会话存储与图形目标有关的事件的空间事件日志的全部或部分,该图形目标在虚拟工作空间中具有针对会话而分配的位置。日志中的条目包括事件的图形目标在虚拟工作空间中的位置、事件的时间、与图形目标有关的动作、以及图形目标的目标标识符。***可以将物理显示空间中的屏幕空间映射到虚拟工作空间内的映射区域。所公开的技术可以标识映射区域内的空间事件日志中的条目,并且将由所标识的条目而标识的图形目标渲染在屏幕空间上。
***可以在网络节点处接受来自用户输入设备的输入数据,从而创建标识本地屏幕空间上的图形目标组的事件。组选择事件可以包括使用触摸屏或其他输入传感器执行的手势,诸如本文中所描述的示例,例如双指套索(lasso)、四指套索、字符串套索、拉链(zip)套索和选择模式选择。
***可以向会话中的一个或多个其他网络节点发送消息,该消息包括通知接收者组选择事件,以及将图形目标标识为所标识的组的员。***还可以发送标识事件的消息,该事件诸如针对所标识的组而发生的组操纵或组管理事件。
消息的接收网络节点可以将事件添加到在它们相应的网络节点处使用的会话的空间事件映射的实例。如果事件与接收者的屏幕空间内的图形目标有关,则接收者可以在其屏幕空间中检测并且渲染事件的效果。使用本文中所描述的技术,协作会话中的多个节点可以近似实时地与组功能交互。
客户端侧节点可以由接受来自用户输入设备的输入数据的协作者来应用于创建对象组的组规则,从而创建在屏幕空间上标识图形目标组的事件,并且向一个或多个其他网络节点发送标识所标识的组的成员的消息。
组规则可以包括发送标识所标识的组的成员改变的消息。
组规则可以包括将输入解释为指示所标识的组内的图形对象的移动的姿势;并且针对所标识的组的每个成员,移动屏幕空间中的所标识的成员,以及向一个或多个其他网络节点发送指示所标识的成员的移动。
组规则可以包括将输入解释为指示调整所标识的组内的图形对象大小的手势;并且针对所标识的组的每个成员,在屏幕空间中调整所标识的成员的大小,以及向一个或多个其他网络节点发送指示调整所标识的成员大小的消息。
组规则可以包括将输入解释为指示删除所标识的组内的图形对象的手势;并且针对所标识的组的每个成员,删除屏幕空间中的所标识的成员,以及向一个或多个其他网络节点发送指示删除所标识的成员的消息。
在组处理中应用的其他逻辑规则可以包括将输入解释为指示移除所标识的组内的图形目标的手势,从所标识的组中移除所标识的图形目标,以及向一个或多个其他网络节点发送指示移除所标识的图形目标的消息。
在组处理中应用的其他逻辑规则可以包括将输入解释为指示将图形目标添加到所标识的组的手势,将所标识的目标添加到所标识的组,以及向一个或多个其他网络节点发送指示添加所标识的图形目标的消息。
组规则可以包括将输入解释为指示在所标识的组内图形对象的复制的手势;并且针对所标识的组的每个成员,复制所标识的组的成员,以及向一个或多个其他网络节点发送指示该成员的复制的消息。
组规则可以包括将输入解释为指示所标识的组的取消分组的手势;并且针对所标识的组的每个成员,从所标识的组中移除该成员,以及向一个或多个其他网络节点发送指示移除成员的消息。
描述了一种组选择手势,该手势在本文中被称为“四指套索”。四指套索手势被用于定义屏幕空间内的区域,该屏幕空间围绕选定图形目标组或与之相交,该图形目标在物理显示器上被渲染。在一个实现方式中,使用第一手上的两个手指触摸的屏幕上的四个点,并且同时第二手上与触敏物理显示器接触的两个手指被用于定义矩形或其他多边形,在该矩形或其他多边形内,图形目标被添加到组。
提供以上发明内容以便提供对本文中所描述的协作***的一些方面的基本理解。本发明内容不旨在标识所公开的技术的关键元件或必要元件,也不旨在描述所公开的技术范围。
附图说明
将参照其具体实施例描述公开的技术,并且将参照未被按比例绘制的附图,其中
图1图示了在协作工作空间内协作的网络节点的***。
图2图示了在物理屏幕空间上渲染的无约束工作空间的部分。
图3A、3B、3C、3D和3E图示了创建组的阶段。
图4图示了组创建的流程图。
图5A图示了在屏幕空间上存在五个触摸点的示例。
图5B图示了在屏幕空间上存在六个触摸点的示例。
图5C图示了触摸点未精确符合可配置形成的示例。
图6A、6B和6C图示了单个触摸组创建。
图7A和7B图示了两指套索组选择序列中的阶段。
图8A和8B图示了用于复制组的序列中的阶段。
图9A和9B图示了利用圆圈套索创建组的阶段。
图10A、10B和10C图示了利用滑动套索创建组的阶段。
图11图示了数字显示器协作环境的示例方面。
图12图示了数字显示器协作环境的附加示例方面。
图13A、13B、13C、13D、13E和13F是用于工作空间的工作空间数据的部分的数据结构简化图。
图14是例如,客户端侧节点计算机***的计算机***1210的简化框图。
图15是示出了用于处理在客户端侧节点处从其他节点接收的组相关事件的逻辑的简化流程图。
图16是示出了用于处理在客户端侧节点处从本地用户输入接收的组相关事件的逻辑的简化流程图。
具体实施方式
提供以下描述,以使得本领域技术人员能够实现和使用所公开的技术,并且以下描述是在特定应用和要求的上下文中被提供。对于本领域技术人员而言,对所公开的实施例作出各种修改将是显而易见的,并且在不背离所公开的技术的精神和范围的情况下,本文中所限定的一般原理可以被应用于其他实施例和应用。因此,所公开的技术不限于所示的实施例,相反所公开的技术是与本文所公开的原理和特征相符合的最广范围一致。
“无限工作空间”问题包括需要跟踪人员和设备如何随时间与工作空间交互。为了解决这个核心问题,在我们的共同未决的2013年11月26日提交的题为“CollaborationSystem Including a Spatial Event Map”的美国申请No.14/090,830中描述了空间事件映射以及使用多个空间事件映射和多个协作组支持协作的***架构,其通过引用而被并入本文,就如同在本文中做了充分阐述一样。空间事件映射包括定义工作空间中的目标和事件所需的信息。从空间、事件、空间中的事件的映射以及由包括多个同时用户的多个用户对空间访问的角度,考虑该技术是有用的。
空间:为了支持给定协作会话的无限量空间信息,提供了一种组织被称作工作空间的虚拟空间的方式,例如其特征可以在于由在一个或两个维度上具有基本上无限延伸的二维笛卡尔平面,以这种方式使得可以将新内容(该内容可以在空间中被布置和重新布置)添加到空间中,用户可以从空间的一部分导航到另一部分,并且用户可以在需要时很容易在空间找到所需的东西。
事件:与工作空间的交互被作为事件处理。经由有形的用户接口设备和***,人员可以与工作空间交互。事件具有可以定义或者指向要在物理显示器上显示的目标图形对象的数据、作为在工作空间内创建、修改、移动的动作和删除目标图形对象的动作以及与其相关联的元数据。元数据可以包括信息,该信息诸如发起者、日期、时间、工作空间中的位置、事件类型、安全信息和其他元数据。
在工作空间中跟踪事件使得***不仅能够将工作空间中的空间事件以其当前状态呈现,而且可以在多个显示器上与多个用户共享该空间事件,以便共享可能关于内容的相关外部信息,并且了解空间数据如何随时间演变。此外,在定义无约束工作空间的同时,在所需数据量方面空间事件映射可以具有合理大小。
***中可以存在几种不同种类的事件。事件可以被分类为持续事件,也称为历史事件,该事件被永久存储或者该事件可以由***在其有效寿命期间维护工作空间所需的时间长度内存储。事件可以被分类为短暂事件,其仅在短时间内有用或者有意义,并且在参与会话的其他客户端之间实时共享。持续事件可以包括存储在撤消/重放事件流中的历史事件,该事件流可以与会话的空间事件映射相同或者可以从来自会话的空间事件映射中导出。短暂事件可以包括未存储在***的撤消/重放事件流中的事件。协作***可以使用一个或多个空间事件映射,以便跟踪***中工作空间上的持续事件和短暂事件两者的一些实施例中的工作空间中的时间和位置。
映射:工作空间中的事件映射可以包括离散空间事件的总和。当工作空间的持续空间事件可用时,那么工作空间可以“被映射”到具有屏幕空间的客户端侧节点处的显示器或屏幕,其中如本文中所使用的屏幕空间是指屏幕上的特定物理尺寸的可显示区域,该区域可以被映射到虚拟工作区中的位置(和缩放水平)或区域。位于虚拟工作空间的映射区域中的图形对象将要被显示在客户端侧节点处的可显示区域中。
多用户访问:一个关键特征是在工作空间同时工作的所有用户或多个用户应该能够以近似实时的方式看到其他用户的交互。空间事件映射允许具有在不同物理位置的显示的用户在其相应的可显示区域内,针对任何给定的工作空间上的所有用户,体验近似实时事件,该近似实时事件包括持续事件和短暂事件两者。
针对任何给定工作空间上的所有用户,用户在客户端节点处对图形目标组的操纵(被称为组交互,其诸如是组创建、复制、移动、编辑、组成员关系修改、删除和其他组管理交互)可以在其相应的屏幕空间内被体验为近似实时事件,该近似实时事件包括持续事件和短暂事件两者。
小部件:小部件是图形目标,其作为用户可以与屏幕空间进行交互或查看的工作空间的组件而被包括在屏幕空间中,例如注解、图像、时钟、网络浏览器、视频播放器、位置标记等。窗口是小部件,其是具有两个斜对角的矩形区域。大多数小部件也是窗口。
所描述的协作***可以基于空间事件映射,其包括在工作空间中定位事件的条目。空间事件映射可以包括事件日志,其中日志中的条目具有事件的图形目标在工作空间中的位置和时间。此外,日志中的条目可以包括参数,其标识用于在显示器上渲染图形目标的图形构造(例如,url或实际文件)。图形构造在被渲染时,在屏幕空间中具有位置和尺寸。描述了服务器端网络节点和客户端侧网络节点,其交互以形成协作***,通过该协作***,空间事件映射可以被授权的客户端访问,并且客户端可以利用空间事件映射来渲染本地显示区域,并且创建可以添加到空间事件映射并且与其他客户端共享的事件。
与特定协作会话相关联的工作空间可以被表示为无约束虚拟区域,其提供没有指定边界的参考帧,在该边界内,在时间和虚拟协作空间中定位事件。工作空间可以涵盖虚拟区域,其实际上无限的,这是在于它具有足够大的大小,使得客户端侧网络节点超越其边界而导航的可能性可以忽略不计。例如,涵盖映射到包括1,000,000像素乘以1,000,000像素的物理显示空间的虚拟区域的大小在一些设置中可以被认为实际上是无限的。在一些示例中,工作空间本质上是“无限的”,这是在于其大小仅受限于被用于标识虚拟空间内的位置的寻址方案的范围。此外,***还可以包括若干个工作空间,其中每个工作空间可以被单独配置以供单个用户或用户组访问。
可以根据应用程序接口API来配置协作***,使得服务器侧网络节点和客户端侧网络节点可以关于协作事件而进行通信。可以定义消息,其标识事件,该事件创建或修改在工作空间和时间中具有位置的图形目标以及图形目标组。这些事件可以被分类为历史事件和短暂事件或易失性事件,其中历史事件被存储在空间事件映射中,并且短暂事件不被永久存储在空间事件映射中,而是被分配在协作会话的其他客户端中。
包括协作***操作信息的消息可以在应用层中交换,该消息例如包括协作***内的节点间的历史事件和短暂事件。
协作***可以具有多个分布式客户端节点,其中显示器既被用于基于由共享协作服务器管理的工作空间数据来显示图像,又被用于接受可以有助于工作空间数据的用户输入,同时使得每个显示器能够基于来自其他客户端节点的会话历史记录、实时本地输入和实时输入来快速构建要显示的图像。
本文中所描述的技术可以被用于实现***和方法,该***和方法用于使用触摸手势来选择要分组在一起并且被视为单个对象的多个对象。手势包括物理显示空间上的一个或多个触摸点,其中触摸点可以包括移动,并且其中物理显示空间处的传感器生成指示每个触摸点随时间的位置的数据。所生成的数据指示用户触摸输入。手势可以包括几个不同的同时触摸手势。一旦对象被选择和分组,就可以采取对选定对象有影响的各种动作(例如,复制、删除、调整大小、移动)。当对象被分组时,它们可以被视为单个对象(即,如果选择了对象中的一个对象,则该组被选择)。该组对象是个全局事件,并且对全局协作有影响。
在实施例中,计算机***接收指示要被包括在组中的对象的用户触摸输入。选择模式可以通过检测用户触摸输入来被发起。用户触摸输入可以是与发起选择模式相关联的预先定义的触摸类型和/或手势。例如,可以在第一对象上检测用户触摸输入。该用户触摸输入既可以发起组选择模式,也可以将第一对象添加到新创建的组中。该用户触摸输入可能是工作空间中的第一对象的双指轻敲。在实施例中,选择模式可以用其他手势发起,或者可以经由在工具栏上找到的按钮发起。
在处于选择模式的同时,可以接收用户触摸输入,其指示将附加对象添加到组中。用户触摸输入可以包括附加对象中的每一个附加对象上的轻敲的用户触摸输入。在实施例中,指示附加对象的用户触摸输入可以是从第一对象连续滑过要添加到组的每个附加对象。在实施例中,指示附加对象的用户触摸输入可以是通过指示矩形的角落的用户触摸输入所绘制的矩形,其中框内的对象被选择为包括在组中。在实施例中,指示附加对象的用户触摸输入可以是在要包括在组中的对象周围绘制围合形状的用户触摸输入。
在实施例中,在选择模式期间,***可以显示被选择为处在组中的对象的视觉指示。例如,选定的对象可以在选择模式期间随着阴影、音调或色调改变而临时显示。进一步地,可以在选定对象周围显示诸如矩形之类的指示。未选定对象可以存在于矩形内,并且可以具有视觉指示以便区分未选定对象与选定对象,例如,未选定对象可以保持其原始阴影,并且选定项目可以看起来变淡。
在组选择模式期间,可以显示与组相关联的工具栏。工具栏可以包括允许用户向组发起功能的按钮。示例功能可以包括创建组、移动组、调整组大小、删除组、选择附加对象作为组的部分、以及对选定对象进行取消分组。一旦被分组,组中的对象和对组执行的功能就将在组中的每个对象上执行。进一步,因为组被视为对象,所以该组可以被添加为另一组中的对象。进一步,因为组被视为对象,所以协作空间中的组的位置将以与协作空间中的对象类似的方式而被存储。
在实施例中,当组中的对象被选择时,该组被选择并且动作可以被应用于该组。进一步,在实施例中,用户可以选择组中的对象以从组中移除对象,而组中的对象中的其余对象保持分组。
四指套索
四指套索手势用于选择在物理显示器上渲染的工作区内的对象。在一个实现方式中,触摸点集合被检测,并且被布置成使得当第一手上的两个手指和第二手上的两个手指同时与活动客户端的触敏物理显示器相接触时,可以做出该集合。该事件可以发起组选择模式,并且在信号指示选择序列结束时(诸如感测到的触摸点中的一个触摸点结束时(例如,当手指从屏幕上移除时)),由四个手指创建的矩形内的对象被添加到组中。在这种情况下,可能不需要指示选择模式的单独手势。
图1图示了支持协作工作空间内的协作交互的网络节点的***。该图示示出了第一网络节点101、第二网络节点151和虚拟工作空间165的部分。在所图示的示例中,第一网络节点101包括屏幕空间105,其中触摸传感器可以作为用户输入设备而执行,并且第一网络节点101还包括日志文件111,其可以存储定义空间事件映射或表示虚拟工作空间的内容的其他类型数据结构的事件记录。第二网络节点151包括屏幕空间155,其中触摸传感器还可以作为用户输入设备而执行,并且二网络节点151还包括日志文件161,其可以存储定义空间事件映射的事件记录。空间事件映射可以标识虚拟工作空间165的内容,在该示例中,该虚拟工作空间165包括两个图形目标的组191,其中图形目标组可以由边界或以其他方式在屏幕上被指示。
第一网络节点101将在视口177内的对象显示到在物理显示空间103内的屏幕空间105内呈现的虚拟工作空间165中。在该示例中,屏幕空间105包括物理显示空间103的整个可显示区域并且具有与物理显示空间103相同的分辨率。由虚拟工作空间内的视口177的相对角落的坐标所标识的区域包括在屏幕空间105内渲染的图形目标组191的坐标。第二网络节点151包括进入在物理显示空间153内定义的屏幕空间155内渲染的虚拟工作空间165中的视口175(其与视口177重叠但与其不同)。在该示例中,屏幕空间155是物理显示空间中并且小于整个显示空间的窗口,并且可以具有与物理显示空间上的屏幕空间不同的分辨率。由虚拟工作空间内的视口175的相对角落的坐标所标识的区域包括在屏幕空间155内渲染的图形目标组191的坐标。
在一个实现方式中,诸如四指套索之类的手势可以生成标识多个图形构造的事件,其中图形构造的身份被加入到组中。在一个实现方式中,网络节点101可以识别指示图形目标组191的事件。在该实现方式中,第一网络节点101可以向参与虚拟工作空间165的其他网络节点(诸如第二网络节点151)发送消息。指示每个触摸点的消息可以由第一网络节点101生成,并且从第一网络节点101发送到第二网络节点151,使得第二网络节点151可以渲染触摸点的指示符。消息还可以包括标识第一网络节点101上的潜在组成员的消息,这些消息被发送到第二网络节点151,使得第二网络节点可以渲染潜在组成员的指示符。在一个实现方式中,一旦发生选择结束事件(诸如从触摸点抬起手指),则所公开的技术包括模块,其执行逻辑以计算由触摸点创建的多边形内的图形构造的身份并且计算消息,其标识历史事件被发送并且事件被记录。然后,历史事件被发送到参与虚拟工作空间165的其他网络节点,并且被存储在空间事件映射中。
图2
图2图示了在屏幕空间上渲染的工作空间的部分。虚拟工作空间201可以包括被称为对象223、227、254、257、289的多个图形构造,其可以是事件的图形目标,其中每个对象具有在工作空间内坐标。客户端侧网络节点的物理显示空间可以是触敏显示器,其中显示分辨率包括在宽度和高度的每个维度上若干个不同的像素。屏幕空间261是显示器上的具有x,y坐标的区域,其可以是显示器上的窗口,或者整个显示器,其中屏幕空间的x,y坐标等于物理显示器的尺寸。屏幕空间261由物理显示器上的显示客户端渲染。本地显示客户端可以具有覆盖屏幕空间的触摸屏,该触摸屏被用作用户输入设备来创建事件。本地显示客户端还可以有其他输入设备,诸如鼠标。虚拟工作空间201内的映射区域(还被称为视口203)被渲染在物理屏幕空间261上。视口是可以由用于其中心的x,y坐标以及指示到工作空间的缩放级别的z坐标而定义的多边形。视口还可以由具有在虚拟工作空间201内的坐标的两个相对的角落来定义。视口203的坐标被映射到屏幕空间261的坐标。在一个示例中,视口203内的对象223、227、254、257被渲染在屏幕空间261上。视口203的工作空间中的坐标可以被改变,其可以改变包括在视口内的对象,并且其中改变将在屏幕空间261上被渲染。视口203的缩放级别或z级别可以被增加,以包括工作空间201的较大部分,或者被减小以包括工作空间的较小部分。缩放级别的改变还可能被渲染在屏幕空间261上。在另一实现方式中,可以改变视口203的角落的坐标,其可以改变包括在工作空间内的对象,并且其中改变可能被渲染在屏幕空间261上。
对象223、227、254、257、289可以被移动到位于视口203的边界内或视口的边界之外的坐标。图2图示了工作空间的部分中的五个对象223、227、254、257、289以及围绕五个对象中的四个对象的视口203,其中四个对象223、227、254、257被渲染在屏幕空间261上。
图3A至图3E
图3A、3B、3C、3D和3E图示了使用四指套索创建组的过程。
图3A图示了具有渲染对象223、227、254、257的屏幕空间261。还图示了包括可以通过屏幕空间261上的第一手做出的两个触摸点333A、343A以及可以由屏幕空间上的第二手做出的触摸点367A、377A的四个触摸事件。在该示例中,最上面的触摸点333A被确定为矩形325A的最上部分,最左侧触摸点343A被确定为矩形的最左部分,最右侧触摸点367A被确定为矩形的最右部分,并且最下面的触摸点377A被确定为矩形的最底部。可以使用矩形以外的其他类型的多边形。在触摸点在选择过程期间被移动时,四指套索手势被图示为在图3B至图3E所示的屏幕空间渲染的序列。
由矩形包围或相交的对象可以是组创建事件的图形目标。在这个示例中,可以标识完全适配在矩形325A内的对象254、257并且将其添加到对象列表。在另一示例中,可以标识与矩形325A(诸如对象227)的边界重叠的对象,并且将其添加到列表中。显示客户端可以通过改变诸如色调或边界之类的属性来指示对象。在这个示例中,矩形内部并且被添加到列表的对象254、257的边界被加粗。
可以从触摸事件来确定每个触摸点,该触摸事件是存储在本地日志中的由触敏显示器发信号通知的动作或动作序列。在一些实施例中,该事件还可以被传送到一个或多个其他网络节点。当前示例具有四个同时触摸事件,其创建四个触摸点,其中触摸点通过彼此靠近而成对分组。在诸如支持图12的显示器1102c的网络节点之类的网络节点上,可以在任何时间发生若干个触摸事件。所公开的技术可以创建用于每个触摸点的短暂事件或易失性事件,并且将短暂事件传送到其他网络节点。当利用组选择配置检测到四个触摸点时,本地节点执行逻辑以在屏幕上标识多边形,并且显示其边界的指示。在这种情况下,当手指中的一个手指被抬起时,四指套索手势此时是由本地节点创建的组创建事件,并且与由手指抬起时由四个手指表示的多边形界定的区域中的对象的列表一起被发送。其他客户端可能不会产生多边形的指示符,其在来自手指的触摸点在显示器上移动时而被创建,要么因为在组创建事件之前没有广播临时触摸事件而被创建,要么因为其他客户端被编程为延迟渲染指示符,直至组创建事件被接收为止而被创建。通过推迟组创建事件消息直至由移除触摸中的一个或多个触摸完成手势,当手指触摸移动以包括更多对象时,对于会话中的对象没有“实时的”选择状态改变。
在该示例中,事件类型可以是指示作为组选择手势的部分的手势的新敲击的开始的代码。在触摸点移动通过触敏显示器时,可以用另一代码的事件类型来创建“ve”记录,其指示先前启动的敲击的延续。结束事件(诸如敲击结束时)可以生成具有指示敲击结束的事件类型的“ve”记录。“ve”记录的序列被发送到其他网络节点,其中每个接收网络节点可以渲染与每个组选择事件相关联的图形构造(边界渲染、突出显示等)。可以使用“he”(历史事件)记录或历史事件集合,共享组选事件的完成。
在一个实现方式中,触敏显示器具有传感器,其检测屏幕上的触摸事件,并且生成标识针对触摸事件或多个事件感测到的坐标的数据。一个或多个传感器可以同时检测多个触摸事件,并且为它们都提供数据。来自传感器的数据被处理,以诸如通过找到事件的数据的中心点或其他来标识用于每个事件的坐标。
网络节点中的逻辑执行算法,该算法选择四个同时触摸事件中的两个触摸点的位置作为第一对,并且将另外两个触摸点标识为第二对。支持物理屏幕空间261的网络节点可以计算可能通过四个触摸点333A、343A、367A、377A的矩形,并且在屏幕空间上显示矩形325A。在四个触摸点仍然被触摸的同时,诸如矩形325A之类的视觉指示器被用于指示四指套索的边界。在一个实现方式中,虚线指示矩形325A的边界。在用户在屏幕上移动触摸点时,潜在组矩形325A边界随触摸点而移动。
例如,在稍后客户端渲染如图3B所示的屏幕空间时,图示在由第一手创建的两个触摸点333B、343B已被移动之后的渲染,而由第二手创建的两个触摸点作为触摸点367B、377B而保持静止。作为结果,对象223落入矩形325B的边界内。在这个示例中,对象223的边界被加粗,以指示其在潜在的组矩形325B内的成员资格。
可以移动触摸点,以使得完全位于潜在组边界内的对象不再位于潜在组内。图3C图示了在第一手的触摸点333C、343C被移动到屏幕空间261上的新位置并且第二手的触摸点367C、377C还被移动到屏幕空间的新位置之后,屏幕空间的渲染。在这个示例中,移动使得潜在组矩形325C的边界移动,以使得它与触摸点的新位置相交。潜在组矩形325C的新边界不再完全围合对象223、对象254,并且对象223、对象254的边界从手势的图形目标列表中被移除,并且渲染的图形构造可以诸如通过不加粗体而被改变。潜在组矩形325C的新边界仍然完全围合对象257,其继续具有粗体边界。潜在组矩形325C的新边界还完全围合对象227,其现在具有用于指示的粗体边界。
当选择结束事件发生时(诸如指示用户从触摸点移除一个或多个他们手指的信号),网络节点可以将图形目标组标识为组的部分。活动客户端可以创建历史事件(“he”)记录来创建类型“group”,其包括创建该组的活动客户端的标识以及该组内的子节点列表,该子节点在该示例中为图3D的对象227和对象257。“he”记录被存储在本地空间事件日志中,并且被传送到空间事件映射。支持屏幕空间261E的活动客户端可以例如通过包围组中的对象的组矩形335或者成员对象的边界的阴影或色调的改变,创建最终组的视觉指示符。在下文所包括的应用程序编程接口(API)中定义了“he”“create”“group”记录。“he”记录可以从网络节点被传送到参与工作空间的一个或多个其他网络节点。
//client"->server
[client"id,
"he",
target-id,
"create",
{"type":"group",
-id":"S3aS2b392S8f62fce",
-children":[array of target IDs of widgets that should be part of thegroup]}]
如图3E所图示,一旦“he”记录已经被传送到另一个网络节点并且被添加到定义工作空间的记录中,则工作空间201内的组335可以被渲染在任何活动客户端的屏幕空间261E上,其中活动客户端的视口包括该组。可以执行在创建组的节点以及接收消息的任一节点处的组操作。一旦对象已经被包括在组中,客户节点就可以被指定为该组的所有者,并且其可以例如被锁定,并且在其被锁定的同时,其只能被该组的所有者来修改。在一个实现方式中,可以在一个或多个其他网络节点处,提供图形用户接口按钮或其他用户输入构造,以使得它们可以获得组的所有权。
组操纵规则可以在每个客户端节点处实现。规则可以包括允许对象一次只能成为一个组的部分的逻辑。一旦已经创建了图形目标组,就可以对其应用诸如调整大小、复制、移动和删除之类的操作。在一个示例中,用户可以通过触摸该组内的对象来标识该组,以选择该组。一旦已经选择了该组,用户就可以通过触摸该组中的对象而不释放它来移动该组,然后跨屏幕上移动该组。在该示例中,移动响应于被解释为要求对象随组移动的输入的手势,从而移动组中的对象并且向其他节点发送消息以移动每个对象。在另一实现方式中,用户可以利用鼠标点击对象,然后利用鼠标抓住对象并且移动它。释放鼠标按钮可以将对象留在工作空间201内的对象的新位置。在组移动期间,创建“ve”(易失性事件)记录,其在及时基础上跟踪该组的工作空间中的移动,该及时基础可以是1/40秒一次。一旦用户从屏幕上移开手指,活动客户端不再生成“ve”记录,并且然后生成指示组的最终坐标的最终“he”记录。“ve”和“he”记录都被传送到工作空间中的所有其他参与者。在移动组的示例中,创建了标识移动量和方向的“he”“position”记录,使用“he”“position”记录的“rect”分量和“he”“position”记录的“order”分量的组标识缩放级别。下文在API章节对组动作进行更充分描述。
//server<--client
[client-id,"he",target-id,"position",{"rect":[-1298,-390,-1018,-230],"order":4}]
//server-->client
[client-id,"he",target-id,event-id,"position",{"rect":[-1298,-390,-1018,-230],"order":4}]
在一些实施例中,仅使用“position”he消息中的“rect”参数的前两个分量(x和y),并且它们表示创建时相对于组位置的移动量。因此,对于在工作空间中任何地方创建的对象组,然后将该组10工作空间单元拖到右侧,然后将十个单元拖到顶部,所得到的位置事件的‘rect’分量将是[10,-10,1,1]。这些移动参数在工作空间记录中与组的成员相关联,因此接收“position”事件的其他节点可以将移动应用于组的成员。这种途径可以避免必须在改变组的边界或成员资格列表的选择/取消选择事件对象上,发送位置事件。至于最后两个数字(在该示例中为1,1),它们可能未被使用,或者可能被用来表示相比于初始组大小的水平缩放因子和垂直缩放因子。所以,1意味着组的大小没有改变。如果检测到组上的捏拉缩放手势,以使其达到最初的两倍,则所得到的‘rect’将是[10,-10,2,2]。可替代地,如果检测到组中的捏拉缩放手势,以使其成为初始大小的一半,则所得到的‘rect’将是[10,-10,0.5,0.5]。在另一可替换方案中,可以利用其他类型的组位置参数。
动画可以出现在显示器上以指示正在对组采取的动作。例如,在屏幕上移动组的同时,客户端可以渲染其屏幕空间,以使组改变颜色、阴影或轮廓。特定节点上的组动画可以被本地编程。在可替换的***中,工作空间中的移动过程可以包括在协作的记录中,并且通过以下记录的变化报告给其他节点。在以下示例中,“he”“template”记录指示米黄色的颜色设置。
[client-id,"he",workspace-id,event-id,"template",{"baseName":"sessions/all/Beige"}]
删除组使得针对该组生成“he”“delete”删除记录。
[client-id,"he",target-id,"delete",{"hidden":true}]
组的取消分组首先使得创建具有组target-id,而不具有子节点的“he”“membership”记录。然后,可以针对该组生成“he”“delete”删除记录。
[client‐id,"he",target‐id,"membership",{"children":[]}]
[client-id,"he",target-id,"delete",{"hidden":true}]
组创建示例
//client"->server
[client"id,
"he",
target-id,
"create",
{"type":"group",
-id":"S3aS2b392S8f62fce",
-children":[]}]
属性
type(string)“组”
id(strlng)组的唯一标识符
children(array)应该作为组的部分的下部件的target-ld阵列
通用组位置示例
//client-->server
[client-id,he,groupid,'position',{"rect":[0,0,0,0],"order":4}]
属性
rect(object)组的rect。被指定为x1、y1、x2、y2
order(int)目标组的z次序
成员资格
替换目标对象的子节点。被用于分组项。
//server<‐‐client
[client‐id,"he",target‐id,"membership",{"children":[53a52b39250f62fce,53a52b39250f62fce]}]
//server‐‐>client
[client‐id,"he",target‐id,event‐id,"membership",{"children":[53a52b39250f62fce,53a52b39250f62fce]}]
属性
children(array)必要的。阵列包括至少一个小部件ID,以包括在组中。为了移除所有子节点,替代地应当使用删除消息。
组文档创建示例
//server‐‐>client
[client‐id,
"he",
target‐id,//group document id
event‐id,
"create",
{
"type":"document",
"rect":[x1,y1,x2,y2]
"maxWidth":123,
"maxHeight":456,
"layout":"stacked",
"title":"title of this document",
"assetURL":"xxx/xxx/xxx.docx",
"hidden":true,
"pin":false,
"activeChildId":"id1838094221",
"children":[
"id0398749123",
"id1838094221",
"id2849239042",
"id3849012830"]}]
属性
type(string)“groupdocument”
activeChildId(string)活动的子节点Id,诸如当前显示的PDF/Doc页面
children(array)子节点(页面)对象ID阵列,阵列次序表示子节点(页面)次序
layout(string)定义客户端布局,以渲染该组文档。
说明与HistoryEvent/VolatileEvent相关的改变中的一些改变的很好示例是移动对象组。在移动组同时,接收用户输入的客户端标识组的成员,并且针对每个标识的对象,生成消息序列。当通过拖动组来移动/调整大小对象时,一系列易失性事件(VE)诸如通过向服务器发送消息被发送到其他网络节点,该服务器将消息重新广播给被订阅到工作空间的所有客户端:
一旦用户完成移动组,则客户端发送历史事件序列,来指定对象的位置和次序:
客户端节点包括逻辑,该逻辑被用于下载空间事件映射或空间事件映射的部分,并且解析空间事件映射以组成要在屏幕空间中显示的图形对象。此外,为了支持组操作,在解析空间事件映射期间,可以标识每个组中的所有组和成员。可以创建并且存储文件,该文件列出所标识的组。当从其他网络节点接收到携带新事件的消息时,事件的图形目标可以与在文件中所标识的组的成员相匹配。事件的处理可以基于现有组的成员资格而被修改。当接收诸如上文所描述的成员资格消息之类的消息时,组成员资格文件可以与在本地空间事件映射中存储事件一起被更新。
图4图示了由网络节点的逻辑执行的组创建过程的流程图,该网络节点具有用于渲染屏幕空间的显示器,该网络节点被称为客户端侧网络节点。在一个实现方式中,客户端侧网络节点可以处理在触敏显示器上发生的四个同时触摸事件401。物理显示空间的屏幕空间可以将触摸事件显示为触摸点403。在一个实现方式中,触摸点可以通过在屏幕空间上显示的形状来指示。网络节点可以基于触摸点对的可配置定义来计算触摸点对405。然后,网络节点可以计算并且显示拦截这四个触摸点的潜在组边界407。客户端侧网络节点可以标识作为潜在组成员409的边界的边界内的对象。潜在组成员的标识可以包括完全处于潜在组边界内的对象,并且还可以包括与潜在组边界重叠的对象。网络节点可以在屏幕空间上显示指示作为潜在组411的成员的对象的指示符。在一个示例中,对象的色调、阴影或边界可以被修改,以指示成员资格。网络节点可以接收指示用户不再同时触摸全部四个触摸点413的数据,这可以使得网络节点创建并且分配指示组创建事件415的记录。
所公开的技术包括逻辑,该逻辑用于在屏幕空间上处理四个同时触摸事件401,诸如利用图3A至图3E中描述的四指套索而发生的触摸事件。如图3A所示,触摸事件可以被显示为触摸点403。可选地,指示触摸事件的“ve”记录由屏幕空间261的网络节点创建。可选的“ve”记录被发送到参与工作空间201的一个或多个其他网络节点。所公开的技术包括模块,该模块执行用于计算触摸点对405的逻辑。在图5中描述了对触摸点对进行的分组以及冲突解决。与触摸点相交的边界可以在屏幕空间261上被计算并且被显示407。边界还可以通过处理指示潜在组的“ve”记录来生成。该模块还可以执行标识潜在组成员409的逻辑。该逻辑可以在屏幕空间261上渲染潜在组成员资格指示符411,并且可选地该逻辑可以向一个或多个其他网络节点发送指示潜在组成员资格的“ve”消息。指示选择结束事件413的数据的接收可以生成“he”组创建记录。然后“he”记录可以被分配给一个或多个其他网络节点415。在接收到“he”记录时,接收网络节点可以包括逻辑,该逻辑用于将所标识的组的边界从潜在组修改为组。接收网络节点还可以包括逻辑,该逻辑用于修改组的成员的外观以指示其在组内的成员资格。
图5-组和冲突
图5A、图5B和图5C图示了触摸点解释过程,其包括触摸事件之间的冲突解决。
当四个同时触摸事件可以被分组为两对触摸点时,发生四指套索。分组可以基于触摸事件之间的空间关系而发生。然而,当在触摸屏幕空间上工作时,用户可以创建不同于四个同时触摸事件的其他触摸事件,并且空间关系不能精确地符合可配置形成。图5A、图5B和图5C图示了可以如何解决触摸事件计数,并且空间关系可以被冲突。
触摸事件可以包括触敏显示器上的多个相邻像素。在一个实现方式中,触摸点可以被计算为触摸事件的相邻像素的近似中心。一对触摸点可以包括在屏幕空间261上的彼此之间的第一距离参数(例如,6英寸)内的两个触摸点。如果所计算出的每对触摸点的中心在彼此的第二距离参数(例如,两英尺)内,则两对触摸点被认为是四指套索。在一个示例中,可能存在一次除4个触摸点以外的实例。例如,用户可以用一只手的一个手指和另一只手的两个手指触摸表面,这不会引起任何响应。用户可以用一只手的三个手指和另一只手的两个手指触摸表面,这导致了5个触摸点。在另一示例中,用户可以用每只手的三个手指触摸表面,这可以导致6个触摸点。在另一示例中,第一只手上的第一触摸点比第一只手上的第二触摸点更靠近第二只手上的第一触摸点。在另一示例中,第一用户可能选择对象,以包括在已经由第二用户包括在不同组中的组内。
图5A图示了在屏幕空间上存在五个同时触摸点的示例。图5A包括由第一只手创建的触摸点Pa 501、触摸点Pb 505、触摸点Pc 509。还图示了由第二只手创建的触摸点Pd 515和触摸点Pe 519。距离503是触摸点Pa和Pb之间的距离。距离507是触摸点Pb和Pc之间的距离。距离511是触摸点Pa和Pc之间的距离。距离517是触摸点Pd和Pe之间的距离。第一对521是一对触摸点Pa 501和Pc 509。第二对523是一对触摸点Pd 515和Pe 519。距离513是第一对521的中心(或表示位置的其他位置)和第二对523的中心(或表示位置的其他位置)之间的距离。
一旦触敏显示器接收到指示屏幕空间261内的至少四个同时触摸点的数据,则网络节点计算触摸点之间的距离。在该示例中,触摸点Pd 515和Pe 519在彼此6英寸的可配置的第一距离内,并且触摸点Pd 515和Pe 519都大于距离触摸点Pa 501、Pb 505和Pc 509的第一距离(6英寸)。在该示例中,触摸点Pd 515和Pe 519可能被分组为第一对523。
触摸点Pa 501、触摸点Pb 505和触摸点Pc 509全部都在彼此的可配置的第一距离(6英寸)内,并且每一个都大于距离触摸点Pd 515和触摸点Pe 519的第一距离。这三个触摸点需要被分解成一对触摸点。Pa 501和Pc 509之间的距离511小于Pa 501和Pb 505之间的距离503。同样,Pc 509和Pb 505之间的距离507大于Pc 509和Pa 501之间的距离511。因此,***将选择Pa 501和Pc 509作为第二对521的一对触摸点。第一对523和第二对521包括用于定义用于选择潜在组的多边形525的边界的点。然后,算法计算以及显示潜在组多边形525,其中边界横切四个触摸点Pa 501、触摸点Pc 509、触摸点Pd 515、触摸点Pe 519。在该示例中,由于Pa 501高于但在Pc 509左侧,所以对521的最高接触摸点Pa 501成为标识潜在组525的矩形的最高部分,并且对521的最左侧接触摸点Pc 509成为矩形的最左侧部分。
图5B图示了在屏幕空间上存在六个触摸点的示例。在图5B中,第一对541包括触摸点Pa和触摸点Pb,第二对549包括触摸点Pc和触摸点Pd,第三对557包括触摸点Pe和触摸点Pf。第一对541的中心与第二对549的中心之间的距离是距离545。第一对541的中心与第三对557的中心之间的距离是距离551。第二对549的中心和第三对557的中心之间的距离是距离559。
在该示例中,网络设备计算每对541、549、557的中心,并且计算对的中心之间的距离。在该示例中,距离545小于距离551,并且距离545小于距离559。所公开的技术的算法将选择包括第一对541和第二对549的两个最接近的对,以作为用于生成潜在组矩形561的两对触摸点。在该示例中,对549的触摸点Pc在对549的触摸点Pd左侧,所以Pc变成潜在组矩形561最右侧部分,并且Pd变成潜在组矩形561最下部分。
图5C图示了触摸点没有精确地符合可配置形成的示例。在图5C中,标识触摸点Pa571、触摸点Pb 575、触摸点Pc 581、触摸点Pd 585。此外,Pa 571和Pb 575之间的距离被标识为距离573。Pb 575和P C581之间的距离被标识为距离577。第一对591和第二对593被标识。并且Pc 581和Pd 585之间的距离被标识为距离583。在该示例中,第一只手创建触摸点Pa 571和触摸点Pb 575,而第二只手创建触摸点Pc581和触摸点Pd 585。对的可配置形成描述了两对,其中对的触摸点之间的距离在彼此的第一距离6英寸内,并且两对的中心在彼此的2英尺内。这允许用于创建对的手的手指之间的距离为6英寸。还允许在大格式显示器1102c上工作的人的左手和右手之间的距离为2英尺。当多于一个用户(诸如用户1101c和1101d)在大格式显示器上工作时,这还允许将多点触摸选择手势缩到单个用户。
当创建小组时,4个触摸点可以比6英寸更接近彼此。图5C中的示例示出相比于对573中的触摸点Pa 571,对573中的触摸点Pb 575更接近对593中的触摸点Pc 581。它还示出相比于触摸点Pd 585,触摸点Pc 581更接近触摸点Pb 575。协调这种布置的算法可以首先记录四个触摸点,然后计算它们之间的距离。然后,算法标识配对两个最接近的接触摸点Pb575。Pc 581将离开两个不成对的触摸点Pa 571、Pd 585,其中它们最接近的触摸点已经被配对。然后,该算法阻止触摸点Pb 575和Pc 581配对,然后重新运行配对算法。然后,配对算法找到可用的对591和593,并且将关联的触摸点进行配对,从而创建潜在组595。
两个网络节点之间的分组冲突
在一个示例中,第一网络节点和第二网络节点同时选择包括在组内的相同对象,其中每个网络节点已经创建了“he”组记录,但是第一网络节点和第二网络节点尚未从彼此接收到“he”组记录。由于对象只能是一个组的成员,因此定义包括冲突对象的组的第一客户端可以将对象保留在其组内。在定义其组时是第二的客户端负责通过发送用于其组的更新的“he”“成员资格”记录来移除冲突成员。
图6-单触摸组创建
图6A、图6B和图6C图示了单个触摸组创建。在一个实现方式中,用户可以经由工具栏上的按钮进入选择模式。在另一实现方式中,针对长触摸来触摸对象共同进入选择模式,并且与一个组成员一起创建组事件,该成员是正在被触摸的对象。一旦创建组,则可以执行组动作,诸如复制组、移动组、删除组、对组进行取消分组、从组中删除对象、将对象添加到组以及调整组的大小。
图6A至图6C示出了屏幕空间261,其中在屏幕空间内显示工具栏620。还标识了四个图形构造611a、611c、611d和611e。
为了创建具有工具栏620的组,可以通过工具栏上的按钮发起选择模式。工具栏可以在屏幕空间261的任何地方,并且可以是可见的或不可见的。当可见时,工具栏可以如同在屏幕上的任何其他对象一样移动。被创建的指示工具栏的移动的“ve”消息可以被发送到一个或多个其他网络节点,其中工具栏的移动可以由接收网络节点在接收网络节点屏幕空间上渲染。然后,选择结束事件可以生成“he”消息,该消息还可以被发送到一个或多个其他网络节点,并且可以被存储在空间事件映射中。如果工具栏不可见,则可以通过长触摸屏幕空间中没有任何对象(诸如画布)的区域来使其可见。在一个示例中,如图6A中图示的长触摸613所示,长触摸可以是持续2秒至3秒而没有移动的触摸。长触摸使得工具栏620被显示。工具栏上的按钮可以被指派切换进入选择模式和退出选择模式的动作。
图6B图示了对象611a作为组641的成员的选择。在该示例中,利用工具栏620上的选择模式按钮已经选择了选择模式。当处于选择模式下,对象611a上的触摸621选择对象611a作为组641的成员。对象611a的第二次触摸从该组中移除对象。在该示例中,创建类型为“create”“group”的“he”记录,其中一个子节点是对象611a,并且对象611a的阴影变暗,以指示组中的成员资格。
图6C图示了通过触摸631将第二对象611d选择到组641中。在该示例中,创建将对象611d添加到组641的“he”“membership”记录。
//client-->server
[client-id,"he","53a52b39250f62fce",event-id,"membership",{"children":["53a52b39250f62fca",”53a52b39250f62fcb"}]
然后,子节点可以在组寿命期间使用成员资格消息随意被添加或移除。“he”“membership”记录被传送到一个或多个其他网络节点,并且存储在本地日志中。对象611d的阴影被变暗以指示组中的成员资格。并且组641的边界被扩展,以围合组611a、611d的两个成员。在该示例中,边界内的对象或与组的边界重叠的对象(诸如对象611c)不会更改,并且对该组的动作不会影响它们。选择区域外的画布上的半长触摸是退出选择模式的一种方法。工具栏620上的选择模式按钮是退出选择模式的另一方法。
图7-双指套索
包括图7A和图7B的图7图示了双指套索。双指套索允许通过同时触摸围合对象的矩形的两个相对角落,来选择对象组。在双指套索过程中难以解析随机触摸事件。
图7包括屏幕空间261以及在画布上显示的五个图形构造711b、711c、711d、711e、711f。图7A图示了由触摸事件创建的第一触摸点721,其中被定义为一个触摸事件的一个手指或接近的两个手指创建第一触摸点。还图示了由触摸事件创建的第二触摸点731,其中被定义为一个触摸事件的一个手指或接近的两个手指创建第二触摸点。两个同时触摸点721、731创建潜在组741。
当用户从触摸点移开他们的手指时,创建组751。创建“he”“create”“group”记录,并且“he”记录被传送到一个或多个其他网络节点,并且被存储在本地日志中。对象711c、711d、711e和711f的阴影被变暗,以指示由边界751标识的组中的成员资格。此外,组边界751被扩展,以围合组的五个成员。在该示例中,该组中包括边界内的对象或与组751边界的边界重叠的对象(诸如对象711e)。完全在组751的边界之外的诸如对象711b的对象不包括在该组中。
图8-复制组
图8A和图8B图示了组的复制。在一个实现方式中,多点触摸选择手势可以通过与工具栏(诸如图6的工具栏620)的交互来发起。复制动作在该组内创建每个对象的副本,并且将它们放置在原始项目的偏移中,从而维护新对象之间的空间关系。
图8A和图8B包括具有在屏幕空间内显示的工具栏620的屏幕空间261。在所图示的示例中,卡1 820a,卡2 820b和卡3 820c是已经在组多边形815中分组在一起的三个图形构造。在该示例中,该组由利用虚线绘出的多边形815来标识。图形构造820a、820b和820c的阴影已被设置为灰色阴影,以指示它们在由多边形815标识的组中的成员资格。
图9-自由形式套索
图9A和图9B图示了用自由形式套索创建组。自由形式套索通过以下步骤来创建:触摸一个触摸点处的屏幕空间,在用户输入逻辑中调用组选择模式,并且然后围绕要包括在组中的对象而绘制自由形式形状。图9A和图9B包括具有在屏幕空间内显示的工具栏620的屏幕空间261。还包括五个图形构造911a、911b、911c、911d和911f。还包括第一触摸点905、第二触摸点915和徒手圆圈917。
当处于选择模式时,通过触摸事件来创建第一触摸点905,其中被定义为一个触摸事件的一个手指或者接近的两个手指创建第一触摸点。在仍然触摸屏幕空间同时,围绕要被包括在组中的对象,绘制形成自由形式多边形的徒手线917。当徒手圆圈917的端点接近第一触摸点905的可配置距离或触摸第一触摸点905时,手指从屏幕空间261移开,从而创建第二触摸点915。如果徒手线917未闭合但是第一触控点905与第二触控点915在彼此可配置的距离内,则网络节点可以计算出第一触摸点905与第二触摸点915之间的线,并且利用该线来自动闭合徒手线917。这由图9B中的线930图示。一旦闭合,则徒手圆圈917内的对象被包括在“he”“create”“group”记录中。然后徒手圆圈917变成组的边界。在另一实现方式中,一旦创建了徒手圆圈917,则在仍然处于选择模式下同时,在徒手圆圈917之外轻击对象就将把对象添加到该组。
图10-滑动套索
图10A、图10B和图10C图示了利用滑动套索创建组。滑动套索通过以下步骤来创建:触摸一个触摸点处的屏幕空间,然后通过要包括在组中的对象绘制徒手线。图10A至图10C包括屏幕空间261和六个图形构造1011a、1011b、1011c、1011e和1011f。图10还包括第一触摸点1021、第二触摸点1031、徒手线1041和组1051。
当处于选择模式时,触摸事件在对象1011a的坐标内创建第一触摸点1021。网络节点处理指示触摸点位置的数据,并且通过改变对象的阴影来修改与触摸点1021重叠的对象1011a。在继续触摸的同时,通过在第二触摸点1031处结束的对象1011c、1011e、1011d和1011f绘制徒手线1041。在一个示例中,当网络节点处理通过在屏幕空间261上渲染的对象的坐标传递的、由徒手线1041生成的数据时,网络节点改变那些对象的阴影以指示事件。一旦用户从第二触摸点1031抬起手指,则绘制标识围合选定对象的组1051的边界的矩形。在该示例中,与徒手线1041不重合的对象(诸如对象1011b)的阴影尚未改变。
图11
图11图示了数字显示协作环境的示例方面。在该示例中,多个用户1101a至1101h(统称为1101)可能希望在创建复合图像、音乐、视频、文档和/或其他媒体时彼此协作,所有这些在图11中一般地被指定为1103a至1103d(统称为1103)。所图示的示例中的用户使用被配置为电子网络节点的多种设备(例如,平板电脑1102a、个人计算机(PC)1102b和多个大格式显示器1102c、1102d、1102e(统称为设备1102)),以便彼此协作。在所图示的示例中,本文有时称为“显示墙”的大格式显示器1102c容纳一个以上用户(例如,用户1101c和1101d,用户1101e和1101f以及用户1101g和1101h)。被称为客户端侧网络节点的用户设备具有显示器,屏幕空间在该显示器上渲染,其中屏幕空间是被分配用于显示工作空间中的事件的可显示区域。用于给定用户的可显示区域可以包括显示器的整个屏幕、屏幕的子集、要在屏幕上显示的窗口等,以使得与几乎无限延伸的工作空间相比,每个屏幕都具有有限的面积或延伸。
图12图示了数字显示协作环境的附加示例方面。如图12所示,本文有时被称为“显示墙”的大格式显示器1202c、1202d、1202e由物理网络1204上的相应的客户端侧网络节点1210控制,该客户端侧网络节点1210进而与中央协作服务器1205进行网络通信,该中央协作服务器1205被配置为一个或多个服务器侧物理网络节点,该中央协作服务器1205可访问存储用于多个工作空间的空间事件映射栈的数据库1206。如本文中所使用的,网络节点是附接到网络的有源电子设备中的可寻址设备或功能,并且网络节点能够通过通信信道发送、接收或转发信息。可以被部署为网络节点的电子设备的示例包括所有种类的计算机、工作站、膝上型计算机、手持计算机和智能电话。如本文中所使用的,术语“数据库”不一定意味着任何结构的联合。例如,两个或多个单独的数据库在一起考虑时,其仍然构成在本文使用的该术语“数据库”。
在协作服务器1205处运行的应用可以使用诸如Apache或nginx之类的网络服务器软件或诸如node.js之类的运行时间环境而被托管。可以例如在运行操作***(诸如LINUX)的虚拟机上而被托管。在图12中,启发式地将服务器1205图示为单个计算机。然而,服务器架构可能涉及多个计算机的***,每个均运行服务器应用,这对大型云计算服务而言是典型的。服务器架构包括通信模块,该模块可以被配置用于各种类型的通信信道,该信道包括协作会话中的用于每个客户端的一个以上信道。例如,通过跨网络的近似实时更新,客户端软件可以使用基于消息的信道(例如,基于WebSocket协议)与服务器通信模块进行通信。对于文件上传以及接收初始大容量工作空间数据,客户端软件可以经由HTTPS与服务器通信模块进行通信。服务器可以运行例如以Ruby-on-Rails服务的JavaScript编写的前端程序,支持例如基于Oauth的认证/授权,并且支持多个分布式客户端之间的协调。服务器通信模块可以包括基于消息的通信协议栈(诸如WebSocket应用),其执行记录在工作空间数据中的用户动作的功能,并且将用户动作中继到其他客户端(如果适用的话)。例如,该***可以在node.JS平台上运行,或者在其他被设计来处理高负载套接字应用的服务器技术上运行。
例如,数据库1206存储用于包括每个会话的“he”记录的空间事件映射的工作空间数据集的数字表示,其中工作空间数据集可以包括或标识与可在显示画布上显示的对象有关的事件。工作空间数据集可以以空间事件栈的形式实现,可以被管理以使得至少持续空间事件被添加(推送)到栈中,并且在撤销操作期间以先进后出的模式从栈中被移除(弹出)。可以存在用于多个不同的工作空间的工作空间数据集。用于给定工作空间的数据集可以被配置在数据库中或被配置作为链接到工作空间的机器可读文档。工作空间可以具有无限或者几乎无限的尺寸。工作空间数据包括标识可由显示客户端在显示墙上的显示区域中显示的对象的事件数据结构,并且将工作空间中的时间和位置与由事件数据结构标识的对象相关联。每个设备1202仅显示整个工作空间的部分。显示墙具有用于显示对象的显示区域,显示区域被映射到工作空间中的对应区域,该区域与工作空间中以工作空间中的用户位置为中心、或者利用工作空间中的用户位置以其他方式定位的区域相对应。显示区域到工作空间中的对应区域的映射可以由显示客户端用来标识显示区域内要在显示器上渲染的工作空间数据中的对象,并且用来标识将用户触摸输入链接到显示器上显示区域中的位置处的对象。
服务器1205和数据库1206可以构成服务器侧网络节点,其包括存储与在工作空间中具有位置的图形目标有关的事件日志的存储器,日志中的条目包括事件的图形目标在工作空间中的位置、事件的时间以及事件的图形目标的目标标识符。服务器可以包括逻辑,该逻辑建立到多个活动客户端侧网络节点的链接,接收标识与修改和创建在工作空间中具有位置的图形目标有关的事件的消息,响应于所述消息而将事件添加到日志中,并且将与从特定客户端侧网络节点接收的消息中标识的事件有关的消息分配到其他活动客户端侧网络节点。
服务器1205中的逻辑可以包括应用程序接口,其包括指定的进程和参数集合,通过该应用程序接口将携带日志的部分的消息发送到客户端侧网络节点,并且从客户端网络节点接收携带标识与在工作空间中具有位置的图形目标有关的“ve”和“he”事件的数据的消息。
此外,服务器1205中的逻辑可以包括应用接口,其包括将从一个客户端侧网络节点接收的事件分配到其他客户端侧网络节点的过程。
符合API的事件可以包括要存储在日志中并且分配到其他客户端侧网络节点的第一类事件(历史事件)、以及要分配到一个或多个其他客户端侧网络节点而不存储在日志中的第二类事件(短暂事件)。
服务器1205可以存储用于多个工作空间的工作空间数据集,并且向参与会话的显示客户端提供工作空间数据。然后,由计算机***1210利用包括显示客户端软件的适当软件1212使用工作空间数据,以确定要在显示器上显示的图像,并且将用于交互的对象指派给显示器表面的位置。服务器1205可以存储和维护大量工作空间,以用于不同的协作会话。每个工作空间可以与用户组相关联,并且被配置成只能由该组中的授权用户访问。
在一些可替换方案中,服务器1205可以跟踪每个设备1202的“视口”,该视口指示在该设备上画布可浏览的部分,并且可以向每个设备1202提供渲染视口所需的数据。
在客户端设备上运行的、负责渲染绘制对象、处理用户输入并且与服务器通信的应用软件,可以基于HTML5或其他基于标记的过程,并且可以在浏览器环境中运行。这允许轻松支持多个不同的客户端操作***环境。
存储在数据库1206中的用户接口数据包括各种类型的对象,其包括诸如图像位图、视频对象、多页文档、可缩放矢量图形之类的图形构造。设备1202每个都经由通信网络1204与协作服务器1205通信。通信网络1204可以包括所有形式的网络部件,诸如LAN、WAN、路由器、交换机、WiFi部件、蜂窝部件、有线和光学部件以及因特网。在一种场景下,两个或两个以上用户1101位于相同的房间中,并且其设备1102经由WiFi与协作服务器1205进行通信。在另一场景下,两个或两个以上用户1101彼此分隔数千英里,并且其设备1102经由因特网与协作服务器1205进行通信。显示墙1102c、1102d、1102e可以是多点触摸设备,其不仅显示图像,而且还可以感测利用触控笔或身体的部分(诸如一个或多个手指)触摸显示表面而提供的用户手势。在一些实施例中,显示墙(例如,1102c)可以区分由一个或多个手指(或者例如,整只手)的触摸和由触控笔的触摸。在实施例中,显示墙通过发射红外光并且检测所接收的光来感测触摸;从用户手指反射的光具有显示墙区分环境接收光的特征。触控笔以显示墙可以区别环境光和从用户手指反射光的方式,来发射自己的红外光。例如,显示墙1102c可以是垂直和水平平铺MultiTaction单元(型号:MT553UTBL,由芬兰赫尔辛基的MultiTouch公司制造)而得到的阵列。为了提供多种表现手段,显示墙1102c以其维持“状态”的方式进行操作。即,可以(除其他之外)根据输入的顺序对给定输入做出不同反应。例如,使用工具栏,用户可以选择若干种可用的画笔样式和颜色中的任一种。一旦被选择,则显示墙处于以下状态,即,触控笔的后续敲击将使用选定画笔样式和颜色绘制一条线。
在说明性实施例中,显示器阵列可以具有总计6英尺高和30英尺宽的可显示区域,其足够宽以使多个用户站在显示墙的不同部分并且同时操纵它。然而,由于显示墙在本实施例中并不区分不同用户的手指或不同用户操作的触控笔,所以显示墙上的表达灵活性可能在多用户场景下受到限制。因此,如果一个用户将显示墙放置到一个期望的状态,则第二用户可能被限制为使用该相同的状态,因为显示墙不能识别第二用户的输入将被不同地处理。
为了避免这种限制,客户端侧网络节点可以在显示墙1102c上定义“绘制区域”。如本文中所使用的绘制区域是其中显示墙的状态的至少一个方面可以独立于显示墙上的其他区域而被改变的区域。在本实施例中,绘制区域之间可能不同的状态的各方面包括使用触控笔在显示墙上绘制的线的属性。状态的其他方面(诸如***对手指触摸行为的响应)可能不受绘制区域的影响。
图13A至图13F表示数据结构,该数据结构可以是由协作服务器1205处的数据库维护的工作空间数据的部分。在图13A中,图示了事件(诸如易失性事件或历史事件)的事件数据结构。事件是与工作空间数据的交互,该交互可能导致工作空间数据的改变。因此,事件可以包括事件标识符、时间戳、会话标识符、事件类型参数、作为client-id的客户端标识符以及工作空间中的位置阵列,该阵列可以包括用于对应事件的一个或多个位置。例如,合意的是,时间戳具有毫秒级分辨率或者甚至更精细的分辨率,以便最大限度地减小影响单个对象的竞争事件的竞态条件(race condition)的可能性。此外,事件数据结构可以包括UI目标,该目标标识工作空间数据中客户端显示器上的触摸屏上的敲击被链接到的对象。事件可以包括样式事件,其例如指示敲击的显示参数。事件可以包括文本类型事件,其指示文本对象在工作空间中的输入、修改或移动。事件可以包括卡类型事件,其指示卡类对象在工作空间中的创建、修改或移动。这些事件可以包括标识敲击的位置阵列的敲击类型事件,以及用于敲击的显示参数,诸如例如,颜色和线宽。
事件可以分为持续历史事件和短暂事件。处理事件以添加到工作空间数据以及用户之间的共享可以取决于事件的分类。该分类在事件类型参数中可以是固有的,或者可以在事件数据结构中使用附加标志或字段来指示分类。
空间事件映射可以包括具有用于历史事件的条目的事件日志,其中每个条目包括图13A所示的结构。服务器侧网络节点包括逻辑,该逻辑从客户端侧网络节点接收携带短暂事件和历史事件的消息,并且将短暂事件发送到其他客户端侧网络节点,而不需要将它们转发到将事件添加为日志中对应条目的服务器中,以及在将历史事件转发到将事件作为对应条目添加到日志的服务器的同时,将历史事件发送到其他客户端侧网络节点。
图13B图示了卡数据结构。卡数据结构可以提供标识用于工作空间数据中的对象的当前状态信息的属性的缓存,该属性包括会话标识符、卡类型标识符、阵列标识符、客户端标识符、卡的尺寸、与卡相关联的文件类型以及工作空间内的会话位置。
图13C图示了将若干个事件和对象合并成可缓存集合(被称为块)的数据结构。数据结构包括会话ID、包括在块中的事件的标识符以及创建块的时间戳。
图13D图示了用于链接到参与在选定工作空间中的会话的用户的数据结构。该数据结构可以包括访问令牌、用于会话显示客户端的客户端标识符、链接到显示客户端的用户标识符、指示用户上次访问会话的参数、以及到期时间和用于携带关于会话的各种信息的cookie。例如,该信息可以针对用户维护工作空间内的当前位置,每当用户登录时,可以使用该位置确定要在登录所关联的显示客户端处显示的工作空间数据。
图13E图示了可以以与大格式显示器相关联使用的显示器阵列数据结构,该大格式显示器是通过联合显示器而实现,每个显示器均具有显示客户端。这种联合显示器中的显示客户端配合以作为单个显示器。工作空间数据可以维护通过阵列ID标识显示器阵列并且标识每个显示器的会话位置的显示器阵列数据结构。每个会话位置可以包括联合显示器的区域内的x偏移和y偏移、会话标识符和深度。
该***可以对与客户端侧网络节点的通信进行加密,并且可以对存储空间事件映射的数据库进行加密。此外,在一些实施例中,空间事件映射的缓存副本在客户端侧网络节点上被加密,以防止取得访问客户端侧计算机机会的入侵者对数据进行未经授权的访问。
图13F图示了用来将活动客户端映射到活动工作空间的全局会话活动表(GSAT)。数据结构包括工作空间名称、设备类型、client-id、会话ID、行动者类型以及行动者ID。
图14是可以用来实现分布式协作***中的客户端侧功能(例如,计算机***1210)或者服务器侧功能(例如,服务器1205)的计算机***或网络节点的简化框图。计算机***通常包括经由总线子***1412与若干个***设备进行通信的处理器子***1414。这些***设备可以包括存储子***1424(包括存储器子***1426和文件存储子***1428)、用户接口输入设备1422、用户接口输出设备1420和通信模块1414内的网络接口子***。输入设备和输出设备允许用户与计算机***进行交互。通信模块1416针对到外部网络的接口(包括到通信网络1204的接口)提供物理和通信协议支持,并且经由通信网络1204耦合到其他计算机***中的对应通信模块。通信网络1204可以包括多个互连的计算机***和通信链路。这些通信链路可以是有线链路、光学链路、无线链路或者用于传送信息的任何其他机构,但是至少在其末端处通常是基于IP的通信网络。虽然在一个实施例中,通信网络1304是因特网,但是在其他实施例中通信网络1304可以是任何合适的计算机网络。
网络接口的物理硬件部件有时被称为网络接口卡(NIC),尽管它们无需为卡形式:比如,物理硬件部件可以是直接适配到母板上的集成电路(IC)和连接器的形式,或者可以是与计算机***的其他部件一起在单个集成电路芯片上制造的宏单元的形式。
用户接口输入设备1422可以包括键盘,诸如鼠标、轨迹球、触摸板或图形输入板之类的指示设备、扫描仪、并入显示器的触摸屏(包括大格式数字显示器1102c的触敏部分)、诸如话音识别***之类的音频输入设备、麦克风和其他类型的有形输入设备。一般而言,使用术语“输入设备”旨在包括将信息输入计算机***中或输入到计算机网络1204上的所有可能类型的设备和方式。
用户接口输出设备1420可以包括包含屏幕和覆盖屏幕的触摸屏的显示子***,或用于标识屏幕上的位置的其他输入设备、打印机、传真机或者非视觉显示器(诸如音频输出设备)。显示子***可以包括阴极射线管(CRT)、诸如液晶显示器(LCD)之类的平板设备、投影设备或者用于创建可视图像的某个其他机构。在图12的实施例中,其包括大格式数字显示器1102c的显示功能。显示子***还可以提供诸如经由音频输出设备的非可视显示。一般而言,使用术语“输出设备”旨在包括将信息从计算机***输出到用户或者另一个机器或计算机***的所有可能类型的设备和方式。
存储子***1424存储基本编程和数据构造,其提供所公开的技术的某些实施例的功能性。
当被用于实现服务器侧网络节点时,存储子***1424包括产品,其包括存储机器可读数据结构的非暂态计算机可读介质,该机器可读数据结构包括在工作空间中定位事件的空间事件映射,其中该空间事件映射包括事件日志,日志的条目具有事件的图形目标在工作空间中的位置以及时间。此外,存储子***1424包括产品,其包括用于执行本文中所描述的与服务器侧网络节点相关联的程序的可执行指令。
当用于实现服务器侧网络节点时,存储子***1424包括产品,其包括存储机器可读数据结构的非暂态计算机可读介质,该机器可读数据结构包括如下文所解释的在工作空间中定位事件的缓存副本形式的空间事件映射,其中该空间事件映射包括事件日志,该日志中的条目具有事件的图形目标在工作空间中的位置以及时间。此外,存储子***1424包括产品,其包括用于执行本文中所描述的与客户端侧网络节点相关联的过程的可执行指令。
例如,实现所公开技术的某些实施例的功能性的各种模块可以被存储在存储子***1424中。这些软件模块通常由处理器子***1414执行。
存储器子***1426通常包括若干个存储器,其包括用于在程序执行期间存储指令和数据的主随机存取存储器(RAM)1430和存储钉住指令的只读存储器(ROM)1432。文件存储子***1428为程序和数据文件提供持续存储,并且可以包括硬盘驱动器、软盘驱动器以及相关联的可移动介质、CD ROM驱动器、光驱动器或可移动介质盒。实现所公开的技术的某些实施例的功能性的数据库和模块可以已经被提供在诸如一个或多个CD-ROM的计算机可读介质上,并且可以由文件存储子***1428存储。除了其他方面,主机存储器子***1426包括计算机指令,当该计算机指令由处理器子***1414执行时,使得计算机***操作或执行本文中所描述的功能。如本文中所使用的,响应于包括用于这些指令和数据的任何其他本地或远程存储装置的主机存储器子***1426中的计算机指令和数据,被称为在“主机”或“计算机”之中或之上运行的过程和软件在处理器子***1514上执行。
总线子***1412提供了让计算机***的各种部件和子***按预期彼此通信的机构。尽管总线子***1412被示意性地示为单个总线,但是总线子***的可替换的实施例可以使用多个总线。
计算机***本身可以是各种类型,包括个人计算机、便携式计算机、工作站、计算机终端、网络计算机、电视、大型机、服务器场或任何其他数据处理***或用户设备。在一个实施例中,计算机***包括数个计算机***,每个计算机***控制构成大格式显示器1102c的拼接块之一。由于计算机和网络的不断改变的特定,对图14中描绘的计算机***1210的描述仅旨在作为特定示例用于说明所公开的技术的优选实施例。计算机***的多个其他配置可能具有比图14中所描绘的计算机***更多或更少的部件。相同的部件和变型还可以构成图11的协作环境中的其他设备1102中的每一个设备,以及协作服务器1205和显示数据库1206。
在一种类型的实施例中,客户端连接层、消息传递层和协作层中的一个或多个可以被实现为包括由第三方托管的物理机中的网络节点的虚拟机,并且由计算机程序配置以提供本文中所描述的服务。
用于事件的消息发送的应用程序接口可以被开发以用于组管理的代码使用。存储器子***可以存储可由处理器子***1414执行的计算机程序,该处理器子***1414实现用于如上文所描述的组选择、创建、移动、修改和删除的客户端处理。此外,可由用于解释支持组过程的触摸事件和其他用户输入的处理器子***1414执行的客户端过程的计算机程序可以被包括在存储器子***中。此外,可由处理器子***1414执行的计算机程序可以实现本文中所描述的用于空间事件映射API的客户端功能和参数。
对于组管理,被存储在存储器子***中的相关代码可以包括充当存在于使用本地节点中的空间事件映射和当前事件而确定的工作空间中的所有组的存储库的文件,即选择或修改过程期间的潜在组以及最终组两者。它还实现从数据库接收的组事件的解析器,该数据库将事件的历史存储在工作空间中,并且每次在本地已经执行组动作(诸如向组添加成员或移动组)时处理向数据库发送事件。
图15图示使用存储在存储子***中并且由与本文中所描述的组处理有关的客户端节点执行的计算机程序实现的逻辑,以用于从其他节点接收到的消息中指示的事件。该过程包括:登录到工作空间的会话中1501。在登录之后,会话的空间事件映射被下载到客户端侧节点1503。客户端侧节点解析映射到客户端侧节点上的屏幕空间的视口中的对象的空间事件映射(事件的图形目标)1505。客户端侧节点还解析空间事件映射,以标识已经创建的组以及这些组中的成员。创建组文件,以与本地逻辑一起使用,并且用于维护该信息以用于解释在从其他节点接收的消息中和从客户端侧节点处的用户输入设备接收到的用户输入中的消息中标识的事件1507。
使用通过解析空间事件映射产生的信息,渲染客户端侧节点上的屏幕空间,从而导致在视口内显示图形目标1509。在会话期间,可以从另一节点接收标识在工作空间中执行的事件的消息1511。客户端侧节点确定消息中携带的事件是否与组成员或组有关,如果有关,则应用组规则来解释事件1513。事件被添加到空间事件映射1514,并且屏幕空间在必要时利用更新的信息渲染1509。此外,如果必要,则组文件响应于接收到的事件而被更新1515。作为本文使用的术语的组规则包括使用应用于组的所有成员的过程来执行动作。
图16图示逻辑,该逻辑在被存储在存储子***中的计算机程序中实现并且由与本文中所描述的组处理有关的客户端侧节点执行,以用于在客户端侧节点处本地生成的输入。该过程包括登录到工作空间的会话1601。登录之后,用于会话的空间事件映射被下载到客户端侧节点1603。客户端侧节点上的逻辑解析用于屏幕空间对象(即,在映射到客户端侧节点上的屏幕空间的视口中具有位置的对象(事件的图形目标))的空间事件映射1605。客户端侧节点上的逻辑还解析用于组的空间事件映射,并且创建如上文所提及的组文件1607。
使用通过解析空间事件映射而产生的信息,来渲染客户端侧节点上的屏幕空间,这导致在视口内显示图形目标1609。在会话期间,接收并且解释在客户端侧节点处生成的用户输入1611,该输入诸如触摸事件、手势、键盘输入、鼠标输入等。客户端侧节点上的逻辑确定输入是否与组成员或者与使用组文件组有关。如果有关,则组规则被应用于对输入的解释1613。在解释输入时,消息被组成并且被发送到其他节点1614。此外,如果必要,则客户端侧节点上的空间事件映射被更新1616。
如果事件涉及屏幕空间内的图形目标,则使用新信息再次渲染屏幕空间1609。在解释输入之后,如果必要则客户端侧节点上的逻辑也更新组文件。
API
套接字请求服务器(WebSockets),其被用于一旦连接,则更新具有相关数据(新敲击、卡、客户端等)的客户端。还处理初始连接握手。
服务请求服务器(HTTPS/REST),其被用于可缓存响应以及发布数据(即,图像和卡)
客户端侧网络节点是根据API而被配置,并且包括相应的套接字请求客户端和服务请求客户端。
所有消息都是单独的UTF-8编码的JSON阵列。例如:
[sender-id,message-type,...]
●sender-id发送消息的客户端的ID,如果消息始发于服务器,则为“-1”。Sender-id在被连接到服务器的所有客户端中都是唯一。●message-type标识剩余自变量和预期动作的简短代码。
建立连接
客户端使用配置服务,以便检索针对环境的配置信息。套接字服务器URL是由ws_collaboration_service_address key提供。
1)打开WebSocket并且加入特定工作空间
<collaboration_service_address>/<workspaceId>/socket?device=<device>array=<array_name>
workspaceId(string用于加入的工作空间的id
device(string)设备类型。所支持的值:显示墙、其他
array(string)用于多个屏幕实例的标识符(可选)。
2)加入大厅(lobby)
在大厅允许客户端知道它将显示的特定工作空间之前,打开web套接字。大厅还提供5位PIN,用户可以使用该5位PIN,以便将工作空间从他们的个人设备(台式机/ios)发送到显示墙。
<collaboration_service_address>/lobby/socket?device=<device>&array=<array_name>
device(string)a device type.Supported values:wall,other
device(string)设备类型。所支持的值:显示墙、其他
array(string)an identifier for multiple screen instances.(optional)
array(string)用于多个屏幕实例的标识符(可选)。
3)服务器响应
当客户端与服务器建立新的网络套接字连接时,服务器首先选择唯一client-id,并且将其在“id”消息中发送给具有唯一client-id的客户端。
4)消息结构
每个消息阵列的第一元素是sender-id,其指定发起消息的客户端。Sender-id在服务器上的所有会话中是唯一。从服务器发送到客户端的id和cr消息使得它们的sender-id被设置为默认值,诸如-1。每个消息阵列的第二元素是两字符代码。该代码定义阵列中的其余自变量以及预期的操作。具有sender-id为-1的消息是源自服务器的消息。
消息类型
正式支持以下消息类型。自2013年春以来,一直努力在可能时使用he和ve,而非加入新的顶级消息类型。
(1)cs改变会话
(2)echo回传
(3)error误差
(4)id Client Id
(5)jr加入房间
(6)rl房间列表
(7)un撤消
(8)up用户权限
(9)vc视口改变
(10)he历史事件
(11)ve易失性事件
(12)disconnect断开
(13)ls列表流
(14)bs开始流
(15)es结束流
(16)ss流状态
(17)oid对象Id预留
1)cs改变会话
通知工作空间已经改变的显示阵列中的客户端或兄弟节点。当服务器收到用于将工作空间发送到显示墙的请求时,它将该消息发送到客户端。
//server-->client
[sender-id,"cs",workspaceId]
sender-id总是为-1(指示服务器发起消息)
workspaceId(string)是工作空间要切换到的id
2)echo回传
将可选本体回传到发起端客户端。被用于验证套接字连接和服务器是否仍然正常。
//client-->server
[sender-id,"echo","foo","bar"...]
//server-->client
[-1,"echo","foo","bar"...]
在“echo”之后,消息可以取任何自变量。如果服务和客户端的套接字连接正常,则它们将全部回传到客户端。当使用回传(echo)消息来验证套接字的健康状况时,我们建议如下:
●在echo消息之间等待至少5秒钟
●在假设网络或服务器问题之前,要求连续2次回传失败
该消息已被加入到协议,这是因为Chrome和其他受支持的浏览器中的WebSockets的当前实现方式在网络连接中断时,未正确改变readyState或启动onclose。
3)error误差
通知客户端服务器侧上的误差。
//server->client
["-1","error",target-id,message]
target-id误差影响的会话中对象的guid
message关于误差的消息。
该消息仅由服务器发送,并且目前仅在异步处理期间上传失败时被使用。
4)id client-id
当客户端连接到套接字时,服务器发送该消息。客户端需要存储所指派的client-id,以用于后续套接字请求。
//server-->client
["-1","id",client-id]
●client-id(string)新加入的客户端的ID
5)jr加入房间
房间是客户可以订阅的通信信道。可以存在特定工作空间(会话)、显示阵列或潜在的其他客户端组的信道。服务器向连接到特定房间的所有客户端重复/发送消息,这是因为事件在该房间发生。客户端加入房间以获取用于该显示阵列或工作空间(会话)的消息。加入房间请求有几种类型。
一般jr
如果知道id,则加入任何房间。
//server<--client
[sender-id,"jr",room-id,[data]]
room-id可以包括大厅或工作空间ID中的一个
●数据是通配符自变量集合,其应当用于初始化房间。
●大厅jr
加入大厅信道。由希望在不显示工作空间同时保持网络套接字打开的客户端来使用。
//server<--client
[sender-id,"jr","lobby"]
会话jr
加入特定工作空间(会话)的房间。
//server<--client
[sender-id,"jr","session",workspace-id]
●workspace-id是工作空间(工作空间)的id
阵列jr
加入用于特定显示阵列的房间。
●arrayId(string)显示阵列的id
●x(integer)该显示的x偏移量
●y(integer)该显示的y偏移量
●width(integer)该显示的宽度
●height(integer)该显示的高度
房间加入响应:
服务器利用房间消息响应于成功的房间加入(jr)消息。
一般房间
//server-->client
["-1","room",[room-id],[databag]]
●room-id包括以下各项中的一项:大厅或工作空间
●databag是变量的房间特定包
大厅房间
//server-->client
["-1","room","lobby",{pin:pin-code}]
pin包括显示墙认证的钉住
会话房间
//server-->client
["-1","room","session",{"uid":"SU5DVpxbfnyGCesijBou","name":"Dec16
Release","sharing_link":"https://portal.bluescape.com/sessions/1357/shar es"}]``
*‘uid’是工作空间的id
*‘name’是在客户端中示出的工作空间的名称
*‘sharing_link’是到用户可以与其他人共享该工作空间的门户页的链接
6)rl房间列表
通知客户端成员资格。房间成员资格包括关于客户端访问与你相同的房间的信息。
//server-->client
["-1","rl",roomMembershipList]
●roomMembershipList(房间成员资格对象阵列)房间成员资格对象是具有以下密钥的散列
●name用户或设备名称
●device_type用户所在设备的类型,当前为显示墙或其他设备(已弃用)。
●clientId该设备的clientId
●clientType客户端的类型(浏览器、ipad或显示墙)
●viewport(optional)如果客户端提供视口rect,则服务器将向所有客户端重复该视口。
7)un撤销
撤消最后一个可撤销的动作(移动,设置文本、敲击等)。
//server<--client
[sender-id,"un",region-id]
//server-->client
[client-id,'undo',target-id,removedEventId]
撤消示例:移动窗口,然后撤消该移动
以下示例图示移动,以及该移动如何撤消。
服务器从工作空间历史中移除历史事件,并且通知被订阅到房间的所有客户端该记录将不再是工作空间历史时间线的部分。经由HTTP API对未来的历史请求将不会包括撤消事件(直到我们实现重做为止)。
8)up用户权限
获取当前用户对这个工作空间的权限。只有当客户端作为特定用户的代理人时才相关,只有当使用公钥认证(显示墙)时不相关。
//server-->client
[sender-id,"up",permissions]
●Permissions权限类型的哈希和指示用户是否具有该权限的真/假。
目前,唯一权限是指示可以与其他人共享工作空间的用户的“can_share”。
9)vc视口改变
更新一个客户端的视口已改变的会话中的其他客户端。这是为了支持“跳到用户的视图”和“跟随我”特征而被设计的。客户端首次进入会话时,发送VC。这确保其他客户端能够跟随它们的移动。当处理传入VC事件时,客户端必须保持由client ID键入的视口的缓存。这是为了处理具有缺少视口的房间列表成员资格(rl)事件在相关联的VC事件之后到达的情况。将目标视口改变为修订的目标视口可以包括在一个尺寸或另一尺寸或这两个尺寸两者中的视口大小的改变,这不会维护视口的长宽比。目标视口中的改变还可以包括视口的页面缩放的改变。当“跳转到用户视图”或“跟随我”模式下的主客户端视口接收到第一“vc”记录时,它是用于将主客户端侧视口的可显示区域映射到目标视口的区域的指令。随后的“vc”记录使得主客户端侧视口被重新映射到目标视口的可显示区域。当“跳转到用户的视图”或“跟随我”特征被禁用时,主客户端视口返回到其先前的窗口。
//server<-->client
[sender-id,"vc",viewport-rect]
●viewport-rect是表示发送客户端上可查看的工作空间的区段的形式为[x1,y1,x2,y2]的阵列。
10)he历史事件
历史事件是持久化到数据库的数据片段。重新创建视觉工作空间所需的任何信息都应经由he消息而被发送到协作服务。
示例:
●创建注解、图像和其他小部件
●移动小部件
●设置或更新小部件的属性(例如,注解文本、标记的位置)
●删除小部件
当服务器接收到历史事件时,它执行以下步骤:
●为事件指派唯一的id
●将事件持久化到数据库
●将事件与其id一起广播到被连接到工作空间的所有客户端
●历史事件基本消息格式
//server<--client
[client-id,"he",target-id,event-type,event-properties]
●client-id(string)发起端客户端的ID
●target-id(string)与该事件相关的目标对象/小部件/app的ID
●event-type(string)任意事件类型
●properties(object)描述事件相关键/值的JSON对象
regionId(string)如果在画布区域中创建对象,则为画布区域标识符(可选地,如果包括在由客户端发送的历史事件中,则将包括该区域标识符)
消息中包括的所有属性都将被存储在服务器上,并且被回传到客户端。它们也将被包括在通过http被发送的历史中。
//server-->client
[client-id,"he",target-id,event-id,event-type,event-properties]
●client-id(string)发起端客户端的ID
●target-id(string)与该事件相关的目标窗口的ID
●event-id(string)数据库中事件的ID
●event-type(string)任意事件类型
●properties(object)描述用于事件的相关键/值的JSON对象
regionId(string)如果在画布区域中创建对象,则为画布区域标识符(可选的,如果包括在由客户端发送的历史事件中,则将包括该区域标识符)
批量历史事件
为了确保紧耦合事件的排序,可以通过将事件有效负载改变为事件有效负载的阵列来批量发送多个消息。
//server<‐‐client
[client‐id,"bhe",[event1,event2,event3,event4]]
在这种情况下,每个事件是作为标准web套接字历史消息发送的分组。
事件结构是:
[targetId,eventType,props]
因此,clientId部分不重复,但所有其他都是标准事件。
当前历史事件类型
●create向工作空间添加小部件
●delete从工作空间移除小部件
●position更新工作空间中小部件的大小或位置
●template改变卡模板(背景颜色)
●membership是更新目标子节点。被用于组
●pin是钉住或解除钉住小部件
●stroke是将笔或橡皮擦敲击添加到小部件
●text是设置或更新注解的文本和/或文本格式化。
●Markercreate创建位置标记
●markermove移动现有位置标记
●markerdelete删除现有位置标记
●tsxappevent用于创建、删除和更新tsx小部件(诸如web浏览器)●navigate用于导航到组文档内部的不同页面(MS文档/PDF)小部件和历史事件表
*浏览器客户端支持接收这些消息的可替换的版本,但不将其发送到其他客户端。由协作***支持但当前不由任何客户端支持。
历史事件细节
注释
注释被存储在历史数据库中,但与特定对象而非平面上的位置相关联。
服务器将在注释的正文中将‘名称’附加到属性对象中。父属性是可选,并且是id
[client‐id,"he",comment‐id,"delete"}]
[client‐id,"he",comment‐id,"text",{"text":"text of the comment"}]创建
客户端将‘创建’发送到协作服务器,以向工作空间添加小部件。对于‘创建’消息,target-id是包括元素的id,该id通常是workspace-id。通用小部件创建示例
●属性
id(string)小部件的唯一标识符
type(string)小部件的类型
regionId(string)如果对象是在画布区域中创建,则为canvas区域
大多数小部件还将具有位置属性,其通常是rect和order,但可能是点或其他表示。
卡创建示例
●属性
id(string)窗口的唯一标识符
baseName(string)背景图像文件名称
ext(string)背景图像文件扩展名
rect(object)窗口的位置
actualWidth(int)背景图像宽度(以像素为单位)
actualHeight(int)背景图像的高度(以像素为单位)
order(int)z次序
type(string)可以具有文本的对象的“注解”、其他对象的“图像”
regionId(string)如果对象是在画布区域中创建,则为canvas区域
hidden(boolean)窗口当前是否被隐藏
text(string)包括在注解中的文本(可选)
styles(object)注解中包括的文本的样式(可选)
PDF创建示例
●属性
type(string)“pdf”
id(string)pdf的唯一标识符
assetPath(string)资产在资产服务器上的位置。使用配置服务获取资产基本路径。
rect(object)窗口在工作空间中的位置
actualWidth(int)最宽页面在pdf中的宽度,其与actualHeight结合以构建“边界框”
actualHeight(int)最高页面在pdf中的高度,其与actualWidth结合以构建“边界框”
filename(string)pdf的原始文件名
order(int)z次序
hidden(boolean)窗口当前是否被隐藏
pin(boolean)pdf是否被钉住在工作空间上的一个位置
regionId(string)如果对象在画布区域中创建,则为画布区域(可选)
组创建示例(见上文)
通用组位置示例(见上文)
成员资格(见上文)
组文档创建示例(见上文)
呈现创建示例
//client‐‐>server
[client‐id,
"he",
target‐id,
"create",
{"type":"presentation",
"id":"53a52b39250f62fce",
"children":[]}]
●属性
type(string)“呈现”
id(string)组的唯一标识符
children(array)应当作为以呈现次序呈现的部分的小部件的target-id的阵列
呈现创建示例
//server‐‐>client
[client‐id,
"he",
target‐id,//presentation id
event‐id,
"create",
{
"type":"presentation",
"children":[
"id0398749123",
"id1838094221",
"id2849239042",
"id3849012830"]}]
●属性
type(string)“呈现”
children(array)子节点(页面)对象ID的阵列,阵列次序表示子节点(页面)次序。
删除
从工作空间移除小部件。
//server<--client
[client-id,"he",target-id,"delete",{"hidden":true}]
//server-->client
[client-id,"he",target-id,event-id,"delete",{"hidden":true}]
位置
被用于在移动、弹出、调整大小等动作之后,保存窗口小部件的位置。
通用小部件位置示例
//server<--client
[client-id,"he",target-id,"position",{new-position}]
//server-->client
[client-id,"he",target-id,event-id,"position",{new-position}]
●属性
New-position(object)以某种方式表示对象的新位置。参见窗口示例。
通用窗口位置示例
//server<--client
[client-id,"he",target-id,"position",{"rect":[-1298,-390,-1018,-230],"order":4}]
//server-->client
[client-id,"he",target-id,event-id,"position",{"rect":[-1298,-390,-1018,-230],"order":4}]
●属性
rect(object)目标窗口的位置。被指定为x1、y1、x2、y2
order(int)目标窗口的z次序
模板
被用于改变标记的模板。这允许改变背景颜色。
注解模板示例
//server-->client
[client-id,"he",workspace-id,event-id,"template",{"baseName":"sessions/all/Beige"}]
●属性
baseName(string)新背景的文件名称。文件必须已经在协作服务器上。模板列表可以经由/card_templates.json处的http-协议而获得
被用于钉住小部件,并且防止用户移动或调整该小部件大小。还用于移除现有钉住。
通用小部件位置示例
//server-->client
[client-id,"he",workspace-id,event-id,"pin",{"pin":true}]
●属性
pin(boolean)真对应钉住,假对应解除钉住
敲击
用于向小部件或工作空间背景添加敲击。
通用敲击示例
●属性
size(integer)使用包括对象的坐标空间的敲击的直径。画布上的敲击在世界空间内调整大小,而小部件上的敲击在其父窗口小部件空间内调整大小。
brush(integer)渲染敲击时要使用的刷子类型。1是画刷,而2是擦刷。
color(numbers)敲击颜色的r/g/b/a值。忽略擦除敲击(尽管可能仍然存在)。
locs(array)格式为[10,1,10,2,12,3]的敲击位置,其中坐标在阵列中是成对的[x,y,x,y,x,y,...]。与大小类似,位置在包括对象的坐标空间内。
regionId(string)如果敲击是在画布区域中被创建,则为画布区域(可选)。
渲染注解:敲击应当利用以敲击的第一点和最后一点为中心的端帽(end cap)被渲染。端帽的直径应当等于刷子大小。渲染端帽是每个客户端的责任。
文本
在小部件上设置文本和样式。文本属性和样式属性均是可选的。通用文本示例
●属性
text(string)要在小部件上图示的文本字符串
style(hash)要应用于文本的CSS样式
标记创建
在工作空间的特定位置创建位置标记(映射标记、路径点)示例
●属性
createTime(int)创建时间(unix时间)
name(string)位置标记的标签
y(number)标记的y位置
x(number)标记的x位置
template(string)标记模板名称
浏览器客户端所接受的可替换形式
标记移动
在工作空间中将现有位置标记(地图标记、路径点)移动到新位置。
示例
●属性
y(number)标记的y位置
x(number)标记的x位置
浏览器客户端所接受的可替换形式
标记删除(markerdelete)
删除现有位置标记。
示例
//server<--client
[client-id,"he",marker-id,"markerdelete",{}]
//server-->client
[client-id,"he",marker-id,event-id,"markerdelete",{}]
浏览器客户端所接受的可替换形式
tsxappevent
TSXappevent向tsx***上的各种小部件发送历史事件。
示例
●属性
payload(object)该tsxappevent所需的特性
messageType(string)消息的类型
创建web浏览器的示例
●属性
payload(object)创建浏览器所需的细节
x(number)标记的x位置
y(number)标记的y位置
worldSpaceWidth(number)在世界空间中的宽度
worldSpaceHeight(number)在世界空间中的高度
windowSpaceWidth(number)在窗口空间中的宽度
windowSpaceHeight(number)在窗口空间中的高度
version(number)#TODO
url(number)url,该浏览器小部件应指向用于创建用于web浏览器小部件的浏览器targetTsxAppId*(string)“webbrowser”的messageType*(string)“createBrowser”
删除web浏览器的示例
导航
导航到有效负载中的不同项的示例。例如,这可以被用于导航到URL的浏览器小部件。
[
client‐id,
"he",
target‐id,//Group/presentation or maybe Browser URL ID
"navigate",
payload//导航到这个页面
]
11)ve易失性事件
数据库中没有记录易失性事件,因此它们对于正在进行中的流传输事件(比如在屏幕上拖动卡)有用,并且一旦用户抬起手指,则使用HistoryEvent以便记录其最终的位置。
易失性事件基本消息格式
//server<-->client
[client-id,"ve",target-id,event-type,event-properties]
●client-id(string)发起端客户端的ID
●target-id(string)与此事件相关的目标窗口的ID
●event-type(string)任意事件类型
●properties(object)描述事件相关键/值的JSON对象
当前易失性事件类型
●sb是开始新敲击。
●sc是继续先前开始的敲击。
●se是结束敲击
●position是用于与其他客户端共享不应该被持久化的位置。例如,图示正在被实时拖动的窗口。
●bf是开始跟随:用户A开始跟随用户B。用于通知用户A用户B正在跟随。
●ef是结束跟随:用户B不再跟随用户A。用于通知用户A用户B不再跟随。
///
按小部件类型的易失性事件
工作空间
●sb开始敲击。被用于在一个客户端上渲染敲击,同时它们正在在另一客户端上绘制。
●sc通过给出要包括的另一点,来继续先前开始的敲击。被用于在另一客户端上绘制的同时而渲染敲击。
●se结束先前开始的敲击。
●bf开始跟随:用户A开始跟随用户B。用于通知用户A用户B正在跟随。
●ef结束跟随:用户B不再跟随用户A。用于通知用户A用户B不再跟随。
注解
●position实况更新注解的位置,而同时其正在被另一用户移动。●sb开始敲击。被用于在一个客户端上渲染敲击,同时它们正在在另一客户端上被绘制。
●sc通过给出要包括的另一点,来继续先前开始的敲击。用于渲染敲击,同时它们正在在另一客户端上被绘制。
●se结束先前开始的敲击。
图像
●position是实况更新注解的位置,同时其正在被另一用户移动。●sb是开始敲击。被用于在一个客户端上渲染敲击,同时它们正在在另一客户端上被绘制。
●sc是通过给出要包括的另一点,来继续先前开始的敲击。被用于渲染敲击,同时它们正在在另一客户端上被绘制。
●se是结束先前开始的敲击。
易失性事件细节
以下字段是几个易失性事件的特性。
●stroke-id是客户端选择敲击-ID。当前,它们是由以点分隔的、以增加的整数所组成的sender-id。这是为了在所有客户端之间的服务器上下文内使其唯一。
●target-id是敲击可以附加到工作空间中的特定目标(容器)。在属于小部件的敲击的情况下,target-id字段将包括小部件的ID。通过使其target-id与工作空间id相同,来指定工作空间中专用于主画布的敲击。
位置-ve
被用于广播围绕工作空间移动的窗口的中间步骤。
通用位置示例
//server<-->client
[client-id,"ve",target-id,"position",{position-info}]
●属性
position-info是关于小部件的新位置的信息
窗口位置示例
//server<-->client
[client-id,"ve",target-id,"position",{"rect":[-1298,-390,-1018,-230],"order":4}]
●属性
rect(object)目标窗口的位置
order(int)目标窗口的z次序
sb
被用于向其他客户端广播敲击的开头。
●属性
x,y(int)这个敲击的起点
strokeId(string)新敲击的ID
sc:
继续敲击id指定的敲击。
//server<-->client
[client-id,"ve",target-id,"sc",{"x":100,"y":300,"strokeId":"395523d316e942b496a2c8a6fe5f2cac"}]
●属性
x,y(int)这个敲击的新终点
strokeId(string)新敲击的ID
se:
结束由stroke-id指定的敲击。
//server<-->client
[client-id,"ve",target-id,"se",{"strokeId":"395523d316e942b496a2c8a6fe5f2cac"}]
●stroke-id(string)所继续的敲击的ID
bf:
开始跟随:用户A开始跟随用户B。被用于通知用户A用户B正在跟随。对于这个全局易失性事件,target-id是会话id。被跟随的用户将更新UI,以指示用户B正在跟随。
//server<‐‐>client
[follower‐client‐id,"ve",session‐id,"bf",{"clientId":"395523d316e942b496a2c8a6fe5f2cac"}]
●属性
clientId(string)被跟随的客户端ID
ef:
结束跟随:用户B不再跟随用户A。被用于通知用户A用户B不再跟随。对于这个全局易失性事件,target-id是会话id。被跟随的用户将更新UI以指示用户B不再跟随。如果用户B离开会话,则用户A将接收到不包括用户B的房间列表消息。用户A的房间列表将被重建,而不再示出作为跟随者的用户B。
//server<‐‐>client
[follower‐client‐id,"ve",session‐id,"ef",{"clientId":"395523d316e942b496a2c8a6fe5f2cac"}]
●属性
clientId(string)不再被跟随的客户端的ID
示例交互:移动对象
说明HistoryEvent/VolatileEvent相关改变中的一些改变的好示例是移动对象。当通过拖动正在移动/调整对象大小时,一系列易失性事件(VE)被发送到服务器,并且被重新广播给订阅工作空间的所有客户端:
一旦用户完成移动对象,则客户端就应当发送历史事件,以指定对象的rect和次序:
服务器将利用新持久化的he记录作出响应。注意包括记录的eventId。
注解:eventId也将被包括在经由HTTP API获取的历史中。
调整组的大小可能生成“he”记录,其示出了不同尺寸的“rect”。例如,为了将工作空间内的组的大小加倍,以下项的初始记录:
["<clientId>","he","<targetId>","<eventId>","position",{"rect":[0,0,1,1],"order":0}];
could be changed to:可以被改变成:
["<clientId>","he","<targetId>","<eventId>","position",{"rect":[0,0,2,2],"order":0}]
12)disconnect断开
通知由同一用户打开的其他app实例,以关闭其连接并且停止重新连接尝试。这是被浏览器客户端所消费的,以防止当用相同工作空间打开两个选项卡时看到“疯狂重新连接”问题。
//server-->client
[-1,"disconnect"]
13)ls列表流
通知客户端列表中的当前流。与房间列表类似由其他事件触发。//server‐‐>client
[send‐id,"ls",[Stream List for Session]]
●sender-id始终为-1(指示服务器发起了该消息)流列表是对象阵列,其中每个对象包括以下字段:
●sessionId(string)包括会议的工作空间的id
●conferenceId(string)该工作空间中所有用户连接至的会议会话的id
●clientId(object ID)广播该特定流的客户端的ID
●streamId(string)该特定AV流的ID
14)bs开始流
通知服务器新AV流开始。服务器利用List Streams消息做出响应。//server<‐‐client
[sender‐id,"bs",conferenceId,conferenceProvider,streamId,streamType]
●sender-id是启动流的用户的clientID
●conferenceId(string)工作空间中所有用户连接至的会议会话的id
●conferenceProvider(string)会议的类型,例如tokbox或twilio●streamId(string)该特定AV流的ID
●streamType(string)音频、视频或屏幕共享
15)es结束流
通知服务器新AV流结束。服务器利用List Streams消息做出响应。//server<‐‐client
[sender‐id,"es",conferenceId,streamId]
●sender-id启动流的用户clientID
●conferenceId(string)该工作空间中所有用户连接至的会议会话的id
●streamId(string)该特定AV流的ID
16)ss流状态
通知服务器现有AV流的改变状态。服务器利用List Streams消息做出响应。
//server<‐‐client
[sender‐id,"ss",streamId,streamType]
●sender-id是启动流的用户的clientID
●streamId(string)该特定AV流的ID
●streamType(string)音频、视频或屏幕共享
17)oid对象ID预留
使用这个来创建新的唯一对象id,其可以被用于创建创建对象的新历史事件。
```javascript
//server<--client
[sender-id,"oid"]
服务器利用以下做出响应:
//server-->client
["-1",'oid',<new-object-id>]
上文所描述的API提供了一个示例消息结构。还可以使用其他结构,以适合特定实现方式。
如本文中所使用的,信息项的“标识”不一定要求信息项的直接规范。通过简单地通过一个或多个间接层来引用实际信息,或者通过标识一起足以确定实际的信息项的一个或多个不同的信息项,可以在字段中“标识”信息。此外,术语“指示”在本文中用于意指与“标识”相同。
此外,如本文中所使用的,如果前导信号、事件或值影响给定信号、事件或值,则给定信号、事件或值“响应于”前导信号、事件或值。如果存在中间处理元件、步骤或时间段,则给定信号、事件或值仍然可以“响应于”前导信号、事件或值。如果中间处理元件或步骤组合多于一个信号、事件或值,则处理元件或步骤的信号输出被视为响应于信号、事件或值输入中的每一个。如果给定信号、事件或值与前导信号、事件或值相同,则这仅仅是种退化情况,其中给定信号、事件或值仍被认为是“响应于”先前信号、事件或值。类似地,定义给定信号、事件或值对另一信号、事件或值的“依赖关系”。
申请人在本文中单独地公开了本文中所描述的相应单个特征以及两个或更多这样的特征的任何组合,使得这样的特征或者组合能够根据本领域技术人员的公知常识基于作为一个整体的本说明书来实现,而无论这样的特征或者特征组合是否解决本文中所公开的任何问题,并且这不对权利要求的范围造成限制。申请人指示所公开的技术的方面可以由任何这样的特征或特征的组合组成。鉴于上述描述,对于本领域技术人员而言,显而易见的是可以在所公开的技术的范围内进行各种修改。
为了说明和描述的目的,提供了所公开技术的优选实施例的上述描述。它不是穷举的,也不是将所披露的技术限制为所公开的精确形式。显然,多个修改和改变对于本领域技术人员将是显而易见的。例如,虽然本文中所描述的显示器是大格式,但是小格式显示器还可以被布置成使用多个绘制区域,尽管多个绘制区域对于至少大到12英尺宽的显示器是更有用的。具体而非限制性地,通过本专利的背景技术部分提出的或通过引用并入的材料所描述的任何和所有改变,通过引用被特定地并入本文中所公开的技术的实施例的描述中。此外,关于任何一个实施例,本文中通过引用而描述、提出或并入的任何和所有改变也将被认为关于所有其他实施例而进行教导。为了最好地解释所公开的技术的原理及其实际应用,本文中所描述的实施例被选择和描述,从而使得本领域技术人员能够理解针对各种实施例以及通过适于所设想的特定应用的各种修改公开的技术。所公开的技术的范围旨在由所附权利要求及其等同来限定。
与本文中的所有流程图一样,应当领会多个步骤可以组合、并行执行或以不同的顺序执行,而不影响所实现的功能。在一些情况下,正如读者将领会的那样,仅当也做出某些其他改变时,步骤的重新布置将实现相同结果。在其他情况下,如读者将领会,仅当满足某些条件时,步骤的重新布置将实现相的结果。此外,应当领会本文中的流程图仅图示与所公开的技术的理解有关的步骤,并且应当理解用于实现其他功能的多个附加步骤可以在所示的那些步骤之前、之后和之间被执行。
虽然通过参考上文所详述的优选实施例和示例公开所公开的技术,但是应当理解这些示例旨在作为说明性的而非限制性。应当设想,本领域技术人员将容易想到修改和组合,这些修改和组合将在公开的技术的精神和所附权利要求的范围内。应当设想,本文中所描述的技术可以使用空间事件映射之外的其他协作数据结构而实现。

Claims (26)

1.一种包括网络节点的***,所述网络节点包括具有物理显示空间的显示器、用户输入设备、处理器和通信端口,所述网络节点被配置有逻辑,以用于:
建立与一个或多个其他网络节点的通信;
存储与在虚拟工作空间中具有位置的图形目标有关的事件的日志的至少一部分,所述日志中的条目包括事件的所述图形目标在所述虚拟工作空间中的位置、所述事件的时间以及所述图形目标的目标标识符;
将所述物理显示空间中的屏幕空间映射到所述虚拟工作空间内的视口,以标识所述视口内的所述日志中的条目,并且将由标识的所述条目所标识的图形目标渲染在所述屏幕空间上;
接受来自所述用户输入设备的输入数据,所述输入数据创建标识所述屏幕空间上的图形目标组的事件;以及
向所述一个或多个其他网络节点发送标识所标识的组的成员的消息。
2.根据权利要求1所述的***,包括用于发送标识所标识的组的成员资格改变的消息的逻辑。
3.根据权利要求1所述的***,其中接受输入数据的所述逻辑包括:解释所述屏幕空间中的触摸手势的逻辑、以及渲染标识所述屏幕空间中的图形构造以通过特定图形构造指示所述组中的成员资格的逻辑,所述触摸手势包括将多个图形构造标识为组的成员的触摸手势。
4.根据权利要求1所述的***,其中接受输入数据的所述逻辑包括:检测所述屏幕空间中的四个同时触摸事件,并且解释所述四个同时触摸事件以针对选定组在所述屏幕空间中定义边界的逻辑。
5.根据权利要求4所述的***,其中解释四个同时触摸事件的所述逻辑执行包括以下的过程:
将所述四个同时触摸事件中的两个触摸点的位置选择为第一对,并且将所述四个同时触摸事件中的两个其他触摸点标识为第二对;
使用所述第一对来定义第一水平坐标和第一垂直坐标,并且使用所述第二对来定义第二水平坐标和第二垂直坐标;
使用由所述第一水平坐标、所述第一垂直坐标、所述第二水平坐标和所述第二垂直坐标定义的多边形,标识图形构造;
在检测到选择结束事件时,将包括标识的所述图形目标的组标识为所述组的成员;以及
发送标识所标识的组的所述成员的所述消息。
6.一种使用协作***由协作工作空间中的协作者创建对象组的方法,所述协作***包括网络节点,所述网络节点包括具有物理显示空间的显示器、用户输入设备、处理器和通信端口,所述方法包括:
使用所述通信端口,建立与一个或多个其他网络节点的通信;
存储与在虚拟工作空间中具有位置的图形目标有关的事件的日志的至少一部分,所述日志中的条目包括事件的所述图形目标在所述虚拟工作空间中的位置、所述事件的时间以及所述图形目标的目标标识符;
将所述物理显示空间中的屏幕空间映射到所述虚拟工作空间内的视口,以标识所述视口内的所述日志中的条目,将由标识的所述条目标识的图形目标渲染在所述屏幕空间上;
接受来自所述用户输入设备的输入数据,所述输入数据创建标识所述屏幕空间上的图形目标组的事件;以及
向所述一个或多个其他网络节点发送标识所标识的组的成员的消息。
7.根据权利要求6所述的方法,包括发送标识所标识的组的所述成员改变的消息。
8.根据权利要求6所述的方法,还包括:
将输入解释为指示所标识的组内的图形目标的移动的手势;
在所述屏幕空间中移动所标识的组;以及
向所述一个或多个其他网络节点发送指示所标识的组的移动的消息。
9.根据权利要求6所述的方法,还包括:
将输入解释为指示调整所标识的组内的图形目标的大小的手势;
在所述屏幕空间中调整所标识的组的大小;以及
向所述一个或多个其他网络节点发送指示调整所标识的组的大小的消息。
10.根据权利要求6所述的方法,还包括:
将输入解释为指示所标识的组内的图形目标的删除的手势;
在所述屏幕空间中删除所标识的组;以及
向所述一个或多个其他网络节点发送指示删除所标识的组的消息。
11.根据权利要求6所述的方法,还包括:
将输入解释为指示移除所标识的组内的图形目标的手势;
从所标识的组中移除所标识的图形目标;以及
向所述一个或多个其他网络节点发送指示移除所标识的图形目标的消息。
12.根据权利要求6所述的方法,还包括:
将输入解释为指示将图形目标添加到所标识的组的手势;
将所标识的目标添加到所标识的组;以及
向所述一个或多个其他网络节点发送指示添加所标识的图形目标的消息。
13.根据权利要求6所述的方法,还包括:
将输入解释为指示所标识的组内的图形目标的复制的手势;以及
针对所标识的组的每个成员:
复制所标识的组的所述成员;以及
向所述一个或多个其他网络节点发送指示所述成员的复制的消息。
14.根据权利要求6所述的方法,还包括:
将输入解释为指示所标识的组的取消分组的手势;
从所标识的组中移除所述成员;以及
向所述一个或多个其他网络节点发送指示没有成员的组的消息。
15.一种包括网络节点的***,所述网络节点包括具有物理显示空间的显示器、用户输入设备、处理器和通信端口,所述网络节点被配置有逻辑,以用于:
建立与一个或多个其他网络节点的通信;
存储包括在虚拟工作空间中具有位置的图形对象的工作空间协作数据结构的至少一部分,所述数据结构中的条目包括所述图形对象在所述虚拟工作空间中的位置;
将所述物理显示空间中的屏幕空间映射到所述虚拟工作空间内的视口,以标识所述视口内的所述数据结构中的条目,将由标识的所述条目标识的图形对象渲染在所述屏幕空间上;
标识所述数据结构中的对象组;
接受来自所述用户输入设备的输入数据并且确定所述输入是否与标识组中的成员有关,并且应用组规则来解释所述输入;以及
向所述一个或多个其他网络节点发送标识所述组的所述成员的消息。
16.一种***,包括:
网络节点,所述网络节点包括具有物理显示空间的显示器、用户输入设备、处理器和通信端口,所述网络节点被配置有逻辑,以用于:
建立与一个或多个其他网络节点的通信;
存储包括在虚拟工作空间中具有位置的图形对象的工作空间协作数据结构的至少一部分,所述数据结构中的条目包括所述图形对象在所述虚拟工作空间中的位置;
将所述物理显示空间中的屏幕空间映射到所述虚拟工作空间内的视口,以标识所述视口内的所述数据结构中的条目,并且将由标识的所述条目标识的图形对象渲染在所述屏幕空间上;
标识所述数据结构中的对象组;以及
接收来自其他节点的消息并且确定所述消息是否与所述组中的成员有关,并且应用组规则来解释所述消息。
17.根据权利要求15或16所述的***,其中所述数据结构包括与在虚拟工作空间中具有位置的图形目标有关的事件的日志,所述日志中的条目包括事件的所述图形目标在所述虚拟工作空间中的位置、所述事件的时间以及所述图形目标的目标标识符。
18.根据权利要求15、16或17所述的***,包括:
解释响应于包括四个同时触摸事件的、在所述物理显示空间上的触摸手势而检测到的数据,以及解释所述四个同时触摸事件以针对选定组在所述屏幕空间中定义边界的逻辑。
19.根据权利要求18所述的***,其中解释所述四个同时触摸事件的所述逻辑执行包括以下的过程:
将所述四个同时触摸事件中的两个触摸点的位置选择为第一对,并且将所述四个同时触摸事件中的两个其他触摸点标识为第二对;
使用所述第一对来定义第一水平坐标和第一垂直坐标,并且使用所述第二对来定义第二水平坐标和第二垂直坐标;
使用由所述第一水平坐标、所述第一垂直坐标、所述第二水平坐标和所述第二垂直坐标定义的多边形,标识图形构造;
在检测到选择结束事件时,将包括标识的所述图形目标的组标识为所述组的成员;以及
根据组规则,解释与组的成员有关的附加输入。
20.根据权利要求19所述的***,所述处理器包括用于渲染在所述物理显示空间中标识图形构造,以通过特定图形构造指示所述组中的成员资格的逻辑。
21.一种***,包括:
具有屏幕空间的显示器、用于检测所述屏幕空间上的触摸手势的用户输入设备、以及处理器,所述处理器包括逻辑,该逻辑用于解释响应于包括四个同时触摸事件的、在屏幕空间上的触摸手势而检测到的数据,以及解释所述四个同时触摸事件以针对选定组在所述屏幕空间中定义边界。
22.根据权利要求21所述的***,其中解释所述四个同时触摸事件的所述逻辑执行包括以下的过程:
将所述四个同时触摸事件中的两个触摸点的位置选择为第一对,并且将所述四个同时触摸事件中的两个其他触摸点标识为第二对;
使用所述第一对来定义第一水平坐标和第一垂直坐标,并且使用所述第二对来定义第二水平坐标和第二垂直坐标;
使用由所述第一水平坐标、所述第一垂直坐标、所述第二水平坐标和所述第二垂直坐标定义的多边形,标识图形构造;
在检测到选择结束事件时,将包括标识的所述图形目标的组标识为所述组的成员;以及
根据组规则,解释与组的成员有关的附加输入。
23.根据权利要求19所述的***,所述处理器包括用于渲染在所述屏幕空间中标识图形构造,以通过特定图形构造指示所述组中的成员资格的逻辑。
24.一种用于***的方法,所述***包括具有屏幕空间的显示器、用于检测所述屏幕空间上的触摸手势的用户输入设备、以及处理器,所述方法包括:
解释响应于包括四个同时触摸事件的、在所述屏幕空间上的触摸手势而检测到的数据,以针对选定组在所述屏幕空间中定义边界。
25.根据权利要求24所述的方法,其中解释所述四个同时触摸事件的所述逻辑包括:
将所述四个同时触摸事件中的两个触摸点的位置选择为第一对,并且将所述四个同时触摸事件中的两个其他触摸点标识为第二对;
使用所述第一对来定义第一水平坐标和第一垂直坐标,并且使用所述第二对来定义第二水平坐标和第二垂直坐标;
使用由所述第一水平坐标、所述第一垂直坐标、所述第二水平坐标和所述第二垂直坐标定义的多边形,标识图形构造;
在检测到选择结束事件时,将包括标识的所述图形目标的组标识为所述组的成员;以及
根据组规则,解释与组的成员有关的附加输入。
26.根据权利要求24或25所述的方法,渲染在所述屏幕空间中标识图形构造,以通过特定图形构造指示所述组中的成员资格。
CN201680031959.9A 2015-06-26 2016-05-18 用于在协作***中对对象进行分组的对象组处理和选择手势 Pending CN107667338A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562185501P 2015-06-26 2015-06-26
US62/185,501 2015-06-26
US15/093,664 2016-04-07
US15/093,664 US20160378291A1 (en) 2015-06-26 2016-04-07 Object group processing and selection gestures for grouping objects in a collaboration system
PCT/US2016/033134 WO2016209434A1 (en) 2015-06-26 2016-05-18 Object group processing and selection gestures for grouping objects in a collaboration system

Publications (1)

Publication Number Publication Date
CN107667338A true CN107667338A (zh) 2018-02-06

Family

ID=57586069

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680031959.9A Pending CN107667338A (zh) 2015-06-26 2016-05-18 用于在协作***中对对象进行分组的对象组处理和选择手势

Country Status (5)

Country Link
US (1) US20160378291A1 (zh)
EP (1) EP3314826A4 (zh)
JP (1) JP2018525716A (zh)
CN (1) CN107667338A (zh)
WO (1) WO2016209434A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110708175A (zh) * 2019-10-12 2020-01-17 北京友友天宇***技术有限公司 分布式网络中消息同步的方法

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11861561B2 (en) 2013-02-04 2024-01-02 Haworth, Inc. Collaboration system including a spatial event map
US10304037B2 (en) 2013-02-04 2019-05-28 Haworth, Inc. Collaboration system including a spatial event map
US10126927B1 (en) * 2013-03-15 2018-11-13 Study Social, Inc. Collaborative, social online education and whiteboard techniques
US10802783B2 (en) 2015-05-06 2020-10-13 Haworth, Inc. Virtual workspace viewport following in collaboration systems
US9965445B2 (en) 2015-08-06 2018-05-08 FiftyThree, Inc. Systems and methods for gesture-based formatting
CN108369465B (zh) * 2015-12-08 2021-10-12 株式会社半导体能源研究所 触摸面板、触摸面板的指令输入方法及显示***
US20170229102A1 (en) * 2016-02-05 2017-08-10 Prysm, Inc. Techniques for descriptor overlay superimposed on an asset
US10454911B2 (en) * 2016-05-27 2019-10-22 Happeo Oy Integrated intranet workspace
US20180113603A1 (en) * 2016-10-25 2018-04-26 Prysm, Inc. Floating asset in a workspace
US10613838B2 (en) 2016-10-26 2020-04-07 Soroco Private Limited Systems and methods for discovering automatable tasks
EP3316109B1 (en) * 2016-10-28 2019-09-04 TeamViewer GmbH Computer-implemented method for controlling a remote device with a local device
US10545658B2 (en) 2017-04-25 2020-01-28 Haworth, Inc. Object processing and selection gestures for forming relationships among objects in a collaboration system
US20180329597A1 (en) 2017-05-15 2018-11-15 Microsoft Technology Licensing, Llc Ink Anchoring
US10268369B2 (en) * 2017-06-06 2019-04-23 Polycom, Inc. Detecting erasure gestures in an electronic presentation system
US10318109B2 (en) 2017-06-09 2019-06-11 Microsoft Technology Licensing, Llc Emoji suggester and adapted user interface
US12019850B2 (en) 2017-10-23 2024-06-25 Haworth, Inc. Collaboration system including markers identifying multiple canvases in multiple shared virtual workspaces
US11934637B2 (en) 2017-10-23 2024-03-19 Haworth, Inc. Collaboration system including markers identifying multiple canvases in multiple shared virtual workspaces
CN108335342B (zh) * 2018-01-31 2022-03-29 杭州网易智企科技有限公司 在web浏览器上进行多人绘画的方法、设备和计算机程序产品
CN109120509B (zh) * 2018-07-26 2021-12-28 创新先进技术有限公司 一种信息收集的方法及装置
US11573694B2 (en) 2019-02-25 2023-02-07 Haworth, Inc. Gesture based workflows in a collaboration system
CN110569218B (zh) * 2019-08-01 2021-11-23 厦门市美亚柏科信息股份有限公司 一种ext文件***离线修改方法、装置及存储介质
US10802600B1 (en) * 2019-09-20 2020-10-13 Facebook Technologies, Llc Virtual interactions at a distance
US11170576B2 (en) 2019-09-20 2021-11-09 Facebook Technologies, Llc Progressive display of virtual objects
US11086406B1 (en) 2019-09-20 2021-08-10 Facebook Technologies, Llc Three-state gesture virtual controls
US10991163B2 (en) 2019-09-20 2021-04-27 Facebook Technologies, Llc Projection casting in virtual environments
US11176745B2 (en) 2019-09-20 2021-11-16 Facebook Technologies, Llc Projection casting in virtual environments
US11189099B2 (en) 2019-09-20 2021-11-30 Facebook Technologies, Llc Global and local mode virtual object interactions
US11086476B2 (en) * 2019-10-23 2021-08-10 Facebook Technologies, Llc 3D interactions with web content
CN110852723B (zh) * 2019-11-19 2021-08-20 象和文化科技(深圳)有限公司 多元叠态数据协作处理方法、***、存储介质及智能终端
CN110955482B (zh) * 2019-11-27 2023-12-05 维沃移动通信有限公司 弹窗显示的方法、装置、电子设备及介质
US11175730B2 (en) 2019-12-06 2021-11-16 Facebook Technologies, Llc Posture-based virtual space configurations
US11475639B2 (en) 2020-01-03 2022-10-18 Meta Platforms Technologies, Llc Self presence in artificial reality
US11816112B1 (en) 2020-04-03 2023-11-14 Soroco India Private Limited Systems and methods for automated process discovery
US11750672B2 (en) 2020-05-07 2023-09-05 Haworth, Inc. Digital workspace sharing over one or more display clients in proximity of a main client
US11257280B1 (en) 2020-05-28 2022-02-22 Facebook Technologies, Llc Element-based switching of ray casting rules
US11544227B2 (en) 2020-06-18 2023-01-03 T-Mobile Usa, Inc. Embedded reference object and interaction within a visual collaboration system
US11256336B2 (en) 2020-06-29 2022-02-22 Facebook Technologies, Llc Integration of artificial reality interaction modes
US11227445B1 (en) 2020-08-31 2022-01-18 Facebook Technologies, Llc Artificial reality augments and surfaces
US11176755B1 (en) 2020-08-31 2021-11-16 Facebook Technologies, Llc Artificial reality augments and surfaces
US11178376B1 (en) 2020-09-04 2021-11-16 Facebook Technologies, Llc Metering for display modes in artificial reality
US11113893B1 (en) 2020-11-17 2021-09-07 Facebook Technologies, Llc Artificial reality environment with glints displayed by an extra reality device
US11409405B1 (en) 2020-12-22 2022-08-09 Facebook Technologies, Llc Augment orchestration in an artificial reality environment
US11461973B2 (en) 2020-12-22 2022-10-04 Meta Platforms Technologies, Llc Virtual reality locomotion via hand gesture
US11294475B1 (en) 2021-02-08 2022-04-05 Facebook Technologies, Llc Artificial reality multi-modal input switching model
JP2022145219A (ja) * 2021-03-19 2022-10-03 株式会社リコー 表示装置、データ共有システム、表示制御方法およびプログラム
US12020046B1 (en) 2021-04-02 2024-06-25 Soroco India Private Limited Systems and methods for automated process discovery
US11295503B1 (en) 2021-06-28 2022-04-05 Facebook Technologies, Llc Interactive avatars in artificial reality
US11762952B2 (en) 2021-06-28 2023-09-19 Meta Platforms Technologies, Llc Artificial reality application lifecycle
US12008717B2 (en) 2021-07-07 2024-06-11 Meta Platforms Technologies, Llc Artificial reality environment control through an artificial reality environment schema
US11748944B2 (en) 2021-10-27 2023-09-05 Meta Platforms Technologies, Llc Virtual object structures and interrelationships
US11798247B2 (en) 2021-10-27 2023-10-24 Meta Platforms Technologies, Llc Virtual object structures and interrelationships
US12026527B2 (en) 2022-05-10 2024-07-02 Meta Platforms Technologies, Llc World-controlled and application-controlled augments in an artificial-reality environment
CN118132176A (zh) * 2022-12-02 2024-06-04 荣耀终端有限公司 一种显示方法、电子设备及存储介质
US11947862B1 (en) 2022-12-30 2024-04-02 Meta Platforms Technologies, Llc Streaming native application content to artificial reality devices
US11991222B1 (en) 2023-05-02 2024-05-21 Meta Platforms Technologies, Llc Persistent call control user interface element in an artificial reality environment

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001356878A (ja) * 2000-06-14 2001-12-26 Hitachi Ltd アイコン制御方法
US20090234721A1 (en) * 2007-12-21 2009-09-17 Bigelow David H Persistent collaborative on-line meeting space
CN102483848A (zh) * 2008-10-28 2012-05-30 瑟克公司 识别多点触摸区域转动手势的方法
US20130093695A1 (en) * 2009-05-21 2013-04-18 Perceptive Pixel Inc. Organizational Tools on a Multi-touch Display Device
US20140215393A1 (en) * 2013-01-31 2014-07-31 International Business Machines Corporation Touch-based multiple selection
US20140222916A1 (en) * 2013-02-04 2014-08-07 Haworth, Inc. Collaboration system including a spatial event map

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8954862B1 (en) * 2008-10-01 2015-02-10 Valador, Inc. System and method for collaborative viewing of a four dimensional model requiring decision by the collaborators
GB2473429B (en) * 2009-09-07 2013-12-11 Snow Leopard Invest Ltd A video-collaboration apparatus and method
US9479549B2 (en) * 2012-05-23 2016-10-25 Haworth, Inc. Collaboration system with whiteboard with federated display
US20140149901A1 (en) * 2012-11-28 2014-05-29 Motorola Mobility Llc Gesture Input to Group and Control Items

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001356878A (ja) * 2000-06-14 2001-12-26 Hitachi Ltd アイコン制御方法
US20090234721A1 (en) * 2007-12-21 2009-09-17 Bigelow David H Persistent collaborative on-line meeting space
CN102483848A (zh) * 2008-10-28 2012-05-30 瑟克公司 识别多点触摸区域转动手势的方法
US20130093695A1 (en) * 2009-05-21 2013-04-18 Perceptive Pixel Inc. Organizational Tools on a Multi-touch Display Device
US20140215393A1 (en) * 2013-01-31 2014-07-31 International Business Machines Corporation Touch-based multiple selection
US20140222916A1 (en) * 2013-02-04 2014-08-07 Haworth, Inc. Collaboration system including a spatial event map

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110708175A (zh) * 2019-10-12 2020-01-17 北京友友天宇***技术有限公司 分布式网络中消息同步的方法

Also Published As

Publication number Publication date
JP2018525716A (ja) 2018-09-06
EP3314826A4 (en) 2019-04-24
US20160378291A1 (en) 2016-12-29
EP3314826A1 (en) 2018-05-02
WO2016209434A1 (en) 2016-12-29

Similar Documents

Publication Publication Date Title
CN107667338A (zh) 用于在协作***中对对象进行分组的对象组处理和选择手势
US11797256B2 (en) Virtual workspace viewport following in collaboration systems
JP6417408B2 (ja) 空間的イベントマップを備えた共同システム
US20230342000A1 (en) Collaboration system including markers identifying multiple canvases in a shared virtual workspace
CN105190617B (zh) 具有对全局协作数据的白板访问的协作***
US10545658B2 (en) Object processing and selection gestures for forming relationships among objects in a collaboration system
Chen et al. Multimedia augmented reality information system for museum guidance
US8910076B2 (en) Social media platform
CN104350495B (zh) 在全景显示中管理对象以导航电子表格
CA2869470A1 (en) System and method for facilitating creation of a rich virtual environment
JP2009519627A (ja) メディアのコンカレントコラボレーションのためのシステム、方法及びコンピュータプログラム製品
US20210351946A1 (en) Digital workspace sharing over one or more display clients and authorization protocols for collaboration systems
US20240211110A1 (en) Collaboration system including markers identifying multiple canvases in multiple shared virtual workspaces
US12019850B2 (en) Collaboration system including markers identifying multiple canvases in multiple shared virtual workspaces
US20230325774A1 (en) Collaboration system including a spatial event map

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20180206

WD01 Invention patent application deemed withdrawn after publication