KR102545025B1 - Persistent viewports - Google Patents

Persistent viewports Download PDF

Info

Publication number
KR102545025B1
KR102545025B1 KR1020177016478A KR20177016478A KR102545025B1 KR 102545025 B1 KR102545025 B1 KR 102545025B1 KR 1020177016478 A KR1020177016478 A KR 1020177016478A KR 20177016478 A KR20177016478 A KR 20177016478A KR 102545025 B1 KR102545025 B1 KR 102545025B1
Authority
KR
South Korea
Prior art keywords
viewport
interest
user system
update
passive user
Prior art date
Application number
KR1020177016478A
Other languages
Korean (ko)
Other versions
KR20170098830A (en
Inventor
폴 발렌틴 보르자
바이하브 기리쉬 파리크
Original Assignee
마이크로소프트 테크놀로지 라이센싱, 엘엘씨
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 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 filed Critical 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20170098830A publication Critical patent/KR20170098830A/en
Application granted granted Critical
Publication of KR102545025B1 publication Critical patent/KR102545025B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9577Optimising the visualization of content, e.g. distillation of HTML documents
    • 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
    • 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/0482Interaction with lists of selectable items, e.g. menus
    • 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/0485Scrolling or panning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • G06F40/106Display of layout of documents; Previewing
    • 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
    • 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/103Workflow collaboration or project management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • H04L65/403Arrangements for multi-party communication, e.g. for conferences
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/14Display of multiple viewports
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/34Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators for rolling or scrolling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Resources & Organizations (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Strategic Management (AREA)
  • Data Mining & Analysis (AREA)
  • Human Computer Interaction (AREA)
  • Databases & Information Systems (AREA)
  • Quality & Reliability (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Operations Research (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Artificial Intelligence (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

본 지속적 뷰포트 아키텍처는 협업 문서가 업데이트될 때 사용자에게 영구적이며 올바르게 위치된 뷰포트를 제공한다. 본 아키텍처는 문서의 콘텐츠 내에서 사용자의 관심-요소를 식별하고 사용하여, 사용자의 뷰포트의 올바른 위치를 결정하고 재계산한다. 본 아키텍처는 뷰포트에서 콘텐츠(또는 콘텐츠 섹션)의 최상단 요소를 추적하고 이 최상단 요소를 기준 요소로 사용한다. 이 최상단 요소는 단락, 머리글, 텍스트 문자열 및 이미지 중 하나 이상일 수 있다. 기본 문서가 업데이트될 때, 뷰포트는 상기 기준 요소 검색을 수행하고, 기준 요소를 찾은 후에, 관심-요소가 상기 뷰포트 내에 있도록 뷰포트의 X 및 Y 좌표 오프셋들을 조정한다.This persistent viewport architecture provides the user with a persistent, correctly positioned viewport as the collaborating document is updated. The architecture identifies and uses the user's interest-elements within the document's content to determine and recalculate the correct position of the user's viewport. This architecture tracks the topmost element of the content (or section of content) in the viewport and uses this topmost element as the reference element. This top-level element can be one or more of paragraphs, headings, text strings, and images. When the underlying document is updated, the viewport performs the reference element search and, after finding the reference element, adjusts the viewport's X and Y coordinate offsets so that the element of interest is within the viewport.

Figure R1020177016478
Figure R1020177016478

Description

지속적인 뷰포트 제공 기법{PERSISTENT VIEWPORTS}Techniques for providing persistent viewports {PERSISTENT VIEWPORTS}

문서 크기(예를 들어, 길이)가 장치의 물리적 스크린이 디스플레이할 수 있는 크기를 초과하는 경우, 스크롤 바와 같은 사용자 상호작용 제어 요소가 도입되어 뷰포트(viewport)를 생성할 수 있으며, 이 뷰포트를 통해서 문서를 보고 읽을 수 있다. 사용자가 스크롤 바의 스크롤 썸 제어 요소(scroll thumb control element)의 위치를 이동시킬 때에, 문서가 뷰포트를 통해 이동 중인 것처럼 사용자에게 보이지만, 사용자는 본질적으로 문서에 걸쳐서 뷰포트를 이동한다. 이러한 방식은 운영 체제 또는 애플리케이션이 해당 장치의 디스플레이가 수용할 수 있는 것보다 큰 문서의 탐색을 용이하게 하는 일 방식이다. 이러한 기법은 단일-사용자 환경에서 적용되지만, 다수의 사용자가 대응하는 사용자 뷰포트들을 통해 동일한 문서를 편집할 수 있는 다중-사용자 협업 툴의 환경에서는 문제가 된다. If the document size (e.g., length) exceeds what the device's physical screen can display, user interaction control elements such as scroll bars can be introduced to create a viewport through which a viewport can be created. You can view and read the document. When the user moves the position of the scroll bar's scroll thumb control element, the document appears to the user as if it is moving through the viewport, but the user is essentially moving the viewport across the document. This is one way an operating system or application can facilitate navigation of documents that are larger than the device's display can accommodate. This technique works in a single-user environment, but becomes problematic in multi-user collaboration tool environments where multiple users may edit the same document through corresponding user viewports.

다음은 본 명세서에 기술된 일부 신규한 구현예에 대한 기본적인 이해를 제공하기 위해 간략화된 요약을 제공한다. 이러한 요약은 포괄적인 개요는 아니며 핵심/중요 요소들을 식별하거나 본 발명의 범위를 규정하기 위한 것이 아니다. 이러한 요약의 유일한 목적은 나중에 제시되는 보다 상세한 설명에 대한 서막으로서 일부 개념들을 단순화된 형태로 제시하는 것이다. The following provides a simplified summary to provide a basic understanding of some of the novel implementations described herein. This summary is not a comprehensive overview and is not intended to identify key/critical elements or to delineate the scope of the invention. Its sole purpose is to present some concepts in a simplified form as a prelude to the more detailed description that is presented later.

본 지속적 뷰포트 아키텍처는 가상 문서가 업데이트 중일 때 수동적 사용자(및 능동적 사용자)에게 영구적이며 올바르게-위치된 수동적 사용자 뷰포트를 제공한다. 본 아키텍처는 협업 세션에도 적용될 수 있다. 본 아키텍처는 문서의 콘텐츠 내에서 사용자의 관심-요소를 식별하고 사용하여, 수동적 사용자 뷰포트의 올바른 위치를 결정하고 재계산한다. 또한, 본 아키텍처는 상기 수동적 사용자 뷰포트로부터 콘텐츠(또는 콘텐츠 섹션)의 최상단 요소를 추적하고 이 최상단 요소를 기준 요소로 사용한다. 이 최상단 요소는 예를 들어, 단락, 머리글, 텍스트 문자열 및 이미지 중 하나 이상일 수 있다. The present persistent viewport architecture provides a persistent, correctly-positioned passive user viewport to passive users (and active users) when the virtual document is being updated. This architecture can also be applied to collaboration sessions. The present architecture identifies and uses the user's interest-elements within the document's content to determine and recalculate the correct position of the passive user's viewport. Also, the present architecture tracks the topmost element of the content (or section of content) from the passive user viewport and uses this topmost element as the reference element. This top-most element can be, for example, one or more of paragraphs, headings, text strings, and images.

기본 가상 문서가 업데이트 예정일 때, 수동적 사용자 뷰포트는 상기 기준 요소 검색을 수행하고, 기준 요소를 찾은 후에, 상기 관심-요소가 상기 수동적 사용자 뷰포트 내에 있도록 상기 수동적 사용자 뷰포트의 X 및 Y 좌표 오프셋들을 조정한다.When the underlying virtual document is due to be updated, the passive user viewport performs the reference element search and, after finding the reference element, adjusts the X and Y coordinate offsets of the passive user viewport so that the interest-element is within the passive user viewport. .

본 지속적 뷰포트 아키텍처는 시스템으로서 구현될 수 있으며, 상기 시스템은 가상 문서의 콘텐츠 내에서 관심-요소를 식별하도록 구성된 요소 컴포넌트(element component)로서, 상기 관심-요소는 (예를 들어, 협업 세션(collaboration session)의) 수동적 사용자에게 프리젠테이션되는 상기 가상 문서의 수동적 사용자 뷰포트(viewport) 내에 존재하는, 상기 요소 컴포넌트; (예를 들어, 상기 협업 세션의) 능동적 사용자로부터 상기 가상 문서의 업데이트를 수신 및 프로세싱하도록 구성된 업데이트 컴포넌트(update component); 및 상기 능동적 사용자에 의한 상기 업데이트로 인한 상기 콘텐츠의 임의의 위치 변화에 관계없이, 상기 수동적 사용자의 상기 수동적 사용자 뷰포트 내에 상기 관심-요소가 유지되게 상기 수동적 사용자 뷰포트를 이동시키도록 구성된 뷰포트 컴포넌트(viewport component)를 포함한다. The persistent viewport architecture may be implemented as a system, wherein the system is an element component configured to identify an interest-element within the content of a virtual document, wherein the interest-element is (e.g., a collaboration session). the element component, present within a passive user viewport of the virtual document being presented to the passive user (of a session); an update component configured to receive and process updates of the virtual document from an active user (eg, of the collaboration session); and a viewport component configured to move the passive user viewport such that the interest-element is maintained within the passive user viewport of the passive user, regardless of any position change of the content due to the update by the active user. component).

본 지속적 뷰포트 아키텍처는 방법으로서 구현될 수 있으며, 상기 방법은, 가상 문서의 콘텐츠 내에서 관심-요소를 식별하는 동작으로서, 상기 관심-요소는 (예를 들어, 상기 협업 세션의) 수동적 사용자 시스템 상에 프리젠테이션되는 상기 가상 문서의 수동적 사용자 뷰포트 내에 존재하는, 상기 식별하는 동작; (예를 들어, 상기 협업 세션의) 능동적 사용자 시스템으로부터 상기 가상 문서의 콘텐츠에 대한 업데이트를 수신하는 동작; 및 상기 능동적 사용자 시스템에 의한 상기 업데이트로 인한 상기 콘텐츠의 임의의 위치 변화에 관계없이, 상기 수동적 사용자 시스템의 상기 수동적 사용자 뷰포트 내에 상기 관심-요소를 유지시키는 동작을 포함한다.The present persistent viewport architecture may be implemented as a method, the operation of identifying an element of interest within the content of a virtual document, the interest-element on a passive user system (e.g., of the collaboration session). the act of identifying, present within a passive user viewport of the virtual document being presented to; receiving updates about content of the virtual document from an active user system (eg, of the collaboration session); and maintaining the interest-element within the passive user viewport of the passive user system regardless of any positional change of the content due to the update by the active user system.

본 지속적 뷰포트 아키텍처는 또 다른 시스템으로서 구현될 수 있으며, 상기 또 다른 시스템은 가상 문서의 콘텐츠 내에서 관심-요소를 식별하기 위한 수단으로서, 상기 관심-요소는 예를 들어, 협업 세션의 수동적 사용자 시스템 상에 프리젠테이션되는 상기 가상 문서의 수동적 사용자 뷰포트 내에 존재하는, 상기 식별 수단; 상기 관심-요소에 대한 상기 수동적 사용자 뷰포트의 위치를 계산하기 위한 수단; 상기 수동적 사용자 시스템의 상기 수동적 사용자 뷰포트의 콘텐츠 내에서 기준 요소를 식별하기 위한 수단; 상기 협업 세션의 능동적 사용자 시스템으로부터 상기 가상 문서의 업데이트를 수신하기 위한 수단; 및 상기 능동적 사용자 시스템에 의한 상기 업데이트로 인한 상기 콘텐츠의 임의의 위치 변화에 관계없이, 상기 수동적 사용자 시스템의 상기 수동적 사용자 뷰포트 내에 상기 관심-요소가 포함되게 상기 수동적 사용자 뷰포트를 이동시키기 위한 수단을 포함한다. The present persistent viewport architecture may be implemented as another system as a means for identifying interest-elements within the content of a virtual document, where the interest-elements are, for example, the passive user system of a collaboration session. said means for identification, being within a passive user viewport of said virtual document being presented thereon; means for calculating the position of the passive user viewport relative to the interest-factor; means for identifying a reference element within content of the passive user viewport of the passive user system; means for receiving updates of the virtual document from an active user system of the collaboration session; and means for moving the passive user viewport so that the element of interest is included within the passive user viewport of the passive user system, regardless of any change in position of the content due to the update by the active user system. do.

전술한 목적 및 관련된 목적을 달성하기 위해, 이하의 설명 및 첨부된 도면과 관련하여 소정의 예시적인 양태들이 본 명세서에 기술된다. 이러한 양태들은 본 명세서에 개시된 원리들이 실시될 수 있고 모든 양태들 및 이의 균등사항들이 청구된 청구 대상의 범위 내에 있도록 되는 다양한 방식들을 나타낸다. 다른 이점들 및 신규한 특징들은 도면들과 함께 고려될 때 다음의 상세한 설명으로부터 명백해질 것이다.To the accomplishment of the foregoing and related objectives, certain exemplary aspects are described herein in conjunction with the following description and accompanying drawings. These aspects represent the various ways in which the principles disclosed herein may be practiced and all aspects and equivalents thereof fall within the scope of the claimed subject matter. Other advantages and novel features will become apparent from the detailed description that follows when considered in conjunction with the drawings.

도 1은 개시된 아키텍처에 따른 시스템을 도시한다.
도 2는 개시된 아키텍처에 따라 뷰포트 지속성(viewport persistence)을 위해서 고려될 수 있는 콘텐츠의 요소들의 보다 상세한 도면을 도시한다.
도 3은 개시된 지속적인 뷰포트 아키텍처의 시스템의 다른 구현예를 도시한다.
도 4는 개시된 아키텍처에 따른 방법을 도시한다.
도 5는 개시된 아키텍처에 따른 대안적인 방법을 도시한다.
도 6은 개시된 아키텍처에 따른 또 다른 대안적인 방법을 도시한다.
도 7은 개시된 아키텍처에 따라 지속적인 뷰포트를 실행하는 컴퓨팅 시스템의 블록도를 도시한다.
1 shows a system according to the disclosed architecture.
2 shows a more detailed diagram of elements of content that may be considered for viewport persistence in accordance with the disclosed architecture.
3 illustrates another implementation of a system of the disclosed persistent viewport architecture.
4 shows a method according to the disclosed architecture.
5 shows an alternative method according to the disclosed architecture.
6 shows another alternative method according to the disclosed architecture.
7 shows a block diagram of a computing system implementing a persistent viewport in accordance with the disclosed architecture.

문서가 장치의 물리적 스크린이 표시할 수 있는 길이보다 길 때, 뷰포트를 생성하도록 스크롤 바가 나타날 수 있다. 사용자가 스크롤 위치를 이동시킬 때, 사용자는 본질적으로 문서에 걸쳐서 뷰포트를 이동한다. 이러한 방식이 통상적으로 사용되지만, 이러한 방식은, 예를 들어, 협업 애플리케이션, 서비스 및/또는 툴에서, 다수의 사용자가 동시에 동일한 문서를 편집하거나, 사용자가 문서를 읽거나 편집하는 동안에 문서의 콘텐츠가 변경되는 경우에는 사용되지 않는다. 일부 다른 사용자들이 동일한 문서의 콘텐츠를 업데이트하는 동안 뷰포트의 위치를 유지하는 것은 어렵다.When a document is longer than the device's physical screen can display, a scroll bar may appear to create a viewport. When the user moves the scroll position, the user essentially moves the viewport across the document. While this approach is commonly used, this approach can be used, for example, in collaborative applications, services and/or tools, where multiple users are editing the same document at the same time, or the content of a document is being read or edited by a user. Not used if changed. It is difficult to maintain the position of the viewport while some other users are updating the content of the same document.

일부 기존의 애플리케이션은 사용자 뷰포트에 대한 X 및 Y 좌표로서 픽셀들에서 측정된 문서(표현된 바와 같은 가상 문서)의 하단으로부터의 상대적인 오프셋을 유지한다. 문서가 어떠한 방식으로든 업데이트되면, 상기 X 및 Y 픽셀 오프셋들은 오래된 값이 된다. 이러한 기존 구현 방식에서, X 및 Y 좌표가 문서의 하단을 기준으로 하는 경우,(능동적인(편집) 사용자가 콘텐츠를 추가, 첨부 및/또는 삭제함으로써) 문서의 길이를 변경하는 것은 수동적인 사용자의 뷰포트 경험에 영향을 줄 수 있다. 이러한 프로세스는 기존 시스템에서, X 및 Y 좌표가 문서 상단을 기준으로 하는 경우에도, 동일한 방식으로 적용된다(이러한 경우, 현 수동적인 사용자의 뷰포트보다 앞선 문서 부분에서 변경이 발생한다). 즉, (예를 들어, 동적 웹 페이지 업데이트 또는 일부 다른 사용자가 동일한 페이지를 편집하는 것을 통해서) 문서의 길이가 변경되면, 이는 기존 사용자의 뷰포트가 올바르지 않게 위치되게 한다. 즉, 기존 사용자가 읽고 있었던 문서 부분은 더 이상 X 및 Y 좌표에서 존재하지 않게 되는데, 이는 일부 다른 사용자가 업데이트 부분(예를 들어, 더 많은 텍스트, 더 많은 이미지, 텍스트, 이미지, 머리말 등의 콘텐츠 제거)을 추가했기 때문이다. 이러한 뷰포트 혼란은, 사용자가 바로 전에 보고 있던 콘텐츠가 뷰포트 내의 새로운 위치로 점프하거나 뷰포트에서 전혀 보이지 않게 되거나 해당 문서 내의 다른 위치로 점프하는 것처럼 보이는 것과 같이, 사용자를 혼란(산만)하게 할 수 있다. Some existing applications keep the relative offset from the bottom of the document (virtual document as represented) measured in pixels as X and Y coordinates relative to the user's viewport. If the document is updated in any way, the X and Y pixel offsets become outdated. In this existing implementation, where the X and Y coordinates are relative to the bottom of the document, changing the length of the document (by an active (editing) user adding, attaching, and/or deleting content) is a passive user's effort. It can affect the viewport experience. This process applies the same way in legacy systems, even when the X and Y coordinates are relative to the top of the document (in this case, the change occurs in the part of the document that precedes the currently passive user's viewport). That is, if the length of the document changes (eg, through a dynamic web page update or some other user editing the same page), this causes the existing user's viewport to be positioned incorrectly. That is, the part of the document that the original user was reading no longer exists at the X and Y coordinates, which means that some other user may have updated the part (e.g. more text, more images, content such as text, images, headings, etc.) removed) was added. This viewport clutter can confuse (distract) the user, such that the content the user was viewing just before jumps to a new location in the viewport, becomes completely invisible in the viewport, or appears to jump to another location within the document.

개시된 아키텍처는 해당 문서가 다른 사용자에 의해 업데이트된 후에도 현재 보여지고 있는 콘텐츠 상에서(또는 걸쳐서) 해당 뷰포트를 지속(또는 유지)시킴으로써 이러한 문제를 해결한다. 이러한 기능은 네트워크(예를 들어, 인터넷)를 통한 동시 협업을 가능하게 한다. 사용자의 뷰포트를 결정하기 위해 문서의 상단 좌측 코너 또는 하단에 대한 X 및 Y 픽셀 오프셋을 사용하는 대신, 지속적인 뷰포트 아키텍처는 콘텐츠 내의 관심-요소를 사용하여 현재 보여지고 있는 콘텐츠 상에서의 뷰포트의 위치를 신속하게 재계산한다. The disclosed architecture solves this problem by persisting (or maintaining) the viewport over (or over) the content currently being viewed even after the document is updated by another user. This capability enables simultaneous collaboration over a network (eg, the Internet). Instead of using the X and Y pixel offsets to the top left corner or bottom of the document to determine the user's viewport, the persistent viewport architecture uses interest-elements within the content to quickly determine the viewport's position relative to the content currently being viewed. recalculate accordingly.

지속적인 뷰포트 아키텍처는 뷰포트의 최상단 요소를 기준 요소로 추적한다. 이러한 요소는 단락, 머리말, 이미지, 텍스트 문자열 또는 기타 적합한 콘텐츠 구조 중 적어도 하나 일 수 있다. 문서가 업데이트될 때에, 뷰포트는 메모리 내에서 이러한 기존 요소를 검색하고 가상 문서 상에서 기준 요소를 찾은 다음, 상기 관심-요소 또는 기준 요소가 여전히 해당 뷰포트 내에 위치하도록 해당 뷰포트의 X 및 Y 오프셋들을 조절한다. The persistent viewport architecture tracks the topmost element of the viewport as the base element. These elements can be at least one of paragraphs, headings, images, text strings, or other suitable content structures. When the document is updated, the viewport searches for this existing element in memory, finds the reference element on the virtual document, and adjusts the viewport's X and Y offsets so that the element-of-interest or reference element is still within that viewport. .

본 아키텍처는 임의의 종류의 문서(예를 들어, HTML(하이퍼텍스트 마크업 언어) 페이지 또는 예컨대, 협업 프로세싱 하에 있는 임의의 다른 문서)에 적용될 수 있다. 관심-요소에 대한 검색이 메모리(예를 들어, 캐시)에 저장된 요소들을 갖는 해시 세트를 통해 이루어질 수 있는 한편, 사용자 협업을 용이하게 하는 브라우저 및 임의의 적합한 오피스 애플리케이션이 본 개시된 아키텍처를 포함할 수 있다. The present architecture can be applied to any kind of document (eg HTML (Hypertext Markup Language) pages or any other document, eg, under collaborative processing). While retrieval for an element-of-interest may be through a hash set with elements stored in memory (eg, a cache), browsers and any suitable office applications that facilitate user collaboration may incorporate the presently disclosed architecture. there is.

이제, 도면들이 참조되며, 이러한 도면들에서, 동일한 참조 번호는 도면 전체에 걸쳐 동일한 요소를 나타내기 위해 사용된다. 이하의 설명에서, 설명을 위해서, 다수의 특정 세부 사항들이 본 발명의 완전한 이해를 제공하기 위해 제시된다. 그러나, 명백하게는, 새로운 구현예들이 이러한 특정 세부 사항들 없이도 실시될 수 있다. 다른 실례들에서, 잘 알려진 구조들 및 장치들은 이들의 설명을 용이하게 하기 위해 블록도 형태로 도시된다. 본 발명은 청구된 청구 대상의 사상 및 범위 내에 있는 모든 변경사항들, 균등사항들 및 대안사항들을 포함한다.Reference is now made to the drawings, in which like reference numbers are used throughout the drawings to indicate like elements. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. Obviously, however, new implementations may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to facilitate a description thereof. This invention includes all modifications, equivalents and alternatives falling within the spirit and scope of the claimed subject matter.

도 1은 본 개시된 아키텍처에 따른 시스템(100)을 도시한다. 시스템(100)은 능동적 및 수동적 사용자들의 협업 세션(collaboration session)(102)을 가능하게 하는 협업 서비스의 일부로서 동작한다. (문서 협업의 맥락에서 기술되지만, 본 시스템은 비-협업 구현에도 적용된다는 것을 이해해야 한다.) 따라서, 이러한 헤드-투-헤드(head-to-head) 실례(일 수동적 사용자 및 일 능동적 사용자)에서, 시스템(100)은 수동적 모드의 수동적 사용자 시스템(104) 및 능동적 모드의 능동적 사용자 시스템(106)을 포함하지만, 이러한 협업 세션은 3명 이상의 사용자를 포함할 수 있다는 것을 이해해야 한다.1 shows a system 100 in accordance with the presently disclosed architecture. System 100 operates as part of a collaboration service that enables collaboration sessions 102 of active and passive users. (Although described in the context of document collaboration, it should be understood that the system also applies to non-collaborative implementations.) Thus, in this head-to-head example (one passive user and one active user), , system 100 includes a passive user system 104 in passive mode and an active user system 106 in active mode, although it should be understood that such a collaboration session may include more than two users.

능동적 사용자는 콘텐츠의 변경 또는 업데이트를 실행하기 위해서 가상 문서의 "능동적" 인스턴스를 현재 편집하고 있는 중인 반면, 수동적 사용자는 가상 문서의 "수동적" 인스턴스를 편집하지 않고 상기 능동적 사용자에 의한 편집 프로세스 동안 능동적 가상 문서의 콘텐츠의 동일한 또는 상이한 인스턴스를 단순히 보고 있는 중이다. 수동적 사용자가 능동적 사용자가 되고 능동적 사용자가 수동적 사용자가 되는 경우에도 본 프로세스는 동일하게 적용된다. 수동적 사용자 시스템에 따라 기술된 기능은, 지속적 뷰포트 기능이 동일한 가상 문서에 대해서 작업하는 협업 세션의 모든 사용자들에 대해 동시적으로 동작되도록, 능동적 사용자 시스템(106)에도 동일하게 적용된다. 따라서, 능동적 모드 및 수동적 모드는, 이러한 능동적 모드 및 수동적 모드가 가상 문서를 현지 편집중인 사람이 누구인지에 따라서 스위칭되도록, 협업 세션 사용자들에 대해서 신속하게 전환될 수 있다. 이러한 구현예에서, 임의의 소정 시점에서 오직 한 명의 사용자만이 능동적 사용자가 될 수 있지만, 매 능동적 사용자에 대해 한 명 이상의 수동적 사용자가 있을 수 있다.An active user is currently editing the "active" instance of a virtual document in order to effect a change or update of content, whereas a passive user is not editing a "passive" instance of a virtual document and is actively editing during the editing process by the active user. You are simply viewing the same or a different instance of the virtual document's content. The same applies to cases where a passive user becomes an active user and an active user becomes a passive user. The functionality described according to the passive user system applies equally to the active user system 106, such that the persistent viewport functionality works simultaneously for all users in a collaboration session working on the same virtual document. Thus, active and passive modes can be switched quickly for collaboration session users such that these active and passive modes switch depending on who is editing the virtual document locally. In such an implementation, only one user may be an active user at any given point in time, but there may be more than one passive user for every active user.

본 설명을 위해, 수동적 사용자 시스템(104) 내의 특정 항목들에는 참조 부호 "P"가 붙으며, 능동적 사용자 시스템(106) 내의 특정 항목들에는 참조 부호 "A"가 붙는다. 예를 들어, 수동적 사용자 시스템(104) 내의 가상 문서의 인스턴스는 "-P" 접미사를 포함할 것이고, 능동적 사용자 시스템(106) 내의 가상 문서는 "-A" 접미사를 포함할 것이다.For purposes of this description, certain items within the passive user system 104 are referenced “P,” and specific items within the active user system 106 are referenced “A.” For example, an instance of a virtual document in passive user system 104 will include a “-P” suffix, and a virtual document in active user system 106 will include a “-A” suffix.

수동적 사용자 시스템(104)에 대한 설명을 계속하면, 협업 세션(102)은 가상 문서(108)의 편집을 수반한다. 수동적 사용자 시스템(104) 상의 가상 문서(108)의 인스턴스는 가상 문서(108-P)로 지정되고, 능동적 사용자 시스템(106) 상의 가상 문서(108)는 가상 문서(108-A)로 지정된다. 유사하게, 가상 문서(108)는 수동적 사용자 시스템(104) 상에서는 콘텐츠(110-P)로서 지정되고 능동적 사용자 시스템(106) 상에서는 콘텐츠(110-A)로서 지정된 콘텐츠(110)를 포함한다.Continuing the description of the passive user system 104 , a collaboration session 102 involves editing of a virtual document 108 . The instance of virtual document 108 on passive user system 104 is designated as virtual document 108-P, and the virtual document 108 on active user system 106 is designated as virtual document 108-A. Similarly, virtual document 108 includes content 110 designated as content 110-P on passive user system 104 and content 110-A on active user system 106.

수동적 사용자 시스템(104) 상에서의 수동적 사용자(112)에 대한 수동적 모드 동안, 요소 컴포넌트(element component)(114)는 가상 문서(108-P)의 콘텐츠(110-P) 내의 관심-요소(EOI)(116)를 식별하도록 제공 및 구성된다. 관심-요소(116)는 협업 세션(102)의 일부로서, 수동적 사용자 뷰포트(118)(또한, VIEWPORT-P로 지정됨)에서 보여진다.During the passive mode for a passive user 112 on the passive user system 104, an element component 114 provides an element-of-interest (EOI) within the content 110-P of the virtual document 108-P. (116). An interest-element 116 is shown in a passive user viewport 118 (also designated VIEWPORT-P) as part of a collaboration session 102 .

EOI(116)는 수동적 사용자 뷰포트(118)의 콘텐츠(110-P)의 콘텐츠 섹션 (CONTENT1-P) 내의 요소들(E) 중 임의의 하나 이상일 수 있다. 동일한 요소들이 능동적 사용자 시스템(106)의 콘텐츠(110-A)의 동일한 콘텐츠 섹션(CONTENT1-A) 내에 존재한다; 그러나, 능동적 사용자 시스템(106)은 능동적 모드에 있을 때 섹션 (CONTENT1-A) 내의 EOI를 식별할 필요가 없다. 그러나, 일 다른 구현예에서, 능동적 사용자(120)의 수동적 모드 상태를 준비하기 위해 능동적 모드에 있을 때 요소들이 또한 추적될 수 있다. EOI 116 may be any one or more of elements E in content section CONTENT1-P of content 110-P of passive user viewport 118. The same elements are present in the same content section (CONTENT1-A) of content 110-A of active user system 106; However, the active user system 106 need not identify the EOI in section CONTENT1-A when in active mode. However, in another implementation, elements may also be tracked when in active mode to prepare active user 120 for a passive mode state.

협업 세션(102)에 따라서, 능동적 사용자 시스템(106)의 가상 문서(108-A) 내의 콘텐츠(110-A)는 수동적 사용자(112)에 의해, 수동적 사용자 시스템(104)의 가상 문서(108-P) 내의 콘텐츠(110-P)로서 보여질 수 있다. 능동적 사용자(120)는 능동적 사용자 뷰포트(122)를 이동시켜 편집할 부분들과 관련하여 콘텐츠(110-A)를 정독할 수 있다. 수동적 사용자 뷰포트(118)가 가상 문서(108-A) 내의 능동적 사용자 뷰포트(122)의 콘텐츠 위치에 동기화되지 않을 수 있다. 따라서, 능동적 사용자(120)는 수동적 사용자(112)가 보고 있지 않은 콘텐츠(110-A)의 섹션 또는 영역을 볼 수 있고, 그 반대로도 될 수 있다.In accordance with the collaboration session 102, the content 110-A in the virtual document 108-A of the active user system 106 is transferred by the passive user 112 to the virtual document 108-A of the passive user system 104. P) can be viewed as content 110-P. Active user 120 may move active user viewport 122 to peruse content 110 -A in relation to portions to be edited. The passive user viewport 118 may not be synchronized with the content position of the active user viewport 122 within the virtual document 108-A. Thus, active user 120 may view sections or regions of content 110 -A that passive user 112 is not viewing, and vice versa.

여기서, 능동적 사용자(120)는 콘텐츠(110-A)의 섹션(126-A)에서 업데이트(124-A)를 생성한다. 업데이트 생성은 예를 들어, 콘텐츠 요소 이동, 삭제, 새로운 요소들의 첨부 및 삽입과 같은 동작들을 포함할 수 있다. 이러한 동작은 능동적 사용자 시스템(106)으로부터 모든 수동적 사용자 시스템들(예컨대, 수동적 사용자 시스템(104))으로의 업데이트 신호를 생성한다.Here, active user 120 creates update 124-A in section 126-A of content 110-A. Creating updates may include, for example, actions such as moving content elements, deleting content elements, attaching and inserting new elements. This action creates an update signal from active user system 106 to all passive user systems (eg, passive user system 104).

콘텐츠 섹션(126-A)(예를 들어, 텍스트의 단락) 내에서의 능동적 사용자(120)에 의한 업데이트(124-A)는 편집이 이루어질 때에 능동적 사용자(120)의 뷰포트(122) 내에 나타나고 표현될 수 있다. 업데이트 컴포넌트(128)는 업데이트 신호를 프로세싱하고, 수동적 사용자 시스템(104)에 대해 동작하여 상기 업데이트(124-A)를 가상 문서(108-P)의 콘텐츠(126-P) 내에 업데이트(124-P)로서 삽입하도록 제공 및 구성될 수 있다.Updates 124-A by active user 120 within content section 126-A (e.g., a paragraph of text) appear and appear within active user 120's viewport 122 as edits are made. It can be. An update component 128 processes the update signal and operates on the passive user system 104 to update the update 124-A into the content 126-P of the virtual document 108-P (124-P). ) can be provided and configured to insert as.

수동적 사용자(112)가 업데이트(124-P)가 적용된 콘텐츠(126-P)의 부분을 포함하지 않는 콘텐츠(110-P)의 섹션들 또는 영역들 상에 수동적 뷰포트(118)를 이동시킨 경우가 있을 수 있다. 따라서, 가상 문서(108-P)로 전파된 바와 같은 업데이트(124-P)는 수동적 사용자(112)가 콘텐츠(110-P)를 보고 있는 수동적 사용자 뷰포트(118) 외부에서 발생한다. 업데이트 삽입에 의한 문서 길이의 이러한 변화는 또한, 예를 들어, 능동적 사용자(120)의 가상 문서(108-A)에서의 콘텐츠(110-A)의 일부(예를 들어, 이미지)의 삭제 또는 콘텐츠(110-A)의 일부를 가상 문서(108-A)의 다른 영역으로 이동시키는 것에 의해서 초래될 수도 있다. If passive user 112 moves passive viewport 118 over sections or regions of content 110-P that do not include the portion of content 126-P to which update 124-P has been applied. There may be. Thus, updates 124-P as propagated to virtual document 108-P occur outside of passive user viewport 118 where passive user 112 is viewing content 110-P. This change in document length by inserting an update may also, for example, result in active user 120's deletion of a portion (eg, an image) of content 110-A in virtual document 108-A or content It may also be caused by moving part of 110-A to another area of virtual document 108-A.

그러나, 본 지속적 뷰포트 아키텍처는, 수동적 사용자(112)에 의해 수행되는(예를 들어, 정독, 검토, 스크롤링, 등) 작업(예: 보기, 검토, 등)을 방해하지 않도록 하기 위해서, 업데이트(124-P)가 수동적 사용자 가상 문서(108-P)에 적용되는 동안 및 적용된 이후에 콘텐츠(110-P)의 일부분 상에 수동적 사용자 뷰포트(118)의 위치를 유지시키도록 동작한다. However, the present persistent viewport architecture may be updated (124) in order not to interfere with actions (eg, viewing, reviewing, etc.) -P) to maintain the position of the passive user viewport 118 on a portion of the content 110-P during and after being applied to the passive user virtual document 108-P.

이러한 뷰포트 지속성은 수동적 사용자(112)가 수동적 사용자 뷰포트(118)에서 보고 있는 콘텐츠 섹션(CONTENT1-P) 내의 관심-요소(116)를 요소 컴포넌트(114)가 식별함으로써 달성된다. 관심-요소(116)는 콘텐츠 섹션(CONTENT1-P) 내의 임의의 요소가 될 수 있다. 관심-요소(116)의 식별은 궁극적으로 수동적 사용자의 시야 내에서 유지되도록 될 콘텐츠 섹션(CONTENT1-P)을 식별한다. 요소 컴포넌트(114)는 또한 수동적 사용자의 수동적 사용자 뷰포트(118)의 콘텐츠 내에서 기준 요소(RE)(130)를 식별하도록 구성된다. 기준 요소(130)는 예를 들어, 단락, 머리말, 이미지 또는 텍스트의 문자열 중 적어도 하나를 포함한다.This viewport persistence is achieved by the element component 114 identifying the interest-element 116 within the content section CONTENT1-P that the passive user 112 is viewing in the passive user viewport 118. The interest-element 116 can be any element within the content section CONTENT1-P. Identification of the interest-element 116 identifies the content section CONTENT1-P that will ultimately be kept within the passive user's field of view. The element component 114 is also configured to identify a reference element (RE) 130 within the content of the passive user's passive user viewport 118 . The standard element 130 includes, for example, at least one of a paragraph, a header, an image, or a text string.

수동적 사용자(112)에게 긍정적인 보기 경험을 제공하기 위해, 요소 컴포넌트(114)는 수동적 사용자 시스템(104)의 수동적 사용자 뷰포트(118) 내의 콘텐츠 (CONTENT1-P)의 최상단 요소를 기준 요소(130)로서 식별하도록 더 구성된다. 뷰 포인트 컴포넌트(132)는 능동적 사용자 시스템(106)에 의해 전파되는 업데이트(124-A)로 인한 콘텐츠(CONTENT1-P)의 임의의 위치 변화에 상관없이, 수동적 사용자(112)의 수동적 사용자 뷰포트(118) 내에서 관심-요소(116)를 유지하도록 수동적 사용자 뷰포트(118)를 이동시키도록 제공 및 구성된다. 뷰포트 컴포넌트(132)는 관심-요소(116)에 대한 수동적 사용자 뷰포트(118)의 위치를 계산하도록 구성된다. 뷰포트 컴포넌트(132)는 관심-요소(116)가 상주하는 콘텐츠(110-P)의 사전정의된 섹션(예를 들어, CONTENT21-P)을 포함하도록 수동적 요소 뷰포트(118)를 이동시키도록 구성된다. To provide a positive viewing experience for passive user 112, element component 114 places the topmost element of content (CONTENT1-P) in passive user viewport 118 of passive user system 104 on base element 130. It is further configured to identify as. Point of view component 132 is a passive user viewport of passive user 112 ( 118) is provided and configured to move the passive user viewport 118 to keep the interest-element 116 within. The viewport component 132 is configured to calculate the position of the passive user viewport 118 relative to the element-of-interest 116 . Viewport component 132 is configured to move passive element viewport 118 to include a predefined section of content 110-P (eg, CONTENT21-P) in which interest-element 116 resides. .

요소 컴포넌트(114)는 수동적 사용자(112)의 수동적 사용자 뷰포트(118) 내에서의 가상 문서(108-P)의 뷰의 변화에 기초하여, 메모리 내의 해시 세트 및 콘텐츠 요소들을 업데이트 및 유지하도록 구성된다.The element component 114 is configured to update and maintain the hash set and content elements in memory based on changes in the view of the virtual document 108-P within the passive user's 112's passive user viewport 118. .

뷰포트 컴포넌트(132)는 관심-요소(116)가 상주하는 콘텐츠(CONTENT1-P)의 사전규정된 섹션을 포함하도록 뷰포트(수동적 사용자 뷰포트(118))를 이동시키도록 구성된다. 일 실시예에서, 뷰포트 컴포넌트(132)는 관심-요소(116)에 대한 뷰포트(수동적 사용자 뷰포트(118))의 위치를 계산하도록 구성된다. 다른 실시예에서, 뷰포트 컴포넌트(132)는 기준 요소(130)에 대한 뷰포트(수동적 사용자 뷰포트(118))의 위치를 계산하도록 구성된다. 이러한 포지셔닝은 수동적 사용자 뷰포트(118)의 상단 경계를 기준 요소(130)보다 위로 이동시키는 것을 포함할 수 있는데, 여기서 예를 들어, 기준 요소(130)는 단락의 첫 번째 문장의 텍스트 문자열이거나, 상기 기준 요소(130)는 이어서 수동적 사용자 뷰포트(118) 내에 포함되는 이미지이거나, 기준 요소(130)는 다중-주제의 워드 프로세싱 문서 내의 주제 머리말(topic header)과 같은 머리말 텍스트이다.Viewport component 132 is configured to move the viewport (passive user viewport 118 ) to include a predefined section of content (CONTENT1-P) in which interest-element 116 resides. In one embodiment, the viewport component 132 is configured to compute the position of the viewport (passive user viewport 118) relative to the element-of-interest 116. In another embodiment, viewport component 132 is configured to calculate the position of the viewport (passive user viewport 118 ) relative to reference element 130 . Such positioning may include moving the top boundary of the passive user viewport 118 above the reference element 130, where, for example, the reference element 130 is a text string of the first sentence of a paragraph, or The reference element 130 is then an image included within the passive user viewport 118, or the reference element 130 is heading text, such as a topic header in a multi-topic word processing document.

뷰포트 지속성은 능동적 사용자 시스템(106)으로부터의 업데이트 전파 동안에 수동적 사용자 뷰포트(118) 내로 작업물에 대한 사용자의 초점을 유지시킴으로써 사용자 효율성을 향상시키는 기술적 효과를 갖는다. 이로써, 수동적 사용자(112)는 이전에 보고 있던 컨텐츠로 돌아가기 위해서 가상 문서(108-P)를 재탐색할 필요가 없다. Viewport persistence has the technical effect of improving user efficiency by maintaining the user's focus on the work within the passive user viewport 118 during update propagation from the active user system 106 . As such, the passive user 112 does not have to re-navigate the virtual document 108-P to return to the previously viewed content.

달리 말하면, 시스템(100)은 가상 문서(108-P)의 콘텐츠(110-P) 내에서 관심-요소(116)를 식별하도록 구성된 요소 컴포넌트(114)를 포함한다. 관심-요소(116)는 협업 세션(102)의 수동적 사용자 시스템(104)의 수동적 사용자 뷰포트(118)를 통해서 수동적 사용자(112)에게 가상 문서(108-P) 내에서 실시간으로(currently) 표현된다. 업데이트 컴포넌트(128)는 협업 세션(102)의 능동적 사용자 시스템(106)으로부터 가상 문서(108-A)의 업데이트(124-A)를 수신하도록 제공 및 구성된다. 뷰포트 컴포넌트(132)는 능동적 사용자 시스템(106)에 의해서 업데이트(124-A)가 수동적 사용자 시스템(104)으로 전파되는 것으로부터 기인되는 콘텐츠(110-P)의 임의의 위치 변화(또는 가상 문서의 길이 변화)에 관계없이, 수동적 사용자 시스템(104)의 수동적 사용자 뷰포트(118) 내에 상기 관심-요소(116)를 유지시키도록 수동적 사용자 뷰포트(118)를 이동시키도록 제공 및 구성된다. In other words, system 100 includes element component 114 configured to identify an element-of-interest 116 within content 110-P of virtual document 108-P. The interest-element 116 is currently represented within the virtual document 108-P to the passive user 112 through the passive user viewport 118 of the passive user system 104 of the collaboration session 102. . The update component 128 is provided and configured to receive an update 124 -A of the virtual document 108 -A from the active user system 106 of the collaboration session 102 . The viewport component 132 is responsible for any changes in the position of the content 110-P resulting from the propagation of the update 124-A by the active user system 106 to the passive user system 104 (or in the virtual document). length change), it is provided and configured to move the passive user viewport 118 to keep the interest-element 116 within the passive user viewport 118 of the passive user system 104.

요소 컴포넌트(114)는 수동적 사용자 시스템(104)의 수동적 사용자 뷰포트(118)의 콘텐츠(CONTENT1-P) 내에서 기준 요소(130)를 식별하도록 구성된다. 기준 요소(130)는 단락, 머리말, 이미지 또는 텍스트 문자열 중 적어도 하나를 포함할 수 있다. 요소 컴포넌트(114)는 수동적 요소 시스템(104)의 수동적 사용자 뷰포트(118) 내에서의 콘텐츠(CONTENT1-P)의 다수의 가능한 최상단 요소들 중 하나를 상기 기준 요소(130)로서 식별하도록 구성된다.The element component 114 is configured to identify a reference element 130 within the content CONTENT1-P of the passive user viewport 118 of the passive user system 104 . The reference element 130 may include at least one of a paragraph, a heading, an image, or a text string. Element component 114 is configured to identify one of a number of possible top-level elements of content CONTENT1-P within passive user viewport 118 of passive element system 104 as said reference element 130 .

요소 컴포넌트(114)는 수동적 요소 시스템(104)의 뷰포트(수동적 사용자 뷰포트(118)) 내에서의 가상 문서(108-P)의 뷰 변화에 기초하여, 메모리 내의 해시 세트 및 콘텐츠 요소들(또는 콘텐츠 요소들의 요소 태그들 또는 식별자들)을 업데이트 및 유지하도록 구성된다. The element component 114 generates a set of hashes in memory and content elements (or content and to update and maintain element tags or identifiers of elements.

뷰포트 컴포넌트(132)는 관심-요소(116)가 상주하는 콘텐츠(CONTENT1-P)의 사전규정된 섹션을 포함하도록 뷰포트(수동적 사용자 뷰포트(118))를 이동시키도록 구성된다. 뷰포트 컴포넌트(132)는 관심-요소(116)에 대한 뷰포트(수동적 사용자 뷰포트(118))의 위치를 계산하도록 구성된다.Viewport component 132 is configured to move the viewport (passive user viewport 118 ) to include a predefined section of content (CONTENT1-P) in which interest-element 116 resides. The viewport component 132 is configured to calculate the position of the viewport (passive user viewport 118 ) relative to the element-of-interest 116 .

협업 세션(102)의 모든 컴퓨팅 시스템들은 동일한 지속적 뷰포트 컴포넌트들(예를 들어, 요소 컴포넌트(114), 업데이트 컴포넌트(128) 및 뷰포트 컴포넌트(132))을 포함할 수 있음을 이해해야 한다. 이로써, 이러한 컴포넌트들은 업데이트가 능동적 사용자 시스템에 의해서 수동적 사용자 시스템들로 전파되는 동안에, 이러한 수동적 사용자 시스템들에 대해 동작하여 지속적 뷰포트를 가능하게 한다. It should be appreciated that all computing systems in collaboration session 102 may include the same persistent viewport components (eg, element component 114 , update component 128 , and viewport component 132 ). As such, these components operate on these passive user systems to enable a persistent viewport, while updates are propagated by the active user system to the passive user systems.

일 실시예에서, 그리고 전술한 바와 같이, 협업 프로세싱을 위한 능동적 사용자 동작 모드는 단순히 한 사용자가 가상 문서(108)를 편집하는 것에 의해 개시될 수 있고, 따라서, 이러한 동작은 자동으로 다른 사용자들이 수동적 사용자들이 되게 하며, 이로써, 이러한 수동적 사용자들은 상기 능동적 사용자가 편집하는 때와 동시에 편집하도록 허용되지 않는다.In one embodiment, and as described above, an active user mode of operation for collaborative processing may be initiated simply by one user editing the virtual document 108, such that this operation is automatically performed by other users passively. users, whereby these passive users are not allowed to edit at the same time as the active user is editing.

그러나, 다른 구현예에서, 협업 서비스가 협업 세션의 다수의 "능동적" 사용자들로부터의 동시적 업데이트들을 프로세싱할 수 있지만, 이 경우에, 종국적으로 가상 문서(108)에 대한 업데이트를 완료하기 위해서 이러한 업데이트들이 순차적으로 큐잉될 수 있다. 예를 들어, 사용자 그룹들(예를 들어, 쌍들)이 가상 문서(108)의 특정 콘텐츠 섹션들에 대해 작업을 하도록 할당될 수 있다. 이 경우에, 본 아키텍처는 본 명세서에서 기술된 바와 같은, 수동적/능동적 그룹 사용자들(쌍들) 각각의 각 뷰포트에서 뷰를 유지한다. 이러한 보다 "능동적인" 구현예에서, 입력들 및/또는 능동적/수동적 모드들은, 단일 능동적 사용자 및 수동적 사용자들로서의 나머지 세션 사용자들이 임의의 소정의 시간에 동기적으로 구현되는 것과는 달리, "비동기적으로" 그리고 고속으로 발생할 수 있다. However, in another implementation, the collaboration service may process concurrent updates from multiple “active” users of a collaboration session, but in this case, in order to eventually complete updates to the virtual document 108. Updates can be queued sequentially. For example, user groups (eg pairs) may be assigned to work on specific content sections of virtual document 108 . In this case, the architecture maintains a view in each viewport of each of the passive/active group users (pairs), as described herein. In this more "active" implementation, the inputs and/or active/passive modes are "asynchronous", unlike a single active user and the rest of the session users as passive users being implemented synchronously at any given time. into" and can occur at high speed.

능동적 사용자(120)가 업데이트(124-A)를 수행하고 이 업데이트가 수동적 사용자 뷰포트(118)의 조정을 초래할 때에, 수동적 사용자(112)는 수동적 사용자 뷰포트(118)가 조정되었거나 조정될 것이라는 것이라는 통지사항(140)을 (상기 업데이트(124-P)와 함께 또는 상기 업데이트 이전에) 수신하고 이 통지사항이 표시될 수 있다. 또한, 통지사항(140)은 능동적 사용자 뷰포트(118)의 가상 문서(108-P) 내의 업데이트(124-P)의 위치로 바로 점프하여 상기 업데이트(124-P)를 볼 수 있는 옵션을 제공할 수 있다. 예를 들어, 능동적 사용자(120)가 큰 텍스트 블록을 붙여 넣고 있는 경우에, 수동적 사용자 콘텐츠(110-P)가 조정되면, 수동적 사용자(112)로 하여금 능동적 사용자의 뷰포트의 위치로 점프하여(뷰포트들을 동기화하여) 수동적 사용자(112)가 바로 전에 붙여 넣은 컨텐츠를 볼 수 있도록 하게 하는 통지사항(140)을 또한 수신할 것이다. When an active user 120 performs an update 124-A and this update results in an adjustment of the passive user viewport 118, the passive user 112 is notified that the passive user viewport 118 has or will be adjusted. 140 (either with or prior to the update 124-P) and this notice may be displayed. Notification 140 may also provide an option to jump directly to the location of update 124-P within virtual document 108-P in active user viewport 118 and view said update 124-P. can For example, if active user 120 is pasting a large block of text, passive user content 110-P is adjusted, causing passive user 112 to jump to the position of the active user's viewport (viewport will also receive a notification 140 that allows the passive user 112 to view the content just pasted (by synchronizing them).

또한, 통지사항(140)은 수동적 사용자의 가상 문서(108-P) 내로의 즉시 삽입을 허용하는 옵트-인(opt-in) 옵션 또는 수동적 사용자의 가상 문서(108-P) 내로의 즉시 삽입을 금지하는 옵트-아웃(opt-out) 옵션을 수동적 사용자(112)에게 나타낼 수도 있다. 능동적 사용자(120)(능동적 사용자 시스템(106))로부터의 업데이트(124-A)를 옵트-인(수락)하기로 선택하면, 수동적 사용자(112)에게 수동적 사용자 뷰포트(118)를 통해 업데이트(124-P)가 자동적으로 탐색되어질 수 있다. 옵트- 아웃을 선택한다면, 이는 수동적 사용자의 가상 문서(108-P)로의 삽입을 일시적으로 지연시킬 수 있다. 이렇게 삽입이 지연될 때, 예를 들어, 수동적 사용자의 가상 문서(108-P)로의 최종 입력을 위해, 능동적 사용자 시스템(106)으로부터의 업데이트(124-A)는 수동적 사용자 시스템(104) 내에서 큐잉될 수 있다.Notification 140 also provides an opt-in option allowing immediate insertion of passive users into virtual document 108-P or immediate insertion of passive users into virtual document 108-P. A forbidding opt-out option may be presented to the passive user 112. If an active user 120 (active user system 106) chooses to opt-in (accept) an update 124-A, the passive user 112 will receive an update 124 via the passive user viewport 118. -P) can be detected automatically. If opting out, this may temporarily delay the passive user's insertion into the virtual document 108-P. When this insertion is delayed, e.g., for the passive user's final input into the virtual document 108-P, the update 124-A from the active user system 106 is stored within the passive user system 104. can be queued.

통지사항(140)은 수동적 사용자 뷰포트(118) 내에서 표시될 수 있으며, 수동적 뷰포트(118) 외부에서는, 단순히 업데이트가 수신되었거나 삽입 준비가 되었음을 나타내는 사운드 또는 임의의 다른 적합한 형태의 매체로서 표현될 수 있다.The notification 140 may be displayed within the passive user viewport 118, and outside the passive viewport 118, it may simply be presented as a sound or any other suitable form of media indicating that an update has been received or is ready to be inserted. there is.

도 2는 본 개시된 아키텍처에 따라 뷰포트 지속성을 위해서 고려될 수 있는 콘텐츠(110-P)의 요소들(202)의 보다 상세한 도면(200)을 도시한다. 여기서, 가상 문서(108-P)는 이미지(204), 머리말(206), 첫 번째 단락(208) 및 두 번째 단락(210)을 포함한다. 콘텐츠(110-P)의 다른 요소는 가상 문서(108-P)의 일부일 수 있으며, 수동적 사용자 뷰포트(118) 외부에 있다. 일 실시예에서, 관심-요소는 가상 문서(108-P) 내의 콘텐츠(110-P)의 가장 큰 부분으로 식별될 수 있으며, 여기서 가장 큰 부분은 면적당 픽셀의 수에 따라 규정될 수 있다. 따라서, 일 경우에, 관심-요소는 예를 들어 이미지(204) 또는 첫 번째 단락(208)일 수 있다. 또한, 관심-요소가 기준 요소일 수도 있다. 여기서, 픽셀 면적에 있어서 가장 큰 것인, 이미지(204)가 또한 기준 요소일 수 있다. 또한, 대안적으로, 이미지(204)는 수동적 사용자 뷰포트(118) 내의 최상단 요소이기 때문에, 이미지(204)가 기준 요소일 수 있다.2 shows a more detailed diagram 200 of elements 202 of content 110-P that may be considered for viewport persistence in accordance with the presently disclosed architecture. Here, the virtual document 108 -P includes an image 204 , a heading 206 , a first paragraph 208 and a second paragraph 210 . Other elements of the content 110 -P may be part of the virtual document 108 -P and are outside the passive user viewport 118 . In one embodiment, an interest-element may be identified as the largest portion of the content 110-P within the virtual document 108-P, where the largest portion may be defined according to the number of pixels per area. Thus, in one case, the interest-element may be, for example, image 204 or first paragraph 208 . Also, the interest-factor may be a criterion factor. Here, image 204, which is the largest in pixel area, may also be the reference element. Alternatively, image 204 may also be the reference element, since image 204 is the topmost element in passive user viewport 118 .

또한, 관심-요소가 콘텐츠(110-P) 내의 텍스트(212)의 문자열인 경우도 있을 수 있다. 그러나, 이러한 예에서, 이미지(204)가 최상단 요소이기 때문에, 관심 요소는 최상단 요소가 아니다. 그러나, 최상단 요소에서 이미지(204)를 식별함으로써, 텍스트(212)의 문자열은 여전히 뷰포트(118) 내에서 유지될 수 있다.There may also be cases where the interest-element is a string of text 212 within the content 110-P. However, since image 204 is the topmost element in this example, the element of interest is not the topmost element. However, by identifying image 204 in the topmost element, the string of text 212 can still be maintained within viewport 118 .

수동적 사용자 뷰포트(118)의 치수들은 또한 콘텐츠(110-P)의 특정 영역 또는 부분이 수동적 사용자 뷰포트(118) 내에 있는 지의 여부에 영향을 미칠 수 있다. 수동적 사용자 뷰포트(118)를 생성하는 애플리케이션은 자동적으로, 수동적 사용자 뷰포트(118)의 크기를 규정할 수 있다. 또한, 특정 장치(예를 들어, 핸드헬드 장치, 데스크탑 장치, 등)도 수동적 사용자 뷰포트(118)의 크기에 영향을 미칠 수 있다. 예를 들어, 스마트 폰의 (능동적 또는 수동적) 뷰포트는 일반적으로 데스크탑 컴퓨터의 (능동적 또는 수동적) 뷰포트보다 치수면에서 훨씬 작다. 스마트 폰의 경우에, 뷰포트는 수동적 사용자(112)가 콘텐츠를 볼 수 있는 능력을 향상시키기 위해 실제로는 전체 디스플레이 치수로 확장될 수 있는 반면, 데스크톱 컴퓨터의 뷰포트는 데스크톱 컴퓨터의 디스플레이보다 훨씬 작을 수 있지만 수동적 사용자(112)가 여전히 충분히 잘 볼 수 있도록 한다. The dimensions of the passive user viewport 118 may also affect whether a particular region or portion of content 110 -P is within the passive user viewport 118 . An application that creates a passive user viewport 118 may automatically define the size of the passive user viewport 118 . Additionally, certain devices (eg, handheld devices, desktop devices, etc.) may also affect the size of the passive user viewport 118 . For example, a smartphone's (active or passive) viewport is typically much smaller in dimension than a desktop computer's (active or passive) viewport. In the case of a smartphone, the viewport may actually expand to the full display dimensions to enhance the ability of a passive user 112 to view content, whereas a desktop computer's viewport may be much smaller than a desktop computer's display. It allows the passive user 112 to still see well enough.

다른 구현예에서, 관심-요소 또는 기준 요소로서 콘텐츠 내의 가장 큰 부분(예를 들어, 이미지(204))을 선택하기보다는, 사용자는 관심-요소 및/또는 기준 요소를 사전에 식별할 수 있다. 사용자는 다른 사용자들에 의한 업데이트들에 관계없이 임의의 시점에서 수동적 사용자 뷰포트 내에서 유지되도록 콘텐츠 내의 특정 부분(예를 들어, 이미지)을 선택할 수 있다. 따라서, 요소 컴포넌트(114)는 수동적 사용자가 관심 요소 및/또는 심지어는 기준 요소를 선택할 수 있도록 구성될 수 있다. 이 경우에, 관심-요소 및/또는 기준 요소로서 콘텐츠의 해당 부분을 태그(tag)하거나 마크(mark)하도록, 수동적 사용자가 상호작용할 수 있는 콘텐츠의 각각의 식별 가능하고 독립적인 부분에 대한 활성상태의 선택가능한 태그 객체(214)가 제공될 수 있다. 따라서, 다른 사용자들에 의해 입력된 임의의 업데이트들은 해당 태그된 콘텐츠를 수동적 사용자가 보는 것을 방해하는 방식으로 수동적 사용자 뷰포트(118)에는 어떠한 영향도 미치지 않을 것이다. 태그된 콘텐츠는 수동적 사용자 뷰포트(118) 내에서 최상단 요소로서(수동적 사용자 활동은 상기 최상단 요소 아래에 있음), 가운데에 있는 요소(수동적 사용자 활동은 상기 가운데에 있는 요소 위 또는 아래에 있음) 또는 심지어 가장 하단의 요소(수동적 사용자 활동은 상기 가장 하단의 요소 위에 있음)로서 자동적으로 표현된다. In other implementations, rather than selecting the largest portion within the content (eg, image 204 ) as a factor of interest or criterion, the user may pre-identify the factor of interest and/or criterion. A user may select a particular portion within the content (eg, an image) to remain within the passive user viewport at any point in time regardless of updates by other users. Accordingly, element component 114 may be configured to allow passive users to select elements of interest and/or even reference elements. In this case, an active state for each identifiable and independent piece of content that a passive user can interact with to tag or mark that portion of content as an interest-factor and/or criterion factor. Of selectable tag objects 214 may be provided. Accordingly, any updates entered by other users will not affect the passive user viewport 118 in any way that prevents the passive user from viewing the tagged content. Tagged content can be placed within the passive user viewport 118 as the topmost element (passive user activity is below the topmost element), in the middle (passive user activity is above or below the centered element), or even It is automatically represented as the bottommost element (passive user activity is above the bottommost element).

관심-요소 및/또는 기준 요소를 식별하는 다른 방식은 예를 들어, 텍스트 문자열, 단락 또는 텍스트의 섹션, 및 단락의 섹션을 강조처리(또는 밑줄처리, 굵게 보여줌, 주석을 담, 등)하는 것과 같이, 컨텐츠에 대한 일반적으로 알려진 편집/주석 처리를 적용하는 것일 수 있다. 이러한 식별을 가능하게 하는 사용자 입력은 예를 들어, 음성 명령 및/또는 입력 장치 제어에 의해 이루어질 수 있다. 사용자가 콘텐츠의 특정 부분과 광범위하게 (예를 들어, 뷰어의 체류 시간에 기초하여) (수동적으로) 상호작용하고 있는 중이면, 이는 사용자가 수동적 사용자 뷰포트 내에서 해당 콘텐츠를 유지하기로 선택한 것으로 해석될 수 있다.Other ways to identify elements of interest and/or criteria include, for example, highlighting (or underlining, bolding, annotating, etc.) text strings, paragraphs or sections of text, and sections of paragraphs. Likewise, it may be to apply a commonly known editing/commenting process to the content. User input enabling such identification may be, for example, by voice command and/or input device control. If the user is (passively) interacting extensively (e.g., based on the viewer's dwell time) with a particular piece of content, this is interpreted as the user choosing to keep that content within the passive user's viewport. It can be.

도 3은 본 개시된 지속적 뷰포트 아키텍처의 시스템(300)의 다른 구현예를 나타낸다. 이 예시적인 구현예에서, 아키텍처는 (예를 들어, 협업 세션에서) 능동적 사용자에 의해서 이루어진 업데이트들에 응답하여 수동적 사용자의 뷰포트를 지속시키기보다는, 본 아키텍처는 능동적 사용자(리더(leader))가 모든 수동적 사용자들(청중)에 의해서 보여질 콘텐츠에 영향을 주는 리더-청중 모드(leader-aduience mode)로 동작한다. 3 illustrates another implementation of the system 300 of the disclosed persistent viewport architecture. In this example implementation, rather than the architecture persisting the passive user's viewport in response to updates made by the active user (eg, in a collaboration session), the architecture allows the active user (leader) to It operates in a leader-audience mode influencing the content to be viewed by passive users (audience).

여기에서, 리더(302)는 청중 사용자들의 뷰포트(미도시)를 (리더 뷰포트(304-L)("L"은 리더에 대한 것임)를 통해서) 리더 컴퓨팅 시스템(leader computing system)(312)의 프리젠테이션 가상 콘텐츠들(presentation virtual contents)(310-L)의 프리젠테이션 콘텐츠(308-L)의 특정 리더 요소(306-L)로 향하게 한다. 이로써, 이러한 경우에, 리더(302)(능동적 사용자(120)와 유사함)는 프리젠테이션 콘텐츠(308-L)를 (수동적) 사용자들인 청중에게 프리젠테이션한다. 청중 사용자들에게는 프리젠테이션 동안 청중 사용자 뷰포트(도시되지 않음) 내에서 리더 프리젠테이션 가상 문서들(310-L)을 정독할 수 있는 유연성이 부여될 수 있는 한편, 리더(302)가 해당 시간에 중요하다고 생각하는 콘텐츠에 청중의 이목이 향하게 함으로써, 청중 사용자(들)의 이목이 상기 프리젠테이션 콘텐츠(308-L)의 특정 부분들에 집중되도록 리더(302)는 보장할 수 있다. Here, the leader 302 provides a viewport (not shown) of the audience users (through the leader viewport 304-L ("L" is for the leader)) of the leader computing system 312. Directs presentation virtual contents 310-L to a specific leader element 306-L of presentation content 308-L. Thus, in this case, the leader 302 (similar to the active user 120) presents the presentation content 308-L to an audience of (passive) users. Audience users may be given the flexibility to peruse the leader presentation virtual documents 310-L within an audience user viewport (not shown) during the presentation, while the leader 302 is important at that time. By directing the audience's attention to the content it deems appropriate, the reader 302 can ensure that the attention of the audience user(s) is focused on specific portions of the presentation content 308-L.

따라서, 리더(302)는 콘텐츠의 일부(예를 들어, 첫 번째 단락(208))를 태그하거나 간단히 클릭할 수 있고, 이러한 클릭 및/또는 태그 동작은 이어서 요소 컴포넌트(114)에 의해, 일부 또는 모든 청중 뷰포트를 상기 태크된 콘텐츠(예를 들어, 첫 번째 단락(208))로 향하게 하도록 해석될 수 있다. Accordingly, reader 302 may tag or simply click on a portion of the content (eg, first paragraph 208 ), which click and/or tag action may then be performed by element component 114 , on the portion or This can be interpreted to direct all audience viewports to the tagged content (e.g., first paragraph 208).

또한, 이러한 기능은 리더(302)가 프리젠테이션 가상 문서들(310-L)을 돌아 점프할 수 있게 하여, 리더(302)가 청중 사용자들이 보기를 원하는 콘텐츠 및/또는 페이지들을 청중 뷰포트에서 즉시 프리젠테이션할 수 있다. 따라서, 이러한 프리젠테이션은 청중 앞에서 사용되는 전형적인 대형 스크린보다는, 사용자 컴퓨팅 디바이스(예를 들어, 스마트폰, 태블릿, 랩탑, 등)를 통해서 실현될 수 있다.Additionally, this functionality allows the reader 302 to jump around the presentation virtual documents 310-L, so that the reader 302 instantly presents content and/or pages that audience users want to see in the audience viewport. can tate Thus, such a presentation may be realized through a user computing device (eg, smart phone, tablet, laptop, etc.) rather than a typical large screen used in front of an audience.

이어서, 업데이트 컴포넌트(128)는 리더(302)가 프리젠테이션 가상 문서들(310-L)에 대한 업데이트를 추가적으로 할 수 있게 한다. 이에 응답하여, 각 청중 사용자 시스템의 뷰포트 컴포넌트(132)는 청중 사용자 뷰포트를 업데이트가 이루어진 특정 리더 콘텐츠 위치로 이동시킨다. 대안적으로, 각 청중 사용자 시스템의 뷰포트는, 청중 사용자 뷰포트를 리더-특정된 콘텐츠로 향하도록 하기 이전에, 일시적으로(예를 들어, 수 초) 지연될 수 있다. 이러한 약간의 지연은 현재 보여지고 있는 콘텐츠에 대한 사용자 이목을 방해하지 않음으로써 현재 보여지고 있는 콘텐츠에 대한 사용자의 이해를 향상시킨다.The update component 128 then enables the reader 302 to further update the presentation virtual documents 310-L. In response, the viewport component 132 of each audience user system moves the audience user viewport to the particular reader content location where the update was made. Alternatively, the viewport of each audience user system may be temporarily delayed (eg, several seconds) before directing the audience user viewport to the reader-specified content. This slight delay improves the user's understanding of the currently viewed content by not obstructing the user's attention to the currently viewed content.

본 개시된 아키텍처에서, 특정 컴포넌트들은 재배열되고, 결합되고, 생략될 수 있고, 추가적인 컴포넌트들이 포함될 수 있음을 이해해야 한다. 또한, 일부 구현예들에서, 컴포넌트들 중 전부 또는 일부는 클라이언트 상에 있지만, 다른 구현예들에서는, 일부 컴포넌트들이 서버 상에 상주하거나 로컬 또는 원격 서비스에 의해 제공될 수 있다. 예를 들어, 클라이언트 장치 내에서, 요소 컴포넌트(114), 업데이트 컴포넌트(128) 및 뷰포트 컴포넌트(132)는 각각의 클라이언트 장치 내에서 단일 서비스로서 구현될 수 있다. 클라우드 구현예에서, 이러한 컴포넌트들(114, 128, 132) 중 하나 이상은 이러한 컴포넌트(들)를 로컬 방식으로 (소프트웨어 방식 및/또는 하드웨어 방식으로) 사용할 수 없는 사용자 디바이스들에 대한 클라우드 서비스로서 구현될 수 있다.It should be understood that in the presently disclosed architecture, certain components may be rearranged, combined, or omitted, and additional components may be included. Also, in some implementations, all or some of the components are on the client, while in other implementations, some of the components reside on a server or may be provided by a local or remote service. For example, within a client device, element component 114, update component 128, and viewport component 132 may be implemented as a single service within each client device. In a cloud implementation, one or more of these components 114, 128, 132 are implemented as a cloud service for user devices that cannot use such component(s) locally (in software and/or hardware). It can be.

이러한 대안적인 구현예에서, 프리젠테이션과 연관된 가상 문서들의 콘텐츠 내에서 능동적 사용자(리더)에 의해 특정된 관심-요소―상기 관심-요소는 상기 능동적 사용자의 뷰포트 내에 있음―를 식별하도록 구성된 요소 컴포넌트; 상기 가상 문서들과 연관된 상기 능동적 사용자로부터의 업데이트 또는 태그를 프로세싱하도록 구성된 업데이트 컴포넌트; 및 상기 능동적 사용자에 의한 수동적 사용자 뷰포트의 임의의 위치 변화에 관계없이 상기 수동적 사용자들(예를 들어, 청중 사용자들)의 뷰포트들의 상기 능동적 사용자의 관심-요소와 연관된 콘텐츠로의 이동을 구현하도록 구성된 뷰포트 컴포넌트를 포함하는 시스템이 제공될 수 있다.In this alternative implementation, an element component configured to identify an interest-element specified by an active user (reader) within content of virtual documents associated with a presentation, wherein the interest-element is within the active user's viewport; an update component configured to process an update or tag from the active user associated with the virtual documents; and implement movement of the passive users' (eg, audience users') viewports to content associated with the active user's interest-element regardless of any positional change of the passive user's viewport by the active user. A system may be provided that includes a viewport component.

이러한 대안적인 구현예에서, 프리젠테이션의 가상 문서들의 콘텐츠 내에서의 관심-요소―상기 관심-요소는 리더 뷰포트를 통해 리더에 의해서 지정됨―의 리더-특정된 식별사항을 수신하는 단계; 상기 업데이트 컴포넌트를 통해 상기 리더- 특정된 식별사항을 프로세싱하고 상기 업데이트에 대하여 청중 사용자 시스템들을 업데이트하는 단계; 대응하는 청중 사용자들에 의한 청중 사용자 뷰포트들에 의해 개시된 임의의 위치 변화에 관계없이 상기 관심-요소를 포함하도록 상기 청중 사용자 뷰포트들을 이동시키는 단계를 포함하는 방법이 제공될 수 있다. In this alternative implementation, receiving a reader-specific identification of an interest-element within the content of the virtual documents of the presentation, the interest-element specified by the reader via the reader viewport; processing the leader-specified identification via the update component and updating audience user systems with respect to the update; A method may be provided that includes moving the audience user viewports to include the interest-element regardless of any position change initiated by the audience user viewports by corresponding audience users.

본 개시된 아키텍처는 선택 사양적으로 가상 문서의 특정 콘텐츠를 선택하거나 보여주는 것과 같이, 개인 정보를 노출시키는 것을 사용자가 동의하거나 동의하지 않게 할 수 있는 프라이버시 컴포넌트(미도시)를 포함할 수 있다. 프라이버시 컴포넌트 추적 정보, 및 획득되었을 수도 있거나, 유지되거나 및/또는 액세스가능한 개인 정보와 같은 사용자 정보의 승인되고 안전한 프로세싱를 가능하게 한다. 사용자는 개인 정보들의 부분들의 수집에 대한 통지 및 이러한 수집 프로세스를 동의할지 동의하지 않을지의 기회를 제공받을 수 있다. 이러한 동의는 여러 가지 형식을 취할 수 있다. 이러한 개인 정보 수집 동의는 데이터가 수집되기 이전에 사용자가 적극적인 조치를 취하도록 할 수 있게 한다. 이와 달리, 개인 정보 수집 반대는 데이터가 수집되기 전에 사용자가 데이터 수집을 방지하기 위한 적극적인 조치를 취하도록 할 수 있게 한다. The disclosed architecture may optionally include a privacy component (not shown) that allows a user to consent or not consent to revealing personal information, such as selecting or showing specific content of a virtual document. The privacy component enables authorized and secure processing of user information, such as tracking information, and personal information that may have been obtained, maintained and/or accessible. The user may be provided with notice of the collection of pieces of personal information and an opportunity to consent or disagree with this collection process. This consent can take several forms. Consent to the collection of such personal information allows users to take active steps before data is collected. In contrast, Opposing Personal Data Collection allows users to take active steps to prevent data collection before data is collected.

본 명세서에서는, 본 개시된 아키텍처의 신규 양태들을 수행하기 위한 예시적인 방법들을 나타내는 흐름도들의 세트가 포함된다. 설명의 단순화를 위해, 본 명세서에서, 예를 들어, 플로우 차트 또는 흐름도의 형태로 도시된 하나 이상의 방법들은 일련의 동작들로 도시되고 기술되었지만, 일부 동작들은 이러한 방법들에 있어서 다른 순서로 발생하고/하거나 본 명세서에서 도시되고 설명된 것과는 다른 동작들과 동시에 발생할 수 있으므로, 이러한 방법들은 그 동작들의 순서에 의해서 제한되지 않는다는 것이 인정 및 이해되어야 한다. 예를 들어, 당업자는 일 방법이 상태도에서와 같이, 일련의 상호 관련된 상태들 또는 이벤트들로서 대안적으로 표현될 수 있다는 것을 이해하고 인식할 것이다. 더욱이, 일 방법에서 예시된 동작들 모두가 새로운 구현예를 위해 필요한 것은 아니다. Included herein is a set of flow diagrams illustrating example methods for performing novel aspects of the disclosed architecture. For simplicity of explanation, while one or more methods herein, illustrated in the form of, for example, a flow chart or flow diagram, are shown and described as a series of acts, some acts may occur in a different order in such methods. It should be appreciated and understood that such methods are not limited by the order of the operations, as/or may occur concurrently with other operations than those shown and described herein. For example, those skilled in the art will understand and appreciate that a methodology could alternatively be represented as a series of interrelated states or events, such as in a state diagram. Moreover, not all of the operations illustrated in one method are required for a new implementation.

도 4는 본 개시된 아키텍처에 따른 방법을 도시한다. 400에서, 관심-요소가 가상 문서의 콘텐츠 내에서 식별된다. 관심-요소는 수동적 사용자 시스템 상에 나타난 가상 문서의 뷰포트 내에 있다. 402에서, 가상 문서의 콘텐츠에 대한 업데이트가 능동적 사용자 시스템으로부터 수신된다. 404에서, 관심-요소는 능동적 사용자 시스템에 의한 업데이트로 인해 콘텐츠의 임의의 위치 변화에 관계없이 수동적 사용자 시스템의 뷰포트 내에서 유지된다.4 illustrates a method according to the presently disclosed architecture. At 400, an interest-element is identified within the content of the virtual document. The element-of-interest is within the viewport of the virtual document presented on the passive user's system. At 402, updates to the content of the virtual document are received from the active user system. At 404, the interest-element remains within the viewport of the passive user system regardless of any positional changes of the content due to updates by the active user system.

상기 방법은 관심-요소에 대한 뷰포트의 위치를 계산하는 단계를 더 포함할 수 있다. 상기 방법은 상기 업데이트에 응답하여 상기 수동적 사용자 시스템의 상기 뷰포트의 콘텐츠 내에서 기준 요소를 식별하는 단계를 더 포함할 수 있다. 이 방법은 수동적 사용자 시스템의 뷰포트 내의 최상단 요소를 기준 요소로서 식별하는 단계를 더 포함할 수 있다.The method may further include calculating a position of the viewport relative to the element-of-interest. The method may further include identifying a reference element within content of the viewport of the passive user system in response to the update. The method may further include identifying a top-most element in the viewport of the passive user system as a reference element.

이 방법은 업데이트에 응답하여 기준 요소를 식별하고 상기 뷰포트 내에 관심-요소를 지속시키도록 상기 콘텐츠 내에서의 오프셋을 조정하는 단계를 더 포함할 수 있다. 이 방법은 해시 세트 및 콘텐츠의 요소들을 저장하는 메모리 내에서 관심-요소를 검색하는 단계를 더 포함할 수 있다. 이러한 방법은 수동적 사용자 시스템들의 대응하는 뷰포트들 내에서 관심-요소의 위치를 유지하면서 수동적 사용자 시스템들의 애플리케이션들 간에 상기 업데이트를 동기화하는 단계를 더 포함할 수 있다.The method may further include identifying a reference element in response to the update and adjusting an offset within the content to persist the interest-element within the viewport. The method may further include retrieving the element-of-interest within a memory storing the hash set and elements of the content. The method may further include synchronizing the update between applications of the passive user systems while maintaining the position of the element-of-interest within the corresponding viewports of the passive user systems.

상기 방법은 뷰포트 내에 관심-요소를 포함시키도록 뷰포트의 위치를 이동시키는 단계를 더 포함할 수 있다. 이 방법은 수동적 사용자 시스템의 뷰포트 외부에 있는 가상 문서의 부분에서 상기 업데이트를 수신하는 단계를 더 포함할 수 있다. 이 방법은 수동적 사용자들, 및 협업 편집 하에서 문서들을 업데이트하는 능동적 사용자 간의 협업 세션에 적용된다. The method may further include moving the position of the viewport to include the element-of-interest within the viewport. The method may further include receiving the update at a portion of the virtual document that is outside the viewport of the passive user's system. This method applies to collaborative sessions between passive users and active users updating documents under collaborative editing.

도 5는 본 개시된 아키텍처에 따른 다른 방법을 도시한다. 500에서, 가상 문서의 콘텐츠 내에서 관심-요소가 식별된다. 관심-요소는 협업 세션의 수동적 사용자 시스템 상에 나타난 가상 문서의 뷰포트 내에 있다. 502에서, 관심-요소에 대한 뷰포트의 위치가 계산된다. 504에서, 수동적 요소 시스템의 뷰포트의 콘텐츠 내에서 기준 요소가 식별된다. 506에서, 협업 세션의 능동적 사용자 시스템으로부터 가상 문서의 콘텐츠에 대한 업데이트가 수신된다. 508에서, 능동적 사용자 시스템에 의한 업데이트로 인해 콘텐츠의 임의의 위치 변화에 관계없이 수동적 사용자 시스템의 뷰포트 내에 관심-요소가 포함되도록 상기 뷰포트가 유지된다.5 illustrates another method according to the presently disclosed architecture. At 500, an interest-element is identified within the content of the virtual document. The interest-element is within the viewport of the virtual document presented on the passive user's system of the collaboration session. At 502, the position of the viewport relative to the element-of-interest is calculated. At 504, a reference element is identified within the content of the passive element system's viewport. At 506, an update to the content of the virtual document is received from the active user system of the collaboration session. At 508, updates by the active user system maintain the viewport such that the interest-element is contained within the viewport of the passive user system regardless of any change in position of the content.

상기 방법은 수동적 사용자 시스템의 뷰포트 내에서 최상단 요소를 기준 요소로서 식별하는 단계를 더 포함할 수 있다. 상기 방법은 상기 뷰포트 내에서 상기 관심-요소를 유지하도록 오프셋에 따라 상기 뷰포트를 조정하는 단계를 더 포함할 수 있다. 이 방법은 수동적 사용자 시스템의 대응하는 협업 뷰포트들 내에서 상기 관심-요소의 위치를 유지하면서, 협업 세션의 일부로서 수동적 사용자 시스템들의 애플리케이션들 간에 상기 업데이트를 동기화하는 단계를 더 포함할 수 있다.The method may further include identifying a topmost element within the viewport of the passive user system as a reference element. The method may further comprise adjusting the viewport according to the offset to keep the interest-element within the viewport. The method may further include synchronizing the update between applications of the passive user systems as part of a collaboration session, while maintaining the location of the interest-element within the corresponding collaboration viewports of the passive user system.

또한, 도 6은 본 개시된 아키텍처에 따른 또 다른 대안적 방법을 도시한다. 600에서, 프레젠테이션의 가상 문서들의 콘텐츠 내에서의 관심-요소의 리더-특정된 식별사항이 수신된다. 관심-요소는 리더 뷰포트를 통해 리더에 의해 지정된다. 602에서, 리더-특정된 식별사항이 업데이트 컴포넌트를 통해 프로세싱되고 청중 사용자 시스템들이 상기 업데이트에 따라서 업데이트된다. 604에서, 해당 청중 사용자들에 의한 청중 사용자 뷰포트들에 의해 개시된 임의의 위치 변화에 관계없이 청중 사용자 뷰포트들은 관심-요소를 포함하도록 이동된다.6 also illustrates another alternative method according to the presently disclosed architecture. At 600, a reader-specific identification of an interest-element within the content of the virtual documents of the presentation is received. Interest-elements are designated by the reader through the reader viewport. At 602, the leader-specific identification is processed via an update component and audience user systems are updated according to the update. At 604, the audience user viewports are moved to include the interest-element regardless of any position change initiated by the audience user viewports by the audience users in question.

본원에서 사용된 바와 같이, "컴포넌트"라는 용어는 컴퓨터-관련 엔티티, 하드웨어, 소프트웨어 및 유형의 하드웨어의 조합, 소프트웨어 또는 실행중인 소프트웨어를 지칭한다. 예를 들어, 컴포넌트는 다음으로 한정되지 않지만, 하나 이상의 마이크로프로세서, 칩 메모리, 대용량 저장 장치(예를 들어, 광학 드라이브, 고체상 드라이브, 자기 저장 매체 드라이브 등), 컴퓨터들, 및 휴대용 컴퓨팅 및 컴퓨팅-가능한 장치들(예를 들어, 휴대 전화, 태블릿, 스마트폰 등)과 같은 유형의 컴포넌트일 수 있다. 소프트웨어 컴포넌트는 마이크로프로세서 상에서 실행되는 프로그램, 객체(방법을 사용하여 변수 및 동작의 상태를 유지하는 소프트웨어 개체), 실행가능한 데이터 구조(휘발성 또는 비휘발성 저장 매체에 저장됨), 모듈(프로그램의 일부), 실행 스레드(독립적으로 관리될 수 있는 인스트럭션들의 최소 시퀀스) 및/또는 프로그램을 포함할 수 있다.As used herein, the term “component” refers to a computer-related entity, hardware, software and a combination of tangible hardware, software or software in execution. For example, components include, but are not limited to, one or more microprocessors, chip memory, mass storage devices (eg, optical drives, solid-state drives, magnetic storage media drives, etc.), computers, and portable computing and computing- It may be a tangible component such as possible devices (eg, mobile phone, tablet, smartphone, etc.). A software component is a program that runs on a microprocessor, objects (software objects that use methods to maintain the state of variables and operations), executable data structures (stored on volatile or nonvolatile storage media), modules (parts of a program). , a thread of execution (a minimal sequence of instructions that can be independently managed) and/or a program.

예시적으로 말하자면, 서버상에서 실행되는 애플리케이션 및 서버는 모두 컴포넌트일 수 있다. 하나 이상의 컴포넌트가 프로세스 및/또는 실행 스레드 내에 상주할 수 있으며, 컴포넌트는 하나의 컴퓨터 상에서 로컬화되고/되거나 둘 이상의 컴퓨터들 간에 분산될 수 있다. "예시적인"이라는 단어는 본 명세서에서 실례, 예 또는 예시로서 제공되는 것을 의미하기 위해 사용될 수 있다. 본 명세서에서 "예시적인" 것으로 설명된 임의의 양태 또는 설계는 다른 양태 또는 설계보다 반드시 바람직하거나 유리한 것으로 해석되지 않아야 한다.By way of example, both the server and the application running on the server may be components. One or more components can reside within a process and/or thread of execution and a component can be localized on one computer and/or distributed between two or more computers. The word "exemplary" may be used herein to mean serving as an example, example, or illustration. Any aspect or design described herein as “exemplary” should not be construed as necessarily preferred or advantageous over other aspects or designs.

이제, 도 7을 참조하면, 본 개시된 아키텍처에 따라 지속적 뷰포트를 실행하는 컴퓨팅 시스템(700)의 블록도가 도시되어 있다. 대안적으로 또는 부가적으로, 본 명세서에 기술된 기능들은 적어도 부분적으로, 하나 이상의 하드웨어 로직 컴포넌트들에 의해 수행될 수 있다. 예를 들어, 비한정적으로 말하자면, 사용될 수 있는 하드웨어 로직 컴포넌트들의 예시적인 타입들은 FPGA(Field-Programmable Gate Arrays), ASIC(Application-Specific Integrated Circuit), ASSP(Application-Specific Standard Products), SOC(System-on-a-Chip), CPLD(Complex Programmable Logic Device), 등을 포함하며, 이러한 컴포넌트들에서는, 디지털 및/또는 혼합 신호 및 기타 기능들이 기판에서 구현될 수 있다. Referring now to FIG. 7 , a block diagram of a computing system 700 implementing a persistent viewport in accordance with the presently disclosed architecture is shown. Alternatively or additionally, the functions described herein may be performed, at least in part, by one or more hardware logic components. By way of example and not limitation, example types of hardware logic components that may be used include Field-Programmable Gate Arrays (FPGAs), Application-Specific Integrated Circuits (ASICs), Application-Specific Standard Products (ASSPs), System Systems (SOCs) -on-a-Chip), Complex Programmable Logic Devices (CPLDs), etc., in these components, digital and/or mixed signal and other functions may be implemented on the board.

본 발명의 다양한 양태들에 대한 추가적인 컨텍스트를 제공하기 위해, 도 7 및 이하의 설명은 다양한 양태들이 구현될 수 있는 적합한 컴퓨팅 시스템(700)의 간단하고 일반적인 설명을 제공하기 위한 것이다. 위의 설명은 하나 이상의 컴퓨터 상에서 실행될 수 있는 컴퓨터 실행가능한 인스트럭션들의 일반적인 맥락에서 이루어졌지만, 당업자는 새로운 구현예는 또한 다른 프로그램 모듈들과 조합하여 및/또는 하드웨어 및 소프트웨어의 조합으로서 실현될 수 있다는 것을 인식할 것이다. To provide additional context for various aspects of the present invention, FIG. 7 and the discussion below are intended to provide a brief and general description of a suitable computing system 700 in which various aspects may be implemented. While the above description has been made in the general context of computer-executable instructions that can be executed on one or more computers, one skilled in the art will appreciate that new implementations may also be realized in combination with other program modules and/or as a combination of hardware and software. will recognize

다양한 양태들을 구현하기 위한 컴퓨팅 시스템(700)은 마이크로프로세싱 유닛(들)(704)(또한, 마이크로프로세서(들) 및 프로세서(들)로서 지칭됨), 시스템 메모리(706)와 같은 (그 상에 데이터가 전자적으로 및/또는 광학적으로 저장 및 검색될 수 있는 임의의 물리적 장치 또는 재료인) 컴퓨터 판독가능 저장 매체(상기 컴퓨터 판독가능 저장 매체/매체들은 또한 자기 디스크, 광학 디스크, 고체상 드라이브, 외부 메모리 시스템 및 플래시 메모리 드라이브를 포함함), 및 시스템 버스(708)를 갖는 컴퓨터(702)를 포함한다. 마이크로프로세싱 유닛(들)(704)은 단일 프로세서, 멀티-프로세서, 단일-코어 유닛, 및 프로세싱 및/또는 저장 회로들의 멀티-코어 유닛과 같은 다양한 상업적으로 입수가능한 마이크로프로세서들 임의의 것일 수 있다. 또한, 당업자는 본 신규한 시스템들 및 방법들이 미니컴퓨터, 메인프레임 컴퓨터뿐만 아니라 개인용 컴퓨터(예를 들어, 데스크탑, 랩톱, 태블릿 PC, 등), 파지식 컴퓨팅 장치, 마이크로프로세서-기반 또는 프로그램가능한 소비자 전자 장치 등을 포함하는 다른 컴퓨터 시스템 구성들을 사용하여 실시될 수 있다는 것을 이해할 것이며, 이러한 장치들 각각은 하나 이상의 관련 장치들에 동작가능하게 연결될 수 있다.Computing system 700 for implementing various aspects includes microprocessing unit(s) 704 (also referred to as microprocessor(s) and processor(s)), such as system memory 706 (on which Computer-readable storage medium (which is any physical device or material on which data can be stored and retrieved electronically and/or optically) (also referred to as magnetic disks, optical disks, solid-state drives, external memory system and flash memory drives), and a computer 702 having a system bus 708. Microprocessing unit(s) 704 may be any of a variety of commercially available microprocessors, such as single processors, multi-processors, single-core units, and multi-core units of processing and/or storage circuits. In addition, those skilled in the art will understand that the present novel systems and methods can be applied to minicomputers, mainframe computers as well as personal computers (eg, desktops, laptops, tablet PCs, etc.), handheld computing devices, microprocessor-based or programmable consumer It will be appreciated that implementations may be implemented using other computer system configurations, including electronic devices and the like, each of which may be operatively connected to one or more related devices.

컴퓨터(702)는 무선 통신 장치들, 셀룰러 전화들, 및 기타 모바일-가능 장치들과 같은 휴대용 및/또는 이동가능한 컴퓨팅 시스템들을 위한 클라우드 컴퓨팅 서비스를 지원할 시에 데이터센터 및/또는 컴퓨팅 자원들(하드웨어 및/또는 소프트웨어) 내에서 채용되는 몇몇 컴퓨터들 중 하나일 수 있다. 클라우드 컴퓨팅 서비스는 다음으로 한정되지 않지만, 서비스로서의 인프라(IaaS), 서비스로서의 플랫폼(PasS), 서비스로서의 소프트웨어(SasS), 서비스로서의 스토리지(SasS), 서비스로서의 데스크탑(DasS), 서비스로서의 데이터(DaaS), 서비스로서의 보안(SaaS) 및 서비스로서의 API(예를 들어, 애플리케이션 프로그램 인터페이스)(AasS)를 포함한다. Computer 702 is a data center and/or computing resource (hardware and/or software). Cloud computing services include, but are not limited to, Infrastructure as a Service (IaaS), Platform as a Service (PasS), Software as a Service (SasS), Storage as a Service (SasS), Desktop as a Service (DasS), and Data as a Service (DaaS). ), security-as-a-service (SaaS) and API-as-a-service (eg, application program interfaces) (AasS).

시스템 메모리(706)는 휘발성(VOL) 메모리(710)(예를 들어, 랜덤 액세스 메모리(RAM)) 및 비휘발성 메모리(NON-VOL)(712)(ROM, EPROM, EEPROM, 등)과 같은 컴퓨터 판독가능 저장 매체를 포함할 수 있다. BIOS(basic input/output system)는 비휘발성 메모리(712)에 저장될 수 있으며, 예를 들어, 기동 동안, 컴퓨터(702) 내의 컴포넌트들 간에 데이터 및 신호의 통신을 실현하는 기본 루틴을 포함한다. 휘발성 메모리(710)는 또한 데이터를 캐싱하기 위한 정적 RAM과 같은 고속 RAM을 포함할 수 있다.System memory 706 includes volatile (VOL) memory 710 (e.g., random access memory (RAM)) and non-volatile memory (NON-VOL) 712 (ROM, EPROM, EEPROM, etc.) A readable storage medium may be included. A basic input/output system (BIOS) may be stored in non-volatile memory 712 and contains basic routines that enable communication of data and signals between components within computer 702, for example, during startup. Volatile memory 710 may also include high-speed RAM, such as static RAM, for caching data.

시스템 버스(708)는 다음으로 한정되지 않지만, 시스템 메모리(706)를 포함하는 시스템 컴포넌트들을 마이크로프로세서(들)(704)로 연결하는 인터페이스를 제공한다. 시스템 버스(708)는 다양한 상업적으로 입수가능한 버스 아키텍처 중 임의의 것을 사용하여, 메모리 버스(메모리 제어기를 구비하거나 구비하지 않음) 및 주변장치 버스(예를 들어, PCI, PCIe, AGP, LPC, 등)로 더 상호접속될 수 있는 몇몇 타입의 버스 구조들 중 임의의 것일 수 있다.System bus 708 provides an interface connecting system components including, but not limited to, system memory 706 to microprocessor(s) 704 . The system bus 708 can be a memory bus (with or without a memory controller) and a peripheral bus (e.g., PCI, PCIe, AGP, LPC, etc.) using any of a variety of commercially available bus architectures. ) can be any of several types of bus structures that can be further interconnected.

컴퓨터(702)는 머신 판독가능 저장 서브시스템(들)(714) 및 상기 저장 서브시스템(들)(714)을 시스템 버스(708) 및 다른 원하는 컴퓨터 컴포넌트들 및 회로들에 인터페이스하기 위한 저장 인터페이스(들)(716)를 더 포함한다. 저장 서브시스템(714)(들)(물리적 저장 매체)은 예를 들어, 하드 디스크 드라이브(HDD), 자기 플로피 디스크 드라이브(FDD), SSD(Solid State Drive), 플래시 드라이브 및/또는 광 디스크 저장 드라이브(예를 들어, CD-ROM 드라이브 DVD 드라이브) 중 하나 이상을 포함할 수 있다. 저장 인터페이스(들)(716)는 예를 들어, EIDE, ATA, SATA 및 IEEE 1394와 같은 인터페이스 기술을 포함할 수 있다.The computer 702 has a machine-readable storage subsystem(s) 714 and a storage interface for interfacing the storage subsystem(s) 714 to a system bus 708 and other desired computer components and circuits ( s) 716 are further included. The storage subsystem 714(s) (physical storage media) may include, for example, hard disk drives (HDDs), magnetic floppy disk drives (FDDs), solid state drives (SSDs), flash drives, and/or optical disk storage drives. (eg, a CD-ROM drive or a DVD drive). Storage interface(s) 716 may include interface technologies such as EIDE, ATA, SATA, and IEEE 1394, for example.

하나 이상의 프로그램 및 데이터는 메모리 서브시스템(706), 머신 판독가능 및 분리식 메모리 서브시스템(718)(예를 들어, 플래시 드라이브 폼 팩터 기술) 및/또는 저장 서브시스템(들)(714)(예를 들어, 광학, 자기, 고체상) 내에 저장될 수 있으며, 상기 하나 이상의 프로그램 및 데이터는 운영 체제(720), 하나 이상의 애플리케이션 프로그램(722), 다른 프로그램 모듈(724) 및 프로그램 데이터(726)를 포함한다.One or more programs and data may be stored in memory subsystem 706, machine readable and removable memory subsystem 718 (eg, flash drive form factor technology) and/or storage subsystem(s) 714 (eg, eg, optical, magnetic, solid state), the one or more programs and data may include an operating system 720, one or more application programs 722, other program modules 724 and program data 726. do.

운영 체제(720), 하나 이상의 애플리케이션 프로그램(722), 다른 프로그램 모듈(724) 및/또는 프로그램 데이터(726)는 예를 들어, 도 1의 시스템(100)의 항목들 및 컴포넌트들, 도 2의 도면(200)의 항목들 및 컴포넌트들, 도 3의 시스템(300)의 항목들 및 컴포넌트들, 및 도 4 내지 도 6의 흐름도들에 의해 표현된 방법들을 포함할 수 있다. Operating system 720, one or more application programs 722, other program modules 724, and/or program data 726 may be, for example, items and components of system 100 of FIG. It may include the items and components of diagram 200, the items and components of system 300 of FIG. 3, and the methods represented by the flowcharts of FIGS. 4-6.

일반적으로, 프로그램은 특정 태스크, 기능을 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 방법, 데이터 구조, 다른 소프트웨어 컴포넌트, 등을 포함한다. 운영 체제(720), 애플리케이션들(722), 모듈들(724), 및/또는 데이터(726) 중 전부 또는 일부는 또한 예를 들어, 휘발성 메모리(710) 및/또는 비휘발성 메모리와 같은 메모리 내에 캐시될 수 있다. 본 개시된 아키텍처는 다양한 상업적으로 입수가능한 운영 체제들 또는 운영 체제들의의 조합(예를 들어, 가상 머신)으로 구현될 수 있음을 이해해야 한다.Generally, a program includes routines, methods, data structures, other software components, etc. that perform particular tasks, functions, or implement particular abstract data types. All or a portion of operating system 720, applications 722, modules 724, and/or data 726 may also reside within memory, such as, for example, volatile memory 710 and/or non-volatile memory. can be cached. It should be understood that the disclosed architecture may be implemented with a variety of commercially available operating systems or combinations of operating systems (eg, virtual machines).

저장 서브시스템(들)(714) 및 메모리 서브시스템(706 및 718)은 데이터, 데이터 구조, 컴퓨터 실행가능한 인스트럭션 등의 휘발성 및 비휘발성 저장을 위한 컴퓨터 판독가능 매체 역할을 한다. 이러한 인스트럭션들은 컴퓨터 또는 다른 머신에 의해 실행될 때, 컴퓨터 또는 다른 머신으로 하여금 방법의 하나 이상의 동작을 수행하게 할 수 있다. 컴퓨터 실행가능한 인스트럭션은, 예를 들어, 범용 컴퓨터, 특수 목적 컴퓨터 또는 특수 목적 마이크로프로세서 장치(들)로 하여금 특정 기능 또는 기능 그룹을 수행하게 하는 인스트럭션 및 데이터를 포함한다. 컴퓨터 실행 가능 인스트럭션은 예를 들어, 어셈블리 언어 또는 심지어 소스 코드와 같은 이진 중간 포맷 인스트럭션일 수 있다. 동작을 수행하기 위한 인스트럭션은 하나의 매체에 저장될 수 있거나 여러 매체에 걸쳐서 저장될 수 있으며, 이로써 인스트럭션들은, 이러한 인스트럭션들 모두가 동일한 매체 상에 존재하는지에 상관없이, 하나 이상의 컴퓨터 판독가능 저장 매체/매체들 상에서 집합적으로 나타난다. Storage subsystem(s) 714 and memory subsystems 706 and 718 serve as computer readable media for volatile and nonvolatile storage of data, data structures, computer executable instructions, and the like. When executed by a computer or other machine, these instructions may cause the computer or other machine to perform one or more operations of the method. Computer-executable instructions include, for example, instructions and data that cause a general purpose computer, special purpose computer, or special purpose microprocessor device(s) to perform a particular function or group of functions. Computer executable instructions may be, for example, binary intermediate format instructions such as assembly language or even source code. Instructions for performing operations may be stored on one medium or may be stored across multiple mediums, whereby the instructions may be stored on one or more computer readable storage mediums, whether or not all such instructions are on the same medium. /appears collectively on media.

컴퓨터 판독가능 저장 매체들(매체)는 전파된 신호 그 자체를 배제하고, 컴퓨터(702)에 의해 액세스될 수 있으며, 분리식 및/또는 비분리식일 수 있는 휘발성 및 비휘발성 매체 및/또는 외부 매체를 포함한다. 컴퓨터(702)에 대해서, 다양한 유형의 저장 매체는 임의의 적합한 디지털 포맷으로 된 데이터를 저장한다. 당업자라면, 본 개시된 아키텍처의 신규한 방법(동작)을 수행하기 위한 컴퓨터 실행가능 인스트럭션을 저장하기 위한 다른 유형의 컴퓨터 판독가능 매체, 예를 들어, 지프(zip) 드라이브, 고체상 드라이브, 자기 테이프, 플래시 메모리 카드, 플래시 드라이브, 카트리지 등이 사용될 수 있음을 이해해야 한다. Computer-readable storage media (medium), excluding the propagated signal itself, can be accessed by computer 702, volatile and non-volatile media and/or external media that can be removable and/or non-removable. includes For computer 702, various types of storage media store data in any suitable digital format. Those of ordinary skill in the art may consider other types of computer-readable media for storing computer-executable instructions for performing the novel methods (operations) of the presently disclosed architecture, such as zip drives, solid-state drives, magnetic tape, and flash. It should be understood that memory cards, flash drives, cartridges, and the like may be used.

사용자는 키보드 및 마우스와 같은 외부 사용자 입력 장치(728)를 사용하여 뿐만 아니라, 음성 인식에 의해 실현되는 음성 명령에 의해 컴퓨터(702), 프로그램 및 데이터와 상호 작용할 수 있다. 다른 외부 사용자 입력 장치들(728)은 마이크로폰, IR(적외선) 원격 제어기, 조이스틱, 게임 패드, 카메라 인식 시스템, 스타일러스 펜, 터치 스크린, 제스처 시스템(예를 들어, 안구 운동, 손(들), 손가락(들), 팔(들), 머리, 등과 관련된 바와 같은 신체 포즈), 등을 포함할 수 있다. 사용자는 예컨대 컴퓨터(702)가 휴대용 컴퓨터인 경우에, 터치패드, 마이크로폰, 키보드, 등과 같은 온보드(onboard) 사용자 입력 장치(730)를 사용하여 컴퓨터(702), 프로그램 및 데이터와 상호작용할 수 있다.A user may interact with the computer 702, programs, and data using external user input devices 728, such as a keyboard and mouse, as well as by voice commands realized by voice recognition. Other external user input devices 728 include a microphone, IR (infrared) remote controller, joystick, game pad, camera recognition system, stylus pen, touch screen, gesture system (e.g., eye movement, hand(s), finger body poses as they relate to (s), arm(s), head, etc.), and the like. A user may interact with the computer 702, programs and data using an onboard user input device 730, such as a touchpad, microphone, keyboard, etc., for example if the computer 702 is a portable computer.

이들 및 다른 입력 장치는 시스템 버스(708)를 통해 입/출력(I/O) 장치 인터페이스(들)(732)를 통해 마이크로프로세싱 유닛(들)(704)에 연결되지만, 병렬 포트, IEEE 1394 직렬 포트, 게임 포트, USB 포트, IR 인터페이스, 단거리 무선 통신(예를 들어, 블루투스) 및 다른 개인 영역 네트워크(PAN) 기술 등과 같은 다른 인터페이스들에 의해 접속될 수 있다. 상기 I/O 장치 인터페이스(들)(732)는 또한, 사운드 카드 및/또는 온보드 오디오 프로세싱 능력을 갖추어서, 프린터, 오디오 장치, 카메라 장치 등과 같은 출력 주변 장치(734)의 사용을 가능하게 한다.These and other input devices are connected to the microprocessing unit(s) 704 through an input/output (I/O) device interface(s) 732 via the system bus 708, but through a parallel port, IEEE 1394 serial It may be connected by other interfaces, such as ports, game ports, USB ports, IR interfaces, short range wireless communications (eg Bluetooth) and other personal area network (PAN) technologies. The I/O device interface(s) 732 may also have a sound card and/or on-board audio processing capabilities to enable the use of output peripherals 734 such as printers, audio devices, camera devices, and the like.

하나 이상의 그래픽 인터페이스(들)(736)(일반적으로 그래픽 프로세싱 유닛 (GPU)라고도 함)는 컴퓨터(702)와 외부 디스플레이(들)(738)(예를 들어, LCD, 플라즈마 디스플레이) 및/또는 온보드 디스플레이(740)(예를 들어, 휴대용 컴퓨터 경우에서임) 간에 그래픽 및 비디오 신호를 제공한다. 그래픽 인터페이스(들)(736)는 또한 컴퓨터 시스템 보드의 일부로서 제조될 수 있다.One or more graphics interface(s) 736 (commonly referred to as a graphics processing unit (GPU)) may be connected to the computer 702 and an external display(s) 738 (e.g., LCD, plasma display) and/or onboard Provides graphics and video signals between displays 740 (eg, in a portable computer case). Graphics interface(s) 736 may also be fabricated as part of a computer system board.

컴퓨터(702)는 하나 이상의 네트워크 및/또는 다른 컴퓨터로의 유선/무선 통신 서브시스템(742)을 통한 논리적 접속을 사용하여 네트워크 환경(예를 들어, IP 기반)에서 동작할 수 있다. 다른 컴퓨터들은 워크스테이션, 서버, 라우터, 퍼스널 컴퓨터, 마이크로프로세서-기반 엔터테인먼트 장치, 피어 장치(peer device) 또는 다른 공통 네트워크 노드를 포함할 수 있으며, 통상적으로 컴퓨터(702)와 관련하여 설명된 요소들 전부 또는 일부를 포함할 수 있다. 상기 논리적 접속은 근거리 통신망(LAN), 광역 네트워크(WAN), 핫스폿 등으로의 무선/유선 연결을 포함할 수 있다. LAN 및 WAN 네트워킹 환경은 사무실과 회사에서 흔히 볼 수 있으며 인트라넷과 같은 전사적(enteprise-wide) 컴퓨터 네트워크들을 실현하며, 이러한 네트워크들 모두는 인터넷과 같은 글로벌 통신 네트워크에 연결될 수 있다. Computer 702 may operate in a networked environment (eg, IP-based) using one or more networks and/or logical connections through wired/wireless communication subsystem 742 to other computers. Other computers may include workstations, servers, routers, personal computers, microprocessor-based entertainment devices, peer devices, or other common network nodes, elements typically described in connection with computer 702. may include all or part of it. The logical connection may include a wireless/wired connection to a local area network (LAN), wide area network (WAN), hotspot, and the like. LAN and WAN networking environments are commonplace in offices and corporations and realize enterprise-wide computer networks such as intranets, all of which can be connected to global communication networks such as the Internet.

네트워킹 환경에서 사용될 때, 컴퓨터(702)는 유선/무선 통신 서브시스템(742)(예를 들어, 네트워크 인터페이스 어댑터, 온보드 송수신기 서브시스템, 등)을 통해서 네트워크에 접속되어, 유선/무선 네트워크, 유선/무선 프린터, 유선/무선 입력 장치(744), 등과 통신할 수 있다. 컴퓨터(702)는 네트워크를 통해 통신을 확립하기 위한 모뎀 또는 다른 수단을 포함할 수 있다. 네트워크 환경에서, 컴퓨터(702)에 관련된 프로그램 및 데이터는 분산형 시스템과 관련된 바와 같은, 원격 메모리/저장 장치에 저장될 수 있다. 도시된 네트워크 접속은 예시적인 것이며 컴퓨터들 간의 통신 링크를 확립하기 위한 다른 수단이 사용될 수 있음을 알 것이다.When used in a networking environment, computer 702 is connected to a network via a wired/wireless communication subsystem 742 (eg, network interface adapter, on-board transceiver subsystem, etc.) It can communicate with a wireless printer, a wired/wireless input device 744, and the like. Computer 702 may include a modem or other means for establishing communications over a network. In a network environment, programs and data associated with computer 702 may be stored in remote memory/storage devices, such as those associated with distributed systems. It will be appreciated that the network connections shown are exemplary and other means for establishing communication links between computers may be used.

컴퓨터(702)는 무선 통신 환경(예를 들어, IEEE 802.11 공중 변조 기법)에서 동작 가능하게 배치된 무선 장치와 같은, 표준 IEEE 802.xx 패밀리와 같은 무선 기술을 사용하는 유선/무선 장치 또는 개체와 통신할 수 있는데, 이러한 장치는 예를 들어, 프린터, 스캐너, 데스크탑 및/또는 휴대용 컴퓨터, PDA, 통신 위성, 무선으로 검출 가능한 태그와 연관된 장비 또는 위치의 임의의 부분(예를 들어, 키오스크, 신문 스탠드, 화장실) 및 전화일 수 있다. 상기 통신은 적어도, 핫스팟용 Wi-Fi™(무선 컴퓨터 네트워킹 장치들의 상호 운용성을 인증하는 데 사용됨), WiMax 및 Bluetooth™ 무선 기술을 포함한다. 따라서, 이러한 통신은 종래의 네트워크를 갖는 사전정의된 구조일 수도 있거나, 간단히 적어도 2 개의 장치들 간의 애드 호크 통신일 수도 있다. Wi-Fi 네트워크는 IEEE 802.1x(a, b, g, 등)라는 무선 기술을 사용하여 안전하고 안정적이며 빠른 무선 연결을 제공한다. Wi-Fi 네트워크를 사용하여 컴퓨터들을 서로 연결하거나, 인터넷에 연결하거나, 유선 네트워크(IEEE 802.3 관련 기술 및 기능을 사용함)에 연결할 수 있다.Computer 702 communicates with a wired/wireless device or entity that uses a wireless technology, such as the IEEE 802.xx family of standards, such as a wireless device operably deployed in a wireless communication environment (e.g., IEEE 802.11 over-the-air modulation techniques). capable of communicating, such devices may be, for example, printers, scanners, desktop and/or portable computers, personal digital assistants (PDAs), communications satellites, any piece of equipment or location associated with a wirelessly detectable tag (e.g., a kiosk, a newspaper stands, toilets) and telephones. The communications include at least Wi-Fi™ for hotspots (used to authenticate interoperability of wireless computer networking devices), WiMax, and Bluetooth™ wireless technologies. Accordingly, such communication may be a predefined structure with a conventional network, or may simply be an ad hoc communication between at least two devices. Wi-Fi networks use a radio technology called IEEE 802.1x (a, b, g, etc.) to provide secure, reliable, and fast wireless connections. A Wi-Fi network can be used to connect computers to each other, to the Internet, or to a wired network (which uses IEEE 802.3-related technologies and features).

본 지속적 뷰포트 아키텍처는 가상 문서의 콘텐츠 내에서 관심-요소를 식별하기 위한 수단으로서, 상기 관심 요소는 협업 세션의 수동적 사용자 시스템 상에 표시된 가상 문서의 뷰포트 내에 존재하는, 상기 식별하는 수단; 상기 협업 세션의 능동적 사용자 시스템으로부터 상기 가상 문서의 콘텐츠에 대한 업데이트를 수신하기 위한 수단; 및 상기 능동적 사용자 시스템에 의한 상기 업데이트로 인한 상기 콘텐츠의 임의의 위치 변화에 관계없이 상기 수동적 사용자 시스템의 상기 뷰포트 내에 상기 관심-요소를 유지하기 위한 수단을 포함하는 시스템으로서 구현될 수 있다. The persistent viewport architecture includes means for identifying an element of interest within the content of a virtual document, the element of interest being present in a viewport of the virtual document displayed on a passive user system of a collaboration session; means for receiving updates about the content of the virtual document from an active user system of the collaboration session; and means for maintaining the interest-element within the viewport of the passive user system regardless of any position change of the content due to the update by the active user system.

본 지속적 뷰포트 아키텍처는, 가상 문서의 콘텐츠 내에서 관심-요소를 식별하기 위한 수단으로서, 상기 관심 요소는 협업 세션의 수동적 사용자 시스템 상에 표시된 가상 문서의 뷰포트 내에 존재하는, 상기 식별하는 수단; 상기 관심-요소에 대한 상기 뷰포트의 위치를 계산하는 수단; 상기 수동적 사용자 시스템의 상기 뷰포트의 콘텐츠 내에서 기준 요소를 식별하는 수단; 상기 협업 세션의 능동적 사용자 시스템으로부터 상기 가상 문서의 콘텐츠에 대한 업데이트를 수신하기 위한 수단; 및 상기 능동적 사용자 시스템에 의한 상기 업데이트로 인한 상기 콘텐츠의 임의의 위치 변화에 관계없이 상기 수동적 사용자 시스템의 상기 뷰포트 내에 상기 관심-요소가 포함되도록 상기 뷰포트를 유지시키기 위한 수단을 포함하는 시스템으로서 구현될 수 있다. The persistent viewport architecture includes means for identifying an element of interest within the content of a virtual document, the element of interest being present in a viewport of the virtual document displayed on a passive user system of a collaboration session; means for calculating the position of the viewport relative to the interest-element; means for identifying a reference element within the content of the viewport of the passive user system; means for receiving updates about the content of the virtual document from an active user system of the collaboration session; and means for maintaining the viewport such that the element of interest is included within the viewport of the passive user system regardless of any change in position of the content due to the update by the active user system. can

또 다른 구현예에서, 본 지속적 뷰포트 아키텍처는, 프리젠테이션의 가상 문서들의 콘텐츠 내에서의 관심-요소의 리더-특정된 식별사항을 수신하기 위한 수단으로서, 상기 관심-요소는 리더 뷰포트를 통해 리더에 의해서 지정된, 상기 수단; 상기 업데이트 컴포넌트를 통해 상기 리더-특정된 식별사항을 프로세싱하고 상기 업데이트에 따라서 청중 사용자 시스템들을 업데이트하기 위한 수단; 및 해당 청중 사용자들에 의한 상기 청중 사용자 뷰포트들에 의해 개시된 임의의 위치 변경에 관계없이 청중 사용자 뷰포트들이 상기 관심-요소를 포함하도록 상기 청중 사용자 뷰포트들을 이동시키는 수단을 포함하는 시스템으로서 구현될 수 있다. In another implementation, the present persistent viewport architecture is a means for receiving a reader-specific identification of an element of interest within the content of virtual documents of a presentation, the element of interest to a reader via a reader viewport. designated by the means; means for processing the leader-specific identification via the update component and updating audience user systems according to the update; and means for moving the audience user viewports such that they contain the interest-factor regardless of any position change initiated by the audience user viewports by the corresponding audience users. .

전술한 내용은 본 개시된 아키텍처의 예들을 포함한다. 물론, 모든 고려가능한 컴포넌트 및/또는 방법들의 조합을 기술하는 것은 가능하지 않지만, 당업자는 많은 다른 조합들 및 변경들이 가능하다는 것을 인식할 수 있다. 따라서, 본 신규한 아키텍처는 첨부된 청구 범위의 사상 및 범위 내에 있는 그러한 모든 변경사항, 변형사항 및 대체사항을 포함하는 것으로 의도된다. 또한, 용어 "포함한다"가 상세한 설명 또는 청구 범위에서 사용되는 한, 이러한 용어는 배타적이지 않게 해석되어야 하며, 이러한 바는 "포함하는"이 청구항의 전제부와 본문 간에 있는 전이어(transitional word)로서 사용되는 경우에도 그러하다.What has been described above includes examples of the disclosed architecture. Of course, it is not possible to describe every conceivable combination of components and/or methods, but one skilled in the art may recognize that many other combinations and variations are possible. Accordingly, this novel architecture is intended to embrace all such changes, modifications and substitutions that fall within the spirit and scope of the appended claims. Also, so long as the term "comprises" is used in the description or claims, such terms are to be interpreted non-exclusively, such that "comprising" is a transitional word between the preamble and the body of a claim. Even when used as

Claims (20)

컴퓨팅 시스템에 의해 각 단계가 수행되는 방법으로서,
가상 문서의 콘텐츠에서 관심-요소를 식별하는 단계 - 상기 관심-요소는 수동적 사용자 시스템 상에 프리젠테이션되는 상기 가상 문서의 뷰포트(viewport) 내에 존재함 - 와,
능동적 사용자 시스템으로부터 상기 가상 문서의 상기 콘텐츠에 대한 업데이트를 수신하는 단계와,
상기 업데이트가 상기 수동적 사용자 시스템 상의 상기 뷰포트에서 상기 관심-요소의 위치를 변경할지와, 상기 관심-요소가 상기 뷰포트 내에 유지되기 위해 상기 뷰포트의 위치가 조정되어야 하는지 판정하는 단계와,
상기 업데이트가 상기 수동적 사용자 시스템 상의 상기 뷰포트에서 상기 관심-요소의 위치를 변경할 것이며, 상기 관심-요소가 상기 뷰포트 내에 유지되기 위해 상기 뷰포트의 위치가 조정되어야 한다는 판정에 기초하여, 상기 수동적 사용자 시스템에 의해 업데이트 표시가 디스플레이되게 하는 단계 - 상기 업데이트 표시는 상기 업데이트를 상기 수동적 사용자 시스템에 프리젠테이션된 상기 가상 문서에 포함하는 것을 지연시키는 옵션을 제공함 - 와,
상기 업데이트 표시에 대한 응답으로 선택을 수신하는 단계와,
상기 선택 수신에 응답하여, 상기 수동적 사용자 시스템이 상기 업데이트의 입력을 지연하게 하고 상기 수동적 사용자 시스템 상에 프리젠테이션된 상기 가상 문서에 입력하기 위해 상기 업데이트를 큐잉하게 하는 단계를 포함하는,
방법.
A method in which each step is performed by a computing system,
identifying an element of interest in the content of the virtual document, the element of interest being present in a viewport of the virtual document being presented on a passive user system;
receiving updates about the content of the virtual document from an active user system;
determining whether the update changes the position of the element-of-interest in the viewport on the passive user system and whether the position of the viewport must be adjusted in order for the element-of-interest to remain within the viewport;
Based on determining that the update will change the position of the element-of-interest in the viewport on the passive user system, and that the position of the viewport must be adjusted in order for the element-of-interest to remain within the viewport, the passive user system causing an update indication to be displayed, the update indication providing an option to delay inclusion of the update in the virtual document presented to the passive user system;
receiving a selection in response to the update indication;
in response to receiving the selection, causing the passive user system to delay input of the update and queue the update for input to the virtual document presented on the passive user system.
method.
제1항에 있어서,
상기 관심-요소에 대한 상기 뷰포트의 위치를 계산하는 단계를 더 포함하는,
방법.
According to claim 1,
further comprising calculating the position of the viewport relative to the element-of-interest.
method.
제1항에 있어서,
상기 업데이트에 응답하여 상기 수동적 사용자 시스템의 상기 뷰포트의 상기 콘텐츠 내에서 기준 요소(reference element)를 식별하는 단계를 더 포함하는,
방법.
According to claim 1,
identifying a reference element within the content of the viewport of the passive user system in response to the update.
method.
제3항에 있어서,
상기 수동적 사용자 시스템의 상기 뷰포트 내에서의 최상단 요소를 상기 기준 요소로서 식별하는 단계를 더 포함하는,
방법.
According to claim 3,
identifying a topmost element within the viewport of the passive user system as the reference element.
method.
제1항에 있어서,
상기 업데이트에 응답하여 기준 요소를 식별하고 상기 뷰포트 내에 상기 관심-요소를 유지하기 위해 상기 콘텐츠에서의 오프셋을 조정하는 단계를 더 포함하는,
방법.
According to claim 1,
identifying a reference element in response to the update and adjusting the offset in the content to keep the interest-element within the viewport.
method.
제1항에 있어서,
해시 세트(hashset) 및 콘텐츠 요소들을 저장하는 메모리에서 상기 관심-요소를 검색하는 단계를 더 포함하는,
방법.
According to claim 1,
further comprising retrieving the interest-element in a memory that stores a hashset and content elements.
method.
제1항에 있어서,
상기 수동적 사용자 시스템의 대응하는 뷰포트 내에서의 상기 관심-요소의 위치를 유지하면서 상기 수동적 사용자 시스템의 애플리케이션들 간에 상기 업데이트를 동기화하는 단계를 더 포함하는,
방법.
According to claim 1,
synchronizing the update between applications of the passive user system while maintaining the position of the element-of-interest within a corresponding viewport of the passive user system.
method.
제1항에 있어서,
상기 뷰포트 내에 상기 관심-요소가 포함되도록 상기 뷰포트의 위치를 변위시키는 단계를 더 포함하는,
방법.
According to claim 1,
further comprising displacing the position of the viewport so that the element-of-interest is included within the viewport.
method.
제1항에 있어서,
상기 수동적 사용자 시스템의 상기 뷰포트의 외부에 있는, 상기 가상 문서의 부분에서 상기 업데이트를 수신하는 단계를 더 포함하는,
방법.
According to claim 1,
receiving the update at a portion of the virtual document that is outside the viewport of the passive user system.
method.
컴퓨팅 시스템에 의해 각 단계가 수행되는 방법으로서,
가상 문서의 콘텐츠에서 관심-요소를 식별하는 단계 - 상기 관심-요소는 협업 세션(collaboration session)의 수동적 사용자 시스템 상에 프리젠테이션되는 상기 가상 문서의 뷰포트(viewport) 내에 존재함 - 와,
상기 관심-요소에 대한 상기 뷰포트의 위치를 계산하는 단계와,
상기 수동적 사용자 시스템의 상기 뷰포트의 상기 콘텐츠에서 기준 요소를 식별하는 단계와,
상기 협업 세션의 능동적 사용자 시스템으로부터 상기 가상 문서의 상기 콘텐츠에 대한 업데이트를 수신하는 단계와,
상기 업데이트가 상기 수동적 사용자 시스템 상의 상기 뷰포트에서 상기 관심-요소의 위치를 변경할지와, 상기 관심-요소가 상기 뷰포트 내에 유지되기 위해 상기 뷰포트의 위치가 조정되어야 하는지 판정하는 단계와,
상기 업데이트가 상기 수동적 사용자 시스템 상의 상기 뷰포트에서 상기 관심-요소의 위치를 변경할 것이며, 상기 관심-요소가 상기 뷰포트 내에 유지되기 위해 상기 뷰포트의 위치가 조정되어야 한다는 판정에 기초하여, 상기 수동적 사용자 시스템에 의해 업데이트 표시가 디스플레이되게 하는 단계 - 상기 업데이트 표시는 상기 업데이트를 상기 수동적 사용자 시스템에 프리젠테이션된 상기 가상 문서에 포함하는 것을 지연시키는 옵션을 제공함 - 와,
상기 업데이트 표시에 대한 응답으로 선택을 수신하는 단계와,
상기 선택 수신에 응답하여, 상기 수동적 사용자 시스템이 상기 업데이트의 입력을 지연하게 하고 상기 수동적 사용자 시스템 상에 프리젠테이션된 상기 가상 문서에 입력하기 위해 상기 업데이트를 큐잉하게 하는 단계를 포함하는,
방법.
A method in which each step is performed by a computing system,
identifying an element of interest in the content of the virtual document, the element of interest being present in a viewport of the virtual document being presented on a passive user system of a collaboration session;
calculating the position of the viewport relative to the interest-element;
identifying a reference element in the content of the viewport of the passive user system;
receiving updates about the content of the virtual document from an active user system of the collaboration session;
determining whether the update changes the position of the element-of-interest in the viewport on the passive user system and whether the position of the viewport must be adjusted in order for the element-of-interest to remain within the viewport;
Based on determining that the update will change the position of the element-of-interest in the viewport on the passive user system, and that the position of the viewport must be adjusted in order for the element-of-interest to remain within the viewport, the passive user system causing an update indication to be displayed, the update indication providing an option to delay inclusion of the update in the virtual document presented to the passive user system;
receiving a selection in response to the update indication;
in response to receiving the selection, causing the passive user system to delay input of the update and queue the update for input to the virtual document presented on the passive user system.
method.
제10항에 있어서,
상기 수동적 사용자 시스템의 상기 뷰포트 내에서의 최상단 요소를 상기 기준 요소로서 식별하는 단계를 더 포함하는,
방법.
According to claim 10,
identifying a topmost element within the viewport of the passive user system as the reference element.
method.
제10항에 있어서,
상기 뷰포트 내에 상기 관심-요소를 유지하기 위해 오프셋에 따라 상기 뷰포트를 조정하는 단계를 더 포함하는,
방법.
According to claim 10,
further comprising adjusting the viewport according to the offset to keep the interest-element within the viewport.
method.
제10항에 있어서,
상기 수동적 사용자 시스템의 대응하는 협업 뷰포트 내에서의 상기 관심-요소의 위치를 유지하면서 상기 협업 세션의 일부로서 상기 수동적 사용자 시스템의 애플리케이션들 간에 상기 업데이트를 동기화하는 단계를 더 포함하는,
방법.
According to claim 10,
synchronizing the updates between applications of the passive user system as part of the collaboration session while maintaining the position of the interest-element within a corresponding collaboration viewport of the passive user system.
method.
시스템으로서,
적어도 하나의 프로세서와,
상기 적어도 하나의 프로세서에 동작 가능하게 연결되어 있으며, 상기 적어도 하나의 프로세서에 의해 실행될 경우에 상기 시스템으로 하여금 방법을 수행하게 하는 명령어가 저장되어 있는 메모리를 포함하되,
상기 방법은,
가상 문서의 콘텐츠에서 관심-요소를 식별하는 단계 - 상기 관심-요소는 수동적 사용자 시스템 상에 프리젠테이션되는 상기 가상 문서의 뷰포트(viewport) 내에 존재함 - 와,
능동적 사용자 시스템으로부터 상기 가상 문서의 상기 콘텐츠에 대한 업데이트를 수신하는 단계와,
상기 업데이트가 상기 수동적 사용자 시스템 상의 상기 뷰포트에서 상기 관심-요소의 위치를 변경할지와, 상기 관심-요소가 상기 뷰포트 내에 유지되기 위해 상기 뷰포트의 위치가 조정되어야 하는지 판정하는 단계와,
상기 업데이트가 상기 수동적 사용자 시스템 상의 상기 뷰포트에서 상기 관심-요소의 위치를 변경할 것이며, 상기 관심-요소가 상기 뷰포트 내에 유지되기 위해 상기 뷰포트의 위치가 조정되어야 한다는 판정에 기초하여, 상기 수동적 사용자 시스템에 의해 업데이트 표시가 디스플레이되게 하는 단계 - 상기 업데이트 표시는 상기 업데이트를 상기 수동적 사용자 시스템에 프리젠테이션된 상기 가상 문서에 포함하는 것을 지연시키는 옵션을 제공함 - 와,
상기 업데이트 표시에 대한 응답으로 선택을 수신하는 단계와,
상기 선택 수신에 응답하여, 상기 수동적 사용자 시스템에 대한 상기 수동적 사용자 시스템의 상기 뷰포트가 상기 업데이트의 입력을 지연하게 하고 상기 수동적 사용자 시스템 상에 프리젠테이션된 상기 가상 문서에 입력하기 위해 상기 업데이트를 큐잉하게 하는 단계를 포함하는,
시스템.
As a system,
at least one processor;
a memory operatively connected to the at least one processor and having stored therein instructions which, when executed by the at least one processor, cause the system to perform a method;
The method,
identifying an element of interest in the content of the virtual document, the element of interest being present in a viewport of the virtual document being presented on a passive user system;
receiving updates about the content of the virtual document from an active user system;
determining whether the update changes the position of the element-of-interest in the viewport on the passive user system and whether the position of the viewport must be adjusted in order for the element-of-interest to remain within the viewport;
Based on determining that the update will change the position of the element-of-interest in the viewport on the passive user system, and that the position of the viewport must be adjusted in order for the element-of-interest to remain within the viewport, the passive user system causing an update indication to be displayed, the update indication providing an option to delay inclusion of the update in the virtual document presented to the passive user system;
receiving a selection in response to the update indication;
In response to receiving the selection, cause the viewport of the passive user system to the passive user system to delay input of the update and queue the update for input to the virtual document presented on the passive user system. Including the steps of
system.
제14항에 있어서,
상기 방법은, 상기 관심-요소에 대한 상기 뷰포트의 위치를 계산하는 단계를 더 포함하는,
시스템.
According to claim 14,
The method further comprises calculating the position of the viewport relative to the interest-element.
system.
제14항에 있어서,
상기 방법은, 상기 업데이트에 응답하여 상기 수동적 사용자 시스템의 상기 뷰포트의 상기 콘텐츠 내에서 기준 요소를 식별하는 단계를 더 포함하는,
시스템.
According to claim 14,
the method further comprising identifying a reference element within the content of the viewport of the passive user system in response to the update.
system.
제16항에 있어서,
상기 방법은, 상기 수동적 사용자 시스템의 상기 뷰포트 내에서의 최상단 요소를 상기 기준 요소로서 식별하는 단계를 더 포함하는,
시스템.
According to claim 16,
The method further comprises identifying a topmost element within the viewport of the passive user system as the reference element.
system.
제16항에 있어서,
상기 방법은, 상기 업데이트에 응답하여 상기 기준 요소를 식별하고 상기 뷰포트 내에 상기 관심-요소를 유지하기 위해 상기 콘텐츠에서의 오프셋을 조정하는 단계를 더 포함하는,
시스템.
According to claim 16,
the method further comprising identifying the reference element in response to the update and adjusting an offset in the content to maintain the interest-element within the viewport.
system.
제14항에 있어서,
상기 방법은, 해시 세트 및 콘텐츠 요소들을 저장하는 메모리에서 상기 관심-요소를 검색하는 단계를 더 포함하는,
시스템.
According to claim 14,
The method further comprises retrieving the interest-element in a memory storing a hash set and content elements.
system.
제14항에 있어서,
상기 방법은, 상기 수동적 사용자 시스템의 대응하는 뷰포트 내에서의 상기 관심-요소의 위치를 유지하면서 상기 수동적 사용자 시스템의 애플리케이션들 간에 상기 업데이트를 동기화하는 단계를 더 포함하는,
시스템.
According to claim 14,
the method further comprising synchronizing the update between applications of the passive user system while maintaining the location of the element-of-interest within a corresponding viewport of the passive user system.
system.
KR1020177016478A 2014-12-17 2015-12-16 Persistent viewports KR102545025B1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/573,784 US10191890B2 (en) 2014-12-17 2014-12-17 Persistent viewports
US14/573,784 2014-12-17
PCT/US2015/065923 WO2016100413A1 (en) 2014-12-17 2015-12-16 Persistent viewports

Publications (2)

Publication Number Publication Date
KR20170098830A KR20170098830A (en) 2017-08-30
KR102545025B1 true KR102545025B1 (en) 2023-06-16

Family

ID=55085912

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177016478A KR102545025B1 (en) 2014-12-17 2015-12-16 Persistent viewports

Country Status (5)

Country Link
US (1) US10191890B2 (en)
EP (1) EP3234808B1 (en)
KR (1) KR102545025B1 (en)
CN (1) CN107111638B (en)
WO (1) WO2016100413A1 (en)

Families Citing this family (17)

* 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
US10126927B1 (en) * 2013-03-15 2018-11-13 Study Social, Inc. Collaborative, social online education and whiteboard techniques
US10409904B2 (en) * 2014-06-26 2019-09-10 D2L Corporation Methods and systems for providing an electronic form
US10997189B2 (en) 2015-03-23 2021-05-04 Dropbox, Inc. Processing conversation attachments in shared folder backed integrated workspaces
JP2018524661A (en) * 2015-05-06 2018-08-30 ハワース, インコーポレイテッドHaworth, Inc. Virtual workspace viewport follow mode in collaborative systems
WO2016183551A1 (en) 2015-05-14 2016-11-17 Walleye Software, LLC Query task processing based on memory allocation and performance criteria
US10776755B2 (en) 2016-12-29 2020-09-15 Dropbox, Inc. Creating projects in a content management system
US10970656B2 (en) 2016-12-29 2021-04-06 Dropbox, Inc. Automatically suggesting project affiliations
US10402786B2 (en) 2016-12-30 2019-09-03 Dropbox, Inc. Managing projects in a content management system
US10198469B1 (en) 2017-08-24 2019-02-05 Deephaven Data Labs Llc Computer data system data source refreshing using an update propagation graph having a merged join listener
US11126325B2 (en) * 2017-10-23 2021-09-21 Haworth, Inc. Virtual workspace including shared viewport markers in a collaboration system
US11226939B2 (en) * 2017-12-29 2022-01-18 Dropbox, Inc. Synchronizing changes within a collaborative content management system
US10929088B2 (en) * 2019-03-19 2021-02-23 Cisco Technology, Inc. Active area of interest tracking in a multiuser digital whiteboard session
US11042275B2 (en) 2019-04-08 2021-06-22 Microsoft Technology Licensing, Llc Calling attention to a section of shared data
US11205013B2 (en) 2019-10-22 2021-12-21 Microsoft Technology Licensing, Llc Controlling disclosure of identities in communication sessions
US11262886B2 (en) 2019-10-22 2022-03-01 Microsoft Technology Licensing, Llc Structured arrangements for tracking content items on a shared user interface
JP2023073154A (en) * 2021-11-15 2023-05-25 富士通株式会社 Display control method and display control program

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060166689A1 (en) 2005-01-24 2006-07-27 Catherine Phillips Apparatus, and associated method, for selectably delaying synchronization of database copies in a radio communication system
US20080168388A1 (en) 2007-01-05 2008-07-10 Apple Computer, Inc. Selecting and manipulating web content
US20110252339A1 (en) 2010-04-12 2011-10-13 Google Inc. Collaborative Cursors in a Hosted Word Processor
US20140244165A1 (en) 2013-02-28 2014-08-28 Research In Motion Limited Repositionable graphical current location indicator

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5867156A (en) 1995-11-08 1999-02-02 Intel Corporation Automatic viewport display synchronization during application sharing
US6182115B1 (en) * 1998-03-06 2001-01-30 International Business Machines Corp. Method and system for interactive sharing of text in a networked environment
US20030179230A1 (en) * 2002-03-25 2003-09-25 Gerry Seidman Method and apparatus for providing remote peer-to-peer collaborative user interfaces
US8832569B2 (en) * 2006-01-25 2014-09-09 International Business Machines Corporation Scrolling chat for participation in multiple instant messaging conversations
US7774703B2 (en) * 2006-02-09 2010-08-10 Microsoft Corporation Virtual shadow awareness for multi-user editors
US7761393B2 (en) * 2006-06-27 2010-07-20 Microsoft Corporation Creating and managing activity-centric workflow
US8015496B1 (en) 2007-10-26 2011-09-06 Sesh, Inc. System and method for facilitating visual social communication through co-browsing
US8555193B2 (en) 2008-01-17 2013-10-08 Google Inc. System for intelligent automated layout and management of interactive windows
US8381123B2 (en) * 2008-06-27 2013-02-19 Microsoft Corporation Positioning and realizing of virtualized visible content within a viewport
US8108779B1 (en) * 2008-12-16 2012-01-31 Adobe Systems Incorporated Collaborative editing operations
US8689095B2 (en) 2009-02-09 2014-04-01 Microsoft Corporation Grid presentation in web-based spreadsheet services
US20100257457A1 (en) * 2009-04-07 2010-10-07 De Goes John A Real-time content collaboration
US8527602B1 (en) * 2009-05-28 2013-09-03 Google Inc. Content upload system with preview and user demand based upload prioritization
US20110010640A1 (en) * 2009-07-10 2011-01-13 Novell, Inc. Intelligent co-browsing and co-editing
US8850353B2 (en) 2009-08-18 2014-09-30 Siemens Aktiengesellschaft Method and system for overlaying space-constrained display with a reference pattern during document scrolling operations
EP2558958B1 (en) 2010-04-12 2016-06-08 Google, Inc. Row heights in electronic documents
US8739021B2 (en) * 2010-11-04 2014-05-27 Microsoft Corporation Version history inside document
US20140055400A1 (en) * 2011-05-23 2014-02-27 Haworth, Inc. Digital workspace ergonomics apparatuses, methods and systems
US9274642B2 (en) 2011-10-20 2016-03-01 Microsoft Technology Licensing, Llc Acceleration-based interaction for multi-pointer indirect input devices
US9805377B2 (en) 2012-01-17 2017-10-31 ComScore. Inc. Unified content visibility
US9557878B2 (en) * 2012-04-25 2017-01-31 International Business Machines Corporation Permitting participant configurable view selection within a screen sharing session
US9046982B2 (en) * 2012-07-03 2015-06-02 International Business Machines Corporation Representing a graphical user interface using a topic tree structure
US20140136960A1 (en) 2012-11-13 2014-05-15 Microsoft Corporation Content-Aware Scrolling
US20140215352A1 (en) * 2013-01-29 2014-07-31 Stéphane Blecon System and method for pinnable chat message
US9063631B2 (en) 2013-03-15 2015-06-23 Chad Dustin TILLMAN System and method for cooperative sharing of resources of an environment
US10067927B2 (en) * 2013-06-14 2018-09-04 Microsoft Technology Licensing, Llc Updates to shared electronic documents in collaborative environments
US20150120834A1 (en) 2013-10-28 2015-04-30 Samsung Electronics Co., Ltd. Method and system for real time collaboration on a canvas
KR102208362B1 (en) * 2013-12-16 2021-01-28 삼성전자 주식회사 Method and apparatus for managing message of electronic device
CA2886485C (en) * 2014-03-31 2023-01-17 Smart Technologies Ulc Method for tracking displays during a collaboration session and interactive board employing same
US9983854B2 (en) * 2014-04-21 2018-05-29 LogMeln, Inc. Managing and synchronizing views in multi-user application with a canvas
US20150341399A1 (en) * 2014-05-23 2015-11-26 Samsung Electronics Co., Ltd. Server and method of providing collaboration services and user terminal for receiving collaboration services
US10277643B2 (en) * 2014-05-23 2019-04-30 Samsung Electronics Co., Ltd. Server and method of providing collaboration services and user terminal for receiving collaboration services
US10291664B2 (en) * 2014-05-30 2019-05-14 Brigham Young University Collaborative project modification
US10430432B2 (en) * 2014-06-12 2019-10-01 Brigham Young University Collaborative product lifecycle management
US10048841B2 (en) * 2014-06-13 2018-08-14 Brigham Young University Collaborative project management
US9841887B2 (en) * 2014-08-27 2017-12-12 Apple Inc. Anchoring viewport
US20160092420A1 (en) * 2014-09-25 2016-03-31 Osix Corporation Computer-Implemented Methods, Computer Readable Media, And Systems For Co-Editing Content
US10151600B2 (en) * 2014-11-25 2018-12-11 Google Llc Systems and methods for controlling viewport movement in view of user context

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060166689A1 (en) 2005-01-24 2006-07-27 Catherine Phillips Apparatus, and associated method, for selectably delaying synchronization of database copies in a radio communication system
US20080168388A1 (en) 2007-01-05 2008-07-10 Apple Computer, Inc. Selecting and manipulating web content
US20110252339A1 (en) 2010-04-12 2011-10-13 Google Inc. Collaborative Cursors in a Hosted Word Processor
US20140244165A1 (en) 2013-02-28 2014-08-28 Research In Motion Limited Repositionable graphical current location indicator

Also Published As

Publication number Publication date
US20160179754A1 (en) 2016-06-23
EP3234808A1 (en) 2017-10-25
KR20170098830A (en) 2017-08-30
WO2016100413A1 (en) 2016-06-23
CN107111638A (en) 2017-08-29
US10191890B2 (en) 2019-01-29
EP3234808B1 (en) 2022-05-25
CN107111638B (en) 2020-09-04

Similar Documents

Publication Publication Date Title
KR102545025B1 (en) Persistent viewports
US8959431B2 (en) Low resolution placeholder content for document navigation
EP2883164B1 (en) Generating scenes and tours from spreadsheet data
JP6293142B2 (en) Creating variations when converting data to consumer content
US20160092406A1 (en) Inferring Layout Intent
CN106663091B (en) Automatic summary data population
EP2807549B1 (en) Presenting data driven forms
US11526322B2 (en) Enhanced techniques for merging content from separate computing devices
US10839148B2 (en) Coordination of storyline content composed in multiple productivity applications
US11151307B2 (en) Mapping annotations to ranges of text across documents
US8909665B2 (en) Subsnippet handling in search results
AU2013201708A1 (en) Electronic device and method for inputting and managing user data
EP3341917B1 (en) Smart flip operation for grouped objects
US20160364090A1 (en) Transitioning command user interface between toolbar user interface and full menu user interface based on use context
US9971483B2 (en) Contextual-based real-time text layout conversion control and management on a mobile electronic device
KR20160054687A (en) Bookmark Management Method and System Using Messenger

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant