KR102352536B1 - 저 레이턴시 잉크 렌더링 파이프라인 기법 - Google Patents

저 레이턴시 잉크 렌더링 파이프라인 기법 Download PDF

Info

Publication number
KR102352536B1
KR102352536B1 KR1020177008417A KR20177008417A KR102352536B1 KR 102352536 B1 KR102352536 B1 KR 102352536B1 KR 1020177008417 A KR1020177008417 A KR 1020177008417A KR 20177008417 A KR20177008417 A KR 20177008417A KR 102352536 B1 KR102352536 B1 KR 102352536B1
Authority
KR
South Korea
Prior art keywords
ink
content
input
rendering
thread
Prior art date
Application number
KR1020177008417A
Other languages
English (en)
Other versions
KR20170061134A (ko
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 KR20170061134A publication Critical patent/KR20170061134A/ko
Application granted granted Critical
Publication of KR102352536B1 publication Critical patent/KR102352536B1/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/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/041Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
    • G06F3/0416Control or interface arrangements specially adapted for digitisers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • 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/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/0354Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of 2D relative movements between the device, or an operating part thereof, and a plane or surface, e.g. 2D mice, trackballs, pens or pucks
    • G06F3/03545Pens or stylus
    • 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/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/041Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • 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/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/395Arrangements specially adapted for transferring the contents of the bit-mapped memory to the screen

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Computer Graphics (AREA)
  • User Interface Of Digital Computer (AREA)
  • Processing Or Creating Images (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

디스플레이 영역에서 잉크 콘텐츠에 대한 원하는 위치를 추적하기 위한 스타일러스, 마우스, 손가락(또는 다른 터치 입력), 또는 다른 드로잉 장치를 사용하여 잉크 콘텐츠의 사용자 생성 동안 잉크의 디스플레이에 대한 레이턴시를 개선하기 위한 시스템 및 방법들이 제공된다. 스타일러스/마우스/터치 입력/다른 장치를 사용하여 사용자에 의해 생성된 잉크 콘텐츠의 디스플레이를 위한 시간을 감소시키고 최소화하기 위해, 오퍼레이팅 시스템에서 동작하고 다른 애플리케이션 스레드와 동시에 동작하는 별도의 잉크 렌더링 프로세스 스레드가 사용될 수 있다. 애플리케이션 내에 잉크 콘텐츠를 생성하기 원하는 경우, 잉크 콘텐츠의 생성에 대응하는 사용자 상호작용은 별도의 잉크 렌더링 프로세스 스레드에 의해 핸들링될 수 있다. 이는 애플리케이션이 프로세스 흐름 내의 다른 이벤트들을 핸들링하는 것으로 인한 잉크 디스플레이의 잠재적 지연을 방지할 수 있다.

Description

저 레이턴시 잉크 렌더링 파이프라인 기법{LOW LATENCY INK RENDERING PIPELINE}
태블릿 컴퓨팅 장치(또는 유사한 타입의 내장된 장치)는 종종 사용자로 하여금 장치에 데이터를 입력할 수 있게 하는 터치스크린을 구비한다. 사용자에 의한 데이터 입력은 손가락, 마우스, 스타일러스(또는 펜) 등을 사용하여 행해질 수 있다. 장치에 대한 펜(또는 손가락)으로부터의 입력을 "잉크"라고 한다.
잉크는 디지털화되어 컴퓨팅 장치에 의해 프로세싱되고 조작되며 디스플레이될 수 있다. 이는 전형적으로 장치 상의 오퍼레이팅 시스템에 디지털화된 잉크를 송신하고, 프로세서가 잉크를 프로세싱하고, 그 이후 프로세싱된 잉크를 그래픽 카드에 송신하게 함으로써 수행된다. 그 이후 그래픽 카드는 모니터 또는 디스플레이 상에 (사용자의 동작의 효과인) 잉크를 렌더링한다.
현재 잉크 렌더링 기법에 관한 하나의 결함은 레이턴시가 발생하는 것이다. 펜 및 손가락은 빠르고 사실상 즉각적이지만 잉크의 렌더링은 뒤떨어지는 경향이 있다. 실제로, 전체 잉크 렌더링 프로세스는 대략 70 내지 200 밀리초 또는 그보다 큰 레이턴시가 발생할 수 있다. 이러한 잉크 렌더링에서의 레이턴시는 느리고 부자연스러운 사용자 경험을 야기할 수 있다.
특히, 이러한 레이턴시는 객체를 직접 조작하는 지각 장벽을 만든다는 점에서 바람직하지 않은 효과이다. 물론 이들은 동일 위치 경험(co-located experience)이 존재하는 상황에서 가장 잘 감지된다. 다시 말해, (태블릿 컴퓨팅 장치 또는 터치스크린 상에 스타일러스로 기록하는 것과 같이) 입력 및 출력이 동일 위치에서 일어나는 경우, 레이턴시 효과는 최대이다.
디스플레이 영역에서 잉크 콘텐츠에 대한 원하는 위치를 추적하기 위한 스타일러스, 마우스, 손가락(또는 다른 터치 입력), 또는 다른 드로잉 장치를 사용하여 잉크 콘텐츠의 사용자 생성 동안 잉크의 디스플레이에 대한 레이턴시를 개선하기 위한 시스템 및 방법들이 제공된다. 스타일러스/마우스/터치 입력/다른 장치를 사용하여 사용자에 의해 생성된 잉크 콘텐츠의 디스플레이 시간을 감소시키고 최소화하기 위해, 오퍼레이팅 시스템 내에서 다른 애플리케이션 스레드와 동시에 동작하는 별도의 잉크 렌더링 프로세스 스레드가 사용될 수 있다. 애플리케이션 내에 잉크 콘텐츠를 생성하기 원하는 경우, 잉크 콘텐츠의 생성에 대응하는 사용자 상호작용은 별도의 잉크 렌더링 프로세스 스레드에 의해 핸들링될 수 있다. 이는 애플리케이션이 프로세스 흐름 내의 다른 이벤트들을 핸들링하는 것으로 인한 잉크 디스플레이의 잠재적 지연을 방지할 수 있다. 별도의 잉크 렌더링 프로세스 스레드가 애플리케이션과 통신하기 때문에, 별도의 잉크 렌더링 프로세스에 의해 렌더링된 잉크 콘텐츠는 애플리케이션의 컨텍스트를 사용하여 여전히 렌더링될 수 있다. 이는 잉크 콘텐츠로 하여금 대응하는 애플리케이션으로 잉크 콘텐츠를 전달한 이후에 잉크 콘텐츠가 가질 수 있는 모습(appearance)과 실질적으로 유사한 모습으로 사용자에게 디스플레이될 수 있게 한다.
본 요약은 아래의 상세한 설명에서 더 설명되는 개념들 중 선택된 개념을 간략화된 형태로 소개하고자 제공된다. 본 요약은 특허청구되는 대상의 중요한 특징 또는 필수적인 특징을 식별하고자 하는 것도 아니고, 특허청구되는 대상의 범주를 결정할 때 별도로 도움을 주고자 하는 것도 아니다.
본 발명은 첨부된 도면을 참조하여 아래에서 상세히 설명된다.
도 1은 사용자에 의해 생성된 습식 잉크(wet ink)를 렌더링하기 위한 컴포넌트들 사이의 관계에 대한 흐름도를 개략적으로 도시한다.
도 2는 다양한 타입의 잉크 콘텐츠를 렌더링하기 위한 컴포넌트들 사이의 관계에 대한 흐름도를 개략적으로 도시한다.
도 3은 잉크 콘텐츠를 렌더링하기 위한 컴포넌트들 사이의 관계에 대한 흐름도를 개략적으로 도시한다.
도 4 내지 도 6은 다양한 타입의 잉크 콘텐츠를 렌더링하기 위한 프로세스 흐름도를 도시한다.
도 7은 프로세스 스레드들 사이에서의 잉크 콘텐츠의 전달을 위한 프로세스 통신 흐름도를 도시한다.
개요
다양한 양태들에서, 디스플레이 영역에서 잉크 콘텐츠에 대한 원하는 위치를 추적하기 위한 스타일러스, 마우스, 손가락(또는 다른 터치 입력), 또는 다른 드로잉 장치를 사용하여 잉크 콘텐츠의 사용자 생성 동안 잉크의 디스플레이에 대한 레이턴시를 개선하기 위한 시스템 및 방법들이 제공된다. 스타일러스/마우스/터치 입력/다른 장치를 사용하여 사용자에 의해 생성된 잉크 콘텐츠의 디스플레이를 위한 시간을 감소시키고 최소화하기 위해, 오퍼레이팅 시스템 내에서 동작하고 다른 애플리케이션 스레드와 동시에 동작하는 별도의 잉크 렌더링 프로세스 스레드가 사용될 수 있다. 애플리케이션 내에서 잉크 콘텐츠를 생성하기 원하는 경우, 잉크 콘텐츠의 생성에 대응하는 사용자 상호작용은 별도의 잉크 렌더링 프로세스 스레드에 의해 핸들링될 수 있다. 이는 애플리케이션이 프로세스 흐름 내의 다른 이벤트들을 핸들링하는 것으로 인한 잉크 콘텐츠를 디스플레이할 때의 잠재적 지연을 방지할 수 있다. 별도의 잉크 렌더링 프로세스 스레드가 애플리케이션과 통신하기 때문에, 별도의 잉크 렌더링 프로세스에 의해 렌더링된 잉크 콘텐츠는 애플리케이션의 컨텍스트를 사용하여 계속 렌더링될 수 있다. 이는 잉크 콘텐츠로 하여금 대응하는 애플리케이션으로 잉크 콘텐츠를 전달한 이후에 잉크 콘텐츠가 가질 수 있는 모습(appearance)과 실질적으로 유사한 모습으로 사용자에게 디스플레이될 수 있게 한다.
다양한 양태들에서, 본원에 설명되는 시스템 및 방법은 또한 프로세스 스레드들 사이에서의 잉크 콘텐츠의 핸들링의 전이(transition) 동안 사용자에 의해 생성된 새로운 잉크 콘텐츠가 지속적으로 디스플레이되게 할 수 있다. 새로운 잉크 콘텐츠의 정해진 부분의 생성이 완료된 것으로 여겨지면, 완료된 콘텐츠의 렌더링은 대응하는 애플리케이션에 대한 프로세스 스레드로 전달될 수 있다. 잉크 콘텐츠의 특정 부분의 생성이 완료되었기 때문에, 새로운 잉크 콘텐츠에 대한 레이턴시 장애는 더 이상 고려사항이 아니다. 그 결과, 완료된 콘텐츠의 디스플레이에서 레이턴시에 대한 염려를 감소시키거나 최소화하면서 추가 렌더링이 대응 애플리케이션의 프로세스 스레드에 의해 수행될 수 있다. 사용자 경험을 더 개선하기 위해, 잉크 렌더링 스레드로부터 대응하는 애플리케이션 프로세스 스레드로의 완료 콘텐츠의 디스플레이의 전달이 동기화될 수 있다. 이는 두 프로세스 스레드 모두가 잉크 콘텐츠를 디스플레이하고자 시도하는 기간을 제거하면서 콘텐츠를 연속적으로 디스플레이되게 할 수 있다. 본 발명의 양태들은 또한 어느 프로세스도 잉크 콘텐츠를 디스플레이하고자 시도하지 않는 상황을 방지할 수 있다. 다시 말해, 본 발명의 양태에서, 하나의 프로세스 또는 다른 프로세스가 잉크 콘텐츠를 디스플레이할 수 있으나, 둘 모두가 동시에 하지는 못한다.
사용자에 의해 생성된 잉크 콘텐츠를 렌더링하는 데 있어서의 어려움 중 하나는 사용자의 동작이 잉크 콘텐츠의 디스플레이로 나타나도록 잉크 콘텐츠를 충분히 빠르게 디스플레이하는 것이다. 지금까지 사용자들은 잉크 콘텐츠의 생성에 대한 사용자 동작에 응답하여 약 50ms 이하의 지연을 감지할 수 있는 것으로 판정되었다. 사용자에 의해 생성되는 잉크 콘텐츠의 디스플레이에서의 지연이 있는 경우, 콘텐츠 생성이 더 이상 기록 표면 상에 물리적 펜을 사용하여 잉크를 생성하는 느낌을 갖지 않기 때문에 그러한 지연이 사용자 경험을 방해할 수 있다. 불행히도, 잉크 콘텐츠가 생성되는 애플리케이션의 프로세스 스레드를 사용하여 잉크 콘텐츠를 디스플레이하고자 하는 시도는, 바람직하지 않은 레이턴시 기간으로 이어질 수 있다. 이는 전형적인 애플리케이션이 애플리케이션에 의해 수행되는 다른 동작들에 대해 애플리케이션 프로세스 스레드 내의 잉크 콘텐츠와 관련된 동작들을 우선순위화하는 능력을 갖지 않기 때문이다.
대안으로서, 잉크 콘텐츠의 렌더링은 오퍼레이팅 시스템으로부터 전적으로 분리될 수 있다. 이는 오퍼레이팅 시스템을 우회하는 하드웨어 및/또는 소프트웨어 특징을 사용하는 사용자에 의해 생성되는 새로운 잉크 콘텐츠의 디스플레이를 가능하게 할 수 있고 대신에 디스플레이 영역 내에 새로운 잉크를 직접 디스플레이한다. 새로운 잉크 콘텐츠의 생성 이후, 새로운 잉크 콘텐츠는 오퍼레이팅 시스템으로 전달되고, 여기서 잉크 콘텐츠가 대응 애플리케이션에 의해 제공된 컨텍스트 내에 렌더링되도록 디스플레이 특징에 대한 임의의 수정이 적용될 수 있다. 이러한 타입의 방법은 새로운 잉크 콘텐츠의 디스플레이에서의 레이턴시를 감소시킬 수 있지만, 새로운 잉크 콘텐츠의 초기 디스플레이는 콘텐츠의 마지막 렌더링과 상이할 수 있다.
일부 양태들에서, 본원에 설명된 시스템 및 방법의 이점은 잉크 콘텐츠의 디스플레이에 대한 레이턴시를 감소시키기 위해 컴퓨터의 성능을 개선하는 것이다. 그러한 개선은 잉크 콘텐츠의 생성 동안 개선된 사용자 경험으로 또한 이어질 수 있다.
다양한 양태들에서, 본원에 설명된 시스템 및 방법은 사용자로 하여금 입력 장치, 예컨대, 스타일러스, 터치 입력을 수신하기 위한 터치 인터페이스, 마우스, 또는 디스플레이 영역 내에서의 커서의 이동을 제어할 수 있는 다른 장치를 사용하여 잉크 입력을 생성하게 할 수 있다. 잉크 콘텐츠를 생성하고자 하는 사용자의 바람(desire)은 사용자의 동작에 대한 컨텍스트에 기초하여 결정되거나 검출될 수 있다. 잉크 콘텐츠의 생성에 대한 동작에 대응하는 동작 컨텍스트가 정의될 수 있다. 그 이후 사용자 동작에 대한 입력 컨텍스트가 검출되고 동작 컨텍스트와 비교되어 입력 동작이 잉크 생성 동작인지 여부를 판정할 수 있다.
하나의 타입의 컨텍스트는 입력 장치 그 자체의 특징(nature)일 수 있다. 이것은 모달 컨텍스트(modal context)라고 하며, 표면과 스타일러스의 상호작용, 손가락 또는 터치 입력을 위한 표면과의 다른 형상의 상호작용, 마우스를 사용한 커서 아이콘(또는 다른 커서 식별자)의 이동, 및/또는 임의의 다른 편리한 장치에 기초하여 검출될 수 있다.
두 번째 타입의 컨텍스트는 위치 컨텍스트일 수 있다. 선택적으로, 디스플레이의 전체 디스플레이 영역, 터치 표면, 입력 패드, 또는 다른 타입의 사용자 인터페이스는 임의의 시간에 잉크 콘텐츠를 수신하도록 준비될 수 있다. 이러한 타입의 선택에서, 사용자의 동작은 단지 모달 컨텍스트에 기초하여 및/또는 위치 컨텍스트와 상이한 다른 타입의 컨텍스트에 기초하여 잉크 생성 동작으로서 검출될 수 있다. 이와 달리, 사용자 인터페이스 내의(예컨대, 사용자 인터페이스의 디스플레이 영역 내의) 하나 이상의 구역(regions)이 잉크 콘텐츠가 수신될 수 있는 구역들로 식별될 수 있다. 이러한 타입의 선택에서, 사용자 동작은 모달 컨텍스트와 위치 컨텍스트의 조합에 기초하여 잉크 생성 동작으로 검출된다. 잉크 콘텐츠를 잠재적으로 수신하기 위한 구역들은 장치의 오퍼레이팅 시스템에 의해 사전정의되거나, 장치 상에서 작동하는 애플리케이션에 의해 사전정의되거나, 또는 사용자에 의해 하나 이상의 구역들에 대한 정의에 기초하여 생성될 수 있다.
세 번째 타입의 컨텍스트는 잉크 생성 컨텍스트일 수 있다. 하나의 옵션은 선택된 모달 컨텍스트 및/또는 위치 컨텍스트를 갖는 임의의 사용자 동작을 잉크 생성 동작으로 해석하는 것이다. 이와 달리, 사용자 동작이 잉크 생성 동작이라고 판정하는 것은 특정 타입의 사용자 동작, 예컨대, 입력 장치가 잉크 콘텐츠의 생성을 개시하는 단일 탭/클릭 또는 더블 탭/클릭을 검출하는 것에 의존할 수 있다. 그러한 특정 동작은 잉크 생성 컨텍스트에 대응할 수 있다. 잉크 생성 컨텍스트는 사용자가 이전에 잉크 생성을 개시했는지 여부에 따라 변할 수 있다. 예를 들어, 입력 장치 또는 커서의 이동과 같은 사용자에 의한 추가 동작은, 잉크 생성이 개시된 이후 및 입력 표면으로부터 장치를 들어올리는 것과 같이 잉크 생성을 종료하는 동작이 검출될 때까지, 잉크 생성 동작으로 해석될 수 있다.
본 발명의 양태들은 위에서 설명된 3개의 컨텍스트로 제한되지 않는다. 다른 컨텍스트가 가능하다.
모달 컨텍스트, 위치 컨텍스트, 동작 컨텍스트, 및/또는 사용자 동작이 잉크 생성 동작인지 여부를 판정하는데 사용된 임의의 다른 타입의 컨텍스트에 기초하여, 사용자 입력 동작은 컨텍스트에 대하여 테스팅되어 사용자 동작이 잉크 생성 동작인지 여부를 판정할 수 있다. 사용자 동작이 잉크 생성 동작인 경우, 입력 동작은 사용자에 의해 생성되는 잉크 콘텐츠를 렌더링하기 위해 잉크 렌더링 스레드와 같은 별개의 프로세스 스레드로 라우팅될 수 있다. 컨텍스트 조건을 충족하지 않는 동작은 사용자 입력 동작을 핸들링하기 위한 기존 프로세스 스레드에서 프로세싱하기 위해 애플리케이션 및/또는 오퍼레이팅 시스템으로 이동될 수 있다. 입력 동작의 테스팅은 입력 동작의 특징을 판정하기 위해 약간의 지연을 일으킬 수 있지만, 잉크 콘텐츠가 사용자에 의해 생성될 때 잉크 콘텐츠를 렌더링하기 위한 별도의 프로세싱 스레드를 사용하는 것에 기초하여 레이턴시의 상당한 감소가 달성될 수 있다(예컨대, 수십 밀리초). 이러한 타입의 테스팅은 종종 "히트 테스팅(hit testing)"이라고 지칭될 수 있다. 본 발명의 하나의 양태에서, 히트 테스팅은 발생하지 않는다. 그 대신, 잉크는 접촉에 기초하여 생성되고 히트 테스팅 없이(그리고 결과적인 지연 없이) 디스플레이된다. 입력이 잉킹 컨텍스트를 만족하지 않는 것으로 판명되는 경우, 그 이후 잉크 프로세스는 취소되고 디스플레이된 습식 잉크는 제거된다.
기본 애플리케이션과 별도의 잉크 렌더링 프로세스 스레드에서의 잉크 콘텐츠를 핸들링하는 것의 하나의 잠재적 고려사항은 새로운 잉크 콘텐츠가 결국 기본 애플리케이션(underlying application)에 전달(또는 동기화)되어야 한다는 것이다. 다양한 양태들에서, 이러한 전달이 디스플레이된 잉크 콘텐츠에서의 변경(디스플레이의 시간적 손실 포함)을 감소시키거나 최소화하면서 및/또는 프로세스 스레드들 둘 모두에 의한 콘텐츠의 이중 디스플레이를 감소시키거나 최소화하면서 발생할 수 있게 하는 시스템 및 방법이 제공된다. 이는 장치의 성능 및 결과적 사용자 경험 모두에서 이점을 제공할 수 있다.
정의
아래 설명에서는, 본 발명에 따른 시스템 및 방법에 관한 예들이 마이크로소프트TM 동작 환경에 기초한 동작 환경을 사용하여 예시화될 수 있다. 따라서, 다양한 양태들을 설명하는데 참조의 용이성을 위해 특정 용어들이 사용된다. 이어지는 분명한 정의들은 다양한 양태들을 이해하는 데 도움을 주고자 제공된다.
습식 잉크(Wet Ink): 잉크 스트로크가 진행 중인 동안, 즉, 접촉(예를 들어, 펜)이 아직 표면에서 떨어지지 않았을 때, 렌더링되는 잉크. 다양한 양태들에서, 습식 잉크는 반건식 잉크 또는 건식 잉크로 변환되거나 대체될 수 있다. 변환 프로세스는 펜이 표면에서 떨어진 이후 얼마 동안 지속될 수 있다. 렌더링된 잉크는 반건식 잉크 또는 건식 잉크 중 어느 하나로 대체될 때까지 습식 잉크로 남아있다. 다양한 양태들에서, 습식 잉크는 별도의 잉크 렌더링 스레드 상에 렌더링된다.
건식 잉크(Dry Ink): 잉크 스트로크가 완료된 이후에 렌더링되거나 다시 렌더링되는 잉크 또는 입력과 다른 소스(지속 잉크 콘텐츠)로부터 로딩된 잉크 데이터로부터 렌더링되는 잉크.
반건식 잉크(Semi-dry Ink): 건식 잉크 층에 대한 동기화를 기다리는 동안 중간 층에서의 잉크. 다양한 양태들에서, 반건식 잉크는 별도의 잉크 렌더링 프로세스 스레드 상에서 렌더링될 수 있음.
습식/건식 동기화(Wet/Dry Synchronization): a) 대응하는 건식 잉크가 가시화될 때 습식 잉크는 여전히 보이지 않고, b) 대응하는 건식 잉크가 가시화되기 전에 습식 잉크는 사라지지 않고, c) 습식 잉크는 입력을 프로세싱하는 것 및 추가 습식 잉크를 렌더링하는 것으로부터 결코 차단되지 않음을 보장할 수 있는 방식으로, 건식 잉크가 건식 잉크 스레드 상에 렌더링되고 가시화되게 하고 습식 잉크는 잉크 스레드 상에서 클리어되게 하는 메커니즘.
호스트(Host): 기본 애플리케이션 또는 프레임워크로서, 이 안에서 사용자가 새로운 잉크 콘텐츠의 일 부분을 생성함.
호스트 스레드(Host Thread): 기본 애플리케이션 또는 사용자 인터페이스용 프로세스 스레드.
잉크 렌더링 스레드(Ink Rendering Thread): 선택된 타입의 입력을 수신하고 프로세싱하여 습식 잉크를 렌더링하는 (바람직하게는 오퍼레이팅 시스템 내에 생성된) 배경 스레드. 이러한 스레드는 프로세스 내에서 습식 잉크의 렌더링을 위한 모든 인스턴스에 의해 공유된다는 점을 유념한다.
건식 잉크 스레드(Dry Ink Thread): 잉크 데이터를 렌더링 컴포넌트 또는 스레드에 전달하는 스레드. 하나의 양태에서, 호스트 스레드는 렌더링 스레드이지만, 전용 잉크 렌더링 스레드를 포함하는 다른 선택도 가능하다.
입력 리디렉션(Input Re-Direction): (습식 잉크의 생성을 위한 입력과 같은) 지정된 특성과 매칭되는 입력을 갖도록 입력 스택에 등록하는 메커니즘으로서, 디폴트로 UI 스레드 대신 지정된 스레드로 자동 라우팅된다. 다양한 양태들에서, 지정된 특성들은 스타일러스, 손가락 (또는 다른 터치 입력), 또는 습식 잉크의 생성에 적합한 다른 입력 장치의 사용과 같은 입력 양식(modality)에 대응할 수 있다. 다양한 양태들에서, 지정된 특성들은 습식 잉크 입력을 수신하도록 정의된 사용자 인터페이스의 일 부분 내에서 이러한 입력 장치의 사용을 추가로 지정할 수 있다.
잉크매니저(InkManager): 윈도우 런타임 클래스. 이는 하나 이상의 잉크 객체에 관한 (필기 인식을 포함하는) 입력, 조작, 및 프로세싱을 관리하는 속성 및 방법을 제공한다.
D2D: 다이렉트 2D. 2D 지오메트리, 비트맵, 및 텍스트에 대한 고성능 및 고품질 렌더링을 제공하는 하드웨어-가속된, 즉시-모드의, 2D 그래픽 API. 다이렉트 3D와 같은 다른 렌더링 기법과의 상호운용성(interop)을 지원하도록 설계된다.
D3D: 다이렉트 3D. 렌더링 파이프라인과의 프리미티브(primitives)를 드로잉하거나 컴퓨트 쉐이더(compute shader)와의 병렬 동작을 수행하기 위한 저레벨 API. 이는 코히어런트 추상화(coherent abstraction)를 통해 상이한 GPU를 숨기고 그래픽 전용 프로세서를 구동하도록 설계된다.
DComp: 다이렉트 합성(DirectComposition). 변환, 효과, 및 애니메이션을 사용한 고성능 비트맵 합성을 가능하게 하는 윈도우 컴포넌트. 이는 다양한 소스로부터 비트맵들을 조합할 수 있고 스크린에 렌더링하기 위해 데스크톱 윈도우 매니저(Desktop Window Manager: DWM)를 활용할 수 있다.
DXGI: 마이크로소프트 DriectX 그래픽 인프러스트럭처. Direct3D 그래픽 런타임에 독립적일 수 있는 저레벨 작업을 관리한다. 이는 또한 여러 버전의 Direct3D에 대한 공통 프레임워크를 제공한다.
잉크 콘텐츠를 핸들링하기 위한 프로세스 흐름(Process Flow for Handling Ink Content)
도 1은 별도의 잉크 렌더링 프로세스 스레드를 사용한 습식 잉크 콘텐츠의 렌더링에 대한 프로세스 흐름에 관한 일 예를 도시한다. 도 1에 도시된 프로세스 흐름에서, 사용자는 마우스, 스타일러스, 펜, 또는 (터치 입력을 수신하기 위한) 터치 인터페이스를 사용하여 습식 잉크 콘텐츠를 생성하기 위한 입력 동작을 제공할 수 있다. 입력 하드웨어(102)는 이러한 입력을 하드웨어 드라이버(104)로 보내고 결국 입력 테스터(110)로 보낼 수 있다. 이러한 테스터는, 하드웨어의 종류 및/또는 입력 동작과 연관된 디스플레이 내에서의 위치를 포함하는, 입력 동작에 대한 컨텍스트를 평가하여, 입력 동작이 습식 잉크 콘텐츠에 대한 동작에 대응하는지 여부를 판정할 수 있다.
사용자 동작이 습식 잉크 콘텐츠를 생성하는 것에 대응하는 경우, 입력 동작은 습식 잉크 프로세스 스레드(120)로 우회된다. 도 1에 도시된 바와 같이, 습식 잉크 프로세스 스레드(120)는 제한된 개수의 동작만을 핸들링하고, 이는 습식 잉크 렌더링 동작을 핸들링할 때의 잠재적 지연을 감소시키거나 최소화할 수 있다. 이것은 일반적인 사용자 인터페이스 및/또는 애플리케이션 프로세스 스레드(130)에 의해 핸들링되는 복수의 타입의 동작과 대조적이다. 예를 들어, 단지 잉크 콘텐츠의 핸들링과 관련하여, 사용자 인터페이스 및/또는 애플리케이션 프로세스 스레드(130)는, 잉크 콘텐츠의 일반적인 디스플레이를 위한 애플리케이션 프로그램 인터페이스(132)를 제공할 수 있고, 잉크 스트로크가 추가되었을 경우 입력(136)을 수신함으로써 결과의 잉크 콘텐츠가 디스플레이될 수 있고, 직렬화된 잉크 콘텐츠(serialized ink content)와 같이 이전에 생성된 건식 잉크 콘텐츠(138)의 디스플레이를 핸들링할 수 있다.
습식 잉크 입력을 수신한 이후, 습식 잉크 프로세스 스레드(120)는 습식 잉크 콘텐츠를 렌더링(124)할 수 있고 렌더링된 콘텐츠를 합성기(150)와 같은 오퍼레이팅 시스템의 그래픽 프로세싱 요소들로 다시 보낼 수 있다. 결국 렌더링된 습식 잉크는 사용자에게 디스플레이하기 위해 하드웨어 그래픽 디스플레이 요소(160)로 보내진다.
도 1에 도시된 프로세스 흐름을 사용하는 시스템은 다양한 이점을 제공할 수 있다. 예를 들어, 이러한 타입의 프로세스 흐름은, 애플리케이션/UI 스레드에 독립적인, 즉, 고 우선순위 배경 스레드(도 1에 도시된 습식 잉크 스레드)로 입력이 흐르는, 저 레이턴시 습식 잉크 렌더링을 제공할 수 있고 UI/애플리케이션 스레드 동작에 의해 절대 차단되지 않을 것이다. 선택적이지만 바람직하게는, 시스템은 디폴트 펜 타입뿐만 아니라 예측에 대해 잘 작동하는 습식 베지어 알고리즘(wet Bezier algorithms)을 사용하여 기존 시스템에 비해 15ms 이상까지 레이턴시를 감소시킬 수 있다. 그러한 시스템은 또한 잉크 특성을 변경하기 위한 압력 모델링과 호환가능할 수 있다. 추가적으로, 오퍼레이팅 시스템 내에 존재하는 습식 잉크 프로세스 스레드에 부분적으로 기초하여, 습식 잉크 프로세스 스레드는 잉크 드로잉 속성(색상, 형상, 크기, 종류 등)과 매칭되는 펜 커서를 렌더링할 수 있다.
도 2는 습식 잉크(즉, 사용자에 의한 생성 프로세스 동안의 잉크) 및 건식 잉크(즉, 사용자에 의해 이전에 입력되고/되거나 데이터 소스로부터 획득된 잉크 콘텐츠) 둘 모두를 디스플레이하기 위한 프로세스 스레드를 포함하는 다른 프로세스를 도시한다. 도 1에 도시된 프로세스 흐름에서, 사용자에 의해 생성된 잉크 콘텐츠는 잉크 콘텐츠의 생성이 완료된 이후에 습식 잉크 프로세스 스레드에 의해 렌더링될 수 있다. 도 1에서의 건식 잉크 콘텐츠 렌더링은, 소스 파일로부터 검색된 콘텐츠와 같이 이전에 정의된 건식 잉크 콘텐츠의 렌더링에 대응한다. 도 2에서, 사용자에 의해 생성된 잉크 콘텐츠를 습식 잉크 프로세스 스레드로부터 사용자 인터페이스/애플리케이션/건식 잉크 콘텐츠의 렌더링을 위한 다른 스레드로 전달하는 것을 허용하는 추가 흐름이 도시된다.
도 2에서, 습식 잉크 스레드(120)는 2개의 스레드와 통신하는 컴포넌트를 통해 사용자 인터페이스 스레드(130)(및 선택적인 별도 건식 잉크 렌더링 스레드(233))와 통신할 수 있다. 이러한 컴포넌트는 습식 잉크 스레드(120)로부터 사용자 인터페이스 스레드(130)로의 습식 잉크의 전달을 동기화하는 잉크 동기화(InkSync) 컴포넌트를 포함할 수 있다. 컴포넌트는 전달이 완료되었다는 검증을 컴포넌트에 제공하는 커밋 매니저(commit manager)(246)를 또한 포함할 수 있다. 예를 들어, 커밋 매니저(246)는 사용자 인터페이스 스레드(130)에게 습식 잉크로부터 중간 잉크로의 변환이 습식 잉크 스레드(120)에 의해 완료된 때를 알려줄 수 있다. 이와 마찬가지로, 커밋 매니저(246)는 습식 잉크 스레드(120)에게 사용자 인터페이스 스레드(130)가 전달된 건식 잉크 콘텐츠의 렌더링이 시작된 때를 알려줄 수 있고, 이로써 습식 잉크 스레드(120)는 대응하는 중간 잉크 콘텐츠의 렌더링을 중지할 수 있다.
컴포넌트 관계(Component Relationships)
도 3은 사용자 생성된 잉크 콘텐츠(습식 잉크)의 렌더링뿐만 아니라 별도의 잉크 렌더링 스레드로부터 애플리케이션과 연관된 프로세스 스레드로의 습식 잉크의 전달을 위해 사용될 수 있는 다양한 컴포넌트들 사이의 관계를 도시한다. 도 3에서, 호스트 애플리케이션(310) 또는 (오퍼레이팅 시스템을 잠재적으로 포함하는) 다른 프레임워크는 하나 이상의 애플리케이션 프로그래밍 인터페이스(320)를 통해 전체 "다이렉트잉크 코어(DirectInk Core)" 모듈(330)과 통신할 수 있다. 도 3에 도시된 애플리케이션 프로그램 인터페이스(320)는 입력 인터페이스 및 잉크 핸들링 인터페이스를 포함한다. 습식 잉크 입력(또는 습식 잉크 프로세스 스레드에 의해 핸들링될 다른 타입의 입력)으로 검출되는 입력이 수신되는 경우, 입력은 모듈(330)로 보내진다.
다이렉트 잉크 코어(DirectInkCore) 실행 객체(332)는 모듈(330) 내에 도시된 다른 객체들 중 대부분의 객체를 생성하고 조정하는 컨테이너 객체이다. 마샬러(Marshaller)(342)는 잉크 스레드를 소유하고 다른 컴포넌트들로부터의 통지 메커니즘과 분리하여 스레드들 사이의 통지를 위한 메커니즘을 실행한다. 입력 컨텍스트 객체(Input Context object)(336)는 입력 리디렉션(redirection)을 등록하고 잉크 스레드 상에서 입력을 수신하는 입력 동기화 객체이다. 잉크 동기화 객체(Ink Sync object)(346)는 습식/건식 잉크 동기화를 위한 메커니즘을 구현하는 동기화 엔진이다. 커밋 매니저(352)는 DComp 커밋을 수행하고 DComp 커밋 완료 통지의 세부사항으로부터 다른 컴포넌트들을 격리한다. 렌더 매니저(Render Manager)(370)는 습식, 반건식 및 건식 층에 대해 사용될 렌더러 인스턴스(renderer instances)를 추적하고 적절한 렌더러 인스턴스로 렌더 요청을 라우팅한다. 렌더 매니저(370)는 또한 요청된 바와 같이 디폴트 렌더러 인스턴스를 생성하고 요청된 바와 같이 커스텀(custom) 렌더러 인스턴스를 생성할 수 있다. 렌더러(372)는 고레벨 렌더러 객체이다. 렌더러 실행(374)은 표면/컨텍스트, 잉크 데이터 및 드로잉 속성을 고려하여, 실제 렌더링을 수행하는 저레벨 렌더러 객체이다. 잉크 모델러(376)는 선택적으로는 예측과 함께 입력으로부터 부드러운 베지어 세그먼트를 생성한다.
잉크 트리 데이터(Ink Tree Data) 객체(340)는 습식 층, 반건식 층 및 건식 층에 대한 연관 잉크 데이터를 따라 다이렉트 잉크 코어(DirectInkCore) 인스턴스에 대한 잉크 서브트리를 나타내는 DComp 비주얼 서브트리를 생성하고 유지하는 데이터 객체이다.
도 4는 습식 잉크에 대응하는 입력의 도착 및 습식 잉크 입력의 렌더링을 핸들링하기 위한 데이터 흐름을 도시한다. 도 4에서, 습식 잉크로 식별되는 입력은 시스템 입력 스택(410)에 의해 입력 컨텍스트 컴포넌트(420)로 전달된다. 입력은 선택적으로 임의의 입력 플러그 인(425)으로 보내질 수 있다. 입력은 또한 잉크 동기화(InkSync) 컴포넌트(430)로 보내진다. 잉크 동기화(InkSync)(430)는 새로운 잉크 컴포넌트가 생성되는 잉크 트리 데이터(InkTreeData) 컴포넌트(440)로 정보를 보낼 수 있다. 잉크 동기화(InkSync)는 또한 렌더 매니저(450)에게 습식 잉크를 렌더링하도록 지시할 수 있다. 마지막으로, 잉크 콘텐츠의 엔트리가 완료되는 경우, 잉크 동기화(InkSync)(430)는 커밋 매니저(460)에게 통지할 수 있다.
도 5는 사용자에 의한 잉크 콘텐츠 부분의 엔트리의 완료 이후 반건식 또는 중간 잉크의 렌더링에 대한 데이트 흐름을 도시한다. 도 5에서, 데이터 흐름은 잉크 동기화(Ink Sync) 컴포넌트(430)가 잉크 트리 데이터(InkTreeData)(440)에게 잉크 콘텐츠 부분의 형성이 완료되었음을 통지할 때 시작하고, 잉크 컨텐츠 부분은 습식 잉크 상태로부터 중간 잉크 상태로 이동될 수 있다. 렌더 매니저(450)는, 중간 또는 반건식 잉크 렌더러 인스턴스를 사용하여 잉크 콘텐츠의 완료된 부분을 렌더링하라는 명령어를 수신할 수 있고, 이는 습식 잉크 렌더러 인스턴스가 다른 잉크 컨텐츠 생성 이벤트에 대해 준비될 수 있게 한다. 커밋 매니저(460)에게 통지한 이후, 마샬러(Marshaller)(470)는 잉크가 호스트 또는 기본 애플리케이션에 의해 관리되는 건식 잉크 렌더 프로세스 스레드로의 전달에 이용가능하다는 통지를 전달받을 수 있다.
도 6은 습식 잉크 프로세스 스레드로부터 건식 잉크 프로세스 스레드로의 잉크의 (동기화된) 전달을 위한 프로세스 흐름을 도시한다. 도 6에서, 잉크 동기화(InkSync)(403)는 마샬러(Marshaller)(470)로부터 잉크 이용가능(Ink Available) 신호를 수신한다. 잉크 동기화(InkSync)(430)는 그 이후 잉크 트리 데이터(InkTreeData)(440)에게 반건식 상태에서 건식 상태로 잉크 콘텐츠를 카피하라고 알린다. 잉크를 건식 잉크로 렌더링하기 위한 스트로크 정보는 잉크 콜백(Ink Callback)(672)을 사용하여 잉크 핸들러(Ink Handler)(680)로 보내진다. 잉크 콘텐츠는 또한 건식 잉크 렌더러 인스턴스로 렌더링하기 위한 렌더 매니저(Render Manager)(450)로 보내진다. 이것이 완료된 이후, 잉크 동기화(InkSync)(430)는 습식 잉크 스레드가 더 이상 잉크 콘텐츠를 핸들링하지 않도록 잉크 트리 데이터(InkTreeData)(440)에게 잉크 컨텐츠의 반건식 버전이 숨겨질 수 있음을 통지한다.
도 7은 습식 잉크 렌더링 스레드(잉크)에 대한 DComp 인스턴스와 건식 잉크 렌더링 스레드(호스트)를 위한 건식 잉크 렌더링 스레드(호스트)에 대한 DComp 인스턴스 사이의 통신 흐름을 도시한다. 도 7에서의 통신 흐름은 습식 잉크를 건식 잉크로 전달하는 것이 잉크 콘텐츠의 디스플레이에서의 불연속을 피하면서 건식 잉크 스레드 및 습식 잉크 스레드 둘 모두가 잉크 콘텐츠를 디스플레이하도록 시도하는 시간을 감소시키거나 최소화하도록 동기화될 수 있는 방법을 보여준다.
도 7에서, 잉크 스레드(703)는 습식에서 세미 습식 프로세스(710)로 이동을 시작함으로써 호출을 개시한다. DComp 컴포넌트(701)는 커밋 호출(712)을 갖는 잉크 스레드를 확인한다. 그 다음, 잉크 이용가능(InkAvailable) 호출(714)은 호스트 스레드(706)로 보내진다. 호스트 스레드(706)는 반건식에서 건식으로의 카피 호출(716)을 개시하여 잉크 트리 내에서 데이터를 이동시킨다. 이러한 카피가 완료된 이후, 반건식 데이터를 숨기는 호출(718)이 행해진다. 반건식에서 건식으로의 전이가 커밋 호출(722)을 갖는 DComp 호스트 스레드(708)에 의해 확인된다. 그 다음, 건식 잉크로의 반건식 잉크의 전달이 완료되었다는 호출(724)이 잉크 스레드(703)에 반환된다. 그 다음, 습식 잉크 스레드에 의한 반건식 잉크의 렌더링이 클리어된다(726). 그 다음 반건식 잉크의 클리어링에 관한 호출(734)이 호스트 스레드(706)로 보내진다.
추가 예들
본 발명의 다양한 실시예들에 관한 개요를 간략하게 설명하면서, 본 발명을 수행하기에 적합한 예시적인 동작 환경이 이제부터 설명된다. 본 발명의 실시예들은 컴퓨터나 다른 머신(예컨대, 퍼스널 데이터 보조장치 또는 다른 핸드헬드 장치)에 의해 실행되는 컴퓨터 실행가능 명령어(예컨대, 프로그램 모듈)를 포함하는, 컴퓨터 코드 또는 머신 사용가능한 명령어의 일반적인 맥락으로 설명될 수 있다. 일반적으로, 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함하는 프로그램 모듈은 특정한 작업을 수행하거나 특정한 추상 데이터 타입을 구현하는 코드를 지칭한다. 본 발명은, 핸드헬드 장치, 가전제품, 범용 컴퓨터, 특수 컴퓨팅 장치 등을 포함하는, 다양한 시스템 구성으로 실시될 수 있다. 본 발명은 또한 작업이 통신 네트워크를 통해 링크된 원격 프로세싱 장치들에 의해 수행되는 분산 컴퓨팅 환경에서 실시될 수도 있다.
적합한 컴퓨팅 장치는 장치들, 즉, 메모리, 하나 이상의 프로세서, 하나 이상의 프레젠테이션 컴포넌트, 입력/출력(I/O) 포트, I/O 컴포넌트, 및 전원을 직접 또는 간접적으로 연결하는 버스를 포함할 수도 있다. 버스는 하나 이상의 버스(예컨대, 어드레스 버스, 데이터 버스, 또는 이들의 조합)가 무엇인지를 나타낸다. 다양한 컴포넌트들이 명료성을 위해 개별 컴포넌트들로 설명되었지만, 실제로는 다양한 컴포넌트들의 윤곽이 그렇게 명료하지 않고, 비유적으로는 선들이 더 정확하게는 회색이거나 흐릴 것이다. 예를 들어, 디스플레이 장치와 같은 프레젠테이션 컴포넌트는 I/O 컴포넌트인 것으로 고려할 수 있다. 또한, 많은 프로세서가 메모리를 갖는다. "컴퓨팅 장치"의 범주 내에서 모두가 고려되기 때문에, "워크스테이션", "서버", "랩톱", "핸드헬드 장치", "태블릿" 등과 같은 카테고리들 사이의 구별이 행해지지 않는다.
컴퓨터 저장 매체는, 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기법으로 구현된 휘발성 및 비휘발성, 착탈식 및 비착탈식 매체를 포함한다. 컴퓨터 저장 매체는, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 전기적 소거가능 프로그램가능 판독 전용 메모리(EEPROM), 플래시 메모리 또는 다른 메모리 기법, CD-ROM, 디지털 다목적 디스크(DVD) 또는 다른 홀로그래픽 메모리, 자기 카세트, 자기 테이프, 자기 디스크 저장소 또는 다른 자기 저장 장치, 또는 원하는 데이터를 인코딩하는데 사용될 수 있고 컴퓨팅 장치(100)에 의해 액세스될 수 있는 임의의 다른 매체를 포함하나 이로 제한되지 않는다. 일 실시예에서, 컴퓨터 저장 매체는 플래시 메모리와 같은 일시적 컴퓨터 저장 매체로부터 선택될 수 있다. 이러한 메모리 기법은 데이터를 잠깐, 일시적으로, 또는 영구적으로 저장할 수 있다. 컴퓨터 저장소는 통신 매체를 포함하지 않고 제외한다. 컴퓨터 저장 매체는 비일시적이고 전파 데이터 신호를 제외한다.
한편, 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 반송파 또는 다른 전송 메커니즘과 같은 변조된 데이터 신호에서의 다른 데이터를 이용하고 임의의 정보 전달 매체를 포함한다. 용어 "변조된 데이터 신호"는 그러한 특성 세트 중 하나 이상을 갖거나 신호에 정보를 인코딩하는 방식으로 변경된 신호를 의미한다. 예지만 제한이 아닌 방식으로, 통신 매체는 유선 네트워크 또는 직접-유선(direct wired) 접속과 같은 유선 매체 및 음향, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함한다.
메모리는 휘발성 및/또는 비휘발성 메모리의 형태의 컴퓨터 판독가능 매체를 포함할 수 있다. 메모리는 착탈식, 비착탈식, 또는 이들의 조합일 수도 있다. 예시적인 하드웨어 장치는 고체상태 메모리, 하드 드라이브, 광 디스크 드라이브 등을 포함한다. 컴퓨팅 장치는 메모리 또는 I/O 컴포넌트와 같은 다양한 엔티티로부터 데이터를 판독가능 하나 이상의 프로세서를 포함할 수 있다. 프레젠테이션 컴포넌트(들)는 데이터 표시를 사용자 또는 다른 장치에 나타낸다. 예시적인 프레젠테이션 컴포넌트는 디스플레이 장치, 스피커, 프린팅 컴포넌트, 진동 컴포넌트 등을 포함한다.
I/O 포트는 컴퓨팅 장치로 하여금 일부는 내장되는 I/O 컴포넌트를 포함하는 다른 장치에 논리적으로 연결되게 할 수 있다. 예시적인 컴포넌트는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 스캐너, 프린터, 무선 장치 등을 포함할 수 있다. I/O 컴포넌트는, 터치 입력(예를 들어, 키보드 또는 마우스와의 상호작용에 기초한 디스플레이 상의 간접 이동과 대조적으로, 디스플레이 인터페이스에 대한 터칭 또는 근접), 제스처 입력, 햅틱 입력, 음성 입력, 근접 입력, 앞에서 식별된 입력 장치와 같은 2차 입력 장치와의 상호작용 또는 임의의 다른 편리한 종류의 입력과 같은, 복수의 입력 유형으로부터 하나 이상의 입력 유형을 수신하는 컴포넌트들을 포함할 수 있다.
컴퓨팅 장치는 무선장치를 포함할 수 있다. 무선장치는 무선 통신을 전송 및 수신한다. 컴퓨팅 장치는 다양한 무선 네트워크를 통해 수신된 통신 및 매체에 구성된 무선 단말일 수 있다. 컴퓨팅 장치(1100)는 CDMA(code division multiple access), GSM(global system for mobiles), TDMA(time division multiple access) 등과 같은 무선 프로토콜을 통해 통신하여 다른 장치들과 통신할 수 있다. 무선 통신은 단거리 접속, 장거리 접속, 또는 장거리와 단거리 무선 통신 접속의 조합일 수 있다. 우리가 "단거리" 및 "장거리" 유형의 접속으로 지칭할 때, 2개의 장치 차이의 공간적 관계를 지칭하는 것을 의미하지 않는다. 그 대신, 우리는 단거리 및 장거리를 접속들(즉, 1차 접속 및 2차 접속)에 관한, 상이한 카테고리 또는 유형을 일반적으로 지칭한다. 802.11 프로토콜을 사용하는 WLAN 접속과 같은, 단거리 접속은 무선 통신 네트워크에 대한 액세스를 제공하는 장치(예를 들어, 모바일 핫스팟)에 대한 Wi-Fi® 접속을 포함할 수 있다. 다른 컴퓨팅 장치로의 블루투스 접속은 단거리 접속에 관한 2번째 예시이다. 장거리 접속은 CDMA, GPRS, GSM, TDMA, 및 802.16 프로토콜 중 하나 이상을 사용하는 접속을 포함할 수 있다.
본 발명의 실시예들은, 모든 측면에서 제한적이기보다는 예시적인 것으로 의도되는 특정한 실시예들에 관하여 설명되었다. 대안적인 실시예들이 본 발명의 범주를 벗어나지 않으면서 본 발명이 포함되는 기술분야의 당업자에게 명백할 것이다.
예 1. 디스플레이 장치 상에 잉크 콘텐츠를 렌더링하기 위한 방법은, 잉크 입력 동작을 수신하기 위한 동작 컨텍스트(action context)를 정의하는 단계 - 상기 동작 컨텍스트는 적어도 모달 컨텍스트(modal context)를 포함함 - 와, 애플리케이션에 의해 입력 동작을 수신하는 단계 - 상기 입력 동작은 입력 컨텍스트를 포함함 - 와, 상기 입력 동작을 잉크 생성 동작으로 검출하는 단계 - 상기 수신된 입력 동작은 상기 입력 컨텍스트가 상기 정의된 동작 컨텍스트에 대응하는 것에 기초하여 잉크 생성 동작으로 검출되고, 상기 검출된 잉크 생성 동작은 잉크 컨텐츠에 대응함 - 와, 상기 잉크 생성 동작을 습식 잉크 렌더링 스레드(wet-ink rendering thread)에게 전달하는 단계 - 상기 습식 잉크 렌더링 스레드는 상기 애플리케이션에 대한 애플리케이션 프로세싱 스레드와 상이함 - 와, 상기 습식 잉크 렌더링 스레드에 의해, 레이턴시 임계치보다 적은 레이턴시로 상기 잉크 콘텐츠를 렌더링하는 단계와, 잉크 생성의 종료에 대응하는 입력 동작을 검출하는 단계를 포함한다.
예 2. 예 1의 방법에 있어서, 상기 습식 잉크 렌더링 스레드로부터 애플리케이션 렌더링 스레드로 상기 잉크 콘텐츠를 전달하는(transferring) 단계 - 상기 애플리케이션 렌더링 스레드는 상기 애플리케이션 프로세싱 스레드와 선택적으로 상이함 - 와, 상기 애플리케이션 렌더링 스레드에 의해, 전달된 상기 잉크 콘텐츠를 렌더링하는 단계와, 상기 습식 잉크 렌더링 스레드에 의해 렌더링된 상기 잉크 콘텐츠를 삭제하는 단계를 더 포함한다.
예 3. 예 2의 방법에 있어서, 상기 습식 잉크 렌더링 스레드로부터 상기 애플리케이션 렌더링 스레드로 상기 잉크 콘텐츠를 전달하는 단계는, 상기 잉크 생성의 종료에 대응하는 상기 입력 동작을 검출한 이후에, 상기 잉크 콘텐츠를 중간 잉크 콘텐츠(intermediate ink content)로 변환하는 단계와, 상기 중간 잉크 콘텐츠를 상기 애플리케이션 렌더링 스레드로 전달하는 단계와, 상기 애플리케이션 렌더링 스레드에 의한 상기 전달된 중간 잉크 콘텐츠의 렌더링을 상기 습식 잉크 렌더링 스레드에 의해 렌더링된 상기 잉크 콘텐츠의 삭제와 동기화하는(synchronizing) 단계를 포함한다.
예 4. 예 1 내지 3의 방법 중 어느 하나의 방법에 있어서, 상기 레이턴시 임계치는 약 75밀리 초 이하거나, 약 60밀리 초 이하거나, 약 50밀리 초 이하이다.
예 5. 예 1 내지 4의 방법 중 어느 하나의 방법에 있어서, 상기 모달 컨텍스트는 펜 입력, 스타일러스 입력, 터치 입력, 마우스 입력, 또는 이들의 조합의 입력 모드를 포함한다.
예 6. 예 1 내지 5의 방법 중 어느 하나의 방법에 있어서, 상기 정의된 동작 컨텍스트는 위치 컨텍스트를 더 포함한다.
예 7. 예 6의 방법에 있어서, 상기 위치 컨텍스트는 디스플레이 장치의 디스플레이 영역의 하나의 구역을 포함하고, 상기 하나의 구역은 상기 디스플레이 영역의 전체 영역보다 작다.
예 8. 예 6 또는 예 7에 있어서, 상기 위치 컨텍스트는 디스플레이 장치의 디스플레이 영역의 복수의 구역을 포함하고, 상기 위치 컨텍스트는 복수의 디스플레이 영역의 복수의 구역을 포함한다.
예 9. 예 1 내지 예 8 중 어느 하나의 방법에 있어서, 상기 입력 컨텍스트 및 상기 동작 컨텍스트 중 적어도 하나는 상기 습식 잉크 렌더링 스레드에 의해 렌더링된 잉크에 대한 하나 이상의 디스플레이 속성을 더 포함한다.
예 10. 예 9의 방법에 있어서, 상기 습식 잉크 렌더링 스레드에 의한 상기 잉크 콘텐츠의 렌더링 동안 상기 습식 잉크 렌더링 스레드에 의해 렌더링된 잉크에 대한 하나 이상의 디스플레이 속성의 변경을 검출하는 단계와, 상기 변경된 하나 이상의 디스플레이 속성을 사용하여 상기 잉크 콘텐츠의 적어도 일 부분을 렌더링하는 단계를 더 포함한다.
예 11. 예 10의 방법에 있어서, 상기 하나 이상의 디스플레이 속성에서의 변경을 검출하기 이전에 렌더링된 잉크 콘텐츠의 적어도 일 부분은, 상기 입력 동작이 잉크 생성의 종료에 대응하는 것을 검출하기 이전에 상기 변경된 하나 이상의 디스플레이 속성으로 렌더링된다.
예 12. 예 1 내지 예 11 중 어느 하나의 방법에 있어서, 상기 동작 컨텍스트는 잉크 생성 컨텍스트를 더 포함한다.
전술한 바에 따라, 본 발명은 명백하고 구조에 내재된 다른 장점과 함께 상술한 모든 목적 및 목적을 달성하기에 적합한 것임을 알 수 있다.
특정 특징 및 하위조합이 이용되고 다른 특징 및 하위조합을 참조하지 않고 사용될 수 있다는 것을 이해할 것이다. 이는 특허청구범위에 의해 고려되며 그 범위 내에 있다.

Claims (20)

  1. 디스플레이 장치 상에 잉크 콘텐츠를 렌더링하는 방법으로서,
    잉크 입력 동작을 수신하기 위한 동작 컨텍스트를 정의하는 단계와,
    애플리케이션에 의해, 입력 컨텍스트를 갖는 입력 동작을 수신하는 단계와,
    상기 입력 컨텍스트가 상기 동작 컨텍스트에 의해 지정된 기준을 만족하기 때문에, 상기 입력 동작을 잉크 생성 동작으로 검출하는 단계와,
    상기 잉크 생성 동작을 습식 잉크 렌더링 스레드로 보내는(directing) 단계 - 상기 습식 잉크 렌더링 스레드는 애플리케이션을 렌더링하는 상기 애플리케이션에 대한 애플리케이션 프로세싱 스레드와 상이함 - 와,
    상기 습식 잉크 렌더링 스레드에 의해, 습식 잉크 콘텐츠를 생성하도록 레이턴시 임계치 미만의 레이턴시로 잉크 생성 동작 콘텐츠를 렌더링하는 단계와,
    상기 습식 잉크 콘텐츠를 디스플레이하기 위해 출력하는 단계와,
    잉크 생성의 종료에 대응하는 추가 입력 동작을 검출하는 단계와,
    상기 잉크 생성의 종료에 대응하는 상기 추가 입력 동작을 검출한 후, 상기 습식 잉크 콘텐츠를 중간 잉크 콘텐츠(intermediate ink content)로 변환하는 단계와,
    상기 중간 잉크 콘텐츠를 상기 애플리케이션 렌더링 스레드로 전달(transferring)하는 단계와,
    상기 애플리케이션 렌더링 스레드에 의한 상기 중간 잉크 콘텐츠의 렌더링을 상기 습식 잉크 렌더링 스레드에 의해 렌더링된 상기 습식 잉크 콘텐츠의 제거와 동기화하는 단계와,
    상기 잉크 생성 동작을 애플리케이션 프로세싱 스레드로 전달하는 단계와,
    상기 애플리케이션 프로세싱 스레드에 의해, 건조 잉크 콘텐츠(dry ink content)를 생성하도록 상기 잉크 생성 동작을 렌더링하는 단계와,
    상기 습식 잉크 렌더링 스레드에 의해 렌더링된 상기 중간 잉크 콘텐츠를 디스플레이에서 제거하고 상기 건조 잉크 콘텐츠를 디스플레이하기 위해 출력하는 단계를 포함하는
    잉크 콘텐츠 렌더링 방법.
  2. 제 1 항에 있어서
    모달 컨텍스트는 펜 입력, 스타일러스 입력, 터치 입력, 마우스 입력, 또는 이들의 조합의 입력 모드를 포함하는
    잉크 콘텐츠 렌더링 방법.
  3. 제 1 항에 있어서,
    상기 동작 컨텍스트는 위치 컨텍스트를 더 포함하는
    잉크 콘텐츠 렌더링 방법.
  4. 제 3 항에 있어서,
    상기 위치 컨텍스트는 상기 디스플레이 장치의 디스플레이 영역(area)의 구역(region)을 포함하고,
    상기 구역은 상기 디스플레이 영역의 전체 영역보다 작은
    잉크 콘텐츠 렌더링 방법.
  5. 제 3 항에 있어서,
    상기 위치 컨텍스트는 상기 디스플레이 장치의 디스플레이 영역의 복수의 구역을 포함하는
    잉크 콘텐츠 렌더링 방법.
  6. 제 3 항에 있어서,
    상기 위치 컨텍스트는 복수의 디스플레이 영역으로부터의 복수의 구역을 포함하는
    잉크 콘텐츠 렌더링 방법.
  7. 제 1 항에 있어서,
    상기 입력 컨텍스트와 상기 동작 컨텍스트 중 적어도 하나는 상기 습식 잉크 렌더링 스레드에 의해 렌더링된 상기 습식 잉크 콘텐츠에 대한 하나 이상의 디스플레이 속성을 더 포함하는
    잉크 콘텐츠 렌더링 방법.
  8. 제 7 항에 있어서,
    상기 하나 이상의 디스플레이 속성이 업데이트된 것을 검출하여, 상기 습식 잉크 렌더링 스레드에 의한 상기 잉크 생성 동작의 렌더링 동안 상기 습식 잉크 렌더링 스레드에 의해 렌더링된 상기 습식 잉크 콘텐츠에 대해 변경된 하나 이상의 디스플레이 속성을 형성하는 단계와,
    상기 변경된 하나 이상의 디스플레이 속성을 사용하여 상기 잉크 생성 동작의 적어도 일 부분을 렌더링하는 단계를 더 포함하는
    잉크 콘텐츠 렌더링 방법.
  9. 제 8 항에 있어서,
    상기 하나 이상의 디스플레이 속성이 업데이트된 것을 검출하기 이전에 렌더링된 상기 습식 잉크 콘텐츠의 적어도 일 부분은, 상기 잉크 생성의 종료에 대응하는 추가 입력 동작을 검출하기 이전에 상기 변경된 하나 이상의 디스플레이 속성을 사용하여 렌더링되는
    잉크 콘텐츠 렌더링 방법.
  10. 제 1 항에 있어서,
    상기 동작 컨텍스트는 잉크 생성 컨텍스트를 더 포함하는
    잉크 콘텐츠 렌더링 방법.
  11. 컴퓨터 실행가능 명령어를 포함하는 하나 이상의 컴퓨터 저장 매체로서,
    상기 컴퓨터 실행가능 명령어는, 실행될 때, 디스플레이 장치 상에 잉크 콘텐츠를 렌더링하는 방법을 제공하며,
    상기 방법은,
    잉크 입력 동작을 수신하기 위한 동작 컨텍스트를 정의하는 단계와,
    애플리케이션에 의해, 입력 컨텍스트를 포함하는 입력 동작을 수신하는 단계와,
    상기 입력 컨텍스트가 상기 동작 컨텍스트에 의해 명시된 기준을 충족하기 때문에, 상기 입력 동작을 잉크 생성 동작으로 검출하는 단계와,
    상기 잉크 생성 동작을 습식 잉크 렌더링 스레드로 보내는 단계 - 상기 습식 잉크 렌더링 스레드는 상기 애플리케이션에 대한 애플리케이션 프로세싱 스레드와 상이함 - 와,
    상기 습식 잉크 렌더링 스레드에 의해, 상기 잉크 생성 동작을 렌더링하는 단계와,
    상기 습식 잉크 콘텐츠를 디스플레이하기 위해 출력하는 단계와,
    잉크 생성의 종료에 대응하는 추가 입력 동작을 검출하는 단계와,
    상기 잉크 생성의 종료에 대응하는 상기 추가 입력 동작을 검출한 후, 상기 습식 잉크 콘텐츠를 중간 잉크 콘텐츠로 변환하는 단계와,
    상기 중간 잉크 콘텐츠를 상기 애플리케이션 렌더링 스레드로 전달하는 단계와,
    상기 애플리케이션 렌더링 스레드에 의한 상기 중간 잉크 콘텐츠의 렌더링을 상기 습식 잉크 렌더링 스레드에 의해 렌더링된 상기 습식 잉크 콘텐츠의 제거와 동기화하는 단계와,
    상기 잉크 생성 동작을 상기 습식 잉크 렌더링 스레드로부터 애플리케이션 프로세싱 스레드로 전달하는 단계와,
    상기 애플리케이션 프로세싱 스레드에 의해, 건조 잉크 콘텐츠를 생성하도록 상기 잉크 생성 동작을 렌더링하는 단계와,
    상기 습식 잉크 렌더링 스레드에 의해 렌더링된 상기 중간 잉크 컨텐츠를 제거하고 상기 건조 잉크 컨텐츠를 디스플레이하기 위해 출력하는 단계를 포함하는
    하나 이상의 컴퓨터 저장 매체.
  12. 제 11 항에 있어서,
    모달 컨텍스트는 펜 입력, 스타일러스 입력, 터치 입력, 마우스 입력, 또는 이들의 조합의 입력 모드를 포함하는
    하나 이상의 컴퓨터 저장 매체.
  13. 제 11 항에 있어서,
    상기 동작 컨텍스트는 위치 컨텍스트를 더 포함하고,
    상기 위치 컨텍스트는 상기 디스플레이 장치의 디스플레이 영역의 구역을 포함하고,
    상기 구역은 상기 디스플레이 영역의 전체 영역보다 작은
    하나 이상의 컴퓨터 저장 매체.
  14. 제 11 항에 있어서,
    상기 동작 컨텍스트는 위치 컨텍스트를 더 포함하고,
    상기 위치 컨텍스트는 상기 디스플레이 장치의 디스플레이 영역의 복수의 구역을 포함하는
    하나 이상의 컴퓨터 저장 매체.
  15. 제 11 항에 있어서,
    상기 동작 컨텍스트는 위치 컨텍스트를 더 포함하고,
    상기 위치 컨텍스트는 복수의 디스플레이 영역으로부터의 복수의 구역을 포함하는
    하나 이상의 컴퓨터 저장 매체.
  16. 제 11 항에 있어서,
    상기 입력 컨텍스트와 상기 동작 컨텍스트 중 적어도 하나는 상기 습식 잉크 렌더링 스레드에 의해 렌더링된 상기 습식 잉크 콘텐츠에 대한 하나 이상의 디스플레이 속성을 더 포함하는
    하나 이상의 컴퓨터 저장 매체.
  17. 컴퓨터 실행가능 명령어를 포함하는 하나 이상의 컴퓨터 저장 매체로서,
    상기 컴퓨터 실행가능 명령어는, 실행될 때, 디스플레이 장치 상에 잉크 콘텐츠를 렌더링하는 방법을 제공하며,
    상기 방법은,
    애플리케이션에 의해, 입력 컨텍스트를 포함하는 입력 동작을 수신하는 단계와,
    상기 입력 컨텍스트가 동작 컨텍스트에 의해 명시된 기준을 충족하기 때문에, 상기 입력 동작을 잉크 콘텐츠에 대응하는 잉크 생성 동작으로 검출하는 단계와,
    상기 잉크 생성 동작을 습식 잉크 렌더링 스레드에게 보내는 단계 - 상기 습식 잉크 렌더링 스레드는 상기 애플리케이션에 대한 애플리케이션 프로세싱 스레드와 상이함 - 와,
    상기 습식 잉크 렌더링 스레드에 의해, 습식 잉크 콘텐츠를 생성하도록 레이턴시 임계치 미만의 레이턴시로 상기 잉크 생성 동작을 렌더링하는 단계와,
    상기 습식 잉크 콘텐츠를 디스플레이하기 위해 출력하는 단계와,
    잉크 생성의 종료에 대응하는 추가 입력 동작을 검출하는 단계와,
    상기 잉크 생성의 종료에 대응하는 상기 추가 입력 동작을 검출한 후, 상기 습식 잉크 콘텐츠를 중간 잉크 콘텐츠로 변환하는 단계와,
    상기 중간 잉크 콘텐츠를 상기 애플리케이션 렌더링 스레드로 전달하는 단계와,
    상기 애플리케이션 렌더링 스레드에 의한 상기 중간 잉크 콘텐츠의 렌더링을 상기 습식 잉크 렌더링 스레드에 의해 렌더링된 상기 습식 잉크 콘텐츠의 제거와 동기화하는 단계와,
    상기 잉크 생성 동작을 상기 습식 잉크 렌더링 스레드로부터 애플리케이션 프로세싱 스레드로 전달하는 단계와,
    상기 애플리케이션 프로세싱 스레드에 의해, 건조 잉크 콘텐츠를 생성하도록 상기 잉크 생성 동작을 렌더링하는 단계와,
    상기 습식 잉크 렌더링 스레드에 의해 렌더링된 상기 중간 잉크 컨텐츠를 제거하고 상기 건조 잉크 컨텐츠를 디스플레이하기 위해 출력하는 단계를 포함하는
    하나 이상의 컴퓨터 저장 매체.
  18. 제 17 항에 있어서,
    상기 입력 컨텍스트와 상기 동작 컨텍스트 중 적어도 하나는 상기 습식 잉크 렌더링 스레드에 의해 렌더링된 잉크에 대한 하나 이상의 디스플레이 속성을 더 포함하는
    하나 이상의 컴퓨터 저장 매체.
  19. 제 17 항에 있어서,
    모달 컨텍스트는 펜 입력, 스타일러스 입력, 터치 입력, 마우스 입력, 또는 이들의 조합의 입력 모드를 포함하는
    하나 이상의 컴퓨터 저장 매체.
  20. 제 17 항에 있어서,
    상기 습식 잉크 콘텐츠는 상기 애플리케이션에 의해 제공된 특성을 이용하여 렌더링되는
    하나 이상의 컴퓨터 저장 매체.
KR1020177008417A 2014-09-29 2015-09-29 저 레이턴시 잉크 렌더링 파이프라인 기법 KR102352536B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/500,997 US9633466B2 (en) 2014-09-29 2014-09-29 Low latency ink rendering pipeline
US14/500,997 2014-09-29
PCT/US2015/052755 WO2016053916A1 (en) 2014-09-29 2015-09-29 Low latency ink rendering pipeline

Publications (2)

Publication Number Publication Date
KR20170061134A KR20170061134A (ko) 2017-06-02
KR102352536B1 true KR102352536B1 (ko) 2022-01-17

Family

ID=54291685

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177008417A KR102352536B1 (ko) 2014-09-29 2015-09-29 저 레이턴시 잉크 렌더링 파이프라인 기법

Country Status (11)

Country Link
US (1) US9633466B2 (ko)
EP (1) EP3201750A1 (ko)
JP (1) JP6619798B2 (ko)
KR (1) KR102352536B1 (ko)
CN (1) CN107003908B (ko)
AU (1) AU2015324050B2 (ko)
BR (1) BR112017003820A2 (ko)
CA (1) CA2962793A1 (ko)
MX (1) MX2017004056A (ko)
RU (1) RU2705009C2 (ko)
WO (1) WO2016053916A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10162518B2 (en) * 2017-02-03 2018-12-25 Microsoft Technology Licensing, Llc Reversible digital ink for inking application user interfaces
US10147159B2 (en) 2017-04-07 2018-12-04 Microsoft Technology Licensing, Llc Ink render using high priority queues
US10580111B2 (en) 2018-03-20 2020-03-03 Microsoft Technology Licensing, Llc Display ink rendering during system sleep
CN112199029B (zh) * 2018-06-15 2022-10-18 广州视源电子科技股份有限公司 双系统设备及其书写方法和交互智能平板
CN115220853A (zh) * 2022-09-21 2022-10-21 广州市保伦电子有限公司 基于多线程的墨迹作图方法、装置、设备及存储介质

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6707473B2 (en) 2001-08-01 2004-03-16 Microsoft Corporation Dynamic rendering of ink strokes with transparency
RU2326435C2 (ru) * 2003-08-21 2008-06-10 Майкрософт Корпорейшн Обработка электронных чернил
US7533338B2 (en) 2003-08-21 2009-05-12 Microsoft Corporation Electronic ink processing
US7436535B2 (en) * 2003-10-24 2008-10-14 Microsoft Corporation Real-time inking
US7499058B2 (en) 2005-04-22 2009-03-03 Microsoft Corporation Programmatical access to handwritten electronic ink in a tree-based rendering environment
US8130226B2 (en) 2006-08-04 2012-03-06 Apple Inc. Framework for graphics animation and compositing operations
US8416197B2 (en) 2007-06-15 2013-04-09 Ricoh Co., Ltd Pen tracking and low latency display updates on electronic paper displays
US8203527B2 (en) 2009-04-24 2012-06-19 Seiko Epson Corporation Minimizing pen stroke capture latency
US9703411B2 (en) 2009-04-30 2017-07-11 Synaptics Incorporated Reduction in latency between user input and visual feedback
US9189147B2 (en) 2010-06-22 2015-11-17 Microsoft Technology Licensing, Llc Ink lag compensation techniques
US9612739B2 (en) 2012-02-02 2017-04-04 Microsoft Technology Licensing, Llc Low-latency touch-input device
US9153201B2 (en) * 2012-05-07 2015-10-06 Intel Corporation Real-time order-independent transparent rendering
CN102810199B (zh) * 2012-06-15 2015-03-04 成都平行视野科技有限公司 一种基于gpu的图像处理方法
CN104903832B (zh) 2012-10-05 2020-09-25 触觉实验室股份有限公司 用于低等待时间用户输入处理和反馈的混合型系统和方法
US9389717B2 (en) 2012-12-14 2016-07-12 Microsoft Technology Licensing, Llc Reducing latency in ink rendering
JP2016528612A (ja) * 2013-07-12 2016-09-15 タクチュアル ラブズ シーオー. 定義されたクロス制御挙動による制御応答レイテンシの短縮
CN103617031B (zh) * 2013-11-20 2017-01-18 广东威创视讯科技股份有限公司 图像渲染的方法和装置
US10146409B2 (en) * 2014-08-29 2018-12-04 Microsoft Technology Licensing, Llc Computerized dynamic splitting of interaction across multiple content
US10338725B2 (en) * 2014-09-29 2019-07-02 Microsoft Technology Licensing, Llc Wet ink predictor

Also Published As

Publication number Publication date
CA2962793A1 (en) 2016-04-07
JP2017532634A (ja) 2017-11-02
BR112017003820A2 (pt) 2017-12-05
US9633466B2 (en) 2017-04-25
CN107003908A (zh) 2017-08-01
MX2017004056A (es) 2017-06-12
RU2705009C2 (ru) 2019-11-01
CN107003908B (zh) 2020-08-21
AU2015324050A1 (en) 2017-03-16
WO2016053916A1 (en) 2016-04-07
US20160093087A1 (en) 2016-03-31
RU2017110229A (ru) 2018-10-01
KR20170061134A (ko) 2017-06-02
EP3201750A1 (en) 2017-08-09
RU2017110229A3 (ko) 2019-04-16
AU2015324050B2 (en) 2020-06-25
JP6619798B2 (ja) 2019-12-11

Similar Documents

Publication Publication Date Title
KR102352536B1 (ko) 저 레이턴시 잉크 렌더링 파이프라인 기법
KR102307163B1 (ko) 크로스 플랫폼 렌더링 엔진
US9715750B2 (en) System and method for layering using tile-based renderers
KR20170061703A (ko) 습식 잉크 예측기
EP2932362B1 (en) Reducing latency in ink rendering
US11029836B2 (en) Cross-platform interactivity architecture
US9841881B2 (en) Two step content selection with auto content categorization
JP2015197795A (ja) 端末装置、電子ホワイトボードシステム、電子ホワイトボードの入力支援方法、及びプログラム
JP5969145B1 (ja) コマンド命令管理
US20110298787A1 (en) Layer composition, rendering, and animation using multiple execution threads
EP3066550B1 (en) Two step content selection
US8334869B1 (en) Method and apparatus for modeling 3-D shapes from a user drawn curve
KR102225281B1 (ko) 감소된 픽셀 쉐이딩을 위한 기술
US20150130723A1 (en) Two step content selection with trajectory copy
KR100583238B1 (ko) 3차원 모델링 아이콘 제어 장치 및 그 방법
US20170060390A1 (en) Control method and control device

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