KR20210010567A - 네트워킹된 협업 워크스페이스에서 웹 소켓 연결을 통해 크로핑된 이미지를 전파하기 위한 방법, 기기, 및 컴퓨터 판독 가능 매체 - Google Patents

네트워킹된 협업 워크스페이스에서 웹 소켓 연결을 통해 크로핑된 이미지를 전파하기 위한 방법, 기기, 및 컴퓨터 판독 가능 매체 Download PDF

Info

Publication number
KR20210010567A
KR20210010567A KR1020207036369A KR20207036369A KR20210010567A KR 20210010567 A KR20210010567 A KR 20210010567A KR 1020207036369 A KR1020207036369 A KR 1020207036369A KR 20207036369 A KR20207036369 A KR 20207036369A KR 20210010567 A KR20210010567 A KR 20210010567A
Authority
KR
South Korea
Prior art keywords
computing device
local computing
transparent layer
workspace
command
Prior art date
Application number
KR1020207036369A
Other languages
English (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
Priority claimed from US15/983,747 external-priority patent/US11334220B2/en
Application filed by 리 마고 엘티디 filed Critical 리 마고 엘티디
Publication of KR20210010567A publication Critical patent/KR20210010567A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04845Interaction 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 for image manipulation, e.g. dragging, rotation, expansion or change of colour
    • 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/0486Drag-and-drop
    • 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/401Support for services or applications wherein the services involve a main real-time session and one or more additional parallel real-time or time sensitive sessions, e.g. white board sharing or spawning of a subconference
    • H04L65/4015Support for services or applications wherein the services involve a main real-time session and one or more additional parallel real-time or time sensitive sessions, e.g. white board sharing or spawning of a subconference where at least one of the additional parallel sessions is real time or time sensitive, e.g. white board sharing, collaboration or spawning of a subconference
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2203/00Indexing scheme relating to G06F3/00 - G06F3/048
    • G06F2203/048Indexing scheme relating to G06F3/048
    • G06F2203/04804Transparency, e.g. transparent or translucent windows

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • User Interface Of Digital Computer (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

네트워킹된 협업 워크스페이스(collaboration workspace) 내에서 웹 소켓(web socket) 연결을 통해 크로핑된(cropped) 이미지를 전파하는 시스템, 방법 및 컴퓨터 판독 가능 매체로서, 이미지를 포함하고 서버에서 호스팅되는 협업 워크스페이스의 리프리젠테이션(representation)을 전송하는 단계, 이미지의 이미지 영역을 선택하는, 좌표에 대응하는 사용자 입력을 검출하는 단계, 운영 체제 또는 애플리케이션과 인터페이싱하도록 구성된 API(application programming interface)를 포함하는, 투명 레이어(transparent layer)에게 좌표를 전송하는 단계, 좌표에 적어도 부분적으로 기반하여 이미지 영역을 캡처하는 단계, 선택된 이미지 영역을 하나의 위치로 드래그하기 위한 제2 사용자 입력을 검출하는 단계, 및 협업 워크스페이스로부터 이미지를 제거하고, 이미지 영역이, 상기 하나의 위치에 적어도 부분적으로 기반하여 협업 워크스페이스 내로 삽입되도록 하게끔 구성된, 복수의 커맨드를 서버로 전송하는 단계를 포함한다.

Description

네트워킹된 협업 워크스페이스에서 웹 소켓 연결을 통해 크로핑된 이미지를 전파하기 위한 방법, 기기, 및 컴퓨터 판독 가능 매체
본 발명은 네트워킹된 협업 워크스페이스에서 웹 소켓 연결을 통해 크로핑된 이미지를 전파하기 위한 방법, 기기, 및 컴퓨터 판독 가능 매체에 관한 것이다.
운영 체제 내에서 실행되는 운영 체제 및 애플리케이션은 외부 하드웨어 장치를 활용하여, 사용자가 프로그램에 입력을 제공하고 사용자에게 출력을 제공할 수 있게 한다. 외부 하드웨어 장치의 공통적인 예로는 키보드, 컴퓨터 마우스, 마이크, 및 외부 스피커가 있다. 이들 외부 하드웨어 장치는 드라이버의 사용을 통해, 운영 체제와 인터페이싱하며, 이는 특정 하드웨어 장치에 의해 사용되는 하드웨어 커맨드(Hardware Command)와 운영 체제 사이에서 인터페이싱(Interface)하도록 구성된 특화된 소프트웨어 프로그램이다.
애플리케이션은 때때로, 소정 하드웨어 장치와 인터페이싱하도록 설계될 것이다. 예를 들어, 음성-텍스트 워드 프로세싱 애플리케이션이 마이크를 포함하는 오디오 헤드셋과 인터페이싱하도록 설계될 수 있다. 이 경우에 있어서, 애플리케이션은 특별히, 음성 커맨드를 수신하도록, 음성 인식을 수행하도록, 인식된 단어를 텍스트 콘텐츠로 변환하도록, 그리고 텍스트 콘텐츠를 문서에 출력하도록 구성되어야 한다. 이 기능은 전형적으로, 다양한 소프트웨어 구성 요소들 사이의 정의된 통신 방법들의 세트인 애플리케이션의 애플리케이션 프로그래밍 인터페이스(Application Programming Interface, API)에서 구현될 것이다. 음성 인식 애플리케이션의 예에서, API는 하드웨어 장치(마이크) 자체와 인터페이싱하는 일을 담당하는 드라이버 상의 소프트웨어와 애플리케이션 프로그램 사이의 인터페이스를 포함한다.
특화된 하드웨어 장치를 활용하는 기존 소프트웨어가 갖는 한 가지 문제는, 애플리케이션 또는 운영 체제 소프트웨어 자체가 맞춰져야 하고, 특히, 하드웨어 장치를 활용하기 위해 설계되어야 한다는 것이다. 이러한 맞춤은, 하드웨어 장치가 애플리케이션에 의해 그에 대해 정의된 범주를 초과할 수 없고, 그것이 사용되도록 설계되었던 특정 애플리케이션 이외의 콘텍스트(Context)에 대해 활용될 수 없다는 것을 의미한다. 예를 들어, 음성-텍스트 프로세싱 애플리케이션의 사용자는, 다른 애플리케이션 프로그램 또는 운영 체제가 특별히, 마이크를 통해 수신된 음성 커맨드를 활용하도록 설계되지 않았다면, 다른 애플리케이션 프로그램 또는 운영 체제 내의 다른 구성 요소를 조작할 수 없다.
도 1은 사용자 입력을 위해 결합된 하드웨어 장치를 활용하는 시스템의 기존 아키텍처(Architecture)의 예를 도시한다. 도 1의 운영 체제(100A)는 애플리케이션(101A, 102A)을 실행시키는 것을 포함하며, 각각의 애플리케이션은 그들 자신의 API(101B) 및 API(102B)를 각각 갖는다. 운영 체제(100A)는 또한, 그 자신의 API(100B)뿐 아니라, 하드웨어 장치(100D, 101D, 102D)와 인터페이싱하도록 구성된 특화된 드라이버(100C, 101C, 102C)도 갖는다.
도 1에 도시된 바와 같이, 애플리케이션 API(101B)는, 자체가 하드웨어 장치(101D)와 인터페이싱하는 드라이버(101C)와 인터페이싱하도록 구성된다. 유사하게, 애플리케이션 API(102B)는, 자체가 하드웨어 장치(102D)와 인터페이싱하는 드라이버(102C)와 인터페이싱하도록 구성된다. 운영 체제 레벨에서, 운영 체제 API(100B)는, 자체가 하드웨어 장치(100D)와 인터페이싱하는 드라이버(100C)와 인터페이싱하도록 구성된다.
도 1에 도시된 시스템의 아키텍처는 소정 애플리케이션 또는 운영 체제 콘텍스트 이외의 하드웨어 장치를 활용하는 사용자의 능력을 제한한다. 예를 들어, 사용자는 애플리케이션(102A)에 입력을 제공하기 위해 하드웨어 장치(101D)를 활용할 수 없고, 애플리케이션(101A)에 또는 운영 체제(100A)에 입력을 제공하기 위해 하드웨어 장치(102D)를 활용할 수 없다.
따라서, 다수의 소프트웨어 콘텍스트에서 하드웨어 장치의 활용을 허용하는 하드웨어-소프트웨어 인터페이스에서 개선이 필요하다.
본 발명은 하드웨어 장치에 사용되는 이전 하드웨어-소프트웨어 인터페이스와 연관된 문제를 해결하는 방법, 기기, 및 컴퓨터 판독 가능 매체를 제공하는 것을 목적으로 한다. 구체적으로, 본 발명은 사용자가 다양한 소프트웨어 콘텍스트(Context)에서 통신 가능하게 결합된 하드웨어 장치를 활용할 수 있게 하는 범용 하드웨어-소프트웨어 인터페이스를 개발해 제공하는 것을 다른 목적으로 한다.
본 발명의 일 양태에 따르면, 네트워킹된 협업 워크스페이스(collaboration workspace) 내에서 웹 소켓(web socket) 연결을 통해 크로핑된(cropped) 이미지를 전파하는 방법에 있어서, 상기 방법은: 로컬 컴퓨팅 장치의 사용자 인터페이스 상에서, 웹 소켓 연결을 통해 복수의 컴퓨팅 장치 상의 복수의 참가자에게 접근 가능하고 서버에서 호스팅되는, 협업 워크스페이스(상기 협업 워크스페이스는 하나 이상의 이미지를 포함함)의 리프리젠테이션(representation)을 전송하는 단계; 상기 로컬 컴퓨팅 장치 상에서 실행되는 크로핑 도구에 의해, 상기 하나 이상의 이미지 내 하나의 이미지의 이미지 영역을 선택하는 사용자 입력(상기 사용자 입력은 복수의 좌표에 대응함)을 검출하는 단계; 상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 크로핑 도구에 의해, 상기 로컬 컴퓨팅 장치 상에서 실행되는 투명 레이어(transparent layer)(상기 투명 레이어는, 운영 체제 또는 상기 운영 체제 상에서 실행되도록 구성된 하나 이상의 애플리케이션 중 하나 이상과 인터페이싱하도록 구성된, API(application programming interface)를 포함함)에게 상기 복수의 좌표를 전송하는 단계; 상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 투명 레이어에 의해, 상기 복수의 좌표에 적어도 부분적으로 기반한 상기 이미지 영역을 캡처하는 단계; 상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 투명 레이어에 의해, 상기 선택된 이미지 영역을 상기 협업 워크스페이스 내 하나의 위치로 드래그하기 위한 제2 사용자 입력을 검출하는 단계; 및 상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 투명 레이어에 의해, 상기 협업 워크스페이스를 호스팅하는 상기 서버에게 복수의 커맨드(command)(상기 복수의 커맨드는, 상기 협업 워크스페이스로부터 상기 이미지를 제거하도록 구성되고, 이에 더해 상기 이미지 영역이, 상기 위치에 적어도 부분적으로 기반하여 상기 협업 워크스페이스 내로 삽입되도록 하게끔 구성됨)를 전송하는 단계를 포함한다.
본 발명에 따르면, 하드웨어 장치에 사용되는 이전 하드웨어-소프트웨어 인터페이스와 연관된 문제를 용이하게 해결할 수 있는 효과가 있다. 또한, 본 발명에 따르면, 사용자가 다양한 소프트웨어 콘텍스트에서 통신 가능하게 결합된 하드웨어 장치를 활용할 수 있게 하는 범용 하드웨어-소프트웨어 인터페이스를 용이하게 개발할 수 있는 다른 효과가 있다.
도 1은 사용자 입력을 위해 결합된 하드웨어 장치를 활용하는 시스템의 기존 아키텍처의 예를 도시한다.
도 2는 예시적인 실시예에 따른, 범용 하드웨어-소프트웨어 인터페이스를 활용하는 시스템의 아키텍처를 도시한다.
도 3은 예시적인 실시예에 따른, 범용 하드웨어-소프트웨어 인터페이스의 구현에 대한 흐름도를 도시한다.
도 4는 예시적인 실시예에 따른, 하나 이상의 하드웨어 장치에 의해 캡처된 정보가 하나 이상의 이미지를 포함할 때 시스템에 통신 가능하게 결합된 하나 이상의 하드웨어 장치에 의해 캡처된 정보에 적어도 부분적으로 기초하여 사용자 입력을 결정하기 위한 흐름도를 도시한다.
도 5a는 예시적인 실시예에 따른, 객체 인식의 예를 도시한다.
도 5b는 예시적인 실시예에 따른, 입력 위치 좌표를 결정하는 예를 도시한다.
도 6은 예시적인 실시예에 따른, 캡처된 정보가 소리 정보일 때 시스템에 통신 가능하게 결합된 하나 이상의 하드웨어 장치에 의해 캡처된 정보에 적어도 부분적으로 기초하여 사용자 입력을 결정하기 위한 흐름도를 도시한다.
도 7은 예시적인 실시예에 따른, 투명 레이어의 일부일 수 있는 툴 인터페이스(Tool Interface)를 도시한다.
도 8은 예시적인 실시예에 따른, 시스템의 일부일 수 있는 스타일러스(Stylus)의 예를 도시한다.
도 9는 예시적인 실시예에 따른, 사용자 입력에 대응하는 콘텍스트(Context)를 식별하기 위한 흐름도를 도시한다.
도 10은 예시적인 실시예에 따른, 입력 좌표를 사용하여 콘텍스트를 결정하는 예를 도시한다.
도 11은 예시적인 실시예에 따른, 사용자 입력을 투명 레이어 커맨드(Transparent Layer Command)로 변환하기 위한 흐름도를 도시한다.
도 12a는 예시적인 실시예에 따른, 선택 모드가 토글될(Toggled) 때 입력 좌표를 수신하는 예를 도시한다.
도 12b는 예시적인 실시예에 따른, 포인팅 모드가 토글될 때 입력 좌표를 수신하는 예를 도시한다.
도 12c는 예시적인 실시예에 따른, 드로잉(Drawing) 모드가 토글될 때 입력 좌표를 수신하는 예를 도시한다.
도 13은 예시적인 실시예에 따른, 입력 음성 데이터에서 식별된 하나 이상의 단어에 기초하여 결정된 투명 레이어 커맨드의 예를 도시한다.
도 14는 예시적인 실시예에 따른, 입력 음성 데이터에서 식별된 하나 이상의 단어에 기초하여 결정된 투명 레이어 커맨드의 다른 예를 도시한다.
도 15는 예시적인 실시예에 따른, 투명 레이어 상에서 하나 이상의 투명 레이어 커맨드를 실행하기 위한 흐름도를 도시한다.
도 16은 예시적인 실시예에 따른, 사용자 입력에 대응하는 새로운 커맨드를 추가하기 위한 예시적인 인터페이스를 도시한다.
도 17은 예시적인 실시예에 따른, 드로잉 인터페이스 및 그리기(Draw) 모드의 다양한 구성 요소 및 옵션을 도시한다.
도 18은 예시적인 실시예에 따른, 객체를 인식하는 데 사용되고 사용자가 터치 및 제스처를 사용하여 입력을 제공할 수 있게 하는 비디오 카메라 하드웨어 장치에 대한 캘리브레이션(Calibration) 및 설정 인터페이스를 도시한다.
도 19는 예시적인 실시예에 따른, 사용자가 인터페이스의 다양한 양태를 맞출 수 있게 하고, 입력 모드를 토글하고, 다른 변화를 이루는 일반 설정 인터페이스를 도시한다.
도 20은 예시적인 실시예에 따른, 네트워킹된 협업 워크스페이스(collaboration workspace) 내에서 웹 소켓(web socket) 연결을 통해 크로핑된(cropped) 이미지를 전파하기 위한 흐름도를 도시한다.
도 21a는 예시적인 실시예에 따른, 협업 워크스페이스를 호스팅 및 전송하는 데 사용되는 네트워크 아키텍처를 도시한다.
도 21b는 예시적인 실시예에 따른, 편집을 네트워크 내의 협업 워크스페이스로 전파하기 위한 프로세스를 도시한다.
도 22는 예시적인 실시예에 따른, 협업 워크스페이스의 다수의 리프리젠테이션을 도시한다.
도 23a 내지 도 23c는 예시적인 실시예에 따른, 크로핑 입력 검출의 예시를 도시한다.
도 24는 예시적인 실시예에 따른, 투명 레이어에게 좌표를 전송하고 이미지 영역을 캡처하는 프로세스의 흐름을 도시한다.
도 25는 예시적인 실시예에 따른, 이미지 영역을 협업 워크스페이스 내의 위치로 드래그하는 사용자의 예를 도시한다.
도 26은 예시적인 실시예에 따른, 서버에서 호스팅되는 협업 워크스페이스에게 복수의 커맨드를 전송하는 흐름도를 도시한다.
도 27a 및 도 27b는 예시적인 실시예에 따른, 서버에서 호스팅되는 협업 워크스페이스에게 두 개의 상이한 콘텍스트(context)에 대한 복수의 커맨드를 전송하는 흐름도를 도시한다.
도 28a 내지 도 28c는 예시적인 실시예에 따른, 협업 워크스페이스의 편집 인터페이스로 이미지 영역을 드래그하는 사용자의 예시 및 편집 인터페이스로 이미지 영역을 드래그한 결과를 도시한다.
도 29a 내지 29e는 예시적인 실시예에 따른, 협업 워크스페이스의 툴바 인터페이스로 이미지 영역을 드래그하는 사용자의 예시 및 툴바 인터페이스로 이미지 영역을 드래그한 결과를 도시한다.
도 30은 개시된 방법을 실행하도록 구성된 예시적인 컴퓨팅 환경을 도시한다.
방법, 기기, 및 컴퓨터 판독 가능 매체가 본 명세서에서 예 및 실시예로서 기술되어 있지만, 당업자는 범용 하드웨어-소프트웨어 인터페이스의 구현을 위한 방법, 기기, 및 컴퓨터 판독 가능 매체가 기술된 실시예 또는 도면으로 제한되지 않음을 인식한다. 도면 및 설명은 개시된 특정 형태로 제한되도록 의도되지 않는다는 것이 이해되어야 한다. 오히려, 그 의도는 첨부된 청구범위의 사상 및 범주 내에 있는 모든 수정물, 등가물, 및 대안물을 포괄하는 것이다. 본 명세서에서 사용되는 임의의 주제는 구조적 목적만을 위한 것이고, 설명 또는 청구범위의 범주를 제한하도록 의도되지 않는다. 본 명세서에서 사용되는 바와 같이, "할 수 있다(Can)"라는 단어는 강제의 의미(즉, 필연(Must)을 의미함)보다는 허용의 의미(즉, 잠재력을 가짐을 의미함)에서 사용된다. 유사하게, "포함하다(Include, Includes)", "포함하는(Including)"이라는 단어는 포함하지만, 이에 제한되지 않음을 의미한다.
출원인은 하드웨어 장치에 사용되는 이전 하드웨어-소프트웨어 인터페이스와 연관된 문제를 해결하는 방법, 기기, 및 컴퓨터 판독 가능 매체를 발견했다. 구체적으로, 출원인은 사용자가 다양한 소프트웨어 콘텍스트(Context)에서 통신 가능하게 결합된 하드웨어 장치를 활용할 수 있게 하는 범용 하드웨어-소프트웨어 인터페이스를 개발했다. 개시된 구현예는, 아래에서 더 상세히 기술되는 바와 같이, 특화된 가상 드라이버 및 대응하는 투명 레이어의 사용을 통해 애플리케이션 또는 운영 체제가 특정 하드웨어 장치와 인터페이싱하도록 맞춤 설계될 필요성을 제거한다.
도 2는 예시적인 실시예에 따른, 범용 하드웨어-소프트웨어 인터페이스를 활용하는 시스템의 아키텍처를 도시한다. 도 2에 도시된 바와 같이, 운영 체제(200A)는 가상 드라이버(204)와 통신하는 투명 레이어(203)을 포함한다. 아래에서 더 상세히 설명되는 바와 같이, 투명 레이어(203)는 가상 드라이버와 운영 체제 및/또는 운영 체제 상에서 실행되는 애플리케이션(들) 사이에서 인터페이싱하도록 구성된 API이다. 이 예에서, 투명 레이어(203)는 가상 드라이버(204)와 애플리케이션(201A)의 API(201B), 애플리케이션(202A)의 API(202B), 및 운영 체제(200A)의 운영 체제 API(200B) 사이에서 인터페이싱한다.
투명 레이어(203)는 운영 체제 상에서 실행되는 소프트웨어 프로세스의 일부일 수 있고, 기초 사용자 인터페이스 상에 중첩되는 투명 UI 및/또는 사용자가 상호작용할 수 있는 가시적 UI 요소를 비롯한 그 자신의 사용자 인터페이스(UI) 요소를 가질 수 있다.
가상 드라이버(204)는 드라이버(205A, 205B)를 에뮬레이팅(Emulate)하도록 구성되는데, 이들은 하드웨어 장치(206A, 206B)와 각각 인터페이싱한다. 가상 드라이버는, 예를 들어 음성 커맨드, 사용자 인터페이스 상에서 행해진 선택, 및/또는 결합된 웹 카메라의 정면에서 사용자에 의해 행해진 제스처의 형태로 어느 가상 드라이버를 에뮬레이팅할 것에 대해 가상 드라이버에 지시하는 사용자 입력을 수신할 수 있다. 예를 들어, 연결된 하드웨어 장치 각각은 "리스닝" 모드에서 동작할 수 있고, 가상 드라이버(204) 내의 에뮬레이팅된 드라이버 각각은 특정 에뮬레이션 모드로 스위칭하기 위한 가상 드라이버로의 신호로서의 역할을 하는 초기화 신호를 검출하도록 구성될 수 있다. 예를 들어, 사용자가 "음성 커맨드 시작(Start Voice Commands)"이라고 진술하는 것은 마이크에 대응하는 드라이버를 활성화시켜서 새로운 음성 커맨드를 수신하게 할 수 있다. 유사하게, 사용자가 소정 제스처를 제공하는 것은 웹 카메라에 대응하는 드라이버를 활성화시켜서 제스처 입력 또는 터치 입력을 수신하게 할 수 있다.
가상 드라이버는 또한, 자체가 하드웨어 장치(206C)와 통신하는 네이티브 드라이버(Native Driver), 예컨대 네이티브 드라이버(205C)와 인터페이싱하도록 구성될 수 있다. 일례에서, 하드웨어 장치(206C)는 운영 체제에 의해 본래 지원되는 표준 입력 장치, 예컨대 키보드 또는 마우스일 수 있다.
도 2에 도시된 시스템은, 애플리케이션 또는 운영 체제가 하드웨어 장치와 인터페이싱하도록 맞춰질 필요 없이, 사용자가 특정 애플리케이션 또는 운영 체제와 같은 다양한 콘텍스트 내의 임의의 결합된 하드웨어 장치를 활용할 수 있는 범용 하드웨어-소프트웨어 인터페이스의 구현을 허용한다.
예를 들어, 하드웨어 장치(206A)는 정보를 캡처할 수 있는데, 정보는 그 다음에, 드라이버(205A)를 에뮬레이팅하는 가상 드라이버(204)에 의해 수신된다. 가상 드라이버(204)는 캡처된 정보에 기초하여 사용자 입력을 결정할 수 있다. 예를 들어, 정보가, 사용자가 그의 손을 움직이는 일련의 이미지인 경우, 가상 드라이버는 사용자가 제스처를 수행했다고 결정할 수 있다.
식별된 콘텍스트(예컨대, 특정 애플리케이션 또는 운영 체제)에 기초하여, 사용자는 투명 레이어 커맨드로 변환될 수 있고, 실행을 위해 투명 레이어(203)로 전송될 수 있다. 투명 레이어 커맨드는 식별된 콘텍스트 내의 네이티브 커맨드를 포함할 수 있다. 예를 들어, 식별된 콘텍스트가 애플리케이션(201A)인 경우, 네이티브 커맨드는 애플리케이션(201A)의 애플리케이션 API(201B)와 호환가능한 포맷일 것이다. 투명 레이어 커맨드의 실행은 그 다음에, 식별된 콘텍스트 내의 하나 이상의 네이티브 커맨드의 실행을 야기하도록 구성될 수 있다. 이는 투명 레이어(203)가 운영 체제(200A)뿐 아니라 운영 체제 API(200B) 상에서 실행되는 애플리케이션의 API 각각과 인터페이싱하는 것에 의해 달성된다. 예를 들어, 네이티브 커맨드가 새로운 프로그램을 실행시키기 위한 커맨드와 같은 운영 체제 커맨드인 경우, 투명 레이어(203)는 실행을 위해 그 네이티브 커맨드를 운영 체제 API(200B)에 제공할 수 있다.
도 2에 도시된 바와 같이, 도시된 모든 구성 요소들 사이에는 양방향 통신이 존재한다. 이는, 예를 들어, 투명 레이어(203)에서의 투명 레이어 커맨드의 실행이 가상 드라이버(204)로의 그리고 연결된 하드웨어 장치들 중 하나 상으로의 정보 전송을 초래할 수 있다는 것을 의미한다. 예를 들어, 음성 커맨드가 입력으로서 인식되고, 네이티브 커맨드를 포함하는 투명 레이어 커맨드로 변환되고, 투명 레이어에 의해 실행된 후(식별된 콘텍스트 내의 네이티브 커맨드의 실행을 초래함), 투명 레이어로부터 스피커로 (가상 드라이버를 통해) 신호가 전송되어, 소리 출력 "커맨드 수신(Command Received)"을 전송하게 할 수 있다.
물론, 도 2에 도시된 아키텍처는 설명만을 위한 것이며, 실행되는 애플리케이션의 개수, 연결된 하드웨어 장치의 개수 및 유형, 드라이버의 개수, 및 에뮬레이팅된 드라이버는 변할 수 있다는 것이 이해된다.
도 3은 예시적인 실시예에 따른, 범용 하드웨어-소프트웨어 인터페이스의 구현에 대한 흐름도를 도시한다.
단계(301)에서, 사용자 입력은 시스템에 통신 가능하게 결합된 하나 이상의 하드웨어 장치에 의해 캡처된 정보에 적어도 부분적으로 기초하여 결정된다. 시스템은, 본 명세서에서 사용되는 바와 같이, 방법의 단계를 실행하는 하나 이상의 컴퓨팅 장치, 방법의 단계를 실행하는 하나 이상의 프로세서 및 하나 이상의 메모리를 포함하는 기기, 또는 임의의 다른 컴퓨팅 시스템을 지칭할 수 있다.
사용자 입력은 시스템 상에서 실행되는 가상 드라이버에 의해 결정될 수 있다. 앞서 논의된 바와 같이, 가상 드라이버는, 그것이 다른 하드웨어 드라이버를 에뮬레이팅하고 있고, 그에 의해, 하드웨어 장치로부터 캡처된 정보를 수신하고 있는 에뮬레이션 모드에서 동작하는 중일 수 있고, 또는 특정 하드웨어 장치와 인터페이싱하도록 구성된 하나 이상의 다른 하드웨어 드라이버로부터 캡처된 정보를 선택적으로 수신할 수 있다.
카메라, 비디오 카메라, 마이크, 양방향 통신을 갖는 헤드셋, 마우스, 터치 패드, 트랙볼, 제어기, 게임 패드, 조이스틱, 터치 스크린, 가속도계 및/또는 기울기 센서를 포함하는 모션 캡처 장치, 리모트(Remote), 스타일러스(Stylus), 또는 이들 장치의 임의의 조합과 같은 다양한 하드웨어 장치가 활용될 수 있다. 물론, 이러한 하드웨어 장치 목록은 예로서만 제공되며, 음성, 이미지, 비디오, 또는 터치 정보를 검출하는 데 활용될 수 있는 임의의 하드웨어 장치가 활용될 수 있다.
하드웨어 장치와 시스템 사이의 통신 결합은 다양한 형태를 취할 수 있다. 예를 들어, 하드웨어 장치는 무선 네트워크, 블루투스 프로토콜, 무선 주파수, 적외선 신호를 통해, 그리고/또는 USB(Universal Serial Bus) 연결과 같은 물리적 연결에 의해 시스템과 통신할 수 있다. 통신은 또한 무선 및 유선 통신 둘 다를 포함할 수 있다. 예를 들어, 하드웨어 장치는 2개의 구성 요소를 포함할 수 있는데, 그 중 하나는, 자체가 유선 접속(예컨대, USB)을 통해 시스템에 연결되는 제2 구성 요소에 신호를 무선으로(예컨대, 블루투스를 통해) 전송한다. 본 명세서에 기술된 시스템에 따라 다양한 통신 기법이 활용될 수 있고, 이들 예는 제한하는 것으로 의도되지 않는다.
하나 이상의 하드웨어 장치에 의해 캡처된 정보는, 임의의 유형의 정보, 예컨대 하나 이상의 이미지를 포함하는 이미지 정보, 비디오의 프레임, 소리 정보, 및/또는 터치 정보일 수 있다. 캡처된 정보는 임의의 적합한 포맷, 예컨대 소리 정보에 대한 wav 파일 또는 mp3 파일, 이미지에 대한 jpeg 파일, 터치 정보에 대한 수치 좌표 등일 수 있다.
본 명세서에 기술된 기법은, 디스플레이 장치가 터치 신호 또는 터치 기반 제스처를 검출하기 위한 어떠한 하드웨어도 포함하지 않는다 하더라도, 임의의 디스플레이 장치가 임의의 콘텍스트에서 사실상 "터치" 스크린 장치로서 기능할 수 있게 한다. 이는 아래에서 더 상세히 기술되며, 카메라 또는 비디오 카메라에 의해 캡처된 이미지의 분석을 통해 달성될 수 있다.
도 4는 하나 이상의 하드웨어 장치에 의해 캡처된 정보가 하나 이상의 이미지를 포함할 때 시스템에 통신 가능하게 결합된 하나 이상의 하드웨어 장치에 의해 캡처된 정보에 적어도 부분적으로 기초하여 사용자 입력을 결정하기 위한 흐름도를 도시한다.
단계(401)에서, 하나 이상의 이미지가 수신된다. 이들 이미지는, 앞서 논의된 바와 같이, 카메라 또는 비디오 카메라와 같은 하드웨어 장치에 의해 캡처될 수 있고, 가상 드라이버에 의해 수신될 수 있다.
단계(402)에서, 하나 이상의 이미지 내의 객체가 인식된다. 객체는, 예를 들어, 손, 손가락, 또는 사용자의 다른 신체 부위일 수 있다. 객체는 또한, 스타일러스 또는 펜과 같은 특수 목적 장치, 또는 시스템에 통신 가능하게 결합되고 가속도계 및/또는 기울기 센서를 포함하는 모션 추적 스타일러스/리모트와 같은 특수 목적 하드웨어 장치일 수 있다. 객체 인식은 조기 트레이닝에 기초하여, 예컨대 객체를 사용한 캘리브레이션 루틴 실행(Calibration Routine Run)을 통해, 가상 드라이버에 의해 수행될 수 있다.
도 5a는 예시적인 실시예에 따른, 객체 인식의 예를 도시한다. 도 5a에 도시된 바와 같이, 이미지(501)는 객체(502)로서 인식되었던 사용자의 손을 포함한다. 인식 알고리즘은, 물론, 손가락과 같은 상이한 객체를 인식하도록 구성될 수 있다.
도 4로 되돌아가면, 단계(403)에서, 인식된 객체의 하나 이상의 배향 및 하나 이상의 위치가 결정된다. 이는 다양한 방식으로 달성될 수 있다. 객체가 하드웨어 장치가 아니고 그 대신 손 또는 손가락과 같은 신체 부위인 경우, 객체는 기준 포인트로서 카메라의 밝혀진 위치를 사용하여 3차원 좌표계에서 맵핑되어, 객체의 3차원 좌표 및 X, Y, 및 Z 축에 대한 다양한 각도를 결정하게 할 수 있다. 객체가 하드웨어 장치이고 가속도계 및/또는 기울기 센서와 같은 모션 추적 하드웨어를 포함하는 경우, 이미지 정보는 가속도계 및/또는 기울기 센서에 의해 나타내진 정보와 함께 사용되어, 객체의 위치 및 배향을 결정하게 할 수 있다.
단계(404)에서, 사용자 입력은 인식된 객체의 하나 이상의 배향 및 하나 이상의 위치에 적어도 부분적으로 기초하여 결정된다. 이는 하나 이상의 배향 및 하나 이상의 위치에 적어도 부분적으로 기초하여 투명 레이어의 투명 사용자 인터페이스(UI) 상의 위치 좌표를 결정하는 것을 포함할 수 있다. 투명 UI는 투명 레이어의 일부이고, 운영 체제 및/또는 운영 체제 상에서 실행되는 임의의 애플리케이션에 대응하는 기초 UI 상에 중첩된다.
도 5b는 객체가 사용자의 손가락일 때 이러한 단계의 예를 도시한다. 도 5b에 도시된 바와 같이, 디스플레이 장치(503)는 기초 UI(506) 및 기초 UI(506) 위에 중첩된 투명 UI(507)를 포함한다. 명료성을 위해, 투명 UI(507)는 도트 음영을 갖는 것으로 도시되어 있지만, 실제로, 투명 UI는 사용자에게 가시적이지 않은 투명 레이어라는 것이 이해된다 추가로, 투명 UI(507)는 기초 UI(506)보다 약간 작은 것으로 도시되어 있지만, 실제로, 투명 UI는 기초 UI와 동일한 스크린 영역을 커버할 것이라는 것이 이해된다.
도 5b에 도시된 바와 같이, 객체(사용자의 손가락)의 위치 및 배향 정보는 디스플레이 장치(503)의 평면 상에 라인을 투영하고 교차 포인트(505)를 결정하는 데 사용된다. 카메라(504)에 의해 캡처된 이미지 정보 및 카메라 아래의 디스플레이 장치(503)의 밝혀진 위치는 이러한 투영을 돕는 데 사용될 수 있다. 도 5b에 도시된 바와 같이, 사용자 입력은 교차 포인트(505)에서의 입력 좌표인 것으로 결정된다.
아래에서 추가로 논의되는 바와 같이, 이러한 입력에 기초하여 생성되는 실제 투명 레이어 커맨드는 사용자 설정 및/또는 식별된 콘텍스트에 기초할 수 있다. 예를 들어, 커맨드는 포인트(505)의 좌표에 있는 객체가 선택되고/되거나 열려야 함을 나타내는 터치 커맨드일 수 있다. 커맨드는 또한, 포인터(예컨대, 마우스 포인터)가 포인트(505)의 좌표로 이동되어야 함을 나타내는 포인팅 커맨드일 수 있다. 추가로, 커맨드는 (예컨대, 인터페이스를 어노테이팅(Annotate)하거나 소정 요소를 그리기 위해) 그 위치에서의 그래픽 출력을 수정하는 편집 커맨드일 수 있다.
도 5b가 인식된 객체(502)를 디스플레이 장치(503)로부터의 일부 거리에 있는 것으로 도시하고 있지만, 터치 입력은 거리와는 무관하게 검출될 수 있다. 예를 들어, 사용자가 디스플레이 장치(503)를 물리적으로 터치하였다면, 위에 기술된 기법은 여전히 입력 좌표를 결정할 것이다. 그 경우에 있어서, 객체(502)와 교차 포인트 사이의 투영 라인(Projection Line)은 단지 더 짧을 것이다.
물론, 터치 입력은 캡처된 이미지로부터 결정될 수 있는 유일한 유형의 사용자 입력이 아니다. 인식된 객체의 하나 이상의 배향 및 하나 이상의 위치에 적어도 부분적으로 기초하여 사용자 입력을 결정하는 단계는 제스처 입력을 결정하는 것을 포함할 수 있다. 구체적으로, 다수의 이미지에 걸쳐서 인식된 객체의 위치 및 배향은 대응하는 제스처, 예컨대 스와이프(Swipe) 제스처, 핀치(Pinch) 제스처, 및/또는 임의의 밝혀진 또는 맞춰진 제스처를 결정하도록 분석될 수 있다. 사용자는 특정 콘텍스트 및 그들 콘텍스트 내의 커맨드에 맵핑되는 맞춤 제스처를 인식하도록 가상 드라이버를 캘리브레이션할 수 있다. 예를 들어, 사용자는, 운영 체제 콘텍스트에 맵핑되고, 특정 애플리케이션을 실행시키는 네이티브 운영 체제 커맨드의 실행을 초래하는 맞춤 제스처를 생성할 수 있다.
앞서 논의된 바와 같이, 도 3의 단계(301)에서 하나 이상의 하드웨어 장치에 의해 캡처된 정보는 또한, 마이크에 의해 캡처된 소리 정보를 포함할 수 있다. 도 6은 캡처된 정보가 소리 정보일 때 시스템에 통신 가능하게 결합된 하나 이상의 하드웨어 장치에 의해 캡처된 정보에 적어도 부분적으로 기초하여 사용자 입력을 결정하기 위한 흐름도를 도시한다. 아래에서 논의되는 바와 같이, 사용자 입력에 대응하는 하나 이상의 단어를 식별하기 위해 소리 정보에 대해 음성 인식이 수행된다.
단계(601)에서, 소리 데이터가 수신된다. 소리 데이터는, 위에서 논의된 바와 같이, 마이크와 같은 하드웨어 장치에 의해 캡처될 수 있고, 가상 드라이버에 의해 수신될 수 있다. 단계(602)에서, 수신된 소리 데이터는 소리 사전과 비교될 수 있다. 소리 사전은 커맨드 단어 또는 커맨드 수식어와 같은 하나 이상의 인식된 단어의 소리 시그니처(Sound Signature)를 포함할 수 있다. 단계(603)에서, 소리 데이터 내의 하나 이상의 단어는 비교에 기초하여 사용자 입력으로서 식별된다. 식별된 하나 이상의 단어는 그 다음에, 투명 레이어 커맨드로 변환될 수 있고, 투명 레이어로 전달될 수 있다.
앞서 논의된 바와 같이, 가상 드라이버에 의해 에뮬레이팅된 드라이버, 사용자 입력의 예상 유형, 및 사용자 입력에 기초하여 생성된 커맨드는 모두, 하나 이상의 설정 또는 이전 사용자 입력에 적어도 부분적으로 기초하여 결정될 수 있다.
도 7은, 또한 투명 레이어의 일부일 수 있는 툴 인터페이스(701)를 도시한다. 투명 UI와 달리, 툴 인터페이스(701)는 사용자에게 가시적이며, 가상 드라이버의 에뮬레이션 모드를 변경하는 상이한 옵션들 사이에서, 사용자 입력에 기초하여 생성된 네이티브 커맨드를 선택하거나 추가 기능을 수행하는 데 사용될 수 있다.
버튼(701A)은, 사용자 입력이 입력 좌표(예컨대, 사용자가 그의 손 또는 스타일러스/리모트로 스크리닝(Screening)을 터치하는 것에 기초한 좌표)일 때 사용자가 사용자 인터페이스를 그래픽으로 수정하는 데 사용되는 드로잉 툴(Drawing Tool)의 유형을 선택할 수 있게 한다. 다양한 드로잉 툴은 상이한 브러시, 컬러, 펜, 하이라이터 등을 포함할 수 있다. 이들 툴은 스타일, 두께, 컬러 등을 변화시키는 그래픽 변경을 초래할 수 있다.
버튼(701B)은 입력 좌표가 사용자 입력으로서 수신될 때 사용자가 선택, 포인팅, 또는 드로잉 모드들 사이에서 스위칭할 수 있게 한다. 선택 모드에서, 입력 좌표는 "터치"로서 처리될 수 있고, 입력 좌표에 있는 객체의 선택 또는 열림을 초래할 수 있다. 포인팅 모드에서, 좌표는 포인터(예컨대, 마우스 포인터) 위치로서 처리되어, 사실상, 사용자가 마우스를 에뮬레이팅할 수 있게 할 수 있다. 드로잉 모드에서, 좌표는 사용자 인터페이스 상에서 드로잉 또는 기록의 모습을 프리젠트(Present)하기 위해 사용자 인터페이스의 그래픽 출력을 변경할 위치로서 처리될 수 있다. 변경의 본질은, 버튼(701A)을 참조하여 논의된 바와 같이, 선택된 드로잉 툴에 의존할 수 있다. 버튼(701B)은 또한, 가상 드라이버에 변경하여, (모션 추적 장치가 사용되는 경우에) 이미지 입력 및/또는 모션 입력을 예상하고, 그에 따라, 적절한 드라이버를 에뮬레이팅하게 할 수 있다.
버튼(701C)은 가상 드라이버에 변경하여, 음성 커맨드를 예상하게 할 수 있다. 이는, 도 6에 대해 기술된 바와 같이, 가상 드라이버가 결합된 마이크에 대응하는 드라이버를 에뮬레이팅하여, 음성 입력을 수신하고 음성 입력을 파싱(Parse)하게 할 수 있다.
버튼(701D)은, 투명 레이어의 일부일 수 있고, 운영 체제 내의 애플리케이션을 실행시키거나 애플리케이션 내의 특정 커맨드를 실행시키는 데 사용될 수 있는 런처(Launcher) 애플리케이션을 연다. 런처는 또한, 투명 레이어 내의 옵션들, 예컨대 사용자 입력과 연관된 애플리케이션에 대한 맞춤 음성 커맨드, 맞춤 제스처, 맞춤 네이티브 커맨드를 맞춤화하고/하거나 하드웨어 장치 및 사용자 입력(예컨대, 음성 캘리브레이션, 모션 캡처 장치 캘리브레이션, 및/또는 객체 인식 캘리브레이션)을 캘리브레이션하는 데 사용될 수 있다.
버튼(701E)은, 사용자 인터페이스의 스크린샷을 캡처하고 스크린샷을 이미지로서 익스포트(Export)하는 데 사용될 수 있다. 이는 버튼(701B)의 드로잉 모드 및 드로잉 툴(701A)과 함께 사용될 수 있다. 사용자가 특정 사용자 인터페이스를 마크업(Mark Up)한 후, 마크업된 버전이 이미지로서 익스포트될 수 있다.
버튼(701F)은 또한 그래픽 편집을 허용하며, 사용자가 사용자 인터페이스 상에서 생성하고 있는 드로잉의 컬러 또는 드로잉의 양태를 변화시키는 데 사용될 수 있다. 버튼(701B)의 그리기(Draw) 모드와 유사하게, 이 버튼은 입력 좌표에 있는 그래픽 변경의 본질을 변경한다.
버튼(701G)은 사용자 인터페이스 상에서 드로잉을 취소한다. 이 버튼의 선택은 사용자 인터페이스 상의 모든 그래픽 마킹을 제거할 수 있으며, 기초 UI를, 사용자가 드로잉을 생성하기 전에 그것이 있던 상태로 리셋할 수 있다.
버튼(701H)은 사용자가 가상 화이트보드 상에서 그리기 모드를 사용하여 드로잉을 생성하거나 기록할 수 있게 하는 화이트보드 애플리케이션을 실행시키는 데 사용될 수 있다.
버튼(701I)은 운영 체제 UI 또는 애플리케이션 UI에 보여진 객체와 같은 객체에 텍스트 노트를 추가하는 데 사용될 수 있다. 텍스트 노트는 음성 신호로부터 해석되거나 키보드를 사용하여 사용자에 의해 타이핑될 수 있다.
버튼(701J)은 툴 인터페이스(701)를 열거나 닫는 데 사용될 수 있다. 닫힐 때, 툴 인터페이스는 최소화되거나 기초 사용자 인터페이스로부터 전적으로 제거될 수 있다.
앞서 논의된 바와 같이, 스타일러스 또는 리모트 하드웨어 장치는 카메라 또는 비디오 카메라와 같은 다른 하드웨어 장치와 함께 본 시스템에 사용될 수 있다. 도 8은 시스템에 사용될 수 있는 스타일러스(801)의 예를 도시한다. 스타일러스(801)는, 예컨대 블루투스를 통해, 하드웨어 수신기(802)와 통신할 수 있다. 하드웨어 수신기는, 예컨대 USB(802B)를 통해, 컴퓨터 시스템과 연결될 수 있고, 스타일러스로부터 하드웨어 수신기를 통해 컴퓨터 시스템에 전달된 신호는 메뉴(803)를 제어하고 그와 상호작용하는 데 사용될 수 있는데, 이 메뉴는 도 7에 도시된 툴 인터페이스와 유사하다.
도 8에 도시된 바와 같이, 스타일러스(801)는 물리적 버튼(801A)을 포함할 수 있다. 이들 물리적 버튼(801)은, 스타일러스에 전력을 공급하고, 메뉴(803)를 내비게이팅(Navigate)하고, 선택을 행하는 데 사용될 수 있다. 추가로, 스타일러스(801)는 카메라에 의해 이미지에서 캡처되고 가상 드라이버에 의해 인식되는 독특한 팁(801B)을 포함할 수 있다. 이는 그리기 모드에 있을 때 스타일러스(801)가 드로잉 및 편집에 사용될 수 있게 할 수 있다. 스타일러스(801)는 또한, 스타일러스가 입력 좌표 또는 제스처를 제공하는 데 사용될 때 위치 검출을 돕기 위해 가속도계 및/또는 기울기 센서와 같은 모션 추적 하드웨어를 포함할 수 있다. 추가로, 하드웨어 수신기(802)는 캘리브레이션 버튼(802A)을 포함할 수 있는데, 이 버튼은 눌릴 때, 사용자 인터페이스 내의 캘리브레이션 유틸리티를 개시할 수 있다. 이는 스타일러스의 캘리브레이션을 허용한다.
도 3을 다시 참조하면, 단계(302)에서, 사용자 입력에 대응하는 콘텍스트가 식별된다. 식별된 콘텍스트는 운영 체제 또는 운영 체제 상에서 실행되는 애플리케이션 중 하나를 포함한다.
도 9는 예시적인 실시예에 따른, 사용자 입력에 대응하는 콘텍스트를 식별하기 위한 흐름도를 도시한다. 도 9에 도시된 바와 같이, 운영 체제 데이터(901), 애플리케이션 데이터(902), 및 사용자 입력 데이터(903)는 모두, 콘텍스트(904)를 결정하는 데 사용될 수 있다.
운영 체제 데이터(901)는, 예를 들어 운영 체제 내의 활성 윈도우에 관한 정보를 포함할 수 있다. 예를 들어, 활성 윈도우가 계산기 윈도우인 경우, 콘텍스트는 계산기 애플리케이션인 것으로 결정될 수 있다. 유사하게, 활성 윈도우가 마이크로소프트 워드(Microsoft Word) 윈도우인 경우, 콘텍스트는 마이크로소프트 워드 애플리케이션인 것으로 결정될 수 있다. 한편, 활성 윈도우가 파일 폴더인 경우, 활성 콘텍스트는 운영 체제인 것으로 결정될 수 있다. 운영 체제 데이터는 또한, 현재 실행 중인 애플리케이션, 마지막으로 개시된 애플리케이션, 및 콘텍스트를 결정하는 데 사용될 수 있는 임의의 다른 운영 체제 정보와 같은 추가 정보를 포함할 수 있다.
애플리케이션 데이터(902)는, 예를 들어, 실행 중인 하나 이상의 애플리케이션에 관한 정보 및/또는 특정 애플리케이션을 소정 유형의 사용자 입력에 맵핑시키는 정보를 포함할 수 있다. 예를 들어, 제1 애플리케이션은 음성 입력에 맵핑되어, 음성 커맨드가 수신될 때마다 콘텍스트가 제1 애플리케이션인 것으로 자동으로 결정되게 할 수 있다. 다른 예에서, 특정 제스처가 제2 애플리케이션과 연관되어, 그 제스처가 입력으로서 수신될 때, 제2 애플리케이션이 개시되거나 닫히고, 또는 제2 애플리케이션 내의 일부 동작이 수행된다.
사용자 입력(903)은 또한, 다양한 방식으로 콘텍스트를 결정하는 데 사용될 수 있다. 위에서 논의된 바와 같이, 소정 유형의 사용자 입력이 소정 애플리케이션에 맵핑될 수 있다. 위 예에서, 음성 입력은 제1 애플리케이션의 콘텍스트와 연관된다. 추가로, 사용자 입력의 특질은 또한, 콘텍스트를 결정하는 데 사용될 수 있다. 제스처 또는 모션이 애플리케이션에 또는 운영 체제에 맵핑될 수 있다. 음성 커맨드 내의 특정 단어가 또한, 애플리케이션에 또는 운영 체제에 맵핑될 수 있다. 입력 좌표가 또한, 콘텍스트를 결정하는 데 사용될 수 있다. 예를 들어, 입력 좌표의 위치에 있는 사용자 인터페이스 내의 윈도우가 결정될 수 있고, 그 윈도우에 대응하는 애플리케이션이 콘텍스트로서 결정될 수 있다.
도 10은 입력 좌표를 사용하여 콘텍스트를 결정하는 예를 도시한다. 도 10에 도시된 바와 같이, 디스플레이 장치(1001)는 사용자 인터페이스(1002)를 디스플레이하고 있다. 또한, 카메라(1004)가 도시되고, 투명 레이어(1003)이 기초 사용자 인터페이스(1003) 위에 중첩된다. 사용자는 사용자 인터페이스(1002) 내의 위치(1005)를 포인팅하는 데 스타일러스(1000)를 활용한다. 위치(1005)가 애플리케이션 1에 대응하는 애플리케이션 윈도우 내에 놓여 있으므로, 애플리케이션 1은 애플리케이션 2, 애플리케이션 3, 또는 운영 체제와는 반대로 사용자 입력에 대한 콘텍스트인 것으로 결정될 수 있다.
도 3을 다시 참조하면, 단계(303)에서, 사용자 입력은 식별된 콘텍스트에 적어도 부분적으로 기초하여 하나 이상의 투명 레이어 커맨드로 변환된다. 앞서 논의된 바와 같이, 투명 레이어는 가상 드라이버와 운영 체제 및/또는 운영 체제 상에서 실행되는 애플리케이션 사이에서 인터페이싱하도록 구성된 애플리케이션 프로그램 인터페이스(API)를 포함한다.
도 11은 사용자 입력을 투명 레이어 커맨드로 변환하기 위한 흐름도를 도시한다. 도 11의 단계(1104)에 도시된 바와 같이, 투명 레이어 커맨드는 식별된 콘텍스트(1102) 및 사용자 입력(1103)에 적어도 부분적으로 기초하여 결정될 수 있다. 투명 레이어 커맨드는 하나 이상의 대응하는 콘텍스트에서 실행하도록 구성된 하나 이상의 네이티브 커맨드를 포함할 수 있다. 투명 레이어 커맨드는 또한, 가상 드라이버로 그리고 하드웨어 장치(들) 상으로 전송될 응답 출력을 포함할 수 있다.
식별된 콘텍스트(1102)는 어느 투명 레이어 커맨드가 사용자 입력에 맵핑되어야 하는지를 결정하는 데 사용될 수 있다. 예를 들어, 식별된 콘텍스트가 "운영 체제"인 경우, (하나의 열린 윈도우를 최소화하고 다음에 열리는 윈도우를 최대화함으로써) 사용자 인터페이스가 운영 체제 내의 현재 열린 윈도우를 관통하여 스크롤하는 결과를 초래하는 투명 레이어 커맨드에 맵핑될 수 있다. 대안적으로, 식별된 콘텍스트가 "웹 브라우저 애플리케이션"인 경우, 웹 페이지가 스크롤되는 결과를 초래하는 투명 레이어 커맨드에 동일한 스와이프 제스처가 맵핑될 수 있다.
사용자 입력(1103)은 또한 투명 레이어 커맨드를 결정하는데, 이는 사용자 입력이 특히 하나 이상의 콘텍스트 내의 소정 네이티브 커맨드에 맵핑되고 이들 네이티브 커맨드가 투명 레이어 커맨드의 일부이기 때문이다. 예를 들어, 음성 커맨드 "이메일을 열어라(Open email)"는 이메일 애플리케이션 아웃룩(Outlook)을 실행시키라는 특정 운영 체제 네이티브 커맨드에 맵핑될 수 있다. 인식된 단어 "이메일을 열어라"를 포함하는 음성 입력이 수신될 때, 이는 아웃룩을 실행시키라는 네이티브 커맨드를 포함하는 투명 레이어 커맨드가 결정되는 결과를 초래한다.
도 11에 도시된 바와 같이, 투명 레이어 커맨드는 또한, 하나 이상의 사용자 설정(1101) 및 API 라이브러리(1104)에 기초하여 결정될 수 있다. API 라이브러리(1104)는 식별된 콘텍스트 및 특정 사용자 입력에 대응하는 네이티브 커맨드를 룩업하는 데 사용될 수 있다. 스와이프 제스처 및 웹 브라우저 애플리케이션 콘텍스트의 예에서, 웹 브라우저 애플리케이션에 대응하는 API 라이브러리는 적적한 API가 웹 페이지의 스크롤링을 야기할 것을 질의받을 수 있다. 대안적으로, API 라이브러리(1104)는 생략될 수 있으며, 특정 사용자 입력 및 식별된 콘텍스트로 지향되는 네이티브 커맨드가 맵핑될 수 있다.
사용자 입력이 입력 좌표인 것으로 결정되는 상황에서, 투명 레이어 커맨드는 입력 위치 좌표 및 식별된 콘텍스트에 적어도 부분적으로 기초하여 결정된다. 이 경우에 있어서, 투명 레이어 커맨드는 식별된 콘텍스트 내의 적어도 하나의 네이티브 커맨드를 포함할 수 있으며, 이때 적어도 하나의 네이티브 커맨드는 기초 UI 내의 대응하는 위치 좌표에서 일정 동작을 수행하도록 구성된다.
특정 콘텍스트 및 사용자 입력에 맵핑되는 하나 초과의 가능한 동작이 있을 때, 설정(1101)은 대응하는 투명 레이어 커맨드를 결정하는 데 사용될 수 있다. 예를 들어, 도 7의 버튼(701B)은, 입력 좌표가 사용자 입력으로서 수신될 때, 사용자가 선택, 포인팅, 또는 그리기 모드들 사이에서 선택할 수 있게 한다. 이러한 설정은 투명 레이어 커맨드를 결정하기 위해, 그리고 더 나아가, 어느 네이티브 커맨드가 수행되고 어느 동작이 수행되는지를 결정하기 위해 사용될 수 있다. 이 경우에 있어서, 가능한 네이티브 커맨드는 기초 UI 내의 대응하는 위치 좌표와 연관된 객체를 선택하도록 구성된 선택 커맨드, 포인터를 기초 UI 내의 대응하는 위치 좌표로 이동시키도록 구성된 포인터 커맨드, 및 기초 UI 내의 대응하는 위치 좌표에서 디스플레이 출력을 변경하도록 구성된 그래픽 커맨드를 포함할 수 있다.
도 12a는 선택 모드가 토글될(Toggled) 때 입력 좌표를 수신하는 예를 도시한다. 도 12a에 도시된 바와 같이, 사용자는 디스플레이 장치(1201) 상의 (중첩되는 투명 UI(1203)를 갖는) 운영 체제 UI(1202)에서 스타일러스(1200)를 지시했다. 앞서 예와 유사하게, 카메라(1204)는 스타일러스(1200)에 대한 위치 및 배향 정보, 및 입력 좌표를 결정하는 데 사용될 수 있다. 선택 모드가 토글되고 스타일러스(1200)가 운영 체제 UI(12102) 내의 폴더(1205)로 지시되므로, 결정된 투명 레이어 커맨드는 입력 좌표와 연관된 객체를, 이 경우에는 폴더(1205)를 선택하라는 네이티브 운영 체제 커맨드를 포함할 수 있다. 다른 예에서, 윈도우가 입력 좌표에 위치되었다면, 이는 전체 윈도우의 선택을 초래할 것이다.
도 12b는 포인팅 모드가 토글될 때 입력 좌표를 수신하는 예를 도시한다. 이 경우에 있어서, 결정된 투명 레이어 커맨드는 마우스 포인터(1206)를 입력 좌표의 위치로 이동시키라는 네이티브 운영 체제 커맨드를 포함할 수 있다.
도 12c는, 드로잉 모드가 토글되고 사용자가 다수의 입력 좌표 위에서 스타일러스(1200)를 스와이프했을 때, 입력 좌표를 수신하는 예를 도시한다. 이 경우에 있어서, 결정된 투명 레이어 커맨드는 입력 좌표 각각의 위치에 있는 디스플레이 출력을 변경하라는 네이티브 운영 체제 커맨드를 포함하여, 사용자가 사용자 인터페이스(1202) 상에 라인(1207)을 그리는 결과를 초래할 수 있다. 드로잉 모드에서 생성된 수정된 그래픽 출력은 투명 레이어(1203)의 일부로서, 예를 들어 입력 좌표의 경로와 관련된 메타데이터로서 저장될 수 있다. 사용자는 그 다음에, 변경된 디스플레이 출력을 이미지로서 익스포트하는 옵션을 선택할 수 있다.
사용자 입력이 제스처로서 식별되는 상황에서, 식별된 콘텍스트에 적어도 부분적으로 기초하여 사용자 입력을 하나 이상의 투명 레이어 커맨드로 변환하는 것은 식별된 제스처 및 식별된 콘텍스트에 적어도 부분적으로 기초하여 투명 레이어 커맨드를 결정하는 것을 포함할 수 있다. 투명 레이어 커맨드는 식별된 콘텍스트 내의 적어도 하나의 네이티브 커맨드를 포함할 수 있으며, 이때 적어도 하나의 네이티브 커맨드는 식별된 콘텍스트 내의 식별된 제스처와 연관된 동작을 수행하도록 구성된다. 이것의 예가 네이티브 커맨드가 웹 브라우저에서 스크롤 동작을 수행하도록 구성되는 결과를 초래하는 웹 브라우저 애플리케이션 콘텍스트 및 스와이프 제스처에 대해 위에서 논의되어 있다.
사용자 입력이 (예컨대, 음성 인식을 사용함으로써) 하나 이상의 단어로서 식별되는 상황에서, 식별된 것에 적어도 부분적으로 기초하여 사용자 입력을 하나 이상의 투명 레이어 커맨드로 변환하는 것은 식별된 하나 이상의 단어 및 식별된 콘텍스트에 적어도 부분적으로 기초하여 투명 레이어 커맨드를 결정하는 것을 포함할 수 있다. 투명 레이어 커맨드는 식별된 콘텍스트 내의 적어도 하나의 네이티브 커맨드를 포함할 수 있으며, 이때 적어도 하나의 네이티브 커맨드는 식별된 콘텍스트 내의 식별된 하나 이상의 단어와 연관된 동작을 수행하도록 구성된다.
도 13은 입력 음성 데이터에서 식별된 하나 이상의 단어에 기초하여 결정된 투명 레이어 커맨드(1300)의 예를 도시한다. 식별된 단어(1301)는 어구 "화이트보드" 또는 "빈 페이지" 중 하나를 포함한다. 투명 레이어 커맨드(1300)는 또한, 커맨드의 설명(1302), 및 투명 레이어 커맨드의 실행 시에 투명 레이어에 의해 가상 드라이버로 그리고 하드웨어 출력 장치로 전송된 출력 인스트럭션인 응답 인스트럭션(1303)을 포함한다. 추가로, 투명 레이어 커맨드(1300)는 화이트보드 기능을 호출하는 데 사용되는 실제 네이티브 커맨드(1304)를 포함한다.
도 14는 예시적인 실시예에 따른, 입력 음성 데이터에서 식별된 하나 이상의 단어에 기초하여 결정된 투명 레이어 커맨드(1400)의 다른 예를 도시한다. 이 예에서, 하나 이상의 단어는 "이메일을 열어라"이다. 도 14에 도시된 바와 같이, 투명 레이어 커맨드(1400)는 아웃룩 애플리케이션을 실행시키는 특정 실행 가능 파일을 실행시키는 인스트럭션인 네이티브 커맨드 "outlook.exe"를 포함한다. 투명 레이어 커맨드(1400)는 또한, 음성 커맨드를 수신한 것에 응답하여 출력될 음성 응답 "이메일 열림(Email Opened)"을 포함한다.
도 3을 다시 참조하면, 단계(304)에서, 하나 이상의 투명 레이어 커맨드는 투명 레이어 상에서 실행된다. 하나 이상의 투명 레이어 커맨드의 실행은 식별된 콘텍스트 내의 하나 이상의 네이티브 커맨드의 실행을 야기하도록 구성된다.
도 15는 예시적인 실시예에 따른, 투명 레이어 상에서 하나 이상의 투명 레이어 커맨드를 실행하기 위한 흐름도를 도시한다. 단계(1501)에서, 투명 레이어 커맨드 내의 적어도 하나의 네이티브 커맨드가 식별된다. 네이티브 커맨드는, 예를 들어, 투명 레이어 커맨드의 구조 내의 네이티브 커맨드로서 지정되어, 식별을 허용하게 할 수 있다.
단계(1502)에서, 적어도 하나의 네이티브 커맨드는 식별된 콘텍스트에서 실행된다. 이 단계는 식별된 콘텍스에 대해 식별된 API를 통해 적어도 하나의 네이티브 커맨드를 그 식별된 콘텍스트로 전달하는 것, 및 식별된 콘텍스트 내의 네이티브 커맨드를 실행하는 것을 포함할 수 있다. 예를 들어, 식별된 콘텍스트가 운영 체제인 경우, 네이티브 커맨드는 운영 체제 API를 통해 실행을 위한 운영 체제로 전달될 수 있다. 추가로, 식별된 콘텍스트가 애플리케이션인 경우, 네이티브 커맨드는 애플리케이션 API를 통해 실행을 위한 애플리케이션으로 전달될 수 있다.
선택적으로, 단계(1503)에서, 응답이 하드웨어 장치(들)로 전송될 수 있다. 앞서 논의된 바와 같이, 이러한 응답은 투명 레이어로부터 가상 드라이버로 그리고 하드웨어 장치 상으로 라우팅(Route)될 수 있다.
도 16 내지 도 19는 본 명세서에 개시된 시스템의 추가 특징을 도시한다. 도 16은 예시적인 실시예에 따른, 사용자 입력에 대응하는 새로운 커맨드를 추가하기 위한 예시적인 인터페이스를 도시한다. 인터페이스(1600) 내의 대시보드는, 이미 추가되었고 사전결정된 사용자 입력 및 하드웨어 장치(예컨대, 음성 커맨드)를 사용하여 개시될 수 있는 애플리케이션(1601)의 아이콘을 포함한다. 대시보드는 또한, 애플리케이션 특정적이고 소정 사용자 입력에 맵핑되는 다른 커맨드를 보여줄 수 있다. 추가 버튼(1602)의 선택은 추가 커맨드 메뉴(1603)를 연다. 이러한 메뉴는 사용자가 다음 옵션들 사이에서 선택할 수 있게 한다: 항목 유형: 하부 바 메뉴 상에 추가할 고정 항목/드래그 메뉴에 추가할 일반 항목; 아이콘: 이미지 아이콘을 선택한다; 배경: 배경 아이콘 컬러를 선택한다; 컬러: 아이콘 컬러를 선택한다; 이름: 새로운 항목 이름을 설정한다; 음성 커맨드: 새로운 애플리케이션을 열라는 음성 활성화 커맨드를 설정한다; 피드백 응답: 애플리케이션 음성 응답 피드백을 설정한다; 커맨드: 애플리케이션 유형 또는 맞춤 커맨드 유형을 선택하여 개시한다(예컨대, 애플리케이션 커맨드를 개시한다, 애플리케이션 커맨드 내의 동작을 수행한다, 애플리케이션 커맨드를 닫는다 등); 프로세스 시작: 새로운 프로세스 또는 애플리케이션을 실행시키는 경우, 프로세스 또는 애플리케이션의 이름; 및 파라미터: 새로운 프로세스 또는 애플리케이션으로 전달할 임의의 파라미터이다.
도 17은 예시적인 실시예에 따른, 드로잉 인터페이스(1700) 및 그리기 모드의 다양한 구성 요소 및 옵션을 도시한다. 도 18은 객체를 인식하는 데 사용되고 사용자가 터치 및 제스처를 사용하여 입력을 제공할 수 있게 하는 비디오 카메라 하드웨어 장치에 대한 캘리브레이션 및 설정 인터페이스(1800)를 도시한다. 도 19는 사용자가 인터페이스의 다양한 양태를 맞출 수 있게 하고, 입력 모드를 토글하고, 다른 변화를 이루는 일반 설정 인터페이스(1900)를 도시한다. 인터페이스(100)에서 보여지는 바와 같이, 사용자는 또한, 설정 페이지에 접근하여 하드웨어 스타일러스("매직 스타일러스(Magic Stylus)"로 지칭됨)에 대한 설정을 캘리브레이션 및 조정할 수 있다.
본 명세서에 개시된 시스템은 다수의 네트워킹된 컴퓨팅 장치 상에서 구현될 수 있고, 네트워킹된 협업 세션을 이행하는 데 있어서 도움을 주는 데 사용될 수 있다. 예를 들어, 앞서 기술된 화이트보드 기능은 다수의 컴퓨팅 장치 상의 다수의 사용자 사이의 공유된 화이트보드일 수 있다.
화이트보드 및 협업 공간은 종종 토론 또는 특정 회의의 주제가 되는 이미지를 포함한다. 많은 경우에, 협업 워크스페이스 내에서 이미지를 편집하고 상호 작용하는 것이 필요하다. 예를 들어, 그래픽 디자인 팀은 특정 디자인을 편집하고 동료에게 수정을 제안하기를 원할 수 있다. 현재, 기존 화이트보드 또는 기타 공유 작업 공간의 문제점 중 하나는, 협업 워크스페이스에서 이미지를 즉시 클립(clip), 편집 또는 수정할 수 있는 방법, 즉, 변경 사항이 실시간으로 협업 워크스페이스의 다른 참가자에게 자동으로 전파되도록 적용되는 방식이 존재하지 않는다는 것이다. 예를 들어, 사용자가 이미지를 다른 애플리케이션으로 가져와서 편집 및 수정한 다음 협업 프로그램으로 다시 가져와야 하므로, 이미지를 변경하고 클립하는 프로세스가 어렵다. 이러한 프로세스는, 특정 사용자가 편집 프로그램으로 이미지를 내보내고 필요한 편집을 수행한 다음 이미지를 다시 가져오는 데 시간이 걸리게 되는 등, 편집을 수행하는 회의 내의 생산성 손실을 초래한다. 또한, 다수의 사용자가 이러한 유형의 작업을 수행하는 데 익숙하지 않거나 능숙하지 않다. 이에 더해, 이미지를 내보내고 다시 가져오는 과정은, 이미지를 내보내고 가져오는 데 필요한 리소스, 내보낸 이미지를 저장하는 데 필요한 리소스, 편집 소프트웨어를 시작하고 사용하는 데 필요한 리소스, 편집된 리소스를 저장하기 위해 필요한 리소스와 같은 컴퓨팅 리소스를 낭비하게 된다. 이것은 협업 세션 자체에 사용될 수 있는 연산 리소스(computational resource)에 추가되어, 로컬 컴퓨팅 장치에 부담을 준다.
범용 하드웨어-소프트웨어 인터페이스를 구현하기 위한 전술된 방법 및 시스템에 추가하여, 본 출원인은 네트워킹된 협업 워크스페이스 내에서 웹 소켓 연결을 통해 크로핑된 이미지를 전파할 수 있는 방법, 기기 및 컴퓨터 판독 가능 매체를 추가로 발견하였다.
도 20은 예시적인 실시예에 따른, 네트워킹된 협업 워크스페이스 내에서 웹 소켓 연결을 통해 크로핑된 이미지를 전파하기 위한 흐름도를 도시한다. 도 20에 도시된 모든 단계는, 서버에 연결된 클라이언트 장치와 같은 로컬 컴퓨팅 장치에서 수행될 수 있으며, 복수의 컴퓨팅 장치가 필요하지 않다.
단계(2001)에서는, 로컬 컴퓨팅 장치의 사용자 인터페이스 상에서, 웹 소켓 연결을 통해 복수의 컴퓨팅 장치 상의 복수의 참가자에게 접근 가능하고 서버에서 호스팅되는 협업 워크스페이스의 리프리젠테이션이 전송된다. 협업 워크스페이스의 리프리젠테이션은 협업 세션에서 논의되거나 활용되는 이미지와 같은, 하나 이상의 이미지를 포함할 수 있다.
도 21a는 예시적인 실시예에 따른, 협업 워크스페이스를 호스팅하고 전송하는 데 사용되는 네트워크 아키텍처(network architecture)를 도시한다. 도 21a에 도시된 바와 같이, 서버(2100)는 컴퓨팅 장치(2101A~2101F)에 연결된다. 서버(2100) 및 컴퓨팅 장치(2101A~2101F)는, 컴퓨팅 장치(2101A~2101F)(클라이언트) 와 서버(2100) 간의 양방향 통신을 허용하는 웹 소켓 연결과 같은 네트워크 연결을 통해 연결될 수 있다. 도 21a에 도시된 바와 같이, 컴퓨팅 장치는 노트북, 데스크탑, 스마트폰 또는 기타 모바일 장치 등의 임의의 유형의 컴퓨팅 장치일 수 있다.
협업 워크스페이스는, 예를 들어, 웹 소켓 연결을 통해 복수의 참가자 중 임의의 참가자로부터 다른 참가자로 임의의 편집을 전파하도록 구성된 디지털 화이트보드일 수 있다. 도 21b는 예시적인 실시예에 따른, 편집을 네트워크 내의 협업 워크스페이스로 전파하기 위한 프로세스를 도시한다. 도 21b에 도시된 바와 같이, 컴퓨팅 장치(2101B)에서의 사용자가 협업 워크스페이스에 대한 편집 또는 변경을 수행하는 경우, 이러한 편집 또는 변경(2102B)은 서버(2100)로 전송되며, 이는 여기서 워크스페이스의 호스팅된 버전을 업데이트하는 데 사용된다. 이후, 편집 또는 변경은, 업데이트(2102A, 2102C, 2102D, 2102E, 2102F)로서 서버(2100)에 의해 다른 연결된 컴퓨팅 장치(2101A, 2101C, 2101D, 2101E, 2101F)로 전파된다.
협업 워크스페이스의 각각의 리프리젠테이션은 로컬 참가자에 맞춰진 협업 워크스페이스 버전일 수 있다. 예를 들어, 전술된 바와 같이, 협업 워크스페이스의 각각의 리프리젠테이션은, 서버에 연결된 하나 이상의 원격 컴퓨팅 장치에 대응하는 하나 이상의 원격 참가자 객체를 포함할 수 있다.
도 22는 일 실시예에 따른 협업 워크스페이스의 복수의 리프리젠테이션을 도시한다. 도 22에 도시된 바와 같이, 서버(2200)은 이미지(2202)를 포함하는 협업 워크스페이스(2201)을 호스팅한다. 서버에서 호스팅되는 협업 워크스페이스의 버전은, 전술된 바와 같이, 연결된 장치로 전파된다. 또한, 도 22는 세 명의 연결된 사용자(사용자 1, 사용자 2, 사용자 3)을 위한 협업 워크스페이스의 리프리젠테이션을 도시한다. 도시된 바와 같이, 각각의 리프리젠테이션은 협업 워크스페이스 내의 모든 객체와 편집물을 포함한다. 예를 들어, 리프리젠테이션(2201A, 2201B, 2201C) 모두는 이미지(2202)의 리프리젠테이션을 포함한다.
도 20으로 돌아가면, 단계(2002)에서, 로컬 컴퓨팅 장치 상에서 실행되는 크로핑 도구는, 협업 워크스페이스에 나타나는 하나 이상의 이미지 중 하나의 이미지 영역을 선택하는 사용자 입력을 검출하며, 상기 사용자 입력은 복수의 좌표에 대응한다.
도 23a내지 도 23c는 일 실시예에 따른, 이러한 검출 프로세스의 예를 도시한다. 도 23a에 도시된 바와 같이, 사용자 인터페이스(2301)는, 이미지(2306)를 포함하는, 협업 워크스페이스(2302)의 리프리젠테이션을 포함한다. 사용자 인터페이스(2301)는, 협업 워크스페이스를 호스팅하는 서버에 연결된 로컬 컴퓨팅 장치의 사용자 인터페이스에 대응할 수 있다.
또한, 사용자 인터페이스(2301)는 크로핑 도구 인터페이스(2303)를 포함한다. 도시된 바와 같이, 크로핑 도구 인터페이스(2303)는 복수의 상이한 선택 가능한 크로핑 도구에 대응하는 인디케이터(indicator) 또는 아이콘을 디스플레이할 수 있다. 선택 가능한 크로핑 도구 인터페이스에는, 예를 들어, 정사각형, 원, 직사각형 따옴표 상자, 타원형 따옴표 상자, 수동 자유형 크로핑 도구(가위 아이콘으로 표시됨) 또는 수동형 크로핑 도구(연필 및 눈금자 아이콘으로 표시됨)와 같은, 특정 크로핑 형태에 대응하는 크로핑 도구가 포함될 수 있다. 물론, 여러 상이한 크로핑 형태가 사용될 수 있으며, 상기 예시는 이를 제한하려는 의도가 아니다.
크로핑 도구 인터페이스(2303)는 협업 워크스페이스 인터페이스(2302)의 리프리젠테이션과는 별개의 인터페이스로서 도시되지만, 크로핑 도구 인터페이스가 협업 워크스페이스 리프리젠테이션 내에 통합될 수 있으므로, 각 사용자의 협업 워크스페이스의 리프리젠테이션은 크로핑 도구에 대한 인터페이스를 포함한다는 것으로 이해되어야 한다. 이와 유사하게, 크로핑 도구는 협업 워크스페이스에 대응하는 프로그램(및 인터넷 브라우저, 워드 프로세싱 프로그램, 그래픽 편집 프로그램 등과 같은 추가 프로그램)을 인터페이싱하도록 구성된 별개의 프로그램일 수 있지만, 협업 워크스페이스 프로그램의 모듈 또는 구성 요소로서의 크로핑 도구도 구현될 수 있다.
도 23b는, 사용자에 의한, 크로핑 도구 인터페이스(2303)에서의 특정 크로핑 형태의 선택을 도시한다. 도면에 도시된 바와 같이, 사용자는 크로핑 모양으로 원형 형태(2304)를 선택했다. 도면에 마우스 포인터로 표시된 것처럼, 마우스와 같은 포인팅 장치를 사용하여 선택할 수 있다. 전술된 것처럼, 손 제스처나 스타일러스(stylus)를 사용하여 선택할 수도 있다. 가상 드라이버 및/또는 투명 레이어와 관련된, 전술된 기술을 사용하여 선택을 검출할 수 있다.
도 23c는 사용자가 원형 크로핑 형태(2304)를 선택한 후 및, 크로핑 영역을 선택한 후의 사용자 인터페이스(2301)를 도시한다. 사용자는, 예를 들어, 크로핑 형태를 인터페이스(2301) 내의 특정 위치로 드래그 앤 드롭하여, 크로핑하기 위한 영역을 선택할 수 있다. 또한, 크로핑 형태를 선택하면, 사용자가 인터페이스(2301) 내의 특정 위치로 이동 또는 드래그 앤 드롭할 수 있는, 선택된 형태의 크로핑 영역 윤곽이 나타날 수 있다. 사용자는 마우스를 사용하여 드래그 앤 드롭할 수 있다. 전술된 것처럼, 사용자는 손 제스처 또는 스타일러스를 사용하여 드래그 앤 드롭할 수도 있다. 가상 드라이버 및/또는 투명 레이어와 관련된, 전술된 기술을 사용하여 드래그 앤 드롭 동작을 검출할 수 있다.
도 23c에 도시된 바와 같이, 사용자는 크로핑 도구의 원형 크로핑 형태를 사용하여 이미지(2306) 내에서 원형 영역(2305)을 선택했다. 전술된 바와 같이, 상기 선택은 포인팅 장치로부터의 사용자 입력을 사용하여 이루어질 수 있다. 선택이 이루어지면, 크로핑 도구는 크로핑 선택에 대응하는 입력 및 복수의 좌표를 검출한다. 이러한 좌표는, 사용자 인터페이스(2301)의 수평(X) 및 수직(Y) 축을 사용하여 정의될 수 있다. 추가적으로, 복수의 좌표는 선택된 크로핑 영역에 대응할 것이다. 도 23c에 도시된 예에서, 복수의 좌표는 원형에 대응한다. 좌표 자체는 로컬 컴퓨팅 장치의 운영 체제에서 크로핑 도구로 검색할 수 있다. 예를 들어, 크로핑 도구 애플리케이션(또는 크로핑 도구가 협업 워크스페이스 애플리케이션의 일부인 경우, 협업 워크스페이스 애플리케이션)은 API를 통해 운영 체제에 쿼리하여 점선 원(2305)의 각 지점에 대응하는 좌표를 요청할 수 있다. 대안적으로, 크로핑 도구는 선택이 이루어질 때의 포인터의 위치에 기반하여 복수의 좌표를 결정하기 위한 기능을 포함할 수 있다. 예를 들어, 크로핑 형태가 원이고, 선택이 이루어질 때 포인팅 장치의 위치가 원의 중심에 대응하는 경우, 크로핑 애플리케이션은 원 중심의 스크린 좌표를 결정하여(예를 들면, 운영 체제에 포인터 위치를 쿼리하여), 이러한 중심 좌표를 사용해 크로핑 형태에 대응하는 복수의 좌표를 계산할 수 있다. 이러한 경우, 계산은 원의 반경을 사용하여 360도 중심점에서 바깥쪽으로 동일한 길이의 선을 투영하고, 각 선의 결과로서 생기는 끝점을 복수의 좌표로 기록할 수 있다.
도 20으로 돌아가면, 단계(2003)에서, 투명 레이어에게, 크로핑된 이미지 영역의 경계선에 대응하는 복수의 좌표를 전송하는, 로컬 컴퓨팅 장치 상에서 실행되는 크로핑 도구가 상기에서 논의되었다. 전술된 바와 같이, 투명 레이어는 로컬 컴퓨팅 장치 상에서 실행되며, 운영 체제 또는 상기 운영 체제 상에서 실행되도록 구성된 하나 이상의 애플리케이션 중 하나 이상과 인터페이싱하도록 구성된 API를 포함한다. 이러한 경우, 투명 레이어는 크로핑 도구 애플리케이션과 인터페이싱하도록 구성된다. 그러나, 크로핑 도구가 협업 워크스페이스 애플리케이션의 일부일 경우, 로컬 컴퓨팅 장치에서 실행되는 협업 워크스페이스 애플리케이션의 로컬 인스턴스(local instance)도 투명 레이어에게 복수의 좌표를 전송할 수 있다.
단계(2004)에서, 로컬 컴퓨팅 장치에서 실행되는 투명 레이어는, 수신된 복수의 좌표에 적어도 부분적으로 기반하여 이미지 영역을 캡처한다. 단계(2004)는 로컬 컴퓨팅 장치에서 실행되는 투명 레이어에 의하여, 복수의 좌표에 의해 정의된 이미지 영역의 스크린 캡처를 위해 로컬 컴퓨팅 장치에서 실행되는 운영 체제 또는 애플리케이션 중 하나 이상으로 요청을 전송하는 단계, 로컬 컴퓨팅 장치에서 실행되는 투명 레이어에 의해, 복수의 좌표에 의하여 정의된 이미지 영역의 스크린 캡처를 수신하는 단계, 및 로컬 컴퓨팅 장치에서 실행되는 투명 레이어에 의해, 로컬 컴퓨팅 장치의 RAM(랜덤 액세스 메모리, random access memory)과 같은 메모리 내에 이미지 영역을 저장하는 단계를 포함할 수 있다. 물론, 단계(2004)는 다른 방식으로 수행될 수 있다. 예를 들어, 단계(2004)는, 로컬 컴퓨팅 장치에서 실행되는 투명 레이어에 의해, 전체 스크린의 스크린 캡처를 위하여, 로컬 컴퓨팅 장치에서 실행되는 운영 체제 또는 애플리케이션 중 하나 이상으로 요청을 전송(예를 들어, "스크린 인쇄"커맨드를 운영 체제에 전송)하여, 투명 레이어의 일부인 기능을 사용해 복수의 좌표에 적어도 부분적으로 기반한 스크린 캡처에서 이미지 영역을 추출하고, 이후 상기 이미지 영역을 로컬 컴퓨팅 장치의 RAM과 같은 메모리 내에 저장함으로써 수행될 수 있다.
도 24는 도 20의 단계(2003, 2004)에 대한 프로세스 흐름의 예를 도시한다. 도면에 도시된 바와 같이, 사용자는 사용자 인터페이스(2400)내의 협업 워크스페이스(2401) 내에 디스플레이되는 이미지(2406) 내의 경계(2402)에 의해 정의된 이미지 영역을 캡처했다. 크로핑 도구 인터페이스는 단순화를 위해 이 도면에 표시되지 않았지만, 크로핑 도구 인터페이스도 디스플레이된 사용자 인터페이스(2400)가 될 수 있다는 사실이 이해될 것이다. 크로핑 도구 애플리케이션(2403)은 크로핑 경계의 좌표(경계(2402)에 대응함)를 검출하고, 투명 레이어(2404)에 이러한 좌표를 전송한다. 이후, 투명 레이어(2404)는 복수의 좌표를 사용하여 크로핑된 이미지 영역을 캡처하고, 이의 결과인 이미지 영역을 저장소(2405)(예를 들어, RAM) 내에 저장한다.
도 20으로 돌아가면, 단계(2005)에서, 로컬 컴퓨팅 장치에서 실행되는 투명 레이어는, 선택된 이미지 영역을 협업 워크스페이스 내 하나의 위치로 드래그하기 위한 제2 사용자 입력을 검출한다. 이러한 제2 사용자 입력은 드래그 앤 드롭 동작일 수 있으며, 포인팅 장치를 사용하거나 전술된 손 제스처 또는 스타일러스를 사용하여 입력될 수 있다. 가상 드라이버 및/또는 투명 레이어와 관련된, 전술된 기술을 사용하여 드래그 앤 드롭 동작을 검출할 수 있다.
후술될 바와 같이, 협업 워크스페이스 내의 위치는 "화이트보드"또는 기타 공유 디스플레이 내의 공간 및 편집 영역을 포함할 수 있고, 협업 워크스페이스의 일부인 임의의 인터페이스 또는 툴바를 포함할 수도 있다.
단계(2005)는, 로컬 컴퓨팅 장치 상에서 실행되는 크로핑 도구에 의해, 선택된 이미지 영역을 협업 워크스페이스 내 새로운 위치로 드래그하기 위한 제2 사용자 입력을 검출하는 단계를 포함할 수 있다. 새로운 위치는, 예를 들어, 제2 사용자 입력이 검출될 때 운영 체제에 쿼리하여 결정될 수 있다. 또한, 단계(2005)는 로컬 컴퓨팅 장치에서 실행되는 크로핑 도구에 의해, 상기 새로운 위치를 로컬 컴퓨팅 장치 상에서 실행되는 투명 레이어에게 전송하는 단계를 포함할 수 있다(이에 따라, 투명 레이어에 제2 입력 및 제2 입력의 위치를 알릴 수 있음).
대안적으로, 좌표가 투명 레이어에게 전송될 때 크로핑 도구로부터 전송되는 변수 또는 값에 기반하여, 투명 레이어에 의해 직접 검출이 수행될 수 있다. 예를 들어, 크로핑 도구가 좌표를 투명 레이어에게 전송할 때, 투명 레이어는 후속 입력과 후속 입력의 위치를 모두 검출하도록 투명 레이어에 지시하는 플래그(flag)를 설정할 수 있으며, 이러한 경우, 사용자가 이미지 영역을 드래그한 후"드롭"입력을 수행하게 된다. 투명 레이어는, 예를 들어, 제2 입력이 검출되면 운영 체제에 쿼리하여 위치를 결정할 수 있다.
도 25는 사용자가 협업 워크스페이스 내의 위치로 이미지 영역을 드래그하는 예를 도시한다. 인터페이스(2501)에 도시된 바와 같이, 사용자는 크로핑 도구 인터페이스(2503)의 원형 크로핑 도구를 사용하여 이미지(2302)의 이미지 영역(2305)을 협업 워크스페이스(2502) 내의 새로운 위치로 드래그했다. 인터페이스(2501)는 사용자가 이미지 영역을 드래그한 이후이되 상기 이미지 영역의 최종 위치를 선택(즉, "드래그 앤 드롭"의 "드롭"부분을 완료)하기 이전 상태인, 인터페이스(2501)를 도시한다. 따라서, 도 25는 제2 입력을 수신하기 이전이되 제1 입력을 수신한 이후인 인터페이스(2501)를 도시한다. 사용자가 드롭 입력을 완료하여 이미지 영역을 해제하면, 이미지 영역(2305)에 대응하는 현재 위치가 투명 레이어에 의해 (직접 또는 크로핑 도구를 통해)검출된다. 이러한 위치는 이미지가 해제(즉, 드롭)된 순간의 포인터 위치에 대응하는 지점으로 표현할 수 있다.
도 20으로 돌아가면, 단계(2006)에서, 로컬 컴퓨팅 장치에서 실행되는 투명 레이어는, 서버에서 호스팅되는 협업 워크스페이스로 복수의 커맨드를 전송한다. 복수의 커맨드는 이미지(즉, 원본 이미지의 나머지 영역)가 협업 워크스페이스로부터 제거되도록 구성되고, 이미지 영역이, 단계(2005)에서 검출된 제2 입력의 위치에 적어도 부분적으로 기반하여, 협업 워크스페이스에 삽입되도록 하게끔 더 구성된다. 협업 워크스페이스가 웹 소켓 연결을 통해 로컬 컴퓨팅 장치와 통신함에 따라, 투명 레이어는 웹 소켓 연결을 통해 복수의 커맨드를 전송할 수 있다.
도 26은 예시적인 실시예에 따른, 서버에서 호스팅되는 협업 워크스페이스에게 복수의 커맨드를 전송하는 단계의 흐름도를 도시한다. 도 26에 도시된 단계는, 제2 입력을 검출한 후 투명 레이어에 의해 실행된다.
단계(2601)에서, 제1 커맨드가 투명 레이어로부터 협업 워크스페이스를 호스팅하는 서버에게 전송되며, 제1 커맨드는 이미지를 협업 워크스페이스로부터 제거하도록 구성된다. 이미지를 제거하기 위해 사용되는 특정 인스트럭션은 협업 워크스페이스의 구성 및 파라미터에 따라 달라질 수 있다. 예를 들어, 제1 커맨드는 이미지에 대응하는 협업 워크스페이스 내의 객체를 참조하고 해당 객체를 삭제하도록 협업 워크스페이스에 지시할 수 있다. 협업 워크스페이스가 이미지를 객체로서 저장하지 않는 경우, 투명 레이어는 스크린 캡처(제1 입력 기반)에서 이미지의 경계 검출을 수행하여, 이미지의 경계를 정의하는 좌표를 결정하고, 경계(좌표에 의해 특정됨)로 정의된 영역을 공백으로 대체하기 위한 커맨드를 협업 워크스페이스에게 전송할 수 있다. 다양한 변형이 가능하며, 이러한 예는 이를 제한하려는 의도가 아니다.
단계(2602)에서, 투명 레이어는 제2 입력의 위치와 연관된 콘텍스트를 결정한다. 전술된 바와 같이, 협업 워크스페이스에는 다양한 툴바 및/또는 인터페이스 섹션이 포함될 수 있다. 따라서, 콘텍스트는 예를 들어, 모든 사용자에게 표시되는 정보를 입력하는 데 사용되는 워크스페이스의 편집 인터페이스 또는 모든 사용자가 접근할 수 있는 툴바 인터페이스(선택적으로, 각 사용자에게 국부적으로 맞춰질 수 있음)일 수 있다.
단계(2603)에서, 제2 커맨드가 투명 레이어로부터 협업 워크스페이스를 호스팅하는 서버에게 전송되며, 제2 커맨드는 제2 입력의 위치와 연관된 콘텍스트에 기반한다. 제2 커맨드는 상기 위치가 협업 워크스페이스의 편집 영역에 있는지 여부 또는 상기 위치가 협업 워크스페이스의 툴바와 연관된 위치인지 여부 등의 콘텍스트에 따라 달라질 수 있다.
도 27a 및 도 27b는 예시적인 실시예에 따른, 서버에서 호스팅되는 협업 워크스페이스에게 두 개의 상이한 컨텍스트(context)에 대한 복수의 커맨드를 전송하는 흐름도를 도시한다.
도 27a의 흐름도는 제2 입력의 위치가 편집 인터페이스와 연관된 위치(예를 들어, 도 25에 도시된 화이트보드 인터페이스(2502))에 대응할 때의 편집 인터페이스의 컨텍스트에 대응한다. 단계(2701)에서, 제1 커맨드가 투명 레이어로부터 협업 워크스페이스를 호스팅하는 서버로 전송되며, 제1 커맨드는 이미지를 협업 워크스페이스로부터 제거하도록 구성된다. 단계(2702)에서 제2 커맨드가 투명 레이어로부터 협업 워크스페이스를 호스팅하는 서버에게 전송되며, 제2 커맨드는 이미지 영역이 상기 위치에서 협업 워크스페이스에 삽입되도록 하게끔 구성된다. 이미지 영역이 RAM과 같은 메모리에 저장될 때, 투명 레이어는 메모리에서 이미지 영역을 검색하고 상기 위치에 삽입하기 위해 이미지 영역을 서버로 전송할 수 있다. 대안적으로, 투명 레이어는 제2 커맨드의 일부로서 이미지 영역의 메모리 위치를 서버로 전송할 수 있고, 서버는 메모리 위치를 사용하여 로컬 컴퓨팅 장치로부터 이미지 영역을 검색할 수 있다.
도 27b의 흐름도는 제2 입력의 위치가 편집 인터페이스와 연관된 위치에 대응할 때의 툴바 인터페이스의 컨텍스트에 대응한다. 단계(2703)에서, 제1 커맨드가 투명 레이어로부터 협업 워크스페이스를 호스팅하는 서버로 전송되며, 제1 커맨드는 이미지를 협업 워크스페이스로부터 제거하도록 구성된다. 단계(2704)에서 제2 커맨드가 투명 레이어로부터 협업 워크스페이스를 호스팅하는 서버에게 전송되며, 제2 커맨드는 툴바 인터페이스와 연관된 툴바가 이미지 영역을 저장하도록 하게끔 구성된다. 툴바가 협업 워크스페이스에 연결된 각 사용자에 의해 맞춰지면, 로컬 컴퓨팅 장치 상 툴바의 로컬 버전(local version)이 이미지 영역을 저장할 수 있다. 이 경우, 서버는 이미지 영역을 로컬 메모리 내에 국부적으로 저장하도록 로컬 컴퓨팅 장치에 지시할 수 있다. 대안적으로, 툴바가 각 사용자에 대해 맞춰지지 않고 협업 워크스페이스의 모든 사용자에 대해 균일한 경우, 서버는 서버의 메모리에 이미지 영역을 저장할 수 있으며, 협업 워크스페이스의 모든 사용자가 웹 소켓 연결을 통한 툴바 인터페이스를 사용하여 서버에 접근할 수 있다.
도 28a 내지 도 28c는 예시적인 실시예에 따른, 협업 워크스페이스의 편집 인터페이스로 이미지 영역을 드래그하는 사용자의 예시 및 편집 인터페이스로 이미지 영역을 드래그한 결과를 도시한다.
도 28a에 도시된 바와 같이, 사용자는 협업 워크스페이스의 편집 인터페이스(2801)에서 이미지(2802)의 원형 크로핑(2803)를 선택했다. 크로핑 도구는 이 도면에 도시되어 있지 않지만, 사용자 인터페이스에 크로핑 도구가 포함될 수 있다는 사실이 이해될 것이다. 또한, 이 예에서 협업 워크스페이스는 편집 인터페이스(2801)만을 포함하는 것으로 도시되지만, 전술된 바와 같이, 협업 워크스페이스는 추가 인터페이스 및 툴바를 포함할 수 있다.
도 28b는 사용자가 이미지 영역(2803)을 협업 워크스페이스의 편집 인터페이스(2801) 내의 위치로 드래그한 이후이되 해제(이미지 영역을 드롭)하기 이전인, 편집 인터페이스(2801)를 도시한다. 잔존 이미지(2802)와 휴지통 아이콘(2804) 사이의 점선 화살표는, 사용자가 드래그 앤 드롭을 완료할 때(즉, 제2 입력이 검출될 때), 잔존 이미지(2802)가 전술된 바와 같이 협업 워크스페이스로부터 삭제될 것임을 나타낸다. 휴지통 아이콘(2804)은 사용자 인터페이스 또는 협업 워크스페이스의 일부가 아니지만, 사용자에 의한 이미지 영역(2803)의 드래그 앤 드롭의 결과를 설명하기 위해 도면에 제시된다.
도 28c는 사용자가 드래그 앤 드롭 모션을 완료한 후(즉, 제2 입력이 검출 된 후)의 협업 워크스페이스의 편집 인터페이스(2801)를 도시한다. 도면에 도시된 바와 같이, 이미지 영역(2803)은 드롭 위치에 있는 협업 워크스페이스의 편집 인터페이스(2801)에 삽입되고 원본 이미지(2802, 도 28b)의 잔존 부분은 협업 워크스페이스의 편집 인터페이스(2801)에서 제거된다.
도 28c에 도시된 협업 워크스페이스의 편집 인터페이스에 대한 변경 사항이, 협업 워크스페이스에 연결된 모든 사용자에 대한 협업 워크스페이스의 모든 인스턴스에 걸쳐 전파된다는 점에 유의해야 한다. 즉, 협업 워크스페이스에 대한 변경은, 로컬 장치 또는 협업 워크스페이스 애플리케이션의 로컬 인스턴스뿐만 아니라, 원격 사용자가 사용하는 원격 장치의 협업 워크스페이스 인스턴스에서도 발생한다. 전술된 바와 같이, 이는 투명 레이어가, 원본 이미지를 제거하고, 웹 소켓 연결을 통해, 협업 워크스페이스를 호스팅하는 서버의 상기 위치에 이미지 영역을 삽입하는 커맨드를 전송하고, 이후, 이러한 변경 사항을 웹 소켓 연결을 통해 연결된 모든 장치에 전파하기 때문이다.
도 29a 내지 29e는 예시적인 실시예에 따른, 협업 워크스페이스의 툴바 인터페이스로 이미지 영역을 드래그하는 사용자의 예시 및 툴바 인터페이스로 이미지 영역을 드래그한 결과를 도시한다.
도 29a에 도시된 바와 같이, 사용자는 협업 워크스페이스의 편집 인터페이스(2901)에서 이미지(2902)의 원형 크로핑(2903)을 선택했다. 크로핑 도구는 이 도면에 도시되어 있지 않지만, 사용자 인터페이스에는 크로핑 도구가 포함될 수 있다는 사실이 이해될 것이다. 협업 워크스페이스는, 편집 인터페이스(2901)에 더하여, 툴바 인터페이스(2904)를 포함한다. 툴바 인터페이스(2904)는 편집 인터페이스(2901) 내에서 콘텐츠를 편집하거나 마크업(markup)하기 위해 사용자가 접근할 수 있는, 다양한 도구를 포함할 수 있다. 후술될 바와 같이, 툴바 인터페이스는 또한 재사용을 위해 이미지를 저장하는 기능도 포함할 수 있다.
도 29b는 사용자가 이미지 영역(2903)을 협업 워크스페이스의 툴바 인터페이스(2904)와 연관된 위치로 드래그한 후 사용자가 해제(이미지 영역 드롭)하기 전의 협업 워크스페이스를 도시한다. 잔존 이미지(2902)와 휴지통 아이콘(2906) 사이의 점선 화살표는, 사용자가 드래그 앤 드롭을 완료할 때(즉, 제2 입력이 검출될 때), 잔존 이미지(2902)가 전술된 바와 같이 협업 워크스페이스에서 삭제될 것임을 나타낸다. 휴지통 아이콘(2906)은 사용자 인터페이스 또는 협업 워크스페이스의 일부가 아니지만, 사용자에 의한 이미지 영역(2903)의 드래그 앤 드롭의 결과를 설명하기 위해 도면에 제시된다.
도 29b는, 사용자가 툴바 인터페이스(2904) 위로 이미지 영역(2903)을 드래그할 때 툴바 인터페이스(2904) 내에 나타날 수 있는 새로운 아이콘(2905)을 추가적으로 도시한다. 아이콘(2905)("S"로 도시됨)은, 툴바 인터페이스에 이미지 영역을 드롭하면, 사용자가 이후 재사용할 수 있도록 이미지가 툴바에 저장됨을 사용자에게 표시할 수 있다.
도 29c는 사용자가 드래그 앤 드롭 모션을 완료한 후(즉, 제2 입력이 검출된 후)의 협업 워크스페이스를 도시한다. 도면에 도시된 바와 같이, 이미지 영역(2903, 도 29b) 및 잔존 이미지 (2902, 도 29b) 모두 협업 워크스페이스에 나타나지 않는다. 이는 투명 레이어가, 협업 워크스페이스를 호스팅하는 서버에 제1 커맨드를 전송하여, 서버의 협업 애플리케이션에게, 협업 워크스페이스로부터 원본 이미지를 제거하도록 지시하고, 제2 커맨드를 협업 워크스페이스를 호스팅하는 서버에 전송하여, 협업 애플리케이션에게, 툴바 인터페이스(2904)와 연관된 툴바 내에 이미지 영역을 저장하도록 지시한 결과이다. 툴바 인터페이스(2904)는 아이콘(2905)의 존재로 이를 표시하며, 이는 저장된 이미지가 툴바에 저장되며 툴바 인터페이스(2904)를 통해 접근될 수 있음을 사용자에게 알린다.
도 29c에 도시된 바와 같이, 협업 워크스페이스에 대한 변경은 협업 워크스페이스에 연결된 모든 사용자에 대한 협업 워크스페이스의 모든 인스턴스에 걸쳐 전파될 수 있다. 즉, 모든 사용자에 대한 협업 워크스페이스의 모든 인스턴스에서 협업 워크스페이스에 대한 변경이 발생할 수 있다. 전술된 바와 같이, 이는 투명 레이어가, 원본 이미지를 제거하고, 웹 소켓 연결을 통해, 협업 워크스페이스를 호스팅하는 서버의 위치에 이미지 영역을 삽입하는 커맨드를 전송하고, 이후, 이러한 변경 사항을 웹 소켓 연결을 통해 연결된 모든 장치에 전파하기 때문이다. 이러한 경우, 저장된 이미지는 서버에 저장되거나 호스팅될 수 있으며, (웹 소켓 연결을 통해 이미지 영역을 검색할 수 있는)툴바 인터페이스의 각각의 인스턴스를 통해 협업 워크스페이스에 연결된 모든 사용자가 접근할 수 있다. 대안적으로, 서버는 로컬 메모리에 이미지 영역을 국부적으로 저장하게끔 로컬 컴퓨팅 장치에 지시하여, 로컬 컴퓨팅 장치에 대해서만 접근 가능하도록 할 수 있다.
도 29d는 이전에 저장된 이미지 영역을 검색하기 위한 툴바 인터페이스(2904)의 사용을 도시한다. 도 29d에 도시된 바와 같이, 사용자는 툴바 인터페이스 내에서 아이콘(2905)을 선택하였고, 저장된 이미지 인터페이스(2907)가 사용자에게 제공되었다. 저장된 이미지 인터페이스(2907)는 이전에 저장된 모든 이미지 또는 이미지 영역의 리프리젠테이션을 디스플레이할 수 있다. 예를 들어, 리프리젠테이션(2908)은 도 29b의 이미지 영역(2903)에 대응한다.
도 29e는 이전에 저장된 이미지를 삽입하기 위한 툴바 인터페이스의 사용을 도시한다. 도 29e에 도시된 바와 같이, 사용자는 리프리젠테이션(2908)을 저장된 이미지 인터페이스로부터 편집 인터페이스(2901)로 드래그하였고, 이미지 영역(2903)을 협업 워크스페이스의 편집 인터페이스(2901)로 재 삽입하게 된다.
전술된 기법 중 하나 이상은 하나 이상의 컴퓨터 시스템에서 구현되거나 그들을 수반할 수 있다. 도 30은 특화된 컴퓨팅 환경(3000)의 예를 도시한다. 컴퓨팅 환경(3000)은 기술된 실시예(들)의 사용 또는 기능의 범주에 대해 어떠한 제한도 시사하는 것으로 의도되지 않는다.
도 30을 참조하면, 컴퓨팅 환경(3000)은 적어도 하나의 처리 유닛(3010) 및 메모리(3020)를 포함한다. 처리 유닛(3010)은 컴퓨터 실행 가능 인스트럭션을 실행하고, 실제 또는 가상 프로세서일 수 있다. 다중 처리 시스템에서, 다수의 처리 유닛이 컴퓨터 실행 가능 인스트럭션을 실행하여, 처리 전력을 증가시킨다. 메모리(3020)는 휘발성 메모리(예컨대, 레지스터(Register), 캐시, RAM), 비휘발성 메모리(예컨대, ROM, EEPROM, 플래시 메모리 등), 또는 이 둘의 일부 조합일 수 있다. 메모리(3020)는 기술된 기법을 구현하는 소프트웨어(3080)를 저장할 수 있다.
컴퓨팅 환경은 추가 특징을 가질 수 있다. 예를 들어, 컴퓨팅 환경(3000)은 저장소(3040), 하나 이상의 입력 장치(3050), 하나 이상의 출력 장치(3060), 및 하나 이상의 통신 연결(3090)을 포함한다. 버스, 제어기, 또는 네트워크 상호연결과 같은 상호연결 메커니즘(3070)이 컴퓨팅 환경(3000)의 구성 요소들을 상호연결한다. 전형적으로, 운영 체제 소프트웨어 또는 펌웨어(미도시)는 컴퓨팅 환경(3000)에서 실행되는 다른 소프트웨어에 대한 운영 환경을 제공하고, 컴퓨팅 환경(3000)의 구성 요소의 활성화를 조정한다.
저장소(3040)는 착탈식 또는 비착탈식일 수 있고, 자기 디스크, 자기 테이프 또는 카세트, CD-ROM, CD-RW, DVD, 또는 정보를 저장하는 데 사용될 수 있고 컴퓨팅 환경(3000) 내에서 접근될 수 있는 임의의 다른 매체일 수 있다. 저장소(3040)는 소프트웨어(3080)에 대한 인스트럭션을 저장할 수 있다.
입력 장치(들)(3050)는 키보드, 마우스, 펜, 트랙볼, 터치 스크린, 또는 게임 제어기와 같은 터치 입력 장치, 음성 입력 장치, 스캐닝 장치, 디지털 카메라, 원격 제어부, 또는 컴퓨팅 환경(3000)에 입력을 제공하는 다른 장치일 수 있다. 출력 장치(들)(3060)는 디스플레이, 텔레비전, 모니터, 프린터, 스피커, 또는 컴퓨팅 환경(3000)으로부터 출력을 제공하는 다른 장치일 수 있다.
통신 연결(들)(3090)은 다른 컴퓨팅 개체(Computing Entity)로의 통신 매체를 통한 통신을 가능하게 한다. 통신 매체는 컴퓨터 실행가능 인스트럭션, 오디오 또는 비디오 정보, 또는 변조된 데이터 신호 내의 다른 데이터와 같은 정보를 전달한다. 변조된 데이터 신호는 신호 내의 정보를 인코딩하기 위한 방식으로 설정 또는 변화된 그의 특성들 중 하나 이상을 갖는 신호이다. 제한이 아닌 예로서, 통신 매체는 전기, 광, RF, 적외선, 음향, 또는 다른 캐리어(Carrier)로 구현되는 유선 또는 무선 기법을 포함한다.
구현예는 컴퓨터 판독 가능 매체의 콘텍스트에서 기술될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨팅 환경 내에서 접근될 수 있는 임의의 가용 매체이다. 제한이 아닌 예로서, 컴퓨팅 환경(3000) 내에서, 컴퓨터 판독 가능 매체는 메모리(3020), 저장소(3040), 통신 매체, 및 위의 것들 중 임의의 것들의 조합을 포함한다.
물론, 도 30은 식별 용이성만을 위해 컴퓨팅 환경(3000), 디스플레이 장치(3060), 및 입력 장치(3050)를 별개의 장치들로서 도시한다. 컴퓨팅 환경(3000), 디스플레이 장치(3060), 및 입력 장치(3050)는 별개의 장치들일 수 있고(예컨대, 모니터 및 마우스에 유선으로 연결되는 개인용 컴퓨터), 단일 장치 내에 통합될 수 있고(예컨대, 스마트폰 또는 태블릿과 같은, 터치 디스플레이를 갖는 모바일 장치), 또는 임의의 장치 조합일 수 있다(예컨대, 터치 스크린 디스플레이 장치에 동작 가능하게 결합되는 컴퓨팅 장치, 단일 디스플레이 장치 및 입력 장치에 부착되는 복수의 컴퓨팅 장치 등). 컴퓨팅 환경(3000)은 셋톱 박스, 개인용 컴퓨터, 또는 하나 이상의 서버, 예를 들어 네트워킹된 서버의 팜(Farm), 클러스터형 서버 환경, 또는 컴퓨팅 장치의 클라우드 네트워크일 수 있다.
기술된 실시예를 참조하여 본 발명의 원리를 기술하고 예시했지만, 기술된 실시예는 그러한 원리를 벗어나지 않고서 배열 및 세부사항이 수정될 수 있다는 것이 인식될 것이다. 소프트웨어로 도시된 기술된 실시예의 요소는 하드웨어로 구현될 수 있고, 그 역도 성립한다.
본 발명의 원리가 적용될 수 있는 많은 가능한 실시예의 관점에서, 다음의 청구범위 및 그의 등가물의 범주 및 사상 내에 있을 있는 모든 그러한 실시예를 본 발명으로 주장한다.

Claims (21)

  1. 네트워킹된 협업 워크스페이스(collaboration workspace) 내에서 웹 소켓(web socket) 연결을 통해 크로핑된(cropped) 이미지를 전파하는 방법에 있어서, 상기 방법은:
    로컬 컴퓨팅 장치의 사용자 인터페이스 상에서, 웹 소켓 연결을 통해 복수의 컴퓨팅 장치 상의 복수의 참가자에게 접근 가능하고 서버에서 호스팅되는, 협업 워크스페이스 - 상기 협업 워크스페이스는 하나 이상의 이미지를 포함함 - 의 리프리젠테이션(representation)을 전송하는 단계;
    상기 로컬 컴퓨팅 장치 상에서 실행되는 크로핑 도구에 의해, 상기 하나 이상의 이미지 내 하나의 이미지의 이미지 영역을 선택하는 사용자 입력 - 상기 사용자 입력은 복수의 좌표에 대응함 - 을 검출하는 단계;
    상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 크로핑 도구에 의해, 상기 로컬 컴퓨팅 장치 상에서 실행되는 투명 레이어(transparent layer) - 상기 투명 레이어는, 운영 체제 또는 상기 운영 체제 상에서 실행되도록 구성된 하나 이상의 애플리케이션 중 하나 이상과 인터페이싱하도록 구성된, API(application programming interface)를 포함함 - 에게 상기 복수의 좌표를 전송하는 단계;
    상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 투명 레이어에 의해, 상기 복수의 좌표에 적어도 부분적으로 기반한 상기 이미지 영역을 캡처하는 단계;
    상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 투명 레이어에 의해, 상기 선택된 이미지 영역을 상기 협업 워크스페이스 내 하나의 위치로 드래그하기 위한 제2 사용자 입력을 검출하는 단계; 및
    상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 투명 레이어에 의해, 상기 협업 워크스페이스를 호스팅하는 상기 서버에게 복수의 커맨드(command) - 상기 복수의 커맨드는, 상기 협업 워크스페이스로부터 상기 이미지를 제거하도록 구성되고, 이에 더해 상기 이미지 영역이, 상기 위치에 적어도 부분적으로 기반하여 상기 협업 워크스페이스 내로 삽입되도록 하게끔 구성됨 - 를 전송하는 단계;
    를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 투명 레이어에 의해, 상기 복수의 좌표에 적어도 부분적으로 기반한 상기 이미지 영역을 캡처하는 단계는:
    상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 투명 레이어에 의해, 상기 복수의 좌표에 의하여 정의된 상기 이미지 영역의 스크린 캡처를 위하여, 상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 운영 체제 또는 애플리케이션 중 하나 이상으로 요청을 전송하는 단계;
    상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 투명 레이어에 의해, 상기 복수의 좌표에 의하여 정의된 상기 이미지 영역의 상기 스크린 캡처를 수신하는 단계; 및
    상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 투명 레이어에 의해, 상기 로컬 컴퓨팅 장치의 RAM(랜덤 액세스 메모리, random access memory) 내에 상기 이미지 영역을 저장하는 단계;
    를 포함하는; 방법.
  3. 제1항에 있어서,
    상기 복수의 커맨드는 상기 웹 소켓 연결을 통해 전송되는, 방법.
  4. 제1항에 있어서,
    상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 투명 레이어에 의해, 상기 선택된 이미지 영역을 상기 협업 워크스페이스 내 새로운 위치로 드래그하기 위한 상기 제2 사용자 입력을 검출하는 단계는:
    상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 크로핑 도구에 의해, 상기 선택된 이미지 영역을 상기 협업 워크스페이스 내 새로운 위치로 드래그하기 위한 상기 제2 사용자 입력을 검출하는 단계; 및
    상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 크로핑 도구에 의해, 상기 새로운 위치를 상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 투명 레이어에게 전송하는 단계;
    를 포함하는, 방법.
  5. 제1항에 있어서,
    상기 위치는 편집 인터페이스(editing interface)와 연관된 위치에 대응하며, 상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 투명 레이어에 의해, 상기 협업 워크스페이스를 호스팅하는 상기 서버에게 상기 복수의 커맨드를 전송하는 단계는:
    상기 투명 레이어로부터 상기 협업 워크스페이스를 호스팅하는 상기 서버에게 제1 커맨드 - 상기 제1 커맨드는 상기 협업 워크스페이스로부터 상기 이미지를 제거하도록 구성됨 - 를 전송하는 단계; 및
    상기 투명 레이어로부터 상기 협업 워크스페이스를 호스팅하는 상기 서버에게 제2 커맨드 - 상기 제2 커맨드는 상기 이미지 영역이 상기 위치에서 상기 편집 워크스페이스 내로 삽입되도록 하게끔 구성됨 - 를 전송하는 단계;
    를 포함하는, 방법.
  6. 제5항에 있어서,
    상기 이미지 영역은 상기 투명 레이어에 의해 RAM 내에 저장되고, 상기 제2 커맨드는 상기 RAM 내 상기 이미지 영역의 저장 위치를 포함하는, 방법.
  7. 제1항에 있어서,
    상기 위치는 툴바(toolbar) 인터페이스와 연관된 위치에 대응하며, 상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 투명 레이어에 의해, 상기 협업 워크스페이스를 호스팅하는 상기 서버로 상기 복수의 커맨드를 전송하는 단계는:
    상기 투명 레이어로부터 상기 협업 워크스페이스를 호스팅하는 상기 서버에게 제1 커맨드 - 상기 제1 커맨드는 상기 협업 워크스페이스로부터 상기 이미지를 제거하도록 구성됨 - 를 전송하는 단계; 및
    상기 투명 레이어로부터 상기 협업 워크스페이스를 호스팅하는 상기 서버에게 제2 커맨드 - 상기 제2 커맨드는 상기 툴바 인터페이스와 연관된 툴바가 상기 이미지 영역을 저장하도록 하게끔 구성됨 - 를 전송하는 단계;
    를 포함하는, 방법.
  8. 네트워킹된 협업 워크스페이스 내에서 웹 소켓 연결을 통해 크로핑된 이미지를 전파하는 로컬 컴퓨팅 장치에 있어서, 상기 로컬 컴퓨팅 장치는:
    하나 이상의 프로세서; 및
    하나 이상의 메모리 - 상기 하나 이상의 메모리는 상기 하나 이상의 프로세서 중 적어도 하나에 작동 가능하게 연동됨 - 를 포함하며, 상기 하나 이상의 메모리에 저장된 인스트럭션은, 상기 하나 이상의 프로세서 중 적어도 하나에 의하여 실행될 때, 상기 하나 이상의 프로세서 중 적어도 하나로 하여금:
    로컬 컴퓨팅 장치의 사용자 인터페이스 상에서, 웹 소켓 연결을 통해 복수의 컴퓨팅 장치 상의 복수의 참가자에게 접근 가능하고 서버에서 호스팅되는, 협업 워크스페이스 - 상기 협업 워크스페이스는 하나 이상의 이미지를 포함함 - 의 리프리젠테이션(representation)을 전송하는 프로세스;
    상기 로컬 컴퓨팅 장치 상에서 실행되는 크로핑 도구에 의해, 상기 하나 이상의 이미지 내 하나의 이미지의 이미지 영역을 선택하는 사용자 입력 - 상기 사용자 입력은 복수의 좌표에 대응함 - 을 검출하는 프로세스;
    상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 크로핑 도구에 의해, 상기 로컬 컴퓨팅 장치 상에서 실행되는 투명 레이어(transparent layer) - 상기 투명 레이어는, 운영 체제 또는 상기 운영 체제 상에서 실행되도록 구성된 하나 이상의 애플리케이션 중 하나 이상과 인터페이싱하도록 구성된, API(application programming interface)를 포함함 - 에게 상기 복수의 좌표를 전송하는 프로세스;
    상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 투명 레이어에 의해, 상기 복수의 좌표에 적어도 부분적으로 기반한 상기 이미지 영역을 캡처하는 프로세스;
    상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 투명 레이어에 의해, 상기 선택된 이미지 영역을 상기 협업 워크스페이스 내 하나의 위치로 드래그하기 위한 제2 사용자 입력을 검출하는 프로세스; 및
    상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 투명 레이어에 의해, 상기 협업 워크스페이스를 호스팅하는 상기 서버에게 복수의 커맨드(command) - 상기 복수의 커맨드는 상기 협업 워크스페이스로부터 상기 이미지를 제거하도록 구성되고, 이에 더해 상기 이미지 영역이, 상기 위치에 적어도 부분적으로 기반하여 상기 협업 워크스페이스 내로 삽입되도록 하게끔 구성됨 - 를 전송하는 프로세스;
    를 수행하도록 하는, 로컬 컴퓨팅 장치.
  9. 제8항에 있어서,
    상기 하나 이상의 프로세서 중 적어도 하나에 의해 실행될 때, 상기 하나 이상의 프로세서 중 적어도 하나가, 상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 투명 레이어에 의해, 상기 복수의 좌표에 적어도 부분적으로 기반한 상기 이미지 영역을 캡처하도록 하는 상기 인스트럭션은, 추가적으로, 상기 하나 이상의 프로세서 중 적어도 하나로 하여금:
    상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 투명 레이어에 의해, 상기 복수의 좌표에 의하여 정의된 상기 이미지 영역의 스크린 캡처를 위하여, 상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 운영 체제 또는 애플리케이션 중 하나 이상으로 요청을 전송하는 프로세스;
    상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 투명 레이어에 의해, 상기 복수의 좌표에 의하여 정의된 상기 이미지 영역의 상기 스크린 캡처를 수신하는 프로세스; 및
    상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 투명 레이어에 의해, 상기 로컬 컴퓨팅 장치의 RAM 내에 상기 이미지 영역을 저장하는 프로세스;
    를 수행하도록 하는, 로컬 컴퓨팅 장치.
  10. 제8항에 있어서,
    상기 복수의 커맨드는 상기 웹 소켓 연결을 통해 전송되는, 로컬 컴퓨팅 장치.
  11. 제8항에 있어서,
    상기 하나 이상의 프로세서 중 적어도 하나에 의하여 실행될 때, 상기 하나 이상의 프로세서 중 적어도 하나로 하여금, 상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 투명 레이어에 의해, 상기 선택된 이미지 영역을 상기 협업 워크스페이스 내의 새로운 위치로 드래그하기 위한 제2 사용자 입력을 검출하도록 하는 상기 인스트럭션은, 추가적으로, 상기 하나 이상의 프로세서로 하여금:
    상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 크로핑 도구에 의해, 상기 선택된 이미지 영역을 상기 협업 워크스페이스 내 새로운 위치로 드래그하기 위한 상기 제2 사용자 입력을 검출하는 프로세스; 및
    상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 크로핑 도구에 의해, 상기 새로운 위치를 상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 투명 레이어에게 전송하는 프로세스;
    를 수행하도록 하는, 로컬 컴퓨팅 장치.
  12. 제8항에 있어서,
    상기 위치는 편집 인터페이스(editing interface)와 연관된 위치에 대응하며, 상기 하나 이상의 프로세서 중 적어도 하나에 의해 실행될 때, 상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 투명 레이어에 의해, 상기 하나 이상의 프로세서 중 적어도 하나로 하여금, 상기 협업 워크스페이스를 호스팅하는 상기 서버에게 상기 복수의 커맨드를 전송하도록 하는 상기 인스트럭션은, 추가적으로, 상기 하나 이상의 프로세서 중 적어도 하나로 하여금:
    상기 투명 레이어로부터 상기 협업 워크스페이스를 호스팅하는 상기 서버에게 제1 커맨드 - 상기 제1 커맨드는 상기 협업 워크스페이스로부터 상기 이미지를 제거하도록 구성됨 - 를 전송하는 프로세스; 및
    상기 투명 레이어로부터 상기 협업 워크스페이스를 호스팅하는 상기 서버에게 제2 커맨드 - 상기 제2 커맨드는 상기 이미지 영역이 상기 위치에서 상기 편집 워크스페이스 내로 삽입되도록 하게끔 구성됨 - 를 전송하는 프로세스;
    를 수행하도록 하는, 로컬 컴퓨팅 장치.
  13. 제12항에 있어서,
    상기 이미지 영역은 상기 투명 레이어에 의해 RAM 내에 저장되고, 상기 제2 커맨드는 상기 RAM 내 상기 이미지 영역의 저장 위치를 포함하는, 로컬 컴퓨팅 장치.
  14. 제8항에 있어서,
    상기 위치는 툴바(toolbar) 인터페이스와 연관된 위치에 대응하며, 상기 하나 이상의 프로세서 중 적어도 하나에 의해 실행될 때, 상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 투명 레이어에 의해, 상기 하나 이상의 프로세서 중 적어도 하나로 하여금, 상기 협업 워크스페이스를 호스팅하는 상기 서버에게 상기 복수의 커맨드를 전송하도록 하는 상기 인스트럭션은, 추가적으로, 상기 하나 이상의 프로세서 중 적어도 하나로 하여금:
    상기 투명 레이어로부터 상기 협업 워크스페이스를 호스팅하는 상기 서버에게 제1 커맨드 - 상기 제1 커맨드는 상기 협업 워크스페이스로부터 상기 이미지를 제거하도록 구성됨 - 를 전송하는 프로세스; 및
    상기 투명 레이어로부터 상기 협업 워크스페이스를 호스팅하는 상기 서버에게 제2 커맨드 - 상기 제2 커맨드는 상기 툴바 인터페이스와 연관된 툴바가 상기 이미지 영역을 저장하도록 하게끔 구성됨 - 를 전송하는 프로세스;
    를 수행하도록 하는, 로컬 컴퓨팅 장치.
  15. 컴퓨터 판독 가능 인스트럭션을 저장하는 적어도 하나의 비 일시적(non-transitory) 컴퓨터 판독 가능 매체에 있어서, 상기 적어도 하나의 비 일시적 컴퓨터 판독 가능 매체는, 로컬 컴퓨팅 장치에 의해 실행될 때, 상기 로컬 컴퓨팅 장치로 하여금:
    상기 로컬 컴퓨팅 장치의 사용자 인터페이스 상에서, 웹 소켓 연결을 통해 복수의 컴퓨팅 장치 상의 복수의 참가자에게 접근 가능하고 서버에서 호스팅되는, 협업 워크스페이스 - 상기 협업 워크스페이스는 하나 이상의 이미지를 포함함 - 의 리프리젠테이션(representation)을 전송하는 프로세스;
    상기 로컬 컴퓨팅 장치 상에서 실행되는 크로핑 도구에 의해, 상기 하나 이상의 이미지 내 하나의 이미지의 이미지 영역을 선택하는 사용자 입력 - 상기 사용자 입력은 복수의 좌표에 대응함 - 을 검출하는 프로세스;
    상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 크로핑 도구에 의해, 상기 로컬 컴퓨팅 장치 상에서 실행되는 투명 레이어(transparent layer) - 상기 투명 레이어는, 운영 체제 또는 상기 운영 체제 상에서 실행되도록 구성된 하나 이상의 애플리케이션 중 하나 이상과 인터페이싱하도록 구성된, API(application programming interface)를 포함함 - 에게 상기 복수의 좌표를 전송하는 프로세스;
    상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 투명 레이어에 의해, 상기 복수의 좌표에 적어도 부분적으로 기반한 상기 이미지 영역을 캡처하는 프로세스;
    상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 투명 레이어에 의해, 상기 선택된 이미지 영역을 상기 협업 워크스페이스 내 하나의 위치로 드래그하기 위한 제2 사용자 입력을 검출하는 프로세스; 및
    상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 투명 레이어에 의해, 상기 협업 워크스페이스를 호스팅하는 상기 서버에게 복수의 커맨드(command) - 상기 복수의 커맨드는, 상기 협업 워크스페이스로부터 상기 이미지를 제거하도록 구성되고, 이에 더해, 상기 이미지 영역이 상기 위치에 적어도 부분적으로 기반하여 상기 협업 워크스페이스 내로 삽입되도록 하게끔 구성됨 - 를 전송하는 프로세스;
    를 수행하도록 하는, 적어도 하나의 비 일시적 컴퓨터 판독 가능 매체.
  16. 제15항에 있어서,
    상기 로컬 컴퓨팅 장치에 의해 실행될 때, 상기 로컬 컴퓨팅 장치로 하여금, 상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 투명 레이어에 의해, 상기 복수의 좌표에 적어도 부분적으로 기반한 상기 이미지 영역을 캡처하도록 하는 상기 인스트럭션은, 추가적으로, 상기 로컬 컴퓨팅 장치로 하여금;
    상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 투명 레이어에 의해, 상기 복수의 좌표에 의하여 정의된 상기 이미지 영역의 스크린 캡처를 위하여, 상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 운영 체제 또는 애플리케이션 중 하나 이상으로 요청을 전송하는 프로세스;
    상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 투명 레이어에 의해, 상기 복수의 좌표에 의하여 정의된 상기 이미지 영역의 상기 스크린 캡처를 수신하는 프로세스; 및
    상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 투명 레이어에 의해, 상기 로컬 컴퓨팅 장치의 RAM 내에 상기 이미지 영역을 저장하는 프로세스;
    를 수행하도록 하는, 적어도 하나의 비 일시적 컴퓨터 판독 가능 매체.
  17. 제15항에 있어서,
    상기 복수의 커맨드는 상기 웹 소켓 연결을 통해 전송되는, 적어도 하나의 비 일시적 컴퓨터 판독 가능 매체.
  18. 제15항에 있어서,
    상기 로컬 컴퓨팅 장치에 의해 실행될 때, 상기 로컬 컴퓨팅 장치로 하여금, 상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 투명 레이어에 의해, 상기 선택된 이미지 영역을 상기 협업 워크스페이스 내 새로운 위치로 드래그하기 위한 제2 사용자 입력을 검출하도록 하는 상기 인스트럭션은, 추가적으로, 상기 로컬 컴퓨팅 장치로 하여금;
    상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 크로핑 도구에 의해, 상기 선택된 이미지 영역을 상기 협업 워크스페이스 내 상기 새로운 위치로 드래그하기 위한 상기 제2 사용자 입력을 검출하는 프로세스; 및
    상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 크로핑 도구에 의해, 상기 새로운 위치를 상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 투명 레이어에게 전송하는 프로세스;
    를 수행하도록 하는, 적어도 하나의 비 일시적 컴퓨터 판독 가능 매체.
  19. 제15항에 있어서,
    상기 위치는 편집 인터페이스(editing interface)와 연관된 위치에 대응하며, 상기 로컬 컴퓨팅 장치에 의해 실행될 때, 상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 투명 레이어에 의해, 상기 로컬 컴퓨팅 장치로 하여금 상기 협업 워크스페이스를 호스팅하는 상기 서버에게 상기 복수의 커맨드를 전송하도록 하는 상기 인스트럭션은, 추가적으로, 상기 로컬 컴퓨팅 장치로 하여금:
    상기 투명 레이어로부터 상기 협업 워크스페이스를 호스팅하는 상기 서버에게 제1 커맨드 - 상기 제1 커맨드는 상기 협업 워크스페이스로부터 상기 이미지를 제거하도록 구성됨 - 를 전송하는 프로세스; 및
    상기 투명 레이어로부터 상기 협업 워크스페이스를 호스팅하는 상기 서버에게 제2 커맨드 - 상기 제2 커맨드는 상기 이미지 영역이 상기 위치에서 상기 편집 워크스페이스 내로 삽입되도록 하게끔 구성됨 - 를 전송하는 프로세스;
    를 수행하도록 하는, 적어도 하나의 비 일시적 컴퓨터 판독 가능 매체.
  20. 제19항에 있어서,
    상기 이미지 영역은 상기 투명 레이어에 의해 RAM 내에 저장되고, 상기 제2 커맨드는 상기 RAM 내 상기 이미지 영역의 저장 위치를 포함하는, 적어도 하나의 비 일시적 컴퓨터 판독 가능 매체.
  21. 제15항에 있어서,
    상기 위치는 툴바(toolbar) 인터페이스와 연관된 위치에 대응하며, 상기 로컬 컴퓨팅 장치에 의해 실행될 때, 상기 로컬 컴퓨팅 장치 상에서 실행되는 상기 투명 레이어에 의해, 상기 로컬 컴퓨팅 장치로 하여금 협업 워크스페이스를 호스팅하는 상기 서버에게 상기 복수의 커맨드를 전송하도록 하는 상기 인스트럭션은, 추가적으로, 상기 로컬 컴퓨팅 장치로 하여금:
    상기 투명 레이어로부터 상기 협업 워크스페이스를 호스팅하는 상기 서버에게 제1 커맨드 - 상기 제1 커맨드는 상기 협업 워크스페이스로부터 상기 이미지를 제거하도록 구성됨 - 를 전송하는 프로세스; 및
    상기 투명 레이어로부터 상기 협업 워크스페이스를 호스팅하는 상기 서버에게 제2 커맨드 - 상기 제2 커맨드는 상기 툴바 인터페이스와 연관된 툴바가 상기 이미지 영역을 저장하도록 하게끔 구성됨 - 를 전송하는 프로세스;
    를 수행하도록 하는, 적어도 하나의 비 일시적 컴퓨터 판독 가능 매체.
KR1020207036369A 2018-05-18 2019-05-16 네트워킹된 협업 워크스페이스에서 웹 소켓 연결을 통해 크로핑된 이미지를 전파하기 위한 방법, 기기, 및 컴퓨터 판독 가능 매체 KR20210010567A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/983,747 US11334220B2 (en) 2017-08-24 2018-05-18 Method, apparatus, and computer-readable medium for propagating cropped images over a web socket connection in a networked collaboration workspace
US15/983,747 2018-05-18
PCT/EP2019/062687 WO2019219848A1 (en) 2018-05-18 2019-05-16 Method, apparatus, and computer-readable medium for propagating cropped images over a web socket connection in a networked collaboration workspace

Publications (1)

Publication Number Publication Date
KR20210010567A true KR20210010567A (ko) 2021-01-27

Family

ID=66690298

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207036369A KR20210010567A (ko) 2018-05-18 2019-05-16 네트워킹된 협업 워크스페이스에서 웹 소켓 연결을 통해 크로핑된 이미지를 전파하기 위한 방법, 기기, 및 컴퓨터 판독 가능 매체

Country Status (6)

Country Link
EP (1) EP3794432A1 (ko)
JP (1) JP2021523484A (ko)
KR (1) KR20210010567A (ko)
CN (1) CN112424738A (ko)
BR (1) BR112020023519A2 (ko)
WO (1) WO2019219848A1 (ko)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070124737A1 (en) * 2005-11-30 2007-05-31 Ava Mobile, Inc. System, method, and computer program product for concurrent collaboration of media
US8582919B2 (en) * 2007-09-24 2013-11-12 Microsoft Corporation Altering the appearance of a digital image using a shape
US8806331B2 (en) * 2009-07-20 2014-08-12 Interactive Memories, Inc. System and methods for creating and editing photo-based projects on a digital network
US20140101571A1 (en) * 2012-10-04 2014-04-10 Lucid Dream Software, Inc. Shared collaborative environment
US20140310613A1 (en) * 2013-04-15 2014-10-16 Microsoft Corporation Collaborative authoring with clipping functionality
WO2015041641A1 (en) * 2013-09-18 2015-03-26 Intel Corporation Automated image cropping and sharing
US20150135137A1 (en) * 2013-11-12 2015-05-14 Microsoft Corporation User Experience for Processing and Cropping Images

Also Published As

Publication number Publication date
EP3794432A1 (en) 2021-03-24
BR112020023519A2 (pt) 2021-02-09
CN112424738A (zh) 2021-02-26
WO2019219848A1 (en) 2019-11-21
JP2021523484A (ja) 2021-09-02

Similar Documents

Publication Publication Date Title
US11483376B2 (en) Method, apparatus, and computer-readable medium for transmission of files over a web socket connection in a networked collaboration workspace
US20220382505A1 (en) Method, apparatus, and computer-readable medium for desktop sharing over a web socket connection in a networked collaboration workspace
JP5442727B2 (ja) ユーザーインターフェイス表示上での教示動画の表示
US9110587B2 (en) Method for transmitting and receiving data between memo layer and application and electronic device using the same
US9595238B2 (en) Electronic device, cover for electronic device, and method of performing a function in an electronic device
US20190065012A1 (en) Method, apparatus, and computer-readable medium for propagating enriched note data objects over a web socket connection in a networked collaboration workspace
KR102594951B1 (ko) 전자 장치 및 그의 동작 방법
JP2020532007A (ja) ハードウェアとソフトウェアとの汎用インタフェースを実現する方法、装置、及びコンピュータ可読媒体
KR20200131881A (ko) 네트워킹된 협업 워크스페이스에서 웹 소켓 연결을 통해 파일을 전송하기 위한 방법, 기기, 및 컴퓨터 판독 가능 매체
US11334220B2 (en) Method, apparatus, and computer-readable medium for propagating cropped images over a web socket connection in a networked collaboration workspace
KR20210018353A (ko) 네트워킹된 협업 워크스페이스(collaboration workspace) 내에서 웹 소켓 연결을 통해 데스크탑을 공유하기 위한 방법, 장치, 및 컴퓨터 판독 가능 매체
KR20210010567A (ko) 네트워킹된 협업 워크스페이스에서 웹 소켓 연결을 통해 크로핑된 이미지를 전파하기 위한 방법, 기기, 및 컴퓨터 판독 가능 매체
KR20210038660A (ko) 네트워킹된 협업 워크스페이스에서 웹 소켓 연결을 통해 강화된 노트 데이터 객체를 전파하기 위한 방법, 기기, 및 컴퓨터 판독 가능 매체