KR20160124868A - 호스트 애플리케이션으로부터 호스트 확장자로의 테마 정보의 전파 - Google Patents

호스트 애플리케이션으로부터 호스트 확장자로의 테마 정보의 전파 Download PDF

Info

Publication number
KR20160124868A
KR20160124868A KR1020167025996A KR20167025996A KR20160124868A KR 20160124868 A KR20160124868 A KR 20160124868A KR 1020167025996 A KR1020167025996 A KR 1020167025996A KR 20167025996 A KR20167025996 A KR 20167025996A KR 20160124868 A KR20160124868 A KR 20160124868A
Authority
KR
South Korea
Prior art keywords
theme
host
extension
application
definition
Prior art date
Application number
KR1020167025996A
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
Application filed by 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 filed Critical 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20160124868A publication Critical patent/KR20160124868A/ko

Links

Images

Classifications

    • 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
    • G06F9/4443
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • H04L67/025Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

호스트 애플리케이션 및 호스트 확장자가 시각적으로 일치하도록 테마 정의를 호스트 애플리케이션으로부터 호스트 확장자로 전파하기 위한 메커니즘이 본원에서 설명된다. 테마 정의는, 테마 변경 이벤트가 발생한 이후 유저가 호스트 애플리케이션과 상호작용하는 결과로서 발생한다. 이 때, 테마 정의는, 시각적 일관성을 가능하게 하도록 호스트 확장자에 의해 제시되는 하나 이상의 UI 엘리먼트를 업데이트하기 위해, 호스트 확장자에 의해 활용될 수도 있다.

Description

호스트 애플리케이션으로부터 호스트 확장자로의 테마 정보의 전파{PROPAGATING THEMING INFORMATION FROM HOST APPLICATIONS TO HOST EXTENSIONS}
다양한 타입의 소프트웨어 애플리케이션은 테마의 사용을 허용하기 위한 기능성을 제공한다. 예를 들면, 프리젠테이션 애플리케이션은 유저가 테마를 선택하는 것을 허용할 수도 있다. 테마의 선택에 응답하여, 프리젠테이션 애플리케이션은 선택된 테마에 기초하여 유저 인터페이스(user interface; "UI") 엘리먼트를 수정할 수도 있다. UI 엘리먼트는, 예를 들면, 배경(background), 전경(foreground), 폰트, 및 다른 타입의 UI 엘리먼트를 포함할 수도 있다. 수정된 UI 엘리먼트는 프리젠테이션 애플리케이션에 의해 디스플레이되는 UI 엘리먼트 및/또는 프리젠테이션 애플리케이션에 의한 편집을 위해 열린 다큐먼트(document) 내의 엘리먼트를 포함할 수도 있을 것이다. 프리젠테이션 애플리케이션은 또한, 커스텀 테마의 작성을 비롯하여, 유저가 테마를 상이한 방식으로 변경하는 것을 허용할 수도 있을 것이다.
몇몇 애플리케이션(본원에서 "호스트 애플리케이션"으로 칭해짐)은, 애플리케이션의 몇몇 기능성을 어떤 방식으로 확장하는 확장 프로그램(extension)(본원에서 "호스트 확장자(host extension)")의 활용을 또한 허용할 수도 있을 것이다. 예를 들면, 워드 프로세싱 애플리케이션은, 유저가 선택된 워드의 정의를 찾는 것을 허용하기 위해 사전 확장 프로그램을 활용할 수도 있을 것이다. 호스트 확장자는 또한 그들 고유의 UI 엘리먼트를 제공할 수도 있고/있거나 호스트 애플리케이션에서 편집을 위해 열린 다큐먼트에 포함되는 엘리먼트를 수정할 수도 있다. 추가적으로, 호스트 확장자는 다큐먼트의 컨텐츠의 일부일 수도 있을 것이다. 그러나, 호스트 애플리케이션 내에서 만들어진 테마에 대한 변경은 호스트 확장자로 전파하지 않으며, 결과적으로, 다큐먼트에 대해 이루어진 변경 및/또는 호스트 확장자에 의해 제시되는 UI는 호스트 애플리케이션에 의해 제시되는 UI와 시각적으로 불일치할 수도 있다.
본원에서 이루어지는 개시는 이들 및 다른 고려사항과 관련하여 제시된다.
테마 정보를 호스트 애플리케이션으로부터 호스트 확장자로 전파하기 위한 개념 및 기술이 설명된다. 이 기능성을 가능하게 하기 위해, 테마 변경 이벤트가 발생한 이후, 테마 정의가 업데이트될 수도 있다. 테마 정의는 디폴트 테마를 포함할 수도 있다. 디폴트 테마가 업데이트될 때, 테마 정의도 또한 업데이트될 수도 있다. 테마 변경 이벤트의 예는, 유저가 다큐먼트의 테마를 변경하는 것일 수도 있다. 추가적으로, 테마 정의는 호스트 확장자에 의해 제시되는 하나 이상의 UI 엘리먼트를 업데이트하기 위해 호스트 확장자에 의해 활용될 수도 있다. 이 방식에서, 호스트 확장자에 의해 제시되는 UI 및 다른 엘리먼트는, 호스트 애플리케이션에 의해 제시되는 UI 및 다른 엘리먼트와 시각적으로 일치할 수도 있다.
본원에서 제시되는 하나의 양태에 따르면, 테마 변경 이벤트를 호스트 애플리케이션으로부터 호스트 확장자로 전파하기 위한 컴퓨터 구현 방법이 제공된다. 하나의 구현예에서, 방법은 호스트 애플리케이션으로부터 호스트 확장자로 테마 정의를 제공하는 것을 포함한다. 호스트 확장자는, 호스트 확장자에 의해 제시되는 하나 이상의 UI 엘리먼트를 업데이트하기 위해 테마 정의를 활용할 수도 있다. 방법은 또한 호스트 애플리케이션을 통해 테마 변경 이벤트를 검출하는 것을 포함할 수도 있다. 테마 변경 이벤트를 검출하는 것에 응답하여, 방법은 업데이트된 테마 정의를 생성하기 위해 테마 변경 이벤트에 기초하여 테마를 업데이트한다. 추가적으로, 테마 변경 이벤트를 검출하는 것에 응답하여, 방법은 테마 변경 이벤트의 통지를 호스트 애플리케이션으로부터 호스트 확장자로 제공한다. 호스트 확장자는, 호스트 확장자에 의해 제시되는 하나 이상의 UI 엘리먼트를 업데이트하기 위해 업데이트된 테마 정의를 활용할 수도 있다.
다른 양태에 따르면, 컴퓨터 판독가능 저장 매체는, 컴퓨터에 의한 실행시, 컴퓨터로 하여금 테마 정의를 호스트 애플리케이션으로부터 호스트 확장자로 제공하게 하는 컴퓨터 실행가능 명령어를 구비한다. 호스트 확장자는, 호스트 확장자에 의해 제시되는 하나 이상의 UI 엘리먼트를 업데이트하기 위해 테마 정의를 활용한다. 테마 변경 이벤트 검출 이후, 호스트 애플리케이션은 업데이트된 테마 정의를 생성하기 위해 테마 변경 이벤트에 기초하여 테마 정의를 업데이트한다. 추가적으로, 호스트 애플리케이션은 테마 변경 이벤트 검출에 응답하여 테마 변경 이벤트의 통지를 호스트 확장기능으로 제공한다. 호스트 확장자는, 호스트 확장자에 의해 제시되는 하나 이상의 UI 엘리먼트를 업데이트하기 위해 업데이트된 테마 정의를 활용할 수도 있다.
또 다른 양태에 따르면, 테마 변경 이벤트를 호스트 애플리케이션으로부터 호스트 확장자로 전파하기 위한 장치가 제공된다. 장치는 프로세서 및 프로세서에 커플링되며 호스트 애플리케이션을 저장하는 메모리를 포함한다. 호스트 애플리케이션은 메모리로부터 프로세서에서 실행된다. 장치는, 애플리케이션 레벨 테마 및 다큐먼트 레벨 테마를 포함하는 테마 정의를 호스트 확장자로 제공한다. 애플리케이션 레벨 테마는 호스트 애플리케이션에 의해 제공되는 UI 엘리먼트에 대한 테마를 정의한다. 다큐먼트 레벨 테마는 호스트 애플리케이션으로부터의 다큐먼트에 의해 제공되는 UI 엘리먼트에 대한 테마를 정의한다. 호스트 확장자는, 호스트 확장자에 의해 제시되는 하나 이상의 UI 엘리먼트를 업데이트하기 위해 테마 정의를 활용한다.
장치는 테마 변경 이벤트를 또한 검출할 수 있다. 테마 변경 이벤트를 검출하는 것에 응답하여, 장치는 업데이트된 테마 정의를 생성하기 위해 테마 변경 이벤트에 기초하여 테마를 업데이트한다. 장치는 또한, 테마 변경 이벤트의 통지를 호스트 확장자로부터 호스트 애플리케이션으로 제공한다. 호스트 확장자는, 호스트 확장자에 의해 제시되는 하나 이상의 UI 엘리먼트를 호스트 애플리케이션 및 다큐먼트와 일치하게 보이게 만들도록 호스트 확장자에 의해 제시되는 하나 이상의 UI 엘리먼트를 업데이트하기 위해, 업데이트된 테마 정의를 활용한다.
상기에서 설명되는 주제는 컴퓨터 제어식 장치, 컴퓨터 프로세스, 컴퓨팅 시스템으로서, 또는 하나 이상의 컴퓨터 판독가능 매체와 같은 제조 물품으로서 구현될 수도 있다는 것이 인식되어야 한다. 이들 및 다양한 다른 피쳐는 하기의 상세한 설명의 판독 및 관련 도면의 고찰로부터 명백할 것이다.
이 개요는 하기의 상세한 설명에서 더 설명되는 엄선된 개념을 간소화된 형태로 소개하기 위해 제공된다. 이 개요는 청구된 주제의 주요 특징이나 또는 본질적인 특징을 식별하도록 의도된 것이 아니며, 청구된 주제의 범위를 제한하기 위해 사용되도록 의도된 것도 아니다. 또한, 청구된 주제는 본 개시의 임의의 부분에서 언급되는 임의의 또는 모든 단점을 해결하는 구현예로 한정되지는 않는다.
도 1은 본원에서 제시되는 실시형태의 양태의 개관(overview)을 제공하는 블록도이다;
도 2는, 몇몇 실시형태에 따른, 호스트 확장자의 활용을 위한 방법의 양태를 도시하는 블록도이다;
도 3은 테마 변경 이벤트를 프로세싱하기 위한 본원에서 제시되는 실시형태의 양태의 개관을 제공하는 블록도이다;
도 4는, 몇몇 실시형태에 따른, 테마 변경 이벤트의 발생에 응답하여 테마 정의를 업데이트하기 위한 방법의 양태를 도시하는 흐름도이다;
도 5는, 몇몇 실시형태에 따른, 업데이트된 테마 정의를 반영하도록 호스트 확장자 UI를 업데이트하기 위한 방법의 양태를 도시하는 흐름도이다;
도 6은, 본원에서 제시되는 실시형태의 양태를 구현할 수 있는 컴퓨팅 시스템에 대한 예시적인 컴퓨터 하드웨어 및 소프트웨어 아키텍쳐를 도시하는 컴퓨터 아키텍쳐 도면이다;
도 7은 본원에서 제시되는 실시형태의 양태가 구현될 수 있는 분산형 컴퓨팅 환경을 예시하는 도면이다; 그리고
도 8은, 본원에서 제시되는 실시형태의 양태를 구현할 수 있는 컴퓨팅 디바이스 아키텍쳐를 예시하는 컴퓨터 아키텍쳐 도면이다.
하기의 상세한 설명은, 테마 정보를 호스트 애플리케이션으로부터 하나 이상의 호스트 확장자로 전파하기 위한 개념 및 기술을 대상으로 한다. 앞서 간략히 언급된 바와 같이, 호스트 애플리케이션은 테마 정의에 의해 정의되는 방식으로 UI 엘리먼트를 제시할 수도 있다. 테마 정의는 또한, 다큐먼트가 호스트 애플리케이션에 실행되는 것에 의해 제시되는 UI 엘리먼트를 정의할 수도 있다. 마찬가지로, 호스트 애플리케이션과의 사용을 위해 구성되는 하나 이상의 호스트 확장자도 또한 다양한 UI 엘리먼트를 제시할 수도 있을 것이다. 호스트 애플리케이션은 테마 정의를 호스트 확장자로 전파하도록 구성된다. 이것은, 호스트 확장자 및 호스트 애플리케이션이 유사한 스타일의 UI 엘리먼트를 제공하도록, 호스트 확장자가 그들의 UI 엘리먼트를 업데이트하는 것을 허용한다. 추가적으로, 호스트 확장자는, 호스트 애플리케이션에 의해 제시되고 있는 또는 호스트 애플리케이션에서 편집되고 있는 다큐먼트와 유사한 스타일의 UI 엘리먼트를 호스트 확장자가 제공하도록, 자신의 UI 엘리먼트를 업데이트할 수도 있다. 추가적인 상세는 도 1 내지 도 8과 관련하여 하기에서 제공될 것이다.
본원에서 설명되는 주제가, 컴퓨터 시스템 상에서 오퍼레이팅 시스템 및 애플리케이션 프로그램의 실행과 연계하여 실행되는 프로그램 모듈의 일반적인 맥락에서 제시되지만, 기술분야의 숙련된 자는, 다른 타입의 프로그램 모듈과 조합하여 다른 구현예가 수행될 수도 있다는 것을 인식할 것이다. 일반적으로, 프로그램 모듈은 루틴, 프로그램, 컴포넌트, 데이터 구조, 및 특정 작업을 수행하거나 특정한 추상 데이터 타입을 구현하는 다른 타입의 구조를 포함한다. 또한, 기술분야의 숙련된 자는, 본원에서 설명되는 주제가, 핸드헬드 디바이스, 멀티프로세서 시스템, 마이크로프로세서 기반의 또는 프로그램가능한 소비자 가전기기, 미니컴퓨터, 메인프레임 컴퓨터, 및 등등을 비롯한, 다른 컴퓨터 시스템 구성과 함께 실시될 수도 있다는 것을 인식할 것이다.
하기의 상세한 설명에서는, 본원의 일부를 형성하는 첨부의 도면을 참조하는데, 도면에서는 특정 실시형태 또는 예가 예시를 통해 도시된다. 이제, 동일한 도면 부호가 여러 도면에 걸쳐 동일한 엘리먼트를 나타내는 도면을 참조하여, 테마 변경 이벤트를 호스트 애플리케이션으로부터 호스트 확장자로 전파하기 위한 컴퓨터 구현 방법, 컴퓨터 판독가능 저장 매체, 및 시스템이 제시될 것이다.
도 1은 본원에서 제시되는 다양한 컴포넌트의 동작의 개관을 제공하는 블록도이다. 다양한 실시형태에 따르면, 시스템은 호스트 애플리케이션(102)을 포함하는데, 하나 이상의 다큐먼트(108)는 호스트 애플리케이션(102)에 의해 제시된다. 예를 들면, 그리고 제한 없이, 호스트 애플리케이션(102)은 워드 프로세싱 애플리케이션일 수도 있을 것이고 다큐먼트(108)는 워드 프로세싱 다큐먼트일 수도 있을 것이다. 마찬가지로, 호스트 애플리케이션(102)은 프리젠테이션 애플리케이션일 수도 있을 것이고 다큐먼트(108)는 프리젠테이션일 수도 있을 것이다. 호스트 애플리케이션(102)은 또한, 다큐먼트(108)를 보기 위한 및/또는 편집하기 위한 기능성을 제공하는 그리고 본원에서 개시되는 기능성을 포함하는 웹 기반 애플리케이션일 수도 있을 것이다. 호스트 애플리케이션은 또한, 스프레드시트 애플리케이션, 이메일 애플리케이션, 웹 기반 다큐먼트 관리 및 협력 애플리케이션, 또는 테마를 활용하며 확장 프로그램의 사용을 허용하는 다른 타입의 애플리케이션일 수도 있다. 이와 관련하여, 본원에서 개시되는 실시형태는 특정한 타입의 호스트 애플리케이션(102) 또는 다큐먼트(108)와의 사용으로 제한되지 않는다는 것이 인식되어야 한다.
하나의 실시형태에서, 테마 정의(104)는 호스트 애플리케이션(102) 및 다큐먼트(108) 둘 다에 의한 사용을 위한 테마 정보를 정의한다. 테마 정의(104)는, 호스트 애플리케이션(102)의 UI를 제시함에 있어서 호스트 애플리케이션(102)에 의한 사용을 위한 비주얼 스타일을 정의하고, 또한 다큐먼트(108)의 엘리먼트를 제시하기 위한 비주얼 스타일을 정의할 수도 있다. 이와 관련하여, 테마 정의(104)는, 컬러, 폰트명, 폰트 스타일, 및 다른 시각적 엘리먼트를 정의할 수도 있을 것이다. 제한이 아닌 예로서, 정의된 컬러는 배경 컬러, 전경 컬러 및 폰트 컬러를 포함할 수도 있다. 이들 시각적 엘리먼트의 조합은 본원에서 "테마"로 칭해진다.
몇몇 실시형태에서, 테마 정의(104)는 애플리케이션 레벨 테마(114) 및 다큐먼트 레벨 테마(110) 둘 다를 정의한다. 애플리케이션 레벨 테마(114)는 호스트 애플리케이션(102)에 의해 제시되는 UI 엘리먼트에 대한 테마를 정의한다. 예를 들면, 애플리케이션 레벨 테마(114)는, 호스트 애플리케이션(102)의 동작을 제어하기 위한 UI 엘리먼트를 포함하는 UI(116)가 어떻게 제시되어야 하는지 또는 애플리케이션 자체의 프레임 스타일을 정의할 수도 있을 것이다. 다큐먼트 레벨 테마(110)는 다큐먼트(108)의 컨텐츠를 제시함에 있어서의 사용을 위한 테마를 정의한다.
호스트 애플리케이션(102)과의 사용을 위해 구성되거나 또는 설치되는 하나 이상의 호스트 확장자(106)이 또한 제공될 수도 있을 것이다. 호스트 확장자(106)은 호스트 애플리케이션(102)에 의해 제공되는 기능성을 확장하기 위해 활용될 수도 있다. 이 기능성을 제공하기 위해, 호스트 확장자(106)은 호스트 확장자 UI(112)를 제시하도록 구성될 수도 있다. 호스트 확장자 UI(112)는 호스트 확장자(106)의 동작을 제어하기 위한 UI 엘리먼트를 포함할 수도 있다.
호스트 확장자(106)이 실행을 시작하면, 호스트 확장자(106)은 호스트 애플리케이션(102)에 의해 현재 노출되는 테마 정의(104)를 획득할 수도 있다. 호스트 확장자(106)은, 애플리케이션 레벨 테마(114) 및 다큐먼트 레벨 테마(110)와 일치하는 호스트 확장자 UI(112)를 제시하기 위해 테마 정의(104)를 활용할 수도 있다. 예를 들면, 그리고 제한 없이, 호스트 확장자(106)은, 호스트 애플리케이션(102) 것에 대해 일치하는 백그라운드 컬러 및 폰트 타입을 나타내기 위해, 다큐먼트 레벨 테마(110)를 활용할 수도 있을 것이다. 호스트 확장자(106)은 또한, 다큐먼트(108)에서 UI 엘리먼트를 제시하기 위해 다큐먼트 레벨 테마(110)을 활용할 수도 있을 것이다. 추가적인 상세는 도 2 내지 도 8과 관련하여 하기에서 제공될 것이다.
이제 도 2를 참조하면, 예시적인 실시형태에 따른, 호스트 확장자(106)을 초기화하기 위한 본원에서 개시되는 하나의 메커니즘의 양태를 예시하는 예시적인 루틴(200)이 설명될 것이다. 도 2, 및 다른 도면과 관련하여 하기에서 설명되는 동작은 반드시 임의의 특정한 순서로 제시되지는 않는다는 것 및 동작 중 몇몇 또는 전체의 대안적인 순서에서의 수행이 가능하며 고려된다는 것이 이해되어야 한다. 동작은 설명 및 예시의 용이성을 위해 설명된 순서로 제시되었다. 동작은, 첨부의 특허청구범위의 범위를 벗어나지 않으면서, 추가될 수도 있고, 생략될 수도 있고, 및/또는 동시에 또는 설명된 것과는 상이한 순서로 수행될 수도 있다.
예시화된 루틴(200)은 임의의 시간에 종료될 수 있고 그 전체가 수행될 필요는 없다는 것이 또한 이해되어야 한다. 루틴(200)의 몇몇 또는 전체 동작, 및/또는 실질적으로 등가의 동작은, 본원에서 정의되는 바와 같이, 컴퓨터 저장 매체 상에 포함되는 컴퓨터 판독가능 명령어의 실행에 의해 수행될 수 있다. 특허청구범위의 목적을 위해, 어구(phrase) "컴퓨터 판독가능 저장 매체" 및 그 변형 어구는, 파(wave), 신호, 및/또는 다른 일시적 및/또는 비유형의(intangible) 통신 매체 그 자체를 포함하지 않는다. 용어 "컴퓨터 판독가능 명령어", 및 그 변형 용어는, 상세한 설명 및 특허청구범위에서 사용될 때, 루틴, 애플리케이션, 애플리케이션 모듈, 프로그램 모듈, 프로그램, 컴포넌트, 데이터 구조, 알고리즘, 및 등등을 포함하도록, 본원에서 확장적으로 사용된다. 컴퓨터 판독가능 명령어는, 싱글 프로세서 또는 다중프로세서 시스템, 미니컴퓨터, 메인프레임 컴퓨터, 퍼스널 컴퓨터, 핸드헬드 컴퓨팅 디바이스, 마이크로프로세서 기반, 프로그래머블 소비자 가전기기, 이들의 조합, 및 등등을 비롯한 다양한 시스템 구성 상에서 구현될 수 있다.
따라서, 본원에서 설명되는 논리적 동작은 (1) 컴퓨팅 시스템 상에서 실행하는 프로그램 모듈 또는 컴퓨터 구현 액트의 시퀀스로서 및/또는 (2) 컴퓨팅 시스템 내의 상호접속된 머신 로직 회로 또는 회로 모듈로서 구현된다는 것이 인식되어야 한다. 구현은 컴퓨팅 시스템의 성능 및 다른 요건에 의존하는 선택의 문제이다. 따라서, 본원에서 설명되는 논리적 동작은 상태, 동작, 구조적 디바이스, 액트 또는 모듈로서 다양하게 칭해진다. 이들 동작, 구조적 디바이스, 액트 및 모듈은, 소프트웨어로, 펌웨어로, 특수 목적의 디지털 로직으로, 그리고 이들의 임의의 조합으로 구현될 수도 있다.
루틴(200)은 동작 202에서 시작하는데, 여기서는, 호스트 확장자(106)이 실행을 시작한다. 선결조건 단계로서, 호스트 애플리케이션(102)이 활성이고, 호스트 확장자(106)이 이미 다큐먼트(108)에 존재하거나 또는 삽입되었다는 것이 가정된다. 동작 202로부터, 루틴(200)은 동작 204로 진행하는데, 여기서는, 호스트 애플리케이션(102)이 호스트 확장자(106)의 초기화를 시작한다. 동작 204로부터, 루틴(200)은 동작 206으로 진행하는데, 여기서는, 호스트 확장자(106)이 테마 정의(104)에 포함된 테마 정보를 호스트 애플리케이션(102)으로부터 수신한다. 앞서 언급된 바와 같이, 테마 정의(104)는 애플리케이션 레벨 테마(114) 및 다큐먼트 레벨 테마(110) 둘 다를 포함할 수도 있다.
테마 정의(104)는 몇몇 실시형태에서 메타데이터, 예컨대 종속형 스타일 시트(Cascading Style Sheet; "CSS")를 사용하여 정의된다. 호스트 애플리케이션(102)은 초기화 동안 CSS를 호스트 확장자(106)으로 제공할 수도 있다. 초기화 동안 테마 정의(104)를 호스트 확장자(106)으로 제공하기 위해, 다른 타입의 메타데이터, 예컨대 확장형 마크업 랭기지(Extensible Markup Language; "XML")가 또한 활용될 수도 있다. 메타데이터는 애플리케이션 레벨 테마(114) 및 다큐먼트 레벨 테마(110)에 대한 변경을 반영하도록 업데이트될 수도 있다.
대안적으로, 호스트 애플리케이션(102)은 애플리케이션 프로그래밍 인터페이스(application programming interface; "API")를 통해 테마 정의(104)를 호스트 확장자(106)으로 제공할 수도 있을 것이다. 예를 들면, 그리고 제한 없이, 호스트 애플리케이션(102)은, 소정의 타입의 이벤트, 예컨대 테마 정의(104)에 대한 변경으로 귀결되는 이벤트의 통지를 수신하기 위해 호스트 확장자(106)이 구독할 수 있는 API를 노출시킬 수도 있을 것이다. 이 방식에서, 호스트 확장자(106)은 초기화시에 테마 정의(104)를 수신할 수도 있고 또한 테마 정의(104)가 변경될 때마다 통지를 수신할 수도 있다. 테마 정의(104)를 호스트 확장자(106)으로 제공하기 위해 다른 메커니즘이 또한 활용될 수도 있다.
동작 206으로부터, 루틴(200)은 동작 208로 진행한다. 동작 208에서, 호스트 확장자(106)은 테마 정의(104)를 반영하기 위해 호스트 확장자 UI(112)를 업데이트한다. 예를 들면, 그리고 제한 없이, 호스트 확장자(106)은 호스트 확장자(106)의 동작을 제어하기 위한 UI 엘리먼트 자체를 업데이트할 수도 있을 것이다. 호스트 확장자(106)은 또한, 테마 정의(104)에 기초하여 다큐먼트(108)에 포함된 UI 엘리먼트의 표시를 업데이트할 수도 있을 것이다.
예로서, 그리고 제한 없이, 호스트 확장자(106)은 다큐먼트(108)의 표(table)를 디스플레이하도록 구성될 수도 있다. 표는 최초에는 다큐먼트(108)의 나머지와는 상이한 폰트, 폰트 컬러 및 폰트 사이즈를 가질 수도 있다. 호스트 확장자(106)이 테마 정의(104)를 수신하면, 호스트 확장자 UI(112)는, 폰트, 폰트 컬러, 폰트 사이즈 및 표에서의 다른 스타일적 엘리먼트를 업데이트하기 위해, 테마 정의(104)에 포함된 다큐먼트 레벨 테마(110)를 활용할 수 있다. 다큐먼트 레벨 테마(110)을 이러한 방식으로 활용하는 것에 의해, 호스트 확장자(106)에 의해 제시되는 다큐먼트는 다큐먼트(108)의 나머지와 일치하게 보일 것이다. 마찬가지의 방식으로, 호스트 확장자(106)은, 호스트 애플리케이션(102)에 의해 제시되는 UI 엘리먼트와 시각적으로 일치하는 UI 엘리먼트를 제시하기 위해 애플리케이션 레벨 테마(114)를 활용할 수도 있다. 추가적으로, 호스트 확장자(106)은 상이한 호스트 애플리케이션(102) 사이에서 공유될 수도 있다. 예를 들면, 그리고 제한 없이, 호스트 확장자(106)은, 워드 프로세싱 애플리케이션에 의해 작성되는 다큐먼트에 삽입되는 그리고 프리젠테이션 애플리케이션에 의해 작성되는 프리젠테이션 내에서 또한 활용될 수도 있는 차트 또는 다른 타입의 그래픽을 제공할 수도 있다. 동작 208으로부터, 루틴(200)은 동작 210로 진행하는데, 여기에서 루틴(200)은 종료한다.
이제 도 3을 참조하면, 테마 변경 이벤트(302)가 발생하는 때를 호스트 확장자(106)에게 통지하기 위한 본원에서 개시되는 하나의 메커니즘에 관한 추가적인 상세가 제공될 것이다. 도 3에서 도시되는 바와 같이, 테마 변경 이벤트(302)가 발생할 수도 있다. 테마 변경 이벤트(302)는, 애플리케이션 레벨 테마(114), 다큐먼트 레벨 테마(110) 또는 애플리케이션 레벨 테마(114)과 다큐먼트 레벨 테마(110) 둘 다에 대한 변경을 포함할 수도 있다. 테마 변경 이벤트(302)는, 호스트 애플리케이션(102)과의 일반적인 유저 상호작용의 결과로서 발생할 수도 있다. 예를 들면, 그리고 제한 없이, 테마 변경 이벤트(302)는, 유저가 현재의 애플리케이션 레벨 테마(114) 및/또는 다큐먼트 레벨 테마(110)를 변경할 때 발생할 수도 있다. 추가적으로, 테마 변경 이벤트(302)는, 유저가 새로운 애플리케이션 레벨 테마(114) 및/또는 새로운 다큐먼트 레벨 테마(110)를 선택하는 것에 응답하여 발생할 수도 있다. 애플리케이션 레벨 테마(114) 및 다큐먼트 레벨 테마(110)는, 미리 정의된 테마, 유저가 정의한 테마 또는 써드파티가 작성한 테마일 수도 있다.
테마 변경 이벤트(302)는 또한, 각각의 페이지 상에서 상이한 테마를 활용하는 프리젠테이션 또는 슬라이드 쇼에서 슬라이드를 변경하는 것에 응답하여, 또는 이전 테마 변경을 되돌리기(undo) 위해 되돌리기 커맨드를 사용하는 것에 응답하여 발생할 수도 있다. 다른 이벤트가 또한 현재의 애플리케이션 레벨 테마(114) 또는 다큐먼트 레벨 테마(110)를 변경할 수도 있을 것이며, 따라서, 테마 변경 이벤트(302)가 발생하게 할 수도 있을 것이다. 테마 변경 이벤트(302)는 또한, 유저가 호스트 애플리케이션(102) 내에서 상이한 컴포넌트 또는 피쳐 사이에서 전환할 때 발생할 수도 있을 것이다. 예를 들면, MICROSOFT CORPORATION으로부터의 OUTLOOK(아웃룩) 개인 정보 매니저와 같은 개인 정보 매니저 애플리케이션에서의 캘린더 및 이메일 메시지는 상이한 테마를 가질 수도 있다. 이러한 호스트 애플리케이션(102) 내에서 이메일 컴포넌트로부터 캘린더 컴포넌트로 전환하는 것은 테마 변경 이벤트(302)를 생성할 수도 있다.
테마 정의(104)는 테마 변경 이벤트(302)에 응답하여 업데이트된다. 추가적으로, 호스트 애플리케이션(102)은 테마 변경 이벤트(302)의 통지(306)를 호스트 확장자(106)으로 제공한다. 테마 변경 이벤트(302)의 통지(306)를 수신하는 것에 응답하여, 호스트 확장자(106)은 업데이트된 테마 정의(304)를 획득할 수도 있다. 그 다음, 호스트 확장자(106)은, 업데이트된 테마 정의(304)를 반영하도록 호스트 확장자 UI(112)을 업데이트하기 위해 업데이트된 테마 정의(304)를 활용할 수도 있다. 이 변경을 행하는 것에 의해, 호스트 확장자 UI(112)는 호스트 애플리케이션(102)에 의해 제공되는 UI 및 다큐먼트(108)의 컨텐츠와 계속 일치하게 보일 것이다.
이제 도 4를 참조하면, 테마 변경 이벤트(302)에 응답하여 테마 정의(104)를 업데이트하기 위한 루틴(400)의 양태가 설명될 것이다. 루틴(400)은 동작 402에서 시작하는데, 여기서는, 테마 변경 이벤트(302)가 발생했는지를 호스트 애플리케이션(102)이 결정한다. 테마 변경 이벤트(302)가 발생하지 않았다면, 루틴(400)은, 다른 이러한 결정이 이루어질 수도 있는 동작 402로 다시 진행한다.
테마 변경 이벤트(302)가 동작 402에서 발생했다면, 루틴(400)은 동작 404로 진행하는데, 여기서는, 호스트 애플리케이션(102)이 테마 변경 이벤트(302)를 반영하기 위해 테마 정의(104)를 업데이트한다. 테마 변경 이벤트(302)가 애플리케이션 레벨 테마(114), 다큐먼트 레벨 테마(110) 또는 애플리케이션 레벨 테마(114)과 다큐먼트 레벨 테마(110) 둘 다에 영향을 끼치면, 테마 정의(104)는 업데이트된다.
동작 404로부터, 루틴(400)은 동작 406으로 진행하는데, 여기서는, 호스트 애플리케이션(102)이 테마 변경 이벤트(302)의 통지(306)를 호스트 확장자(106)으로 제공한다. 앞서 언급된 바와 같이, 테마 정의(104)는 CSS 파일을 통해 또는 API의 사용을 통해 호스트 확장자(106)으로 전송될 수도 있다. 마찬가지로, 업데이트된 테마 정의(304)는 또한 CSS 파일의 컨텐츠를 업데이트하는 것에 의해 또는 적적한 API의 사용을 통해 호스트 확장자(106)으로 전송될 수도 있을 것이다. 업데이트된 테마 정의(304)를 호스트 확장자(106)으로 제공하기 위해, 다른 메커니즘이 또한 활용될 수도 있을 것이다. 동작 406으로부터, 루틴(400)은, 테마 변경 이벤트(302)가 발생했는지의 여부에 관한 다른 결정이 이루어질 수도 있는 동작 402로 다시 진행한다.
이제 도 5를 참조하면, 업데이트된 테마 정의(304)를 반영하기 위해 호스트 확장자 UI(112)를 업데이트하기 위한 루틴(500)의 양태가 제공될 것이다. 루틴(500)은 동작 502에서 시작하는데, 여기서는, 테마 변경 이벤트(302)의 통지(306)가 수신되었는지를 호스트 확장자(106)이 결정한다. 테마 변경 이벤트(302)의 통지(306)가 수신되지 않았다면, 루틴(500)은, 다른 이러한 결정이 이루어질 수도 있는 동작 502로 다시 진행한다. 동작 502에서 테마 변경 이벤트(302)의 통지(306)가 수신되었다면, 루틴(500)은 동작 504로 진행한다.
동작 504에서, 호스트 확장자(106)은 업데이트된 테마 정의(304)를 획득한다. 그 다음, 루틴(500)은 동작 504로부터 동작 506으로 진행하는데, 여기서는, 애플리케이션 레벨 테마(114)가 변경되었는지를 호스트 확장자(106)이 결정한다. 애플리케이션 레벨 테마(114)가 변경되었다면, 루틴(500)은 동작 508로 진행한다.
동작 508에서, 호스트 확장자(106)은 업데이트된 애플리케이션 레벨 테마(114)를 반영하기 위해 호스트 확장자 UI(112)를 업데이트한다. 예를 들면, 호스트 확장자(106)은, 호스트 확장자(106)의 동작을 제어하기 위한 UI 엘리먼트의 디스플레이를 수정하기 위해, 업데이트된 애플리케이션 레벨 테마(114)를 활용할 수도 있을 것이다. 이 변경을 행하는 것에 의해, 호스트 확장자(106)에 의해 제시되는 UI는, 호스트 애플리케이션(102)에 의해 제시되는 UI와 계속 일치하게 보일 것이다. 동작 508로부터, 루틴(500)은 하기에서 설명되는 동작 510으로 진행한다.
동작 506에서 애플리케이션 레벨 테마(114)가 변경되지 않았다면, 루틴(500)은 동작 510으로 진행한다. 동작 510에서, 호스트 확장자(106)은, 다큐먼트 레벨 테마(110)가 변경되었는지를 결정한다. 다큐먼트 레벨 테마(110)가 변경되지 않았다면, 루틴(500)은, 테마 변경 이벤트(302)의 통지(306)가 수신되었는지의 여부에 관한 다른 결정이 이루어질 수도 있는 동작 502로 다시 진행한다. 동작 510에서 다큐먼트 레벨 테마(110)가 변경되지 않았다면, 루틴(500)은 동작 512로 진행한다.
동작 512에서, 호스트 확장자(106)은 업데이트된 다큐먼트 레벨 테마(110)를 반영하기 위해 호스트 확장자 UI(112)를 업데이트한다. 예를 들면, 그리고 제한 없이, 호스트 확장자(106)은 업데이트된 다큐먼트 레벨 테마(110)를 반영하기 위해 다큐먼트(108)와 함께 제시되는 엘리먼트의 디스플레이를 업데이트할 수도 있다. 이 변경을 행하는 것에 의해, 호스트 애플리케이션(102)에 의해 제시되는 다큐먼트 엘리먼트는, 호스트 확장자(106)에 의해 제시되는 다큐먼트 엘리먼트와 일치하게 보일 것이다. 동작 512로부터, 루틴(500)은, 테마 변경 이벤트(302)의 통지(306)가 수신되었는지의 여부에 관한 다른 결정이 이루어질 수도 있는 동작 502로 다시 진행한다.
도 6은, 테마 정보를 호스트 애플리케이션(102)으로부터 하나 이상의 호스트 확장자(106)으로 전파하기 위한 본원에서 설명되는 소프트웨어 컴포넌트를 실행할 수 있는 디바이스에 대한 예시적인 컴퓨터 아키텍쳐(600)를 도시한다. 도 6에서 예시되는 컴퓨터 아키텍쳐(600)는, 서버 컴퓨터, 이동 전화, PDA, 스마트폰, 데스크탑 컴퓨터, 넷북 컴퓨터, 태블릿 컴퓨터, 및/또는 랩탑 컴퓨터에 대한 아키텍쳐를 예시한다. 컴퓨터 아키텍쳐(600)는 본원에서 제시되는 소프트웨어 컴포넌트의 임의의 양태를 실행하기 위해 활용될 수도 있다.
도 6에서 도시되는 컴퓨터 아키텍쳐(600)는, 중앙 프로세싱 유닛(602)(central processing unit; CPU), 랜덤 액세스 메모리(606)(random access memory; RAM) 및 리드 온리 메모리(608)(read-only memory; "ROM")을 비롯한 시스템 메모리(604), 및 메모리(604)를 CPU(602)에 커플링하는 시스템 버스(610)를 포함한다. 예컨대 기동(start-up) 동안 컴퓨터 아키텍쳐(600) 내의 엘리먼트 사이에서의 정보 전송을 보조하는 기본 루틴을 포함하는 기본 입/출력 시스템은 ROM(608)에 저장된다. 컴퓨터 아키텍쳐(600)는, 오퍼레이팅 시스템(614)(operating system; "OS") 및 호스트 애플리케이션(102)을 저장하기 위한 대용량 스토리지 디바이스(612)를 더 포함한다. 대용량 스토리지 디바이스(612)는 호스트 확장자(106) 및 테마 정의(104)를 저장하기 위해 또한 활용될 수도 있다.
대용량 스토리지 디바이스(612)는, 버스(610)에 연결되는 대용량 스토리지 컨트롤러(도시되지 않음)를 통해 CPU(602)에 연결된다. 대용량 스토리지 디바이스(612) 및 그 관련 컴퓨터 판독가능 매체는 컴퓨터 아키텍쳐(600)에 대한 불휘발성 스토리지를 제공한다. 본원에서 포함되는 컴퓨터 판독가능 매체의 설명이, 하드 디스크 또는 CD-ROM 드라이브와 같은 대용량 스토리지 디바이스를 언급하지만, 컴퓨터 판독가능 매체는 컴퓨터 아키텍쳐(600)에 의해 액세스될 수 있는 임의의 이용가능한 컴퓨터 저장 매체 또는 통신 매체일 수 있다는 것이 기술분야의 숙련된 자에 의해 인식되어야 한다.
통신 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파 또는 다른 전송 메커니즘과 같은 변조된 데이터 신호에서의 다른 데이터를 포함하고, 임의의 전달 매체를 포함한다. 용어 "변조된 데이터 신호"는, 자신의 특성 세트 중 하나 이상이 신호에 정보를 인코딩하는 것과 같은 방식으로 설정되거나 또는 변경된 신호를 의미한다. 비제한적인 예로서, 통신 매체는 유선 네트워크 또는 직결 접속과 같은 유선 매체, 및 무선 매체 예컨대 음향, RF, 적외선 및 다른 무선 매체를 포함한다. 상기의 임의의 조합도 컴퓨터 판독가능 매체의 범위 내에 또한 포함되어야 한다.
비제한적인 예로서, 컴퓨터 저장 매체는, 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 다른 데이터와 같은 정보 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 불휘발성의 착탈식 및 비착탈식의 매체를 포함할 수도 있다. 예를 들면, 컴퓨터 매체는, RAM, ROM, EPROM, EEPROM, 플래시 메모리 또는 다른 솔리드 스테이트 메모리 기술, CD-ROM, 디지털 다기능 디스크(digital versatile disk; DVD), HD-DVD, BLU-RAY, 또는 다른 광학 스토리지, 자기 카세트, 자기 테이프, 자기 디스크 스토리지 또는 다른 자기 스토리지 디바이스, 또는 소망의 정보를 저장하기 위해 사용될 수 있고 컴퓨터 아키텍쳐(600)에 의해 액세스될 수도 있 임의의 다른 매체를 포함하지만 그러나 이들로 제한되는 것은 아니다. 특허청구범위의 목적을 위해, 어구(phrase) "컴퓨터 판독가능 저장 매체" 및 그 변형 어구는, 파(wave), 신호, 및/또는 다른 일시적 및/또는 비유형의(intangible) 통신 매체 그 자체를 포함하지 않는다.
다양한 실시형태에 따르면, 컴퓨터 아키텍쳐(600)는, 네트워크(620)와 같은 네트워크를 통한 원격 컴퓨터에 대한 논리적 연결을 사용하여, 네트워크화된 환경에서 동작할 수도 있다. 컴퓨터 아키텍쳐(600)는 버스(610)에 연결되는 네트워크 인터페이스 유닛(618)을 통해 네트워크(620)에 연결될 수도 있다. 네트워크 인터페이스 유닛(618)은 또한, 다른 타입의 네트워크 및 원격 컴퓨터 시스템에 연결하기 위해 활용될 수도 있다는 것이 인식되어야 한다. 컴퓨터 아키텍쳐(600)는 또한, 키보드, 마우스 또는 전자적 스타일러스(도 6에서 도시되지 않음)를 비롯한 다수의 다른 디바이스로부터 입력을 수신하여 프로세싱하기 위한 입/출력 컨트롤러(616)를 포함할 수도 있다. 마찬가지로, 입/출력 컨트롤러(616)는 출력을 디스플레이 스크린, 프린터, 또는 다른 타입의 출력 디바이스(역시 도 6에서 도시되지 않음)에 제공할 수도 있다.
본원에서 설명되는 소프트웨어 컴포넌트는, CPU(602)로 로딩되어 실행될 때, CPU(602) 및 전체적인 컴퓨터 아키텍쳐(600)를, 범용 컴퓨팅 시스템으로부터 본원에서 제시되는 기능성을 용이하게 하도록 커스터마이징되는 특수 목적의 컴퓨팅 시스템으로 변환할 수도 있다는 것이 인식되어야 한다. CPU(602)는 임의의 수의 트랜지스터 또는 다른 별개의 회로 엘리먼트로부터 구축될 수도 있는데, 임의의 수의 트랜지스터 또는 다른 별개의 회로 엘리먼트는 개별적으로 또는 일괄적으로 임의의 수의 상태를 가정한다. 더 구체적으로는, CPU(602)는, 본원에서 개시되는 소프트웨어 모듈 내에 포함되는 실행가능 명령어에 응답하여, 유한 상태 머신(finite-state machine)으로서 동작할 수도 있다. 이들 컴퓨터 실행가능 명령어는, 상태 사이에서 CPU(602)가 어떻게 전이하는지를 명시하여, 그로 인해 CPU(602)를 구성하는 트랜지스터 또는 다른 별개의 하드웨어 엘리먼트를 변환하는 것에 의해, CPU(602)를 변환할 수도 있다.
본원에서 제시되는 소프트웨어 모듈을 인코딩하는 것도 또한, 본원에서 제시되는 컴퓨터 판독가능 매체의 물리적 구조를 변환할 수도 있다. 물리적 구조의 특정 변환은, 본 설명의 상이한 구현예에서, 다양한 요인에 의존할 수도 있다. 이러한 요인의 예는, 컴퓨터 판독가능 매체를 구현하기 위해 사용되는 기술, 컴퓨터 판독가능 매체가 1차 스토리지로서 특징지어지는지 또는 2차 스토리지로서 특징지어지는지의 여부, 및 등등을 포함할 수도 있지만, 그러나 이들로 한정되는 것은 아니다. 예를 들면, 컴퓨터 판독가능 매체가 반도체 기반의 메모리로서 구현되면, 본원에서 개시되는 소프트웨어는 반도체 메모리의 물리적 상태를 변환하는 것에 의해 컴퓨터 판독가능 매체 상에서 인코딩될 수도 있다. 예를 들면, 소프트웨어는 트랜지스터, 커패시터, 또는 반도체 메모리를 구성하는 다른 별개의 회로 엘리먼트의 상태를 변환할 수도 있다. 소프트웨어는 또한, 이러한 컴포넌트의 물리적 상태를, 그 컴포넌트 상에 데이터를 저장하기 위해, 변환할 수도 있다.
다른 예로서, 본원에서 개시되는 컴퓨터 판독가능 매체는 자기 또는 광학 기술을 사용하여 구현될 수도 있다. 이러한 구현예에서, 본원에서 제시되는 소프트웨어는 자기 또는 광학 매체의 물리적 상태를, 소프트웨어가 그 자기 또는 광학 매체 내에 인코딩될 때, 변환할 수도 있다. 이들 변환은 주어진 자기 매체 내에서의 특정 로케이션의 자기적 특성을 변경하는 것을 포함할 수도 있다. 이들 변환은 또한, 주어진 광학 매체 내의 특정 로케이션의 물리적 피쳐 또는 특성을 변경하여 그들 로케이션의 광학적 특성을 변경하는 것을 포함할 수도 있다. 본 설명의 취지와 범위를 벗어나지 않으면서 물리적 매체의 다른 변환도 가능한데, 상기의 예는 단지 이 논의를 용이하게 하기 위해서 제공된다.
상기의 관점에서, 본원에서 제시되는 소프트웨어 컴포넌트를 저장하고 실행하기 위해, 많은 타입의 물리적 변환이 컴퓨터 아키텍쳐(600)에서 발생한다는 것이 인식되어야 한다. 컴퓨터 아키텍쳐(600)는, 핸드헬드 컴퓨터, 임베딩된 컴퓨터 시스템, 개인 휴대형 정보 단말(personal digital assistants), 및 기술분야에서 숙련된 자에게 공지된 다른 타입의 컴퓨팅 디바이스를 비롯한 다른 타입의 컴퓨팅 디바이스를 포함할 수도 있다는 것이 또한 인식되어야 한다. 컴퓨터 아키텍쳐(600)는 도 6에 도시되는 모든 컴포넌트를 포함하지 않을 수도 있거나, 도 6에서 명시적으로 도시되지 않은 다른 컴포넌트를 포함할 수도 있거나, 또는 도 6에서 도시되는 것과는 완전히 상이한 아키텍쳐를 활용할 수도 있다는 것이 또한 고려된다.
도 7은, 테마 정보를 호스트 애플리케이션(102)으로부터 호스트 확장자(106)으로 전파하기 위한 본원에서 설명되는 소프트웨어 컴포넌트가 실행될 수도 있는 예시적인 분산형 컴퓨팅 환경(700)을 도시한다. 다양한 구현예에 따르면, 분산형 컴퓨팅 환경(700)은, 네트워크(620) 상에서, 그 네트워크(620)와 통신하여, 또는 그 네트워크(620)의 일부로서 동작하는 컴퓨팅 환경(702)을 포함한다.
하나 이상의 클라이언트 디바이스(706A-706N)(이하, 일괄적으로 및/또는 일반적으로 "클라이언트(706)"로 칭함)는 네트워크(620) 및/또는 다른 연결(도 7에서는 예시되지 않음)을 통해 컴퓨팅 환경(702)과 통신할 수 있다. 예시된 실시형태에서, 클라이언트(706)는, 랩탑 컴퓨터, 데스크탑 컴퓨터, 또는 다른 컴퓨팅 디바이스와 같은 컴퓨팅 디바이스(706A), 슬레이트 또는 태블릿 컴퓨팅 디바이스(706B), 이동 전화, 스마트폰, 또는 다른 모바일 컴퓨팅 디바이스와 같은 모바일 컴퓨팅 디바이스(706C), 서버 컴퓨터(706D), 및/또는 다른 디바이스(706N)를 포함한다. 임의의 수의 클라이언트(706)가 컴퓨팅 환경(702)과 통신할 수 있다는 것이 이해되어야 한다. 클라이언트(706)에 대한 두 개의 예시적인 컴퓨팅 아키텍쳐는 본원에서 도 6 및 도 8을 참조하여 예시되고 설명된다. 예시된 클라이언트(706) 및 본원에서 예시되고 설명되는 컴퓨팅 아키텍쳐는 예시적인 것이며, 어떤 식으로든 제한하는 것으로 간주되지 않아야 한다는 것이 이해되어야 한다.
예시된 실시형태에서, 컴퓨팅 환경(702)은 애플리케이션 서버(708), 데이터 스토리지(710), 및 하나 이상의 네트워크 인터페이스(704)를 포함한다. 다양한 구현예에 따르면, 애플리케이션 서버(708)의 기능성은, 네트워크(620)의 일부로서, 또는 네트워크(620)와 통신하여 실행하고 있는 하나 이상의 서버 컴퓨터에 의해 제공될 수 있다. 애플리케이션 서버(708)는 다양한 서비스, 가상 머신, 포털, 및/또는 다른 리소스를 호스팅할 수 있다.
예시된 실시형태에서, 애플리케이션 서버(708)는, 애플리케이션 또는 다른 기능성을 호스팅하기 위한 하나 이상의 가상 머신(714)을 호스팅한다. 다양한 구현예에 따르면, 가상 머신(714)은, 본원에서 설명되는 기능성을 제공하기 위한 하나 이상의 애플리케이션 및/또는 소프트웨어 모듈을 호스팅한다. 이 실시형태는 예시적인 것이며, 어떤 식으로든 제한하는 것으로 간주되지 않아야 한다는 것이 이해되어야 한다. 애플리케이션 서버(708)는 또한, 하나 이상의 웹 포털, 링크 페이지, 웹 사이트, 및/또는 다른 정보("웹 포털")(716)에 대한 액세스를 호스팅하거나 또는 제공한다.
다양한 구현예에 따르면, 애플리케이션 서버(708)는 또한 하나 이상의 메일박스 서비스(718) 및 하나 이상의 메시징 서비스(720)를 포함한다. 메일박스 서비스(718)는 전자메일(electronic mail; "email") 서비스를 포함할 수 있다. 메일박스 서비스(718)는 또한, 캘린더 서비스, 연락처 관리 서비스, 협력 서비스, 및/또는 다른 서비스를 포함하지만 그러나 이들로 제한되지는 않는 다양한 개인 정보 관리(personal information management; "PIM") 서비스를 포함할 수 있다. 메시징 서비스(720)는, 인스턴트 메시징 서비스, 챗 서비스, 포럼 서비스, 및/또는 다른 통신 서비스를 포함할 수 있지만, 이들로 제한되지는 않는다.
애플리케이션 서버(708)는 또한 하나 이상의 소셜 네트워킹 서비스(722)를 포함할 수 있다. 소셜 네트워킹 서비스(722)는, 상태 업데이트, 인스턴스 메시지, 링크, 사진, 비디오, 및/또는 다를 정보를 공유하기 위한 또는 포스팅하기 위한 서비스; 기사(article), 제품, 블로그, 또는 다른 리소스에서 관심을 디스플레이하기 위한 또는 코멘트를 달기 위한 서비스; 및/또는 다른 서비스를 포함하지만 그러나 이들로 제한되지는 않는 다양한 소셜 네트워킹 서비스를 포함할 수 있다. 몇몇 실시형태에서, 소셜 네트워킹 서비스(722)는, FACEBOOK 소셜 네트워킹 서비스, LINKEDIN 전문가 네트워킹 서비스, MYSPACE 소셜 네트워킹 서비스, FOURSQUARE 지오그래픽 네트워킹 서비스, YAMMER 사무실 동료 네트워킹 서비스(office colleague networking service), 및 등등에 의해 제공되거나 또는 이들을 포함한다.
다를 실시형태에서, 소셜 네트워킹 서비스(722)는, 다른 서비스, 사이트, 및/또는 소셜 네트워킹 공급자로서 명시적으로 공지될 수도 있거나 또는 공지되지 않을 수도 있는 공급자에 의해 제공된다. 예를 들면, 몇몇 웹 사이트는, 간행된 기사를 읽는 것, 제품 또는 서비스에 코멘트를 다는 것, 퍼블리싱, 협력, 게이밍, 및 등등과 같은 다양한 액티비티 및/또는 컨텍스트 동안, 유저가 이메일, 챗 서비스, 및/또는 다른 수단을 통해 서로 상호작용하는 것을 허용한다. 이러한 서비스의 예는, 미국 워싱턴 레드몬드(Redmond)의 MICROSOFT CORPORATION으로부터의 WINDOWS LIVE 서비스 및 XBOX LIVE 서비스를 포함하지만, 그러나 이들로 제한되지는 않는다. 다른 서비스도 가능하며 고려된다.
소셜 네트워킹 서비스(722)는 또한, 코멘팅(commenting), 블로깅, 및/또는 마이크로블로깅 서비스를 포함할 수 있다. 이러한 서비스의 예는, YELP 코멘팅 서비스, KUDZU 리뷰 서비스, OFFICETALK 엔터프라이즈 마이크로블로깅 서비스, TWITTER 메시징 서비스, GOOGLE BUZZ 서비스, 및/또는 다른 서비스를 포함하지만, 그러나 이들로 제한되지는 않는다. 서비스의 상기 리스트는 총망라하는 것은 아니다는 것 및 간략화를 위해, 다수의 추가적인 및/또는 대안적인 소셜 네트워킹 서비스(722)가 본원에서는 언급되지 않았다는 것이 인식되어야 한다. 이와 같이, 상기 실시형태는 예시적인 것이며, 어떤 식으로든 제한하는 것으로 간주되지 않아야 한다.
도 7에서 도시되는 바와 같이, 애플리케이션 서버(708)는 또한, 다른 서비스, 애플리케이션, 포털, 및/또는 다른 리소스("다른 서비스")(724)를 호스팅할 수 있다. 따라서, 컴퓨팅 환경(702)은, 다양한 메일박스, 메시징, 소셜 네트워킹, 및/또는 다른 서비스 또는 리소스와의 본원에서 개시되는 개념 및 기술의 통합을 제공할 수 있다는 것을 알 수 있다.
상기에서 언급된 바와 같이, 컴퓨팅 환경(702)은 데이터 스토리지(710)를 포함할 수 있다. 다양한 구현예에 따르면, 데이터 스토리지(710)의 기능성은, 네트워크(620) 상에서 동작하는, 또는 네트워크(620)와 통신하여 동작하는 하나 이상의 데이터베이스에 의해 제공된다. 데이터 스토리지(710)의 기능성은, 컴퓨팅 환경(702)에 대한 데이터를 호스팅하도록 구성되는 하나 이상의 서버 컴퓨터에 의해 또한 제공될 수 있다. 데이터 스토리지(710)는, 하나 이상의 실제 또는 가상의 데이터 저장소(datastore)(712A-712N)(이하, 일괄적으로 및/또는 일반적으로 "데이터 저장소(712)"로 칭함)를 포함할 수도 있거나, 호스팅할 수도 있거나, 제공할 수도 있다. 데이터 저장소(712)는, 애플리케이션 서버(708)에 의해 사용되거나 작성되는 데이터 및/또는 다른 데이터를 호스팅하도록 구성된다. 도 7에서 예시되지는 않지만, 데이터 저장소(712)는 또한, 도 6에서 도시되는 호스트 애플리케이션(102), 테마 정의(104) 및 호스트 확장자(106)을 필요에 따라 호스팅할 수 있거나 또는 저장할 수 있다.
컴퓨팅 환경(702)은 네트워크 인터페이스(704)와 통신할 수 있거나, 또는 네트워크 인터페이스(704)에 의해 액세스될 수 있다. 네트워크 인터페이스(704)는, 클라이언트(706) 및 애플리케이션 서버(708)를 포함하지만 그러나 이들로 제한되지는 않는 두 개 이상의 컴퓨팅 디바이스 사이의 통신을 지원하기 위한 다양한 타입의 네트워크 하드웨어 및 소프트웨어를 포함할 수 있다. 네트워크 인터페이스(704)는 또한, 다른 타입의 네트워크 및/또는 컴퓨터 시스템에 연결하기 위해 활용될 수도 있다는 것이 인식되어야 한다.
본원에서 설명되는 분산형 컴퓨팅 환경(700)은, 본원에서 설명되는 임의의 양태의 소프트웨어 엘리먼트에게, 본원에서 개시되는 소프트웨어 컴포넌트의 임의의 양태를 실행하도록 구성될 수 있는 다른 분산형 컴퓨팅 기능성 및/또는 임의의 수의 가상 컴퓨팅 리소스를 제공할 수 있다는 것이 이해되어야 한다. 본원에서 개시되는 개념 및 기술의 다양한 구현예에 따르면, 분산형 컴퓨팅 환경(700)은 본원에서 설명되는 소프트웨어 기능성을 서비스로서 클라이언트(706)로 제공한다. 클라이언트(706)는, 서버 컴퓨터, 웹 서버, 퍼스널 컴퓨터, 모바일 컴퓨팅 디바이스, 스마트폰, 및/또는 다른 디바이스를 포함하지만 이들로 제한되지는 않는 실제 또는 가상 머신을 포함할 수 있다는 것이 이해되어야 한다. 이와 같이, 본원에서 개시되는 개념 및 기술의 다양한 실시형태는, 분산형 컴퓨팅 환경(700)에 액세스하도록 구성되는 임의의 디바이스가, 테마 정보를 호스트 애플리케이션(102)으로부터 호스트 확장자(106)으로 전파하기 위한 본원에서 설명되는 기능성을 활용하는 것을 가능하게 한다.
이제 도 8을 참조하면, 테마 정보를 호스트 애플리케이션(102)으로부터 호스트 확장자(106)으로 전파하기 위한 본원에서 설명되는 다양한 소프트웨어 컴포넌트를 실행할 수 있는 컴퓨팅 디바이스에 대한 예시적인 컴퓨팅 디바이스 아키텍쳐(800)가 도시된다. 컴퓨팅 디바이스 아키텍쳐(800)는, 부분적으로, 폼팩터, 무선 연결성, 및/또는 배터리에 의해 전력을 공급받는 동작으로 인해, 모바일 컴퓨팅을 용이하게 하는 컴퓨팅 디바이스에 적용가능하다. 몇몇 실시형태에서, 컴퓨팅 디바이스는, 이동 전화, 태블릿 디바이스, 슬레이트 디바이스, 휴대형 비디오 게임 디바이스, 및 등등을 포함하지만, 그러나 이들로 제한되지 않는다. 또한, 컴퓨팅 디바이스 아키텍쳐(800)는 도 7에서 도시되는 클라이언트(706) 중 임의의 것에 적용가능하다. 또한, 컴퓨팅 디바이스 아키텍쳐(800)의 양태는, 전통적인 데스크탑 컴퓨터, 휴대형 컴퓨터(예를 들면, 랩탑, 노트북, 울트라 포터블, 및 넷북), 서버 컴퓨터, 및 예컨대 도 6을 참조로 본원에서 설명되는 다른 컴퓨터 시스템에 적용가능할 수도 있다.
도 8에서 예시되는 컴퓨팅 디바이스 아키텍쳐(800)는, 프로세서(802), 메모리 컴포넌트(804), 네트워크 연결성 컴포넌트(806), 센서 컴포넌트(808), 입/출력 컴포넌트(810), 및 전력 컴포넌트(812)를 포함한다. 예시된 실시형태에서, 프로세서(802)는 메모리 컴포넌트(804), 네트워크 연결성 컴포넌트(806), 센서 컴포넌트(808), 입/출력(input/output; "I/O") 컴포넌트(810), 및 전력 컴포넌트(812)와 통신한다. 도 8에서 예시되는 개개의 컴포넌트 사이에 어떠한 연결도 도시되지 않지만, 컴포넌트는 디바이스 기능을 수행하도록 상호작용할 수 있다. 몇몇 실시형태에서, 컴포넌트는 하나 이상의 버스(도시되지 않음)를 통해 통신하도록 정렬된다.
프로세서(802)는, 본원에서 설명되는 다양한 기능성을 수행하기 위해, 데이터를 프로세싱하도록, 하나 이상의 애플리케이션 프로그램의 컴퓨터 실행가능 명령어를 실행하도록, 그리고 컴퓨팅 디바이스 아키텍쳐(800)의 다른 컴포넌트와 통신하도록 구성되는 하나 이상의 CPU를 포함한다. 프로세서(802)는, 본원에서 제시되는 소프트웨어 컴포넌트, 특히, 테마 정보를 적어도 부분적으로 활용하는 소프트웨어 컴포넌트의 양태를 실행하기 위해 활용될 수도 있다.
몇몇 실시형태에서, 프로세서(802)는, 범용의 과학적 및 공학적 컴퓨팅 애플리케이션뿐만 아니라, 그래픽 집약적 컴퓨팅 애플리케이션 예컨대 고해상도 비디오(예를 들면, 720P, 1080P, 및 그 이상), 비디오 게임, 3차원(three-dimensional; "3D") 모델링 애플리케이션, 및 등등을 실행하는 것에 의해 수행되는 동작을 포함하지만 그러나 이들로 제한되지는 않는, CPU에 의해 수행되는 동작을 가속시키도록 구성되는 그래픽 프로세싱 유닛(graphics processing unit; "GPU")을 포함한다. 몇몇 실시형태에서, 프로세서(802)는 별개의 GPU(도시되지 않음)와 통신하도록 구성된다. 어느 경우든, CPU 및 GPU는 코프로세싱 CPU/GPU 컴퓨팅 모델에 따라 구성되는데, 이 경우, 애플리케이션의 순차적인 부분이 CPU 상에서 실행되고 계산 집약적인 부분은 GPU에 의해 가속된다.
몇몇 실시형태에서, 프로세서(802)는 시스템온칩(system-on-chip; "SoC")이거나, 또는 본원의 하기에서 설명되는 다른 컴포넌트의 하나 이상과 함께 시스템온칩에 포함된다. 예를 들면, SoC는, 프로세서(802), GPU, 네트워크 연결성 컴포넌트(806) 중 하나 이상, 및 센서 컴포넌트(808) 중 하나 이상을 포함할 수도 있다. 몇몇 실시형태에서, 프로세서(802)는, 부분적으로, 패키지 온 패키지(package-on-package; "PoP") 집적 회로 패키징 기술을 활용하여 제조된다. 또한, 프로세서(802)는 싱글 코어 또는 다중 코어 프로세서일 수도 있다.
프로세서(802)는, 영국 캠브리지의 ARM HOLDINGS로부터 라이센스를 입수할 수 있는 ARM 아키텍쳐에 따라 생성될 수도 있다. 대안적으로, 프로세서(802)는, x86 아키텍쳐에 따라 생성될 수도 있는데, x86 아키텍쳐와 같은 것은 미국 캘리포니아 마운틴 뷰(Mountain View)의 INTEL CORPORATION 및 다른 것으로부터 입수가능하다. 몇몇 실시형태에서, 프로세서(802)는, 미국 캘리포니아 샌디에고(San Diego)의 QUALCOMM으로부터 입수가능한 SNAPDRAGON SoC, 미국 캘리포니아 산타 클라라(Santa Clara)의 NVIDIA로부터 입수가능한 TEGRA SoC, 대한민국 서울의 SAMSUNG(삼성)으로부터 입수가능한 HUMMINGBIRD SoC, 미국 텍사스 달라스(Dallas)의 TEXAS INSTRUMENTS로부터 입수가능한 오픈 멀티미디어 애플리케이션 플랫폼(Open Multimedia Application Platform; "OMAP") SoC, 상기 SoC 중 임의의 것의 커스터마이징된 버전, 또는 독점적(proprietary) SoC이다.
메모리 컴포넌트(804)는, RAM(814), ROM(816), 통합 스토리지 메모리("통합 스토리지")(818), 및 착탈식 스토리지 메모리(removable storage memory)("착탈식 스토리지")(820)를 포함한다. 몇몇 실시형태에서, RAM(814) 또는 그 일부, ROM(816) 또는 그 일부, 및/또는 RAM(814)과 ROM(816)의 몇몇 조합이 프로세서(802)에 통합된다. 몇몇 실시형태에서, ROM(816)은, 펌웨어, 오퍼레이팅 시스템 또는 그 일부(예를 들면, 오퍼레이팅 시스템 커널), 및/또는 통합 스토리지(818) 또는 착탈식 스토리지(820)로부터 오퍼레이팅 시스템 커널을 로딩하기 위한 부트로더를 저장하도록 구성된다.
통합 스토리지(818)는 솔리드 스테이트 메모리, 하드 디스크, 또는 솔리드 스테이트 메모리와 하드 디스크의 조합을 포함할 수 있다. 통합 스토리지(818)는 논리 보드(logic board)에 솔더링될 수도 있거나 또는 다르게 연결될 수도 있는데, 논리 보드 상에는, 프로세서(802) 및 본원에서 설명되는 다른 컴포넌트가 또한 연결될 수도 있다. 이와 같이, 통합 스토리지(818)는 컴퓨팅 디바이스에 통합된다. 통합 스토리지(818)는, 오퍼레이팅 시스템 또는 그 일부, 애플리케이션 프로그램, 및 본원에서 설명되는 다른 소프트웨어 컴포넌트를 저장하도록 구성된다.
착탈식 스토리지(820)는 솔리드 스테이트 메모리, 하드 디스크, 또는 솔리드 스테이트 메모리와 하드 디스크의 조합을 포함할 수 있다. 몇몇 실시형태에서, 착탈식 스토리지(820)는 통합 스토리지(818) 대신 제공된다. 다른 실시형태에서, 착탈식 스토리지(820)는 추가적인 옵션적 스토리지로서 제공된다. 몇몇 실시형태에서, 착탈식 스토리지(820)는, 총 이용가능한 스토리지가 이용가능하게 만들어지도록 그리고 통합 스토리지(818)와 착탈식 스토리지(820)의 총 결합된 용량으로서 유저에게 보여지도록, 통합 스토리지(818)와 논리적으로 결합된다.
착탈식 스토리지(820)는 착탈식 스토리지 메모리 슬롯(도시되지 않음) 또는 착탈식 스토리지(820)가 컴퓨팅 디바이스의 다른 컴포넌트, 예컨대 프로세서(802)와 통신할 수 있게 하는 연결을 용이하게 하도록 착탈식 스토리지(820)가 삽입되어 고정되게 하는 다른 메커니즘 안으로 삽입되도록 구성된다. 착탈식 스토리지(820)는, PC 카드, 컴팩트플래시(CompactFlash) 카드, 메모리 스틱, 시큐어 디지털(secure digital; "SD"), 미니SD, 마이크로SD, 범용 집적 회로 카드(universal integrated circuit card; "UICC")(예를 들면, 가입자 식별 모듈(subscriber identity module; "SIM") 또는 범용 SIM (universal SIM; "USIM")), 독점적 포맷, 또는 등등을 포함하지만 그러나 이들로 제한되지는 않는 다양한 메모리 카드 포맷으로 구체화될 수도 있다.
메모리 컴포넌트(804) 중 하나 이상은 오퍼레이팅 시스템을 저장할 수 있다는 것이 이해될 수 있다. 다양한 실시형태에 따르면, 오퍼레이팅 시스템은, SYMBIAN LIMITED로부터의 SYMBIAN OS, 미국 워싱턴 레드몬드의 MICROSOFT CORPORATION으로부터의 WINDOWS MOBILE OS, MICROSOFT CORPORATION로부터의 WINDOWS PHONE OS, MICROSOFT CORPORATION로부터의 WINDOWS, 미국 캘리포니아 팔로 알토(Palo Alto)의 HEWLETT-PACKARGD COMPANY로부터의 PALM WEBOS, 캐나다 온타리오 워털루(Waterloo)의 RESEARCH IN MOTION LIMITED로부터의 BLACKBERRY OS, 미국 캘리포니아 쿠퍼티노(Cupertino)의 APPLE, INC.로부터의 IOS, 미국 캘리포니아 마운틴 뷰의 GOOGLE, INC.로부터의 ANDROID OS를 포함하지만 그러나 이들로 제한되지는 않는다. 다른 오퍼레이팅 시스템이 고려된다.
네트워크 연결성 컴포넌트(806)는, 무선 광대역 네트워크 컴포넌트(wireless wide area network component; "WWAN 컴포넌트")(822), 무선 근거리 통신망 컴포넌트(wireless local area network component; "WLAN 컴포넌트")(824), 무선 개인 영역 네트워크 컴포넌트(wireless personal area network component; "WPAN 컴포넌트")(826)를 포함한다. 네트워크 연결성 컴포넌트(806)는, WWAN, WLAN, 또는 WPAN일 수도 있는 네트워크(620)로의 그리고 그 네트워크(620)로부터의 통신을 용이하게 한다. 단일의 네트워크(620)가 예시되지만, 네트워크 연결성 컴포넌트(806)는 다수의 네트워크와의 동시적 통신을 용이하게 할 수도 있다. 예를 들면, 네트워크 연결성 컴포넌트(806)는, WWAN, WLAN, 또는 WPAN 중 하나 이상을 통한 다수의 네트워크와의 동시적 통신을 용이하게 할 수도 있다.
네트워크(620)는, WWAN 컴포넌트(822)를 통해 컴퓨팅 디바이스 아키텍쳐(800)를 활용하는 컴퓨팅 디바이스로 음성 및/또는 데이터 서비스를 제공하기 위해 하나 이상의 이동 통신 기술(mobile telecommunications technology)을 활용하는 이동 통신 네트워크와 같은 WWAN일 수도 있다. 이동 통신 기술은, 이동 통신용 글로벌 시스템(Global System for Mobile communications; "GSM"), 코드 분할 다중 액세스(Code Division Multiple Access; "CDMA") ONE, CDMA2000, 범용 이동 통신 시스템(Universal Mobile Telecommunications System; "UMTS"), 롱 텀 에볼루션(Long Term Evolution; "LTE"), 및 와이맥스(Worldwide Interoperability for Microwave Access; "WiMAX")를 포함할 수 있지만, 그러나 이들로 제한되지는 않는다. 또한, 네트워크(620)는, 시분할 다중 액세스(Time Division Multiple Access; "TDMA"), 주파수 분할 다중 액세스(Frequency Division Multiple Access; "FDMA"), CDMA, 광대역 CDMA(wideband CDMA; "W-CDMA"), 직교 주파수 분할 멀티플렉싱(Orthogonal Frequency Division Multiplexing; "OFDM"), 공간 분할 다중 액세스(Space Division Multiple Access; "SDMA"), 및 등등을 포함하지만 그러나 이들로 제한되지는 않는 다양한 채널 액세스 방법(이 방법은 상기 언급된 표준에 의해 사용될 수도 있거나 또는 사용되지 않을 수도 있다)을 활용할 수도 있다. 데이터 통신은, 일반 패킷 무선 서비스(General Packet Radio Service; "GPRS"), 글로벌 에볼루션을 위한 향상된 데이터 레이트(Enhanced Data rates for Global Evolution; "EDGE"), 고속 다운링크 패킷 액세스(High-Speed Downlink Packet Access; "HSDPA"), 향상된 업링크(Enhanced Uplink; "EUL") 또는 다르게 칭해지는 고속 업링크 패킷 액세스(High-Speed Uplink Packet Access; "HSUPA")를 포함하는 고속 패킷 액세스(High-Speed Packet Access; "HSPA") 프로토콜 패밀리, 진화형 HSPA(Evolved HSPA; "HSPA+"), LTE, 및 다양한 다른 현재의 그리고 미래의 무선 데이터 액세스 표준을 사용하여 제공될 수도 있다. 네트워크(620)는 상기 기술의 임의의 조합으로 음성 및/또는 데이터 통신을 제공하도록 구성될 수도 있다. 네트워크(620)는 차세대 기술에 따라 음성 및/또는 데이터 통신을 제공하도록 구성될 수도 있거나 또는 적응될 수도 있다.
몇몇 실시형태에서, WWAN 컴포넌트(822)는 네트워크(620)에게 듀얼 멀티 모드 연결성(dual- multi-mode connectivity)을 제공하도록 구성된다. 예를 들면, WWAN 컴포넌트(822)는 네트워크(620)로 연결성을 제공하도록 구성될 수도 있는데, 이 경우 네트워크(620)는 GSM 및 UMTS 기술을 통해, 또는 기술의 몇몇 다른 조합을 통해 서비스를 제공한다. 대안적으로, 다수의 WWAN 컴포넌트(822)는, 이러한 기능성을 수행하기 위해, 및/또는 다른 비호환의(즉, 단일의 WWAN 컴포넌트에 의해 지원될 수 없는) 기술을 지원하도록 추가적인 기능성을 지원하기 위해 활용될 수도 있다. WWAN 컴포넌트(822)는, 다수의 네트워크(예를 들면, UMTS 네트워크 및 LTE 네트워크)에 대한 유사한 연결성을 용이하게 할 수도 있다.
네트워크(620)는 하나 이상의 미국 전기 전자 학회(Institute of Electrical and Electronic Engineers; "IEEE") 802.11 표준, 예컨대 IEEE 802.11a, 802.11b, 802.11g, 802.11n, 및/또는 미래의 802.11 표준(본원에서는 일괄적으로 와이파이(WI-FI)로 칭함)에 따라 동작하는 WLAN일 수도 있다. 초안의(draft) 802.11 표준도 또한 고려된다. 몇몇 실시형태에서, WLAN은 하나 이상의 무선 와이파이 액세스 포인트를 활용하여 구현된다. 몇몇 실시형태에서, 무선 와이파이 액세스 포인트 중 하나 이상은, 와이파이 핫스팟으로서 기능하고 있는 WWAN에 대한 연결성을 갖는 다른 컴퓨팅 디바이스이다. WLAN 컴포넌트(824)는 와이파이 액세스 포인트를 통해 네트워크(620)에 연결하도록 구성된다. 이러한 연결은, 와이파이 보호 액세스(WI-FI Protected Access; "WPA"), WPA2, 유선급 프라이버시(Wired Equivalent Privacy; "WEP"), 및 등등을 포함하지만 그러나 이들로 제한되지는 않는 다양한 암호화 기술을 통해 안전하게 될 수도 있다.
네트워크(620)는, 적외선 통신(Infrared Data Association; "IrDA"), BLUETOOTH(블루투스), 무선 범용 직렬 버스(Universal Serial Bus; "USB"), 지웨이브(Z-Wave), ZIGBEE(지그비), 또는 몇몇 다른 단거리 무선 기술에 따라 동작하는 WPAN일 수도 있다. 몇몇 실시형태에서, WPAN 컴포넌트(826)는, WPAN을 통한 다른 디바이스, 예컨대, 주변장치, 컴퓨터, 또는 다른 컴퓨팅 디바이스와의 통신을 용이하게 하도록 구성된다.
센서 컴포넌트(808)는 자력계(828), 주변광 센서(830), 근접 센서(832), 가속도계(834), 자이로스코프(836), 및 전지구 위치결정 시스템 센서(Global Positioning System sensor; "GPS sensor")(838)를 포함한다. 온도 센서 또는 충격 검출 센서와 같은 그러나 이들로 제한되지는 않는 다른 센서가 컴퓨팅 디바이스 아키텍쳐(800)에 통합될 수도 있다는 것이 고려된다.
자력계(828)는 자기장의 세기 및 방향을 측정하도록 구성된다. 몇몇 실시형태에서, 자력계(828)는, 기본 방위인 동서남북을 포함하는 기준틀에서 유저에게 정확한 방위를 제공하기 위해, 메모리 컴포넌트(804) 내에 저장된 콤파스 애플리케이션 프로그램으로 측정치를 제공한다. 콤파스 컴포넌트를 포함하는 내비게이션 애플리케이션 프로그램으로 유사한 측정치가 제공될 수도 있다. 자력계(828)에 의해 획득된 측정치의 다른 용도가 고려된다.
주변광 센서(830)는 주변광을 측정하도록 구성된다. 몇몇 실시형태에서, 주변광 센서(830)는, 저조도 환경(low-light environment) 및 고조도 환경(high-light environment)을 보상하도록 디스플레이의 휘도를 자동적으로 조정하기 위해(하기에서 설명됨), 하나의 메모리 컴포넌트(804) 내에 저장된 애플리케이션 프로그램으로 측정치를 제공한다. 주변광 센서(830)에 의해 획득된 측정치의 다른 용도가 고려된다.
근접 센서(832)는 직접 접촉 없이 컴퓨팅 디바이스에 근접하는 오브젝트 또는 사물의 존재를 검출하도록 구성된다. 몇몇 실시형태에서, 근접 센서(832)는 유저의 신체(예를 들면, 유저의 얼굴)의 존재를 검출하고, 이 정보를, 컴퓨팅 디바이스의 몇몇 기능성을 인에이블 또는 디스에이블시키기 위해 근접도 정보를 활용하는 메모리 컴포넌트(804) 중 하나 내에 저장된 애플리케이션 프로그램에 제공한다. 예를 들면, 전화 애플리케이션 프로그램은, 유저의 얼굴이 실수로 통화를 종료시키지 않도록 또는 통화 동안 전화 애플리케이션 프로그램 내의 다른 기능성을 인에이블/디스에이블시키도록, 근접도 정보를 수신하는 것에 응답하여 터치스크린을 자동적으로 디스에이블할 수도 있다(하기에서 설명됨). 근접 센서(832)에 의해 검출되는 바와 같은 근접도의 다른 용도가 고려된다.
가속도계(834)는 적절한 가속도를 측정하도록 구성된다. 몇몇 실시형태에서, 가속도계(834)로부터의 출력은, 애플리케이션 프로그램의 몇몇 기능성을 제어하기 위한 입력 메커니즘으로서 애플리케이션 프로그램에 의해 사용된다. 예를 들면, 애플리케이션 프로그램은, 가속도계(834)를 통해 수신되는 입력에 응답하여, 문자, 문자의 일부, 또는 오브젝트가 이동되거나 또는 다르게는 조작되는 비디오 게임일 수도 있다. 몇몇 실시형태에서, 가속도계(834)로부터의 출력은, 가로방향 모드 및 세로방향 모드 사이에서의 전환, 좌표 가속도의 계산, 또는 낙하의 검출에서의 사용을 위해 애플리케이션 프로그램으로 제공된다. 가속도계(834)의 다른 용도가 고려된다.
자이로스코프(836)는 방위를 측정하고 유지하도록 구성된다. 몇몇 실시형태에서, 자이로스코프(836)로부터의 출력은, 애플리케이션 프로그램의 몇몇 기능성을 제어하기 위한 입력 메커니즘으로서 애플리케이션 프로그램에 의해 사용된다 예를 들면, 자이로스코프(836)는 비디오 게임 애플리케이션 또는 몇몇 다른 애플리케이션의 3D 환경 내에서 움직임의 정확한 인식을 위해 사용될 수 있다. 몇몇 실시형태에서, 애플리케이션 프로그램은, 애플리케이션 프로그램의 몇몇 기능성의 제어를 향상시키기 위해, 자이로스코프(836) 및 가속도계(834)로부터의 출력을 활용한다. 자이로스코프(836)의 다른 용도가 고려된다.
GPS 센서(838)는 위치 계산에서의 사용을 위해 GPS 위성으로부터 신호를 수신하도록 구성된다. GPS 센서(838)에 의해 계산되는 위치는, 위치 정보를 필요로 하거나 또는 위치 정보로부터 이득을 얻는 임의의 애플리케이션 프로그램에 의해 사용될 수도 있다. 예를 들면, GPS 센서(838)에 의해 계산되는 위치는, 그 위치로부터 목적지로의 방위 또는 목적지로부터 그 위치로의 방위를 제공하기 위해, 내비게이션 애플리케이션 프로그램과 함께 사용될 수도 있다. 또한, GPS 센서(838)는 위치 정보를 외부 위치 기반 서비스, 예컨대 E911 서비스로 제공하기 위해 사용될 수도 있다. GPS 센서(838)는, 위치 픽스(location fix)를 획득함에 있어서 GPS 센서(838)를 보조하기 위해, 네트워크 연결성 컴포넌트(806) 중 하나 이상을 활용하는 와이파이(WI-FI), 와이맥스(WIMAX), 및/또는 셀룰러 삼각측량 기술을 통해 생성되는 위치 정보를 획득할 수도 있다. GPS 센서(838)는 또한 지원형 GPS(Assisted GPS; "A-GPS") 시스템에서 사용될 수도 있다.
I/O 컴포넌트(810)는, 디스플레이(840), 터치스크린(842), 데이터 I/O 인터페이스 컴포넌트("데이터 I/O")(844), 오디오 I/O 인터페이스 컴포넌트("오디오 I/O")(846), 비디오 I/O 인터페이스 컴포넌트("비디오 I/O")(848), 및 카메라(850)를 포함한다. 몇몇 실시형태에서, 디스플레이(840) 및 터치스크린(842)은 결합된다. 몇몇 실시형태에서, 데이터 I/O 컴포넌트(844), 오디오 I/O 컴포넌트(846), 및 비디오 I/O 컴포넌트(848) 중 둘 이상은 결합된다. I/O 컴포넌트(810)는, 하기에서 설명되는 다양한 인터페이스를 지원하도록 구성되는 별개의 프로세서를 포함할 수도 있거나, 또는 프로세서(802)에 내장되는 프로세싱 기능성을 포함할 수도 있다.
디스플레이(840)는 정보를 시각적 형태로 제시하도록 구성되는 출력 디바이스이다. 특히, 디스플레이(840)는, 그래픽 유저 인터페이스(graphical user interface; "GUI") 엘리먼트, 텍스트, 이미지, 비디오, 통지, 가상 버튼, 가상 키보드, 메시징 데이터, 인터넷 컨텐츠, 디바이스 상태, 시간, 날짜, 캘린더 데이터, 선호사항, 맵 정보, 위치 정보, 및 시각적 형태로 제시될 수 있는 임의의 다른 정보를 제시할 수도 있다. 몇몇 실시형태에서, 디스플레이(840)는 임의의 능동 또는 수동 매트릭스 기술 및 임의의 백라이팅 기술(사용되는 경우)을 활용하는 액정 디스플레이(liquid crystal display; "LCD")이다. 몇몇 실시형태에서, 디스플레이(840)는 유기 발광 다이오드(organic light emitting diode; "OLED") 디스플레이이다. 다른 디스플레이 타입이 고려된다.
터치스크린(842)은 터치의 존재 및 위치를 검출하도록 구성되는 입력 디바이스이다. 터치스크린(842)은 저항성 터치스크린, 용량성 터치스크린, 표면 탄성파(surface acoustic wave) 터치스크린, 적외선 터치스크린, 광학 이미징 터치스크린, 분산 신호 터치스크린(dispersive signal touchscreen), 음향 펄스 인식 터치스크린(acoustic pulse recognition touchscreen)일 수도 있거나, 또는 임의의 다른 터치스크린 기술을 활용할 수도 있다. 몇몇 실시형태에서, 터치스크린(842)은, 유저가 하나 이상의 터치를 사용하여 디스플레이(840) 상에 존재하는 오브젝트 또는 다른 정보와 상호작용하는 것을 가능하게 하기 위해, 투명층으로서 디스플레이(840)의 상부 상에 통합된다. 다른 실시형태에서, 터치스크린(842)은, 디스플레이(840)를 포함하지 않으며 컴퓨팅 디바이스의 표면 상에 통합되는 터치 패드이다. 예를 들면, 컴퓨팅 디바이스는, 디스플레이(840)의 상부 상에 통합되는 터치스크린 및 디스플레이(840) 대향면 상의 터치 패드를 구비할 수도 있다.
몇몇 실시형태에서, 터치스크린(842)은 단일 터치의 터치스크린일 수도 있다. 다른 실시형태에서, 터치스크린(842)은 다중 터치의 터치스크린일 수도 있다. 몇몇 실시형태에서, 터치스크린(842)은 별개의 터치, 단일의 터치 제스쳐, 및/또는 다중터치 제스쳐를 검출하도록 구성된다. 이들은 편의상 본원에서 일괄적으로 제스쳐로 칭해진다. 이제, 여러 제스쳐가 설명될 것이다. 이들 제스쳐는 예시적인 것이며 첨부된 특허청구범위의 범위를 제한하도록 의도되지 않는다는 것이 이해되어야 한다. 또한, 설명된 제스쳐, 추가적인 제스쳐, 및/또는 대안적인 제스쳐는, 터치스크린(842)과의 사용을 위해 소프트웨어로 구현될 수도 있다. 이와 같이, 개발자는, 특정한 애플리케이션 프로그램에 고유한 제스쳐를 작성할 수도 있다.
몇몇 실시형태에서, 터치스크린(842)은, 유저가 디스플레이(840) 상에 제시되는 아이템 상에서 터치스크린(842)을 한 번 탭하는 탭 제스쳐를 지원한다. 탭 제스쳐는, 유저가 탭하는 것은 무엇이든 열거나 론칭하는 것을 포함하지만 그러나 이들로 제한되지는 않는 다양한 이유 때문에 사용될 수도 있다. 몇몇 실시형태에서, 터치스크린(842)은, 유저가 디스플레이(840) 상에 제시되는 아이템 상에서 터치스크린(842)을 두 번 탭하는 더블 탭 제스쳐를 지원한다. 더블 탭 제스쳐는, 줌인(zooming in) 또는 줌아웃(zooming out) 단계를 포함하지만 그러나 이들로 제한되지는 않는 다양한 이유 때문에 사용될 수도 있다. 몇몇 실시형태에서, 터치스크린(842)은, 유저가 터치스크린(842)을 탭하고 적어도 미리 정의된 시간 동안 접촉을 유지하는 탭 앤 홀드 제스쳐(tap and hold gesture)를 지원한다. 탭 앤 홀드 제스쳐는, 상황별 메뉴(context-specific menu)를 여는 것을 포함하지만 그러나 이것으로 제한되지는 않는 다양한 이유 때문에 사용될 수도 있다.
상기 제스쳐가 제스쳐를 수행하기 위한 하나 이상의 손가락의 사용을 참조로 설명되었지만, 터치스크린(842)과의 상호작용을 위해, 발가락과 같은 다른 부속지(appendage) 또는 스타일러스와 같은 오브젝트가 사용될 수도 있다. 이와 같이, 상기 제스쳐는 예시적인 것으로 이해되어야 하며 어떤 식으로든 제한하는 것으로 간주되지 않아야 한다.
데이터 I/O 인터페이스 컴포넌트(844)는 컴퓨팅 디바이스에 대한 데이터의 입력 및 컴퓨팅 디바이스로부터의 데이터의 출력을 용이하게 하도록 구성된다. 몇몇 실시형태에서, 데이터 I/O 인터페이스 컴포넌트(844)는, 예를 들면 동기화 동작 목적을 위해, 컴퓨팅 디바이스와 컴퓨터 시스템 사이에 유선 연결성을 제공하도록 구성되는 커넥터를 포함한다. 커넥터는 독점적 커넥터일 수도 있거나 또는 USB, 마이크로 USB, 미니 USB, 또는 등등과 같은 표준화된 커넥터일 수도 있다. 몇몇 실시형태에서, 커넥터는 컴퓨팅 디바이스를, 다른 디바이스 예컨대 도킹 스테이션, 오디오 디바이스(예를 들면, 디지털 뮤직 플레이어), 또는 비디오 디바이스와 도킹시키기 위한 독 커넥터(dock connector)이다.
오디오 I/O 인터페이스 컴포넌트(846)는, 오디오 입력 및/또는 출력 성능을 컴퓨팅 디바이스로 제공하도록 구성된다. 몇몇 실시형태에서, 오디오 I/O 인터페이스 컴포넌트(846)는 오디오 신호를 수집하도록 구성되는 마이크를 포함한다. 몇몇 실시형태에서, 오디오 I/O 인터페이스 컴포넌트(846)는, 헤드폰 또는 다른 외부 스피커에 대한 연결성을 제공하도록 구성되는 헤드폰 잭을 포함한다. 몇몇 실시형태에서, 오디오 I/O 인터페이스 컴포넌트(846)는 오디오 신호의 출력을 위한 스피커를 포함한다. 몇몇 실시형태에서, 오디오 I/O 인터페이스 컴포넌트(846)는 광 오디오 케이블 출력을 포함한다.
비디오 I/O 인터페이스 컴포넌트(848)는, 비디오 입력 및/또는 출력 성능을 컴퓨팅 디바이스로 제공하도록 구성된다. 몇몇 실시형태에서, 비디오 I/O 인터페이스 컴포넌트(848)는 입력으로서 다른 디바이스(예를 들면, DVD 또는 BLURAY(블루레이) 플레이어와 같은 비디오 미디어 플레이어)로부터 비디오를 수신하도록 또는 출력으로서 다른 디바이스(예를 들면, 모니터, 텔레비전, 또는 몇몇 다른 외부 디스플레이)로 비디오를 전송하도록 구성되는 비디오 커넥터를 포함한다. 몇몇 실시형태에서, 비디오 I/O 인터페이스 컴포넌트(848)는, 고선명 멀티미디어 인터페이스(High-Definition Multimedia Interface; "HDMI"), 미니 HDMI, 마이크로 HDMI, 디스플레이포트(DisplayPort), 또는 비디오 컨텐츠를 입/출력하기 위한 독점적 커넥터를 포함한다. 몇몇 실시형태에서, 비디오 I/O 인터페이스 컴포넌트(848) 또는 그 일부는 오디오 I/O 인터페이스(846) 또는 그 일부와 결합된다.
카메라(850)는 스틸 이미지 및/또는 비디오를 캡쳐하도록 구성될 수 있다. 카메라(850)는 이미지를 캡쳐하기 위해 전하 결합 소자(charge coupled device; "CCD") 또는 상보성 금속 산화막 반도체(complementary metal oxide semiconductor; "CMOS") 이미지 센서를 활용할 수도 있다. 몇몇 실시형태에서, 카메라(850)는 저조도 환경에서 사진을 찍는 것을 보조하기 위한 플래시를 포함한다. 카메라(850)에 대한 설정은 하드웨어 또는 소프트웨어 버튼으로서 구현될 수도 있다.
예시되지는 않지만, 하나 이상의 하드웨어 버튼은 컴퓨팅 디바이스 아키텍쳐(800)에 또한 포함될 수도 있다. 하드웨어 버튼은 컴퓨팅 디바이스의 몇몇 동작적 양태를 제어하기 위해 사용될 수도 있다. 하드웨어 버튼은 전용 버튼이거나 또는 다용도 버튼일 수도 있다. 하드웨어 버튼은 기계적일 수도 있거나 또는 센서 기반일 수도 있다.
예시된 전력 컴포넌트(812)는 하나 이상의 배터리(852)를 포함하는데, 하나 이상의 배터리(852)는 배터리 게이지(854)에 연결될 수 있다. 배터리(852)는 충전가능할 수도 있거나 1회용일 수도 있다. 충전가능한 배터리 타입은, 리튬 폴리머, 리튬 이온, 니켈 카드뮴, 및 니켈 수소(nickel metal hydride)를 포함하지만 그러나 이들로 제한되지는 않는다. 배터리(852)의 각각은 하나 이상의 셀로 이루어질 수도 있다.
배터리 게이지(854)는 전류, 전압 및 온도와 같은 배터리 파라미터를 측정하도록 구성될 수 있다. 몇몇 실시형태에서, 배터리 게이지(854)는, 소정의 오차율 내에서 잔여 수명을 예측하기 위해, 배터리의 방전율, 온도, 연령, 및 다른 인자의 영향을 측정하도록 구성된다. 몇몇 실시형태에서, 배터리 게이지(854)는, 유용한 전력 관리 데이터를 유저에게 제시하기 위해 측정치를 활용하도록 구성되는 애플리케이션 프로그램에게 측정치를 제공한다. 전력 관리 데이터는 사용되는 배터리의 백분율, 잔여 배터리의 백분율, 배터리 상태, 남은 시간, 남은 용량(예를 들면, 와트시(watt hour) 단위), 전류 인출(current draw), 및 전압 중 하나 이상을 포함할 수도 있다.
전력 컴포넌트(812)는 또한 전력 커넥터를 포함할 수도 있는데, 전력 커넥터는 상기 언급된 I/O 컴포넌트(810) 중 하나 이상과 결합될 수도 있다. 전력 컴포넌트(812)는 전력 I/O 컴포넌트(도시되지 않음)를 통해 외부 전력 시스템 또는 충전용 기기와 인터페이싱할 수도 있다.
상기에 기초하여, 테마 정보를 호스트 애플리케이션으로부터 하나 이상의 호스트 확장자로 전파하기 위한 기술이 본원에서 개시되었다는 것이 이해되어야 한다. 본원에서 제시되는 주제가 컴퓨터 구조적 피쳐, 방법론적이며 변형적인 액트(methodological and transformative act), 특정 컴퓨팅 머신류(machinery), 및 컴퓨터 판독가능 매체에 고유한 언어로 설명되었지만, 첨부된 특허청구범위에서 정의되는 본 발명은 본원에서 설명되는 그 특정 피쳐, 액트, 또는 매체로 반드시 제한되지는 않는다는 것이 이해되어야 한다. 대신, 특정 피쳐, 액트, 및 매체는 특허청구범위를 구현하는 예시적인 형태로서 개시된다.
상기에서 설명되는 주제는 단지 예시로서만 제공되며 제한하는 것으로 간주되어선 안된다. 예시되고 설명되는 예시적인 실시형태 및 애플리케이션을 따르지 않으면서, 그리고 하기의 특허청구범위에서 설명되는 본 개시의 진정한 취지와 범위를 벗어나지 않으면서, 본원에서 설명되는 주제에 대해 다양한 수정 및 변경이 이루어질 수도 있다.

Claims (10)

  1. 테마 변경 이벤트를 호스트 애플리케이션으로부터 호스트 확장자(host extension)로 전파하기(propagate) 위한 컴퓨터 구현 방법에 있어서,
    테마 정의를 상기 호스트 애플리케이션으로부터 상기 호스트 확장자로 제공하는 단계 ― 상기 호스트 확장자는, 상기 호스트 확장자에 의해 제시되는 하나 이상의 유저 인터페이스(user interface; UI) 엘리먼트를 업데이트하기 위해 상기 테마 정의를 활용함 ― ;
    상기 호스트 애플리케이션을 통해 테마 변경 이벤트를 검출하는 단계; 및
    상기 테마 변경 이벤트를 검출하는 것에 응답하여,
    업데이트된 테마 정의를 생성하기 위해 상기 테마 변경 이벤트에 기초하여 상기 테마 정의를 업데이트하는 단계, 및
    상기 테마 변경 이벤트의 통지를 상기 호스트 애플리케이션으로부터 상기 호스트 확장자로 제공하는 단계
    를 포함하고,
    상기 호스트 확장자는, 상기 호스트 확장자에 의해 제시되는 상기 하나 이상의 UI 엘리먼트를 업데이트하기 위해 상기 업데이트된 테마 정의를 활용하는 것인, 컴퓨터 구현 방법.
  2. 제1항에 있어서,
    상기 테마 정의는, 상기 호스트 애플리케이션에 의해 제공되는 하나 이상의 UI 엘리먼트에 대한 테마를 정의하는 애플리케이션 레벨 테마를 포함하는 것인, 컴퓨터 구현 방법.
  3. 제1항에 있어서,
    상기 테마 정의는, 다큐먼트 컨텐츠에 의해 정의되는 하나 이상의 UI 엘리먼트에 대한 테마를 정의하는 다큐먼트 레벨 테마를 포함하는 것인, 컴퓨터 구현 방법.
  4. 제1항에 있어서,
    상기 테마 정의는 메타데이터를 활용하여 정의되는 것인, 컴퓨터 구현 방법.
  5. 제1항에 있어서,
    상기 테마 변경 이벤트는 되돌리기(undo) 커맨드, 슬라이드 변경 동작, 및 새로운 테마에 대한 선택의 수신 중 하나 이상을 포함하는 것인, 컴퓨터 구현 방법.
  6. 컴퓨터 실행가능 명령어가 저장된 컴퓨터 판독가능 저장 매체에 있어서,
    상기 컴퓨터 실행가능 명령어는 실행시 컴퓨터로 하여금:
    테마 정의를 호스트 애플리케이션으로부터 호스트 확장자로 제공하고 ― 상기 호스트 확장자는, 상기 호스트 확장자에 의해 제시되는 하나 이상의 유저 인터페이스(UI) 엘리먼트를 업데이트하기 위해 상기 테마 정의를 활용함 ― ;
    상기 호스트 애플리케이션을 통해 테마 변경 이벤트를 검출하고;
    상기 테마 변경 이벤트를 검출하는 것에 응답하여,
    업데이트된 테마 정의를 생성하기 위해 상기 테마 변경 이벤트에 기초하여 상기 테마 정의를 업데이트하고,
    상기 테마 변경 이벤트의 통지를 상기 호스트 애플리케이션으로부터 상기 호스트 확장자로 제공하게 하며,
    상기 호스트 확장자는, 상기 호스트 확장자에 의해 제시되는 상기 하나 이상의 UI 엘리먼트를 업데이트하기 위해 상기 업데이트된 테마 정의를 활용하는 것인, 컴퓨터 판독가능 저장 매체.
  7. 제6항에 있어서,
    상기 테마 정의는, 상기 호스트 애플리케이션에 의해 제공되는 복수의 UI 엘리먼트에 대한 테마를 정의하는 애플리케이션 레벨 테마를 포함하는 것인, 컴퓨터 판독가능 저장 매체.
  8. 제7항에 있어서,
    상기 테마 정의는, 다큐먼트 컨텐츠에 의해 제공되는 하나 이상의 UI 엘리먼트에 대한 테마를 정의하는 다큐먼트 레벨 테마를 더 포함하는 것인, 컴퓨터 판독가능 저장 매체.
  9. 제8항에 있어서,
    상기 호스트 확장자에 의해 제시되는 상기 하나 이상의 UI 엘리먼트는, 상기 다큐먼트 컨텐츠에 의해 정의되는 UI 엘리먼트를 포함하는 것인, 컴퓨터 판독가능 저장 매체.
  10. 테마 변경 이벤트를 호스트 애플리케이션으로부터 호스트 확장자로 전파하기 위한 장치에 있어서,
    프로세서;
    상기 프로세서에 통신가능하게 커플링되는 메모리; 및
    상기 메모리로부터 상기 프로세서에서 실행되는 호스트 애플리케이션
    을 포함하며,
    상기 호스트 애플리케이션은, 상기 프로세서에 의한 실행시 상기 장치로 하여금,
    상기 호스트 애플리케이션에 의해 제공되는 복수의 유저 인터페이스(UI) 엘리먼트에 대한 테마를 정의하는 애플리케이션 레벨 테마 및 상기 호스트 애플리케이션으로부터의 다큐먼트에 의해 제공되는 복수의 UI 엘리먼트에 대한 테마를 정의하는 다큐먼트 레벨 테마를 포함하는 테마 정의를 상기 호스트 확장자에 제공하고 ― 상기 호스트 확장자는, 상기 호스트 확장자에 의해 제시되는 하나 이상의 UI 엘리먼트를 상기 호스트 애플리케이션 및 상기 다큐먼트와 일치하게 보이게 만들도록 상기 호스트 확장자에 의해 제시되는 하나 이상의 UI 엘리먼트를 업데이트하기 위해, 상기 테마 정의를 활용함 ― ;
    상기 호스트 애플리케이션을 통해 테마 변경 이벤트를 검출하고;
    상기 테마 변경 이벤트를 검출하는 것에 응답하여,
    업데이트된 테마 정의를 생성하기 위해 상기 테마 변경 이벤트에 기초하여 상기 테마 정의를 업데이트하고,
    상기 테마 변경 이벤트의 통지를 상기 호스트 애플리케이션으로부터 상기 호스트 확장자로 제공하게 하고,
    상기 호스트 확장자는, 상기 호스트 확장자에 의해 제시되는 상기 하나 이상의 UI 엘리먼트를 상기 호스트 애플리케이션 및 상기 다큐먼트와 일치하게 보이게 만들도록 상기 호스트 확장자에 의해 제시되는 상기 하나 이상의 UI 엘리먼트를 업데이트하기 위해, 상기 업데이트된 테마 정의를 활용하는 것인, 장치.
KR1020167025996A 2014-02-24 2015-02-20 호스트 애플리케이션으로부터 호스트 확장자로의 테마 정보의 전파 KR20160124868A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201461943927P 2014-02-24 2014-02-24
US61/943,927 2014-02-24
US14/266,436 US9760255B2 (en) 2014-02-24 2014-04-30 Propagating theming information from host applications to host extensions
US14/266,436 2014-04-30
PCT/US2015/016725 WO2015127152A1 (en) 2014-02-24 2015-02-20 Propagating theming information from host applications to host extensions

Publications (1)

Publication Number Publication Date
KR20160124868A true KR20160124868A (ko) 2016-10-28

Family

ID=52633644

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167025996A KR20160124868A (ko) 2014-02-24 2015-02-20 호스트 애플리케이션으로부터 호스트 확장자로의 테마 정보의 전파

Country Status (5)

Country Link
US (1) US9760255B2 (ko)
EP (1) EP3111319A1 (ko)
KR (1) KR20160124868A (ko)
CN (1) CN106062709A (ko)
WO (1) WO2015127152A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104714826B (zh) * 2015-03-23 2018-10-26 小米科技有限责任公司 应用主题的加载方法及装置
CN110347454A (zh) * 2018-04-08 2019-10-18 珠海市魅族科技有限公司 应用程序主题设定方法、终端设备控制方法及装置、终端设备及计算机可读存储介质
CN109240690B (zh) * 2018-08-15 2021-06-18 创新先进技术有限公司 一种数据表单的界面生成方法和装置
CN111460822B (zh) * 2020-03-27 2024-02-27 北京百度网讯科技有限公司 主题扩展的方法、装置、设备和存储介质
CN111796896A (zh) * 2020-06-29 2020-10-20 京东方科技集团股份有限公司 应用页面的主题切换方法及相关设备

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6873337B1 (en) * 2000-04-06 2005-03-29 Microsoft Corporation Application programming interface for changing the visual style
US7137066B2 (en) * 2000-04-06 2006-11-14 Microsoft Corporation Binary cache file format for themeing the visual appearance of a computer system
US7028262B2 (en) 2000-12-29 2006-04-11 International Business Machines Corporation Method and system for designing a theme and associating it with a collaboration space user interface
US7814423B2 (en) 2003-02-28 2010-10-12 Bea Systems, Inc. Method for providing a graphical user interface
US20060015804A1 (en) * 2004-07-15 2006-01-19 Microsoft Corporation Method and system for presenting editable spreadsheet page layout view
US7809582B2 (en) * 2005-03-10 2010-10-05 Microsoft Corporation System and method for providing a consistent visual appearance to output generated by multiple applications
US20060230105A1 (en) 2005-04-06 2006-10-12 Ericom Software B 2001 Ltd Method of providing a remote desktop session with the same look and feel as a local desktop
US8543931B2 (en) 2005-06-07 2013-09-24 Apple Inc. Preview including theme based installation of user interface elements in a display environment
US7596747B2 (en) 2005-07-27 2009-09-29 Microsoft Corporation Incrementally parsing style sheets
WO2007014788A1 (en) 2005-07-28 2007-02-08 International Business Machines Corporation Using templates for ensuring visual consistency among portlets
US8010970B2 (en) 2007-04-10 2011-08-30 Microsoft Corporation Developing controls for outlook add-ins
CN102138122A (zh) 2008-08-29 2011-07-27 惠普开发有限公司 组合壳应用和子应用的界面
US20110010244A1 (en) * 2009-07-10 2011-01-13 Microsoft Corporation Sponsored application launcher suggestions
US9330077B2 (en) * 2009-11-18 2016-05-03 Google Inc. Dynamic image generation for customizable user interfaces
CN101866287A (zh) 2010-06-09 2010-10-20 中兴通讯股份有限公司 一种widget系统外观设置方法和装置
US8930824B2 (en) * 2010-07-07 2015-01-06 Apollo Education Group, Inc. Facilitating propagation of user interface patterns or themes
CA2772963C (en) 2011-03-31 2016-02-16 Accenture Global Services Limited Multilayer style sheet approach and system
KR101819508B1 (ko) 2011-07-25 2018-03-02 삼성전자주식회사 휴대용 단말기에서 어플리케이션의 테마를 변경하기 위한 장치 및 방법

Also Published As

Publication number Publication date
US9760255B2 (en) 2017-09-12
CN106062709A (zh) 2016-10-26
US20150242080A1 (en) 2015-08-27
WO2015127152A1 (en) 2015-08-27
EP3111319A1 (en) 2017-01-04

Similar Documents

Publication Publication Date Title
US10521251B2 (en) Hosting application experiences within storage service viewers
US9979732B2 (en) Contextually aware sharing recommendations
KR102050127B1 (ko) 첨부 노트를 갖는 상호작용 슬라이드 표현을 위한 읽기 모드
US10476931B2 (en) Delegation of rendering between a web application and a native application
US20160092406A1 (en) Inferring Layout Intent
US10909310B2 (en) Assistive graphical user interface for preserving document layout while improving readability
US11209805B2 (en) Machine learning system for adjusting operational characteristics of a computing system based upon HID activity
US20170004113A1 (en) Seamless Font Updating
US9760255B2 (en) Propagating theming information from host applications to host extensions
US20130177295A1 (en) Enabling copy and paste functionality for videos and other media content
US10616158B2 (en) Instant delivery of messages
CN107810489B (zh) 应用与设备之间的无缝转换
US20180034795A1 (en) Simplified Configuration of Computing Devices for Use with Multiple Network Services
EP3022651B1 (en) Context affinity in a remote scripting environment
US10444018B2 (en) Computer-implemented method to test the sensitivity of a sensor for detecting movement of a tracking device within an established frame of reference of a moving platform