KR20140030226A - 글로벌 저작 시스템 - Google Patents

글로벌 저작 시스템 Download PDF

Info

Publication number
KR20140030226A
KR20140030226A KR1020137031859A KR20137031859A KR20140030226A KR 20140030226 A KR20140030226 A KR 20140030226A KR 1020137031859 A KR1020137031859 A KR 1020137031859A KR 20137031859 A KR20137031859 A KR 20137031859A KR 20140030226 A KR20140030226 A KR 20140030226A
Authority
KR
South Korea
Prior art keywords
authoring
elements
application
applications
engine
Prior art date
Application number
KR1020137031859A
Other languages
English (en)
Other versions
KR101855552B1 (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 KR20140030226A publication Critical patent/KR20140030226A/ko
Application granted granted Critical
Publication of KR101855552B1 publication Critical patent/KR101855552B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/60Editing figures and text; Combining figures or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • 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/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • 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/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1454Digital output to display device ; Cooperation and interconnection of the display device with other functional units involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays, e.g. teledisplay
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • CCHEMISTRY; METALLURGY
    • C08ORGANIC MACROMOLECULAR COMPOUNDS; THEIR PREPARATION OR CHEMICAL WORKING-UP; COMPOSITIONS BASED THEREON
    • C08KUse of inorganic or non-macromolecular organic substances as compounding ingredients
    • C08K3/00Use of inorganic substances as compounding ingredients
    • C08K3/34Silicon-containing compounds
    • C08K3/36Silica
    • CCHEMISTRY; METALLURGY
    • C08ORGANIC MACROMOLECULAR COMPOUNDS; THEIR PREPARATION OR CHEMICAL WORKING-UP; COMPOSITIONS BASED THEREON
    • C08KUse of inorganic or non-macromolecular organic substances as compounding ingredients
    • C08K5/00Use of organic ingredients
    • C08K5/0008Organic ingredients according to more than one of the "one dot" groups of C08K5/01 - C08K5/59
    • C08K5/0016Plasticisers
    • CCHEMISTRY; METALLURGY
    • C08ORGANIC MACROMOLECULAR COMPOUNDS; THEIR PREPARATION OR CHEMICAL WORKING-UP; COMPOSITIONS BASED THEREON
    • C08KUse of inorganic or non-macromolecular organic substances as compounding ingredients
    • C08K5/00Use of organic ingredients
    • C08K5/0008Organic ingredients according to more than one of the "one dot" groups of C08K5/01 - C08K5/59
    • C08K5/0025Crosslinking or vulcanising agents; including accelerators
    • CCHEMISTRY; METALLURGY
    • C08ORGANIC MACROMOLECULAR COMPOUNDS; THEIR PREPARATION OR CHEMICAL WORKING-UP; COMPOSITIONS BASED THEREON
    • C08LCOMPOSITIONS OF MACROMOLECULAR COMPOUNDS
    • C08L9/00Compositions of homopolymers or copolymers of conjugated diene hydrocarbons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2201/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/21Collision detection, intersection
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/12Overlay of images, i.e. displayed pixel being the result of switching between the corresponding input pixels
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2358/00Arrangements for display data security
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2370/00Aspects of data communication
    • G09G2370/02Networking aspects
    • G09G2370/022Centralised management of display operation, e.g. in a server instead of locally
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/14Display of multiple viewports

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Processing Or Creating Images (AREA)
  • User Interface Of Digital Computer (AREA)
  • Stored Programmes (AREA)
  • Digital Computer Display Output (AREA)
  • Compositions Of Macromolecular Compounds (AREA)

Abstract

글로벌 저작 시스템이 설명된다. 하나 이상의 구현에서, 글로벌 저작 시스템은 복수의 애플리케이션을 위한 렌더링을 수행하도록 구성될 수 있다. 예를 들어, 글로벌 저작 시스템은 애플리케이션들이 액세스할 수 있는 하나 이상의 애플리케이션 프로그래밍 인터페이스(API)를 표시하도록 구성될 수 있다. 이어서, API들은 단일 저작 엔진으로 하여금 복수의 애플리케이션을 위한 렌더링을 수행하게 하는 데 사용될 수 있다. 단일 저작 엔진의 사용은 애플리케이션들 각각에 의해 어떤 요소들이 제공되는지 그리고 그러한 아이템들이 렌더링을 위해 디스플레이 장치와 어떻게 관련되는지를 파악함으로써 효율적인 렌더링을 수행하는 데 사용될 수 있다.

Description

글로벌 저작 시스템{GLOBAL COMPOSITION SYSTEM}
아이콘, 윈도우, 애니메이션 등과 같은 광범위한 다양한 요소들이 컴퓨팅 장치 상에 렌더링될 수 있다. 게다가, 컴퓨팅 장치 상에서 통상적으로 실행되는 애플리케이션들의 개수는 물론, 예를 들어 추가적인 기능 및 더 풍부한 사용자 경험을 제공하기 위해서 애플리케이션들 각각이 통상적으로 제공하는 요소들의 개수도 계속 증가하고 있다.
그러나, 요소들의 이러한 증가는 컴퓨팅 장치의 상당한 양의 자원들, 예를 들어 프로세서, 메모리, 그래픽 하드웨어 및 다른 자원들을 소비할 수 있다. 게다가, 이러한 소비는 애플리케이션들 자체의 실행에 영향을 미칠 수도 있다.
글로벌 저작 시스템(global composition system)이 설명된다. 하나 이상의 구현에서, 글로벌 저작 시스템은 복수의 애플리케이션을 위한 렌더링을 수행하도록 구성될 수 있다. 예를 들어, 글로벌 저작 시스템은 애플리케이션들이 액세스할 수 있는 하나 이상의 애플리케이션 프로그래밍 인터페이스(API)를 표시하도록 구성될 수 있다. 이어서, API들은 단일 저작 엔진으로 하여금 복수의 애플리케이션을 위한 렌더링을 수행하게 하는 데 사용될 수 있다. 단일 저작 엔진의 사용은 애플리케이션들 각각에 의해 어떤 요소들이 제공되는지 그리고 그러한 아이템들이 렌더링을 위해 디스플레이 장치와 어떻게 관련되는지를 파악함으로써 효율적인 렌더링을 수행하는 데 사용될 수 있다.
이 요약은 아래에 상세한 설명에서 더 설명되는 개념들의 발췌를 간단한 형태로 소개하기 위해 제공된다. 이 요약은 청구 발명의 중요한 특징들 또는 본질적인 특징들을 식별하는 것을 의도하지 않으며, 청구 발명의 범위를 결정하는 데 있어서의 보조물로서 사용되는 것도 의도하지 않는다.
상세한 설명은 첨부 도면들을 참조하여 설명된다. 도면들에서, 참조 번호의 가장 좌측의 숫자(들)는 그 참조 번호가 처음 나타나는 도면을 식별한다. 설명 및 도면들 내의 상이한 사례들에서의 동일한 참조 번호들의 사용은 유사한 또는 동일한 아이템들을 지시할 수 있다.
도 1은 글로벌 저작 시스템을 구현하도록 동작할 수 있는 예시적인 구현에서의 환경의 도면이다.
도 2는 글로벌 저작 시스템이 도 1의 저작 엔진은 물론, 사용자 모드 라이브러리 및 객체 데이터베이스 모듈을 포함하는 것으로 더 상세히 도시되는 예시적인 시스템을 도시한다.
도 3은 요소들을 렌더링하기 위해 저작 엔진에 의해 소비될 수 있는 글로벌 저작 트리로서 구성되는 그래프의 일례를 도시한다.
도 4는 단일 저작 엔진에 의해 렌더링될 요소들을 설명하는 그래프를 생성하는 예시적인 구현에서의 절차를 도시하는 흐름도이다.
도 5는 도 1을 참조하여 설명되는 바와 같은 컴퓨팅 장치를 포함하는 예시적인 시스템을 도시한다.
도 6은 본 명세서에서 설명되는 기술들의 실시예들을 구현하기 위해 도 1, 2 및 5를 참조하여 설명되는 바와 같은 임의 타입의 컴퓨팅 장치로서 구현될 수 있는 예시적인 장치의 다양한 컴포넌트들을 도시한다.
개요
컴퓨팅 장치에 의해 요소들을 렌더링하는 데 사용된 전통적인 기술들은 각각의 애플리케이션이 대응하는 저작 엔진을 할당받는 분산형 시스템을 사용하였다. 이 때문에, 상이한 저작 엔진들은 다른 저작 엔진들에 의해 무엇이 수행되고 있는지를 알지 못했다. 이것은 전통적인 기술들을 구현하는 컴퓨팅 장치의 효율을 방해할 수 있는 중복성, 요소들의 불필요한 렌더링 등을 유발할 수 있으며, 이러한 전통적인 기술들을 "씬(thin)" 컴퓨팅 장치들에 의한 사용에 적합하지 않게 할 수 있다.
본 명세서에서는 글로벌 저작 기술들이 설명된다. 하나 이상의 윈도우에서, 단일 저작 엔진이 하나 이상의 API를 통해 복수의 상이한 애플리케이션에 의해 액세스될 수 있다. 따라서, 저작 엔진은 다양한 애플리케이션들에 의해 무엇이 제공되고 있는지 그리고 그러한 요소들이 어떻게 관련되는지를 "알게" 될 수 있다. 이어서, 이러한 지식은 애플리케이션들의 요소들의 렌더링의 효율을 향상시키는 데 이용될 수 있다. 하나 이상의 구현에서, 저작 엔진은 그러한 애플리케이션들에 속하는 스레드들과 비동기적으로 실행되며, 이는 애플리케이션들로 하여금 콘텐츠가 그들의 윈도우들 내에서 애니메이션되게 하며, 상이한 렌더링 기술들을 이용하여 그러한 콘텐츠를 래스터화(rasterization)하는 것을 가능하게 한다. 게다가, 저작 엔진으로 하여금 폐쇄 검출(occlusion detection)과 같은 글로벌 최적화를 수행하는 것은 물론, 다수의 애플리케이션으로부터의 콘텐츠를 효율적이고 안전한 방식으로 혼합 및 매칭시키는 것을 가능하게 하는 단일 그래프(예를 들어, 글로벌 저작 트리)에서 시스템 내의 각각의 애플리케이션으로부터의 저작 데이터가 관리될 수 있다. 이들 및 다른 기술들에 대한 추가적인 설명이 아래의 도면들과 관련하여 발견될 수 있다.
아래의 설명에서는, 본 명세서에서 설명되는 기술들을 이용할 수 있는 예시적인 환경이 먼저 설명된다. 이어서, 예시적인 환경은 물론, 다른 환경들에서도 수행될 수 있는 예시적인 절차들이 설명된다. 결과적으로, 예시적인 절차들의 수행은 예시적인 환경으로 한정되지 않으며, 예시적인 환경은 예시적인 절차들의 수행으로 한정되지 않는다.
예시적인 환경
도 1은 본 명세서에서 설명되는 기술들을 이용하도록 동작할 수 있는 예시적인 구현에서의 환경(100)의 도면이다. 도시된 환경(100)은 네트워크(106)를 통해 웹 서비스(104)에 통신 가능하게 결합되는 컴퓨팅 장치(102)를 포함한다. 컴퓨팅 장치(1020는 물론, 웹 서비스(104)를 구현할 수 있는 컴퓨팅 장치들도 다양한 방식으로 구성될 수 있다.
예를 들어, 컴퓨팅 장치는 데스크톱 컴퓨터, 이동국, 엔터테인먼트 기구, 디스플레이 장치에 통신 가능하게 결합된 셋톱 박스, 무선 전화, 게임 콘솔 등과 같이 네트워크(106)를 통해 통신할 수 있는 컴퓨터로서 구성될 수 있다. 따라서, 컴퓨팅 장치(102)는 풍부한 메모리 및 프로세서 자원들을 갖는 충분 자원 장치들(예를 들어, 개인용 컴퓨터, 게임 콘솔)로부터 제한된 메모리 및/또는 처리 자원들을 갖는 부족 자원 장치들(예를 들어, 전통적인 셋톱 박스, 핸드헬드 게임 콘솔)의 범위에 걸칠 수 있다. 게다가, 단일 컴퓨팅 장치(102)가 도시되지만, 컴퓨팅 장치(102)는 예를 들어 웹 서비스(104), 원격 제어 및 셋톱 박스 결합, 이미지 캡처 장치 및 제스처를 캡처하도록 구성된 게임 콘솔 등에 의해 동작들을 수행하기 위해 비즈니스에 의해 사용되는 다수의 서버와 같은 복수의 상이한 장치를 나타낼 수 있다.
네트워크(106)는 인터넷으로 도시되지만, 네트워크는 다양한 구성을 가질 수 있다. 예를 들어, 네트워크(106)는 광역 네트워크(WAN), 근거리 네트워크(LAN), 무선 네트워크, 공중 전화 네트워크, 인트라넷 등을 포함할 수 있다. 게다가, 단일 네트워크(106)가 도시되지만, 네트워크(106)는 다수의 네트워크를 포함하도록 구성될 수 있다.
컴퓨팅 장치(102)는 운영 체제(108)를 포함하는 것으로 더 도시된다. 운영 체제(108)는 컴퓨팅 장치(102) 상에서 실행될 수 있는 애플리케이션들(110)에 대해 컴퓨팅 장치(102)의 기본 기능을 추상화하도록 구성된다. 예를 들어, 운영 체제(108)는 컴퓨팅 장치(102)의 처리, 메모리, 네트워크 및/또는 디스플레이 기능을 추상화할 수 있으며, 따라서 애플리케이션들(110)은 이러한 기본 기능이 "어떻게" 구현되는지를 모르고도 작성될 수 있다. 예를 들어, 애플리케이션(110)은 디스플레이 장치(112)에 의해 렌더링 및 표시될 데이터를, 이러한 렌더링이 어떻게 수행될지를 이해하지 않고도, 운영 체제(108)에 제공할 수 있다.
운영 체제(108)는 예를 들어 컴퓨팅 장치(102)의 사용자에 의해 내비게이션될 수 있는 파일 시스템 및 사용자 인터페이스를 관리하기 위한 다양한 다른 기능도 표현할 수 있다. 이것의 일례는 컴퓨팅 장치(102)의 디스플레이 장치(112) 상에 표시되는 데스크톱으로서 예시된다.
운영 체제(108)는 글로벌 저작 시스템(114)을 포함하는 것으로 또한 도시된다. 글로벌 저작 시스템(114)은 애플리케이션들(110)로 하여금 (이하, 간단히 저작 엔진(116)으로도 지칭되는) 단일 글로벌 저작 엔진(116)을 이용하여 디스플레이 장치(112) 상에 아이템들을 드로잉하는 것을 가능하게 하도록 구성되는 직접 저작 컴포넌트를 포함하는 시스템을 나타낼 수 있다. 운영 체제(108)의 일부로서 도시되지만, 글로벌 저작 시스템(114)은 다양한 다른 방식으로, 예를 들어 브라우저의 일부로서, 독립 모듈로서, 기타 등등으로 구현될 수 있다. 게다가, 글로벌 저작 시스템(114)은 네트워크(106)를 통해 분산될 수 있으며, 그 일례는 웹 서비스(104) 상의 글로벌 저작 시스템(118)의 포함으로서 예시된다.
사용자 경험들(예를 들어, 애플리케이션들(110)을 위해 생성된 사용자 인터페이스들)은 윈도우, 애니메이션(예를 들어, 텍스트 스크롤링) 등과 같이 서로 상호작용할 수 있는 많은 수의 요소를 포함할 수 있다. 예를 들어, 제1 윈도우가 이메일 애플리케이션에 대응할 수 있고, 제2 윈도우(122)가 디스플레이 장치(112) 상에 도시된 바와 같은 브라우저에 대응할 수 있다. 따라서, 임의의 하나의 특정 시점에 다수의 상이한 렌더링 컴포넌트가 관련될 수 있다. 게다가, 이러한 상이한 요소들은 비디오 및 정적 텍스트와 함께 "티커(ticker)" 디스플레이의 애니메이션과 같이 상이한 리프레시 레이트들을 가질 수 있다.
글로벌 저작 시스템(114)은 이러한 기능을 추상화하여, 상이한 애플리케이션들(110)이 이러한 렌더링을 오프로딩하며, 따라서 렌더링이 어떻게 수행되는지를 알지 못할 수 있도록 하는 데 사용될 수 있다. 예를 들어, 애플리케이션들(110)은 렌더링될 요소들, 요소들의 배치, 및 요소들이 어떻게 서로 상관되는지를 설명하는 데이터를 제공할 수 있다.
게다가, 글로벌 저작 시스템(114)은 "독립" 애니메이션을 지원할 수 있다. 예를 들어, 애플리케이션(110)은 애니메이션이 어떻게 렌더링되어야 하는지를 설명하는 애니메이션의 선언 설명을 전달할 수 있다. 예를 들어, 이러한 설명은 무엇이 애니메이션되고 있는지, 리드로우들(redraws)이 발생하는 레이트, 애니메이션이 시작되는 위치, 애니메이션이 이동하는 곡선, 애니메이션의 종료 위치, 애니메이션이 렌더링되는 시간의 양 등을 설명할 수 있다.
이어서, 이러한 렌더링은 글로벌 저작 시스템(114)에 의해 수행될 수 있으며, 추가적인 지시 없이 계속될 수 있다. 이와 같이, 애니메이션의 렌더링은 호출자(예로서, 애플리케이션(110))와 무관하며, 따라서 애플리케이션(110)과의 통신의 손실, 애플리케이션(110)의 일관성 없는 처리 등은 애니메이션의 렌더링에 영향을 미치지 않는다. 따라서, 이것은 애니메이션을 렌더링하기 위한 애플리케이션(110)에 의한 통신들의 수를 줄임으로써 애니메이션의 "유연성" 및 "유동성"은 물론, 컴퓨팅 장치(102)(및 심지어 네트워크(106)가 아래에 더 설명됨)의 자원들을 개선하는 데 사용될 수 있다.
전통적으로, 컴퓨팅 장치(102)에 의해 실행되는 애플리케이션들(110) 각각은 각각의 애플리케이션에 대한 디스플레이의 처리 및 렌더링을 수행하기 위해 대응하는 저작 엔진과 상호작용하였다. 따라서, 전통적인 저작 엔진들은 종종 "프로세스마다" 구현되었다. 따라서, 전통적인 기술들은 어느 한 시점에 복수의 상이한 저작 엔진의 실행을 포함할 수 있다. 게다가, 전통적인 저작 엔진들은 통상적으로 다른 저작 엔진들에 의해 수행되는 렌더링을 "알지 못하였다". 이것은 윈도우가 다른 윈도우에 의해 폐쇄될 수 있는 경우에도 윈도우를 드로잉하여 컴퓨팅 장치(120)의 프로세서, 그래픽 프로세서, 메모리 및 다른 자원들의 불필요한 사용을 유발할 수 있는 것과 같이 컴퓨팅 장치(102)의 자원들의 비효율적인 사용을 유발할 수 있다.
하나 이상의 구현에서, 글로벌 저작 시스템(114)은 복수의 애플리케이션(110)이 예를 들어 애플리케이션 프로그래밍 인터페이스를 통해 저작 엔진(116)에 액세스할 수 있도록 글로벌 아키텍처를 따른다. 예를 들어, 단일 저작 엔진(116)이 현재 실행되고 있는 애플리케이션들(110)로부터의 전체 데스크톱 및 요소들을 책임질 수 있다. 따라서, 단일 저작 엔진(116)은 복수의 애플리케이션에 대해 렌더링될 상이한 요소들을 "알" 수 있으며, 적절히 대응할 수 있다.
이전 예를 계속 설명하면, 저작 엔진(116)은 애플리케이션의 요소(예로서, 윈도우)가 다른 애플리케이션에 대해 렌더링될 요소, 예를 들어 다른 윈도우에 의해 폐쇄될 것을 알 수 있다. 예를 들어, 도 1에 도시된 바와 같이, 애플리케이션은 이메일 애플리케이션에 대응하는 윈도우(120) 뒤에 표시될 윈도우를 가질 수 있다. 이전에는, 애플리케이션의 대응하는 윈도우가 컴퓨팅 장치(102)의 사용자에게 보이지 않는 경우에도, 윈도우는 여전히 렌더링되었다. 그러나, 저작 엔진(116)은 본 기술들을 이용하여, 폐쇄되는 윈도우의 렌더링을 생략하며, 따라서 컴퓨팅 장치(102)의 자원들을 보존할 수 있다.
글로벌 저작 시스템(114)은 다양한 기능을 제공하는 데 사용될 수 있다. 전술한 바와 같이, 글로벌 저작 시스템(114)은 복수의 애플리케이션에 의해 무엇이 렌더링될지에 대한 글로벌 분석을 수행하고, 예를 들어 전술한 바와 같이 요소들의 렌더링이 생략될 수 있는 폐쇄의 경우에 요소들 중 어느 것을 드로잉할지를 효율적으로 결정할 수 있다. 게다가, 예를 들어 전통적인 저작 엔진들에 의해, 엔진들 자체는 물론, 엔진들에 의해 드로잉되고 있는 것들에 의해 소비될 수 있는 바와 같은 단편화된 메모리 대신에, 복수의 애플리케이션(110)에 의해 중간 메모리를 공유하기 위해, 글로벌 저작 시스템(114)에 의해 자원들이 공동화될 수 있다.
글로벌 저작 시스템(114)은 보안 기술들도 지원할 수 있다. 예를 들어, 글로벌 저작 시스템(114)은 암호화된 영화 및 대응하는 라이센싱과 같은 보호되는 비디오를 드로잉하는 데 사용될 수 있다. 전통적인 저작 엔진들의 경우, 애플리케이션은 콘텐츠를 저작한 후에, 콘텐츠를 대응하는 저작 엔진으로 전송한다. 이것은 콘텐츠가 보호 없이 "명문으로 전송"(압축되지 않은 비디오 프레임들의 전송)되게 할 수 있으며, 따라서 콘텐츠는 악인들에게 노출될 수 있다.
그러나, 본 명세서에서 설명되는 하나 이상의 구현에서, 콘텐츠는 글로벌 저작 시스템(114)에 제공될 수 있으며, 애플리케이션들(110)에 의해 직접 터치될 수 없는 보호 영역 내에서 실행될 수 있다. 따라서, 저작 엔진(116)이 콘텐츠를 더 전달하지 않는다는 신뢰를 이용하여 그 콘텐츠를 보호할 수 있다. 예를 들어, 렌더링할 픽셀들을 컴퓨팅 장치(102)에 의해 실행되는 애플리케이션들에 노출시키지 않고 그러한 픽셀들을 생성하기 위해 저작 엔진에 의존할 수 있다. 따라서, 이러한 "단방향 흐름"은 (예로서, 악성 엔티티로부터의) 부적당한 애플리케이션이 비보호 콘텐츠를 수신하지 못하는 것을 보증하는 데 도움이 될 수 있다.
게다가, 전통적인 저작 엔진들 및 대응하는 애플리케이션들은 디스플레이 장치(112)의 스크린의 특정 부분을 "소유"하였다. 따라서, 일부 디스플레이 기술들은 이러한 전통적인 기술들의 이용을 지원하기 어려웠다. 하나의 그러한 기술은 다수의 애플리케이션에 대한 투명성이었는데, 그 이유는 디스플레이 장치(112)의 영역이 둘 다가 아니라 하나 또는 다른 전통적인 저작 엔진에 의해 소유될 수 있기 때문이다. 예를 들어, 디스플레이 장치(112)의 특정 영역은 적어도 2개의 상이한 애플리케이션 및 이들에 대응하는 전통적인 저작 엔진들로부터의 윈도우들을 포함할 수 있다. 전통적으로, 투명성과 같은 기술들을 지원하기 위하여, 윈도우들의 각각의 사례가 메모리에 드로잉된 후, 효과들이 결합에 적용되었으며, 이는 자원 집약적이었다.
그러나, 글로벌 저작 시스템(114)은 상이한 윈도우들을 인식하고 적절히 대응할 수 있으므로, 윈도우들을 사전에 메모리에 개별적으로 드로잉한 후에 윈도우들에 시각적 효과들을 적용하지 않고도 원하는 결과를 달성할 수 있다. 예를 들어, 글로벌 저작 시스템(114)은 렌더링될 요소들을 설명하는 단일 계층 구조 트리를 이용하며, 따라서 요소들이 어떻게 관련되는지를 "알" 수 있다. 따라서, 글로벌 저작 시스템(114)은 전통적인 기술들을 이용하여 수행되는 중간 단계 없이 컴퓨팅 장치(102)의 메모리에 직접 드로잉할 수 있다. 따라서, 이러한 기술들은 메모리 및/또는 처리 한계로 인해 전통적인 저작 엔진을 이용할 수 없는 "씬" 컴퓨팅 장치들에 의해 이용될 수 있다.
게다가, 전통적인 저작 엔진들은 상이한 애플리케이션들에 의한 상이한 렌더링 레이트들을 지원하기 위해 일반적으로 비동기적으로 실행되었다. 이것은 하나의 저작과 관련된 애플리케이션에 의해 지정된 렌더링이 다른 애플리케이션에 의해 지정된 렌더링에 영향을 미치지 않도록 하는 기능을 지원하지만, 이것은 컴퓨팅 장치(102)의 자원들의 비효율적인 사용을 유발할 수 있다.
게다가, 상이한 전통적인 저작 엔진들에 할당되는 우선 순위들은 전통적인 저작 엔진은 물론, 관련 애플리케이션 양자에 대해 에러들을 유발할 수 있다. 예를 들어, 전통적인 저작 엔진들은 컴퓨팅 장치(102)의 프로세서에 의한 실행을 위해 비교적 높은 우선 순위를 부여받을 수 있다. 그러나, 저작 엔진들이 예를 들어 다수의 애니메이션을 지원하기 위해 많은 양의 자원을 소비하는 사례들이 발생할 수 있다. 이로 인해, 저작 엔진들은 물론, 애플리케이션들 자체도 그러한 자원 집약적인 작업들을 만났을 때 의도대로 실행하기 위해 이용할 수 있는 충분한 자원들을 갖지 못할 수 있다.
하나 이상의 구현에서, 저작 엔진(116)은 높은 우선 순위를 할당받을 수 있는데, 예를 들어 컴퓨팅 장치(102)에 의해 실행되는 다른 스레드들에 할당되는 우선 순위들보다 높은 스레드 우선 순위가 저작 엔진(116)에 할당될 수 있다. 이어서, 글로벌 저작 시스템(114)은 렌더링이 발생하는 것을 보증하기 위해 높은 우선 순위를 부여받은 저작 엔진(116)에 의해 상이한 소스들로부터의 요소들이 어떻게 렌더링되는지에 대한 우선 순위를 관리할 수 있다. 예를 들어, 글로벌 저작 시스템(114)은 어느 요소들이 갱신되는지, (예를 들어, 60 Hz로부터 30 Hz로 스위칭하기 위해) 이러한 갱신이 발생하는 빈도 등을 관리할 수 있다. 따라서, 글로벌 저작 시스템(114)은 렌더링할 요소들을 제공하는 애플리케이션들(110)과 같은, 다른 용도들을 위한 컴퓨팅 장치(102)의 자원들의 가용성의 촉진을 도울 수 있다.
도 2는 글로벌 저작 시스템(114)이 도 1의 저작 엔진(116)은 물론, 사용자 모드 라이브러리(202) 및 객체 데이터베이스 모듈(204)도 포함하는 것으로 더 상세히 도시되는 예시적인 시스템(200)을 나타낸다. 사용자 모드 라이브러리(202)는 객체 데이터베이스 모듈(204)과 상호작용하기 위해 각각의 애플리케이션 프로세스(210, 212)에 의해 사용되는 것으로 도시되는 다양한 API들(206, 208)을 지원한다. 저작 엔진(116)은 이 예시적인 시스템(200)에서 그 자신의 프로세스(214) 내에서 실행되는 것으로 도시된다.
복수의 분산된 저작 엔진의 전통적인 사용은 엔진들은 물론, 컴퓨팅 장치의 애플리케이션들의 실행을 서로 보호하였다. 예를 들어, 제1 애플리케이션이 실패하는 경우, 제1 애플리케이션에 결합된 제1의 전통적인 저작 엔진도 실패할 수 있다. 그러나, 상이한 전통적인 저작 엔진에 결합된 제2 저작 엔진은 전통적인 저작 엔진들이 갖는 서로에 대한 "지식"의 결여로 인해 실패에 의해 보호되었다.
하나 이상의 구현에서, 글로벌 저작 시스템(114)은 렌더링할 요소들을 제공하는 애플리케이션들(110)에 의한 저작 엔진(116)의 상태의 손상을 방지하기 위한 기술들을 이용할 수 있다. 하나의 그러한 기술은 운영 체제(108)의 커널(216) 내에서 저작 엔진(116)을 이용하는 것이다. 따라서, 저작 엔진(116)은 커널(216) 내에서 또한 실행되는 다른 컴포넌트들을 "신뢰"할 수 있다.
이러한 방식으로, 글로벌 저작 시스템(114)은 커널에 의해 체크들이 수행되도록 사용자 모드(218)와 커널 모드(220) 사이의 "신뢰 경계"를 이용할 수 있다. 하나 이상의 구현에서는, 애플리케이션들에 의존하여, 글로벌 저작 시스템(114)에 의해 수행되는 처리의 효율을 개선하기 위한 파라미터 체킹과 같은, 애플리케이션들에 의해 제공되는 "정확성"을 결정할 수 있다.
다른 그러한 기술은 글로벌 저작 시스템(114)이 어느 데이터(예를 들어, 렌더링할 요소들)가 어느 애플리케이션에 속하는지를 "알도록" 추적하는 것을 포함한다. 따라서, 하나의 애플리케이션의 실패(예로서, 충돌)는 다른 애플리케이션의 요소들에 영향을 미치지 않는다. 게다가, 글로벌 저작 시스템(114)은 그러한 실패의 경우에 예를 들어 사전 결정된 기간 후에 요소들이 렌더링되는 것을 방지하기 위해 요소들을 "클린업"할 수 있다. 이러한 방식으로, 글로벌 저작 시스템(114)은 애플리케이션으로 하여금 적절히 실패하여, 다른 애플리케이션들 및 렌더링될 대응하는 요소들에 영향을 미치지 않게 할 수 있다.
도시된 바와 같이, 저작 엔진(116)은 컴퓨팅 장치(102)의 다른 애플리케이션 프로세스들(210, 212)과 같이 다른 코드를 실행하는 데 사용되는 프로세스들과 다른 전용 시스템 프로세스(214)에서 실행된다. 게다가, 이 프로세스(214)는 높은 레벨의 신뢰 및 우선 순위를 할당받을 수 있다. 예를 들어, 이 프로세스(214)는 저작 데이터 획득의 관점에서 신뢰될 수 있으며, 따라서 보호되는 비디오 데이터, 권리 관리를 이용하여 보호되는 이메일 등과 같은 보호되는 데이터를 위해 사용될 수 있다.
도 2에 도시된 바와 같이, 글로벌 저작 시스템(114)은 3개의 요소를 이용하여 구현될 수 있다. 제1 요소는 렌더링을 수행하기 위한, 즉 디스플레이 장치(112)에 "드로잉을 행하기 위한" 기능을 나타내는 저작 엔진(116)으로 도시된다. 제2 요소는 애플리케이션 프로그래밍 인터페이스들(API)(206, 208)을 표시함으로써 애플리케이션들에 의해 호출되는 엔티티를 나타내는 사용자 모드 라이브러리(202)로서 도시된다. 예를 들어, 사용자 모드 라이브러리(202)는 예를 들어 동적 링크 라이브러리(DLL)의 사용을 통해 애플리케이션들로부터 저작 데이터를 수신하기 위한 "메일 슬롯"으로서 작용할 수 있다.
제3 요소는 커널(216) 내에 상주하는 것으로 도시되는 객체 데이터베이스 모듈(204)로서 도시된다. 객체 데이터베이스 모듈(204)은 사용자 모드 라이브러리(202)와 저작 엔진(116) 사이의 데이터의 이동을 책임지는 기능을 나타낸다.
객체 데이터베이스 모듈(204)은 검증도 수행할 수 있다. 예를 들어, 애플리케이션이 사용자 모드 라이브러리(202)를 호출하여, 비트맵과 같은 요소를 생성할 수 있다. 요청된 요소가 객체 데이터베이스 모듈(204)에 의해 실시되는 기준들(예로서, "N"개 미만의 픽셀)을 충족시키지 못하는 경우, 객체 데이터베이스 모듈(204)은 사용자 모드 라이브러리(202)를 호출한 애플리케이션에 대해 실패 메시지를 반환할 수 있다. 따라서, 객체 데이터베이스 모듈(204)은 커널(216) 내에서 동작하여, 저작 엔진(116)에 제공되는 것을 제어할 수 있다. 객체 데이터베이스 모듈(204)에 의해 다양한 다른 정책들이 실시될 수 있다.
따라서, 저작 엔진(216)은 객체 데이터베이스 모듈(204)에 의해 구현되는 정책들을 따를 때 객체 데이터베이스 모듈(204)에 의해 제공되는 데이터에 의존할 수 있다. 즉, 저작 엔진은 데이터가 유효하고 정확하여 렌더링에 적합한 것으로 가정할 수 있다. 결과적으로, 검증은 객체 데이터베이스 모듈(204)에 의해 한 번만 수행될 수 있으며, 이어서 추가적인 검증 없이 렌더링을 수행하기 위해 저작 엔진(116)에 의해 이용될 수 있다.
객체 데이터베이스 모듈(204)은 렌더링될 데이터가 언제 변경되었는지를 저작 엔진(116)에 통지하기 위한 기능도 나타낼 수 있다. 예를 들어, 사용자 모드 라이브러리를 통해 구현되는 API는 무엇이 렌더링될지를 설명하는 그래프를 소비하도록 구성될 수 있으며, 그러한 그래프의 일례가 도 3에 도시되어 있다. 그래프(300)는 렌더링될 요소들의 리스트는 물론, 디스플레이 장치(112) 상에서 요소들을 어디에 렌더링할지에 대한 설명도 포함할 수 있으며, 이 설명은 애니메이션의 일례에서 요소들이 이동하는 방법을 포함할 수 있다.
게다가, 렌더링될 요소들은 하위 요소들을 이용하여 형성될 수 있으며, 따라서 그래프(300)는 계층 구조를 가질 수 있다. 게다가, 그래프(300)는 요소들이 렌더링되는 방법, 예를 들어 텍스트를 한 번 드로잉하는 것, 애니메이션을 렌더링하는 것 등을 설명할 수 있다. 따라서, 그래프(300)는 요소들 및 요소들이 서로 관련되는 방식을 설명할 수 있다.
그래프(300)는 장면을 렌더링하기 위해 저작 엔진(116)에 의해 사용될 수 있는 두 세트의 객체들, 즉 함께 저작되는 비트맵들 및 그러한 비트맵들이 저작되는 공간 관계들을 정의하는 비주얼들을 나타낸다. 이 모델에서, 비트맵들은 저작 엔진(116)의 "무엇"이고, 비주얼들은 "어떻게"이다. 이러한 객체들은 트리 구조로 배열되며, 저작을 위해 최상위 레벨 또는 자식 윈도우에 결합된다. 이 도면에서, 자식 비주얼 4는 또한 DX 비트맵을 가리키는 것으로 도시된다. 이것은 개발자들로 하여금 다수의 UI 요소에 대해 동일 콘텐츠를 사용하는 것을 가능하게 하는 저작 시스템의 기능을 설명하며, 이는 컴퓨팅 장치(102)의 자원들, 예로서 메모리의 보존을 도울 수 있다.
도 2를 다시 참조하면, 저작 엔진(116)에 의해 수신되면, 애플리케이션은 요소들의 렌더링을 유지하기 위해 저작 엔진(116)을 더 호출할 필요가 없다. 따라서, 저작 엔진(116)은 디스플레이 장치(112)의 리프레시 레이트로 애니메이션을 렌더링하기 위해 초당 60번의 호출을 행하는 애플리케이션을 포함할 수 있는 전통적인 기술들에 비해 자원들을 보존할 수 있다. 따라서, 애플리케이션(110)은 구조를 구성하기 위한 사용자 모드 라이브러리(202)의 API 및 저작 엔진에 의해 렌더링될 요소들을 구성하기 위한 API를 호출할 수 있다.
저작 엔진(116)에 의해 렌더링되는 콘텐츠를 변경하기 위하여, 애플리케이션은 사용자 모드 라이브러리(202)의 다른 애플리케이션 프로그래밍 인터페이스를 호출하여, 구조 및/또는 요소들을 갱신할 수 있다. 예를 들어, 애플리케이션은 스톡 티커 애니메이션을 위해 사용될 정보를 제공하기 위해 갱신 API를 통해 데이터를 제공할 수 있다.
하나 이상의 구현에서, 프레임들을 이용하여 어느 요소들을 렌더링할지를 정의하기 위해 배칭(batching) 기술들도 이용될 수 있다. 전술한 바와 같이, 글로벌 저작 시스템(114)은 다양한 상이한 레이트로 렌더링할 다양한 상이한 요소들을 수신할 수 있다. 따라서, 글로벌 저작 시스템(114)은 함께 렌더링될 요소들의 리스트가 형성되는 구조를 지원할 수 있다. 따라서, 글로벌 저작 시스템(114)은 요소들에 대한 시작과 종료의 정의를 구현할 수 있으며, 그 사이에 수신되는 요소들은 "종료"가 수신될 때까지 렌더링되지 않는다. 따라서, 프레임은 특정 프레임들에 대한 요소들의 렌더링에 대한 "모든" 접근법을 지원할 수 있거나 "어떠한" 접근법도 지원하지 않을 수 있으며, 원할 때 요소들이 표시를 위해 함께 렌더링되는 것을 보증할 수 있다.
예를 들어 객체 데이터베이스 모듈(204)은 애플리케이션에 대한 2개의 상이한 상태를 추적할 수 있다. 제1 상태는 현재의 표시를 위한 요소들을 참조할 수 있다. 제2 상태는 제1 상태에 이어서 표시되고 변경되는 요소들을 참조할 수 있다. 따라서, 제2 상태는 리스트가 완성되면, 예를 들어 리스트가 완성되었다는 지시가 애플리케이션으로부터 수신되면, 저작 엔진(116)에 의해 렌더링될 요소들의 리스트를 형성하는 데 사용될 수 있다.
완료시에, 변경들은 저작 엔진(116)으로 전송될 수 있다. 게다가, 리스트가 완성되었다는 애플리케이션으로부터의 지시의 수신의 타이밍을 이용하여, 그러한 변경들을 언제, 예를 들어 어느 프레임에 표시할지를 결정할 수 있다. 따라서, 저작 엔진(116)은 완성된 하나 이상의 리스트에 설명된 변경들의 배치를 수신할 수 있지만, 완성된 것으로 지시되지 않은 리스트들은 전달되지 않는다. 따라서, 이러한 배칭은 저작 엔진(116)에 의해 렌더링되는 프레임들을 정의할 수 있다. 게다가, 이것은 그러한 정의를 지원하지 않는 전통적인 기술들을 이용하여 발생할 수 있는 바와 같은 잘못된 시각적 아티팩트들의 표시의 제한을 도울 수 있다. 자명하듯이, 프레임들에 대응하는 시간의 양은 필요에 따라 다양한 상이한 양으로 설정될 수 있다.
따라서, 객체 데이터베이스 모듈(204)은 저작 엔진에 의해 이전에 무엇이 렌더링되었는지(예로서, 요소들 및 이들 요소의 특성들)를 기억할 수 있는 것은 물론, 무엇이 렌더링될지를 알 수 있다. 따라서, 객체 데이터베이스 모듈(204)은 이러한 정보를 비교함으로써 어느 요소들을 변경할지를 결정할 수 있다. 따라서, 객체 데이터베이스 모듈(204)은 저작 엔진(116)에 변경되지 않은 정보를 전달하지 않고 이러한 변경을 설명하는 정보를 전달할 수 있다.
게다가, 프레임들의 사용은 효율을 더 개선할 수 있다. 예를 들어, 애플리케이션은 객체가 소정 거리만큼 이동하고 원래의 위치로 복귀할 것을 설명하는 데이터를 전달할 수 있다. 객체 데이터베이스 모듈(204)은 이러한 이동이 단일 프레임의 기간 내에 발생할 것으로 결정할 수 있다. 따라서, 객체 데이터베이스 모듈(204)은 이러한 데이터를 저작 엔진(116)에 전달하지 않을 수 있으며, 오히려 객체를 그의 이전 상태로 유지할 수 있다. 예를 들어, 이러한 이동은 디스플레이 장치(112)를 리프레시하는 데 사용되는 기간 내에 발생할 수 있으며, 따라서 여하튼 사용자에게 보이지 않을 것이다.
이러한 방식으로, 객체 데이터베이스 모듈(204)은 렌더링을 위해 저작 엔진(116)에 제공될 리스트의 구성시에 중간 상태들을 폐기할 수 있다. 이어서, 이 리스트는 변경들을 구현하기 위해 저작 엔진(116)에 의해 수행될 명령들의 어레이와 같은 다양한 방식으로 전달될 수 있다. 게다가, 이러한 기술은 애플리케이션에 의해 전송되는 비한정 데이터의 사례들을 어드레스하는 데에도 사용될 수 있는데, 그 이유는 단일 사례만이 저작 엔진에 보고되기 때문이다.
객체 데이터베이스 모듈(204) 및 저작 엔진(116)은 변경이 구현되었음을 설명하는 수신 확인 응답 기술들도 이용할 수 있다. 예를 들어, 저작 엔진(116)은 이루어질 변경을 설명하는 객체 데이터베이스 모듈(204)로부터의 통신을 수신할 수 있다. 변경이 행해지는 동안, 객체 데이터베이스 모듈(204)은 이전의 변경이 이루어졌다는 수신 확인 응답이 수신될 때까지 추가적인 변경들을 전송하기 위해 기다릴 수 있다. 객체 데이터베이스 모듈(204)에 의해 수신 확인 응답이 수신되면, 추가적인 변경들이 저작 엔진에 전달될 수 있다.
게다가, 이러한 기술은 "스로틀링(throttling)"을 제공하여 컴퓨팅 장치(102)의 자원들을 더 보존하는 데 사용될 수 있다. 예를 들어, 애플리케이션은 디스플레이 장치가 리프레시되는 레이트를 초과하는 다수의 요청을 행할 수 있다. 프레임들을 사용하고 변경들을 배칭함으로써, 소비될 자원들의 양을 줄인다.
사용자 모드 라이브러리(202)의 API를 호출함으로써 표시되는 것에 대한 변경들을 행하는 애플리케이션들이 멀티스레딩될 수 있다. 따라서, 하나 이상의 구현에서, 객체 데이터베이스 모듈(204)은 단일 애플리케이션의 다수의 스레드로부터의 다수의 호출이 상태를 손상시키지 않도록 하는 기술들을 이용할 수 있다. 이것은 자신의 스레드들을 함께 록킹하는 애플리케이션 자체에 의해 수행될 수 있는데, 예를 들어 하나의 스레드가 차단되는 동안에 애플리케이션의 다른 스레드가 작업을 완료할 수 있다.
이어서, 다수의 스레드로부터의 변경들은 다른 스레드로 제어를 전달하기 전에 상이한 스레드들이 "완전한" 변경들을 행할 수 있도록 변수들에 대해 이용될 수 있는 연동 액세스 등을 통해 운영 체제(108)에 의해 관리될 수 있는 큐 내에 저장될 수 있다. 이것은 저작 엔진에 의해 처리될 작업의 원자 단위들에 도달하기 위해 전술한 프레임 기술들을 지원할 수 있다. 게다가, 갱신들이 수신되지 않은 프레임들에 대해, 저작 엔진의 실행은 다음 프레임까지 중지될 수 있으며, 따라서 컴퓨팅 장치(102)의 자원들이 더 보존될 수 있다.
커널(216)은 또한 글로벌 저작 시스템(114)과 관련하여 다양한 기능을 추가할 수 있다. 예를 들어, 애플리케이션이 실패(예로서, 충돌)할 때, 커널(216)은 이러한 사건을 저작 엔진(116)에 통지할 수 있다. 이어서, 저작 엔진(116)은 애플리케이션이 정상적인 종료 절차를 통해 "자연스럽게" 실행을 중지하는 경우에 사용되는 것들과 유사한 기술들을 수행할 수 있다. 이러한 방식으로, 저작 엔진(116)은 "클린업" 상태에 도달하여, 애플리케이션에 대응하는 요소들이 컴퓨팅 장치(102)의 디스플레이 장치(112) 상의 표시로부터 제거될 수 있다. 따라서, 이것은 저작 엔진(116)의 실행의 강건성을 향상시킨다.
저작 엔진(116)의 실행은 사용자 모드 라이브러리(202)에 대한 기록 전용 API를 구현함으로써 보호될 수도 있다. 이러한 방식으로, 저작 엔진(116)은 픽셀들을 생성할 수 있지만, 그러한 픽셀들을 애플리케이션들에 다시 노출시키지 않을 수 있으며, 따라서 악인들로부터 이미지들을 보호할 수 있다.
전술한 바와 같이, 이러한 기술들의 구현은 컴퓨팅 장치(102) "밖의" 장치들도 포함할 수 있으며, 이들 장치는 웹 서비스(104)와 같은 하나 이상의 엔티티를 통해 분산될 수 있다. 예를 들어, 이러한 기술들은 네트워크(106)를 통해 요소들 및 특성들(예로서, 도 3의 그래프와 같은 저작 트리)의 배치의 전달을 통해 단말 서비스들, 원격 데스크톱 환경 등을 지원하는 데 사용될 수 있다. 따라서, 그래프(300)는 다른 곳에서 (예를 들어, 웹 서비스(104) 상의 사용자 모드 라이브러리(202) 및/또는 객체 데이터베이스 모듈(204)의 구현을 통해) 생성될 수 있으며, 컴퓨팅 장치(102)의 실행을 통해 저작 엔진(116)에 의해 렌더링될 저작 트리를 전송할 수 있다. 이러한 방식으로, 애니메이션들은 네트워크(106)가 신뢰성이 없는 경우에도 유연하게 표시될 수 있다. 이들 및 다른 기술들에 대한 추가적인 설명은 아래의 절차들과 관련하여 발견될 수 있다.
글로벌 저작 시스템(114)은 동작들을 수행하기 위해 하드웨어(예로서, 그래픽 카드)로부터 이용 가능한 기능을 이용하도록 구성될 수도 있으며, 이는 동작들이 더 빠르게 행해지고 더 양호한 성능을 나타낼 수 있다는 것을 의미한다. 그 예는 그래픽 처리 유닛(GPU)을 이용하여, 2개의 오버레이된 반투명 윈도우를 혼합하고, 기하학적 클립들(둥근 코너들)을 드로잉하는 것 등에 의해 저작 요소(예를 들어, UI의 일부, 전체 윈도우)에 투명성을 추가하는 것을 포함한다. 하드웨어(예를 들어, GPU)가 이용 가능하지 않을 때, 글로벌 저작 시스템(114)은 소프트웨어 렌더링으로 "폴링 백(falling back)"함으로써 여전히 이들 동작을 수행할 수 있다.
일반적으로, 본 명세서에서 설명되는 임의의 기능들은 소프트웨어, 펌웨어, 하드웨어(예로서, 고정 논리 회로) 또는 이들의 조합을 이용하여 구현될 수 있다. 본 명세서에서 사용되는 바와 같은 용어 "모듈", "기능" 및 "엔진"은 일반적으로 소프트웨어, 펌웨어, 하드웨어 또는 이들의 조합을 나타낸다. 소프트웨어 구현의 경우, 모듈, 기능 또는 엔진은 프로세서(예를 들어, CPU 또는 CPU들)에서 실행될 때 지정 작업들을 수행하는 프로그램 코드를 나타낸다. 프로그램 코드는 하나 이상의 컴퓨터 판독 가능 메모리 장치에 저장될 수 있다. 후술하는 기술들의 특징들은 플랫폼과 무관하며, 이는 기술들이 다양한 프로세서들을 갖는 다양한 상용 컴퓨팅 플랫폼들에서 구현될 수 있다는 것을 의미한다.
예를 들어, 컴퓨팅 장치(102)는 컴퓨팅 장치(102)의 하드웨어, 예를 들어 프로세서, 기능 블록 등으로 하여금 동작들을 수행하게 하는 엔티티(예를 들어, 소프트웨어)도 포함할 수 있다. 예를 들어, 컴퓨팅 장치(102)는 컴퓨팅 장치, 더 구체적으로는 컴퓨팅 장치(102)의 하드웨어로 하여금 동작들을 수행하게 하는 명령어들을 유지하도록 구성될 수 있는 컴퓨터 판독 가능 매체를 포함할 수 있다. 따라서, 명령어들은 동작들을 수행하도록 하드웨어를 구성하고, 이러한 방식으로 기능들을 수행하도록 하드웨어를 변환하는 기능을 한다. 명령어들은 컴퓨터 판독 가능 매체에 의해 다양한 상이한 구성을 통해 컴퓨팅 장치(102)에 제공될 수 있다.
컴퓨터 판독 가능 매체의 하나의 그러한 구성은 신호 보유 매체이며, 따라서 명령어들을 (예를 들어, 반송파로서) 예를 들어 네트워크를 통해 컴퓨팅 장치의 하드웨어로 전송하도록 구성된다. 컴퓨터 판독 가능 매체는 컴퓨터 판독 가능 저장 매체로도 구성될 수 있으며, 따라서 신호 보유 매체가 아니다. 컴퓨터 판독 가능 저장 매체의 예는 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 광 디스크, 플래시 메모리, 하드 디스크 메모리, 및 명령어들 및 다른 데이터를 저장하기 위해 자기, 광 및 다른 기술들을 이용할 수 있는 다른 메모리 장치들을 포함한다.
예시적인 절차들
아래의 설명은 전술한 시스템들 및 장치들을 이용하여 구현될 수 있는 글로벌 저작 시스템 기술들을 설명한다. 절차들 각각의 양태들은 하드웨어, 펌웨어, 소프트웨어 또는 이들의 조합에서 구현될 수 있다. 절차들은 하나 이상의 장치에 의해 수행되는 동작들을 지정하는 블록들의 세트로서 도시되지만, 각각의 블록에 의해 동작들을 수행하기 위해 도시된 순서로 반드시 한정되지는 않는다. 아래의 설명의 부분들에서는, 도 1의 환경(100), 도 2의 시스템(200) 및 도 3의 그래프(300)를 참조한다.
도 4는 단일 저작 엔진에 의해 렌더링될 요소들을 설명하는 그래프가 생성되는 예시적인 구현에서의 절차(400)를 나타낸다. 하나 이상의 컴퓨팅 장치에 의해 실행되는 복수의 애플리케이션에 의해 렌더링되도록 지정된 요소들을 설명하는 그래프가 생성된다(블록 402). 도 3에 도시된 바와 같이, 그래프(300)는 렌더링될 요소들의 리스트는 물론, 디스플레이 장치(112) 상에서 요소들을 어디에 렌더링할지에 대한 설명도 포함할 수 있으며, 이 설명은 애니메이션의 일례에서 요소들이 이동하는 방법을 포함할 수 있다. 게다가, 렌더링될 요소들은 하위 요소들을 이용하여 형성될 수 있으며, 따라서 그래프(300)는 계층 구조를 가질 수 있다. 게다가, 그래프(300)는 요소들이 렌더링되는 방법을 설명할 수 있다. 따라서, 그래프(300)는 요소들 및 요소들이 서로 관련되는 방식을 설명할 수 있다. 다양한 다른 그래프들도 고려된다.
요소들을 렌더링하기 위한 단일 저작 엔진에 의해 수신되도록 그래프가 전달된다(블록 404). 이것은 다양한 방식으로 수행될 수 있다. 예를 들어, 그래프는 단일 저작 엔진을 실행하는 컴퓨팅 장치에 의한 수신을 위해 네트워크를 통해 웹 서비스로부터, 예를 들어 웹 서비스(104)의 글로벌 저작 시스템(118)으로부터 네트워크(116)를 통해 컴퓨팅 장치(102)의 저작 엔진(116)으로 전달될 수 있다(블록 406). 다른 예에서, 그래프는 객체 데이터베이스 모듈로부터 단일 저작 엔진으로 전달될 수 있다(블록 408). 객체 데이터베이스 모듈(204)은 예를 들어 복수의 애플리케이션으로부터 수신된 데이터에 기초하여 그래프를 생성하고, 그래프를 저작 엔진으로 전달하여, 갱신되는 요소들을 참조하게 할 수 있다. 다양한 다른 예들도 고려된다.
예시적인 시스템 및 장치
도 5는 도 1을 참조하여 설명된 바와 같은 컴퓨팅 장치(102)를 포함하는 예시적인 시스템(500)을 나타낸다. 예시적인 시스템(500)은 개인용 컴퓨터(PC), 텔레비전 장치 및/또는 이동 장치에서 애플리케이션들을 실행할 때 결함 없는 사용자 경험을 위한 유비쿼터스 환경들을 가능하게 한다. 서비스들 및 애플리케이션들은 애플리케이션을 이용하고, 비디오 게임을 실행하고, 비디오를 시청하는 것 등을 행하는 동안 하나의 장치로부터 다른 장치로 전이할 때 일반적인 사용자 경험을 위한 3개의 환경 모두에서 실질적으로 유사하게 실행된다. 도시된 예에서, 컴퓨팅 장치(102)는 전술한 글로벌 저작 시스템(114)의 적어도 일부를 구현하는 것으로 도시된다.
예시적인 시스템(500)에서는, 다수의 장치가 중앙 컴퓨팅 장치를 통해 상호접속된다. 중앙 컴퓨팅 장치는 다수의 장치에 가까울 수 있거나, 다수의 장치로부터 멀리 위치할 수 있다. 일 실시예에서, 중앙 컴퓨팅 장치는 네트워크, 인터넷 또는 다른 데이터 통신 링크를 통해 다수의 장치에 접속되는 하나 이상의 서버 컴퓨터의 클라우드일 수 있다. 일 실시예에서, 이러한 상호접속 아키텍처는 기능이 다수의 장치에 걸쳐 전달되어 다수의 장치의 사용자에게 일반적이고 결함 없는 경험을 제공하는 것을 가능하게 한다. 다수의 장치 각각은 상이한 물리적 요구들 및 능력들을 가질 수 있으며, 중앙 컴퓨팅 장치는 장치에 대해 맞춤화되지만 아직 모든 장치들에 공통인, 장치에 대한 경험의 전달을 가능하게 하기 위해 플랫폼을 이용한다. 일 실시예에서는, 타겟 장치들의 클래스가 생성되고, 장치들의 일반 클래스에 대해 경험들이 맞춤화된다. 장치들의 클래스는 장치들의 물리적인 특징들, 이용 타입들 또는 다른 공통 특성들에 의해 정의될 수 있다.
다양한 구현들에서, 컴퓨팅 장치(102)는 예를 들어 컴퓨터(502), 이동 장치(504) 및 텔레비전(506) 용도들을 위한 다양한 상이한 구성들을 가질 수 있다. 이들 구성 각각은 일반적으로 상이한 구조들 및 능력들을 가질 수 있는 장치들을 포함하며, 따라서 컴퓨팅 장치(102)는 상이한 장치 클래스들 중 하나 이상에 따라 구성될 수 있다. 예를 들어, 컴퓨팅 장치(102)는 개인용 컴퓨터, 데스크톱 컴퓨터, 멀티스크린 컴퓨터, 랩탑 컴퓨터, 넷북 등을 포함하는 컴퓨터(502) 장치 클래스로서 구현될 수 있다.
컴퓨팅 장치(102)는 또한 이동 전화, 휴대용 뮤직 플레이어, 휴대용 게이밍 장치, 태블릿 컴퓨터, 멀티스크린 컴퓨터 등과 같은 이동 장치들을 포함하는 이동 장치(504) 클래스로서 구현될 수 있다. 컴퓨팅 장치(102)는 또한 통상의 시청 환경들에서 일반적으로 더 큰 스크린들을 갖거나 그들에 접속되는 장치들을 포함하는 텔레비전(506) 장치 클래스로서 구현될 수 있다. 이러한 장치들은 텔레비전, 셋톱 박스, 게이밍 콘솔 등을 포함한다. 본 명세서에서 설명되는 기술들은 컴퓨팅 장치(102)의 이러한 다양한 구성들에 의해 지원될 수 있으며, 본 명세서에서 설명되는 기술들의 특정 예들로 한정되지 않는다.
클라우드(508)는 콘텐츠 서비스들(512)을 위한 플랫폼(510)을 포함하고/하거나 이를 나타낸다. 플랫폼(510)은 클라우드(508)의 하드웨어(예를 들어, 서버들) 및 소프트웨어 자원들의 기본 기능을 추상화한다. 플랫폼은 사용자 모드 라이브러리 및/또는 객체 데이터베이스 모듈(204)과 같은 글로벌 저작 시스템(118)의 적어도 일부를 지원하는 것으로 도시된다. 따라서, 플랫폼은 글로벌 저작 시스템(118)의 전부 또는 일부의 원격 처리의 지원을 도울 수 있다.
플랫폼(510)은 컴퓨팅 장치(102)를 다른 컴퓨팅 장치들에 접속하기 위한 자원들 및 기능들을 추상화할 수 있다. 플랫폼(510)은 플랫폼(510)을 통해 구현되는 글로벌 저작 시스템(118)에 대한 마주한 요구에 대해 대응하는 레벨의 스케일을 제공하기 위해 자원들의 스케일링을 추상화하는 데에도 사용될 수 있다. 따라서, 상호접속된 장치 실시예에서, 본 명세서에서 설명되는 기능의 구현은 시스템(500) 전반에 분산될 수 있다. 예를 들어, 기능은 컴퓨팅 장치(102) 상에서 부분적으로, 또한 클라우드(508)의 기능을 추상화하는 플랫폼(510)을 통해 구현될 수 있다.
도 6은 본 명세서에서 설명되는 기술들의 실시예들을 구현하기 위해 도 1, 2 및 5를 참조하여 설명된 바와 같은 임의의 타입의 컴퓨팅 장치로서 구현될 수 있는 예시적인 장치(600)의 다양한 컴포넌트들을 도시한다. 장치(600)는 장치 데이터(604)(예를 들어, 수신된 데이터, 수신되고 있는 데이터, 방송을 위해 스케줄링된 데이터, 데이터의 데이터 패킷들 등)의 유선 및/또는 무선 통신을 가능하게 하는 통신 장치들(602)을 포함한다. 장치 데이터(604) 또는 다른 장치 콘텐츠는 장치의 구성 설정들, 장치에 저장된 미디어 콘텐츠, 및/또는 장치의 사용자와 관련된 정보를 포함할 수 있다. 장치(600)에 저장된 미디어 콘텐츠는 임의의 타입의 오디오, 비디오 및/또는 이미지 데이터를 포함할 수 있다. 장치(600)는 사용자 선택 가능 입력, 메시지, 뮤직, 텔레비전 미디어 콘텐츠, 녹화된 비디오 콘텐츠, 및 임의의 콘텐츠 및/또는 데이터 소스로부터 수신된 임의의 다른 타입의 오디오, 비디오, 및/또는 이미지 데이터와 같은 임의 타입의 데이터, 미디어 콘텐츠 및/또는 입력들을 수신할 수 있는 하나 이상의 데이터 입력(606)을 포함한다.
장치(600)는 직렬 및/또는 병렬 인터페이스, 무선 인터페이스, 임의 타입의 네트워크 인터페이스, 모뎀 중 하나 이상으로서 그리고 임의 타입의 통신 인터페이스로서 구현될 수 있는 통신 인터페이스들(608)도 포함한다. 통신 인터페이스들(608)은 다른 전자, 컴퓨팅 및 통신 장치들이 장치(600)와 데이터를 전달하는 통신 네트워크와 장치(600) 간의 접속 및/또는 통신 링크들을 제공한다.
장치(600)는 장치(600)의 동작을 제어하고 본 명세서에서 설명되는 기술들의 실시예들을 구현하기 위해 다양한 컴퓨터 실행 가능 명령어들을 처리하는 하나 이상의 프로세서(610)(예를 들어, 임의의 마이크로프로세서, 제어기 등)를 포함한다. 대안으로서 또는 추가로, 장치(600)는 일반적으로 612로 식별되는 처리 및 제어 회로들과 관련하여 구현되는 하드웨어, 펌웨어 또는 고정 논리 회로의 임의의 하나 이상의 조합을 이용하여 구현될 수 있다. 도시되지 않았지만, 장치(600)는 장치 내의 다양한 컴포넌트들을 결합하는 시스템 버스 또는 데이터 전송 시스템을 포함할 수 있다. 시스템 버스는 임의의 다양한 버스 아키텍처를 이용하는 메모리 버스 또는 메모리 제어기, 주변 버스, 유니버설 직렬 버스 및/또는 프로세서 또는 로컬 버스와 같은 상이한 버스 구조들의 임의의 하나 이상의 조합을 포함할 수 있다.
장치(600)는 하나 이상의 메모리 컴포넌트와 같은 컴퓨터 판독 가능 매체(614)도 포함하며, 그 예는 랜덤 액세스 메모리(RAM), 비휘발성 메모리(예로서, 판독 전용 메모리(ROM), 플래시 메모리, EPROM, EEPROM 등 중 임의의 하나 이상) 및 디스크 저장 장치를 포함한다. 디스크 저장 장치는 하드 디스크 드라이브, 기록 가능 및/또는 재기록 가능 컴팩트 디스크(CD), 임의의 타입의 디지털 다기능 디스크(DVD) 등과 같은 임의 타입의 자기 또는 광학 저장 장치로서 구현될 수 있다. 장치(600)는 대용량 저장 매체 장치(616)도 포함할 수 있다.
컴퓨터 판독 가능 매체(614)는 장치 데이터(604)는 물론, 다양한 장치 애플리케이션들(618) 및 장치(600)의 동작 양태들과 관련된 임의의 다른 타입의 정보 및/또는 데이터도 저장하기 위한 데이터 저장 메커니즘들을 제공한다. 예를 들어, 운영 체제(620)가 컴퓨터 판독 가능 매체(614) 내에 컴퓨터 애플리케이션으로서 유지되고, 프로세서(610) 상에서 실행될 수 있다. 장치 애플리케이션들(618)은 장치 관리자(예를 들어, 제어 애플리케이션, 소프트웨어 애플리케이션, 신호 처리 및 제어 모듈, 특정 장치에 고유한 코드, 특정 장치에 대한 하드웨어 추상화 계층 등)를 포함할 수 있다. 장치 애플리케이션들(618)은 또한 본 명세서에서 설명되는 가르침들의 실시예들을 구현하기 위한 임의의 시스템 컴포넌트들 또는 모듈들을 포함한다. 이 예에서, 장치 애플리케이션들(618)은 소프트웨어 모듈들 및/또는 컴퓨터 애플리케이션들로서 도시되는 인터페이스 애플리케이션(622) 및 입출력 모듈(624)을 포함한다. 입출력 모듈(624)은 터치스크린, 트랙 패드, 카메라, 마이크 등과 같이 입력들을 캡처하도록 구성되는 장치와의 인터페이스를 제공하는 데 사용되는 소프트웨어를 나타낸다. 대안으로서 또는 추가로, 인터페이스 애플리케이션(622) 및 입출력 모듈(624)은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의 조합으로서 구현될 수 있다. 게다가, 입출력 모듈(624)은 비주얼 및 오디오 입력들을 각각 캡처하기 위한 개별 장치들과 같은 다수의 입력 장치를 지원하도록 구성될 수 있다.
장치(600)는 또한 오디오 데이터를 오디오 시스템(628)에 제공하고/하거나 비디오 데이터를 디스플레이 시스템(630)에 제공하는 오디오 및/또는 비디오 입출력 시스템(626)을 포함한다. 오디오 시스템(628) 및/또는 디스플레이 시스템(630)은 오디오, 비디오 및 이미지 데이터를 처리, 표시 및/또는 렌더링하는 임의의 장치들을 포함할 수 있다. 비디오 신호들 및 오디오 신호들은 장치(600)로부터 RF(무선 주파수) 링크, S-비디오 링크, 합성 비디오 링크, 컴포넌트 비디오 링크, DVI(디지털 비디오 인터페이스), 아날로그 오디오 접속 또는 다른 유사한 통신 링크를 통해 오디오 장치 및/또는 디스플레이 장치로 전달될 수 있다. 일 실시예에서, 오디오 시스템(628) 및/또는 디스플레이 시스템(630)은 장치(600)의 외부 컴포넌트들로서 구현된다. 대안으로서, 오디오 시스템(628) 및/또는 디스플레이 시스템(630)은 예시적인 장치(600)의 통합 컴포넌트들로서 구현된다.
결론
본 발명은 구조적 특징들 및/또는 방법적 동작들에 고유한 언어로 설명되었지만, 첨부된 청구범위에서 정의되는 발명은 설명된 특정 특징들 또는 동작들로 반드시 한정되지는 않는다는 것을 이해해야 한다. 오히려, 특정 특징들 및 동작들은 청구 발명을 구현하는 예시적인 형태들로서 개시된다.

Claims (10)

  1. 하드웨어로 적어도 부분적으로 구현되는 하나 이상의 모듈을 포함하고, 상기 하나 이상의 모듈은 하나 이상의 애플리케이션 프로그래밍 인터페이스를 통해 복수의 애플리케이션에 액세스할 수 있는 단일 저작 엔진(composition engine)을 구현하도록 구성되며, 상기 저작 엔진은 디스플레이 장치 상의 표시를 위해 상기 저작 엔진에 의해 렌더링될 상기 복수의 애플리케이션 각각으로부터의 요소를 기술하는 데이터를 수신하도록 구성되는
    시스템.
  2. 제1항에 있어서,
    상기 요소는 제1 애플리케이션에 대응하는 제1 윈도우 및 제2 애플리케이션에 대응하는 제2 윈도우를 포함하는
    시스템.
  3. 제1항에 있어서,
    제1 요소가 제1 애플리케이션에 의해 제공되며, 제2 요소가 제2 애플리케이션에 의해 제공되는
    시스템.
  4. 제3항에 있어서,
    상기 하나 이상의 모듈은
    상기 제1 요소가 렌더링될 때 상기 제2 요소에 의해 폐쇄될지를 결정하며,
    상기 제1 요소가 폐쇄된다는 결정에 응답하여, 상기 제1 요소의 렌더링을 생략하도록 구성되는
    시스템.
  5. 제3항에 있어서,
    상기 하나 이상의 모듈은
    상기 제1 요소가 렌더링될 때 디스플레이 장치 상에서 상기 제2 요소와 동일한 위치를 공유하는 것으로 판정하며,
    상기 판정에 응답하여, 하나 이상의 시각적 효과의 적용 전에 그리고 상기 판정 후에 상기 제1 및 제2 요소를 개별적으로 렌더링하지 않고 상기 제1 및 제2 요소가 상기 동일한 위치를 공유하는 결과를 생성하기 위해 상기 하나 이상의 시각적 효과를 적용하도록 구성되는
    시스템.
  6. 제1항에 있어서,
    상기 하나 이상의 모듈은 상기 하나 이상의 모듈을 포함하는 컴퓨팅 장치의 커널 내에서 객체 데이터베이스 모듈을 구현하도록 더 구성되며, 상기 객체 데이터베이스 모듈은 상기 데이터의 적어도 일부를 상기 하나 이상의 API로부터 상기 저작 엔진으로 전달하도록 구성되는
    시스템.
  7. 제6항에 있어서,
    상기 데이터의 상기 적어도 일부는 상기 요소의 리스트의 시작과 끝을 기술하며, 상기 객체 데이터베이스 모듈은 대응하는 상기 애플리케이션으로부터의 상기 리스트의 상기 끝의 표시의 수신에 응답하여 상기 요소의 상기 리스트를 상기 저작 엔진에 제공하도록 구성되는
    시스템.
  8. 제6항에 있어서,
    상기 객체 데이터베이스 모듈은 상기 요소 중 어느 것이 상기 복수의 애플리케이션 중 어느 것에 대응하는지를 추적하도록 구성되는
    시스템.
  9. 제6항에 있어서,
    상기 객체 데이터베이스 모듈은 상기 데이터가 상기 저작 엔진에 의한 렌더링을 위한 기준을 충족시킨다는 검증을 수행하도록 구성되는
    시스템.
  10. 제6항에 있어서,
    상기 객체 데이터베이스 모듈은 변경된 요소를 기술하는 상기 데이터의 상기 적어도 일부를 상기 저작 엔진으로 전달하며, 변경되지 않은 요소들을 기술하는 상기 데이터의 다른 부분은 전달하지 않도록 구성되는
    시스템.
KR1020137031859A 2011-06-02 2011-10-09 글로벌 컴포지션 시스템 KR101855552B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/152,133 US9361715B2 (en) 2011-06-02 2011-06-02 Global composition system
US13/152,133 2011-06-02
PCT/US2011/055531 WO2012166189A1 (en) 2011-06-02 2011-10-09 Global composition system

Publications (2)

Publication Number Publication Date
KR20140030226A true KR20140030226A (ko) 2014-03-11
KR101855552B1 KR101855552B1 (ko) 2018-06-08

Family

ID=47259700

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137031859A KR101855552B1 (ko) 2011-06-02 2011-10-09 글로벌 컴포지션 시스템

Country Status (6)

Country Link
US (2) US9361715B2 (ko)
EP (1) EP2715529B1 (ko)
JP (1) JP6033854B2 (ko)
KR (1) KR101855552B1 (ko)
CN (1) CN103562862B (ko)
WO (1) WO2012166189A1 (ko)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9767098B2 (en) 2012-08-08 2017-09-19 Amazon Technologies, Inc. Archival data storage system
US9251097B1 (en) 2011-03-22 2016-02-02 Amazon Technologies, Inc. Redundant key management
US9563681B1 (en) 2012-08-08 2017-02-07 Amazon Technologies, Inc. Archival data flow management
US9361715B2 (en) 2011-06-02 2016-06-07 Microsoft Technology Licensing, Llc Global composition system
US8924507B2 (en) * 2011-09-02 2014-12-30 Microsoft Corporation Cross-frame progressive spoiling support for reduced network bandwidth usage
US9563971B2 (en) * 2011-09-09 2017-02-07 Microsoft Technology Licensing, Llc Composition system thread
US9830111B1 (en) 2012-08-08 2017-11-28 Amazon Technologies, Inc. Data storage space management
US9250811B1 (en) * 2012-08-08 2016-02-02 Amazon Technologies, Inc. Data write caching for sequentially written media
US8959067B1 (en) 2012-08-08 2015-02-17 Amazon Technologies, Inc. Data storage inventory indexing
US9904788B2 (en) 2012-08-08 2018-02-27 Amazon Technologies, Inc. Redundant key management
US9779035B1 (en) 2012-08-08 2017-10-03 Amazon Technologies, Inc. Log-based data storage on sequentially written media
US9652487B1 (en) 2012-08-08 2017-05-16 Amazon Technologies, Inc. Programmable checksum calculations on data storage devices
US9354683B2 (en) 2012-08-08 2016-05-31 Amazon Technologies, Inc. Data storage power management
US8805793B2 (en) 2012-08-08 2014-08-12 Amazon Technologies, Inc. Data storage integrity validation
US9225675B2 (en) 2012-08-08 2015-12-29 Amazon Technologies, Inc. Data storage application programming interface
US10120579B1 (en) 2012-08-08 2018-11-06 Amazon Technologies, Inc. Data storage management for sequentially written media
US10558581B1 (en) 2013-02-19 2020-02-11 Amazon Technologies, Inc. Systems and techniques for data recovery in a keymapless data storage system
US20160071491A1 (en) * 2013-04-10 2016-03-10 Jeremy Berryman Multitasking and screen sharing on portable computing devices
US9542906B2 (en) * 2013-05-10 2017-01-10 Microsoft Technology Licensing, Llc Shared compositional resources
US9443331B2 (en) 2013-06-06 2016-09-13 Microsoft Technology Licensing, Llc Input object for routing input for visual elements
US10348997B2 (en) 2015-07-09 2019-07-09 Genetec Inc. Security video monitoring client
US11386060B1 (en) 2015-09-23 2022-07-12 Amazon Technologies, Inc. Techniques for verifiably processing data in distributed computing systems
US10825129B2 (en) 2016-06-12 2020-11-03 Apple Inc. Eliminating off screen passes using memoryless render target
FR3085684B1 (fr) * 2018-09-11 2021-06-04 Michelin & Cie Composition de caoutchouc
EP3629108B1 (de) * 2018-09-28 2022-08-24 Siemens Aktiengesellschaft Projektierung eines automatisierungssystems
US10947368B2 (en) 2019-03-04 2021-03-16 The Goodyear Tire & Rubber Company Pneumatic tire
US11440350B2 (en) 2020-05-13 2022-09-13 The Goodyear Tire & Rubber Company Pneumatic tire

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050088436A1 (en) * 2003-10-23 2005-04-28 Microsoft Corporation System and method for a unified composition engine in a graphics processing system
US20090293013A1 (en) * 2008-05-20 2009-11-26 Palm, Inc. System and method for providing content on an electronic device
WO2011060442A2 (en) * 2009-11-16 2011-05-19 Citrix Systems, Inc. Methods and systems for selective implementation of progressive display techniques

Family Cites Families (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5745095A (en) 1995-12-13 1998-04-28 Microsoft Corporation Compositing digital information on a display screen based on screen descriptor
US6697063B1 (en) 1997-01-03 2004-02-24 Nvidia U.S. Investment Company Rendering pipeline
US6172684B1 (en) 1997-06-12 2001-01-09 Silicon Engineering, Inc. Method and apparatus for storing display lists of 3D primitives
US7168048B1 (en) * 1999-03-24 2007-01-23 Microsoft Corporation Method and structure for implementing a layered object windows
US7133041B2 (en) 2000-02-25 2006-11-07 The Research Foundation Of State University Of New York Apparatus and method for volume processing and rendering
US6977661B1 (en) 2000-02-25 2005-12-20 Microsoft Corporation System and method for applying color management on captured images
JP2001348461A (ja) 2000-06-08 2001-12-18 Bridgestone Corp ゴム組成物及びそれを用いた空気入りタイヤ
FR2821849A1 (fr) * 2001-03-12 2002-09-13 Michelin Soc Tech Composition de caoutchouc pour bande de roulement de pneumatique et enveloppe de pneumatique l'incorporant
CA2410156C (fr) * 2001-03-12 2011-08-23 Michelin Recherche Et Technique S.A. Composition de caoutchouc pour bande de roulement de pneumatique
FR2821848A1 (fr) * 2001-03-12 2002-09-13 Michelin Soc Tech Composition de caoutchouc pour bande de roulement de pneumatique et enveloppe de pneumatique l'incorporant
US7161599B2 (en) 2001-10-18 2007-01-09 Microsoft Corporation Multiple-level graphics processing system and method
US7443401B2 (en) 2001-10-18 2008-10-28 Microsoft Corporation Multiple-level graphics processing with animation interval generation
US20030078956A1 (en) 2001-10-24 2003-04-24 Aruna Ravichandran Multi-threaded design mechanism and methodology for dynamic menu management in GUI application
JP3761085B2 (ja) 2001-11-27 2006-03-29 株式会社ソニー・コンピュータエンタテインメント 画像処理装置及びその構成部品、レンダリング処理方法
JP3996777B2 (ja) 2002-01-22 2007-10-24 住友ゴム工業株式会社 タイヤ用トレッドゴム
US7032212B2 (en) 2002-05-06 2006-04-18 Microsoft Corporation Method and system for generating test matrices for software programs
US20030210267A1 (en) 2002-05-13 2003-11-13 Kylberg Robert Lee Systems and methods for providing asynchronous client rendering in a graphical user interface (GUI) environment
US6977658B2 (en) 2002-06-27 2005-12-20 Broadcom Corporation System for and method of performing an opacity calculation in a 3D graphics system
US7084228B2 (en) * 2002-07-29 2006-08-01 Michelin Recherche Et Technique S.A. Rubber composition for a tire tread
CN100482731C (zh) * 2002-09-04 2009-04-29 米其林技术公司 用于轮胎胎面的橡胶组合物
US7088374B2 (en) 2003-03-27 2006-08-08 Microsoft Corporation System and method for managing visual structure, timing, and animation in a graphics processing system
US7173623B2 (en) 2003-05-09 2007-02-06 Microsoft Corporation System supporting animation of graphical display elements through animation object instances
FR2857972B1 (fr) * 2003-07-21 2006-02-03 Michelin Soc Tech Bande de roulement pour pneumatique.
US7839419B2 (en) 2003-10-23 2010-11-23 Microsoft Corporation Compositing desktop window manager
US7274370B2 (en) * 2003-12-18 2007-09-25 Apple Inc. Composite graphics rendered using multiple frame buffers
US20050140692A1 (en) 2003-12-30 2005-06-30 Microsoft Corporation Interoperability between immediate-mode and compositional mode windows
US7173631B2 (en) 2004-09-23 2007-02-06 Qualcomm Incorporated Flexible antialiasing in embedded devices
FR2880893B1 (fr) 2005-01-19 2007-10-26 Michelin Soc Tech Bande de roulement pour pneumatique
US8239453B2 (en) 2005-02-25 2012-08-07 Microsoft Corporation System and method for providing one class of users of an application a view of what another class of users of the application is visually experiencing
US7154503B2 (en) 2005-03-31 2006-12-26 Microsoft Corporation Methods and systems for brush composition
US20060248471A1 (en) 2005-04-29 2006-11-02 Microsoft Corporation System and method for providing a window management mode
US8386628B1 (en) 2005-05-23 2013-02-26 Glance Networks, Inc. Method and apparatus for reducing the amount of information that must be transmitted to slower viewers over a remote viewing session
US20070013723A1 (en) 2005-07-12 2007-01-18 Microsoft Corporation Magnification engine and interface for computers
US7949955B2 (en) * 2005-08-04 2011-05-24 Microsoft Corporation Virtual magnifying glass system architecture
US7716685B2 (en) 2005-08-30 2010-05-11 Microsoft Corporation Pluggable window manager architecture using a scene graph system
US7609280B2 (en) 2005-09-07 2009-10-27 Microsoft Corporation High level graphics stream
US8527563B2 (en) 2005-09-12 2013-09-03 Microsoft Corporation Remoting redirection layer for graphics device interface
US7450130B2 (en) 2005-09-14 2008-11-11 Microsoft Corporation Adaptive scheduling to maintain smooth frame rate
US8154554B1 (en) 2006-07-28 2012-04-10 Nvidia Corporation Unified assembly instruction set for graphics processing
CN101460316B (zh) 2006-10-13 2010-12-08 米其林技术公司 改进的剪切带
FR2910905B1 (fr) * 2006-12-27 2010-08-20 Michelin Soc Tech Systeme plastifiant et composition de caoutchouc pour pneumatique incorporant ledit systeme
FR2916202B1 (fr) 2007-05-15 2009-07-17 Michelin Soc Tech Composition de caoutchouc pour pneumatique comportant un plastifiant diester
FR2916201B1 (fr) 2007-05-15 2009-07-17 Michelin Soc Tech Systeme plastifiant et composition de caoutchouc pour pneumatique incorporant ledit systeme
US8115773B2 (en) 2007-06-07 2012-02-14 Apple Inc. Serializing command streams for graphics processors
FR2923831B1 (fr) 2007-11-15 2010-04-09 Michelin Soc Tech Composition de caoutchouc pour pneumatique comportant un agent de recouvrement hydroxysilane
US8683159B2 (en) * 2007-12-27 2014-03-25 Intel Corporation Delivering secured media using a portable memory device
US8248412B2 (en) 2009-03-19 2012-08-21 International Business Machines Corporation Physical rendering with textured bounding volume primitive mapping
US20100289804A1 (en) 2009-05-13 2010-11-18 International Business Machines Corporation System, mechanism, and apparatus for a customizable and extensible distributed rendering api
FR2947275B1 (fr) * 2009-06-29 2011-08-26 Michelin Soc Tech Pneumatique dont la bande de roulement comprend un elastomere thermoplastique.
US9589310B2 (en) 2009-10-07 2017-03-07 Nvidia Corporation Methods to facilitate primitive batching
CN102656023B (zh) 2009-12-16 2015-01-21 米其林集团总公司 用于重型车辆轮胎的高二氧化硅含量
CA2803883C (en) * 2010-06-30 2016-02-02 William Marshall Thompson Tire tread for high performance tires
US9361715B2 (en) 2011-06-02 2016-06-07 Microsoft Technology Licensing, Llc Global composition system
EP2750904A4 (en) 2011-08-31 2015-04-15 Michelin Rech Tech TIRE RUNNING AREA WITH SNOW / DRY TRAINING
US8872838B2 (en) 2011-09-09 2014-10-28 Microsoft Corporation Primitive composition
US9563971B2 (en) 2011-09-09 2017-02-07 Microsoft Technology Licensing, Llc Composition system thread
US9153193B2 (en) 2011-09-09 2015-10-06 Microsoft Technology Licensing, Llc Primitive rendering using a single primitive type
US20130063482A1 (en) 2011-09-12 2013-03-14 Microsoft Corporation Application programming interface for a bitmap composition engine
US20140371346A1 (en) * 2011-09-14 2014-12-18 Michelin Recherche Et Technique S.A. Low rigidity tire tread
US20150283854A1 (en) 2011-09-14 2015-10-08 Michelin Recherche Et Technique S.A. Tire tread
US8980511B2 (en) 2012-11-08 2015-03-17 Hewlett-Packard Development Company, L.P. Organic photoconductor coating
US9542906B2 (en) 2013-05-10 2017-01-10 Microsoft Technology Licensing, Llc Shared compositional resources
US20140344729A1 (en) 2013-05-15 2014-11-20 Microsoft Corporation Primitive-based composition
USPP26609P3 (en) 2014-05-13 2016-04-12 Luen Miller Salvia plant named ‘KILLER CRANBERRY’

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050088436A1 (en) * 2003-10-23 2005-04-28 Microsoft Corporation System and method for a unified composition engine in a graphics processing system
KR20060126435A (ko) * 2003-10-23 2006-12-07 마이크로소프트 코포레이션 그래픽 프로세싱 시스템내의 통합 컴포지션 엔진을 위한시스템 및 방법
US20090293013A1 (en) * 2008-05-20 2009-11-26 Palm, Inc. System and method for providing content on an electronic device
WO2011060442A2 (en) * 2009-11-16 2011-05-19 Citrix Systems, Inc. Methods and systems for selective implementation of progressive display techniques

Also Published As

Publication number Publication date
KR101855552B1 (ko) 2018-06-08
CN103562862B (zh) 2017-04-26
EP2715529A4 (en) 2015-01-28
EP2715529A1 (en) 2014-04-09
CN103562862A (zh) 2014-02-05
US20120306912A1 (en) 2012-12-06
US9846954B2 (en) 2017-12-19
US9361715B2 (en) 2016-06-07
EP2715529B1 (en) 2020-02-19
JP6033854B2 (ja) 2016-11-30
WO2012166189A1 (en) 2012-12-06
US20140347377A1 (en) 2014-11-27
JP2014519654A (ja) 2014-08-14

Similar Documents

Publication Publication Date Title
KR101855552B1 (ko) 글로벌 컴포지션 시스템
US9563971B2 (en) Composition system thread
WO2019174469A1 (zh) 消息提醒方法、装置、设备及存储介质
EP2997547B1 (en) Primitive-based composition
US9002964B2 (en) Criterion-dependent email display agent
WO2018126957A1 (zh) 显示虚拟现实画面的方法和虚拟现实设备
US20140173435A1 (en) De-Coupling User Interface Software Object Input from Output
CN111124668B (zh) 内存释放方法、装置、存储介质及终端
US9558014B2 (en) System, method and apparatus for transparently enabling software applications with adaptive user interfaces
CN113268212A (zh) 投屏方法、装置、存储介质及电子设备
US9542906B2 (en) Shared compositional resources
KR102225476B1 (ko) 임베디드 웹 콘텐츠 실행의 애플리케이션 제어
CN110162350B (zh) 通知栏信息的显示方法、装置、服务器及存储介质
Chen et al. An old friend is better than two new ones: Dual-screen android
US11386872B2 (en) Experiencing a virtual object at a plurality of sizes
US11112928B2 (en) Avoiding bad input during user interface layout changes using snapshots
US20130254704A1 (en) Multiple Simultaneous Displays on the Same Screen
CN113838167A (zh) 用于生成动画的方法和装置

Legal Events

Date Code Title Description
N231 Notification of change of applicant