KR101031700B1 - 컴퓨터 플랫폼에 대한 프로그래밍 인터페이스 - Google Patents

컴퓨터 플랫폼에 대한 프로그래밍 인터페이스 Download PDF

Info

Publication number
KR101031700B1
KR101031700B1 KR1020040072676A KR20040072676A KR101031700B1 KR 101031700 B1 KR101031700 B1 KR 101031700B1 KR 1020040072676 A KR1020040072676 A KR 1020040072676A KR 20040072676 A KR20040072676 A KR 20040072676A KR 101031700 B1 KR101031700 B1 KR 101031700B1
Authority
KR
South Korea
Prior art keywords
class
data
delete delete
context
analysis
Prior art date
Application number
KR1020040072676A
Other languages
English (en)
Other versions
KR20050039549A (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 KR20050039549A publication Critical patent/KR20050039549A/ko
Application granted granted Critical
Publication of KR101031700B1 publication Critical patent/KR101031700B1/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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)
  • Input From Keyboards Or The Like (AREA)
  • Digital Computer Display Output (AREA)

Abstract

프로그래밍 인터페이스는 애플리케이션, 문서, 매체 프리젠테이션 및 기타 콘텐츠를 생성하기 위한 기능을 제공한다. 이러한 기능들은 개발자가 오퍼레이팅 시스템, 객체 모델 서비스, 또는 다른 시스템 또는 서비스로부터 서비스를 받을 수 있도록 해준다.
Figure R1020040072676
컴퓨터 판독가능 매체, 프로그래밍 인터페이스, 파일 시스템

Description

컴퓨터 플랫폼에 대한 프로그래밍 인터페이스{PROGRAMMING INTERFACE FOR A COMPUTER FLATFORM}
도 1은 클라이언트가 종래의 프로토콜을 이용하여 인터넷을 통해 웹 서비스에 액세스하는 네트워크 아키텍쳐를 나타내는 도면.
도 2는 애플리케이션 프로그램 인터페이스(API)를 포함하는 네트워크 플랫폼의 소프트웨어 아키텍쳐의 블록도.
도 3은 API에 의해 지원되는 프리젠테이션 서브시스템 및 다양한 API 함수의 함수 클래스의 블록도.
도 4는 소프트웨어 아키텍쳐의 전부 또는 일부를 실행할 수 있는 예시적인 컴퓨터의 블록도.
도 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 및 16은 프로그래밍 인터페이스의 다양한 예시 구현을 나타내는 도면.
<도면의 주요 부분에 대한 부호의 설명>
140 - CLS(common language specification)
142 - API(application program interface)
144 - CLR(common language runtime)
146 - 오퍼레이팅 시스템/객체 모델 서비스
200 - 프리젠테이션 서브시스템
202 - 쉘
204 - 웹 서비스
206 - 파일 시스템
220 - 프로그램밍 툴
<발명이 속하는 기술분야>
본 발명은 소프트웨어 및 소프트웨어의 개발에 관한 것이다. 보다 상세히는, 본 발명은 컴퓨터 하드웨어 및 애플리케이션 프로그램에 의한 소프트웨어 플랫폼의 사용을 용이하게 하는 프로그래밍 인터페이스에 관한 것이다.
<발명이 속하는 기술분야의 종래기술>
초기에, 컴퓨터 소프트웨어는 "오퍼레이팅 시스템" 소프트웨어나 "애플리케이션" 소프트웨어로 분류되었다. 일반적으로 말하면, 애플리케이션은, 수학식을 풀거나 워드 프로세싱을 지원하는 등의 컴퓨터 사용자를 위한 특정 태스크를 수행하도록 의도된 소프트웨어이다. 오퍼레이팅 시스템은 컴퓨터 하드웨어를 관리 및 제어하는 소프트웨어이다. 오퍼레이팅 시스템의 목적은 애플리케이션 프로그래머가 컴퓨터 리소스를 이용할 수 있게 하는 한편, 이와 동시에, 하드웨어를 실제로 제어하는 데 불가피한 복잡성을 보이지 않게 하는 것이다.
오퍼레이팅 시스템은, 총괄적으로 애플리케이션 프로그램 인터페이스 즉, API라고 알려진 함수들을 통해서 리소스들을 이용할 수 있게 한다. 또한, API라는 용어는 이러한 함수들을 중 오직 하나만을 참조하는 데 사용되기도 한다. 이 함수들은 흔히, 어떤 리소스나 서비스가 애플리케이션 프로그래머에게 제공되는지에 준하여 분류된다. 애플리케이션 소프트웨어는 개개의 API 함수들을 호출함으로써 리소스를 요청한다. 또한, API 함수들은, 어떤 메시지 및 정보가 오퍼레이팅 시스템에 의해 제공되어 애플리케이션 소프트웨어로 회신되는지에 대한 수단으로서 역할을 한다.
하드웨어에서의 변천 외에도, 오퍼레이팅 시스템 소프트웨어의 발전을 이끄는 또 다른 요인은 애플리케이션 소프트웨어 개발을 간단하면서도 신속하게 하고자 하는 요구에 있었다. 애플리케이션 소프트웨어 개발은 위압적인 작업일 수 있어서, 때로는 수백만 라인의 코드를 가진 매우 복잡한 프로그램을 짜는 데 수년의 개발 시간을 필요로 하기도 한다. 마이크로소프트 윈도우즈
Figure 112004041222076-pat00001
오퍼레이팅 시스템의 다양한 버전과 같이 대중화된 오퍼레이팅 시스템의 경우, 애플리케이션 소프트웨어 개발자는 이러한 오퍼레이팅 시스템을 이용하는 해마다 수천개의 다양한 애플리케이션들을 작성한다. 많은 다양한 애플리케이션 개발자들을 지원할 수 있도록 일관성 있고 사용하기에 알맞은 오퍼레이팅 시스템 기반이 요구된다.
흔히, 오퍼레이팅 시스템을 더욱 복잡하게 만듦으로써, 애플리케이션 소프트웨어의 개발이 보다 단순화될 수 있다. 즉, 한 함수가 여러 다른 애플리케이션 프로그램들에게 유용한 것일 경우, 수십명의 소프트웨어 개발자가 이 함수를 수십개 의 다른 애플리케이션들에 포함시켜서 이 함수를 수십 번 작성하는 것보다는, 이 함수를 오퍼레이팅 시스템에 포함시켜서 이 함수를 한 번만 작성하는 것이 보다 바람직할 것이다. 이러한 방식으로, 오퍼레이팅 시스템이 복수의 애플리케이션에서 요구되는 광범위한 공통의 함수를 지원한다면, 애플리케이션 소프트웨어 개발 비용 및 시간이 상당히 절감될 수 있다.
오퍼레이팅 시스템과 애플리케이션 소프트웨어의 구별에 관계없이, 유용한 오퍼레이팅 시스템이라면, 오퍼레이팅 시스템과 컴퓨터 하드웨어와 애플리케이션 소프트웨어 간의 API가 오퍼레이팅 시스템 자체의 효율적인 내부 동작만큼이나 중요하다는 것은 명백하다.
지난 몇년 동안, 일반적인 네트워킹 기술인 인터넷의 채용은 컴퓨터 소프트웨어 개발자들의 전망을 바꾸었다. 전통적으로, 소프트웨어 개발자들은 근거리 통신망(LAN)을 통해 제한된 수의 다른 컴퓨터들과 접속된 자립형 데스크탑 컴퓨터 또는 LAN 기반 컴퓨터를 위한 단일 사이트 소프트웨어 애플리케이션에 집중하였다. 그러한 소프트웨어 애플리케이션은 통상적으로 “수축 포장(shrink wrapped)” 제품으로 지칭되었는데, 이는 소프트웨어가 수축 포장 패키지로 마케팅되고 판매되었기 때문이다. 애플리케이션들은 컴퓨터의 기반 오퍼레이팅 시스템에 액세스하기 위하여 잘 정의된 API를 이용하였다.
인터넷이 발달하여 광범위하게 이용됨에 따라, 산업은 월드 와이드 웹(간단히 웹) 상의 다양한 사이트에서의 호스팅 애플리케이션의 힘을 인식하기 시작하였 다. 네트워킹 세계에서, 임의의 장소에 있는 클라이언트는 다양한 위치에서 호스트되는 서버 기반 애플리케이션에게 요구를 제출하여 바로 응답을 받을 수 있다. 그러나, 이러한 웹 애플리케이션들은 통상적으로 자립형 컴퓨팅 기계들이나 로컬 네트워킹된 컴퓨터들을 위해 초기에 개발된 동일한 오퍼레이팅 시스템 플랫폼을 이용하여 개발되었다. 불행하게도, 이들 애플리케이션은 어떤 경우에는 분산 컴퓨팅 체제로 적절히 전이되지 못한다. 기반 플랫폼은 무제한 수의 상호접속된 컴퓨터들을 지원하는 아이디어로 간단히 구성되지 못했다.
인터넷에 의해 주도되고 있는 분산 컴퓨팅 환경으로의 전이를 수용하기 위하여, 마이크로소프트 사는 “.NET” 프레임워크(닷넷으로 읽음)으로 알려진 네트워크 소프트웨어 플랫폼을 개발하였다. Microsoft .NET은 사람, 정보, 시스템 및 장치들을 연결하기 위한 소프트웨어이다. 플랫폼은 개발자가 인터넷을 통해 실행할 웹 서비스를 생성할 수 있게 해준다. 이러한 동적 전이는 마이크로소프트의 .NETTM 프레임워크를 위한 API 함수 집합에 의해 달성되었다.
.NETTM 프레임워크의 이용이 점차 일반화됨에 따라, 플랫폼의 효율 및/또는 성능을 향상시키는 방법이 검증되어 왔다. 본 발명자는 그러한 향상된 효율 및/또는 성능을 제공하는 독특한 API 함수 집합을 개발하였다.
프로그래밍 인터페이스는 애플리케이션, 문서, 매체 프리젠테이션 및 기타 콘텐츠를 생성하기 위한 기능을 제공한다. 이러한 기능들은 개발자가 오퍼레이팅 시스템, 객체 모델 서비스, 또는 다른 시스템 또는 서비스로부터 서비스를 받을 수 있도록 해준다.
본 발명은 개발자가 웹 애플리케이션 및 서비스를 구축할 수 있는 네트워크 플랫폼에 대한 애플리케이션 프로그램 인터페이스(API)에 관한 것이다. 보다 상세하게는, 마이크로소프트 사에 의해 만들어진 .NET 프레임워크와 같은 네트워크 플랫폼을 이용하는 오퍼레이팅 시스템에 대한 예시적인 API가 기술된다. .NET 프레임워크는 분산 컴퓨팅 환경에서 구현되는 웹 서비스 및 웹 애플리케이션을 위한 소프트웨어 플랫폼이다. 이는 개방된 통신 표준을 이용하여 특정 업무를 위해 공동 작업을 행하고 있는 느슨하게 연결된 웹 서비스들 사이에서 통신하기 위한 차세대 인터넷 컴퓨팅을 나타낸다.
기술된 구현에 있어서, 네트워크 플랫폼은 데이터를 기술하기 위해 개방 표준인 확장 마크업 언어(XML)를 사용한다. XML은 월드 와이드 웹 컨소시엄(W3C)에 의해 관리된다. XML은 웹 페이지 및 비지니스 투 비지니스 문서 상의 데이터 요소를 정의하는 데 사용된다. XML은 HTML과 유사한 태그 구조를 사용하지만, HTML은 요소들이 어떻게 디스플레이되는지를 정의하는 반면, XML은 요소들이 무엇을 포함하는지를 정의한다. HTML은 미리 정해진 태그를 사용하지만, XML은 태그들이 페이지의 개발자에 의해 정의되는 것을 허용한다. 따라서, 가상적으로 임의의 데이터 항목들이 식별될 수 있으며, 웹 페이지가 데이터베이스 레코드처럼 기능할 수 있게 한다. XML, 및 심플 객체 액세스 프로토콜(SOAP)과 같은 다른 개방 프로토콜의 사용을 통해, 네트워크 플랫폼은 사용자의 요구에 맞춰질 수 있는 광범위한 서비스의 통합을 허용한다. 여기에 설명되는 실시예들은 XML 및 다른 개방 표준과 관련하여 설명되지만, 이것은 청구되는 발명의 동작에 대해서는 요구되지 않는다.
여기에 사용되는 용어, 애플리케이션 프로그램 인터페이스 또는 API는 메쏘드 또는 함수 호출, 원격 호출(예컨대 프록시, 스터브 관계) 및 SOAP/XML 호출을 이용하는 전통적인 인터페이스를 포함한다.
아래의 네임스페이스(namespace) 설명의 일부에서 소정의 클래스, 인터페이스, 열거(enumeration) 및 델리게이트(delegate)에 대한 설명은 기재되지 않는다.
예시적인 네크워크 환경
도 1은 .NET™ Framework 등의 네트워크 플랫폼이 구현될 수 있는 네트워크 환경(100)을 도시한다. 이 네트워크 환경(100)은 전형적인 웹 서비스들(102(1), …, 102(N))을 포함하고, 이 웹 서비스들은 네트워크(104)(예컨대, 인터넷)를 통해 액세스될 수 있는 서비스를 제공한다. 웹 서비스(일반적으로, 참조번호 102로 언급함)는 프로그램 가능한 애플리케이션 컴포넌트이다. 이 컴포넌트는 재사용 가능하며, RPC(Romote Procedure Call)나 객체 브로커 타입(object broker type) 기술과 같이 네트워크를 통해 웹 서비스와 상호 작용하는 그 외 다른 수단이 사용될 수도 있지만 전형적으로는 XML, SOAP, WAP(wireless application protocol), HTTP(hypertext transport protocol), 및 SMTP(simple mail transfer protocol) 등의 산업 표준 웹 프로토콜을 사용하여 네트워크(104)를 통해 프로그램으로 상호 동작한다. 웹 서비스는 자기 기술적(self-describing)일 수 있으며, 흔히 메시지의 포맷과 순서의 형태로 정의되기도 한다.
웹 서비스(102)는 (통신 링크(106)로 표시되어 있는 바와 같이) 다른 서비스에 의해 직접 액세스되거나, (통신 링크(112 및 114)로 표시되어 있는 바와 같이) 웹 애플리케이션(110) 등의 소프트웨어 애플리케이션에 의해 직접 액세스될 수 있다. 웹 서비스(102) 각각은, 특정 서비스에 관한 요청을 처리하는 소프트웨어를 실행하는 하나 이상의 서버를 포함하는 것으로서 도시된 것이다. 이러한 웹 서비스는 흔히, 요청에 대해 회신할 정보를 저장하는 데이터베이스를 보유한다. 웹 서비스는 다양한 각종 서비스들 중 임의의 하나를 수행하도록 구성될 수 있다. 웹 서비스의 예로는, 로그인 인증, 통지, 데이터베이스 저장, 주가 고시, 위치 디렉토리, 지도, 음악, 전자 지갑, 캘린더/스케줄러, 전화 목록, 뉴스 및 정보, 게임, 발권 등이 포함된다. 웹 서비스들은 지능적인 상호 작용형 지식을 구축할 수 있도록, 서로 결합될 수 있고, 다른 애플리케이션과도 결합될 수 있다.
네트워크 환경(100)은 전형적인 클라이언트 장치들(120(1), 120(2), 120(3), 120(4), …, 120(M))도 포함한다. 클라이언트 장치는 (통신 링크(122)로 표시되어 있는 바와 같이) 웹 서비스(102) 및/또는 (통신 링크(124, 126, 및 128)로 표시되어 있는 바와 같이) 웹 애플리케이션(110)을 이용한다. 클라이언트 장치들은, 클라이언트 장치들(120(3) 및 120(4)) 간의 예시적인 XML 링크(130)로 표시되어 있는 바와 같이, 표준 프로토콜을 사용하여 마찬가지로 서로 통신할 수 있다.
클라이언트 장치(일반적으로, 참조번호 120으로 언급함)는 여러 다양한 방식으로 구현될 수 있다. 가능한 클라이언트 장치 구현예로는, 휴대용 컴퓨터, 고정형 컴퓨터, 테블릿 PC, 텔레비전/셋탑박스, 무선 통신 장치, PDA(personal digital assistant), 게임 콘솔, 프린터, 사진 복사기, 및 기타 스마트 장치가 포함된다.
웹 애플리케이션(110)은 네트워크 플랫폼 상에서 실행되도록 설계된 애플리케이션으로서, 클라이언트(120)로부터의 요청을 처리하고 서비스할 때, 웹 서비스(102)를 활용할 수 있다. 웹 애플리케이션(110)은, 프로그래밍 프레임워크(132)의 최상부에서(하나 이상의 서버(134)나 그 외 다른 컴퓨터 시스템 상에서) 실행되는 하나 이상의 소프트웨어 애플리케이션(130)으로 이루어져 있다. 사실상 웹 애플리케이션(110)의 일부는 하나 이상의 클라이언트(120)에 상주할 수 있음을 유의한다. 대안으로, 웹 애플리케이션(110)은 자신의 태스크를 실제로 수행하기 위해서 클라이언트(120) 상의 다른 소프트웨어와 공동 작업할 수 있다.
프로그래밍 프레임워크(132)는 애플리케이션 개발자가 개발한 애플리케이션과 서비스를 지원하는 구조로 되어 있다. 프로그래밍 프레임워크는, 다국어를 지원하여, 다국어의 개발 및 심리스 통합(seamless integration)을 가능케 한다. 프로그래밍 프레임워크는 SOAP 등의 개방형 프로토콜을 지원하며, 기초적인 오퍼레이팅 시스템과 객체 모델 서비스를 캡슐화한다. 프로그래밍 프레임워크는 복수의 프로그래밍 언어에 의한 안정성 있고(robust) 보안성 있는(secure) 실행 환경을 제공하고, 보안성 있고 통합된 클래스 라이브러리를 제공한다.
프로그래밍 프레임워크(132)는, API 계층(142), CLR(common language runtime) 계층(144), 및 오퍼레이팅 시스템/서비스 계층(146)을 포함하는 다계층 아키텍처로 되어 있다. 이러한 계층적 아키텍처에 의하면, 프로그래밍 프레임워크의 다른 부분들에는 큰 영향을 주지 않으면서, 여러 계층들을 갱신하고 수정할 수 가 있다. CLS(common language specification)(140)에 의하면, 여러 언어의 설계자들이, 기초적인 라이브러리 함수를 액세스할 수 있는 코드를 작성할 수가 있다. CLS(140)는 언어 설계자와 라이브러리 설계자 간의 (언어 상호 운용 가능성(language interoperability)을 향상시키는 데 사용될 수 있는) 약정(contract)으로서 기능한다. CLS를 준수하면, 한 언어로 작성된 라이브러리는 다른 언어로 작성된 코드 모듈에 직접 액세스할 수 있어, 한 언어로 작성된 코드 모듈과 다른 언어로 작성된 코드 모듈 간의 심리스 통합을 달성할 수 있다. CLS의 한 구현예의 상세는 ECMA TC39/TG3의 참가자들이 창설한 ECMA 표준에 기술되어 있다. 이는, ECMA 웹 사이트(www.ecma.ch)를 참조할 수 있다.
API 계층(142)은, 애플리케이션(130)이 오퍼레이팅 시스템/서비스 계층(146)에서 제공하는 리소스와 서비스를 액세스하기 위해 호출할 수 있는 함수들의 그룹을 제공한다. 네트워크 플랫폼용의 API 함수들이 제공됨으로써, 애플리케이션 개발자는, 네트워크 리소스들이 실제로 어떻게 동작하는지 혹은 이용 가능한지에 대한 복잡한 상호작업(interworking)을 이해할 필요없이, 네트워크 리소스 및 기타 웹 서비스를 충분히 사용하는 분산형 컴퓨팅 시스템용 웹 애플리케이션을 제작할 수 있다. 또한, 웹 애플리케이션은 임의의 개수의 프로그래밍 언어로 작성될 수 있고, CLR 계층(144)에서 지원하는 중간 언어(intermediate language)로 번역될 수 있다. 이러한 방식으로, API 계층(142)은 광범위하고 다양한 애플리케이션들에 대한 수단을 제공할 수 있다.
부가적으로, 프로그래밍 프레임워크(132)는, 프로그래밍 프레임워크를 호스 팅하는 서버(134)로부터 원격으로 실행되는 원격 애플리케이션이 발호한 API 호출을 지원하도록 구성될 수 있다. 클라이언트들(120(3) 및 120(4))에 각각 상주하는 전형적인 애플리케이션들(148(1) 및 148(2))은 네트워크(104)를 통해서 API 계층(142)에 직접 또는 간접적으로 호출을 발호하여 API 함수를 사용할 수 있다.
또한, 프로그래밍 프레임워크는 클라이언트 장치(120)에 구현될 수 있다. 클라이언트 장치(120(3))는 프로그래밍 프레임워크(150)가 클라이언트에서 구현된 상황을 나타낸다. 이 프레임워크는 서버 기반의 프레임워크(132)와 동일한 것일 수도 있고, 클라이언트 용도에 따라 변경된 것일 수 있다. 프레임워크(150)는 프레임워크(132)의 API 계층(142)과 유사한(또는 동일한) API 계층을 포함한다. 대안으로, 클라이언트 기반의 프레임워크는 클라이언트가 제한적인 또는 전용의 기능을 가진 장치(예컨대, 셀룰러 폰, PDA, 핸드헬드 컴퓨터, 또는 기타 통신/컴퓨팅 장치)인 경우로 한정될 수 있다.
개발자의 프로그래밍 프레임워크
도 2는 프로그래밍 프레임워크(132)를 보다 상세히 도시하는 도면이다. CLS 계층(140)은 각종 언어들로 작성된 애플리케이션들(130(1), 130(2), 130(3), 130(4), …, 130(K))을 지원한다. 이 애플리케이션 언어들로는 Visual Basic, C++, C#, COBOL, Jscript, Perl, Eiffel, Python 등이 포함된다. CLS 계층(140)은, (후술되는 특징들의 서브셋트 또는 특징들에 관한 규칙에 따르는 경우) 각종 언어들로 정보 통신 가능케 하는 특징들의 서브셋트 또는 특징들에 관한 규칙들을 기술한다. 예를 들어, 몇몇 언어들은, CLR 계층(144)에서는 지원할 수 있는 소정 의 타입(예컨대, "int*" 타입)을 지원하지 않는다. 이러한 경우, CLS 계층(140)은 상기 타입을 포함하지 않는다. 한편, 모든 또는 대부분의 언어들이 지원하는 타입(예컨대, "int[]" 타입)은 CLS 계층(140)에 포함되어 있어, 라이브러리 개발자는 그 타입을 자유롭게 사용하며 사용 언어들이 그 타입을 핸들링할 수 있음을 확신할 수가 있다. 이와 같은 정보 통신 능력에 의해, 한 언어로 작성된 코드 모듈과 다른 언어로 맞성된 코드 모듈 간의 심리스 통합이 달성된다. 특정한 태스크에 대해 특정 언어가 매우 잘 맞으므로, 언어들 간의 심리스 통합에 의하면, 개발자는 특정 코드 모듈을, 여러 언어들로 작성된 모듈들과 함께 사용할 수 있다는 장점을 이용하면서, 특정 코드 모듈에 대해서는 특정 언어를 선택할 수가 있다. CLR 계층(144)은 교차 언어 상속성(cross language inheritance)을 이용하여 심리스 다언어 개발을 가능하게 하며, 복수의 프로그래밍 언어를 위한 안정성 있고 보안성 있는 실행 환경을 제공한다. CLS 계층(140)과 CLR 계층(144)에 대한 보다 상세한 정보에 대해서는, 2000년 6월 21일자로 출원하였으며 발명의 명칭이 "복수의 언어를 컴파일링하기 위한 방법 및 시스템(Method and System for Compiling Multiple Languages)"인 계류 중인 미국특허출원 제09/598,105호 및 2000년 7월 10일자로 출원하였으며 발명의 명칭이 "통합 데이터 타입 시스템 및 방법(Unified Data Type System and Method)"인 계류 중인 미국특허출원 제09/613,289호를 참조한다. 상기 출원은 본 명세서에 참조로서 포함되었다.
프레임워크(132)는 오퍼레이팅 시스템(146(1))(예컨대, 윈도우즈
Figure 112004041222076-pat00002
브랜드 계열의 오퍼레이팅 시스템)과 객체 모델 서비스(146(2))(예컨대, COM(Component Object Model) 또는 분산형 COM(Distributed COM))를 캡슐화한다. 오퍼레이팅 시스템(146(1))은, 파일 관리, 통지, 이벤트 핸들링, 사용자 인터페이스(예컨대, 윈도우 기능(windowing), 메뉴, 대화 상자 등), 보안성, 인증, 검증, 프로세스 및 스레드, 메모리 관리 등의 종래의 기능들을 포함한다. 객체 모델 서비스(146(2))는 다양한 태스크를 수행하는 그 밖의 다른 객체들과의 인터페이싱을 제공한다. API 계층(142)에 발호된 호출은, 오퍼레이팅 시스템(146(1)) 및/또는 객체 모델 서비스(146(2))에 의해, CLR 계층(144)으로 전달되어 로컬 실행(local execution)된다.
API 계층(142)은 API 함수들을 복수의 네임스페이스들로 분류한다. 네임스페이스는 클래스, 인터페이스, 델리게이트(delegate), 열거(enumeration), 및 구조체(structure)의 집합을 반드시 정의하며, 이 집합을 총괄하여 "타입(type)"이라고 부른다. 타입은 관련 기능의 소정의 셋트를 제공한다. 클래스는 참조 대입 의미론(reference assignment semantics)을 갖는 피관리 힙 피할당 데이터(managed heap allocated data)를 나타낸다. 델리게이트는 객체 지향 함수 포인터이다. 열거자는 네임 상수(named constant)를 나타내는 특수한 종류의 값의 타입이다. 구조체는 값 대입 의미론(value assignment semantics)을 갖는 정적 피할당 데이터(static allocated data)를 나타낸다. 인터페이스는 다른 타입들이 구현될 수 있는 약정을 정의한다.
네임스페이스를 단위로 하여, 설계자는 타입들의 셋트를 계층적인 네임스페이스로 조직화할 수 있다. 설계자는 타입들의 셋트로부터 복수의 그룹들을 형성할 수 있다. 이 그룹들 각각은, 논리적으로 관련된 기능을 나타내는 적어도 하나의 타입을 포함한다. 구현예에서는, API 계층(142)은 3개의 루트 네임스페이스를 포함하도록 조직화되어 있다. 도 2에는 3개의 루트 네임스페이스만이 도시되어 있지만, API 계층(142)에는 루트 네임스페이스가 더 포함될 수 있다. API 계층(142)에 도시되어 있는 3개의 루트 네임스페이스는, 프리젠테이션 서브시스템(200)용의 제1 네임스페이스(사용자 인터페이스 쉘용의 네임스페이스(202)를 포함함), 웹 서비스(204)용의 제2 네임스페이스, 및 파일 시스템(206)용의 제3 네임스페이스이다. 다음으로, 각 그룹에는 명칭이 지정될 수 있다. 예를 들어, 프리젠테이션 서브시스템 네임스페이스(200)의 타입들은 "Windows"라는 명칭이 지정될 수 있고, 파일 시스템 네임스페이스(206)의 타입들은 "Storage"라는 명칭이 지정될 수 있다. 명명된 그룹들은, 전체(overall) 시스템 네임스페이스와 같이 시스템 레벨 API용의 단일의 "글로벌 루트(global root)" 네임스페이스 하에서 조직화될 수 있다. 최상 레벨의 식별자를 선택하고 이를 접두어로 붙임(prefixing)으로써, 타입을 포함시킨 그룹 명칭에 상기 선택된 최상 레벨의 식별자를 접두어로 붙인 계층적인 명칭에 의해 각 그룹의 타입들이 용이하게 참조될 수 있다. 예를 들어, 파일 시스템 네임스페이스(206)의 타입들은 "System.Storage"의 계층적인 명칭을 사용하여 참조될 수 있다. 이러한 방식으로, 개개의 네임스페이스(200, 204, 206)는 System 네임스페이스의 주요 분기(major branch)들로서 나뉘고, 접두어 "System"와 같이 설계자가 개개의 네임스페이스에 접두어를 붙이는 지정처리(designation)를 받을 수 있다.
프리젠테이션 서브시스템 네임스페이스(200)는 프로그래밍 및 콘텐츠 개발에 관한 것이다. 이 네임스페이스는 애플리케이션, 문서, 매체 프리젠테이션, 및 기 타 콘텐츠의 생성을 가능케 하는 타입들을 제공한다. 예를 들어, 프리젠테이션 서브시스템 네임스페이스(200)는, 개발자가 오퍼레이팅 시스템(146(1)) 및/또는 객체 모델 서비스(146(2))로부터의 서비스를 취득할 수 있게 하는 프로그래밍 모델을 제공한다.
쉘 네임스페이스(202)는 사용자 인터페이스 기능에 관한 것이다. 이 네임스페이스는, 개발자가 사용자 인터페이스 기능을 해당 애플리케이션들에 매입(embedding)할 수 있게 하는 타입들을 제공하고, 개발자가 사용자 인터페이스 기능을 확장할 수 있게도 한다.
웹 서비스 네임스페이스(204)는, 인트라넷 상의 두 피어(peer) 장치 간에 동작하는 채팅 애플리케이션과 같이 간단한 애플리케이션 및/또는 수백만명의 사용자를 위한 스케일러블(scalable) 웹 서비스와 같이 복잡한 애플리케이션의 광범위한 웹 애플리케이션들의 생성을 가능하게 하는 인프라스트럭처에 관한 것이다. 상술한 인프라스트럭처는, 특정 솔루션의 복잡성에 적절한 부분들만을 사용하기만 하면 된다는 점에서, 유리하게도 매우 가변적이다. 이러한 인프라스트럭처는, 다양한 스케일(scale)과 복잡성을 갖는 메시지 기반의 애플리케이션을 구축하는 데 기초(foundation)가 된다. 후술될 실시예에서는, 유용성(utility), 편리성(usability), 확장성(extensibility), 및 개량성(versionability)의 균형을 맞추도록 주의깊게 정교히 제작되는 방식으로, 관련되는 API들이 네임스페이스들의 계층성의 한 요인으로 포함된다.
파일 시스템 네임스페이스(206)는 저장에 관한 것이다. 이 네임스페이스는 정보 저장 및 검색을 가능케 하는 타입들을 제공한다.
프레임워크(132) 외에도, 개발자가 웹 서비스 및/또는 애플리케이션을 구축하는 것을 돕는 데에는 프로그래밍 툴(220)이 제공된다. 프로그래밍 툴(220)의 일례로는 마이크로소프트 코포레이션이 공급하는 다국어 슈트(suite)의 프로그래밍 툴인 Visual Studio™가 있다.
루트 API 네임스페이스
도 3은 프리젠테이션 서브시스템(200)의 일부를 보다 상세히 나타내고 있다. 일 실시예에서, 네임스페이스는 네임 스트링을 주기와 연결하는 계층적 네이밍 규약(hierarchical naming convention)에 따라 식별된다. 예컨대, 프리젠테이션 서브시스템 네임스페이스(200)는 루트 네임 “System.Windows”에 의해 식별된다. “System.Windows 네임스페이스 내에는 “System.Windows.Controls”로 식별되는 여러 제어에 대한 다른 네임스페이스가 존재하는데, 이 네임스페이스는 또한 “System.Windows.Controls.Primitives”로 알려진 프리미티브들(primitives)(도시되지 않음)에 대한 다른 네임스페이스를 식별한다. 다른 네이밍 규약들도 동일한 효과로 사용될 수 있지만, 위의 네이밍 규약을 염두에 두고, 아래의 설명은 API(142)의 선택된 네임스페이스에 대한 개요를 제공한다.
도 3에 도시된 바와 같이, 프리젠테이션 서브시스템(200)은 다수의 네임스페이스를 포함한다. 도 3에 도시된 네임스페이스들은 프리젠테이션 서브시스템(200)의 특정 실시예를 나타낸다. 프리젠테이션 서브시스템(200)의 다른 실시예들은 하 나 이상의 추가 네임스페이스를 포함하거나 도 3에 도시된 네임스페이스들 중 하나 이상을 생략할 수 있다.
프리젠테이션 서브시스템(200)은 API(142)의 많은 프리젠테이션 기능에 대한 루트 네임스페이스이다. Controls 네임스페이스(310)는 사용자 인터페이스와 같이 정보의 디스플레이를 구축하는 데 사용되는 제어들, 및 사용자가 애플리케이션과 상호작용할 수 있게 하는 클래스들을 포함한다. 제어들의 예로는 디스플레이 상에 버튼을 생성하는 “Button”, 디스플레이 상에 라디오 스타일 버튼을 생성하는 “RadioButton”, 디스플레이 상에 메뉴를 생성하는 “Menu”, 디스플레이 상에 툴바를 생성하는 “ToolBar”, 디스플레이 상에 이미지를 생성하는 “Image”, 및 정보의 계층적인 뷰를 생성하는 “TreeView”가 있다.
소정의 제어들은 다수의 요소들을 내포하고 배열함으로써 생성된다. 제어들은 제어들을 생성하는 데 사용된 요소들을 숨김으로써 프로그래밍 모델을 단순화하는 논리 모델을 갖는다. 제어들은 개발자 또는 사용자에 의해(예를 들어, 사용자 인터페이스 버튼들의 외관(appearance) 및 거동을 주문화함으로써) 스타일과 테마를 가질 수 있다. 소정의 제어들은 개별 제어가 개별 제어들의 스타일을 조정할 수 있게 하는 어드레스 가능 컴포넌트들을 갖는다. 또한, 제어들은 애플리케이션 개발자 및 컴포넌트 개발자에 의해 서브클래스화되고 확장될 수 있다. 제어들은 벡터 그래픽을 사용하여 렌더링되어 특정 인터페이스 또는 다른 디스플레이의 요건에 맞도록 텍스트가 조정될 수 있다. 제어들은 예컨대 사용자 인터페이스의 상호동작하는 느낌을 강화하기 위하여, 그리고 작용과 반작용을 보이기 위하여 애니메이션을 이용할 수 있다.
Controls 네임스페이스
Controls 네임스페이스(310)는 그 자식들{예컨대 내포된 요소들(nested elements)}을 측정하고 배열하는 제어인 하나 이상의 패널을 포함한다. 예컨대, “DockPanel” 패널은 각각의 자식을 디스플레이의 상하좌우에 도킹함으로써 자식을 배열하고, 나머지 공간을 다른 데이터로 채워 넣는다. 예를 들어, 특정 패널이 디스플레이의 상측에 메뉴와 툴바를, 하측에 상태 바를, 좌측에 폴더 리스트를 도킹할 수 있으며, 나머지 공간은 메시지 리스트로 채운다.
전술한 바와 같이, System.Windows.Controls.Primitives는 System.Windows.Controls 네임스페이스 내의 제어들의 개발자 및 그들 자신의 제어들을 생성하는 개발자에 의해 일반적으로 사용되는 컴포넌트들인 다수의 제어를 포함하는 네임스페이스이다. 이들 컴포넌트의 예에는 “Thumb and RepeatButton”이 포함된다. 다른 컴포넌트 “ScrollBar”는 4개의 반복버튼{“라인 업(line up)”, “라인 다운(line down)”, “페이지 업(page up)” 및 “페이지 타운(page down)” 각각에 대해 하나씩}과, 현재의 뷰를 문서 내의 다른 위치로 드래깅하기 위한 “Thumb”을 이용하여 생성된다. 다른 예에서, “ScrollViewer”는 2개의 “ScrollBar” 및 스크롤 가능 영역을 제공하기 위한 하나의 “ScrollArea”을 이용하여 생성되는 제어이다.
다음 리스트는 System.Windows.Controls 네임스페이스에 의해 노출되는 클래 스의 예이다. 이들 클래스는 사용자가 예컨대 다양한 입출력 능력 및 추가적인 디스플레이 능력을 통해 애플리케이션과 상호작용할 수 있도록 한다.
* AccessKey - AcessKey는 문자를 랩핑(wrapping)하는 FrameworkElement 요소이며, 이는 문자를 키보드 연상 기호로 표시하는 키보드 큐 데코레이션을 수신하는 것을 지시한다. 디폴트로 키보드 큐 데코레이션은 밑줄(underline)이다.
* Audio - 오디오 요소.
* Border - 다른 요소 주위에 경계(border), 배경 또는 이들 양자를 그린다.
* Button - 클릭 이벤트에 고유하게 반응하는 표준 버튼 컴포넌트를 나타낸다.
* Canvas - 사용자가 캔버스 영역에 관한 좌표에 의해 자식 요소들을 명시적으로 배치할 수 있는 영역을 정의한다.
* CheckBox - 체크박스를 이용하여 사용자에게 참/거짓 등의 옵션을 제공한다. 체크박스는 사용자가 옵션 리스트로부터 선택할 수 있게 한다. 체크박스 제어들은 사용자에게 옵션들의 조합을 선택하게 한다.
* CheckedChangedEventArgs - 이 CheckedChangedEventArgs 클래스는 CheckedChangedEvent 이벤트에 대한 추가 정보를 포함한다.
* CheckStateChangedEventArgs - 이 CheckStateChangedEventArgs 클래스는 CheckStateChangedEvent 이벤트에 대한 추가 정보를 포함한다.
* ClickEventArgs - 클릭 이벤트에 대한 정보를 포함한다.
* ColumnStyle - 변경가능한 ColumnStyle 객체를 나타낸다.
* ColumnStyles - 변경가능한 요소들의 집합인 변경가능 패턴 IList 객체이다.
* ComboBox - 콤보박스 제어.
* ComboBoxItem - 콤보박스 내부에서 선택가능 항목을 구현하는 제어.
* ContactPickerDialog - 사용자가 하나 이상의 콘택(contact)을 선택할 수 있게 한다.
* ContactPropertyRequest - 애플리케이션이 ContactPickerDialog를 통해 콘택 속성에 대한 정보를 요구할 수 있게 한다. 이 클래스는 상속될 수 없다.
* ContactPropertyRequest Collection - ContactPropertyRequest 객체들의 집합을 나타낸다.
* ContactSelection - 코드 네임 “WinFS” 또는 마이크로소프트 액티브 디렉토리의 마이크로소프트 윈도우 파일 시스템으로부터 선택된 콘택에 대한 정보.
* ContactSelectionCollection - ContactSelection 객체들의 집합을 나타낸다.
* ContactTextBox - 콘택 또는 콘택 속성의 선택을 지원하는 편집 제어이다.
* ContactTextBoxSelectionChangedEventArgs - ContactTextBoxSelectionChanged 이벤트에 대한 인수이다.
* ContactTextBoxTextChangedEventArgs - ContactTextBoxTextChanged 이벤트에 대한 인수이다.
* ContactTextBoxTextResolvedEventArgs - TextResolvedToContact 이벤트에 대한 인수이다.
* ContentChangedEventArgs - ContentChangedEvent에 대한 이벤트 인수.
* ContentControl - 단일 콘텐츠 조각(piece)을 가진 모든 제어들에 대한 베이스 클래스.
* ContentPresenter - 이것은 콘텐츠가 추가되는 제어의 비주얼 트리(크롬 템플리트) 내의 위치를 지시하기 위하여 콘텐츠 제어의 스타일 내에서 사용된다.
* ContextMenu - 사용자가 호출할 선택 메뉴를 정의하는 제어.
* ContextMenuEventArgs - ContextMenuEvent 상에 전송된 데이터.
* Control - 모든 사용자 상호작용적 요소들에 대한 베이스 클래스를 나타낸다. 이 클래스는 그의 서브클래스들에 대한 기본 속성 세트를 제공한다.
* Decorator - Border와 같은 단일 자식 요소 상에 또는 주위에 효과를 적용하는 요소들에 대한 베이스 클래스.
* DockPanel - 자식 요소들을 서로에 대해 수평으로 또는 수직으로 배열할 수 있는 영역을 정의한다.
* DragDeltaEventArgs - 이 클래스는 DragDeltaEvent 이벤트에 대한 추가 정보를 포함한다.
* FixedPanel - 페이지 매김을 위한 고정 페이지들을 포함하는 고정 포맷 문서에 사용되는 루트 요소이며, 페이지가 매겨진 콘텐츠를 한번에 한 페이지씩 또는 스크롤 가능한 페이지들의 스택으로서 디스플레이한다.
* FlowPanel - 단일 라인 길이를 초과하는 콘텐츠를 분해, 랩핑 및 정렬하는 데 이용되며, 컨테이너의 콘텐츠, 예를 들어 텍스트의 흐름이 단일 라인 길이를 초과할 가능성이 있을 때 사용될 수 있는 라인 분해 및 정렬 속성들을 제공한다.
* Frame - 다른 마크업 트리의 콘텐츠를 로딩할 수 있는 영역이다.
* Generator - ItemsControl를 대신하여 UI를 생성하는 객체로서, GeneratorFactory의 관리하에 작업한다.
* GeneratorFactory - ItemsControl을 대신하여 UI를 생성하는 것을 담당하며, 제어의 ItemsCollection(편평 뷰) 내의 항목들과 대응하는 UIElements 사이에 연관성을 유지한다. 제어의 항목 컨테이너는 팩토리(factory)에 UI의 실제 생성을 행하는 생성기(generator)를 요청할 수 있다.
* GridPanel - 칼럼 및 로우로 구성된 그리드 영역을 정의한다.
* HeaderItemsControl - 다수의 항목을 포함하고 헤더를 가진 모든 제어들에 대한 베이스 클래스.
* HorizontalScrollBar - 수평 스크롤바 클래스
* HorizontalSlider - 수평 슬라이더 클래스
* HyperLink - 이 클래스는 네비게이션 제어를 구현한다. 디폴트 프리젠터는 TextPresenter이다.
* Image - 문서 또는 애플리케이션에 이미지를 포함시키는 쉬운 메쏘드를 제공한다.
* IncludeContactEventArgs - ContactPickerDialog.IncludeContact 이벤트의 핸들러로 전달되는 인수.
* ItemCollection - 제어 내의 개별 항목들의 집합을 유지하며, 집합 콘텐츠의 변경과 콘텐츠에 대한 데이터의 획득을 가능하게 하는 메쏘드 및 속성을 제공한다.
* ItemsChangedEventArgs - ItemsChanged 이벤트는 레이아웃들에 항목 집합이 변경되었음을 알리기 위하여 GeneratorFactory에 의해 발생된다.
* ItemsControl - 다수의 자식을 가진 모든 제어에 대한 베이스 클래스.
* ItemsView - ItemCollection의 편평 뷰를 제공한다.
* KeyboardNavigation - 이 클래스는 집중 가능한 제어들 간의 논리적(탭) 및 지향성(화살표) 네비게이션을 위한 메쏘드를 제공한다.
* ListBox - 선택가능한 항목들의 리스트를 구현하는 제어.
* ListItem - ListBox 내의 선택가능한 항목을 구현하는 제어.
* Menu - 사용자가 호출할 수 있는 선택 메뉴를 정의하는 제어.
* MenuItem - 자식 메뉴 항목으로서, 명령을 호출하도록 선택될 수 있으며, 세퍼레이터(separator)일 수 있고, 서브메뉴에 대한 헤더일 수 있으며, 검사되거나 검사되지 않을 수 있다.
* PageViewer - 페이지 매김 제어, 툴바 및 페이지 바 제어를 포함하는 문서 뷰잉 합성 제어를 나타낸다.
* PaginationCompleteEventArgs - PaginationCompleteEvent에 대한 이벤트 인수.
* PaginationProgressEventArgs - PaginationProgressEvent에 대한 이벤트 인수.
* Pane - 새로운 윈도우를 띄우지 않고 마크업 언어(예를 들어 “XAML”)로 윈도우 속성을 정의하는 메쏘드를 제공한다.
* Panel - 모든 패널(Panel) 요소에 대한 베이스 클래스를 제공한다. 패널 요소를 인스턴스화하기 위하여 도출된 구체 클래스를 사용한다.
* RadioButton - 참 또는 거짓의 2개의 상태를 가진 옵션 버튼을 구현한다.
* RadioButtonList - 이 제어는 RadioButtons에 대한 그룹화 제어로서 서비스하고, RadioButton 상호 배제성을 처리하는 조각이며, 선택기(selector)로부터 상속된다. RadioButtonList는 본질적으로는 단일 SelectionMode 선택기이고, (선택기로부터의) 선택의 개념은 그룹화하고 있는 RadioButton의 검사된 속성에 대해 키-오프(key-off)된다.
* RowStyle - 변경가능 패턴 변경가능 요소들.
* RowStyles - 변경가능 요소들의 집합인 변경가능 패턴 IList 객체.
* ScrollChangeEventArgs - 스크롤링 상태의 변화를 기술한다.
* ScrollViewer -
* SelectedItemCollection - 선택기에서 선택된 항목들에 대한 컨테이너.
* SelectionChangedEventArgs - 선택 변경된 이벤트 핸들러에 대한 입력들.
* SimpleText - 사용자 인터페이스(UI) 시나리오들에서 사용하기 위한 저중량 멀티 라인 단일 포맷 텍스트 요소이다. SimpleText는 동일 포맷팅 속성들 중 여러 개를 Text로서 노출하며, 종종 소정의 다기능을 희생하고 성능 이득을 위해 사용될 수 있다.
* StyleSelector - 애플리케이션 작성자가 고객 스타일 선택 로직을 제공하는 것을 허용한다. 예를 들어, 콘텐츠로서의 클래스 Bug와 함께, Pri1 버그들에 대해 특정 스타일을 사용하고, Pri2 버그들에 대해 다른 스타일을 사용한다. 애플리케이션 작성자는 도출된 선택기 클래스에서 SelectStyle 메쏘드를 오버라이드하고, 이 클래스의 인스턴스를 ContentPresenter 클래스 상의 StyleSelector 속성에 할당할 수 있다.
* Text - 텍스트의 다수의 포맷의 렌더링을 가능하게 하는 텍스트 제어를 나타나며, 애플리케이션 UI 내에서 최상으로 이용되는데, 더 진보된 텍스트 시나리오들이 TextPanel의 추가 특징 세트로부터 이익을 얻는다. 이것은 비교적 간단한 텍스트 지원이 요구되는 대부분의 경우에 그의 특징들의 저중량성 및 범위로 인해 선호되는 요소이다.
* TestBox - 텍스트 입력을 받아들이는 편집가능 영역을 제공하는 제어를 나타낸다.
* TextChangedEventArgs - 이 클래스는 TextRange.SetText()에 의해 발생하는 이벤트들과 관련되는 RoutedEventArgs의 유형을 나타낸다.
* TextPanel - 텍스트를 포맷하고 텍스트를 재고 그리며, 텍스트의 다수의 라인 및 다수의 텍스트 포맷을 지원한다.
* ToolTip - 사용자가 제어 위에 호버링할 때 정보를 디스플레이하기 위한 제어이다.
* ToolTipEventArgs - ToolTipEvent 상에 전송된 데이터가다.
* TransformDecorator - 이 TransformDecorator는 자식을 포함하고, 자식에 특정 변환을 적용한다. TransformDecorator는 변환 후 자식이 데코레이터의 공간 내에 꼭 맞아 최대 영역을 사용할 수 있도록 자식을 측정하고 그의 로컬(사전 변환) 좌표에 배열하는 로직을 구현한다. 따라서, 자식은 변환이 자신에게 적용되었다는 것을 알 필요가 없다.
* UIElementCollection - UIElements의 순서화된 집합이다.
* ValueChanged EventArgs - 이 클래스는 ValueChangedEvent 이벤트에 대한 추가 정보를 포함한다.
* VerticalScrollBar - 수직 스크롤바 클래스.
* VerticalSlider - 수직 슬라이더 클래스.
* Video - 현재의 사용자 좌표 시스템 내의 특정 직사각형 내에서 스트리밍 비디오 또는 오디오를 재생한다.
* VisibleChangedEventArgs - 이 클래스는 VisibleChangedEvent 이벤트에 대한 추가 정보를 포함한다.
또한, System.Windows.Controls 네임스페이스는 여러 열거를 포함한다. 다음의 리스트는 System.Windows.Controls 네임스페이스와 관련된 열거들의 예이다.
* CharacterCase - 텍스트가 타이핑될 때 TextBox 제어 내의 문자들의 케이스를 지정한다.
* CheckState - 검사되거나, 검사되지 않거나, 중간 상태로 설정될 수 있는 체크 박스와 같은 제어의 상태를 지정한다.
* ClickMode - 클릭 이벤트가 시작되어야 할 때를 지정한다.
* ContactControlPropertyPosition - 콘택의 속성의 위치 및 디스플레이를 제어한다.
* ContactPickerDialogLayout - ContactPickerDialog가 선택된 속성을 어떻게 디스플레이해야 하는지를 지정한다.
* ContactPropertyCategory - 속성이 사용자가 선택할 수 있는 다수의 값을 갖는 경우에 어느 값이 디폴트로서 간주되는지를 지정한다. 예를 들어, ContactPickerDialog로부터 전화번호 속성을 요구할 때 “Work”가 선호되는 카테고리로 지정되고 사용자가 직장 및 집 전화번호 양자와의 콘택을 선택하는 경우, 직장 전화번호가 디폴트 선택으로서 나타난다. 그러면, 사용자는 UI를 이용하여 집 전화번호를 대신 선택할 수 있게 된다.
* ContactPropertyType - ContactPickerDialog가 사용자에게 요청할 수 있는 콘택의 속성을 지정한다.
* ContactType - ContactPickerDialog에서 어떤 콘택 유형들이 디스플레이되는지를 지정한다.
* Direction - 이 열거는 생성기가 UI를 생성하는 방향을 지정하기 위하여 GeneratorFactory 및 Generator에 의해 사용된다.
* Dock - DockPanel 내의 자식 요소의 Dock 위치를 지정한다.
* GeneratorStatus - 이 열거는 그 상태를 나타내기 위하여 GeneratorFactory에 의해 사용된다.
* KeyNavigationMode - TabNavigation 속성의 유형은 탭 네비게이션이 발생할 때 컨테이너가 어떻게 초점을 이동시킬지를 지정한다.
* MenuItemBehavior - MenuItem이 가질 수 있는 여러 거동들을 정의한다.
* MenuItemType - MenuItems의 상이한 배치 유형들을 정의한다.
* Orientation - 슬라이더 방향 유형들.
* PageViewerFit - 페이지들이 PageViewer의 클라이언트 영역 안에 어떻게 맞추어져야 하는지를 선택한다.
* PageViewerMode - 모드 드롭다운에 반영되는 현재의 PageViewer 모드를 선택한다.
* ScrollerVisibility - 스크롤러의 가시성 거동을 정의한다.
* SelectionMode - ListBox에 대한 선택 거동을 지정한다.
“Position”은 System.Windows.Controls 네임스페이스와 관련된 구조체의 예이다. Generator의 사용자는 이 구조체를 이용하여 위치를 기술한다. 예를 들어, 항목 리스트의 처음에서부터 순방향 생성을 시작하기 위하여, 위치 (-1, 0) 및 순방향을 지정한다. 리스트의 끝에서부터 역방향의 생성을 시작하기 위하여, 위치 (-1, 0) 및 역방향을 지정한다. 인덱스 k를 가진 요소 뒤의 항목들을 생성하기 위하여, 위치 (k, 0) 및 순방향을 지정한다.
다음의 리스트는 System.Windows.Controls 네임스페이스와 관련된 델리게이트의 예를 포함한다.
* CheckedChangedEventHandler - 이 델리게이트는 CheckedChangedEvent 이벤트의 핸들러에 의해 사용된다.
* CheckStateChangedEventHandler - 이 델리게이트는 CheckStateChangedEvent 이벤트의 핸들러에 의해 사용된다.
* ClickEventHandler - 클릭 이벤트를 처리하는 메쏘드를 나타낸다.
* ContactTextBoxSelectionChangedEventHandler - ContactTextBoxSelectionChanged 이벤트에 대한 델리게이트 핸들러.
* ContactTextBoxTextChangedEventHandler - ContactTextBoxTextChanged 이벤트에 대한 델리게이트 핸들러.
* ContactTextBoxTextResolvedEventHandler - TextResolvedToContact 이벤트에 대한 델리게이트 핸들러.
* ContentChangedDelegate - ContentChangedEvent에 대한 델리게이트.
* ContextMenuEventHandler - ContextMenuEvent를 처리하기 위한 콜백 유형.
* DragDeltaEventHandler - 이 델리게이트는 DragDeltaEvent 이벤트의 핸들러에 의해 사용된다.
* IncludeContactEventHandler - ContactPickerDialog.IncludeContact 이벤트에 대한 핸들러.
* ItemsChangedEventHandler - ItemsChangedEventArgs를 수신하는 핸들러에 대하여 사용되는 델리게이트.
* OpendEventHandler - ContactPickerDialog.Opened 이벤트에 대한 핸들러.
* PaginationCompleteDelegate - PaginationCompleteEvent에 대한 델리게이트.
* PaginationProgressDelegate - PaginationProgressEvent에 대한 델리게이트.
* ScrollChangeEventHandler - 이 델리게이트는 ScrollChangeEvent 이벤트의 핸들러에 의해 사용된다.
* SelectionChangedEventHandler - SelectionChanged 이벤트를 처리하기 위한 델리게이트 유형.
* TextChangedEventHandler - TextChangedEventArgs를 수신하는 핸들러에 대해 사용되는 델리게이트.
* ToolTipEventHandler - ToolTipEvent를 처리하기 위한 콜백 유형.
* ValueChangedEventHandler - 이 델리게이트는 ValueChangedEvent 이벤트의 핸들러에 의해 사용된다.
* VisibleChangedEventHandler - 이 델리게이트는 VisibleChangedEvent 이벤트의 핸들러에 의해 사용된다.
다른 네임스페이스 System.Windows.Controls.Atoms는 System.Windows.Controls 네임스페이스의 서브 네임스페이스이다. System.Windows.Controls.Atoms는 관련된 제어, 이벤트 인수 및 이벤트 핸들러를 포함한다. 다음의 리스트는 System.Windows.Controls.Atoms 네임스페이스와 관련된 클래스들의 예다.
* PageBar - 스크롤 가능한 페이지 매김 제어를 나타낸다.
* PageElement - 페이지가 매겨진 콘텐츠의 특정 페이지를 렌더링한다. 렌더링되는 페이지는 PageSource 속성에 의해 지정된다.
* PageHoveredEventArgs - 마우스 포인터가 어느 곳을 호버링하고 있는지에 대한 정보를 제공한다.
* PageScrolledEventArgs - PageScrolled 이벤트에 관한 정보를 포함한다.
* PageSelectedEventArgs - PageSelectedEvent는 새로운 로우/칼럼 범위 선택이 만들어질 때 시작된다.
* PageSelector - 사용자가 디스플레이될 페이지의 로우/칼럼의 범위를 선택할 수 있게 한다.
* PageSource - 페이지 매김되는 콘텐츠의 소스를 식별하며, 또한 페이지 매김된 콘텐츠를 포맷팅하는 속성 및 메쏘드를 제공한다.
다음의 리스트는 System.windows.Controls.Atoms 네임스페이스와 관련된 델리게이트들의 예를 포함한다.
* PageHoveredEventHandler - PageHoveredEvent 이벤트의 핸들러에 의해 사 용되는 델리게이트이다.
* PageScrolledEventHandler - PageHovered 이벤트의 핸들러에 의해 사용되는 델리게이트이다.
* PageSelectedEventHandler - PageSelectedEvent 이벤트의 핸들러에 의해 사용되는 델리게이트이다.
System.Windows.Controls.Primitives 네임스페이스는 System.Windows.Controls 네임스페이스의 또 하나의 서브 네임스페이스이다. 전술한 바와 같이, Primitive 서브 네임스페이스는 더 복잡한 다른 제어들에 의해 프리미티브로서 사용되도록 의도된 제어들을 포함한다. 다음의 리스트는 System.Windows.Controls.Primitives 네임스페이스와 관련된 클래스들의 예를 포함한다.
* ButtonBase - 도출된 클래스에 오버라이드될 때, 관련 이벤트 및 속성을 정의하고, 관련 입력 이벤트들에 대한 핸들러를 제공한다.
* Popup - 콘텐츠를 포함하는 플라이 아웃 윈도우를 생성하는 제어.
* RangeBase - 특정 범위를 가진 요소들에 대한 베이스 클래스를 나타낸다. 이들 요소의 예는 스크롤 바 및 프로그레스 바이다. 이 클래스는 관련 이벤트 및 속성을 정의하며, 이벤트에 대한 핸들러를 제공한다.
* RepeatButton - 이 제어는 클릭 이벤트가 발생할 때의 반복 시맨틱을 추가한다.
* ScrollArea - 스크롤링에 대한 유효 요소이다. 이것은 클립한 콘텐츠를 포함하며, 콘텐츠의 오프셋 및 범위를 노출하는 속성을 제공한다. 또한, 디폴트 입력 처리를 제공하여, 스크롤링이 프로그램에 의해 또는 키보드 또는 마우스 휠을 통해 이루어질 수 있게 한다.
* ScrollBar - 스크롤바 클래스.
* Selector - 자식들 사이에서 항목을 선택하는 제어들에 대한 베이스 클래스.
* Slider - 슬라이더 클래스.
* Thumb - 썸 제어는 스크롤바 및 윈도우 재텍스트측정(resiaing) 도구에 대한 기본적인 드래그 이동 기능을 가능하게 한다.
“IEnsureVisible”은 System.Windows.Controls.Primitives 네임스페이스와 관련된 인터페이스의 예이다. IEnsureVisible은 자식 비주얼을 뷰로 스크롤/이동시키기 위해 비주얼 상에서 구현된다.
다음의 리스트는 System.Windows.Controls.Primitives 네임스페이스와 관련된 열거의 예를 포함한다.
* ArrowButtonStates -
* CloseModeType - 팝업이 다양한 마우스 이벤트에 대해 어떻게 거동해야 하는지를 기술한다.
* Part - 파트 열거는 스크롤바를 구성하는 제어들의 시맨틱 이용을 지시하 는 데 사용된다.
* PartStates - 스크롤바 파트 상태들.
* PlacementType - 팝업이 스크린 상에서 어디에 배치되어야 하는지를 기술한다.
* SizeBoxStates -
Documents 네임스페이스
Documents 네임스페이스(312)는 충분히 포맷팅되고 의미적으로 풍부한 문서를 생성하는 데 사용되는 시맨틱 및 포맷팅 요소들의 집합이다. 일 실시예에서, “요소”는 요소들의 계층(“트리”로 지칭됨)과 관련하여 주로 사용되는 클래스이다. 이들 요소는 상호작용할 수 있고(예를 들어 키보드, 마우스 또는 다른 입력 장치를 통해 사용자 입력을 수신함), 이미지 또는 객체를 렌더링할 수 있으며, 다른 요소들의 배열을 도울 수 있다. 요소들의 예로는 일반 블록을 구현하는 “Block” 요소, 테이블의 바디를 포함하는 콘텐츠를 나타내는 “Body” 요소, 테이블 내의 테이블 데이터를 포함하는 “Cell” 요소, 테이블의 헤더 내에 포함된 콘텐츠를 나타내는 “Header” 요소, 및 다수의 페이지에 걸쳐 콘텐츠를 분해하는 데 사용되는 “PageBreak” 요소가 포함된다.
다음의 리스트는 System.Windows.Documents 네임스페이스에 의해 노출되는 클래스들의 예를 포함한다.
* AdaptiveMetricsContext - 적응 흐름 포맷 문서들에 대한 루트 요소를 제공한다. 자식 패널이 AdaptiveMetricsContext 요소 내에 캡슐화되면, 패널의 콘텐츠는 판독 메트릭스 엔진(RME)에 의해 처리된다. 자식 패널의 크기는 임의의 칼럼들의 수 및 크기와 최적 폰트 크기 및 라인 높이를 계산하는 데 사용된다.
* Block - 디폴트 렌더링 거동을 유발하지 않는 일반 블록 요소를 구현한다.
* BlockElement - 모든 블록 요소에 대한 베이스 클래스를 구현한다.
* Body - 테이블 요소의 바디를 포함하는 콘텐츠를 나타낸다.
* Bold - Inline으로부터 도출되는 볼드 요소를 구현한다.
* BreakRecord - 페이지브레이크들에 걸쳐 페이지 매김된 콘텐츠를 계속 포맷팅하는 데 필요한 정보를 저장한다. 페이지 매김 지원을 제공하기 위해는 이 클래스로부터 상속한다. 이것은 추상 클래스이다.
* Cell - 셀들은 테이블 내의 테이블 데이터를 포함한다. 셀 요소들은 로우 내에 포함된다.
* CellCollection - 순서화된 테이블 셀 집합.
* Column - 칼럼 요소는 GridPanel 또는 테이블의 콘텐츠를 할당하는 데 사용된다.
* ColumnCollection - 순서화된 칼럼 집합이다.
* ColumnResult - 칼럼의 뷰 관련 정보를 나타낸다.
* ContainerParagraphResult - 다른 패러그래프 객체들만을 포함하는 패러그래프 객체에 대해 계산된 레이아웃 파라미터들에 대한 액세스를 제공한다.
* ContentPosition - 패러그래프 내의 콘텐츠 위치를 나타낸다. 관련된 콘텐츠의 위치를 기술하기 위하여는 이 클래스로부터 상속한다. 이것은 추상 클래스이다.
* Document - 문서 클래스의 목적은 문서의 콘텐츠를 그것을 둘러싸고 있는 UI “크롬”으로부터 연결해제하는 것이다. “연결해제(Decoupling)”는 UI에 대해 생각하지 않고(그리고 UI에 맡기지 않고) 문서를 작성할 수 있다는 것을 의미한다. 문서 클래스는 문서 콘텐츠, 일반적으로 TextPanel 또는 FixedPanel 및 그 자식을 유지한다. 비주얼 트리(디폴트에 의해, PageViewer)는 WPP 제어 스타일링 메카니즘을 통해 이 요소와 연관된다.
* DocumentPage - 페이지가 매겨지는 문서의 페이지와 관련된 제어에 대한 레이아웃 정보를 나타낸다. 이들 제어에 대한 레이아웃 정보를 기술하도록 구현하기 위해는 이 클래스로부터 상속한다. 이것은 추상 클래스이다.
* DocumentPageParagraphResult - 페이지 매김에 의해 영향을 받는 객체들에 대해 계산된 레이아웃 파라미터들로의 액세스를 제공한다.
* FindEngine - 파인드 알고리즘들에 대한 베이스 클래스.
* FineEngineFactory - 파인드 알고리즘 팩토리.
* FixedPage - 고정 포맷 레이아웃 문서 내의 콘텐츠의 단일 페이지에 대한 액세스를 제공한다.
* Footer - 테이블 요소의 풋터를 포함하는 콘텐츠를 나타낸다.
* Header - 테이블 요소의 헤더를 포함하는 콘텐츠를 나타낸다.
* Heading - 텍스트를 헤딩으로서 렌더링하는 블록 레벨 요소를 구현한다.
* HyphenationDitionary - 애플리케이션들 내의 하이프네이션 지원을 제공할 목적의 사전을 나타낸다. 인라인 사전 및 외부 사전으로의 참조의 양자를 포함할 수 있다. 인라인 사전은 더 높은 우선순위를 갖고, 외부 사전 내의 엔트리 전에 적용될 것이다.
* Hyphenator - Hyphenator 객체는 HyphenationDictionary 내의 하이픈연결 데이터 참조를 유지하고 하이픈연결도 수행한다.
* Inline - 임의의 디폴트 렌더링 거동을 야기하지 않는 일반적인 Inline 요소를 구현한다.
* InlineElement - 하나의 일반적인 인라인 요소를 모든 인라인 요소에 대한 베이스 클래스로 구현한다.
* Italic - Inline으로부터 유도된 Italic 요소를 구현한다.
* LineBreak - 라인 나눔을 강요하는 마크업 요소를 나타낸다.
* LineResult - 텍스트의 계산된 라인 정보로의 액세스를 제공한다.
* List - List 요소를 구현한다. List는 기호 또는 숫자와 같은 마커로 포맷팅되도록 설계된 블록 레벨 요소이다.
* ListElementItem - 기호 또는 숫자와 같은 마커를 지원하는 ListElementItem을 구현한다.
* Note - HTML의 주석 요소와 유사한 Note 요소를 구현한다.
* PageBreak - 콘텐츠를 다양한 페이지로 나누는 데 사용되는 마크업 요소를 나타낸다.
* PageDescriptor - 페이지 매겨진 레이아웃을 생성하는 데 필요한 정보를 저장하는 PageDescriptor를 구현한다.
* Paragraph - 패러그래프 내의 텍스트를 렌더링하는 데 사용되는 블록 레벨 요소를 구현한다. 렌더링 거동은 HTML 내의 패러그래프 요소의 렌더링 거동과 유사하다.
* ParagraphResult - Paragraph 객체에게 계산된 레이아웃 파라메터로의 액세스를 제공한다.
* Row - GridPanel 또는 Table 요소 내의 로우를 정의한다.
* RowCollection - RowCollection은 로우들의 정렬된 집합을 나타낸다.
* RowGroup - Table 또는 GridPanel 내의 로우 그룹에 대한 속성 디폴트를 지정한다.
* Section - 일반적인 컨테이너 요소를 구현한다. 렌더링 거동은 HTML 내의 div 요소와 유사하다.
* SmallCaps - 인라인 SmallCaps 요소를 구현한다. SmallCaps는 표제에서 강조하기 위해 작은 대문자 버전의 글자로서 렌더링하는 인쇄 형식이다.
* Subscript - 인라인 Subscript 요소를 나타낸다. Subscript 문자는 즉시 다른 문자의 아래, 아래 좌측 또는 아래 우측에 기록된다.
* Superscript - 인라인 Superscript 요소를 나타낸다. Superscript 문자는 일반적으로 글자 또는 숫자이고, 다른 문자의 위, 위 좌측 또는 위 우측에 렌더링된다.
* Table - Table은 복잡한 데이터를 마크업 언어(예를 들어, "XAML")를 사용하여 표 형식으로 디스플레이하는 데 사용된다.
* TextArray - 텍스트 액세스 및 조작에 대한 Base API.
* TextChangedEventArgs - TextChangedEventArgs는 TextArray가 변경될 때 송신되는 이벤트 인수를 정의한다.
* TextElement - TextElement는 TextRange 편의를 TextTree에게 제공한다. 그것은 고정된 종점을 갖는 불변의 연속적인 TextRange이다. 그것은 ContentElement Input, Focus 및 Eventing 지원을 제공한다. 그것은 또한 DependencyObject 속성 지원도 제공한다.
* TextNavigator - 이것은 텍스트 콘텐츠를 열거한다. 이동가능한 TextPosition을 구현한다. 그것은 텍스트 실행에 의해 이동할 수도 있고, 텍스트 내의 알려진 위치에서 위치지정될 수도 있다.
* TextParagraphResult - 플로팅된 객체 및 숫자를 포함하여, 텍스트에게 계산된 레이아웃 파라미터로의 액세스를 제공한다.
* TextPosition - 이것은 TextArray 내의 특정 위치를 나타내는 객체이다. 텍스트 내의 위치를 나타내는 압축 객체는 텍스트가 변경될 때 자동적으로 위치를 유지한다. 비교 동작은 동일한 TextArray(동일한 컨텍스트) 내의 위치에만 적용가능하고, TextPosition은 정적일 수도 있고 이동가능할 수도 있다. IsChangeable 속성은 위치의 유형을 말한다.
* TextRange - TextRange는 0개 이상의 하위범위와 속성의 일반적인 연합을 제공하는 추상 클래스이다. 하위범위 조작은 유도된 클래스 상에서 정의된다.
* TextRangeMovable - TextRangeMovable은 이동가능한 TextRange에 대한 추상 클래스이다. 그것은 TextUnit에 기초하여 시작과 종료 지점을 이동시키는 능력을 추가한다.
* TextTreeChangedEventArgs - TextTreeChangedEventArgs는 TextArray가 변경될 때 송신된 이벤트 인수를 정의한다.
* TextTreeDumper - TreeDumper는 패키징 발행으로 인해 공중화된 트리 테스트 클래스이다.
* TextTreeNavigator - 이것은 TextTree 내의 특정 이동가능한 위치를 나타내는 객체이다. 그것은 TextTree 내에서만 사용하기 위한 TextNavigator의 특정 구현이다.
* TextTreePosition - 이것은 TextTree 내의 특정 불변의 위치를 나타내는 객체이다. 그것은 TextTree 내에서만 사용하기 위한 TextPosition의 특정 구현이다.
* TextTreeRange - TextTree에게 TextRange 편의를 제공한다. 그것은 이동가능한 종점을 갖는 불변의 연속적인 TextRange이다.
* TextTreeRangeContentEnumerator - TextTreeRange 바로 아래의 객체 자식들에 대한 열거자.
* TextUnit - 텍스트 네비게이션의 확장가능한 유닛.
* TextUnits - TextPosition 및 TextRange에 대하여 주로 사용되는 텍스트 유닛.
* Typography - OpenType 인쇄 속성의 많은 집합으로의 액세스를 제공한다.
* UIElementParagraphResult - 전체적으로 UIElement로 구성된 패러그래프에 대한 ParagraphResult. 플로터(floater), 숫자 및 내장 블록 레벨 UIElement에 대해 사용된다.
* Underline - InlineElement로부터 유도된 Underline 요소를 구현한다.
다음 목록은 System.Windows.Documents namespace와 관련된 예시적인 인터페이스이다.
* IDocumentContentHost - 콘텐츠 호스트 상에 이 인터페이스를 구현하여, 콘텐츠가 변경될 때 그 호스트의 자식이 호스트에게 통지할 수 있도록한다.
* IDocumentFormatter - 페이지 나누기와 같은 문서 특징에 대한 지원을 제공하도록 요소 상에서 이 인터페이스를 구현한다.
* ITextDocumentResult - 문서에 대한 칼럼 정보를 유지하도록 이 인터페이스를 구현한다.
* ITextParagraphResult - 텍스트 패러그래프에 대한 위치지정 정보 및 텍스트를 제공하도록 이 인터페이스를 구현한다.
다음 목록은 System.Windows.Documents namespace와 관련된 예시적인 열거들이다.
* ElementEdge - 이것은 TextPosition이 위치한 객체의 가장자리를 식별한다.
* FindAdvancedOptions - FindAlgorithm에 의해 사용되는 향상된 탐색 옵션 (탐색 초기화), 및 TextRangeMovable/TextSelection (단순화된 탐색 실행) 클래스
* FindOptions - TextBox.Findmethods에 의해 사용되는 단순화된 탐색 옵션.
* LogicalDirection - LogicalDirection은 텍스트 내의 이동에 대한 논리적인 방향을 정의한다. 그것은 콘텐츠가 TextPosition에서 삽입될 때 TextPosition이 이동할 것이지를 결정하는 데에도 사용된다.
* TextArrayRunType - 이것은 LogicalDirection을 고려하여, TextPosition이 위치한 실행을 식별한다.
* TextChangeOptions - CanChangeText에 대한 가능한 텍스트 변경.
* TextMoveOptions - 이것은 중지 네비게이션에 대한 조건을 지정함으로써 TextNavigator의 이동을 제어한다.
다음 목록은 System.Windows.Documents namespace와 관련된 예시적인 델리게이트이다.
* ObjectCloneDelegate - TextArray의 일부가 복사되거나 이동될 때 DependencyObject의 클론 또는 복사본을 제공하는 메쏘드를 재호출한다.
* TextChangedEventHandler - TextChangedEventHandler 델리게이트는 콘텐츠가 TextTree에 추가되거나 그것으로부터 제거될 때마다 TextChangedEventArgs와 함 께 호출된다.
Shapes 네임스페이스
Shapes 네임스페이스(314)는 이미지 및 객체를 생성하는 데 사용되는 벡터 그래픽 요소의 집합이다. 벡터 그래픽 요소의 사용은 요소가 특정 인터페이스 또는 디스플레이 장치의 요구사항에 맞도록 쉽게 재크기설정되는 것을 허용한다. 예시적인 요소로는, 타원을 그리는 "Ellipse" 요소, 두 점 사이의 직선을 그리는 "Line" 요소, 사각형을 그리는 "Rectangle" 요소, 및 폐쇄된 형상을 형성하는 일련의 연결된 라인으로서의 다각형을 그리는 "Polygon" 요소가 있다.
다음의 목록은 System.Windows.Shapes namespace에 의해 노출된 예시적인 클래스이다.
* Ellipse - 타원을 그린다.
* Glyphs - "XAML"과 같은 마크업 언어로 그림 문자 형상을 나타낸다. Glyphs은 폰트를 나타내는 데 사용된다.
* Line - 2개의 점 사이의 직선을 그린다.
* Path - 일련의 연결된 라인 및 곡선을 그린다.
* Polygon - 다각형(폐쇄된 형상을 형성하는 일련의 연결된 라인)을 그린다.
* Polyline - 일련의 연결된 직선을 그린다.
* Rectangle - 사각형을 그린다.
* Shape - 타원, 다각형 및 사각형과 같은 형상 요소에 기본 기능을 제공하 는 추상 클래스.
Data 네임스페이스
Data 네임스페이스(316)는 요소의 속성을 데이터 소스, 데이터 소스 클래스, 및 데이터 집합 및 뷰의 데이터 특정의 구현으로 바인딩하는 데 사용되는 클래스 및 인터페이스를 포함한다. 이 클래스 및 인터페이스는 데이터 엔트리 내의 예외를 핸들링하는 데에도 사용되고, 다양한 데이터 소스 내의 정보에 기초하여 사용자 인터페이스의 런타임 생성을 허용한다. 데이터는 본문 형태로 디스플레이될 수도 있고, 그들이 음인 경우 달러 양만큼을 적색으로 디스플레이하는 것과 같이, 디스플레이의 포맷팅을 변경하는 데 이용될 수도 있다. 예시적인 클래스에는, 동적 속성 사용자 인터페이스와 소스 데이터 간의 바인딩을 관리하는 바인딩 선언 객체를 나타내는 "Bind" 클래스, 및 XML 콘텐츠 노드로의 데이터 바인딩을 위해 데이터 소스로서 서비스하는 "XmlDataSource" 클래스가 있다.
객체 중심 애플리케이션은 일반적으로 데이터의 값과 그 데이터 상에서 수행될 수 있는 동작 양자를 모두 정의하는 클래스에 의해 데이터를 나타낸다. "데이터 항목"이라는 용어는 하나의 그러한 객체를 의미한다. 애플리케이션은 각각의 데이터 항목 또는 데이터 항목의 집합을 핸들링할 수 있다. 애플리케이션은 (a) 파일 시스템, 원격 서버, 데이터베이스 등과 같은 외부 소스로부터 대응하는 인-메모리 데이터 항목으로 데이터를 변환시키고, 수정된 데이터 항목을 다시 이들 소스가 예상하는 형태로 변환하고; (b) 데이터 중심 논리와 애플리케이션 중심 논리의 조합을 사용하여 데이터 항목 상에서 동작하고; (c) 데이터 항목이 포함하는 데이터를 사용자 인터페이스를 통해 사용자에게 나타내는 3가지 방법으로 데이터 항목을 사용할 수 있다. Data 네임스페이스(316)는 이 태스크들 중에 제1 및 제3에 대한 지원을 제공한다.
외부 소스로부터 데이터를 획득하는 제1 태스크는 "데이터 소스" 객체에 의해 지원된다. 데이터 소스 객체는 일반적으로 페이지 범위 또는 애플리케이션 범위에 걸친 자원으로 정의되고, 데이터로의 게이트웨이로서 서비스한다. 데이터 소스는 Data 네임스페이스 내의 클래스가 데이터로의 액세스를 얻는 표준 메카니즘을 정의하는 IDataSource 인터페이스를 구현한다. 특정 데이터 소스 객체는 특정 소스에 적합한 메카니즘을 사용함으로써 실제 데이터를 검색하는 논리를 구현한다. 일 실시예에서, Data 네임스페이스는 다음의 4개의 데이터 소스 클래스를 포함한다.
1. XML로 나타난 데이터를 검색하기 위한 XmlDataSource.
2. 마이크로소프트 SQLServer와 같은 SQL 데이터베이스로부터 데이터를 검색하기 위한 SqlDataSource.
3. WinFS 서비스로부터 데이터를 검색하기 위한 WinFSDataSource.
4. 애플리케이션에 의해 정의된 임의의 객체로부터 데이터를 검색하기 위한 ObjectDataSource.
애플리케이션은 특수 목적 소스에 맞는 자신의 데이터 소스 클래스를 정의할 수도 있다.
데이터 소스 클래스는 외부 소스로부터 데이터를 검색하고 그것을 바인딩 클래스가 사용하기에 적합한 하나 이상의 데이터 항목으로 변환하는 것을 담당한다. 데이터 항목 집합이 필요하면, 애플리케이션은 Array, ArrayList, Hashtable 등과 같은 .Net 프레임워크로부터의 표준 집합 클래스들 중 임의의 것, Dataset와 같은 System.Data namespace로부터의 데이터 중심 집합 클래스들 중 임의의 것, 또는 ArrayListDataCollection과 같은 Data 네임스페이스로부터의 데이터 중심 집합 클래스를 사용할 수 있다. 마지막 클래스는 변경 통지를 지원한다. 즉, 애플리케이션이 항목을 추가하거나, 항목을 제거하거나, 집합을 정렬함으로써 집합을 변경시킬 때, 집합은 통지를 송신한다. 바인딩 클래스는 이 통지를 듣고 변경을 반영하도록 자동적으로 사용자 인터페이스를 갱신한다.
데이터가 인-메모리 데이터 항목으로 변환되면, 애플리케이션은 그 항목을 사용하여 계산을 수행하고 계산 결과로서 그 항목을 수정할 수 있다. 이 실행은 데이터 중심 동작(데이터 항목 클래스가 정의함)과 애플리케이션 중심 동작(애플리케이션 자체가 정의함)의 조합을 사용하여 수행된다. 이 실행은 애플리케이션에 의해 자동적으로 또는 사용자의 실행에 응답하여 개시될 수 있다. Data 네임스페이스로부터의 특수 지원 또는 협조가 불필요하게 되고, 그에 의해, 애플리케이션 내의 논리와 표현의 완전한 분할을 제공한다.
사용자 인터페이스를 통하여 데이터를 나타내는 제3 데이터 관련 태스크는 Data 네임스페이스의 "바인딩" 클래스에 의해 지원된다. 이 클래스는 애플리케이션이 데이터 항목 속성(소스)과 사용자 인터페이스 속성(타겟) 간의 교신(바인딩) 을 기술할 수 있게 한다. 용어 데이터 바인딩(또는 단순히 바인딩)은 그러한 교신의 설립을 의미한다. 예를 들어, 애플리케이션은 Textbox 제어의 Text 속성을 데이터 항목의 CustomerName 속성에 데이터 바인딩하기로 선택할 수 있다. 그렇게 하면, 제어는 자동적으로 고객의 이름을 디스플레이하고, 애플리케이션이 데이터 항목을 변경시킬 때마다 디스플레이를 갱신하고, 사용자가 새로운 이름은 제어에 타이핑할 때마다 데이터 항목을 갱신할 것이다.
이 유형의 교신은 Bind 클래스를 이용하여 기술되고, Binding 클래스를 이용하여 구현된다. 임의의 수의 UI 속성은 동일한 기술(description)(Bind)을 공유할 수 있으나, 각각의 속성은 그 특정 인스턴스에 대한 상태를 보유하는 자신의 고유한 Binding을 갖는다. 기술에는 요구되는 교신에 대한 다음의 정보가 있다.
* Path - 바인딩의 소스로서 사용하는 데이터 항목 속성의 이름. 이것은 단순한 속성 이름일 수도 있고, 하위-객체 및 "ShippingAddress.Line[2]"과 같은 인덱서를 포함하는 보다 복잡한 표현(예를 들어, 소스 속성이 복잡한 타입 값을 가질 경우)일 수도 있다. 데이터 소스가 XML일 때, 경로는 XPath 표현이 된다.
* BindType - 교신은 일방향, 양방향 또는 원타임(one-time)일 수 있다. 일방향 바인딩에서는, 데이터 항목의 변경은 사용자 인터페이스 속성에 대한 갱신을 야기하고, 데이터는 한 방향으로 즉, 소스에서 타겟으로 흐른다. 양방향 바인딩에서, 데이터는 양 방향으로 흐른다. 즉, 일방향 거동에 더하여, 사용자 인터페이스 속성에 대한 변경은 데이터 항목 속성에 대한 갱신을 야기한다. 원타임 바인딩에서는, 데이터 항목 속성은 사용자 인터페이스 속성을 초기화하는 데 사용되지만, 어느 방향으로든 변경이 전파되지 않는다.
* Source - 어디에서 소스 데이터 항목을 획득하는 지에 대한 기술. 이것은 데이터 소스 객체, 임의의 다른 사용자 인터페이스 요소, 또는 타겟 요소의 DataContext 속성의 값으로부터일 수 있다.
* UpdateType - 소스 속성을 양방향 바인딩으로 갱신할 경우에 해당하며, Immediate, OnLostFocus 또는 Explicit 중 하나가 된다. Immediate 갱신은 사용자 인터페이스 속성이 변경되자마자 발생한다. OnLostFocus 갱신은 타겟 요소가 키보드 초점을 잃을때까지 지연된다. 이것은 TextBox 제어에 적합하여 모든 키스트로크 후에 갱신하는 비용을 회피한다. Explicit 갱신은 애플리케이션이 명시적으로 요구할 때 발생한다.
* Transformer - IDataTransformer 인터페이스를 구현하는 객체. 이것은 사용자 인터페이스에서 데이터 항목 값을 사용하기 전에 애플리케이션에게 데이터 항목 값을 수정하는 메쏘드를 제공한다. 수정은 단순한 타입 변환(예를 들어, Background 속성을 BalanceOwed 데이터 속성에 바인딩할 때, 애플리케이션은 음의 밸런스를 적색 배경으로 변환시키고, 양의 밸런스를 녹색 배경으로 변환시킬 수 있음)일 수도 있고, 애플리케이션 특정 변환(예를 들어, Text 속성을 NetWorth 데이터 속성에 바인딩할 때, NetWorth 데이터 속성이 $1M을 초과할 경우 애플리케이션은 "Rich"를 디스플레이하고, NetWorth가 $100K와 $1M 사이인 경우 "Bourgeois"를 디스플레이하고, NetWorth가 $100K보다 작은 경우 "Poor"를 디스플레이할 수 있음)일 수도 있다. Transformer는 간단하지만 강력한 툴이어서 데이터로부터 분리된 표시를 돕는다.
원타임을 제외한 모든 바인딩은 데이터 속성이 변경될 때 통지받는 것에 의존하기 때문에, 사용자 인터페이스에 대응하는 변경이 행해질 수 있다. 바인딩 클래스는 요구된 통지를 구현하는 하나의 메쏘드로서 (System.ComponentModel namespace로부터) IPropertyChange 인터페이스를 인식한다.
다음은 System.Windows.Data namespace에 의해 노출된 구성원들을 나열한다.
<클래스>
* ArrayListCollectionView - ArrayListDataCollection 콜렉션 클래스에 대한 콜렉션 뷰 지원을 캡슐화한다. 이 클래스는 상속될 수 없다.
* ArrayListDataCollection - 어레이-목록 데이터 콜렉션의 빌트인 구현을 밑에있는 콜렉션-뷰 인터페이스에 제공한다. 또한 항목이 추가 또는 삭제되거나 전체 콜렉션이 리프레쉬될 때 통지를 제공하는 ICollectionChange를 구현한다.
* Bind - 동적 속성 사용자 인터페이스(UI)와 소스 데이터 사이의 바인딩을 관린하는 데 사용되는 바인드 선언 객체를 나타낸다.
* Binding - 바인딩의 단일 런타임 인스턴스로의 액세스를 제공한다. 이 클래스는 상속될 수 없다.
* BindingListColectionView - 마이크로소프트® ADO(ActiveX® Data Object) 데이터 뷰를 위해 사용되는 콜렉션 뷰 클래스.
* CollectionContainer - 이 클래스의 객체는 기존의 콜렉션 구조체 예를 들어, ArrayListDataCollection 또는 ItemCollection 내의 다른 DataSet을 보유한다.
* ContextAffinityCollectionView - 컨텍스트 동질 관계에 대한 검사를 포함하는 콜렉션 뷰를 구현한다.
* DataContextObjectRef - 바인딩에 대하여 데이터 컨텍스트으로서 사용되는 객체로의 객체 참조를 지원한다. 이 클래스는 상속될 수 없다.
* DataSourceObjectRef - 데이터 소스로의 객체 참조를 지원한다. 이 클래스는 상속될 수 없다.
* DataTransferEventArgs - 데이터 전송 이벤트에 대한 인수를 캡슐화한다. 이벤트는 DataTransferEventHandler 델리게이트에 기초하여 지정된 핸들러에 의해 특수하게 핸들링되는 경로지정된 이벤트이다.
* ElementObjectRef - 요소 ID에 의해 지정된 객체와 함께, 요소로의 객체 참조를 나타낸다. 이 클래스는 상속될 수 없다.
* ExplicitObjectRef - 요소로의 명시적 객체 참조를 나타낸다. 이 클래스는 상속될 수 없다.
* ListCollectionView - IList에 기초하여 콜렉션에 대한 콜렉션 뷰를 구현한다.
* ObjectDataSource - 데이터 바인딩에 대하여 데이터 소스로서 서비스한다. 바인딩가능한 데이터 항목은 공통 언어 실행시간(run-time) 타입으로 지정될 수 있다.
* ObjectRef - ElementObjectRef, ExplicitObjectRef 및 TypeObjectRef의 부모 클래스로서 사용되는 추상 클래스.
* ParameterCollection - 이 클래스의 객체는 SqlDataSource에 대하여 (대응 하는 값으로) 명명된 파라미터의 콜렉션을 보유한다.
* QueryCommand - 이 클래스는 데이터베이스에 제기되는 단일 셀렉트(select) 문을 나타낸다.
* RefreshCompletedEventArgs - ObjectDataSource의 RefreshCompleted 이벤트 또는 XmlDataSource 내의 RefreshCompleted 이벤트에 전달되는 인수들을 캡슐화한다.
* SqlCommandList - sql 명령과 그 명령이 사용되어 채워야하는 테이블의 이름의 목록.
* SqlDataSource - SqlDataSource는 데이터바인딩에서 사용하기 위해 마이크로소프트 SQL 서버로부터 데이터를 획득한다.
* TransformerSource - 현재 애플리케이션 내의 코드-비하인드(code-behind)로 정의된 변성기 클래스로의 자원 참조를 허용한다.
* TypeObjectRef - 타입에 의한 객체 참조를 지원한다. 이 클래스는 상속될 수 없다.
* WinFSDataSource - WinFSDataSource는 WinFS에 저장된 데이터와 Avalon 애플리케이션과의 데이터바인딩을 용이하게 한다.
* XmlDataNamespaceManager - XmlDataNamespaceManager 클래스는 Xml 데이터에서 XPath 질의를 바인딩하는 데 사용되는 네임스페이스를 선언하는 데 사용된다.
* XmlDataSource - XML(Extensible Markup Language) 콘텐츠 노드에 바인딩하는 데이터를 위해 데이터 소스로서 서비스한다.
* XmlNamespace - XML 데이터 소스 내의 개별 네임스페이스를 선언한다.
<인터페이스>
* IContains - 콜렉션 뷰에 대한 필터링 기준을 선언하는 클래스를 생성하는 데 사용된다.
* IDataSource - 데이터 소스 객체의 생성을 지원한다. 데이터 소스 객체는 데이터 바인딩을 위한 데이터의 공통적인 재표시에 대해 사용된다.
* IDataTransformer - 바운드 데이터의 클라이언트측 변성을 가능하게 하는 메쏘드를 제공한다.
<열거>
* BindFlags - 바인딩의 특수 속성을 기술한다. "Longhorn" 마크업 언어("XAML"로 코드-명명됨) 사용에 대한 Using Bind Declarations를 참조한다. 바인딩 타입(일방향, 양방향 등)을 지정하는 데 사용되는 열거에 대한 BindingType을 참조한다.
* BindStatus - Binding의 상태.
* BindType - 데이터 값의 변경이 바인딩의 소스 속성 및 타겟 속성으로부터, 및 그것에 어떻게 송신되는 지를 기술한다.
* SqlDataSourceMode - SqlDataSourceMode가 가질 수 있는 가능한 모드의 열거이다. 모드는 애플리케이션이 Data 속성으로부터 값을 검색할 때 어떤 종류의 데이터가 리턴될 지를 결정한다.
* UpdateType - 바인딩 시, 데이터 소스의 갱신(타겟 대 소스 데이터 송신) 이 언제 발생해야 하는 지를 지정한다. 이 값을 설정하는 것은 바인딩의 BindType이 TwoWay로 설정되는 경우(또는 디폴트로 남는 경우)에만 관련될 것이다.
<델리게이트>
* DataChangedEventHandler - IDataSource를 구현하는 데이터 소스에 의해 일어난 DataChanged 이벤트를 핸들링하는 메쏘드를 나타낸다.
* DataTransferEventHandler - Binding에 의해 일어난 데이터 전송 이벤트를 핸들링하는 메쏘드를 나타낸다.
* RefreshCompletedEventHandler - ObjectDataSource.RefreshCompleted 및 XmlDataSource.RefreshCompleted 이벤트를 핸들링하는 메쏘드를 나타낸다.
Media 네임스페이스
Media 네임스페이스는 다양한 미디어 클래스를 제공한다. 애플리케이션 개발자 뿐만 아니라 컴포넌트 개발자는 다양한 표시 기능을 개발하는 데 이 클래스를 사용한다. Media 네임스페이스(318) 내의 예시적인 클래스는 특정 이미징 효과{예를 들어, 흐림효과(blur) 및 그레이스케일}를 허용하는 "ImageEffect" 클래스, 및 짙은 색, 기울기, 이미지, 비디오 등을 사용하는 영역을 채우기 위한 메카니즘을 제공하는 "Brush" 클래스를 포함한다.
Media 네임스페이스(318)는 개발자가 속성에 움직임을 주고 애니메이션 집합을 타임라인 집합과 조합하는 것을 허용하는 서비스를 포함하는 서브-네임스페이스 System.Windows.Media.Animation를 포함한다. 애니메이션은 일정 시간동안 값을 변경하는 객체이다. 애니메이션 효과는 디스플레이 상에서 객체를 움직이는 것 및 객체의 크기, 형상 또는 색을 변경하는 것을 포함한다. 다수의 애니메이션 클래스는 다양한 애니메이션 효과를 구현하는 데 제공된다. 애니메이션을 요소의 속성 값과 연계함으로써 효과가 획득될 수 있다. 예를 들어, 페이드 인(fade in) 및 페이드 아웃(fade out)하는 사각형을 생성하기 위해, 하나 이상의 애니메이션은 사각형의 불투명 속성과 연계된다.
Media 네임스페이스(318)는 다양한 텍스트 서비스를 제공하는 서브-네임스페이스 System.Windows.Media.TextFormatting도 포함한다. 예를 들어, "TextFormatter" 텍스트 엔진은 텍스트 라인을 깨뜨리고 디스플레이 상에 주어지는 텍스트를 포맷팅하기 위한 서비스를 제공한다. "TextFormatter"는 상이한 텍스트 문자 포맷 및 패러그래프 스타일 뿐만 아니라 국제 텍스트 레이아웃도 핸들링할 수 있다.
다음은 System.Windows.Media namespace에 의해 노출된 예시적인 구성원들을 나열한다.
<클래스>
* ArcSegment - 두개의 지점 간의 타원호를 나타낸다.
* AudioData - 시간 노드의 상태에 따라 오디오 파일의 재생을 가능하게 한다.
* AudioDataConverter - 오디오 데이터 변환자
* BezierSegment - 2개의 지점 사이에 그려진 3차 바이자르 곡선을 나타낸 다.
* Brush - 고른 색(SolidColorBrush), 기울기(LinearGradientBrush, RadialGradientBrush), 이미지(ImageBrush), 비디오 등을 사용하는 영역을 채우기 위한 일반적인 수단을 제공한다.
* BrushConverter - Brush 객체를 다른 객체 타입으로/다른 객체 타입으로부터 변환하는 데 사용된다.
* Brushes - 소정의 짙은 색을 구현한다.
* CloseSegment - PathFigure 객체의 마지막 지점을 시작 지점과 연결하는 라인을 나타낸다.
* CodecFilter - 코덱을 열거하기 위한 필터이다. 속성과 일치하는 코덱만이 열거될 것이다.
* CodecInfo - 특정 코덱 및 그 코덱을 생성하기 위한 팩토리에 대한 정보이다. 이것은 코덱 열거자로부터 리턴된다.
* ColorCollection
* ColorCollectionConverter - 다른 종류의 인스턴스를 ColorCollection 인스턴스로/ColorCollection 인스턴스로부터 변환하기 위한 변환자 클래스이다.
* ColorContext
* ColorConverter - Color 객체를 또다른 객체 타입으로/타입으로부터 변환하는 데 사용된다.
* Colors - 소정의 색 집합을 구현한다.
* ContainerVisual - Visual 객체 집합을 관리한다.
* DashArrays - DashArrays 클래스는 정적이고, 잘 알려진 대시(dash) 스타일에 대한 속성을 포함한다.
* DoubleCollection
* DoubleCollectionConverter - 다른 타입의 인스턴스를 DoubleCollection 인스턴스로/DoubleCollection 인스턴스로부터 변환하기 위한 변환자 클래스이다.
* Drawing - Drawing은 2d 드로잉(drawing) 프리미티브의 목록이다.
* DrawingBrush - 이 TileBrush는 그 콘텐츠를 Drawing으로 정의한다.
* DrawingContext - 드로잉 컨텍스트.
* DrawingVisual - 그려진 그래픽 콘텐츠를 포함하는 비주얼.
* EllipseGeometry - 원 또는 타원의 평면도형을 나타낸다.
* FontFamily - 폰트 패밀리.
* FormattedText - FormattedText 클래스는 MIL 비주얼에 임의의 간단한 텍스트를 추가하고자하는 프로그래머를 위한 Avalon MIL 이지 텍스트 API의 일부이다.
* Geometry - EllipseGeometry, RectangleGeometry 및 PathGeometry와 같은 모든 평면도형 클래스에게 기본 기능을 제공하는 추상 클래스이다. 객체의 Geometry 클래스는 2-D 그래픽 데이터를 클립핑, 히트-테스팅(hit-test) 및 랜더링하는 데 사용될 수 있다.
* GeometryCollection - Geometry 객체의 콜렉션을 나타낸다.
* GetPageEventArgs - GetPageEventArgs 클래스.
* GlyphRun - Glyph 실행 클래스.
* GlyphTypeface - 물리적인 폰트체(font face)는 디스크 상의 폰트 파일에 대응한다.
* GradientBrush - 기울기 채움을 기술하는 추상 클래스. GradientBrush로부터 유도하는 클래스는 기울기 정지를 해석하는 상이한 메쏘드를 기술한다.
* GradientStop - 기울기 내의 변환점의 위치 및 색을 나타낸다.
* GradientStopCollection - GradientStop 기울기 정지의 콜렉션을 나타낸다.
* HitTestParameters - 이것은 히트 테스트 통과를 위해 파라미터를 함께 패킹하기 위한 베이스 클래스이다.
* HitTestResult - 이 베이스는 히트 테스트 통과동안 히트된 비주얼을 리턴한다.
* HwndInterop
* HwndVisual
* HyphenationCandidate - 단일 Hyphenation 후보를 기술한다.
* ICCProfile
I* mageBrush - 영역을 이미지로 채운다. 이 클래스는 이미지를 다른 객체의 채움 또는 배경으로 지정하는 데 사용될 수 있다.
* ImageCodecCollection - 시스템 상의 코덱의 콜렉션(실제로, CodecInfos).
* ImageCodecEnumerator - Image 프레임에 대한 열거자.
* ImageColorTransform - ImageColorTransform은 이미징 파이프라인 상에서 색 관리를 수행한다.
* ImageData - 이미지 및 관련된 데이터를 포함한다.
* ImageDataBuilder - 이 객체는 ImageData 객체를 구축하는 데 사용된다.
* ImageDecoder - ImageDecoder는 이미지 프레임을 위한 컨테이너이다. 각각의 이미지 프레임은 ImageSource이다. ImageSource와는 달리, ImageDecoder는 불변의 객체가 아니며, 상이한 이미지 스트림으로 재초기화될 수 있다. 그러나, 그것이 리턴하는 임의의 ImageSources(프레임)는 불변하는 것이어야 한다.
* ImageDecoderBmp - 빌트인 마이크로소프트 Bmp(비트맵) 디코더.
* ImageDecoderGif - 빌트인 마이크로소프트 GIF 디코더.
* ImageDecoderIcon - 빌트인 마이크로소프트 Icon 디코더.
* ImageDecoderInternal - 내부 사용만을 위한 것.
* ImageDecoderJpeg - 빌트인 마이크로소프트 Jpeg 디코더.
* ImageDecoderPng - 빌트인 마이크로소프트 PNG 디코더.
* ImageDecoderTiff - 빌트인 마이크로소프트 Tiff 디코더.
* ImageEffect - ImageEffect 클래스는 모든 이미징 효과(흐림효과, 그레이스케일 등)에 대한 베이스 클래스이다. 효과가 어떤 입력도 갖는 것은 가능하지만, 효과는 적어도 하나의 출력을 가져야한다. 디폴트 구현은 이것을 가정한다. 유도된 효과가 Outout/Outouts로 재생할 것이라면, 적어도 하나의 출력이 있음을 명심한다.
* ImageEffectBlur - 가우스 흐림 효과. 이것은 단일 입력, 단일 출력 효과이다. 주의; 효과가 스케일되고(즉, Input.ScaleX 또는 Input.ScaleY는 1이 아님) Expand가 참이면, 출력 치수가 PixelWidth 및 PixelHeight보다 더 크거나 작아질 수 있다. 복사에 공급된 픽셀 버퍼를 조정하여 문제를 회피한다.
* ImageEffectFlipRotate - 이 효과는 X 또는 Y의 이미지를 움직여서 90도로 여러번 회전시킬 수 있다.
* ImageEffectGammaCorrect - 이 효과는 이미지의 감마를 변경한다.
* ImageEffectGlow - 글로우(glow) 효과를 수행한다. 단일 입력, 단일 출력 효과이다.
* ImageEffectGrayscale - 이미지르 그레이스케일로 변환한다. 단일 입력 단일 출력 효과이다.
* ImageEffectNegate - 이미지를 무효로한다. 단일 입력, 단일 출력 효과이다.
* ImageEffectSharpen - 예리하지 않은(unsharp) 마스크. 단일 입력, 단일 출력 효과이다.
* ImageEffectSource - ImageEffectSource 클래스 구현.
* ImageEffectSourceCollection - 이미지 효과 출력의 콜렉션.
* ImageEffectTint - 색채 구성자. 단일 입력, 단일 출력 효과이다.
* ImageEncoder - ImageEncoder는 관련된 축소화상(thumbnail) 및 메타데이 터를 갖는 프레임(ImageSource의) 집합을 수집하고, 그것을 지정된 스트림에 저장한다. 코덱이 지원하는 경우, 프레임-특정 축소화상 및 메타데이터 뿐만 아니라, 이미지-와이드(글로벌) 축소화상 및 메타데이터가 있을 수 있다.
* ImageEncoderBmp - Bmp 파일을 위한 빌트인 인코더.
* ImageEncoderGif - Gif 파일을 위한 빌트인 인코더.
* ImageEncoderInternal - ImageEncoderInternal은 관련된 축소화상 및 메타데이터를 갖는 프레임(ImageSource의) 집합을 수집하고, 그것을 지정된 스트림에 저장한다. 코덱이 지원하는 경우, 프레임-특정 축소화상 및 메타데이터 뿐만 아니라, 이미지-와이드(글로벌) 축소화상 및 메타데이터가 있을 수 있다.
* ImageEncoderJpeg - Jpeg 파일을 위한 빌트인 인코더.
* ImageEncoderPng - Png 파일을 위한 빌트인 인코더.
* ImageEncoderTiff - Tiff 파일을 위한 빌트인 인코더.
* ImageExchangeMetaData - 이 클래스는 Exif형 메타데이터를 갖는 ImageFiles에 대한 메타데이터를 액세스 및 설정하는 데 사용된다. MetaData는 Key/Value 쌍으로 저장되고, Key는 유일할 필요는 없다. 이 클래스는 이미지 내의 모든 메타데이터로의 일반적인 액세스를 제공할 뿐만 아니라, 특정의 잘 알려진 속성을 위해 CLR 속성을 드러낸다.
* ImageExchangeProperty - ImageExchangeID의 튜플(tuple)이고, 그 속성의 값인 객체이다.
* ImageMetaData - 이 클래스는 Images에 대한 메타데이터를 액세스 및 설정 하는 데 사용된다. 이 클래스는 또한 이 이미지에 대한 메타데이터를 액세스하는 코덱-특정 수단을 드러내는 CodecMetaData 속성을 드러낸다.
* ImagePalette - ImagePalette 클래스.
* ImageSizeOptions - 이미지에 대한 크기측정 옵션. 결과 이미지는 이 옵션에 기초하여 크기조정될 것이다.
* ImageSource - 디코더 및 효과를 포함하여, 이미징 파이프라인에 대한 메쏘드, 속성 및 이벤트를 정의한다.
* ImageSourceCollection - 시스템 상의 코덱의 (실제로 ImageSource의) 콜렉션.
* ImageSourceConverter - ImageSourceConverter
* IntegerCollection
* IntegerCollectionConverter - IntegerCollection 인스턴스로/인스턴스로부터 다른 타입의 인스턴스를 변환하는 변환자 클래스.
* LinearGradientBrush - 영역을 채우는 데 사용되는 선형 기울기를 정의한다.
* LineGeometry - 라인의 평면도형을 나타낸다.
* LineSegment - 2개의 지점 사이의 라인을 나타낸다. LineGeometry 객체와는 달리, LineSegment는 PathFigure 내에 포함되어야 한다.
* MatrixTransform - 2차원 평면에서 객체 또는 좌표계를 조작하는 데 사용되는 임의의 유사 매트릭스 변형을 생성한다.
* MediaData - Audio/Video 콘텐츠를 재생하는 데 사용된다.
* MediaSystem - MediaSystem 클래스는 미디어 계층을 제어한다.
* NineGridBrush - 전체 영역을 이미지로 채운다. 이미지 부분을 정의된 여백 내에 맞도록 늘인다.
* PathFigure - 평면도형의 서브-섹션, 단일 연결된 2차원 평면도형 세그먼트 시리즈를 나타낸다.
* PathFigureCollection
* PathFigureConverter - PathFigureConverter
* PathGeometry - 호, 곡선, 타원, 라인 및 사각형으로 구성될 수 있는 복잡한 형상을 나타낸다.
* PathGeometryConverter - PathGeometryConverter
* PathSegment - PathFigure 객체의 세그먼트를 나타내는 추상 클래스. ArcSegment, BezierSegment 및 LineSegment와 같은 PathSegment로부터 유도하는 클래스는 특정 타입의 평면도형 세그먼트를 나타낸다.
* PathSegmentCollection - PathSegment 객체의 리스트를 나타낸다.
* PathSegmentConverter - PathSegmentConverter
* Pen - 형상이 아웃라인되는 메쏘드를 기재한다.
* PixelFormats - 지언된 Pixel Format의 콜렉션.
* PointCollection
* PointCollectionConverter - 다른 타입의 인스턴스를 PointCollection 인 스턴스로/인스턴스로부터 변환하는 변환자 클래스.
* PointHitTestParameters - 이것은 지점(point)으로 히트 테스팅하는 파라미터를 지정하는 클래스이다.
* PointHitTestResult - 이 클래스는 지점 및 히트 테스트 통과 동안의 비주얼 히트를 리턴한다.
* PolyBezierSegment - PolyBezierSegment
* PolyLineSegment - PolyLineSegment
* PolyQuadraticBezierSegment - PolyQuadraticBezierSegment
* PrintContext - PrintContext는 프린터 상호작용에 대한 상태 및 컨텍스트를 보유한다.
* QuadraticBezierSegment - QuadraticBezierSegment
* RadialGradientBrush - 객체를 채우는 데 사용되는 방사식 평면도형을 정의한다. 초점(focal point)은 평면도형의 시작을 정의하고, 원은 평면도형의 종점을 정의한다.
* RectangleGeometry - 사각형의 평면도형을 나타낸다.
* RetainedVisual - RetainedVisual
* RotateTransform - 2차원의 x-y 평면에서 지정된 지점에 대하여 객체를 회전시키는 데 사용된다.
* ScaleTransform - 정의된 중심점으로부터 시작하여, 2차원의 x-y 평면에서 객체를 크기조정한다. 크기조정 계수는 이 중신점으로부터 x방향 및 y방향으로 정 의된다.
* SkewTransform - 2차원의 스큐(skew)를 나타낸다.
* SolidColorBrush - 고르고 균일한 채움(filling)을 나타낸다.
* StartSegment - StartSegment
* SubLineCollection - 서브라인의 콜렉션. 서브라인은 이 타입의 GlyphRunLineOver 객체 중 하나의 객체일 수 있다.
* TileBrush - 하나 이상의 "타일(tile)" 을 갖는 영역을 채우는 메쏘드를 기재하는 추상 클래스이다. 유도된 클래스는 사용될 수 있는 상이한 타입의 타일을 정의한다. 예를 들어, ImageBrush는 영역을 이미지로 채우는 것을 가능하게 한다.
* Transform - 회전(RotateTransform), 크기조정(ScaleTransform), 스큐(SkewTransform) 및 변환(TranslateTransform)을 포함하여, 2차원 평면에서 모든 타입의 변형의 부모 클래스로서 사용하는 추상 클래스이다. 이 클래스 계층은 그것이 클래스이고 애니메이션 및 열거 의미론을 지원한다는 두가지 이유 때문에 Matrix 구조체와 상이하다.
* TransformCollection - Transform 객체의 리스트를 생성 및 조작하는 데 사용된다.
* TransformConverter - Transform 객체를 또다른 객체 타입으로 또는 타입으로부터 변형하는 데 사용된다.
* TranslateTransform - 2차원의 x-y 평면에서 객체를 변형한다.
* Typeface - Typeface는 패밀리(family), 웨이트(weight), 스타일 및 스트레치(stretch)의 조합이다.
* VectorCollection
* VectorCollectionConverter - 다른 타입의 인스턴스를 VectorCollection 인스턴스로/인스턴스로부터 변화하는 변환자 클래스이다.
* VideoData - 타임 노드의 상태에 따라 비디오 파일의 재생을 가능하게 한다.
* VideoDataConverter - VideoDataConverter
* Visual - 모든 Visual 타입에 대한 베이스 클래스. 히트-테스팅, 좌표 변환 및 바운딩 박스 계산을 포함하여 모든 Visual에게 공통적인 서비스 및 속성을 제공한다.
* VisualCollection - Visual 객체의 순서화된 콜렉션.
* VisualManager - Visual 객체의 트리를 렌더링 타겟, 일반적으로 윈도우에게 렌더링한다.
<인터페이스>
* IHyphenate - IHyphenate은 Hyphenation Service Provider에 대한 인터페이스이다.
* IRetainedRender - 이 인터페이스가 RetainedVisual로부터 유도된 클래스 상에서 구현된다면, 검증 모드에서의 RetainedVisual 동작 즉, 그래픽 서브-시스템은 게으른 패션에서 OnRender를 호출할 것이다(예를 들어, Visual이 스크린에 처음 으로 나타나는 경우). OnRender는 아무때나 시스템에 의해 호출될 수 있다는 점에 유의한다.
* IVisual - 이 인터페이스는 Visual 객체로부터 사용가능한 공통의 메쏘드 및 서비스를 정의한다.
<열거>
* BrushMappingMode - 특정 값이 절대 로컬 좌표로 간주되어야 하는 지, 또는 그들이 복수의 바운딩 박스의 크기로 간주되어야 하는 지를 기재하는 Enum.
* ChannelDescription - 픽셀 데이터의 각 채널의 순서를 기재한다.
* ColorInterpolationMode - 이것은 기울기 내의 색이 삽입되는 메쏘드를 결정한다.
* CombineMode - 2개의 평면도형 영역을 바인딩하는 데 사용되는 메쏘드를 지정한다.
* FillRule
* GradientSpreadMethod - 기울기가 지정된 기울기 벡터 또는 공간의 외부에 그려지는 메쏘드를 지정한다.
* FillTestFilterBehavior - 히트 테스팅동안 비주얼을 필터링하는 거동
* HitTestResultBehavior - Enum은 히트 테스팅 동안 양의 히트가 발생할 때 거동을 제어한다.
* HorizontalAlignment - HorizontalAlignment 이넘(enum)은 콘텐츠가 컨테이너 내에서 수평으로 위치지정되는 메쏘드를 기재하는 데 사용된다.
* HyphenationRule - 지원된 Hyphenation Rule.
* ImagePaletteType - 소정의 팔레트 타입.
* MediaState - Media의 현재 상태를 보유한다.
* PenDashCap - 파선(dashed line) 내의 장점(dash)의 종단 그리기를 기재하는 Enum.
* PenLineCap - 라인 또는 세그먼트의 종단의 형상을 기재한다.
* PenLineJoin - 라인 상의 코너 그리기를 기재하는 Enum.
* Rotation - 회전이 적용된다. 복수의 90도만 지원된다.
* StandardColorSpace
* Stretch - 목적지 렉트(rect)에 맞도록 소스 렉트(rect)가 늘려지는 메쏘드를 기재하는 Enum.
* StyleSimulations - 폰트 스타일 시뮬레이션.
* TiffCompressOptions - TIFF 이미지를 저장하는 압축 옵션.
* TileMode - 라인의 종단 그리기를 기재하는 Enum.
* VerticalAlignment - VerticalAlignment Enum은 콘텐츠가 컨테이너 내에서 수직으로 위치지정되는 메쏘드를 기재하는 데 사용된다.
<구조체>
* CharacterIndexer - 이 클래스는 문자에 대해 명명된 인덱서를 구현하는 협력자이다.
* Color - 알파(alpha), 적색, 녹색 및 청색 채널에 관하여 색을 나타낸다.
* GlyphIndexer - 이 클래스는 그림 문자 매트릭스에 대해 명명된 인덱서를 구현하는 협력자이다.
* ImageExchangeID - 이 클래스는 ImageMetaData 인스턴스 내의 속성에 대하여 키로서 사용될 수 있는 타입이다. 이것은 정수 또는 스트링일 수 있다.
* ImageExchangeMetaDataEnumerator - ImageExchangeMetaData에 대한 열거자. IEnumerator 인터페이스 뿐만 아니라 API의 강하게 타이프(type)된 버전도 포함한다.
* ImageFrameEnumerator - Image Frame에 대한 열거자.
* ImageMetaDataRational - ImageMetaDataRational 클래스는 부호표시(signed) 계산자 및 부호표시 명명자로서 나타난다. 효과적인 유리(rational) 값은 계산자/명명자이다.
* ImageMetaDataUnsignedRational - 유리 클래스는 부호없는(unsigned) 계산자 및 부호없는 명명자로서 나타난다. 효과적인 유리 값은 계산자/명명자이다.
* ImagePaletteColor - ImagePaletteColor 구조체.
* IntegerRect - 정수 값으로 구성된 렉트. 이미지로부터 관심있는 (픽셀 내의) 소스 렉트를 지정하는 데 일반적으로 사용된다.
* Matrix - 2차원 공간에서의 변환에 사용되는 3×3 매트릭스를 나타낸다. "Avalon"은 유사 변형만을 허용하기 때문에, Matrix 구조체는 9 대신에 6개의 엔트리를 갖는다.
* NamedStringIndexer - 이 클래스는 복수의 문화에 로컬라이즈(localize)된 Matrix 스트링에 대한 명명된 인덱서를 구현하는 협력자이다.
* PixelFormat - 이미지 및 픽셀 기반의 표면에 대한 Pixel Format 정의
<델리게이트>
* GetPageEventHandler - 델리게이트 GetPageEventHandler
* HitTestFIlterDelegate - 비주얼의 자식에 대하여 테스트할 지를 제어하는 히트 테스터에 대한 델리게이트.
* HitTestResultDelegate - 비주얼 상의 히트 정보의 리턴을 제어하는 히트 테스터에 대한 델리게이트.
다음은 System.Windows.Media.Animation namespace에 의해 노출되는 예시적인 구성원들을 나열한다.
<클래스>
* Animatable - DependencyObject로부터 유도되지 않지만 움직여질 수 있는 속성을 갖는 임의의 클래스는 이 클래스로부터 유도해야한다.
* AnimationCollection - 이 추상 클래스는 ColorAnimationCollection, DoubleAnimationCollection 및 SizeAnimationCollection과 같은 애니메이션 콜렉션에게 베이스 기능을 제공한다.
* AnimationEffect - 렌더링 시간에 복수의 요소상에서 애니메이션을 실증하기 위하여 렌더링 프로세스에 참여할 수 있는 요소 레벨 애니메이션을 구현하는 이 클래스를 오버라이드한다.
* AnimationEffectCollection - AnimationEffect의 콜렉션을 보유한다.
* BoolAnimationCollect - BoolModifier 애니메이션의 콜렉션을 나타낸다.
* BoolModifier
* BoolTimedModifier
* ByteAnimationCollection - BoolModifier 애니메이션이 콜렉션을 나타낸다.
* ByteModifier
* ByteTimedModifier
* CharAnimationCollection - CharModifier 애니메이션의 콜렉션을 나타낸다.
* CharModifier
* CharTimedModifier
* ColorAnimation - 속성의 색 값을 움직인다.
* ColorAnimationCollection - ColorModifier 애니메이션의 콜렉션을 나타낸다.
* ColorKeyFrameCollection
* ColorModifier
* ColorTimedModifier
* DecimalAnimationCollection - DecimalModifier 애니메이션의 콜렉션을 나타낸다.
* DecimalModifier
* DecimalTimedModifier
* DoubleAnimation - Double 값을 수용하는 속성을 움직이는 데 사용된다.
* DoubleAnimationCollection - DoubleModifier 애니메이션의 콜렉션을 나타낸다.
* DoubleKeyFrameCollection
* DoubleModifier
* DoubleTimedModifier
* FloatAnimation - Single 값을 수용하는 속성을 움직이는 데 사용된다.
* FloatAnimationCollection - FloatModifier 애니케이션의 콜렉션을 나타낸다.
* FloatKeyFrameCollection
* FloatModifier
* FloatTimedModifier
* IntAnimationCollection - IntModifier 애니메이션의 콜렉션을 나타낸다.
* IntModifier
* IntTimedModifier
* LengthAnimation - Length 값을 수용하는 속성을 움직이는 데 사용된다.
* LengthAnimationCollection - LengthModifier 애니메이션의 콜렉션을 나타낸다.
* LengthKeyFrameCollection
* LengthModifier
* LengthTimedModifier
* LongAnimationCollection - LongModifier 애니메이션의 콜렉션을 나타낸다.
* LongModifier
* LongTimedModifier
* MatrixAnimationCollection - MatrixModifier 애니메이션의 콜렉션을 나타낸다.
* MatrixModifier
* MatrixTimedModifier
* Modifier
* ObjectAnimationCollection - ObjectModifier 애니메이션의 콜렉션을 나타낸다.
* ObjectModifier
* ObjectTimedModifier
* PathAnimation - 이 애니케이션은 경로를 따라 비주얼 객체를 움직이기 위하여 MatrixAnimationCollection의 내부에서 사용될 수 있다.
* PointAnimation - Point 값을 수용하는 속성을 움직이는 데 사용된다.
* PointAnimationCollection - PointModifier 애니메이션의 콜렉션을 나타낸 다.
* PointKeyFrameCollection
* PointModifier
* PointTimedModifier
* RectAnimation - Rect 값을 수용하는 속성을 움직이는 데 사용된다.
* RectAnimationCollection - RectModifier 애니메이션의 콜렉션을 나타낸다.
* RectKeyFrameCollection
* RectModifier
* RectTimedModifier
* ShortAnimationCollection - ShortModifier 애니메이션의 콜렉션을 나타낸다.
* ShortModifier
* ShortTimedModifier
* SizeAnimation - 객체의 Size에 기초하여 애니메이션을 정의한다. Size 정보를 제공함으로써, 객체는 일정 기간동안 줄어들거나 확대되어 보일 수 있다.
* SizeAnimationCollection - SizeModifier 애니메이션의 콜렉션을 나타낸다.
* SizeKeyFrameCollection
* SizeModifier
* SizeTimedModifier
* StringAnimationCollection - StringModifier 애니메이션의 콜렉션을 나타낸다.
* StringModifier
* StringTimedModifier
* Timeline - 시한 객체에 대한 상태를 타이밍하는 런-타임을 유지한다.
* TimelineBuilder - Timeline 객체를 생성하는 데 사용될 수 있는 객체.
* TimeManager - 전체 타이밍 트리를 제어하는 객체.
* TimeSyncValueTypeConverter - TimeSyncValue 값을 포함하는 타입 변환을 수행하는 객체.
* TimeTypeConverter - Time 값을 포함하는 타입 변환을 수행하는 객체.
* VectorAnimation - Vector 값을 수용하는 속성을 움직이는 데 사용된다.
* VectorAnimationCollection - VectorModifier 애니메이션의 콜렉션을 나타낸다.
* VectorKeyFrameCollection
* VectorModifier
* VectorTimedModifier
<인터페이스>
* IClock - 선형 시간 값을 제공할 수 있는 객체를 나타낸다.
* IModifier - 수정자 객체의 기본 거동을 정의한다. 수정자는 베이스 값(base value)이라고 불리는 특정 타입의 객체를 취하고 출력으로 동일한 타입의 또다른 객체를 리턴하는 객체이다.
* ITimingControl - 타임라인의 거동 및 시한 객체를 정의한다.
* ITimingControlBuilder - 타임라인 템플릿을 구축할 수 있는 객체를 나타낸다.
<열거>
* AnimationType - 애니메이션의 거동을 기재한다.
* CloneType - CloneCore가 요구할 수 있는 클론의 유형.
* InterpolationMethod - 어떻게 애니메이션이 그 자신의 출력 값들을 계산하는지를 기재한다.
* KeyTimeType - KeyTimes의 상이한 타입들.
* TimeEndSync - 어떻게 컨테이너가 자식 지속시간들에 기초하여 자신의 단순한 지속시간을 계산하는지를 지정하는 endSync 속성을 위한 값.
* Timefill - 어떻게 시간라인(timeline)이 그것이 더 이상 활성화되지 않은 후에 동작하는지를 지정한다.
* TimeRestart - Timeline.Restart 속성을 위한 값들.
* TimeSeekOrigin - 시간라인 위치를 지정한다; 오프셋 (offset)이 적용되는 위치를 정의해서 ITimngControl 인터페이스의 Seek 메쏘드의 동작을 지정하기 위해 사용된다.
* TimeSyncBase - 시작 또는 끝 값을 동기화하기 위한 이벤트.
<구조체>
* ColorKeyFrame -
* DoubleKeyFrame -
* FloatKeyFrame -
* KeySpline - 이 클래스는 키 스프라인들의 배열을 애니메이션 프래그먼트 (fragment)의 KeySplines 속성에 패스하기 위해 사용된다.
* KeyTime - KeyTime은 KeyFrame이 발생하는 애니메이션의 시간에 관련될 때를 지정하기 위해 사용된다.
* LengthKeyFrame -
* PointKeyFrame -
* RectKeyFrame -
* SizeKeyFrame -
* Time - 연계된 시간 연산 동작들로 시간을 나타내는 값.
* TimelineEnumerator - TimelineList 집합에 항목들을 열거한다.
* TimeSyncValue - 시간라인을 위해 절대 또는 상대 시작 또는 끝 시간을 나타내는 값.
* VectorKeyFrame -
다음은 System.Windows.Media.TextFormatting 네임스페이스에 의해 나타난 구성원의 예를 나열한다.
<클래스>
* InlineObjectInfo - 인라인 텍스트 객체들을 위해 상세 측정치들을 제공한다. 포맷팅 (formatting) 클라이언트는 이 객체를 파라미터로서 GetInlineObjectInfo 메쏘드에 패스한다.
* TextFormatter - TextFormatter는 "아발론 (Avalon)" 텍스트 엔진이고, 텍스트를 포맷팅하고 텍스트 라인들을 나누기 위한 서비스들을 제공한다. TextFormatter는 상이한 텍스트 문자 포맷들, 및 패러그래프 스타일들을 핸들링할 수 있고, 국제 텍스트 레이아웃 (international text layput)을 위한 지원을 포함한다.
* TextHighlightBounds - 텍스트 범위의 바운드들.
* TextInfo - 클라이언트의 텍스트 소스 문자 스토어 (text source character store)의 텍스트의 블럭에 대한 정보를 나타낸다.
* TextLine - 텍스트 라인에 서비스들을 제공한다. 이 클래스로부터 상속되어 텍스트 라인을 조작하고 포맷하는 서비스들을 구현한다. 이것은 추상 클래스이다.
* TextMarkerGeneratedContent - 라인 리스트 마커 출력 (line list marker output)을 생성한다.
* TextMarkerInfo - 패러그래프의 리스트 마커의 스타일 및 타입을 정의한다. 포맷팅 클라이언트는 이 클래스를 파라미터로서 사용해서 GetTextMarkerInfo 메쏘드에 마커의 상세사항을 제공한다.
* TextParagraphProperties - 흐름 방향(flow direction), 정렬(alignment), 또는 인덴트(indentation)와 같은, 한 패러그래프에서 다음 패러그래프으로 변할 수 있는 속성들을 나타낸다.
* TextRun - 단일 속성 세트를 공유하는 문자의 시퀀스를 정의한다. 포맷팅 클라이언트는, TextFormatter가 그것을 파라미터로서 GetTextRun 메쏘드에 패스할 때, TextRun 상세사항을 이 클래스에 제공한다.
* TextRunBounds - 텍스트 실행의 바운드들.
* TextRunCache - 성능 향상을 위해 캐싱 서비스를 TextFormatter 객체에게 제공한다.
* TextRunClientData - TextRun과 연계된 클라이언트 정보 데이터를 나타낸다.
* TextRunProperties - 글자체 또는 포어그라운드 브러쉬 (foreground brush)와 같은, 하나의 TextRun에서 다른 것으로 변화 시킬 수 있는 속성들을 제공한다. 이것은 추상 클래스이다.
* TextRunTypographyProperties - TextRun을 위한 타이포그러피 (typography) 속성들을 제공한다. 이 클라이언트 속성 세트는 OpenType 레이아웃 엔진에 의해 처리되는 특징들의 세트를 생성한다.
* TextSource - 문자 데이터 및 포맷팅 속성들을 TextFormatter에게 제공한다. TextSource의 텍스트로의 모든 액세스는 클라이언트가 선택한 임의의 방식으로 텍스트를 가상화하도록 하기 위해 디자인된 GetTextRun 메쏘드를 통해 성취된다. 이것은 추상 클래스이다.
* TextTrimmingInfo - 텍스트 트리밍 (trimming) 특징들의 기재를 제공한다. 포맷팅 클라이언트는, TextFormatter가 GetTextTrimmingInfo 메쏘드의 한 파라미터로서 그것을 패스할 때, 트리밍 상세사항을 이 클래스에 채운다.
<열거>
* TextParagraphFlags - 패러그래프 특징들을 기재하는 플래그(flag).
* TextRunCacheFlags - 텍스트 실행 캐시의 콘텐츠의 한 종류.
* TextRunType - TextRun 타입을 지정한다.
<구조체>
* TextSourceCharacterIndex - TextSourceCharacterIndex는 텍스트에서 캐럿 (caret) 또는 문자 위치를 나타낸다.
미디어 통합 계층
미디어 통합 계층 (Media Integration Layer, MIL)은, 정상 애플리케이션 성능을 악화시키는 영향을 주지 않는 방식으로 그래픽 프로세싱 유닛을 관리하면서, 개발자들 또는 프로그래머들이 쉬운 방식으로 그들의 애플리케이션들 내의 가능한 복잡한 컴포지션을 수행할 수 있도록 API를 제공한다. MIL의 한 양태는 상이한 미디어 타입들 (즉, 2D, 3D, 비디오, 오디오, 텍스트, 이미징등)을 조합하고, 그들을 무리없이 자연스럽게 함께 애니메이트(animate)하는 능력을 제공한다.
MIL은 프로그램 및 스크립트 인터페이스들에 기능적 패러티 (functional parity)를 허용하는 복수 단계 컴포지션 및 프로그램 모델을 위한 그래픽 아키텍쳐를 제공한다. API 및 스크립트는 유지된 구조체 또는 만들어 질 때 컴포지트되는 씬 디스크립션 (scene description)을 허용하지만, 더욱 즉각 모드 (immediate-mode) 성격을 갖는 분야들을 포함한다.
인터페이스들을 통해, MIL은, 애플리케이션들이 컴퓨터 하드웨어에 의해 제공된 그래픽 능력들의 잇점들을 가질 수 있도록, 시각 정보를 저장하기 위해 데이터 구조체에 액세스를 제공한다. 인터페이스들은 요소 객체 모델 및, 그래픽을 생성하기 위해 프로그램 코드 개발자들이 씬 그래프 데이터 구조체와 일관적으로 인터페이스하도록 하는 방식으로, 그 요소 객체 모델를 사용하기 위한 벡터 그래픽 마크업 언어 (markup labguage)에 기초한다. 데이터 구조체는, 신속한 컴포지션 및 애니메이션을 위한 하위 레벨 그래픽 시스템에 제공될 수 있도록, 직접 랜더링하거나 또는 시각 정보를 "컴파일"하기 위해 또한 사용될 수 있다.
벡터 그래픽 요소 객체 모델은, 씬 그래프의 씬 그래프 객체 모델과 상관하는 형상 요소 및 이미지와 비디오 요소들을 포함하는 기타 요소들에 일반적으로 대응한다. 마크업은 씬 그래프 데이터 구조체의 객체들로 번역되는 요소 트리 (element tree)의 요소들을 포함하는 데이터로 파스 (parse)될 수 있다. 기타 마크업은 데이터 및 씬 그래프 객체들을 생성하는 콜 (call)들에 직접 번역될 수 있다. 마크업 언어는, 마크업 내의 기타 위치들에서 재사용 가능한 단순한 스트링 포맷 또는, 명명될 수 있는, 복잡한 속성 신텍스 (syntax)를 포함하는, 요소를 기재하는 독특한 방식들을 제공한다.
MIL의 한 양태는, 고유의 기본 레벨 개념으로서 애니메이션을 제공하는, API 세트에서 애니메이션 및 타이밍의 결합이다. 자연스런 애니메이션을 용이하게 하 기 위해, MIL은 복수 레벨 그래픽 프로세싱 시스템 및 방법 (즉, 운영 체제의)을 제공한다. 한 가지 그런 복수 레벨 그래픽 프로세싱 시스템은, 틱-온-디맨드 (tick-on-demand) 또는 슬로우-틱 (slow-tick) 높은 레벨 컴포넌트, 및 패스트-틱 (fast-tick) 낮은 레벨 컴포넌트를 포함한, 2 개의 컴포넌트들을 포함한다. 일반적으로, 높은 레벨의 덜 빈번한 컴포넌트는, 단순화된 데이터 구조체들을 낮은 레벨 컴포넌트로 패스하기 위해, 애니메니션 파라미터들을 업데이트하고 씬 데이터 구조체들을 트래버스하는 계산량이 많은 양태들을 수행한다. 낮은 레벨 컴포넌트는 그래픽 서브시스템을 위해 데이터 구조체들을 일정 출력 데이터로 프로세스하기 위해, 그래픽 서브시스템의 프래임 리프레쉬 비율 (frame refresh rate)과 같은 높은 주파수에서 동작한다. 낮은 레벨 프로세싱은 애니메이션의 각 프래임을 위한 씬을 랜더링하기 위해 즉각적 값들을 얻기 위해 필요하면 임의의 파라미터 간격들을 인터폴레이트하는 것을 포함한다.
최상위 레벨 MIL 객체들은, 드로잉되는 메인 콘텐츠 (main content)를 포함하는 객체인, 비쥬얼 트리를 포함한다. 컨트롤들은 트리의 비쥬얼들로부터 직접 유도된다. 비쥬얼들은 장치가고 부모 컨텍스트와는 독립적이다. 랜더 타겟 (render target)은 비쥬얼이 드로잉되는 장치가다. 이 객체 (예를 들어, 스크린)는 그자신의 더티 (dirty) 또는 무효화 메카니즘 (invalidation mechanism)을 가질 수 있다. 다양한 랜더 타겟들은 윈도우의 스크린, 프린터, 메타파일 (Metafile), 표면(Surface), 및 나머지 씬으로부터 분리되어 드로잉된 씬의 일부인 "서브-윈도우 (Sub-window)"를 포함한다. 기타 드로잉 관련 객체들은, 비쥬얼 트리를 랜더 타겟에 드로잉하도록 설정되는 객체를 포함하는 비쥬얼 랜더러 (Visual Renderer), 및 언제 비쥬얼 트리를 랜더 타겟에 드로잉하는지를 아는 디스플레이 스케쥴러 (Display Scheduler) 객체를 포함한다. 시간 관리자 (Time Manager)는 시간 노드들의 세트를 위한 컨텍스트 객체이고, 스케쥴러가 틱 온 (tick-on)을 콜하는 객체이다.
기본적으로 미디어 통합 계층을 통한 드로잉을 위한 시작점이고, 비쥬얼 트리를 미디어에 연결하는 비쥬얼 관리자 (VisualManager) 객체를 포함하는 복수 타입의 객체들을 포함하는, 비쥬얼 API가 제공된다. 다른 타입들의 비쥬얼 관리자들 (예를 들어, 스크린, 프린터, 및 표면)은 비쥬얼 트리 (Visual Tree)를 그들의 특정 미디어에 랜더링하는 책임이 있다. 비쥬얼은 프로그래머가 드로잉을 하는 곳이다. 그것은 비쥬얼 트리에서 노드이고, 프로그램이 드로잉하는 장소를 제공한다.
드로잉컨텍스트 (DrawingContext) APIs는 비쥬얼을 채우거나 이미지데이터 (ImageData)에 랜더링되는 비쥬얼 콘텐츠를 어떻게 구성하는지에 대한 컨텍스트 기반 프로그래밍 모델을 제공한다. 드로잉컨텍스트를 얻기 위해 필요한 클래스들 및 엔트리포인트들 (entrypoints)을 비롯해서, 드로잉컨텍스트 클래스들은 제공되고, 유지된비쥬얼/드로잉비쥬얼 (RetainedVisual/DrawingVisual)에 비쥬얼 콘텐츠를 열거한다.
변환성 (mutability)을 가능하게 하기 위해, 공통 가변성 (Changeable) 베이스 클래스로부터 유도되는 타입들의 싱글 세트가 제공된다. 변환성이 바람직한 임의의 타입은 가변성 클래스로부터 유도될 수 있다. 예를 들어, 그래픽 프로그래밍 에서, 객체 모델은 브러쉬들, 펜들, 도형들, 플로트애니메이션들 (FloatAnimation), 그래디언트스탑들 (GradientStop), 세그먼트들 등을 포함한다. 가변적인가 (IsChangeable) 속성은 가변 객체가 상태를 정의하는 그 자신의 현재 값에 의존해서 수정될 수 있는지 여부를 지정한다
브러쉬는 평면을 채우기 위한 방법을 나타내는 객체이다. 절대적 방식 (absolute way)으로 평면을 채울 수 있기 위한 것에 추가해서, 미디어 통합 계층의 브러쉬들은 또한 그들이 채우고 있는 객체의 크기에 관련해서 어떻게 그들이 평면을 채우는지를 적합화할 수 있다. 브러쉬 타입의 예들은 솔리드칼라브러쉬 (SolidColorBrush), 비쥬얼브러쉬 (VisualBrush) (벡터 그래픽 리소스/비쥬얼을 참조할 수 있음), 드로잉브러쉬 (DrawingBrush), 리니어그래디언트 (LinearGradient), 래디얼그래디언트 (RadialGradient), 이미지브러쉬 (ImageBrush), 및 나인그리드브러쉬 (NineGridBrush)를 포함한다. 특정 브러쉬 객체들은, 그들이 사용될 때 어떻게 그들이 좌표계와 관련있는지에 대한 아이디어, 및 어떻게 그들이 그들이 사용되는 도형의 바운딩 박스 (bounding box)와 관련있는지에 대한 아이디어를 가질 것이다. 이 크기는 브러쉬가 채우고 있는 객체에 기초한다. 브러쉬 (Brush) 베이스 클래스는 트랜스폼 (Transform), 일반 투명성 (general opacity), 및 블랜드 모드 (blend mode)를 갖는다. 브러쉬 (및 벡터 그래픽 (Vector Graphics) 및 MIL API의 기타 객체 리소스들) 객체들은 가변성 (Changeable)들이고, 그들이 생성된 후에 기록 가능하고, 그리고 어떻게 그들이 자격이 된 사용 이후에 동작하는지에 대한 일반 가변성 패턴을 따른다.
객체들의 도형 클래스는 클리핑 (clipping), 히트 테스팅 (hit-testing), 및 펜 및 브러쉬로 2D 벡터 기반 데이터의 랜더링을 위해 사용될 수 있다. 유도된 도형 클래스들은 더욱 구체적 빌딩 (building) 및 열거 (enumeration) 세만틱 (semantics)을 제공한다. 더욱 복잡한 형상의 도형의 명백한 정의를 허용하는 일반화된 경로도형 (PathGeometry)을 비롯해서, 다수의 형상 고유의 도형 타입들이 제공된다. 도형은 추상 (abstract) 베이스 클래스가다. 도형집합 (GeometryCollection)은 그들의 정의된 영역에 특정 조합모드 (CombineMode) 동작들을 사용해서 조합되는 복수 도형 객체들의 집합이다. 이 객체는, 경로도형 (PathGeometry)내에 경로피궈 (PathFigure) 객체들을 엄격하게 사용할 수 있기 보다는, 도형 객체들의 비쥬얼 조합들을 더 쉽게 빌딩하도록 한다.
이미지소스 (ImageSource)는 이미징을 위해 기본 빌딩 블럭을 포함하는 추상 클래스이다. 이미지소스는 특정 크기 및 해상도에 픽셀들의 싱글, 일정 세트를 개념적으로 나타낸다. 예를 들어, 이미지소스는 디코더 (Decorder)가 제공할 수 있는 이미지 파일에 싱글 프래임일 수 있거나, 그것은 그 자신의 특정 이미지소스에 동작시키는 트랜스폼의 결과들일 수 있다. 이미지소스는, 그 자신의 속성들이 변화될 수 있기 때문이 아니고, 그 자신의 서브 클래스들의 속성들이 잠재적으로 변화될 수 있기 때문에 가변성이다.
객체들의 트랜스폼 클래스는 벡터 및 래스터 (raster) 그래픽을 스케일링 (scaling), 회전 (rotating), 공간이동 (translating), 및 스큐잉 (skewing)하기 위해 제공된다. 유도된 트랜스폼 클래스들은 친화적 용법 및 열거 세만틱을 제공 한다.
효과들은 랜더링 중심의 방식으로 씬의 비쥬얼 콘텐츠들을 변경하기 위한 수단을 제공한다. 예를 들어, 비쥬얼효과 (VisualEffect) {래스터 기반 (raster-based) 비트맵 효과들}는 씬의 일부의 이미지 기반, 완전 컴포지트된 표현에 동작한다. 효과들은 비쥬얼효과 (VisualEffects), 블랜드모드 (BlendModes), 및 벡터효과 (VectorEffects)을 포함하는 다양한 타입들에 분리된다. 비쥬얼효과들은 서브그래프 또는 요소에 그것을 적용해서 유지모드 씬에서 사용될 수 있거나, 그것은 자립형 이미지 파이프라인 (standalone image pipeline)에서 사용될 수 있다. 블랜드모드들은 이미지 기반 효과들의 특정 형태이고, 비쥬얼효과들과 일반적으로 동일 방식으로 유지된 모드 씬에 적용될 수 있다. 블랜드 모드들은, 소스가, 예를 들어, 곱셈 도는 덧셈으로, 컴포지트되면, 소스 (source) 및 목적 칼라 (destination color)들의 조합을 수행한다.
히트 테스팅은 씬에서 비쥬얼을 픽업하기 위해 사용되고, 컨트롤 트리의 최상위로부터 시작해서, 그리고 포인트나 도형으로 컨트롤 또는 컨트롤들의 세트를 리턴해서 동작한다. 컨트롤은, 그것이 랜더링된 도형, 바운딩 박스, 아웃-오브-밴드 (out-of-band) 도형 (히트 영역), 이미지 투명성 또는 마스크, 및 그 자신의 로직을 포함하는 지원 서비스들을 히트했는지의 여부를 정의할 수 있다. 컨트롤은 히트에 특정 히트 관련 데이터를 리턴할 수 있다. 히트 테스트 메카니즘은 효율적 방식으로 히트 테스트 결과들을 필터링할 수 있다. 히트 테스트 워크 (hit test walk)는, z-오더 (z-order), 상하 (top-to-bottom) 방식의 콜백 (callback)을 통해 리포트된 히트들을 갖는, 비쥬얼 트리의 우측에서 좌측으로의 워크이다. 점강 (descending)할 때, 히트 테스터는 요소 레벨 관계들의 형태로, 예를 들어, 형상들을 갖는 캔버스, 또는 내부 캔버스들을 갖는 도크 패널 (dock panel), 필터링을 바라본다. 히트가 발생했을 때, 히트 테스터는 추가 히트들 (존재하면)을 프로세싱하기를 계속하거나, 또는 정지할 수 있다.
애니메이션 시스템은 시간 컨트롤 엔진 및 애니메이션 객체들의 세트를 포함해서 제공된다. 시간 엔진은 시간 변이 동작들을 나타내는 임의의 객체들, 예를 들어, 애니메이션들 ,및 오디오 또는 비디오 미디어 객체들, 에 의해 사용될 수 있는 서비스이다. 애니메이션 객체들은 시간 스팬 (time span)을 기타 데이터 타입들로 맵핑하는 함수들의 세트를 구현하고, 그 다음, 이것은 다른 높은 레벨 객체들의 입력으로서 사용된다. 그래픽 애니메이션은 애니메이션 집합을 랜더링 동작과 연계해서 성취된다. 랜더링 동작에서 사용된 각 애니메이션은, "시간라인 (timeline)"이라고 불리우는, 분리된 클럭 (clock)에 기반해서 실행될 것이다. 일단 애니메이트된 프리미티브 (primitive)가 드로잉되고, 애니메이션 파라미터들이 지정되면, 낮은 레벨 랜더링 시스템은 정기적 간격들에 씬을 다시 드로잉하는 것을 관리한다. 각 시간에 프래임이 랜더링되는, 씬에 관련된 애니메이션들의 현재 값은 경과 시간 (대부분의 경우 시스템 클럭에 의해 측정됨)에 기초해서 계산되고, 그 다음, 애니메이트된 프리미티브들은 다시 드로잉된다.
다양한 프리미티브 타입들, 칼라 특징들 및 미디어 지원은 또한 MIL을 통해 제공된다. 미디어데이터 (MediaData)는 임의의 오디오/비디오 콘텐츠를 플래이하기 위해 사용될 수 있다.
Design 네임스페이스
Design 네임스페이스(320)는 형태들 및 텍스트 편집, 데이터 포맷팅, 프로세스간 데이터 공유를 가능하게 하는 클래스들을 제공한다. 이런 클래스들은 서류들, 애플리케이션들, 및 기타 콘텐츠를 편집하기 위한 확장 가능 프래임워크를 제공한다. Design 네임스페이스(320)는 2 개 레벨들에서 기능을 포함한다: 상이한 타입들의 정보를 위한 프리-팩키지된 (pre-packaged) 사용가능 편집기들을 원하는 응용 프로 그램 개발자들을 위한 높은 레벨 기능; 및 그 자신의 타입들의 데이터를 소개하는 더욱 진보된 애플리케이션들을 위한 낮은 레벨 기능. 프리-팩키지된 사용가능 편집기들의 예는 플레인 텍스트 (plain text) 편집, 리치 텍스트 (rich text) 편집, 형태 (요소 레이아웃) 편집, 및 패스워드 입력을 제공한다.
Design 네임스페이스(320)는 다양한 기능성을 구조화하는 유연하고 확장 가능한 접근법을 제공한다. 일반적인 고정 특징 (fixed-feature) 편집기를 제공하는 대신에, Design 네임스페이스(320)는, 개발자들이 특수하고 쉽게 맞춤형이 될 수 있는 정보 편집 해결책들을 빌드할 수 있도록 하는 서비스들, 동작들, 및 추상들의 조합을 제공한다. Design 네임스페이스(320)는 다음을 포함하는 여러 개의 맞춤 가능 편집 특징들을 포함한다: 스코프된 (scoped) 서비스들, 스택 가능한 (stackable) 동작들, 편집기-디자이너 패턴, 요소 편집을 위한 추상 디자이너, 추상 텍스트 객체 모델, 어도너 레이어 (adorner layer), 디자인 표면 (design surface), 일반화된 데이터 전송 프로토콜, 및 확장 가능 언두 (undo) 메카니즘.
스코프된 서비스들은 애플리케이션 데이터의 특정 부분들 및 서브-부분들 (sub-portions)을 갖는 특수 서비스들의 연계를 허용한다. 이 메카니즘은 또한 다른 스코프들 (scopes)에서 서비스들을 온 (on) 및 오프 (off)하도록 한다. 서비스들을 위한 지원을 제공하는 메인 클래스는 ServiceManager이다; 개인 서비스들은 IService 및 IScopedService 인터페이스들을 사용해서 구현된다.
"스택 가능한 동작들"의 개념은 상이한 동작들이 적절한 시간 기간 동안 활성화되도록 한다. 한 실시예에서, 더욱 일반적 프로세스가 임시 보류되었다가 그다음 적절히 재생되는 가운데, 서브-프로세스는 시작되고 종료될 수 있도록, 시간 기반 동작 활성화는 내포(nested)된다. 솔루션을 하드 코딩하는 대신에, 스택 가능한 동작의 접근법은 서로간에 미리 정의된 지식 없는 프로세스들의 결합을 허용해서 이 문제를 해결한다. 이 메카니즘에 대한 지원을 제공하는 메인 클래스는 EditRouter이다; 개인 동작들은 편집기 (Editor) 및 편집동작 (EditorBehavior) 클래스들의 서브 클래스들이다. 편집 가능 데이터의 빌트-인 (built-in) 타입들은, 텍스트 편집기 (TextEditor), 요소편집기 (ElementEditor), 및 이동동작 (MoveBehavior)과 같은 대응하는 편집동작의 서브 클래스들에 의해 지원된다.
"편집기-디자이너 패턴"의 개념은 일반 편집 기능과 편집 가능 정보의 더욱 특수한 서브-타입 간의 분리를 허용한다. 편집기는 동작할 특수 데이터 구조체를 기대하지 않는다. 대신에, 데이터 콘텐츠는, 구현 상세성은 숨기지만 편집 인터랙션의 대응하는 액션에 충분한, 일부 추상 인터페이스를 통해 나타남을 가정한다. 이 패턴은 특히 요소들 (형태 편집에서) 및 텍스트 (리치 텍스트 편집)를 위해 유용하다.
"요소 편집을 위한 추상 디자이너"는 요소 편집 (예를 들어, 형태 편집)의 영역을 위한 "편집기 디자이너 패턴"의 적용이다. 다양한 요소들은 상이한 내부 구조체들, 외관들, 및 동작들을 가질 수 있지만, 그들이 이동, 회전, 또는 재크기측정을 위한 일부 표준 "디자이너들"을 나타내면, 그들은 요소 편집기에 의해 편집 가능해 진다.
추상 텍스트 모델은 리치 텍스트 편집에서 사용을 위해 "에디터-디자이너 패턴"의 다른 적용이다. 이 추상화는 상이한 백킹 스토어들 (backing stores)이, RTF, XHTML, 플래인 텍스트, XAML, 마크업, 언어상 하이라이트된 소스 코드 등과 같은, 리치 텍스트 편집에 참여하도록 한다. 이런 타입들의 텍스트들의 시멘틱(semantic) 성질 및 내부 구조는 상이할 수 있지만, 추상 텍스트 모델을 통해 그 자신을 드러냄으로써, 그들은 애플리케이션에 일반 편집 메카니즘들의 적용을 허용한다. 추가로, 무리없는 편집을 제공하는 가운데, 상이한 백킹 스토어들로부터의 텍스트는 서로의 피스들 (pieces)을 포함할 수 있도록, 이 접근법은 텍스트 및 데이터 결합을 허용한다.
어도너(adorner) 레이어는 편집 동안 리치 비쥬얼 피드백 (rich visual feedback)을 제공하는 일체된 툴이다. 어도너 레이어는 다수 타입들의 피드백을 위해 균일한 지원을 제공한다. 강력한 비쥬얼들은, 그들에게 적용 가능한 잠재적 사용자 액티버티 (activity)를 지정하기 위해 요소들 및 데이터의 기타 부분들에 동적으로 부착되고 분리될 수 있다. 디자인 표면은, 어도너 레이어 및 편집 라우터와 같은, 편집 리소스들을 프리-패키지하는 XAML 컨트롤이다. 이것은 중간 레벨 편집 개발을 단순화한다.
잘라내기/복사/붙이기 및 드래그/드랍(Drag/Drop)과 같은 편집 기능들은 결합 정보 환경에서 중요하지만, 상이한 데이터 타입들의 복잡성 및 비호환성 때문에 지원하기 어려울 수 있다. 일반화된 데이터 전송 프로토콜은 데이터 재생, 데이터 삽입, 데이터 드래깅, 및 데이터 변환을 위해 사용되는 추상들의 조합을 위해 제공해서 이 어려움을 해결한다. 이 일반화된 데이터 전송 프로토콜은 애플리케이션-데이터 결합을 위한 강력하고 유연한 메카니즘을 제공한다.
확장 가능 언두(undo) 메카니즘은 다양한 타입들의 데이터를 수집해서 언두 스택을 관리한다. 언두 관리자는 상이한 데이터 타입들을 갖는 언두 동작들을 핸들링하기 위한 프로토콜들을 포함한다.
다음은 System.Windows.Design 네임스페이스에 의해 나타내진 구성원들의 예를 나열한다.
<클래스>
* ActivatonEventFilter - EventFilter
* ActivationRectangleAdornerInfo - 이것은 DesignActive 요소들에 경계를 나타내는 피드백이다.
* AdornerInfo - 어도너세트 (adornerset) 내의 특정 어도너에 대한 정보를 제공한다.
* AdornerLayer - Z-오더 (Z-order)를 능가할 필요가 있는 (요소들은 항상 최상위에 있을 필요가 있음) 요소들에 데코레이션들 (decorations)을 디스플레이하기 위한 표면를 제공한다.
* CanvasDesigner - 디폴트 캔버스(Default Canvas) 디자이너.
* ComponentChangeService - 컴포넌트들에 영향 미치는 디자인 시간 액션들을 위한 언두 (undo) 및 리두 (redo) 기능을 제공한다.
* Designer - 라이브 콘텐츠 (live content)의 편집 수단을 제공한다.
* DesignerFilterService - 애플리케이션들 및 컨트롤들이 요소와 DesignerLookupService에 의해 제공된 디자이너 간의 디폴트 맵핑을 오버라이드하기 위해 구현할 수 있는 선택 서비스를 정의한다.
* DesignerLookupService - 편집 동작들이 요소들을 디자이너들에 맵핑하도록 한다.
* DesignerSurface - 편집 가능 콘텐츠를 위한 추천되는 루트 요소. 어도너들, 서비스들, 및 이벤트들을 수집한다.
* EditorBehavior - 모든 편집 동작들을 위한 구현을 정의한다.
* Editor - 텍스트, 요소, 또는 표와 같은, 특정 선택 타입을 위한 사용자 입력을 핸들링한다. 전형적으로, 각 선택 타입에 대해 특정 편집기가 있다.
* EditorTypeAttribute - 선택 타입을 선택 모드와 연계시킨다. 이 클래스는 상속될 수 없다.
* EditRouter - 현재 활성화된 EditBehaviors의 세트를 관리한다.
* EditRouterChangedEventArgs - Changed 이벤트의 인수들.
* ElementEditor - 요소 편집기.
* EventFilter - 이벤트 필터링 및 할당을 가능하게 한다.
* FrameworkElementDesigner - FrameworkElement로부터 유도한 모든 컨트롤들을 위한 디폴트 Designer.
* MoveBehavior - 이동 동작.
* ObjectSelection - 사이트 (site) 선택.
* ParentUndoUnit - ParentUndoUnit.
* RichTextDesigner - ITextDocumentResult를 지원하는 TextPanel 및 기타 컨트롤들에 대한 ITextDesigner 구현.
* RoutedEventAdapter - 한 개 핸들러가 상이한 타입들의 이벤트들을 핸들링할 수 있도록, RoutedEventAdapter는 특정 eventHandler를 RoutedEventHandler에 썽크 (thunk)한다.
* SelectionRouter - SelectionRouter는 복수 선택 모드들로 복합 (mixed) 선택을 컨트롤한다. 그것은 EditRouter로부터 유도해서 이벤트들을 모듈라 편집기들 (modular editors) (Editor로부터 유도함)에 라우트한다.
* SelectionService - UI 항목들의 선택에 프로그램적 액세스를 제공한다. 변화 선택된 항목들 및 그들의 속성들을 비롯해서, 선택된 항목들에 대해 피드백을 얻을 수 있다.
* ServiceConverter - 스트링 및 IService의 인스턴스 (instance) 간에 변 환을 위한 Converter 클래스.
* SimpleTextDesigner - ITextParagraphResult를 지원하는 Text 및 기타 컨트롤들에 대한 ITextDesigner 구현.
* TextDecorator - Text Decorator는 경쟁 서비스들로부터 텍스트 데코레이션을 관리하는 객체를 정의한다. 속성 값들을 기록하는 대신에, TextDecorator를 사용하는 것은, 동일 우선순위 경우에서도, 경쟁 데코레이션이 오버랩하지 않음을 사적으로 확실시 한다.
* TextEditor - 텍스트 선택 서비스들을 제공한다.
* TextSelection - TextSelection 클래스는 TextEditor 클래스의 선택 상태를 포함한다. 그것은 공중 컨스트럭터 (public constructor)를 갖지 않지만, TextEditor에 공중 속성을 통해 나타난다.
* UndoService - IUndoService의 프래임워크 구현.
* UndoStackChangedEventArgs - UndoStackChanged 및 RedoStackChanged 이벤트들에 대해 데이터를 제공한다.
<인터페이스>
* IAddRemoveChildDesigner - IAddRemoveChildDesigner 인터페이스는 자식 추가/삭제를 위해 사용된다.
* IAdorerDesigner - FrameworkElements에 어도너를 드로잉하기 위해 필요 객체들을 검색수취하도록 하는 메쏘드에 대한 액세스를 제공한다.
* IDesignActivationContainer - designActive가 될 수 있는 DesignActivation의 내부 요소. 한 요소가 DesignActive이면, 거의 아마도 특정 자식 콘텐츠를 편집할 것이라는 가정에서, 상기 이름의 컨테이너를 갖는다.
* IDesignActivationContainerParent - IDesignActivationContainerParent는 Design 환경에서 호스트 IDesignActivationContainer의 것이 될 수 있다.
* IDesignSurface - 편집에 참여하기를 원하는 임의의 요소에 의해 구현되는 인터페이스.
* IMoveDesigner - 이동 디자이너 인터페이스.
* IParentUndoUnit - IParentUndoUnit 인터페이스.
* IScopedService - IScopedService.
* ISelection - 선택 모드들에 대한 기본 인터페이스.
* ISelectionDesigner - SelectionBehavior (SelectionRouter)와 연계된 Designer 인터페이스. 이것을 구현하는 클래스는 요소 타입의 Designer Attribute에 지정될 것이다.
* IService - 이것은 편집 서비스들에 대한 TypeConverter를 위한 플레이스홀더 (placeholder)이다.
* ITextDesigner - 인터페이스 컴포넌트들은 레이아웃 고유 정보 및 액션들을 갖는 TextEditor 서비스를 제공하기 위해 구현한다.
* IUndoService - IUndoService 인터페이스.
* IUndoUnit - IUndoUnit 인터페이스.
<열거>
* AdornerInfoZOrder - Z-오더 플래그들
* AdornerRenderTriggers - 어도너들이 다시 랜더링하게 하는 조건들을 지시하는 플래그들.
* EditRouterChange - 가능한 라우터 변화 액션들의 열거.
* TextDecorationPriority - TextDecorationPriority는 다양한 텍스트 마크업의 상대 중요도를 랭크 (rank)한다. TextDecorator 클래스의 데코레이션 실행을 Z-오더하기 위해 사용된다.
* UndoState - 언두 관리자의 상태에 대한 열거.
<델리게이트>
* UndoStackChangedEventHandler - UndoStackChanged 또는 RedoStackChanged 이벤트를 핸들링하는 메쏘드를 나타낸다.
Input 네임스페이스
Input 네임스페이스(322)는 시스템에 의해 수신된 입력들을 코디네이트 (coodinate)하는 입력 관리자를 포함한다. Input 네임스페이스(322)는 또한, 키보드 또는 마우스와 같은, 상이한 입력 장치들에 대한 컨트롤을 관리하고 제공하기 위해 도움을 주는 클래스들을 포함한다. 입력 시스템은, 마우스들, 키보드들, 및 스타일러스들 (펜들)과 같은, 입력 장치들로부터 애플리케이션들이 정보를 얻도록 한다. 대부분의 입력 기능은 System.Windows 네임스페이스에서 UIElement의 이벤트들, FrameworkElement, ContentElement, 및 ContentFrameworkElement 클래스들에 서, 속성들, 메쏘드들, 및 이벤트들의 형태이다. UIElement 및 ContentElement는 IInputElement 인터페이스에 의해 캡춰되는 유사 입력 기능을 갖는다. 유사하게, UIElement 및 ContentElement으로부터 각각 유도된 FrameworkElement 및 ContentFrameworkElement는 다수의 입력 API들을 공유하고, 둘 다는 IFrameworkInputElement를 구현한다.
입력 시스템은 키보드들, 마우스들, 및 스타일러스들을 위한 완전 지원을 제공한다. 키보드 기능은 키다운/업 이벤트들, 포커스 관리 및 통지, 현재 키 상태 액세스, 및 키스트로크들을 입력 스트링들로 변환하는 것을 포함한다. 마우스 기능은 마우스 위치, 클릭들, 이동, 요소 경계들에서 엔터/리브 (enter/leave) 이벤트들, 마우스 캡춰 (capture), 호버 (hover), 및 마우스 휠을 포함한다. 스타일러스 기능은 위치, 이동 (펜이 표면에 닿을 때, 및 그것이 "공중에" 있을 때 모두), 탭들/클릭들 (taps/clicks), 캡춰, 및 제스춰 인식을 포함한다.
Input 네임스페이스는, 열거들, 이벤트 인수들, 델리게이트 시그너춰들 등과 같은, 상술된 기능을 위해 필요한 도움 클래스들을 포함한다. 추가로, Input 네임스페이스는 장치들의 현재 상태에 관련된 정보를 제공하는 키보드, 마우스, 및 스타일러스 클래스들을 포함한다. 입력 시스템은, 전체 애플리케이션에 대해, 특정 요소에 전체 애플리케이션에 대해, 마우스 커서들을 지정하는 메쏘드를 제공한다.
입력 시스템은, 새 텍스트가 입력되고 있는 텍스트 컨텍스트를 다른 입력 소프트웨어가 이해하도록 하는 Text Services Framework (TSF)과 결합된다. 이것은, 동아시아 언어들의 사용자들이 복수 키스트로크들을 싱글 문자로 바꾸도록 하는, 입력 방법 편집기들 (IMEs)에 의해 사용된다 - IME 소프트웨어는 TSF와 통신해서 컨텍스트에 기초해서 키스트로크들의 최상의 해석을 식별해 내고, TSF를 사용해서 텍스트를 문서에 삽입한다. 유사하게, 음성 인식은 TSF를 사용해서 최상의 인식을 얻고, 그것을 문서에 삽입한다.
입력 시스템은, TextInput 이벤트의 형태로, TSF와 자동화 결합을 제공한다. Input 네임스페이스는 또한 텍스트 컨텍스트를 기재하고, 행 (raw) 키보드 입력으로부터 텍스트 입력으로 변환을 컨트롤하기 위한 API들을 제공한다. InputManager 클래스는, 제 3자가 입력 스트림을 관찰하도록 하고, 원천 입력 (original input) 이벤트들이 파이어(fire) 되기 전에 새 입력 이벤트들을 생성하는, 필터들 및 모니터들을 제공한다. InputManager는 또한, IInputProvider 및 InputReport를 사용해서, 새 장치들이 입력 시스템으로 플러그인 (plug-in)되게 하는 API들을 제공한다.
다음은 System.Windows.Input 네임스페이스에 의해 나타나는 구성원들의 예를 나열한다.
<클래스>
* AccessKeyManager - AccessKeyManager는 또한 니모닉 (mnemonics)이라고도 알려진 액세스 키 기능을 나타낸다. 전형적 예는 alt-O가 니모닉인 Ok 버튼이다 - alt-O를 누르는 것은 그 버튼을 클릭킹하는 것과 동일하다.
* Cursor - 사용할 마우스 커서를 나타낸다.
* CursorTypeConverter - 마우스 커서들을 스트링들로(부터) 변환한다.
* FocusChangedEventArgs - FocusChangedEventArgs 클래스는 포커스 변화들에 대한 정보를 포함한다.
* InputDevice - 모든 입력 장치들에 대해 베이스 클래스를 제공한다.
* InputEventArgs - InputEventArgs 클래스는 모든 입력 이벤트들에 관련 있는 RoutedEventArgs의 한 타입을 나타낸다.
* InputLanguageChangedEventArgs - 이 InputLanguageEventArgs 클래스는 (인간) 입력 언어의 변화를 지시하기 위해 발생시킨 이벤트들에 관련 있는 RoutedEventArgs의 한 타입을 나타낸다.
* InputLanguageChangingEventArgs - 이 InputLanguageEventArgs 클래스는 (인간) 입력 언어의 변화를 지시하기 위해 발생시킨 이벤트들에 관련 있는 RoutedEventArgs의 한 타입을 나타낸다.
* InputLanguageEventArgs - 이 InputLanguageEventArgs 클래스는 (인간) 입력 언어의 변화를 지시하기 위해 발생시킨 이벤트들에 관련 있는 RoutedEventArgs의 한 타입을 나타낸다.
* InputLanguageManager - InputLanguageManager 클래스는 아발론 (Avalon)에 입력 언어를 관리하는 책임이 있다.
* InputManager - InputManager 클래스는 "아발론"의 전체 입력 시스템을 코디네이트하는 책임이 있다.
* InputMethod - InputMethod 클래스는, TIP 속성들과 통신하거나 액세스하는 TSF 관련 API들을 나타낸다.
* InputMethodStateChangedEventArgs - 이 InputMethodStateChangedEventArgs 클래스는 입력 메쏘드 편집기 (input method editor (IME))가 그 자신의 상태를 변화시킬 때 사용될 수 있다.
* InputProviderSite - 입력 제공자들이 입력을 입력 관리자에게 리포트하기 위해 사용하는 객체.
* InputReport - InputReport는 InputManager에 리포트되는 모든 입력들에 대한 추상 베이스 클래스가다.
* InputReportEventArgs - InputReport가 프로세스되고 있을 때 발생되는 이벤트를 위한 데이터를 제공한다.
* Keyboard - Keyboard 클래스는 키보드와 관련된 API들을 나타낸다.
* KeyboardDevice - KeyboardDevice 클래스는 컨텍스트 멤버들에게 키보드 장치를 나타낸다.
* KeyboardEventArgs - KeyboardEventArg 클래스는 모든 유도된 이벤트 인수들에게 논리 포인터 장치로의 액세스를 제공한다.
* KeyEventArgs - KeyEventArgs 클래스는 키 상태 정보를 포함한다.
* KeyInterop - Win32 VirtualKeys와 "아발론" Key 이넘 (enum) 간에 변환하기 위한 정적 메쏘드를 제공한다.
* Mouse - Mouse 클래스는 마우스에 관련된 API들을 나타낸다.
* MouseButtonEventArgs - MouseButtonEventArgs는 Mouse 버튼 상태를 기재한다.
* MouseDevice - MouseDevice 클래스는 컨텍스트 멤버들에게 마우스 장치를 나타낸다.
* MouseDoubleClickEventArgs - 마우스가 더블 클릭킹 (double-clicking)되었을 때 발생되는 이벤트들에 대한 데이터를 제공한다.
* MouseEventArgs - MouseEventArgs 클래스는 모든 유도된 이벤트 인수들에게 Logical Mouse 장치로의 액세스를 제공한다.
* MouseWheelEventArgs - MouseWheelEventArgs는 Mouse 휠 상태를 기재한다.
* NotifyInputEventArgs - 입력 관리자에 의해 프로세스되고 있는 입력 이벤트에 대한 정보를 제공한다.
* PreProcessInputEventArgs - 핸들러가 입력 이벤트의 프로세싱을 취소하도록 한다.
* ProcessInputEventArgs - 입력 관리자의 단계 영역으로의 액세스를 제공한다.
* RawKeyboardInputReport - RawKeyboardInputReport 클래스는 키보드로부터 제공된 행 (raw) 입력을 포함한다.
* RawMouseInputReport - RawMouseInputReport 클래스는 마우스로부터 제공된 행 (raw) 입력을 포함한다.
* StagingAreaInputItem - 이 클래스는, 입력 이벤트가 입력 관리자에 의해 프로세스되는 동안, 입력 이벤트를 포함한다.
* TextInputEventArgs - TextInputEventArgs 클래스는 입력의 텍스트 표현을 포함한다.
* TextManager - TextManager 클래스는 입력-대-텍스트 이벤트 프로모션 (promotion)을 제공한다.
* TextServicesContext - 이 클래스는 UIDispatcher와, 동아시아 IME 입력을 가능하게 하는 네이티브 (native) COM API인, Text Services Framework 간의 상호 동작을 관리한다.
* TextStoreInfo - 이것은 내부의, 링크 (link) 요구 보안 클래스이다.
<인터페이스>
* IInputLanguageSource - 입력 언어 소스를 제어하는 인터페이스.
* IInputProvide - 모든 입력 제공자들에 의해 구현되는 인터페이스.
* IKeyboardInputProvide - 키보드 입력 제공자를 제어하는 인터페이스.
* IMouseInputProvider - 마우스 입력 제공자를 제어하는 인터페이스.
<열거>
* CursorType - 지원 커서 타입들의 열거.
* ImeConversionMode - ImeConversionMode
* ImeSentenceMode - ImeSentenceMode
* InputMethodState - Ime 상태
* InputMode - 입력이 제공될 때 입력 프로세싱 모드.
* InputType - 리포트되는 입력 타입.
* Key - 키보드에서 모든 가능한 키 값들의 열거.
* KeyState - KeyState 열거는 키보드 키들이 있을 수 있는 상태를 기재한다.
* ModifierKeys - ModifierKeys 열거는 기타 입력 동작들을 수정하기 위해 사용되는 일반 키들의 세트를 기재한다.
* MouseButton - MouseButton 열거는 마우스 장치에서 가능한 버튼들을 기재한다.
* MouseButtonState - MouseButtonState 열거는 Mouse 입력 장치에 가능한 버튼들의 모든 가능한 상태들을 기재한다.
* RawKeyboardActions - 키보드로부터 리포트되는 행 액션들.
* RawMouseActions - 마우스로부터 리포트되는 행 액션들.
* SpeechMode - 스피치 모드.
<구조체>
* TextServicesMSG - Win32 MSG 구조체의 관리 버전.
<델리게이트>
* FocusChangedEventHandler - FocusChangedEventArgs를 수신하는 핸들러들을 위해 사용되는 델리게이트.
* InputEventHandler - InputEventArgs를 수신하는 핸들러들을 위해 사용되는 델리게이트.
* InputLanguageEventHandler - InputLanguageChanged 및 InputLanguageChanging 이벤트들을 위해 사용되는 델리게이트.
* InputMethodStateChangedEventHandler - 입력 방법 상태 변화 이벤트를 수신하는 핸들러들을 위해 사용되는 델리게이트.
* InputReportEventHandler - PointerMoveEventArgs를 수신하는 핸들러들을 위해 사용되는 델리게이트.
* KeyboardEventHandler - KeyboardEventArgs를 수신하는 핸들러들을 위해 사용되는 델리게이트.
* KeyEventHandler - KeyEventArgs를 수신하는 핸들러들을 위해 사용되는 델리게이트.
* MouseButtonEventHandler - MouseButtonEventArgs를 수신하는 핸들러들을 위해 사용되는 델리게이트.
* MouseDoubleClickEventHandler - MouseDoubleClickEventArgs를 수신하는 핸들러들을 위해 사용되는 델리게이트.
* MouseEventHandler - MouseEventArgs를 수신하는 핸들러들을 위해 사용되는 델리게이트.
* MouseWheelEventHandler - MouseWheelEventArgs를 수신하는 핸들러들을 위해 사용되는 델리게이트.
* NotifyInputEventHandler - NotifyInputEventArgs를 사용하는 이벤트들의 핸들러들을 위한 델리게이트 타입.
* PreProcessInputEventHandler - PreProcessInputEventArgs를 사용하는 이벤트들의 핸들러들을 위한 델리게이트 타입.
* ProcessInputEventHandler - ProcessInputEventArgs를 사용하는 이벤트들의 핸들러들을 위한 델리게이트 타입.
* TextInputEventHandler - TextInputEventArgs를 수신하는 핸들러들을 위해 사용되는 델리게이트.
Navigation 네임스페이스
Navigation 네임스페이스(324)는, 브라우져 애플리케이션과 같은, 네비게이션 파라다임 (paradigm)으로 애플리케이션들의 빌딩 (building)을 허용하는 클래스들 및 서비스들의 세트를 제공한다. 이 클래스들 및 서비스들은 맞춤 네비게이션 경험들을 할 수 있는 애플리케이션들의 개발을 허용한다. 예를 들어, 온라인 머천트 (merchant)로부터 제품 또는 서비스를 구매할 때, "백 (Back)" 버튼을 클릭킹하는 것은 사용자에게 그들의 주문 (order)을 취소 또는 변경하기를 원하는지를 묻는 다른 페이지를 애플리케이션이 디스플레이하도록 한다. 다른 예에서, "리프레쉬 (Refresh)" 버튼을 활성화시키는 것은, 처음 애플리케이션을 리로딩 (reloading)하고 그 다음 새 데이터를 수취하는 대신에, 애플리케이션이 새 데이터를 수취하도록 한다. Navigation 네임스페이스(324)는 사용자에게 제공되는 질의의 계층을 생성하기 위한 메카니즘을 제공하는 페이지 기능들을 또한 포함한다.
다음은 System.Windows.Navigation 네임스페이스에 의해 나타내진 구성원들의 예를 나열한다.
<클래스>
* BoolWrapper - Boolean 값을 위한 랩퍼 (wrapper).
* BoolWrapperPageFunction - Boolen 값을 이전 페이지에 리턴하는 타입된 페이지 함수.
* BoolWrapperReturnEventArgs -
* IntWrapper - Int32 값을 위한 랩퍼.
* IntWrapperPageFunction - Int32 값을 이전 페이지에 리턴하는 타입된 페이지 함수.
* IntWrapperReturnEventArgs -
* Journal - 애플리케이션의 네비게이션 히스토리를 포함한다.
* JournalEntry - 저널 엔트리를 나타낸다.
* LoaderService - 주어진 애플리케이션 도메인에서 현재 로더 (loader)를 세트하기 위해 사용된다.
* NavigateEventArgs - 안쓰임.
* NavigatingCancelEventArgs - NavigationApplication.Navigating 및 NavigationWindow.Navigating 이벤트들에 대한 이벤트 인수들.
* NavigatingNewWindowCancelEventArgs - NavigatingNewWindow 취소 가능 이벤트에 대한 이벤트 인수들. NavigatingNewWindowCancelEventArgs는 네비게이션이 전달된 Uri 또는 요소를 갖고 시작하는 타겟 NavigationContainer를 지정한다. 디폴트로 Cancel 속성은 거짓 (false)으로 세트된다. Cancel을 참 (true)으로 세트하는 것은 새 윈도우가 열리는 것을 방지하고, 네비게이션은 일어나지 않을 것이 다.
* NavigationApplication - 시스템에게 "롱혼 (longhorn)" 네비게이션 애플리케이션을 나타낸다.
* NavigationContainer - "아발론" 마크업 트리 (markup tree)를 포함할 수 있는 네비게이션할 수 있는 지역. 일반적으로, 이 클래스는 직접 사용되지 않지만, 맞춤 구현을 위해 부모 클래스로서 사용될 수 있다.
* NavigationErrorCancelEventArgs - NavigationApplication.NavigationError 및 NavigationWindow.NavigationError 이벤트들에 대한 인수들을 포함한다.
* NavigationEventArgs - LoadCompleted, LoadStarted, Navigated, 및 NavigationStopped를 포함하는, 취소 불능 네비게이션 이벤트들을 위한 이벤트 인수들.
* NavigationProgressEventArgs - NavigationApplication.NavigationProcess 및 NavigationWindow.NavigationProcess 이벤트들을 위한 인수들을 포함한다.
* NavigationService - 네비게이션 이벤트들, 및 INavigator 인터페이스를 포함하는 동적 속성에 의해 사용되는 델리게이트들을 포함한다.
* NavigationWindow - 네비게이션 윈도우를 나타낸다.
* ObjectPageFunction - 이전 페이지에 Object 값을 리턴하는 타입된 페이지 함수.
* ObjectReturnEventArgs -
* PageFunction - 이 클래스는 직접 지원되지 않는다. 대신에, 타입된 클래스들 BoolWrapperPageFunction, IntWrapperPageFunction, ObjectPageFuinction, 또는 StringPageFunction 중 한 개를 사용한다.
* ReturnArgs - Return 이벤트를 위한 이벤트 인수 객체. 이 클래스는 직접 지원되지 않는다. 대신, 적절한 타입된 클래스를 위해 리턴 인수들을 사용한다: BoolWrapperReturnEventArgs, IntWrapperReturnEventArgs, ObjectReturnEventArgs, 또는 StringReturnEventArgs
* StringPageFunction - 이전 페이지에 String 값을 리턴하는 타입된 페이지 함수.
* StringReturnEventArgs -
* WindowNavigationContainer - 네비게이션 윈도우 내에 네비게이트할 수 있는 영역을 나타낸다.
* Interface -
* IJournalData - IJournalData 인터페이스는 저널에 상태를 유지하고, 그 페이지가 재방문되었을 때 그것을 재생할 필요가 있는 Controls에 의해 구현되어야 한다.
* ILoader - Uri가 스트림을 하도록 사용되는 인터페이스. 그것은 파일, http, 컨테이너, 및 관리 및 비관리된 리소스들로부터 콘텐츠를 로드하기 위해 사용될 수 있다.
* INavigator - 네비게이션을 지원하는 속성들, 메쏘드들, 및 이벤트들로의 액세스를 제공하는 네비게이션 컨테이너들에 의해 구현된다.
* INavigatorService - INavigatorService 인터페이스. 이 인터페이스는, Hyperlink 타겟팅에 참여하기 위해 INavigator의 임의의 구현자가 등록할 수 있도록 하는 NavigationWindow에서 이용 가능할 것이다.
<열거>
* NavigationMode - 네비게이션 모드를 지정하기 위해 사용된다.
<델리게이트>
* BoolWrapperReturnEventHandler -
* IntWrapperReturnEventHandler -
* LoadCompletedEventHandler - NavigationApplication.LoadCompleted 및 NavigationWindow.LoadCompleted 이벤트들을 핸들링하는 메쏘드를 나타낸다.
* LoadStartedEventHandler - LoadStarted 이벤트를 핸들링하는 메쏘드를 나나탠다.
* NavigatedEventHandler - NavigationApplication.Navigated 및 NavigationWindow.Navigated 이벤트들을 핸들링하는 메쏘드를 나타낸다.
* NavigateEventHandler - 안쓰임.
* NavigatingCancelEventHandler - NavigationApplication.Navigating 및 NavigationWindow.Navigating 이벤트들을 핸들링하는 메쏘드를 나타낸다.
* NavigatingNewWindowCancelEventHandler - NavigatingNewWindow 이벤트를 핸들링하는 메쏘드를 나나탠다.
* NavigationErrorCancelEventHandler - 이 델리게이트는 NavigationApplication.NavigationError 및 NavigationWindow.NavigationError 이벤트들과 함께 사용된다.
* NavigationProgressEventHandler - 이 델리게이트는 NavigationApplication.NavigationProgress 및 NavigationWindow.NavigationProgress 이벤트들과 사용된다.
* NavigationStoppedEventHandler - NavigationApplication.NavigationStopped 및 NavigationWindow.NavigationStopped 이벤트들을 핸들링하는 메쏘드를 나타낸다.
* ObjectReturnEventHandler -
* ReturnEventHandler - Return 이벤트를 핸들링하는 메쏘드를 나타낸다. 이 클래스는 직접 지원되지 않는다. 대신, 적절한 타입된 클래스를 위한 리턴 이벤트 핸들러를 사용한다: BoolWrapperReturnEventHandler, IntWrapperReturnEventHandler, ObjectReturnEventHandler, 또는 StringReturnEventHandler.
* StringReturnEventHandler -
Automation 네임스페이스
Automation 네임스페이스(326)는 액세스 및 사용자 인터페이스 자동화를 지원하기 위해 사용되는 멤버들을 포함한다. 액세스 시스템은 클라이언트측 및 제공 자측을 포함한다. 툴들의 시스템은 사용자 인터페이스 정보를 찾는 클라이언트 자동화 클래스를 포함하는 클라이언트측 자동화 툴들을 포함한다. 클라이언트 자동화 클래스는 이벤트 등록 툴들 및 논리 요소 발견 툴들을 포함한다. 툴들의 세트는 클라이언트에게 사용자 인터페이스 정보를 제공하는 제공자측 자동화 툴들을 더 포함한다. 제공자측 자동화 툴들은 클라이언트에게 이벤트 정보를 제공하는 툴들을 갖는 자동화 제공자 클래스를 포함한다.
클라이언트 자동화 클래스는 한 개 이상의 클라이언트들에게 UI 자동화 메쏘드를 제공한다. 클라이언트 자동화 클래스는 임의의 UI 요소에 고유하지 않은 메쏘드를 포함한다. 클라이언트 자동화 클래스는 포인트, 윈도우 핸들, 또는 데스크탑 루트 요소로부터 논리 또는 로우 요소를 얻는 메쏘드를 제공할 수 있다. 클라이언트 자동화 클래스는 입력 기준들에 기초한 논리 요소를 발견하기 위한 메쏘드를 추가로 제공할 수 있다. 클라이언트 자동화 클래스는 또한 이벤트 통지들의 등록 및 미등록을 위한 메쏘드를 포함하는 것이 선호된다. 자동화 클래스는, 속성들의 로컬 이름들 및 제어 패턴들을 검색수취하고 요소 비교들을 수행하는, 프락시 DLL들을 로딩하기 위한 도움 함수들을 또한 제공하는 것이 선호된다. 클라이언트 자동화 클래스는 클라이언트들이 이벤트들을 듣기 위한 메쏘드 또한 포함한다. 다음은 System.Windows.Automation 네임스페이스에 의해 나타난 멤버들의 예를 나열한다.
<클래스>
* ApplicationWindowPattern - 최상위 레벨 애플리케이션 윈도우와 전형적으 로 연계된 동작 및 정보를 나타낸다. 클라이언트들은 이 클래스를 사용해서 애플리케이션의 복수 다큐먼트 인터페이스 (Multiple Document Interface (MDI)) 자식들을 타일 (tile) 또는 캐스캐이드 (cascade)할 수 있고, 그것의 버튼을 태스크바 (taskbar)에서 발견할 수 있고, 그리고 툴바들 및 메뉴들과 같은 그 자신의 사용자 인터페이스의 잘 알려진 섹션들의 위치를 파악할 수 있다.
* AssociatedInformationPattern - 다른 객체들을 나타내는 UI 요소들에 대한 시멘틱 (semantic) 및 메타데이터 (metadata)를 나타낸다.
* Automation - 클라이언트들을 위한 사용자 인터페이스 (UI) 자동화 메쏘드를 포함한다 {보조 기술 또는 자동화된 테스트 스크립트 (automated test script)}. 이 메쏘드는 특정 요소에 고유하지 않다.
* AutomationEvent - 사용 불가. 이 클래스는 미래 버전들에서 삭제될 것이다.
* AutomationEventArgs - 패턴 또는 맞춤 이벤트 인수 클래스.
* AutomationFocusChangedEventArgs - 포커스 이벤트 인수 클래스
* AutomationIdentifier - 객체 신원 기반 식별자들에 대한 베이스 클래스. 이 클래스는 효과적으로 추상적이다. 단지 유도된 클래스들만이 실체화된다.
* AutomationIdentifierProxy - AutomationIdentifiers를 역-직렬화하기 위해 사용되는 내부 클래스. 직접 사용되어서는 안 된다.
* AutomationPattern - 사용 불가. 이 클래스는 미래 버전들에서 삭제될 것이다.
* AutomationPermission - UI 요소들을 액세스하는 승인 세트를 제공한다. 이 클래스는 상속될 수 없다.
* AutomationPermissionAttribute - AutomationPermissionAttribute을 위한 메쏘드들 및 속성들을 제공한다. 이 클래스는 상속될 수 없다.
* AutomationProperty - 사용 불가. 이 클래스는 미래 버전들에서 제거될 것이다.
* AutomationPropertyChangedEventArgs - PropertyChanged 이벤트 인수 클래스
* AutomationTextAttribute - AutomationTextAttributes을 위한 식별자.
* AutomationTextPointer - 텍스트 내에 문자 위치를 나타낸다. AutomationTextPointer는 텍스트 및 텍스트 네비게이션을 액세스하기 위한 메쏘드들 및 속성들을 제공한다.
* AutomationTextRange - 선택을 얻고, 세트하고, 추가하고, 제거하기 위해 사용된다.
* AutomationTextSelection - 목적: AutomationTextSelection 객체는 모든 텍스트 선택 관리를 핸들링한다. 삽입 포인터가 있는 선택은 활성화된 선택이다. 사용법의 예들: 클라이언트들이 선택을 추가, 삭제, 수정, 또는 세트하기를 원할 때 사용된다. 클라이언트들은 무엇이 AutomationTextSelection을 통해 현재 선택되었는지를 또한 발견할 수 있다.
* AutomationTextUnit - Automation Text Units을 위한 식별자들.
* BasePattern - 내부 클래스.
* DockPattern - 실행시에 그자신의 도크 상태 (dock state)를 변경시키기 위한 요소의 능력을 나타낸다.
* ElementNotEnabledException - 이 예외 처리는 클라이언트 코드가 요소 또는 현재 인에이블 (enable)되지 않은 컨트롤을 조작하기 위한 시도를 할 때 발생한다.
* ElementPath - ElementPath는 애플리케이션 제공자에 의해 이전에 기록되고, 수정되고, 또는 전체 생성된 논리 요소에 순차적으로 리턴하기 위해 필요한 기준들을 제공한다.
* ExpandCollapsePattern - 더 많은 콘텐츠를 디스플레이하기 위해 확장하는, 또는 콘텐츠를 숨기기 위해 수축하는 컨트롤 능력을 나타낸다. 예들은 Windows Explorer 및 콤보 박스들에서 메뉴 버튼들, Start 버튼, 트리뷰 (tree-view) 항목을 포함한다.
* GridItemPattern - 그리드의 요소들을 나타낸다. 클라이언트들이 그리드 항목의 좌표들을 신속하게 결정하도록 한다.
* GridPattern - 특정 셀들로의 기본 그리드 기능, 크기, 및 네비게이션을 나타낸다.
* HierarchyItemPAttern - 논리 트리의 관계들에 독립적인 제어 사용자 인터페이스 요소들 간의 계층적 관계를 나타낸다.
* Input - 마우스 및 키보드 입력을 전송하는 메쏘드를 제공한다.
* InvokePattern - 한 개의 명백한 액션을 수행하는 객체들 (컨트롤들)에 의해 구현된다. 이들 컨트롤의 대부분은 상태를 관리하지 않는다; 그들을 호출하는 것은 애플리케이션에서 액션을 시작하도록 한다. 이 인터페이스를 구현하는 제어의 예들은, 푸쉬 (push) 버튼들, 툴바 (toolbar) 버튼들, 메뉴 항목들, 하이퍼링크들 (hyperlinks), 체크 박스들 (check boxes), 라디오 버튼들 (radio buttons), 트리뷰 컨트롤에서 플러스 심볼 (plus symbol), 및 Windows Explorer에서 리스트뷰 (list-view) 항목들을 포함한다.
* LogicalElement - 구현에 상관 없이 ("아발론", Microsoft Win32) 논리 트리의 UI 요소들을 나타낸다.
* LogicalStructureChangedEventArgs - 논리적 구조 변경 이벤트 인수 클래스.
* MultipleViewPattern - 정보, 데이터, 자식의 동일 세트의 다수 표시들간을 스위칭하기 위하여 요소의 능력을 노출. 예는 ListView (썸네일, 타일, 아이콘, 리스트, 상세) 엑셀 차트{파이(Pie), 라인, 바, 공식을 갖는 셀 값}, 및 아웃룩 달력(연도, 달, 주, 일)을 포함한다.
* NoClickablePointException - 인수의 값이 GetClickablePoint에 의해 정의된 바와 같이, 값의 허용범위 밖에 있을 때 나타나는 예외. 예를 들어, 바운딩 직사각형이 비어 있을 때, 포인트가 호출된 것과 동일하지 않은 폭 또는 높이 또는 LogicalElement가 없다.
* ProxyAssemblyNotLoadedException - 이 예외는 프록시 어셈블리를 로딩하는 문제점이 있을 때 나타난다. 이것은 Automation.RegisterProxyAssembly에 응답하여 또는 제1 hwnd 베이스 LogicalElement가 발생할 때 디폴트 프록시를 로딩할 때 나타날 수 있다.
* RangeValuePattern - 유한 범위 내의 값을 관리하기 위한 제어 능력을 노출. 이것은 제어의 유효 최소 및 최대 값 및 현재의 값을 전달한다.
* RawElement - 원시 요소 트리 내의 요소를 표시.
* ScrollPattern - 값을 나타내고 있는 UI 요소를 표시.
* SelectionItemPattern - 선택을 관리하는 컨테이너 내의 개별 항목을 표시. UI 자동화 클라이언트는 이 클래스를 사용하여 SelectionItemPattern 제어 패턴을 지원하는 UI 요소에 대한 정보를 얻거나 UI 요소를 조작한다. 예는 리스트 박스 또는 트리 뷰 내의 항목과 같은 SelectionPattern 제어 패턴을 지원하는 제어 내에서 선택될 수 있는 임의의 항목을 포함한다.
* SelectionPattern - 선택을 관리하는 컨테이너를 표시. SelectionPattern 제어 패턴을 지원하는 사용자 인터페이스 요소에 대한 정보를 얻거나 사용자 인터페이스 요소를 조작하기 위하여 UI 자동화 클라이언트에 의해 사용됨.
* SortPattern - 컨테이너의 현재 정렬 순서를 노출하고 클라이언트가 프로그램적으로 요소를 재정렬하도록 한다.
* SplitPattern - 인접하는 윈도우를 생성함으로써 그들 자신을 복제할 수 있는 윈도우를 표시.
* TableItemPattern - 헤더 정보와 함께 그리드 항목을 표시.
* TablePattern - 헤더 정보를 갖는 그리드를 표시.
* TextPattern - 편집 제어 등의 텍스트 표시.
* TopLevelWindowEventArgs - TopLevelWindoswEventArgs 이벤트 인수 클래스.
* TreeLoadEventArgs - TreeLoadEventArgs 이벤트 인수 클래스
* ValuePattern - 라디오 버튼, 토글 버튼, 체크 박스, 편집 박스, RGB 칼라 값, 및 체크가능한 메뉴 항목 등의 범위를 스팬(span)하지 않는 제어를 위한 값을 노출.
* VisualInformationPattern - 복사가 진행중임을 나타내는 윈도우 익스플로러의 간결한 서류 또는 다운로드중인 문서를 나타내는 스피닝 글로브(spinning globe) 또는 인터넷 익스플로러의 웨이빙 플래그(waving flag) 등의 정보를 사용자에게 전달하는 이미지 또는 애니메이션에 관한 정보를 노출.
* WindowPattern - 온-스크린 위치 또는 크기를 변경하기 위한 요소의 능력을 노출. 예는 상부 레벨 애플리케이션 윈도우(워드 또는 윈도우 익스플로러), 아웃룩 메인 윈도우 팬(pan) (폴더, 이메일, 메시지, 태스크), 및 MDI 자식 윈도우를 포함한다.
* ZoomPattern - 현재의 줌 레벨을 제어하도록 노출하고, 클라이언트가 프로그램적으로 변경하도록 한다.
<열거>
* AutomationPermissionFlag - AutomationPermission 객체에 대한 액세스 플래그를 포함.
* ChildArrangement - 자식이 배열될 수 있는 다른 메쏘드.
* DockPosition - 도킹가능한 윈도우가 부착되는 컨테이너의 에지.
* ExpandCollapseState - 확장된/축약된 상태를 나타내기 위해 ExpandCollapse 패턴에 의해 사용됨.
* GetDataOptions - GetData에 대한 선택.
* HierarchyItemState - 계층 항목: 축약, 확장, 또는 부분 확장의 상태를 나타내는 목록.
* ItemCheckState - 체크 박스, 라디오 버튼, 및 유사한 제어의 상태를 나타내는 목록.
* LoadState - 트리 상태 플래그.
* LogicalMapping - 원시 트리 내의 노드가 논리 트리 내에 디스플레이될지를 나타내는 값.
* ProxyFlags - 속성을 요구한 결과를 나타내는데 사용되는 목록.
* RowOrColumnMajor - 데이터는 로우 또는 칼럼에 가장 많이 존재하는 이 테이블 내의 데이터인가.
* ScopeFlags - 이벤트를 청취할 때 범위를 정의하기 위하여 사용되는 플래그.
* ScrollAmount - 어느 쪽을 스크롤할지에 의해 방향(순방향 또는 역방향) 및 양(페이지 또는 라인)을 나타내기 위해 ScrollPattern에 의해 사용됨.
* SendMouseInputFlags - SendMouseInput을 위한 플래그. 이들 플래그는 이동이 발생하는지 또는 버튼이 눌려지거나 해제되는지를 표시한다.
* SplitStyles - 윈도우가 분할할 수 있는 방향에 대한 플래그.
* StructureChangeType - 논리 트리의 구조에 있어서의 변화를 나타내는 플래그.
* TextPointerGravity - 인력(gravity)은 텍스트가 AutomationTextPointer에 삽입될 때 AutomationTextPointer의 배치를 결정한다. 인력은 항상 뷰의 텍스트 포인터 점으로부터, 즉, 내 문자 이전 또는 내 문자 이후에 있다. 사용자가 텍스트 포인터 위치에 문자를 삽입할 때, 이전은 포인터가 새로운 문자 전에 배치될 것을 의미하고, 이후는 포인터가 새로운 문자 후에 배치될 것을 의미한다.
* WindowChangeType - 상부 레벨 윈도우 내의 변화를 나타내는 플래그.
* WindowInteractionState - 사용자 상호작용을 위한 윈도우의 현재 상태.
* WindowVisualState - 윈도우의 비주얼 상태를 설명하기 위하여 사용되는 상태. WindowVisualState는 WindowState의 HTML 정의 및 Office를 따른다.
<구조체>
* MatchCondition - FindLogicalElement 또는 FindRawElement를 사용하여 요소를 찾는 기준을 특정.
* NameAndData - 이름, 객체로서의 데이터, 및 스트링으로서의 데이터를 포함.
* ProxyDescription - 프록시에 대한 정보를 포함하는 구조체.
* SortInformation - 정렬에 사용되는 정보.
<델리게이트>
* AutomationEventHandler - AutomationEvents를 처리하기 위한 델리게이트.
* AutomationFocusChangedEventHandler - 포커스 변화 이벤트를 처리하기 위한 델리게이트.
* AutomationPropertyChangedEventHandler - 자동화 속성 변화 이벤트를 처리하기 위한 델리게이트.
* LogicalStructureChangedEventHandler - 논리 구조체 변화 이벤트를 처리하기 위한 델리게이트.
* ProxyFactoryCallback - HWND 핸들러에 의해 구현됨; 특정 윈도우에 대한 프록시를 요구하기 위하여 UI 자동화 프레임워크에 의해 호출됨. 지원된다면, 프록시를 리턴하거나 지원되지 않는다면 널(null)되어야 한다.
* TopLevelWindowEventHandler - 상부 레벨 윈도우 이벤트를 처리하기 위한 델리게이트.
다음은 System.Windows.Automation.InteropProvider 네임스페이스에 의해 노출된 멤버 예를 열거한다.
<클래스>
* AutomationInteropProvider - 사용자 인터페이스(UI) 자동화를 구현하는 Win32 애플리케이션 또는 제어에 의해 사용되는 메쏘드를 포함. 이 클래스는 상속될 수 없다.
* TextPointerPair - 문자의 인접 블록을 표시.
<인터페이스>
* IApplicationWindowInteropProvider - 상부 레벨 애플리케이션 윈도우와 일반적으로 관련된 정보 및 거동을 노출.
* IAssociatedInformationInteropProvider 다른 객체를 나타내는 UI 요소를 위한 메타데이터 및 시멘틱(semantic)을 노출.
* IDockInteropProvider - 실행시간에서 그 도킹 상태를 변화시키기 위한 요소의 능력을 노출.
* IExpandCollapseInteropProvider - 더 많은 콘텐츠를 디스플레이하기 위하여 확장하거나 콘텐츠를 숨기기 위하여 축약하는 제어의 능력을 노출. 트리같은 거동을 제공하기 위하여 TreeView 항목 상의 HierarchyItem과 결합하여 지원되지만, 또한 개방 및 폐쇄의 개별 제어에 관련됨. 이것을 구현하는 UI의 예는 - TreeView 항목 - 축약된 오피스 스마트 메뉴 - 툴바 상의 셰브론(Chevrons) - 콤보 박스 - 메뉴 - 윈도우 익스폴로러의 태스크 팬(pan) 내의 "Expandos"(폴더 뷰가 종종 디스플레이되는 좌측)를 포함.
* IGridInteropProvider - 기본 그리드 기능: 크기 및 특정 셀로의 이동을 노출.
* IGridItemInteropProvider - 그리드 내에 있는 항목을 표시. 메쏘드는 없 고 속성만 있다.
* HierarchyItemInteropProvider - 노출하여 teh 논리 트리 내의 그들의 관계로부터 독립된 UI 요소간의 계층 관계를 트래버스(traverse)하도록 한다. 계층 관계는 정의 비순환에 의한다. 이것을 구현하는 UI의 예는 "그룹 내의 표시(Show in groups)"가 액티브될 때 TreeView 항목 - Visio Org 차트 - 메뉴 - Listview 제어를 포함한다. 단일의 명백한 액션을 수행하는 객체(제어)에 의해 구현됨. 이들 제어의 대부분은 상태를 유지하지 않고, 그들을 인보크(invoke)하는 것은 애플리케이션의 액션을 초기화한다.
* IInvokeInteropProvider - 이 인터페이스를 구현하는 사용자 인터페이스 요소의 예는 푸쉬 버튼, 툴바 버튼, 메뉴 항목, 하이퍼링크, 체크 박스, 라디오 버튼, 트리-뷰 제어의 플러스 심볼, 및 윈도우 익스플로러 내의 리스트-뷰를 포함한다.
* IMultipleViewInteropProvider - 정보, 데이터 또는 자식의 동일 세트의 다수 표시들간을 스위칭하기 위한 요소의 능력을 노출. 이 패턴은 콘텐츠의 현재 뷰를 제어하는 컨테이너 상에서 구현되어야 한다.
* IRangeValueInteropProvider - 유한 범위 내의 값을 관리하기 위하여 제어 능력을 반영하는 속성의 관련 세트를 노출. 이것은 제어 유효 최소 및 최대 값과 그 현재 값을 전달한다. 예: 뉴머릭 스피너 프로그레스 바(Numeric Spinners Progress Bar), (개별 옥텟 상의) IP 제어, 어떤 칼라 피커 스크롤바(Color Pickers ScrollBars), 현재 값 및 값 범위를 표시하는 UI 요소를 나타내는 어떤 슬 라이더(Slider) 공중 인터페이스. 공중 인터페이스는 IValueProvider와 동일한 정의를 갖는다. 2개의 패턴의 차이점은 RangeValue가 추가의 속성을 갖는 것이며, 속성은 일반적으로 패턴 공중 인터페이스에 나타나지 않는다.
* IRawElementProviderFragment - 1 레벨 깊이 이상의 구조의 부분인 요소를 노출하기 위하여 제공자에 의해 구현됨. 단순한 자식없는 1 레벨 구조에 대하여, IRawElementProviderSimple이 대신 사용될 수 있다. 프래그먼트(fragment)의 루트 노드는, 이것으로부터 도출되고 어떤 추가의 메쏘드를 갖는 IRawElementProviderFragmentRoot 요소를 지원해야 한다.
* IRawElementProviderFragmentRoot - UI의 프래그먼트 내의 루트 요소는 이 인터페이스를 지원한다. 동일한 프래그먼트 내의 다른 요소는 IRawElementProviderFragment 인터페이스를 지원할 필요가 있다.
* IRawElementProviderFragmentRootAdviseEvents - 자동화 이벤트를 일으켜야할 때를 알리도록 UI 프래그먼트의 루트 요소상에서 구현됨.
* IRawElementProviderHwndOverrid - 포함된 HWND 기반 요소를 재배치하기를 원하거나 그에 대한 정보를 제공하기를 원하는 제공자에 의해 구현됨.
* IrawElementProviderOverrideType - 포함된 HWND 기반 요소를 재배치하기를 원하거나 그에 대한 정보를 제공하기를 원하는 제공자에 의해 구현됨.
* IRawElementProviderSimple - 단일 요소에 대한 속성을 노출하기를 원하는 제공자에 의해 구현된 UI 자동화 제공자 인터페이스. 일 이상의 요소에 대한 속성 및 구조체를 노출하기 위하여, 도출된 IRawElementProviderFragment 인터페이스를 참조.
* IScrollInteroProvider - 스크롤 패턴은 그 콘텐츠를 스크롤함으로써 사용자에게 보여질 수 있는 그 가시 영역의 부분을 변경하기 위한 제어 능력을 노출한다. 예: 리스트박스 트리 뷰는 제어의 가시 영역보다 큰 콘텐츠 영역을 유지하는 다른 컨테이너를 제어한다. 스크롤바는 스크롤가능한 패턴을 지원하지 않고 RangeValue 패턴을 지원한다. 서버는 스크롤(0-100)을 정규화해야 한다. 이 공중 인터페이스는 그들의 콘텐츠를 스크롤하는 UI 요소를 나타낸다.
* IselectionInteropProvider - 선택을 관리하는 컨테이너에 넌-"Longhorn" 제공자에 의해 구현된 속성으로의 액세스를 제공.
* ISelectionItemInteropProvider - 컨테이너 내의 선택된 항목을 정의하고 조작하는 메쏘드 및 속성으로의 액세스를 제공. ISelectionInteropProvider를 지원하고 그 자체가 선택가능한 요소의 자식인 논리적 요소에 지원되는가.
* ISortInteropProvider - 컨테이너의 현재 정렬 순서를 노출하고 클라이언트가 그 요소를 프로그램적으로 재정렬하도록 함. 어떤 컨테이너는 새로운 항목을 삽입할 때 정렬 순서를 유지하거나 갱신된 콘텐츠(예: 정렬된 Win32 리스트박스)에 기초하여 그들의 콘텐츠를 이동함. 다른 컨테이너는, 새로운 항목이 삽입되면(예: Excel), 오래된 이전의 정렬을 수행할 수 있다.
* ISplitInteropProvder - 요소 콘텐츠 영역을 다수의 팬(pan) 또는 상호작용 영역으로 분할하는 능력을 노출.
* ITableInteropProvider - 헤더 정보를 갖는 그리드를 식별.
* ITableItemInteropProvider - 헤드 정보와 함께 그리드 항목을 노출하는 데 사용됨.
* ITextInteropProvider - 텍스트 패턴은 텍스트를 제어하기 위한 제어 능력을 노출한다. 예: TextBox RichEdit는 텍스트 및 텍스트 관련 속성을 포함하는 다른 컨테이너를 제어한다. 이 인터페이스는 텍스트를 유지하는 UI 요소를 나타낸다.
* ITextPointerInteropProvider - 텍스트 패턴은 텍스트를 제어하기 위한 제어 능력을 노출한다. 예: TextBox RichEdit는 텍스트 및 텍스트 관련 속성을 포함하는 다른 컨테이너를 제어한다. 이 인터페이스는 텍스트를 유지하는 UI 요소를 나타낸다.
* IValueInteropProvider - 값을 표현하고 있는 UI 요소를 나타내는 공중 인터페이스.
* IVisualInformationInteropProvider - 사용자에게 정보를 전달하고 있는 이미지 또는 애니메이션에 대한 정보를 표현하는 데 사용됨.
* IWindowInteropProvider - 온-스크린 위치 또는 크기를 변경하고 비주얼 상태를 변경하고 폐쇄하기 위한 요소의 능력을 노출.
* IZoomInteropProvider - 제어 내의 현재의 줌 레벨을 노출하고 클라이언트가 프로그램적으로 변경할 수 있도록 한다.
<열거>
* NavigateDirection - UI 자동화 트리를 네비게이션하기 위한 방향.
RawElementProviderOverrideType - 이 제공자가 비-클라이언트-영역 제공자로서 또는 오버라이드로서 동작하는지를 표시.
Serialization 네임스페이스
Serialization 네임스페이스(328)는 2진 표시로 파일 또는 XML 파일로부터 또는 그 파일로의 객체(예를 들어, 요소)의 계층을 로드하거나 저장할 수 있는 파서를 연관시킨다. 이 프로세스는 또한 객체와 관련된 속성을 설정하고 이벤트 핸들러를 결합한다. 또한, Serialization 네임스페이스(328)는 객체를 직렬화 및 역-직렬화(de-serialization)하는 기능을 제공한다. 직렬화는 객체의 유효한 인-메모리(in-memory) 표시를 취하고 저장 장치(디스크 등)에 저장하기에 적합한 데이터 스트림을 생성하거나 네트워크를 통해 송신하는 프로세스이다. 역직렬화는 역프로세스로서, 데이터 스트림을 취하고 데이터 스트림으로부터 객체를 생성하는 것이다. 역직렬화는 또한 "파싱(parsing)"이라 지칭되고 파싱을 구현하는 코드는 파서로서 알려져 있다.
직렬화 및 역직렬화는 XAML로서 지칭되는 XML 포맷 또는 BAML로서 지칭되는 2진 포맷 등의 다수 스트리밍 포맷을 지원한다. 파서가 마크업 컴파일러로 사용될 때, "CAML"을 발생시킬 수 있으면, 출력은 직렬화된 객체를 발생시키기 위한 코드이다.
직렬화 및 역직렬화는 표준 신택스(syntax), 복합 속성, 콤팩트 복합 신택스, 암시적 자식 신택스, 명시적 자식 신택스, 명시적 콜렉션 태그를 갖는 콜렉션 신택스, 및 암시적 콜렉션 태그를 갖는 콜렉션 신택스를 포함하는 전체 범위의 XAML 특징을 지원한다. 직렬화 및 역직렬화는 완전히 확장할 수 있다. 클래스는 다음과 같이 몇개의 메카니즘을 통해 직렬화되고 역직렬화되는 메쏘드를 정의할 수 있다.
* 디폴트에 의해, 클래스 이름은 마크업 태그 이름으로서 취급되고, 속성 및 이벤트는 동일한 이름의 마크업 속성으로 취급된다.
* 클래스는 유형 컨버터(System.ComponentModel.TypeConverter로부터 구동하는 보조 객체)를 정의하여 마크업 속성 값을 직렬화하고 역직렬화한다.
* 클래스는 IAddChild 인터페이스(파싱)을 구현하고 CLR 속성을 사용하여 암시적 자식을 직렬화하는 메쏘드를 설명함으로써 암시적 자식을 지원할 수 있다.
* 클래스는 속성이 DesignerSerializationVisibility를 사용하여 직렬화/역직렬화될 수 있는지를 제어하고, DefaultValueAttribute 및 ShouldPersist 메쏘드를 사용하여 특정 객체에 대한 속성을 직렬화할 필요가 있는지를 제어할 수 있다.
* 또는, 컴포넌트는, 컴포넌트의 직렬화된 형태가 XAML의 규칙에 일치하지 않는 경우의 문자 콘텐츠를 사용하여 직렬화/역직렬화할 수 있다 (컴포넌트는 잘 형성된 XML을 필요로 한다).
상기 예는 워드"마크업"을 사용하였지만, 동일 개념이 2진 포맷(BAML)에 적용된다.
제2 확장가능 메카니즘은, 또다른 코드가 직렬화기 및 역직렬화기에 플러그인되도록 하는 "디자이너 훅(designer hook)"이고, 파싱 및 직렬화 동안 속성을 삽 입하고 차단한다. 이 메카니즘은 새로운 마크업 특징이 생성되도록 하고, 기존의 신택스의 고객 프로세싱을 허용한다. 마크업 컴파일러는 디자이너 훅을 사용하여 CAML을 생성한다.
직렬화 및 역직렬화는 다양한 객체(예를 들어 System.Object로부터 구동하는 임의의 클래스)를 지원한다. System.Windows.DependencyObject로부터 구동하는 클래스는 2개의 추가의 특징을 갖는 종속 속성을 정의할 수 있다.
* 직렬화는 속성이 직렬화될 필요가 있는지를 자동적으로 말할 수 있다(DefaultValueAttribute/ShouldPersist에 대해서는 필요없다).
* 파서는 소정의 최적화를 수행하여 패스터(faster)를 로드할 수 있다.
직렬화 및 역직렬화는 XML 네임스페이스 및 XML 네임스페이스를 CLR 네임스페이스로 맵핑하는 정의 파일을 지원한다. 맵퍼(Mapper) 클래스는 XML 네임스페이스 및 태그 이름으로부터의 임의의 맵핑을 CLR 클래스로 정의하도록 한다.
다음의 리스트는 System.Windows.Serialization 네임스페이스에 의해 노출된 멤버의 예를 나타낸다.
<클래스>
* CustomXamlDeserializer - 역직렬화 도우미(helper)를 위한 베이스 클래스. 이것은 파서의 디자인 또는 편집 시간 역직렬화 방향이 요구되면 서브클래스되어야 한다.
* CustomXamlSerializer - 직렬화 도우미를 위한 베이스 클래스. 이것은 직렬화기의 디자인 또는 편집 시간 직렬화 방향이 요구되면 서브클래스되어야 한다.
* DependencyPropertyContext - 직렬화된 현재의 속성에 대한 컨텍스트 정보. XamlSerializer는 객체에 대한 임의의 속성을 직렬화하기 전에 컨텍스트 스택에 이 클래스의 인스턴스를 넣는 것을 담당한다.
* DPSerializationVisibilityAttribute - 디자이너 직렬화기에 의해 나타낸 이 메쏘드 또는 이 속성의 가시도를 지정.
* EntityContext - ObjectContext 및 PropertyContext에 대한 베이스 클래스를 추상화
* LayoutAttribute - 태그를 위한 LayoutType을 지정하는 속성.
* Mapper - 확장가능 마크업 언어(XML) 네임스페이스 URI(Uniform Resource Identifier)와 Microsoft
Figure 112004041222076-pat00003
.NET 네임스페이스 유형간의 맵핑을 핸들링.
* NamespaceMap - xml NamespaceUri 및 urtNamespace가 보는 어셈블리간의 맵핑을 위한 맵퍼 사용에 관한 정보를 포함.
* ObjectContext - 직렬화되는 현재의 객체에 관한 컨텍스트 정보. XamlSerializer는 SerializeObject의 컨텍스트 스택 상에 이 클래스의 인스턴스를 넣는 것을 담당한다.
* Parser - "Avalon" 트리를 형성하는 데 사용되는 "Avalon" 요소 파싱 클래스.
* ParserContext - 파서에 의해 요구된 모든 컨텍스트 정보를 제공.
* PropertyContext - 직렬화되는 현재의 속성에 대한 컨텍스트 정보. XamlSerializer는 객체에 대한 임의의 속성을 직렬화하기 전에 컨텍스트 스택 상에 이 클래스의 인스턴스를 넣는 것을 담당한다.
* TextContext - 직렬화되는 현재의 객체에 대한 컨텍스트 정보. XamlSerializer는 SerializeObject의 컨텍스트 스택 상에 이 클래스의 인스턴스를 넣는 것을 담당한다.
* XamlAttributeNode - XamlAttributeNode.
* XamlClrArrayPropertyNode - XamlClrArrayPropertyNode.
* XamlClrComplexPropertyNode - clr 객체의 자식으로서 지정된 객체인 XamlClrComplexPropertyNode.
* XamlClrEventNode - 임의의 객체에 대한 clr 이벤트인 XamlClrEventNode. 이것은 DependencyObject 또는 임의의 다른 객체 유형에 대한 것일 수 있다.
* XamlClrObjectNode - DependecyObject 이외의 임의의 것인 XamlClrObjectNode.
* XamlClrPropertyNode - 임의의 객체에 대한 clr 속성인 XamlClrPropertyNode. 이것은 DependencyObject 또는 임의의 다른 객체 유형에 대한 것일 수 있다.
* XamlClrPropertyParseException - 특정 예외를 파싱하는 파서 속성에 대한 예외 클래스.
* XamlComplexDependencyPropertyNode - DependencyObject의 xml 자식으로서 지정된 DependencyProperty인 XamlComplexDependencyPropertyNode.
* XamlComplexPropertySeializer - XML 속성으로서 직렬화될 수 없는 속성을 직렬화하는 데 사용되는 XamlComplexPropertySeializer. ComplexProperty는 대신 요소 내의 마크업으로서 직렬화된다.
* XamlDefAttributeNode - XamlDefAttributeNode.
* XamlDefTagNode - XamlDefTagNode.
* XamlDependencyObjectSerializer - (요소에 특정된) 애니메이션을 포함하도록 XamlSerializer를 확장.
* XmalDependencyPropertyNode - DependencyObject에 대한 정상적이고 단순한 DependencyProperty인 XamlDependencyPropertyNode.
* XamlDependencyPropertyParseException - 특정 예외를 파싱하는 파서 동적 속성에 대한 예외 클래스.
* XamlDesignerserializerAttribute - 주어진 클래스에 대한 직렬화기의 유형 이름을 지정.
* XamlDocumentNode - XamlDocumentNode.
* XamlElementNode - DependencyObject를 나타내는 XamlElementNode. 이들은 그들과 관련된 DependencyProperties를 가질 수 있기 때문에 CLR 객체와 다르다.
* XamlEndAttributesNode - XamlEndAttributesNode.
* XamlEndClrArrayPropertyNode - XamlEndClrArrayPropertyNode.
* XamlEndClrComplexPropertyNode - XamlEndClrComplexPropertyNode.
* XamlEndClrObjectNode - XamlEndClrObjectNode.
* XamlEndComplexDependencyPorpertyNode - XamlEndComplexDependencyPorpertyNode.
* XamlEndDocumentNode - XamlEndDocumentNode.
* XamlEndElementNode - XamlEndElementNode.
* XamlEndDictionaryPropertyNode - XamlEndDictionaryPropertyNode.
* XamlEndListPropertyNode - XamlEndListPropertyNode.
* XamlEndResourceNode - XamlEndResourceNode.
* XamlEndStartElementNode - XamlEndStartElementNode.
* XamlDictionaryPropertyNode - XamlDictionaryPropertyNode.
* XamlEnumeratorSerializer - 속성에 의해 지적된 노드 콜렉션을 직렬화.
* XamlIListPropertyNode - XamlIListPropertyNode
* XamlIListSeializer - 속성에 의해 지적된 IList를 직렬화.
* XamlIncludeTagNode - XamlIncludeTagNode.
* XamlLanguageNode - XamlLanguageNode.
* XamlLiteralContentNode - XamlLiteralContentNode.
* XamlNode - 모든 다른 것이 도출하는 기본 노드.
* XamlParseException - 파서 특정 예외에 대한 예외 클래스.
* XamlPIMappingNode - xml 네임스페이스를 clr 네임스페이스 및 어셈블리에 맵핑하는 XamlPIMappingNode.
* XamlResourceNode - XamlResourceNode.
* XamlRootSerializer - 논리적 트리를 지속하는 데 사용되는 XamlSerializer.
* XamlRoutedEventNode - XamlRoutedEventNode.
* XamlSerializationCallbackException - 직렬화 콜백 특정 예외에 대한 예외 클래스.
* XamlSerializer - 논리적 트리를 지속하는 데 사용되는 XamlSerializer.
* XamlSerializerBase - 공통 도우미 기능을 제공하는 XamlSerializer에 대한 베이스 클래스.
* XamlTextNode - XamlTextNode.
* XamlTextNodeSerializer - 특별 케이스 TextNodes에 XamlSerializer를 오버라이딩.
* XamlXmlnsPropertyNode - XamlXmlnsPropertyNode.
* XmlAttributes - DependencyObject의 XML 특정 속성을 캡슐화하기 위한 클래스.
* XmlnsDictionary - XML 네임스페이스 맵핑을 제어하기 위한 사전.
* XmlParserDefaults - 아밸론(Avalon)에 의해 사용되는 공중 클래스.
<인터페이스>
* IADDChild - IAddChild 인터페이스는 속성으로 직접 맵핑할 수 없는 마크업 내의 객체 또는 그들의 태그 아래의 텍스트를 허용하는 객체를 파싱하는 데 사용됨.
* IBamlSerialize - BAML 파일에 기입된 동적 속성에 대한 직렬화 인터페이스.
* ILoaded - 이 인터페이스는 IsLoaded라 불리우는 판독 전용 불린 속성(read-only boolean property), Loaded라 불리우는 clr 이벤트 핸들러, 및 DeferLoad 및 EndDeferLoad 메쏘드들을 제공한다.
* IPageConnector - 컴파일된 콘텐츠에 대한 BamlReader에 의해 내부적으로 사용되는 메쏘드를 제공.
* IParseLiteralContent - 문자 콘텐츠에 대하여, 그 자신의 파서 및 저장기를 갖는 콘텐츠.
* IUriContext - IUriContext 인터페이스는 파서, xaml에 대한 codegen, baml 및 caml 케이스에 의해 그들 상에 기본 uir를 설정하도록 (프레임, PageViewer 같은) 요소 및 (ImageData TypeConverters 같은) 유형 컨버터를 허용한다. 요소는 그후 이 기본 uri를 사용하여 네비게이트한다.
<열거>
* LayoutType - 객체와 관련될 수 있는 레이아웃 유형.
* SerializationAction - CustomXamlSerializer 또는 CustomXamlDeserializer 도우미로 콜백된 후에 직렬화기 또는 역직렬화기의 액션을 설명.
* SerializationErrorAction - 에러가 보고될 때 취하기 위한 직렬화기 또는 역직렬화기의 액션을 설명.
* XamlNodeType - XamlNodes에 대한 식별자.
Interop 네임스페이스
Interop 네임스페이스(330)는 다른 오퍼레이팅 시스템 또는 컴퓨팅 플랫폼과의 상호동작성을 가능하게 하는 클래스 세트를 제공한다. 다음은 System.Windows.Interop 네임스페이스에 의해 노출된 멤버 예를 열거한다.
<클래스>
* ApplicationProxy - AppDomains을 통한 애플리케이션 객체와의 상호작용을 허용하고 상이한 스레드(thread) 상의 애플리케이션 생성을 허용하기 위하여 애플리케이션 클래스를 통한 MarshalByRefObject 랩퍼(wrapper).
* DocobjHost - 브라우저 호스팅을 위한 Docobj 서버의 관리 부분을 구현하는 데 사용되는 상호작용 클래스.
* PresentationInteropHelper - VisualInteropHelper.
* WindowInteropHelper - b/w 레가시 및 아밸론 윈도우의 상호동작성을 돕는 WindowInteropHelper 클래스.
<델리게이트>
* AppEntryPoint - 애플리케이션 코드의 엔트리 포인트 메쏘드에 대한 델리게이트.
Forms.Interop 네임스페이스
forms.interop 네임스페이스(332)는 애플리케이션이 형태 제어 동작을 호스팅하도록 하는 요소를 제공한다.
System.IO.CompoundFile 네임스페이스
또다른 네임스페이스, System.IO.CompoundFile(도 3에 도시하지 않음)은 다양한 문서 분배가능 파일이 저장된 복합 파일을 이용하는 서비스를 제공한다. 이들 서비스는 콘텐츠의 암호화 및 압축을 허용한다. 서비스는 또한 리플로우 가능(re-flowable) 문서 및 고정 포맷 문서 등의 동일 콘텐츠의 다수 렌디션(rendition)의 저장을 지원한다. 다음은 System.IO.CompoundFile 네임스페이스에 의해 노출된 멤버 예를 열거한다.
<클래스>
* CertificateHelper - 증명을 위한 디지털 증명서를 얻기 위한 도우미.
* CompoundFileByteRangeReference - 복합 파일 스트림 내의 바이트 범위를 참조하는 서브스트림 참조 컴포넌트.
* CompoundFileIndexReference - 복합 파일 스트림 내의 논리적 엔트리를 참조하는 서브스트림 참조 컴포넌트.
* CompoundFileReference - 복합 파일의 일부에 대한 참조.
* CompoundFileReferenceCollection - 복합 파일 참조의 판독 전용 콜렉션.
* CompoundFileStorageReference - 컨테이너 스토리지에 대한 논리적 참조.
* CompoundFileStreamReference - 컨테이너 스트림에 대한 논리적 참조.
* CompressionTransform - 복합 파일 데이터스페이스에 사용되는 CompressionTransform.
* ContainerHelper - 이 클래스는 사용자가 로드된 애플리케이션 인스턴스에 기초하여 현재의 컨테이너의 StorageRoot에 액세스하도록 한다.
* DataSpaceManager - "Avalon" 컨테이너의 특정 인스턴스 내의 데이터 스페이스를 조작하는데 사용됨. 이것은 데이터 변환 모듈이 컨테이너에 플러그인되어 데이터 압축 및 데이터 암호화와 같은 특징을 가능하게 하는 메쏘드이다.
* DigitalSignature - 클라이언트가 기존의 디지털 서명을 검사하고 확인하는 판독 전용 클래스.
* DigitalSignatureCollection - 디지털 서명의 판독 전용 콜렉션.
* DigitalSignatureManager - 이 클래스는 복합 파일 내의 디지털 서명을 생성, 지속, 및 조작하는 데 사용된다.
* DocumentSummaryInfo - 표준 OLE 문서 요약 정보 속성 세트 내의 속성에 대응하는 속성 요소를 포함.
* FormatVersion - 버전 객체를 조작하기 위한 클래스.
* InstanceDataFormatException - 디스크 상의 DrmTransformInstanceData의 포맷이 무효일 때 나타나는 예외.
* OleProperty -
* PropSet -
* RenditionInfo - 렌디션의 정보를 조작하는 클래스. 이 클래스는 또한 스 토리지 및 스트림을 렌디션으로 부가하고 렌디션으로부터 제거하는 API를 제공한다.
* RenditionInfoCollection - RenditionInfo 객체의 강하게 분류된 콜렉션.
* RenditionManager - 컨테이너 내의 렌디션을 조작하는 클래스.
* RightManagementEncryptionTransform - 이 클래스는 IDataTRansform 인터페이스를 구현하여, 콘텐츠의 RM 암호화 및 암호 해독을 구현하는 컨테이너 데이터 변환으로서 사용될 수 있다.
* StorageInfo - 컨테이너 파일 내의 스토리지를 조작하는 클래스.
* StorageRoot - 메인 컨테이너 클래스를 표시. 복합 파일 당 하나의 StorageRoot의 인스턴스가 있다.
* StreamInfo - 컨테이너 파일 내의 스트림을 조작하기 위한 액세스를 제공.
* SummaryInfo -
* TransformEnvironment - 이 클래스의 인스턴스는 변환 객체를 위한 수단으로서 각각의 변환 객체에 주어져 데이터 스페이스 관리자에 의해 제공된 환경과 상호작용한다. 변환 환경과 상호작용할 필요가 없으면, 폐기하도록 선택하므로, 변환 객체가 주어진 TransformEnvironment 객체에 대한 참조를 유지하도록 하지 않는다.
* TransformInitializationEventArgs - 이벤트 핸들러에 인수를 전달하는 공중 클래스.
* UseLicenseInfo - 텅스텐 서버로부터 리턴된 사용 허가를 통해 설명하는 정보를 포함.
* UseLicenseInfoEnumerator - DRM 변환의 인스턴스 데이터에 저장된 사용 허가를 통해 목록을 표시.
* VersionTuple - 다수 또는 소수로 구성된 버전 터플(version tuple)에 대한 클래스.
* XmlDigitalSignatureProcessor - W3C 권고에 따라 데이터를 증명하고 확인하기 위하여 디지털 서명 관리자에 의해 사용되는 서명 프로세서.
<인터페이스>
* IDataTransform - 모든 데이터 변환 객체에 의해 구현되는 인터페이스
* ILicenseStorage - 이 인터페이스는 이 인터페이스의 고객 구현을 형성함으로써 RMTransform 및 RMWizard를 연결해제(decouple)하는 데 사용된다. 제3자가 RMTransform을 사용하도록 강요하지 않고 RMWizard의 이점을 갖도록 한다.
* ISignatureProcessor - 서명 프로세서 인터페이스.
* IUnknownRCW - 이 인터페이스는 IUnknown으로서 (런타임 COM 랩퍼 내에 둘러싸인) 임의의 COM 인터페이스를 불명료하게 핸들링하는 데 사용된다.
<열거>
* DigitalSignatureProcessor - 미리 정의된 디지털 서명 프로세서.
* SignatureProcessorNameType - 서명 프로세서의 유형.
* TransformIdentifierTypes - 변환 객체를 명명할 때, 전달되는 스트링은 몇가지 메쏘드 중 하나로 해석될 수 있다. 이 열거된 유형은 식별 스트링의 시멘 틱(semantics)을 지정하는 데 사용된다.
<델리게이트>
* InvalidSignatureHandler - 해쉬 검증을 하지 않은 서명으로 호출됨.
* TransformInitializeEventHandler - 변환을 초기화하는 델리게이트 메쏘드.
System.Windows.Automation 네임스페이스
System.Windows.Automation 네임스페이스는 액세스가능 및 사용자 인터페이스 자동화를 지원하는 데 사용되는 멤버를 포함한다. 액세스 가능 시스템은 클라이언트측과 제공자측을 포함한다. 툴의 시스템은 사용자 인터페이스 정보를 찾는 클라이언트 자동화 클래스를 포함하는 클라이언트측 자동화 툴을 포함한다. 클라이언트 자동화 클래스는 이벤트 등록 툴 및 논리적 요소 전달 툴을 포함한다. 툴 세트는 또한 클라이언트에게 사용자 인터페이스 정보를 제공하는 제공자측 자동화 툴을 포함한다. 제공자측 자동화 툴은 클라이언트에게 이벤트 정보를 제공하는 툴을 갖는 자동화 제공자 클래스를 포함한다.
클라이언트 자동화 클래스는 하나 이상의 클라이언트에 대한 UI 자동화 메쏘드를 제공한다. 클라이언트 자동화 클래스는 임의의 UI 요소에 특정되지 않은 메쏘드를 포함한다. 클라이언트 자동화 클래스는 포인트, 윈도우 핸들, 또는 데스크탑 루트 요소로부터 논리적 또는 원시 요소를 획득하는 메쏘드를 제공할 수 있다. 클라이언트 자동화 클래스는 추가적으로 논리적 요소 기반 입력 기준을 찾는 메쏘 드를 제공할 수 있다. 클라이언트 자동화 클래스는 바람직하게 이벤트 통지에 대한 등록 및 등록 해제를 위한 메쏘드를 또한 포함한다. 자동화 클래스는, 바람직하게 프록시 DLL을 로딩하고 속성의 로컬화된 이름 및 제어 패턴을 검색하고 요소 비교를 수행하는 도우미 기능을 또한 제공한다. 클라이언트 자동화 클래스는 또한 클라이언트가 이벤트에 대해 청취하도록 하는 메쏘드를 제공한다. 다음은 System.Windows.Automation 네임스페이스에 의해 노출된 멤버 예를 열거한다.
<클래스>
* ApplicationWindowPattern - 상부 레벨 애플리케이션 윈도우와 관련된 정보 및 거동을 노출. 클라이언트가 이 클래스를 사용하여 애플리케이션의 다수 문서 인터페이스(MDi) 자식을 타일(tile)하거나 캐스케이드하고, 태스크바상의 그 버튼을 찾고, 툴바 및 메뉴 등의 사용자 인터페이스의 잘 알려진 섹션을 위치시킬 수 있다.
* AssociatedInformationPattern - 다른 객체를 나타내는 UI 요소에 대한 시멘틱 및 메타데이터를 노출.
* Automation - 클라이언트에 대한 사용자 인터페이스(UI) 자동화 메쏘드(어씨스티브 기술(assistive technology) 또는 자동화된 테스트 스크립트)을 포함. 이들 메쏘드는 특정 요소에 특정되지 않는다.
* AutomationEvent - 사용하지 않음. 이 클래스는 미래 버전에서 제거될 것이다.
* AutomationEventArgs - 패턴 또는 고객 이벤트 인수 클래스.
* AutomationFocusChangedEventArgs - 포커스 이벤트 인수 클래스
* AutomationIdentifier - 객체 식별 기반 식별자에 대한 베이스 클래스. 이 클래스는 효과적으로 추상화되고 도출된 클래스만이 실증된다.
* AutomationIdenfifierProxy - AutomationIdentifiers를 역직렬화하는 데 사용되는 내부 클래스. 직접 사용되지 않아야 한다.
* AutomationPattern - 사용하지 않음. 이 클래스는 미래 버전에서 제거될 것이다.
* AutomationPermission - UI 요소를 액세싱하기 위한 인가 세트를 제공. 이 클래스는 상속될 수 없다.
* AutomationPermissionAttribute - AutomationPermissionAttribute를 위한 메쏘드 및 속성을 제공. 이 클래스는 상속될 수 없다.
* AutomationProperty - 사용하지 않음. 이 클래스는 미래 버전에서 제거될 것이다.
* AutomationPropertyChangedEventArgs - 속성 변경된 이벤트 인수 클래스.
* AutomationTextAttribute - 자동화 텍스트 속성에 대한 식별자.
* AutomationTextPointer - 텍스트 내의 문자의 위치를 표시. AutomationTextPointer는 텍스트 액세스 및 텍스트 네비게이션을 위한 메쏘드 및 속성을 제공.
* AutomationTextRange - 선택을 획득, 설정, 추가 및 제거하는 데 사용됨.
* AutomationTextSelection - 목적: AutomationTextSelection 객체는 모든 텍스트 선택 관리를 핸들링한다. 삽입 포인터가 있는 선택이 액티브 선택이다. 사용예: 클라이언트가 선택을 추가, 제거, 변경 또는 설정하기를 원할 때 사용됨. 클라이언트는 또한 AutomationTextSelection을 통해 현재 선택된 것을 찾을 수 있다.
* AutomationTextUnit - 자동화 텍스트 유닛에 대한 식별자.
* BasePattern - 내부 클래스.
* DockPattern - 실행시간에서 그 도크(dock) 상태를 변경하기 위한 요소의 능력을 노출.
* ElementNotEnabledException - 이 예외는 클라이언트 코드가 현재 사용가능하지 않은 제어 또는 요소를 조작하려고 시도할 때 나타난다.
* ElementPath - ElementPath는 애플리케이션 제공자에 의해 이전에 기록되거나 변경되거나 전체적으로 생성된 논리적 요소로 리턴할 필요가 있는 기준을 제공한다.
* ExpandCollapsePattern - 더 많은 콘텐츠를 디스플레이하기 위하여 확장하거나 콘텐츠를 숨기기 위해 축약하는 제어 능력을 노출. 예는 메뉴 버튼, 시작 버튼, 윈도우 익스플로러의 트리-뷰 항목 및 콤보 박스를 포함한다.
* GridItemPattern - 그리드의 요소를 노출. 클라이언트가 그리드 항목의 좌표를 신속하게 결정하도록 한다.
* GridPattern - 기본 그리드 기능, 크기 및 네비게이션을 특정 셀에 노출.
* HierarchyItemPattern - 논리적 트리 내의 그들의 관계에 독립적인 제어의 사용자 인터페이스 요소들 간의 계층 관계를 노출.
* Input - 마우스 및 키보드 입력을 송신하는 메쏘드를 제공.
* InvokePattern - 단일의 명백한 액션을 수행하는 객체(제어)에 의해 구현됨. 이들 제어의 대부분은 상태를 유지하고, 그들을 인보크하는 것은 애플리케이션의 액션을 초기화한다. 이 인터페이스를 구현하는 제어 예는 푸쉬 버튼, 툴바 버튼, 메뉴 항목, 하이퍼링크, 체크 박스, 라디오 버튼, 트리-뷰 제어 내의 플러스 심볼, 및 윈도우 익스플로러 내의 리스트-뷰 항목을 포함한다.
* LogicalElement - 구현("Avalon" Microsoft
Figure 112004041222076-pat00004
Win32
Figure 112004041222076-pat00005
)에 관계없이 논리적 트리의 UI 요소를 표시.
* LogicalStructureChangedEventArgs - 논리적 구조 변경 이벤트 인수 클래스.
* MultipleViewPattern - 정보, 데이터 또는 자식의 동일 세트의 다수 표시들간을 스위칭하기 위한 요소의 능력을 노출. 예는 ListView (썸네일, 타일, 아이콘, 리스트, 상세) 엑셀 차트 (파이, 라인, 바, 공식을 갖는 셀 값), 및 아웃룩 달력(연도, 달, 주, 일).
* NoClickablePointException - 인수 값이 GetGlickablePoint에 의해 정의된 바와 같이, 값의 허용가능 범위 밖에 있을 때 나타나는 예외. 예를 들어, 바운딩 직사각형이 비어 있으면, 포인트가 호출한 것과 동일하지 않은 폭 또는 높이 또는 LogicalElement를 갖지 않는다.
* ProxyAssemblyNotLoadedException - 이 예외는 프록시 어셈블리를 로딩하 는 문제점이 있는 경우에 나타난다. 이것은 Automation.RegisterProxyAssembly에 응답하여 또는 제1 hwnd 기본 LogicalElement가 발생될 때 디폴트 프록시를 로딩할 때 발생될 수 있다.
* RangeValuePattern - 유한 범위 내의 값을 관리하는 제어 능력을 노출. 이것은 제어의 유효 최소 및 최대값 및 현재의 값을 전달한다.
* RawElement - 원시 요소 트리 내의 요소를 표시.
* ScrollPattern - 값을 표시하고 있는 UI 요소를 표시.
* SelectionItemPattern - 선택을 관리하는 컨테이너 내의 개별 항목을 표시. UI 자동화 클라이언트는 이 클래스를 이용하여 SelectionItemPattern 제어 패턴을 지원하는 UI 요소에 대한 정보를 입수하거나 UI 요소를 조작한다. 예는 리스트 박스 또는 트리 뷰 내의 항목 등의 SelectionPattern 제어 패턴을 지원하는 제어 내에서 선택될 수 있는 임의의 항목을 포함한다.
* SelectionPattern - 선택을 관리하는 컨테이너를 표시. SelectionPattern 제어 패턴을 지원하는 사용자 인터페이스 요소에 대한 정보를 획득하거나 사용자 인터페이스 요소를 조작하기 위하여 UI 자동화 클라이언트에 의해 사용됨.
* SortPattern - 컨테이너의 현재 정렬 순서를 노출하고 클라이언트가 프로그램적으로 요소를 재정렬하도록 한다.
* SplitPattern - 인접하는 윈도우를 생성함으로써 그 자신을 복제할 수 있는 윈도우를 표시.
* TableItemPattern - 헤더 정보와 함께 그리드 항목을 표시
* TablePattern - 헤더 정보를 갖는 그리드를 표시.
* TextPattern - 편집 제어 등의 텍스트 표시.
* TopLevelWindowEventArgs - TopLevelWindoswEventArgs 이벤트 인수 클래스.
* TreeLoadEventArgs - TreeLoadEventArgs 이벤트 인수 클래스
* ValuePattern - 라디오 버튼, 토글 버튼, 체크 박스, 편집 박스, RGB 칼라 값, 및 체크가능한 메뉴 항목 등의 범위를 스팬(span)하지 않는 제어를 위한 값을 노출.
* VisualInformationPattern - 복사가 진행중임을 나타내는 윈도우 익스플로러의 간결한 서류 또는 다운로드중인 문서를 나타내는 스피닝 글로브(spinning globe) 또는 인터넷 익스플로러의 웨이빙 플래그(waving flag) 등의 정보를 사용자에게 전달하는 이미지 또는 애니메이션에 관한 정보를 노출.
* WindowPattern - 온-스크린 위치 또는 크기를 변경하기 위한 요소의 능력을 노출. 예는 상부 레벨 애플리케이션 윈도우(워드 또는 윈도우 익스플로러), 아웃룩 메인 윈도우 팬(pan) (폴더, 이메일, 메시지, 태스크), 및 MDI 자식 윈도우를 포함한다.
* ZoomPattern - 현재의 줌 레벨을 제어하도록 노출하고, 클라이언트가 프로그램적으로 변경하도록 한다.
<열거>
* AutomationPermissionFlag - AutomationPermission 객체에 대한 액세스 플 래그를 포함.
* ChildArrangement - 자식이 배열될 수 있는 다른 메쏘드.
* DockPosition - 도킹가능한 윈도우가 부착되는 컨테이너의 에지.
* ExpandCollapseState - 확장된/축약된 상태를 나타내기 위해 ExpandCollapse 패턴에 의해 사용됨.
* GetDataOptions - GetData에 대한 선택.
* HierarchyItemState - 계층 항목: 축약, 확장, 또는 부분 확장의 상태를 나타내는 목록.
* ItemCheckState - 체크 박스, 라디오 버튼, 및 유사한 제어의 상태를 나타내는 목록.
* LoadState - 트리 상태 플래그.
* LogicalMapping - 원시 트리 내의 노드가 논리 트리 내에 디스플레이될지를 나타내는 값.
* ProxyFlags - 속성을 요구한 결과를 나타내는데 사용되는 목록.
* RowOrColumnMajor - 이 테이블 내의 데이터가 로우 또는 칼럼에 의해 가장 많이 존재하는가.
* ScopeFlags - 이벤트에 대하여 청취할 때 범위를 정의하기 위하여 사용되는 플래그.
* ScrollAmount - 어느 쪽을 스크롤할지에 의해 방향(순방향 또는 역방향) 및 양(페이지 또는 라인)을 나타내기 위해 ScrollPattern에 의해 사용됨.
* SendMouseInputFlags - SendMouseInput을 위한 플래그. 이들 플래그는 이동이 발생하는지 또는 버튼이 눌려지거나 해제되는지를 표시한다.
* SplitStyles - 윈도우가 분할할 수 있는 방향에 대한 플래그.
* StructureChangeType - 논리 트리의 구조에 있어서의 변화를 나타내는 플래그.
* TextPointerGravity - 인력(gravity)은 텍스트가 AutomationTextPointer에 삽입될 때 AutomationTextPointer의 배치를 결정한다. 인력은 항상 뷰의 텍스트 포인터 점으로부터, 즉, 내 문자 이전 또는 내 문자 이후에 있다. 사용자가 텍스트 포인터 위치에 문자를 삽입할 때, 이전은 포인터가 새로운 문자 전에 배치될 것을 의미하고, 이후는 포인터가 새로운 문자 후에 배치될 것을 의미한다.
* WindowChangeType - 상부 레벨 윈도우 내의 변화를 나타내는 플래그.
* WindowInteractionState - 사용자 상호작용을 위한 윈도우의 현재 상태.
* WindowVisualState - 윈도우의 비주얼 상태를 설명하기 위하여 사용되는 상태. WindowVisualState는 WindowState의 HTML 정의 및 Office를 따른다.
<구조체>
* MatchCondition - FindLogicalElement 또는 FindRawElement를 사용하여 요소를 찾는 기준을 특정.
* NameAndData - 이름, 객체로서의 데이터, 및 스트링으로서의 데이터를 포함.
* ProxyDescription - 프록시에 대한 정보를 포함하는 구조체.
* SortInformation - 정렬에 사용되는 정보.
<델리게이트>
* AutomationEventHandler - AutomationEvents를 처리하기 위한 델리게이트.
* AutomationFocusChangedEventHandler - 포커스 변화 이벤트를 처리하기 위한 델리게이트.
* AutomationPropertyChangedEventHandler - 자동화 속성 변화 이벤트를 처리하기 위한 델리게이트.
* LogicalStructureChangedEventHandler - 논리 구조 변화 이벤트를 처리하기 위한 델리게이트.
* ProxyFactoryCallback - HWND 핸들러에 의해 구현됨; 특정 윈도우에 대한 프록시를 요구하기 위하여 UI 자동화 프레임워크에 의해 호출됨. 지원된다면, 프록시를 리턴하거나 지원되지 않는다면 널(null)되어야 한다.
* TopLevelWindowEventHandler - 상부 레벨 윈도우 이벤트를 처리하기 위한 델리게이트.
System.Windows.Ink 네임스페이스
System.Windows.Ink 네임스페이스는 전자 잉크 프로세싱 시스템을 지원하는 클래스를 제공한다. 전자 잉크 프로세싱 기술은 다양한 소프트웨어 애플리케이션에 유용하다. 이들 전자 잉크 프로세싱 기술은 특히 레이아웃 분석, 분류, 및 전자 잉크 인식을 포함하는 전자 잉크 분석에 적용가능한다. 소정의 전자 잉크 프로 세싱 기술은 전자 잉크가 기술을 구현하는 소프트웨어 애플리케이션의 동작에 대하여 비동기적으로 프로세싱되도록 하여, 전자 잉크가 소프트웨어 애플리케이션의 동작을 정지하거나 크게 지연시키지 않고 처리될 수 있다. 소프트웨어 애플리케이션은 이전의 전자 잉크 입력이 프로세싱되는 동안 새로운 전자 잉크 입력을 수용하도록 계속될 수 있다.
애플리케이션 프로그래밍 인터페이스는, 문서를 호스팅하고 제1 프로세싱 스레드 상에서 실행되는 소프트웨어 애플리케이션으로부터 전자 잉크 콘텐츠를 포함하는 문서에 대한 문서 데이터를 수신하는 잉크 분석기 객체를 실증한다. 그후, 잉크 분석기 객체는 제1 스레드를 사용하여 문서 데이터의 카피를 형성하고, 문서의 데이터 카피를 전자 잉크 분석 프로세스에 제공하고, 제1 프로세싱 스레드의 제어를 분석 프로세스에 리턴한다. 분석 프로세스가 전자 잉크를 분석한 후, 잉크 분석기 객체는 문서에 대한 현재의 문서 데이터와 분석 프로세스의 결과를 중재한다.
특정한 실시예에서, 파일 또는 문서 내의 요소는 서로에 대한 공간 위치에 기초하여 설명될 수 있다. 예를 들어, 전자 잉크 스트로크 및 타이핑한 텍스트는 동일 공간 좌표 시스템으로 설명될 수 있다. 문서의 요소를 설명하기 위하여 공간 정보를 사용하면, 문서를 관리하는 소프트웨어 애플리케이션은 그 문서 요소들 사이의 관계를 설명하는 데이터 구조를 유지할 수 있다. 특히, 소프트웨어 애플리케이션은, 다양한 문서 요소의 클래스를 설명하고 다양한 문서 요소들간의 관계를 정의하는 데이터 구조를 유지할 수 있다. 이들 관계는 예를 들어 전자 문서(워드, 라인, 패러그래프, 도면, 테이블 셀 등) 내의 다른 요소로 전자 잉크 스트로크 데이터 또는 그 콜렉션을 링크하는 데 사용되는 정보로서 정의될 수 있다.
파일 또는 문서 데이터 구조체 내의 문서 요소를 그 공간 위치에 기초하여 기술함으로써, 다양한 파일 유형에 대한 문서 요소들은 그 문서 요소를 식별하고 조작하기 위한 공통의 기술을 채용할 수 있다. 더 상세하게는, 다양한 소프트웨어 애플리케이션은 문서 내의 문서 요소들을 그 공간 위치에 기초하여 기술할 수 있고, 공통의 전자 잉크 분석 메쏘드를 사용하는 것과 관련하여 이러한 공간 위치를 채용할 수 있다. 또한, 각각의 소프트웨어 애플리케이션은 분석을 위한 문서의 특정 영역을 지정함으로써, 분석 프로세스를 문서 내의 원하는 요소들만으로 한정할 수 있다.
문서에 대한 새로운 전자 잉크 입력을 분석하기 위하여, 문서를 관리하는 소프트웨어 애플리케이션은 분석될 새로운 잉크를 포함시키기 위하여 해당 문서와 연관된 데이터 구조체를 수정한다. 그리고나서, 소프트웨어 애플리케이션은 이 데이터 구조체(또는 그 관련 부분)를 잉크 분석 툴에 제공하며, 이러한 잉크 분석 툴은 분석을 위하여 데이터 구조체의 일부 또는 전부를 복사한다 (그리고 이와 같이 애플리케이션 프로그램의 문서 데이터 구조체에 독립적인 데이터의 사본에 동작을 행한다). 잉크 분석 툴은 사본을 파싱 프로세스(예를 들어, 레이아웃 분석 프로세스 및/또는 분류 프로세스)와 같은 분석 프로세스에 전달한다. 잉크 분석 프로세스(들)가 수행되고 있는 동안, 소프트웨어 애플리케이션은 새로운 전자 잉크 및/또는 기타 데이터의 수신을 비롯한 자신의 정규 동작을 재개할 수 있다. 새로운 전자 잉크를 수신하는 것 이외에, 기존 잉크, 텍스트, 이미지, 그래픽, 테이블, 플로우차트, 다이어그램 등의 크기, 위치 또는 내용을 수정하는 데이터; 추가의 텍스트, 이미지, 그래픽, 테이블, 플로우차트, 다이어그램 등을 추가하는 데이터; 기존의 텍스트, 이미지, 그래픽, 테이블, 플로우차트, 다이어그램 등을 삭제하는 데이터와 같은 임의의 "기타 데이터"가 애플리케이션 프로그램에 의하여 수신될 수 있다. 모든 원하는 분석 프로세스가 완료된 후, 분석 결과는 잉크 분석 툴에 리턴된다.
잉크 분석 툴은 전자 잉크의 프로세스를 용이하게 하기 위한 다양한 기능을 수행한다. 잉크 분석 툴은 API와 같은 프로그래밍 인터페이스로서 구현될 수 있다. 또한, 잉크 분석 툴은 문서 내의 잉크를 분석하는 데에 필요한 대로 소프트웨어 애플리케이션에 의해 호출될 수 있는 소프트웨어 객체 루틴 및 관련 정보의 그룹으로도 구현될 수 있다.
일 실시예에서, 잉크 분석 툴을 구현하는 API(이하, Ink Analysis API로 칭함)는 2개의 핵심적인 클래스를 포함할 수 있다. 제1 클래스는 "Analysis Context" 클래스로 칭해지고, 제2 클래스는 "Ink Analyzer" 클래스로 칭해진다. "Analysis Context" 클래스의 컴포넌트들은 분석 컨텍스트 객체를 생성하는 데에 사용된다. 그리고, "Ink Analyzer" 클래스의 컴포넌트들은, 문서 독립적인 분석 컨텍스트 객체를 분석 프로세스에 제공하고, 분석 결과가 생성된 때를 결정하며, 분석 결과를 문서의 현재 상태와 조화시키는 객체를 생성하고 채용하는 데에 사용된다.
Analysis Context 클래스는, 소프트웨어 애플리케이션의 내부 문서 트리에 대한 프록시 뷰로서 기능하는 분석 컨텍스트 객체를 생성하기 위하여, 호스트 애플리케이션에 의하여 구현된다. 분석 컨텍스트 객체는 모든 미분석 잉크 데이터를 포함하며, 분석 컨텍스트 객체는 어떤 미분석 잉크 데이터가 분석되어야 하는지를 식별하는 데에 사용된다. 또한, 분석 컨텍스트 객체는 사전에 분석된 잉크에 관한 정보도 포함한다. 이러한 사전에 분석된 잉크는 현재 분석되지 않은 잉크가 어떻게 분석되어야 하는지를 결정하는 데에 사용될 수 있고, 그 자체가 미분석 잉크의 분석 동안에 수정될 수도 있다. 또한, 분석 컨텐트 객체는 문서의 비잉크 컨텐트에 관한 정보를 포함하며, 이것은 잉크를 비잉크 컨텐트에 대한 주석으로서 적절하게 분류하는 데에 사용된다.
Analysis Context 클래스는, 소프트웨어 애플리케이션에 의해 호출될 때 분석 컨텍스트 객체를 생성하는 컨스트럭터를 포함한다. Analysis Context 클래스는 "Dirty Region {get;}"으로 명명된 속성을 비롯하여, 분석 컨텍스트 객체를 위한 다양한 속성을 포함할 수 있다. Dirty Region 속성은 미분석 잉크 데이터를 포함하는 문서의 부분(및 분석 컨텍스트 객체의 부분)을 정의한다.
또한, Analysis Context 클래스는, 분석 컨텍스트 객체 내의 최상위 또는 루트 컨텍스트 노드를 식별하는 "Rootnode {get;}"으로 명명된 속성을 더 포함할 수 있다. 이러한 루트 컨텍스트 노드는, 주어진 분석 컨텍스트 객체에 대한 모든 다른 컨텍스트 노드 객체를 자식 컨텍스트 노드로서 포함한다. 특정 실시예에서, 루트 컨텍스트 노드는 컨텍스트 노드 타입 "Root"를 갖는 것이어야 한다. 애플리케이션이 자기 자신의 분석 컨텍스트 객체를 구현하는 실시예에서, 분석 컨텍스트 객 체는 루트 컨텍스트 노드의 형제로서 다른 컨텍스트 노드를 가질 수 있지만, Ink Analyzer 클래스의 컴포넌트는 루트 컨텍스트 노드에 의해 포함되는 컨텍스트 노드를 고려하는 것으로 한정될 수 있다.
Analysis Context 클래스는, 소프트웨어 애플리케이션에 의해 설정된 분석 힌트 객체의 어레이를 리턴시키는 속성 "Analysis Hints {get;}"을 더 포함할 수 있다. 이하에 더 상세하게 설명되는 바와 같이, 분석 힌트 객체는 분석 프로세스를 도울 수 있는 임의의 유형의 정보를 포함할 수 있다. 이러한 정보는 예를 들어 팩토이드(factoid), 가이드 또는 단어 리스트 등을 포함할 수 있다. 또한, 분석 힌트 객체는 분석에 사용될 언어를 설정하는 정보, 및 미분석 잉크를 핸드라이팅 텍스트 전용 또는 드로잉 전용으로 지정하거나, 잉크를 리스트, 테이블, 형상, 플로우차트, 커넥터, 컨테이너 등으로서 식별하는 것과 같은 파싱 프로세스에 대한 임의의 유형의 가이드를 제공하는 정보도 포함한다.
Analysis Context 클래스는, 이러한 속성 이외에, 분석 컨텍스트 객체가 태스크를 수행하도록 하기 위하여, 예를 들어 소프트웨어 애플리케이션에 의해 호출될 수 있는 다양한 메쏘드도 포함할 수 있다. 예를 들어, Analysis Context 클래스는 "FindNode (Guid id)"로 명명된 메쏘드를 포함할 수 있다. 분석 컨텍스트 객체 내의 각각의 노드는 GUID(globally unique identifier)를 가지며, 이러한 메쏘드는 호출에서 지정된 노드를 분석 컨텍스트 객체 내의 어디에라도 배치할 것이다.
Analyzer Context 클래스와 마찬가지로, Ink Analyzer 클래스는 소프트웨어 애플리케이션이 다양한 속성과 함께 클래스의 인스턴스(즉, 잉크 분석기 객체)를 생성할 수 있게 하는 퍼블릭 컨스트럭터를 정의한다. 예를 들어, 이것은 분석 프로세스의 결과가 리턴될 프로세싱 쓰레드를 정의하는 "User Interface Context {get; set;}"으로 명명된 속성을 포함할 수 있다. 이러한 속성은 결과가 다른 객체에 동기화될 수 있게 한다. 예를 들어, 이것이 메인 양식(main form)으로 설정되는 경우, 파서 결과는 애플리케이션 메인 쓰레드 상에서 점화될 것이다. Ink Analyzer 클래스는 분석 프로세스에 사용될 수 있는 다양한 기준을 지정하는 속성 "AnalysisOptions AnalysisOptions {get; set;}"을 포함할 수 있다. 이러한 기준은 예를 들어 텍스트 인식의 인에이블, 테이블 사용의 인에이블, 리스트 사용의 인에이블, 주석 사용의 인에이블, 및 커넥터 및 컨테이너 사용의 인에이블을 포함할 수 있다.
"Ink Analyzer" 클래스는 다양한 메쏘드를 포함할 것이다. 예를 들어, Ink Analyzer 클래스는 "AnalysisRegion Analyze()"로 명명된 메쏘드를 포함할 수 있다. 이 메쏘드는 동기 분석 프로세스를 시작한다. 문서의 현재 상태를 기술하고 문서 내의 어떤 잉크가 분석되어야 하는지를 나타내는 문서 요소 데이터가 이 메쏘드로 전달된다. 일부 실시예에서, 문서 요소 데이터는 전술한 바와 같이 분석 컨텍스트 객체(즉, AnalysisRegion Analyze(Analysis Context))로서 제공될 수 있다. 다르게는, 개별 잉크 스트로크는, 스트로크에 대한 참조(즉, AnalysisRegion Analyze (Strokes))를 사용하여 분석 프로세스에 전달될 수도 있고, 또는 Analyze 메쏘드에 속성이 전달되지 않고 Ink Analyzer 객체(예를 들어, InkAnalyzer.Strokes {get;set})의 속성으로서 참조될 수 있다.
분석 프로세스가 완료되고 나면, 이 메쏘드는 분석 프로세스의 결과를 포함하도록 수정되어 있는 문서 독립적인 분석 컨텍스트 객체에 대한 참조를 리턴시킬 것이다. 또한, 메쏘드는 결과가 계산되어 있는 문서 내의 영역을 기술하는 AnalysisRegion 값을 리턴시킬 것이다.
Ink Analyzer 클래스는 "AnalysisRegion Analyze (AnalysisContext, waitRegion)"으로 명명된 메쏘드도 포함할 수 있다. 이 메쏘드는 전술한 동기 Analysis Region Analyze () 메쏘드와 동일하지만, 지정된 waitRegion 영역에서 결과가 필요한 경우에만 잉크가 분석되게 한다. 더 상세하게는, 이러한 메쏘드에 대한 호출은 문서에 대한 분석 컨텍스트 객체와, 분석 프로세스가 동기적으로 분석해야만 하는 분석 컨텍스트 객체의 영역(이하 "waitRegion"으로 칭함)을 식별할 것이다. 소정의 실시예에서, 분석 프로세스가 waitRegion의 분석을 완료하기 위하여 분석 컨텍스트 객체의 모든 다른 영역들 내의 컨텐트를 분석해야할 필요가 없다면, 이러한 영역들은 무시될 것이다. 전술한 바와 같이, 이러한 메쏘드로 전달된 분석 컨텍스트 객체는 분석을 필요로 하는 문서의 영역을 기술하는 "DirtyRegion"이라고 칭해지는 속성을 포함한다. 특정한 waitRegion을 지정함으로써, 소프트웨어 애플리케이션은 문서 내의 모든 잉크 데이터가 분석되게 하는 것이 아니라, 관심의 대상이 되는 하나의 특정 영역에 대한 분석 결과를 보다 신속하게 얻을 수 있다. 이러한 Analyze 메쏘드들 중 하나가 호출되면, 모든 이용가능한 분석 프로세스가 실행될 것이다. 또한, 이러한 Analyze 메쏘드들은 동기 호출이기 때문에, 종료시에 조정을 행할 필요도 없고, 종료되고 난 후에 이벤트 점화도 없을 것이다.
Ink Analyzer 클래스는 "BackgroundAnalyze(AnalysisContext)"로 명명된 메쏘드를 더 포함할 수 있다. 이 메쏘드는 지정된 분석 동작을 시작하지만, 개별적인 배경 분석 쓰레드에 대해서도 마찬가지이다. 따라서, 이 메쏘드는, 실제 분석 동작이 배경에서 완료되는 것과 거의 동시에, 메인 프로세스 쓰레드에 컨트롤을 리턴한다. 특히, 분석 프로세스가 성공적으로 시작된 경우, 이 메쏘드는 "참"값을 리턴할 것이다. 다시 말해, 이 메쏘드에 전달된 AnalysisContext 값은 문서에 대한 분석 컨텍스트 객체를 식별하고, 문서 내의 어떤 잉크가 분석될 필요가 있는지를 나타낸다. 배경 쓰레드 상에서 분석 동작이 완료되고 나면, Result 이벤트가 상승되어, 소프트웨어 애플리케이션이 결과에 액세스하는 것을 허용한다. 이 이벤트는 결과, 및 결과가 리턴될 때 문서의 현재 상태에 대한 분석 컨텍스트 객체에 그 결과를 통합시키는 데에 사용되는 조정 메쏘드를 포함한다.
이러한 3개의 Analyze 메쏘드 각각은 차례로 "Analysis Region" 클래스 내의 메쏘드 "Clone"을 호출한다. 이러한 Analyze 메쏘드는, "Clone" 메쏘드를 사용하여, 분석 결과를 보여주기 위하여 분석 프로세스에 의해 후속적으로 수정되는 문서 독립적인 분석 컨텍스트 객체를 생성한다.
Ink Analyzer 클래스는, 소프트웨어 애플리케이션이 BackgroundAnalyze(AnalyzeContext) 메쏘드를 호출함으로써 생성되었던 결과 이벤트를 수신한 후에 호출하는 "Reconcile(AnalysisContext current, AnalysisResultsEventArgs resultArgs)"로 명명된 메쏘드도 포함할 수 있다. Reconcile 메쏘드는 문서 독립적인 분석 컨텍스트 객체 내에 포함된 분석 결과와, 소프트웨어 애플리케이션에 의해 유지되는 분석 컨텍스트 객체의 현재 버전을 비교한다. Reconcile 메쏘드는 분석 컨텍스트 객체의 현재 버전에 대한 추가 또는 제거가 필요한 노드를 식별하고, 기존 노드의 속성들 - 인식 결과, 위치, 노드와 연관된 잉크 스트로크, 또는 분석 동작의 결과와 연관된 임의의 기타 데이터 - 중 어느 것이 변경되었는지를 식별한다. 또한, Reconcile 메쏘드는 이러한 식별된 변경을 분석 컨텍스트 객체의 현재 버전에 기입한다. Reconcile 메쏘드는 행 컨텍스트 노드 상의 단어 컨텍스트 노드들의 순서와 같은 컨텍스트 노드의 순서화에 민감하다.
분석 결과(즉, 속성 AnalysisResultsEventArgs의 값)는 Reconcile 메쏘드로 다시 전달되며, 공용 결과 구조체(public result structure)와 전용 결과 구조체(private result structure)를 포함한다. 공용 구조체는 리턴되므로, 소프트웨어 애플리케이션은 조정 스테이지(reconcile stage)에서 발생할 변경을 미리 볼 수 있다. 전용 구조체는, 소프트웨어 애플리케이션이 조정 프로세스 이전에 분석 결과 중 어느 것도 변경하지 못하도록 하기 위하여 포함된다.
Ink Analyzer 클래스는 "Recognizers RecognizersPriority()" 및 "SetHighestPriorityRecognizer(recognizer)"로 명명된 메쏘드도 포함할 수 있다. 잉크가 인식될 필요가 있으면, 언어 및 기능에 기초하여 적절한 인식기가 이용될 것이다. 따라서, Recognizers RecognizersPriority() 메쏘드는 Ink Analyzer 객체에 의해 평가되는 순서대로 인식 프로세스를 리턴시킬 것이다. 이러한 순서는 이용가능한 인식 프로세스에 따라 시스템별로 결정되지만, InkAnalyzer 객체 상에서 SetHighestPriorityRecognizer(recognizer)를 호출함으로써 소프트웨어 애플리케이션에 대하여 오버라이드될 수 있다. InkAnalyzer는 적절한 인식기가 발견될 때까지 이러한 순서화 리스트 전체를 열거할 것이다. SetHighestPriorityRecognizer(recognizer) 메쏘드는 하나의 인식 프로세스의 우선순위를 상승시킨다. 특정 인식 프로세스의 우선순위를 상승시킴으로써, 그 인식 프로세스가 현재 인식 동작의 요구되는 언어 및 기능과 일치하는 경우에, 그 인식 프로세스가 사용될 것이다. 근본적으로, SetHighestPriorityRecognizer(recognizer)는 지정된 인식 프로세스를 RecognizersPriority 메쏘드에 의해 리턴된 리스트의 최상위에 놓는다.
또한, Ink Analyzer 클래스는 분석 컨텍스트 객체를 파라미터로서 사용할 수 있는 "AnalysisRegion Abort()"로 명명된 메쏘드를 더 포함할 수 있다. 이 메쏘드는 전경 또는 배경 분석 동작이 조기에 종료되는 것을 허용한다. 이 메쏘드는 중단 전에 분석되고 있던 영역을 기술하는 분석 영역을 리턴시킨다. 따라서, 나중에 소프트웨어 애플리케이션이 분석 동작을 계속하고자 하는 경우, 이 영역은 문서의 현재 상태에 대한 분석 컨텍스트 객체의 DirtyRegion으로 병합될 수 있다. 또한, Ink Analyzer 클래스는 InkAnalyzer 객체를 가능한 한 빈번하게 점화하는 "AnalysisResultsEventHandler"로 명명된 이벤트를 포함할 수 있다. 더 상세하게는, AnalysisResultsEventHandler 이벤트는 분석 프로세스들 간에서 적어도 5초에 한번씩 점화할 수 있다. AnalysisResultsEventHandler 이벤트는 진행 중인 비동기 분석 프로세스(들)의 상태에 대한 업데이트를 애플리케이션에 제공하는 데에 사용 될 수 있다.
또한, Ink Analysis API는 Analysis Context 클래스 및 Ink Analyzer 클래스 이외의 클래스들도 포함할 수 있다. 예를 들어, Ink Analysis API는 Context Node 클래스를 포함할 수 있다. 이 클래스는 "ContextNodeType Type {get;}"으로 명명된 속성과 같이, 분석 컨텍스트 객체 및 문서 독립적인 분석 컨텍스트 객체를 구성하는 컨텍스트 노드에 관한 다양한 컴포넌트를 포함할 수 있다. 각각의 컨텍스트 노드가 하나의 타입을 가지며, 각각의 타입이 속해야 하는 특정 규칙 집합이 존재한다. 이러한 규칙 집합은 어떤 유형의 자식 컨텍스트 노드가 허용되는지, 및 스트로크가 컨텍스트 노드에 직접 연관될 수 있는지 또는 그 자식 노드를 통해서만 연관될 수 있는지와 같은 규칙을 포함한다.
컨텍스트 노드의 가능한 타입은 "ContextNodeTypes" 열거 내에 정의될 수 있으며, 예를 들어 비텍스트 데이터에 대한 주석인 잉크 데이터를 나타내는 InkAnnotation 노드; 드로잉을 형성하는 잉크 데이터를 나타내는 InkDrawing 노드; 단어를 형성하는 잉크 데이터를 나타내는 InkWord 노드; 한 행의 텍스트를 형성하는 단어들에 대한 하나 이상의 InkWord 노드 및/또는 TextWord 노드를 포함하는 Line 노드; 리스트 내에 예상되는 Paragraph, Image 노드 등을 포함할 수 있는 ListItem 노드; 및 리스트 내의 엔트리를 각각 기술하는 하나 이상의 ListItem 노드를 포함하는 List 노드와 같은 유형을 포함할 수 있다. 노드 타입은 비잉크 드로잉 이미지를 나타내는 NonInkDrawing 노드; ContextNodeType 열거의 다른 값들에 의해 커버되지 않는 데이터를 나타내는 Object 노드; 문단을 형성하는 행들에 대응 하는 하나 이상의 Line 노드를 포함하는 Paragraph 노드; 픽쳐 이미지를 나타내는 Picture 또는 Image 노드; 분석 컨텍스트 객체 내의 최상위 노드로서 기능하는 Root 노드; 테이블을 구성하는 항목들을 나타내는 노드를 포함하는 Table 노드; 텍스트 박스를 나타내는 TextBox 노드; TextWord 노드; 및 지금까지 분류되지 않는 잉크 데이터에 대응하는 UnclassifiedInk 노드를 포함할 수 있다. 또한, 노드 타입은 다른 노드들의 그룹에 대한 Group node, 글머리 항목을 위한 InkBullet 노드, 테이블의 행에 제공되는 문서 요소를 위한 Row 노드, 및 테이블의 셀에 제공되는 문서 요소를 위한 Cell 노드를 포함할 수 있다.
Context Node 클래스는 현재 컨텍스트 노드에 대한 글로벌 고유 식별자인 "GUID Id {get;}"으로 명명된 속성을 포함할 수 있다. 임의의 원하는 컨텍스트 노드에 대한 액세스를 허용하기 위하여, 단일 분석 컨텍스트 객체 내의 각각의 컨텍스트 노드는 고유 식별자를 가져야만 한다. Context Node 클래스는 문서 공간 내에서 관련 컨텍스트 노드가 실제로 배치되어야 하는 위치를 식별하는 "AnalysisRegion Location {get;}"로 명명된 속성을 더 포함할 수 있다. AnalysisRegion은 하나 이상의 가능하게 분리된 직사각형 구조체를 그룹화하는 2차원 구조체이다. Context NOde 클래스는 관련 컨텍스트 노드에 연관된 잉크 스트로크들을 식별하는 "StrokeCollection Strokes {get;}"으로 명명된 속성을 더 포함할 수 있다. 특정 실시예에서는, Ink Analysis API에 의하여 리프(leaf) 컨텍스트 노드(예를 들어, Word, Drawing 및 Bullet 노드)만이 스트로크를 갖도록 허용된다. 소프트웨어 애플리케이션은, 모든 조상 컨텍스트 노드에 의해 리프 노드 레벨에서 의 스트로크를 참조하기 위하여, 이러한 속성을 이용할 수 있다 (예를 들어, 루트 노드는 관련 분석 컨텍스트 객체 내의 모든 스트로크에 대한 스트로크 참조를 포함할 것이다).
또한, Cotext Node 클래스는 관련 컨텍스트 노드를 포함하는 부모 컨텍스트 노드를 식별하는 "ContextNodeParentNode {get;}"으로 명명된 속성을 포함할 수 있다. 특정 실시예에서, 컨텍스트 노드는 항상 부모 컨텍스트 노드에 종속하도록 생성되며, Root 컨텍스트 노드는 분석 컨텍스트 객체의 정적 요소이다. 이 클래스는 관련 컨텍스트 노드의 직접적인 자식인 모든 컨텍스트 노드를 식별하는 속성 "ContextNode[] SubNodes {get;}"을 포함할 수 있다. 즉, 이 속성은 분석 컨텍스트 객체 내에서 한 레벨 아래에 있는 자식 컨텍스트 노드들만을 식별할 것이다. 예를 들어, Paragraph 컨텍스트 노드에 대한 이 속성의 값은, Paragraph 노드에 의해 포함되는 행 컨텍스트 노드만을 식별하고, 행 컨텍스트 노드의 자식인 단어 컨텍스트 노드는 식별하지 않을 것이다.
또한, Context Node 클래스는, RecognitionResult가 2 이상의 언어로부터 2행 이상의 텍스트를 표현할 수 있을 때에, 관련 인식 분석 프로세스 또는 프로세스들에 의해 계산된 인식 결과를 제공하는 "RecognitionResult RecognitionResult {get;}"으로 명명된 속성을 포함할 수 있다. 인식 분석 프로세스에 의해 설정되어 RecognitionResult 객체를 생성하는 데에 사용되는 RecognitionData 속성이 데이터의 복제를 방지하기 위하여 컨텍스트 노드 트리의 한 레벨에서만 설정되었더라도, Recognition Result는 문서 독립적인 분석 컨텍스트 객체 내의 모든 컨텍스트 노드 에 대하여 이용가능하다. 노드가 자신과 관련된 RecognitionData를 갖지 않는 경우, 그 노드는 자신의 모든 하위노드의 인식 결과를 병합하거나, 또는 자신의 부모로부터 인식 결과를 추출할 것이다. 이 클래스는 RecognitionResult 값의 불변 형식인 "Stream RecognitionData {get; set;}"으로 명명된 속성도 포함할 수 있다. 다시 말하면, 인식 분석 프로세스는 관련 컨텍스트 노드 상에 설정된 Stream RecognitionData 값을 생성한다. 그리고, RecognitionResult 객체가 이 값에 기초하여 구성된다.
또한, Context Node 클래스는 ContextLink 객체의 어레이를 제공하는 "ContextLink[] Links {get;}"으로 명명된 속성을 더 포함할 수 있다. ContextLink 객체는 2개의 컨텍스트 노드 간의 대안적인 관계를 기술한다. 일반적으로, 컨텍스트 노드는 다른 컨텍스트 노드와 부모-자식 관계를 갖지만, ContextLink는 컨텍스트 노드들 간의 다른 관계를 허용한다. 예를 들어, ContextLink는 2개의 컨텍스트 노드 간의 연결, 하나의 컨텍스트 노드의 다른 컨텍스트 노드에 대한 고정(anchoring), 하나의 컨텍스트 노드의 다른 컨텍스트 노드에 의한 포함, 또는 소프트웨어 애플리케이션에 의하여 정의되는 원하는 유형의 링크를 허용할 수 있다. ContextLink는 AddLink 메쏘드를 호출함으로써 이 어레이에 추가될 수 있다. 마찬가지로, ContextLink는 DeleteLink 메쏘드를 호출함으로써 이 어레이로부터 삭제될 수 있다.
또한, Context Node 클래스는 "IsContainer {get;}" 및 "IsInkLeaf {get;}" 속성을 포함할 수 있다. 속성 IsContainer {get;}은, 관련 컨텍스트 노드가 리프 컨텍스트 노드가 아닌 경우(즉, 관련 컨텍스트 노드가 자식 노드를 포함하고, 그에 의해 컨테이너 컨텍스트 노드로 간주되는 경우)에 "참" 값을 갖고, 그렇지 않은 경우에는 "거짓" 값을 갖는다. IsInkLeaf {get;} 속성은 현재의 컨텍스트 노드가 컨테이너 컨텍스트 노드가 아닌 경우에 "참" 값을 갖고, 그렇지 않은 경우에는 "거짓" 값을 갖는다. 즉, 현재의 컨텍스트 노드가 어떠한 자식 컨텍스트 노드도 포함하지 않는 경우, 그 노드는 리프 컨텍스트 노드로 간주된다. 소정의 실시예에서, InkLeaf 컨텍스트 노드는 스트로크 데이터에 대한 참조를 포함할 것으로 기대되는 반면, 컨테이너 컨텍스트 노드는 이러한 제한을 갖지 않는다. 컨테이너 컨텍스트 노드는 소프트웨어 애플리케이션에 의해 지정되는 대로 참조 스트로크 데이터를 가질 수도 있고, 가지지 않을 수도 있다.
Context Node 클래스는 속성 "Rect RotateBoundingBox {get; set;}"을 포함할 수 있다. 이 속성의 값은 레이아웃 및 분류 분석 프로세스에 의하여 계산된다. 관련 컨텍스트 노드와 연관된 잉크 데이터가 한 각도로 기입되면, 컨텍스트 노드에 대한 경계는 여전히 수평으로 정렬되어 있을 것이다. 그러나, RotatedBoundingBox 속성의 값은 관련 컨텍스트 노드와 연관된 잉크 데이터가 기입된 각도로 정렬될 것이다. 또한, 이 클래스는 InkAnalyzer에게 관련 컨텍스트 노드의 값을 수정하는 것이 허용되는지를 알려주는 속성 "ReClassifiable {get;}"을 포함할 수 있다.
이러한 속성들에 더하여, Context Node 클래스는 다양한 메쏘드를 포함할 수 있다. 예를 들어, 이 클래스는 "ContextNode CreateSubNode(ContextNodeType type)"으로 명명된 메쏘드를 포함할 수 있다. 이 메쏘드는 특정 타입의 자식 컨텍 스트 노드의 생성을 허용한다. 일 실시예에서, 이 메쏘드는 관련 컨텍스트 노드의 유효 자식 타입만이 생성될 수 있게 함으로써, 잘못된 형식의 데이터 구조체가 생성되는 것을 방지한다. 예를 들어, 이 메쏘드는 Line 컨텍스트 노드가 InkWord 및 Textword 자식 컨텍스트 노드를 생성하는 것만을 허용할 수 있다. 또한, 이 클래스는, 참조된 자식 컨텍스트 노드를 관련 분석 컨텍스트 객체로부터 삭제하는 "void DeleteSubNode(ContextNode node)"로 명명된 메쏘드를 포함할 수 있다. 그러나, 특정 실시예에서, 참조된 컨텍스트 노드가 여전히 스트로크 또는 자식 컨텍스트 노드를 포함하는 경우에, 이 메쏘드는 실패해야만 한다. 또한, 참조 컨텍스트 노드가 관련 컨텍스트 노드의 직접적인 자식이 아닌 경우, 이 메쏘드는 실패해야 한다. 소프트웨어 애플리케이션이 자기 자신의 분석 컨텍스트 객체를 구현하고 이 메쏘드를 채용하는 경우, 그 소프트웨어 애플리케이션은 분석 컨텍스트 객체 내의 잘못된 형식의 데이터 구조체를 방지하기 위하여, 비공백 컨텍스트 노드 또는 관련 컨텍스트 노드의 직접적인 자식이 아닌 컨텍스트 노드를 삭제하지 않을 것이다.
또한, 이 클래스는 지정된 영역 내에 배치된 컨텍스트 노드의 어레이를 리턴시키는 메쏘드 "ContextNode[] HitTestSubNodes(AnalysisRegion region)"를 포함할 수 있다. 그러나, 이러한 요소의 모든 후손이 관련되는 것이 아니라 직접적인 자식 노드들만이 리턴된다. AnalysisRegion 객체에 의하여 하나 이상의 직사각형의 컬렉션일 수 있는 영역이 정의된다. 특정 실시예에서, 컨텍스트의 노드의 위치의 임의의 부분이 지정된 영역과 교차하는 경우, 그 컨텍스트 노드는 어레이 내로 리 턴될 것이다. 이 메쏘드는 예를 들어 문서 독립적인 분석 컨텍스트 객체를 생성하고, 분석 결과를 문서의 현재 상태에 대응하는 분석 컨텍스트 객체에 조화시키기 위하여 채용된다. 따라서, 이 메쏘드는 빈번하게 호출되며, InkAnalyzer 객체에 의한 고속의 반복적인 액세스에 대하여 최적화되어야 한다.
또한, Context Node 클래스는 "MoveStroke(Stroke stroke, ContextNode destination)"로 명명된 메쏘드를 포함할 수 있다. 이 메쏘드는 스트로크의 연관을 하나의 리프 컨텍스트 노드로부터 다른 리프 컨텍스트 노드로 이동시킨다. 특정 실시예에서, 이 메쏘드는 리프 컨텍스트 노드들 간에서만 사용된다. 또한, Context Node 클래스는, 관련 컨텍스트 노드를 그 형제 컨텍스트 노드와 관련하여 재순서화하는 "MoveSubNodeToPosition(int OldIndex, int NewIndex)"로 명명된 메쏘드를 포함할 수 있다. 예를 들어, 문서가 한 행에 3개의 단어, 예를 들어 단어 1, 단어 2, 단어 3을 갖는 경우, 이 단어들의 순서는 부모 컨텍스트 노드로부터 리턴된 서브노드의 어레이에 의해 암시된다. 이 메쏘드는, 관련 부모 컨텍스트 노드와 관련하여, 단어 1을 위한 컨텍스트 노드를 위치 1에서 위치 3으로 이동시킴으로써, 단어 1이 해당 행의 가장 마지막 단어로 지정되도록, 단어들의 순서가 변경되는 것을 허용한다.
또한, 이 클래스는 현재의 컨텍스트 노드에 새로운 ContextLink 객체를 추가하는 "AddLink(ContextLink link)"로 명명된 메쏘드를 포함할 수 있다. 특정 실시예에서, ContextLink가 관련 컨텍스트 노드에 연관된 ContextLink의 어레이에 성공적으로 추가되도록 하기 위하여, ContextLink 객체는 관련 컨텍스트 노드에 대한 참조를 포함해야 한다. 또한, 이 클래스는 "DeleteLink(ContextLink link)"로 명명된 메쏘드를 포함할 수 있다. 이 메쏘드는 지정된 ContextLink 객체를 관련 컨텍스트 노드에 대한 ContextLink의 어레이로부터 삭제 또는 제거한다. 일 실시예에서, ContextLink가 관련 컨텍스트 노드에 연관된 ContextLink의 어레이 내에 존재하지 않더라도, 이 메쏘드 호출은 항상 성공적으로 완료된다.
Ink Analysis API는 Analysis Hint 클래스도 포함할 수 있다. 전술한 다수의 클래스와 마찬가지로, Analysis Hint 클래스는 Analysis Hint 객체를 공백 상태로 초기화하는 "AnalysisHint()"로 명명된 컨스트럭터를 포함할 수 있다. 또한, Analysis Hint 클래스는 "AnalysisRegion Location {get;}"으로 명명된 속성을 비롯하여 다수의 속성을 더 포함할 수 있다. 이러한 속성은 AnalysisHint가 적용될 수 있는 문서 내의 위치를 (AnalysisRegion으로서) 지정한다. 예를 들어, 문서가 페이지의 상단에 타이틀 섹션을 갖는 자유 형식 노트인 경우, 애플리케이션은 타이틀 영역에 대한 AnalysisHint를 설정하여, 그 영역 내에 수평 행의 잉크가 기대됨을 지정할 수 있다. 이러한 AnalysisHint는 분석 프로세스의 정확성을 증가시키는 것을 도울 것이다.
Analysis Hint 클래스는, Analysis Hint가 적용될 수 있는 문서 내의 위치에 대하여 사용될 특정 "팩토이드"를 지정하는 "String Factoid {get; set;}으로 명명된 속성을 포함할 수 있다. 팩토이드는 기대되는 잉크 데이터의 사용(예를 들어, 일반 텍스트, 숫자, 우편번호, 파일명, 및 웹 URL로서의 사용)에 관한 힌트를 인식 프로세스에 제공한다. Analysis Hint 클래스는 "RecognizerGuide Guide {get; set;}" 및 "OverrideLanguageId {get; set;}"로 명명된 속성을 더 포함할 수 있다. RecognizerGuide Guide {get; set;} 속성은 AnalysisHint가 적용될 수 있는 문서 내의 위치에 적용될 라이팅 가이드(writing guide)를 지정한다. 라이팅 가이드는 예를 들어 사용자가 행 또는 문자를 어디에 기입할지를 사용자에게 지정해주고 인식기 분석 프로세스에 알려줌으로써, 인식기 분석 프로세스의 정확성을 향상시키는 것을 도울 수 있다. OverrideLanguageId {get; set;} 속성은 AnalysisHint가 적용될 수 있는 문서에 대한 Language Hint를 명시한다. Language Hint를 설정하면, InkAnalyzer 객체는 컨텍스트 노드 상에서 지정된 언어 대신에, 명시된 언어를 사용하게 된다.
Analysis Hint 클래스는 인식될 한 행의 잉크에 앞서 기입 또는 타이핑되는 텍스트를 지정하는 "PrefixText {get; set;}"으로 명명된 속성을 더 포함할 수 있다. 또한, Analysis Hint 클래스는 AnalysisHint가 적용될 수 있는 문서 내의 위치에서 인식 프로세스가 참조해야 하는 모드의 특정 타입을 지정하는 "RecognitionModes RecognitionFlags {get; set;}"으로 명명된 속성을 포함할 수 있다. 또한, Analysis Hint 클래스는 인식될 한 행의 잉크 다음에 기입 또는 타이핑되는 텍스트를 지정하는 "SuffixText {get; set;}"으로 명명된 속성과, 인식 분석 프로세스에 의하여 사용되어야 하는 특정 단어의 집합을 지정하는 "WordList WordList {get; set;}"으로 명명된 속성을 포함할 수 있다. 의학 양식 내에 기입될 것으로 기대되는 의학 용어의 리스트와 같이, 단어 리스트는, 사용자가 입력 데이터를 실제로 기입하기 전에 기대되는 인식 결과를 알고 있는 때에 사용될 수 있 다.
또한, Analysis Hint 클래스는 "WordMode {get; set;}"으로 명명된 속성을 포함할 수 있다. 이 값이 "참"인 경우, 분석 프로세스는 전체 분석 영역에 대하여 하나의 단어를 리턴시키기 위하여 자체적으로 바이어스될 것이다. Analysis Hint 클래스는, "참"인 경우에 분석 프로세스가 자신의 결과를 관련 힌트 내에 설정된 임의의 팩토이드 또는 단어리스트 값으로 한정하게 하는 "Coerce {get; set;}"으로 명명된 속성을 포함할 수 있다. Analysis Hint 클래스는 "AllowPartialDictionaryTerms {get; set;}"으로 명명된 속성을 더 포함할 수 있다. 이 속성 값이 "참"인 경우, 인식 분석 프로세스는 자신의 인식 사전으로부터 부분적인 단어들을 리턴시키는 것이 허용된다.
특정 실시예에서, Ink Analysis API는 Analysis Region 클래스를 더 포함할 수 있다. Analysis Region 클래스는 예를 들어 AnalysisRegion 객체를 구성하기 위한 다수의 컨스트럭터를 포함할 수 있다. 예를 들어, Analysis Region 클래스는 임의의 영역을 갖는 AnalysisRegion 객체를 구성하기 위한 제1 컨스트럭터, 2차원 직사각형에 대한 파라미터에 기초하여 AnalysisRegion 객체를 구성하기 위한 제2 컨스트럭터, 및 4개의 공간 좌표에 기초하여 AnalysisRegion 객체를 구성하기 위한 제3 컨스트럭터를 포함할 수 있다. 디폴트 컨스트럭터는 예를 들어 공백 영역을 생성할 수 있다. Analysis Region 클래스는 다수의 속성도 포함할 수 있다. 예를 들어, Analysis Region 클래스는 AnalysisRegion에 대한 경계 직사각형을 검색하는 "Rectangle Bounds {get;}"으로 명명된 속성, 관련 AnalysisRegion 객체가 공백의 내부를 갖는지의 여부를 나타내는 "IsEmpty {get;}"으로 명명된 속성, 및 관련 AnalysisRegion이 무한으로 설정되었는지의 여부를 나타내는 "IsInfinite {get;}"으로 명명된 속성을 포함할 수 있다.
Analysis Region 클래스는 관련 AnalysisRegion 객체를 클로닝하는 "AnalysisRegion Clone()"으로 명명된 메쏘드와 같이, 다수의 메쏘드를 포함할 수 있다. Analysis Region 클래스는 지정된 AnalysisRegion 객체(이하, otherRegion으로 함)가 관련 AnalysisRegion 객체와 동일한지의 여부를 검사하는 "Equals(AnalysisRegion otherRegion)"으로 명명된 메쏘드를 포함할 수 있다. 이 메쏘드는 지정된 Analysis Region 객체의 내부가 관련 Analysis Region 객체의 내부와 동일한 경우에는 "참" 값을 리턴시키고, 그렇지 않은 경우에는 "거짓" 값을 리턴시킨다.
이 클래스는 관련 AnalysisRegion 객체를 지정된 분석 영역으로 크롭시키는 메쏘드 "Intersect(AnalysisRegion regionToIntersect)"를 더 포함할 수 있다. 따라서, 결과적인 AnalysisRegion 객체는 지정된 분석 영역과 중첩 또는 교차되는 영역만을 포함할 것이다. 이 클래스는 관련 AnalysisRegion 객체를 지정된 직사각형에 크롭시키는 "Intersect(Rectangle rectangle)"로 명명된 메쏘드를 포함할 수 있다. 마찬가지로, 결과적인 AnalysisRegion 객체는 지정된 직사각형과 중첩 또는 교차되는 영역만을 포함할 것이다. 또한, 이 클래스는 관련 AnalysisRegion 객체를 공백 내부로 초기화하는 "MakeEmpty()"로 명명된 메쏘드, 및 관련 AnalysisRegion에 의해 점유되는 영역을 무한으로 설정하는 "MakeInfinite()"로 명 명된 메쏘드를 포함할 수 있다. 이 클래스는 AnalysisRegion 객체를 관련 AnalysisRegion 객체에 결합 또는 추가할 것을 지정하는 "Union(AnalysisRegion regionToUnion)"으로 명명된 메쏘드, 및 지정된 직사각형을 관련 Analysis Region 객체에 결합시키는 "Union(Rectangle rectangle)"로 명명된 메쏘드와 같이, 개별적으로 정의된 영역들을 결합 또는 분리하기 위한 다양한 메쏘드를 더 포함할 수 있다. 이러한 메쏘드에서, 직사각형은 관련 AnalysisRegion 객체를 위한 좌표 공간과 관련하여 지정될 수 있다. 물론, 이 클래스는 영역에 관한 원하는 임의의 정의에 기초하여, 영역들을 결합시키거나 하나의 영역을 다른 영역들로부터 추출하는 다수의 다른 메쏘드를 포함할 수 있다.
또한, Ink Analysis API는 Recognition Result 클래스를 가질 수 있다. 전술한 다수의 클래스와 마찬가지로, Recognition Result 클래스는 하나 이상의 컨스트럭터를 포함할 수 있다. 예를 들어, 이 클래스는 주어진 인식 격자로부터 RecognitionResults 객체를 구성하는 "RecognitionResult(Stream lattice)"로 명명된 컨스트럭터를 포함할 수 있다. 특정 실시예에서, 인식 격자는 인식 프로세스 결과의 직렬화된 형태이다. 이 메쏘드는 예를 들어 인식 격자를 관련 RecognitionResult 객체의 구성에 사용되는 바이트 어레이로서 지정할 수 있다. 또한, 이 메쏘드는 주어진 컨텍스트 노드로부터 RecognitionResults 객체를 구성하는 "RecognitionResult(ContextNode node)"로 명명된 컨스트럭터를 포함할 수 있다. 또한, 이 메쏘드는 지정된 텍스트 값으로부터 RecognitionResults 객체를 구성하는 "RecognitionResult(string Text, int StrokeCount)"로 명명된 컨스트럭터 를 포함할 수 있으며, 이 RecognitionResult는 지정된 스트로크 수와 연관되고, 인식 프로세스가 실제 핸드라이팅된 잉크 데이터에 대응하는 대안적인 인식값과 맞지 않았던 경우에 정정을 위하여 사용될 수 있다. 또한, 이 클래스는 2개의 기존 Recognition Results 객체를 병합함으로써 하나의 RecognitionResults 객체를 구성하는 "RecognitionResult(RecognitionResult leftRecognitionResult, RecognitionResult rightRecognitionResult)"로 명명된 컨스트럭터를 포함할 수 있다.
Recognition Result 클래스는 단일 잉크 객체 내에 포함된 스트로크의 컬렉션을 나타내는 스트로크 인덱스의 어레이를 제공하는 "StrokeCollection StrokeCollection {get;}"으로 명명된 속성, 및 인식 결과의 최상의 대안을 제공하는 "RecognitionAlternate TopAlternate {get;}"으로 명명된 속성과 같이, 하나 이상의 속성을 포함할 수 있다. 또한, 이 클래스는 인식 분석 프로세스로부터 현재의 결과에 대한 최상의 대안적인 선택안의 신뢰 레벨(예를 들어, 강함, 중간, 약함)을 제공하는 "RecognitionConfidence RecognitionConfidence {get;}"으로 명명된 속성, 및 인식 분석 프로세스로부터 분석 결과의 최상의 결과 스트링을 리턴시키는 "string TopString {get;}"으로 명명된 속성을 더 포함할 수 있다.
또한, Recognition Results 클래스는, 인식 분석 프로세스로부터의 분석 결과의 최상의 결과 스트링 내에서의 선택안으로부터의 대안의 컬렉션 (각각의 대안은 단 하나의 잉크 세그먼트에 대응함)을 지정하는 "public RecognitionAlternateCollection GetAlternateCollectionFromSelection (selectionStart, selectionLength, maximumAlternates)"로 명명된 메쏘드와 같이, 다수의 메쏘드를 포함할 수 있다. 이러한 메쏘드에 대한 입력 파라미터는, 그로부터 대안의 컬렉션이 리턴되게 될 텍스트 선택안의 시작을 지정하는 값, 그로부터 대안의 컬렉션이 리턴되게 될 텍스트 선택안의 길이를 지정하는 값, 및 리턴될 컬렉션의 최대 개수를 지정하는 값을 포함할 수 있다. 그리고, 이 메쏘드는 인식 결과의 최상의 결과 스트링 내의 선택안으로부터 대안의 RecognitionAlternateCollection 컬렉션을 리턴시킬 수 있다.
또한, Recognition Results 클래스는 "RecognitionResult Merge(RecognitionResult left, string separator, RecognitionResult right)"로 명명된 메쏘드를 더 포함할 수 있다. 이 메쏘드는 단일 스트링으로부터 균일한 격자로 되는 새로운 RecognitionResult 객체를 생성하고, 단일 스트링을 기존 RecognitionResult 객체의 시작 또는 끝에 첨부하거나, 또는 2개의 기존 RecognitionResult 객체들 간에 단일 스트링을 연결시키는 데에 사용될 수 있다. 또한, 이 클래스는 알려진 대안을 이용하여 수정될 인식 결과를 지정하는 "ModifyTopAlternate(RecognitionAlternate alternate)"로 명명된 메쏘드를 포함할 수 있다. 일부 실시예에서, 디폴트에 의하여, 인식 분석 프로세스의 결과의 최상의 결과 스트링은 최상위 대안에 대응한다. 그러나, 이 메쏘드는 최상위 대안 이외의 대안들이 인식 분석 프로세스의 결과 내에 사용됨을 지정하는 데에 사용될 수 있다. 새로운 최상위 대안이 이전의 분절과 다른 분절로 되는 경우, ModifyTopAlternate 메쏘드는 컨텍스트 노드를 자동으로 업데이트하여 변경을 반영 할 것이다. 인식 결과를 수정하는 데에 사용될 수 있는 대안을 검색하기 위하여, 이 메쏘드는 GetAlternatesFromSelection 메쏘드를 호출한다. 또한, 이 클래스는 관련 RecognitionResults 객체를 인식 격자의 형식으로 영구적으로 유지하는 "Stream Save()"로 명명된 메쏘드를 포함할 수 있다. 인식 격자는 인식 프로세스로부터의 결과를 표현하는 데에 사용되는 직렬화된 포맷이다.
또한, Ink Analysis API는 Analysis Options 열거 타입을 가질 수 있다. 이 타입은 분석 프로세스에 대한 모든 이용가능한 옵션을 인에이블시키는 "const AnalysisOptions Default"로 명명된 필드와 같이, 잉크 데이터가 분석 프로세스에 의하여 어떻게 분석될지를 지정하는 하나 이상의 필드를 포함할 수 있다. 이 필드는 예를 들어 텍스트 인식, 테이블의 사용, 리스트의 사용, 주석의 사용, 커넥터 및 컨테이너의 사용, 및 중간 결과의 사용을 인에이블시킬 수 있다. 또한, 이 타입은 주석의 검출을 인에이블 및 디스에이블시키는 "const AnalysisOptions EnableAnnotations"로 명명된 필드, 커넥터 및 컨테이너의 검출을 인에이블 및 디스에이블시키는 "const AnalysisOptions EnableConnectorsAndContainers"로 명명된 필드, 및 상이한 순차적 분석 프로세스들의 사용 간에서 소프트웨어 애플리케이션에 대한 분석 결과의 리턴을 인에이블 및 디스에이블시키는 "const AnalysisOptions EnableIntermediateResults"로 명명된 필드를 포함할 수 있다. 이러한 타입은 리스트의 검출을 인에이블 및 디스에이블시키는 "const AnalysisOptions EnableLists"로 명명된 필드, 및 테이블의 검출을 인에이블 및 디스에이블시키는 "const AnalysisOptions EnableTables"로 명명된 필드를 더 포함할 수 있다. 이러한 열거된 타입은 텍스트 인식 분석 프로세스를 인에이블 및 디스에이블시키는 "const AnalysisOptions EnableTextRecognition"으로 명명된 필드를 더 포함할 수 있다. 그러나, 추가의 분석 프로세스(또는 동일한 분석 프로세스의 상이한 버전)가 이용가능한 경우, 이 타입은 추가의 AnalysisOptions를 포함할 수 있다.
또한, Ink Analysis API는 AnalysisResultsEventArgs 클래스를 포함할 수 있다. 이 클래스는 분석 결과를 포함하는 데이터 구조체를 생성하고 AnalysisResults 이벤트가 발생된 때에 소프트웨어 애플리케이션에 리턴되는 "public AnalysisResultsEventArgs()"로 명명된 컨스트럭터를 포함할 수 있다. 이 클래스는 분석 프로세스를 수행했던 InkAnalyzer 객체를 식별하는 "InkAnalyzer InkAnalyzer {get;}"으로 명명된 속성을 포함할 수 있다.
API는 기하학적 선을 나타내는 "Line" 객체의 사용을 인식하는 소정 타입의 오퍼레이팅 시스템에서 유용할 수 있는 Line 클래스를 가질 수 있다. 이 클래스는 Line 객체를 생성하는 "public Line(Point beginPoint, Point endPoint)"로 명명된 컨스트럭터와 같은 컨스트럭터를 포함할 수 있다. 이 클래스는 또한 행 객체의 시작점을 나타내는 "public Point BeginPoint {get; set;}으로 명명된 속성, 및 행 객체의 끝점을 나타내는 "public Point EndPoint {get; set;}"으로 명명된 속성과 같이, 다양한 속성을 포함할 수 있다.
이러한 클래스들 이외에, Ink Analysis API는 Recognition Alternate 클래스를 포함할 수 있다. 이 클래스는 인식기의 사전과 비교되는 잉크의 세그먼트들에 대한 가능한 단어 매치를 나타내는 요소들을 포함할 수 있다. 예를 들어, 이 클래스는 단일 행(행은 2개의 점으로서 표현됨) 상에 존재하는 RecognitionAlternate 객체의 상승 선을 제공하는 "Line Ascender {get;}"으로 명명된 속성, 단일 선 상에 존재하는 RecognitionAlternate 객체의 Baseline을 제공하는 "public Line Baseline {get;}"으로 명명된 속성, 및 단일 선 상에 존재하는 RecognitionAlternate 객체의 하강선을 제공하는 "LineDescender {get;}"으로 명명된 속성을 포함할 수 있다. 또한, 이 클래스는 현재의 RecognitionAlternate 객체에 대한 RecognitionResults 객체를 제공하는 RecognitionResult Extract {get;}"으로 명명된 속성을 더 포함할 수 있다. 이 속성은 예를 들어 한 단어를 포함하는 한 행에 대하여, RecognitionResult 객체로부터 그 단어에 대한 RecognitionResult 객체를 추출하는 데에 사용될 수 있다.
또한, 이것은 단일 선 상에 존재하는 RecognitionAlternate 객체에 대한 중간선을 제공하는 "Line Midline {get;}"으로 명명된 속성, 잉크 객체 내에 포함된 스트로크의 컬렉션을 제공하는 "StrokeCollection Strokes {get;}"으로 명명된 속성 (즉, 이것은 RecognitionResult에 연관된 스트로크를 나타내는 StrokeCollection을 제공함), 및 RecognitionResult와 연관된 스트로크를 나타내는 하나 이상의 잉크 객체 내에 포함되는 스트로크의 컬렉션을 제공하는 "StrokeCollection[] StrokesArray {get;}"으로 명명된 속성을 포함할 수 있다. 이 클래스는 RecognitionAlternate 객체 또는 제스처의 인식시에 인식 분석 프로세스에 의해 결정된 신뢰 레벨(예를 들어, 강함, 중간, 약함)을 제공하는 "RecognitionConfidence RecognitionConfidence {get;}"으로 명명된 속성을 포함할 수 있다. 비-행 노드에 대하여, 관련 컨텍스트 노드의 자식의 최저 RecognitionConfidence가 리턴될 것이다. 또한, 이것은 대안의 결과 스트링을 지정하는 "string RecognizedString {get;}"으로 명명된 속성을 포함할 수 있다. 따라서, 단어 컨텍스트 노드보다 위에 있는 임의의 컨텍스트 노드에 대하여, 결과 스트링은 이 메쏘드에 의하여 결합될 것이다. 예를 들어, 행 노드는 자신의 모든 자식 또는 단어 노드의 결과를 포함하는 결과 스트링을 포함할 것이다. 그리고, 단락 노드는 자신의 모든 자식 또는 행 노드의 결과를 포함하는 결과 스트링을 포함할 것이다.
Recognition Alternate 클래스는, 예를 들어 알려진 텍스트 범위에 대응하는 각각의 잉크 객체로부터 StrokeCollection을 지정하는 "StrokeCollection[] GetStrokesArrayFromTextRange(int selectionstart, int selectionlength)"로 명명된 메쏘드를 비롯하여, 하나 이상의 메쏘드를 포함할 수 있다. 또한, 이 클래스는 스트로크의 알려진 입력 컬렉션을 포함하는 최소 스트로크 컬렉션을 지정하고 인식기가 그에 대한 대안을 제공할 수 있는 "StrokeCollection[] GetStrokesFromStrokesArrayRange(StrokeCollection[] strokesArray)"로 명명된 메쏘드를 포함할 수 있다. 더 상세하게는, 스트로크는 컬렉션을 위한 스트로크 인덱스의 어레이를 각각 포함하는 잉크 객체의 어레이에 의해 리턴된다. 이 메쏘드에 의해 리턴되는 잉크 스트로크의 컬렉션은 입력 컬렉션과 일치할 수 있고, 또는 입력 컬렉션이 입력 스트로크의 전부를 포함하는 최소 인식 결과의 단지 일부와 일치 하는 경우에는, 잉크 스트로크의 컬렉션이 더 클 수 있다. 또한, 이 클래스는 스트로크의 알려진 입력 컬렉션을 포함하는 최소 스트로크 컬렉션을 지정하고 인식기가 그에 대한 대안을 제공할 수 있는 "StrokeCollection GetStrokesFromStrokesRanges(StrokeCollection strokes)"로 명명된 메쏘드, 및 알려진 텍스트 범위에 대응하는 StrokeCollection을 지정하는 "StrokeCollection GetStrokesFromTextRange(int selectionstart, int selectionlength)"로 명명된 메쏘드를 더 포함할 수 있다.
이 클래스는, 알려진 스트로크의 집합을 포함하는 대안을 인식기에 의하여 리턴받을 수 있는 인식된 텍스트의 최소 범위를 지정하는 "void GetTextRangeFromStrokes(ref int selectionstart, ref int selectionend, StrokeCollection strokes)"로 명명된 메쏘드, 및 알려진 스트로크 집합을 포함하는 대안을 인식기에 의하여 리턴받을 수 있는 인식된 텍스트의 최소 범위를 지정하는 "void GetTextRangeFromStrokesArray(ref int selectionstart, ref int selectionend, StrokeCollection[] strokesarray)"로 명명된 메쏘드를 포함할 수 있다. 또한, 이 클래스는 "RecognitionAlternateCollection SplitWithConstantPropertyValue(GUID propertyType)"으로 명명된 메쏘드를 더 포함할 수 있으며, 이 메쏘드는 자신이 호출되는 대안의 분할인 대안의 컬렉션을 리턴시킨다. 컬렉션 내의 각각의 대안은 메쏘드로 전달된 속성에 대하여 동일한 속성값을 갖는 인접 인식 세그먼트를 포함한다. 예를 들어, 이 메쏘드는 인식 결과 내의 신뢰 레벨 경계, 행 경계, 또는 세그먼트 경계에 의한 원본 대안을 분할하는 대안을 얻는 데에 사용될 수 있다. 또한, 대안에서의 인식기의 신뢰도와 같이, 대안의 알려진 속성값을 지정하는 "byte[] GetPropertyValue(GUID propertyType)"으로 명명된 메쏘드를 포함할 수 있다. 그러나, 모든 인식 분석 프로세스가 모든 속성 타입에 대한 값을 제공하지는 않을 것이다. 따라서, 이 메쏘드는 관련 인식 분석 프로세스에 의하여 지원되는 타입들에 대한 데이터를 제공한다.
Ink Analysis API는 Recognition Alternate Collection 클래스를 더 포함할 수 있다. 전술한 다수의 클래스와 마찬가지로, 이 클래스는 RecognitionAlternateCollection 객체를 생성하기 위한 "RecognitionAlternateCollection()"으로 명명된 컨스트럭터를 포함할 수 있다. 이 클래스는 대안 인식값의 컬렉션 내에 포함되는 객체 또는 컬렉션의 수를 제공하는 "Count {get;}"으로 명명된 속성, 대안 인식값의 컬렉션에 대한 액세스가 소프트웨어 애플리케이션과 동기화되는지(즉, "thread safe")의 여부를 나타내는 값을 제공하는 "IsSynchronized {get;}"으로 명명된 속성, 및 대안 인식값의 컬렉션에 대한 액세스를 동기화하는 데에 사용될 수 있는 객체를 제공하는 "SyncRoot {get;}"으로 명명된 속성과 같은 다수의 속성을 포함할 수 있다.
이 클래스는, 지정된 데스티네이션 어레이 인덱스에서 시작하여, 대안 인식값의 현재 컬렉션의 모든 요소를 지정된 1차원 어레이에 복사하는 "virtual void CopyTo(Array array, int index)"로 명명된 메쏘드, 및 대안 인식 값의 컬렉션 내에서 각각의 RecognitionAlternate를 통하여 열거하기 위하여 호출자가 각각의 컨스트럭터를 사용할 수 있게 하는 IEnumerable의 표준 구현인 "IEnumerator IEnumerable.GetEnumerator()"로 명명된 메쏘드를 포함할 수 있다. 또한, 이 클래스는 인식 대안 값의 컬렉션 내에 모든 객체를 포함하는 RecognitionAlternateCollectionEnumerator를 리턴시키는 "RecognitionAlternateCollectionEnumerator GetEnumerator()"로 명명된 메쏘드를 더 포함할 수 있다. 이 메쏘드는 예를 들어 인식 대안 값의 컬렉션 내의 각각의 객체를 검색하는 데에 사용될 수 있다.
Ink Analysis API는 Recognition Confidence 열거 및 Recognition Mode 열거를 더 포함할 수 있으며, 이들은 각각 인식 분석 프로세스에 관한 하나 이상의 필드를 포함할 수 있다. 예를 들어, Recognition Confidence 클래스는, 인식 분석 프로세스가 제공된 대안 인식 값의 리스트 내에 올바른 결과가 있는 것으로 확신함을 나타내는 "Intermediate"로 명명된 필드, 인식 분석 프로세스가 제공된 대안 인식 값의 리스트 내에 결과가 있는 것으로 확신하지 않음을 나타내는 "Poor"로 명명된 필드, 및 인식 분석 프로세스가 대안 인식 값 내의 최상의 대안이 올바른 것으로 확신함을 나타내는 "Strong"으로 명명된 필드와 같은 다수의 필드를 포함할 수 있다.
마찬가지로, Recognition Mode 클래스는, 인식 분석 프로세스가 전자 잉크 데이터를 어떻게 해석하여 인식 결과 스트링을 결정할지를 지정하는 필드를 포함할 수 있다. 예를 들어, 이 클래스는, 인식 분석 프로세스가 컨텍스트에 대하여 지정된 팩토이드에 기초한 인식 결과를 강제할 것을 지정하는 "Coerce"로 명명된 필드, 및 인식 분석 프로세스가 전자 잉크 데이터를 단일 행으로 취급할 것을 지정하는 "Line"으로 명명된 필드를 포함할 수 있다. 또한, 이 클래스는 인식 분석 프로세스가 인식 모드를 적용하지 않을 것을 지정하는 "None"으로 명명된 필드, 및 인식 분석 프로세스가 전자 잉크 데이터를 단일 단어 또는 문자를 형성하는 것으로서 취급할 것을 지정하는 "Segment"로 명명된 필드를 포함할 수 있다. 또한, 이 클래스는 다수의 분절을 디스에이블시키는 "TopInkBreaksOnly"로 명명된 필드를 더 포함할 수 있다.
또한, Ink Analysis API는 2개의 컨텍스트 모드가 어떻게 링크될 수 있는지를 정의하는 Context Link 클래스를 포함할 수 있다. ContextLink 객체는 어떤 2개의 컨텍스트 노드가 링크되는지, 링크의 방향 및 링크의 타입을 단독으로 나타낸다. 이 클래스는 다른 컨텍스트 노드로부터 링크되어 있는 소스 컨텍스트 노드를 지정하는 "ContextNodeSourceNode {get;}"으로 명명된 속성, 소스 컨텍스트 노드와 데스티네이션 컨텍스트 노드 간에 존재하는 링크 관계의 타입을 지정하는 "ContextLinkType LinkType{get;}"으로 명명된 속성, 및 커스텀 링크가 사용되고 있음을 지정하는 "CustomLinkType{get;}"으로 명명된 속성을 포함할 수 있다. 이러한 상황은, 애플리케이션이 Ink Analyzer API의 링크 시스템을 사용하여 API가 인식할 수 있는 것 이상의 애플리케이션 지정 링크를 나타낼 것을 결정하는 경우에 발생할 것이다.
또한, Context Link 클래스는, 다른 컨텍스트 노드로부터 링크되어 있는 데스티네이션 컨텍스트 노드를 특정하는 "ContextNode DestinationNode {get;}"으로 명명된 속성을 포함할 수 있다. Context Link 클래스에 이용가능한 2개의 컨스트 럭터가 존재할 수 있으며, 이들은 존재하는 소스 컨텍스트 노드와 데스티네이션 컨텍스트 노드 간의 관계를 생성한다.
Context Link 클래스는, 2개의 컨텍스트 노드에 의해 공유되는 관계의 타입을 정의하는 "ContextLinkType enum"으로 명명된 열거를 포함할 수 있다. 이러한 다양한 링크 타입은 예를 들어 하나의 노드가 다른 노드에 고정됨을 기술하는 "AnchorsTo" 타입을 포함할 수 있다. 이들 2개의 노드는 파싱 상황에 따라 SourceNode 또는 DestinationNode 속성을 사용할 수 있다. 또한, 링크 타입은 하나의 노드가 다른 노드를 포함함을 기술하는 타입 "Contains"를 더 포함할 수 있다. 이러한 관계에서, 컨테이너 노드는 SourceNode로서 참조될 수 있는 한편, 컨테이니 노드(containee node)는 DestinationNode로서 참조될 수 있다. 링크 타입은 하나의 노드가 다른 노드를 포인팅하고 있음을 기술하는 "PointsTo" 타입을 더 포함할 수 있다. 이러한 관계에 대하여, 포인팅을 행하고 있는 노드는 SourceNode로서 참조될 수 있는 한편, 포인팅되고 있는 노드는 DestinationNode로서 참조될 수 있다. 또한, 링크 타입은 하나의 노드가 다른 노드로부터 포인팅하고 있음을 기술하는 "PointsFrom" 타입을 가질 수 있다. 이러한 관계에서, 다른 노드로부터 포인팅하고 있는 노드는 SourceNode로서 참조될 수 있는 한편, 포인팅하고 있는 노드는 DestinationNode로서 참조될 수 있다.
링크 타입은 하나의 노드가 다른 노드의 수평 방향 길이에 걸쳐 있음을 기술하는 "SpansHorizontally" 타입, 및 하나의 노드가 다른 노드의 수직 방향 길이에 걸쳐 있음을 기술하는 "SpansVertically" 타입을 더 포함할 수 있다. 이러한 타입 들에 대하여, 다른 노드를 커버(외줄 삭제, 밑줄, 마진 바)하고 있는 노드(통상적으로 마지막에 기입됨)는 SourceNode로서 참조될 수 있는 한편, 다른 노드에 의해 커버되는 노드는 DestinationNode로서 참조될 수 있다. 또한, 링크 타입은 커스텀 링크 타입이 사용되어 왔음을 기술하는 "Custom" 타입을 더 포함할 수 있다. 이러한 값이 사용되는 경우, ContextLink 객체 상의 "CustomLinkType" 속성은 이러한 링크의 목적에 관한 세부 사항을 제공할 수 있다.
애플리케이션 모델
윈도우즈 클라이언트는 웹의 특성과 전형적인 데스크탑 애플리케이션의 특성을 통합한다. 애플리케이션 모델은 보안 애플리케이션에 대한 프레임워크를 제공하고, 클라이언트 애플리케이션의 개발, 전개 및 유지보수를 단순화한다. 이러한 프레임워크는 단순하고 일관적인 사용자 경험을 제공한다. 예를 들어, 로컬 애플리케이션은 로컬 클라이언트 상에서 실행되는 이점을 유지하면서도, 애플리케이션이 브라우저 내에서 호스트되는지 또는 독립형 애플리케이션인지의 여부에 관계없이, 친숙한 브라우저형 특성을 이용할 수 있게 한다. 이러한 프레임워크는 사용자가 자신에게 친숙한 웹을 이용할 수 있게 함으로써, 사용자의 편의 수준을 향상시키는 한편, 새로운 애플리케이션을 학습하는 데에 요구되는 시간을 감소시킨다. 애플리케이션 모델은 Systems.Windows 네임스페이스의 일부이다.
애플리케이션 모델을 사용하는 애플리케이션은 웹 페이지와 유사한 방식으로 동작한다. 사용자가 애플리케이션을 브라우징할 때에, 애플리케이션은 설치에 대한 사용자의 확인, 클라이언트 시스템의 재부팅, 또는 다른 애플리케이션의 오동작 에 대한 위험없이 자동적으로 설치된다. 일 실시예에서, 애플리케이션은 프로그레시브 방식으로 다운로드되어, 애플리케이션이 완전히 다운로드되기 전에, 상호동작의 초기 레벨을 제공한다. 애플리케이션 업데이트는 자동적으로, 그리고 사용자에게 투명한 방식으로 핸들링된다. 따라서, 사용자는 명시적으로 애플리케이션 업그레이드를 수행할 필요없이, 항상 애플리케이션의 최종 버전에 액세스한다.
애플리케이션 모델을 사용하는 애플리케이션은 클라이언트 시스템이 온라인(즉, 웹에 능동적으로 연결됨)인지 오프라인(즉, 웹에 능동적으로 연결되지 않음)인지에 관계없이 클라이언트 시스템 상에서 로컬 방식으로 실행된다. 이로 인해, 애플리케이션은, 능동 웹 접속을 필요로 하며 웹을 통하여 계속적으로 서버와 데이터를 교환하는 서버 기반 애플리케이션보다 더 양호한 성능을 제공할 수 있게 된다. 애플리케이션이 클라이언트 시스템 상에 설치되고 난 후, 그 애플리케이션은 (일반적인 데스크탑 애플리케이션과 마찬가지로) "시작" 메뉴로부터 액세스될 수도 있고, (웹 애플리케이션과 마찬가지로) 애플리케이션을 네비게이션함으로써 액세스될 수도 있다. 애플리케이션 모델은, 3개의 주요 부분, 즉 애플리케이션 수명 관리, 애플리케이션 프레임워크 및 네비게이션 프레임워크를 포함한다.
2개의 상이한 애플리케이션 타입, 즉 "온라인 애플리케이션"과 "관리되는 애플리케이션"이 애플리케이션 모델에 의하여 지원된다. 애플리케이션 모델을 이용하는 애플리케이션은 브라우저 내에서 실행될 수도 있고 독립형 최상위 레벨 윈도우 내에서 실행될 수도 있다. "온라인 애플리케이션"은 서버로부터 실행되고 브라우저 내에서 호스트되는 애플리케이션이다. 애플리케이션은 오프라인 액세스에 대 하여 캐시될 수도 있고, 적절하게 실행되기 위하여 소정의 온라인 자원을 필요로 할 수도 있다. "관리되는 애플리케이션"은 오프라인으로 이용가능하며 클라이언트 상에 설치된다. 오퍼레이팅 시스템은 관리되는 애플리케이션을 서비스한다. 관리되는 애플리케이션에 대한 엔트리는 클라이언트 상의 "시작" 메뉴에 추가될 수 있다. 애플리케이션은 프로그레시브 방식으로 다운로드되어, 설치 프로세스가 종료될 때까지 인터랙션을 지연시키지 않고, 다운로드 중에도 사용자가 애플리케이션과의 인터랙션을 시작할 수 있게 한다.
애플리케이션은 자신의 실행에 필요한 추가의 라이브러리 및 자원과 같이, 애플리케이션의 종속성을 기술하는 연관 애플리케이션 목록을 갖는다. 설치자는 애플리케이션 목록을 사용하여 애플리케이션의 다운로드 및 설치를 제어한다. "트러스트 매니저(trust manager)"는 설치 프로세스의 일부로서 호출된다. 트러스트 매니저는 애플리케이션 목록을 사용하여, 애플리케이션이 실행되기 위하여 어떤 허가가 필요한지를 결정한다. 또한, 애플리케이션 목록은 파일 연관 및 엔트리와 그 엔트리를 위한 아이콘 및 텍스트를 시작 메뉴에 추가할 것인지의 여부와 같은 쉘 정보를 지정한다.
애플리케이션 모델을 이용하는 애플리케이션은 마크업, 코드, 자원 및 목록을 포함한다. 애플리케이션은, 각 애플리케이션 세션의 수명동안 메모리 내에 유지되는 글로벌 객체인 자신의 애플리케이션 객체에 의하여 정의되고 범위가 정해진다. 애플리케이션 객체는 애플리케이션에 속하는 모든 자원에 관한 지식을 가지며, 자기 자신과 다른 애플리케이션 또는 외부 자원 간의 경계를 제공한다. 애플 리케이션 프레임워크는 애플리케이션을 식별 및 참조하고, 애플리케이션과 통신하기 위하여 애플리케이션 객체를 사용한다. 애플리케이션 객체는 애플리케이션 내에서 윈도우 및 자원을 관리하고, 스타트업 및 셧다운 거동을 지정하고, 구성 세팅을 다루고, 애플리케이션의 비주얼 스타일을 지정하고, 네비게이션동안 코드, 상태 및 자원을 공유하며, 애플리케이션 전체의 이벤트를 다루는 데에도 사용된다.
네비게이션 프레임워크는, 애플리케이션이 시스템 브라우저 내에서 호스트되는지 또는 독립형의 최상위 레벨 윈도우에서 호스트되는지의 여부와 관계없이, 사용자에게 친숙한 웹 상에서의 네비게이션 및 저널링(journaling) 동작을 이용하는 네비게이션 기반 애플리케이션을 지원하여, 클라이언트 시스템 상에서 보다 더 친숙하고 일관된 사용자 경험을 제공한다. 저널링은 네비게이션 히스토리를 추적하기 위하여 네비게이션 프레임워크에 의해 사용되는 프로세스이다. 저널에 의하여, 사용자는 자신의 자취를 선형의 네비게이션 시퀀스에서 전방 및 후방으로 재추적할 수 있다. 네비게이션 경험이 브라우저 내에서 호스트되는지 또는 독립형의 네비게이션 윈도우에서 호스트되는지의 여부에 관계없이, 각각의 네비게이션은 저널 내에 유지되며, "앞으로" 및 "뒤로" 버튼을 이용하거나, "go forward" 및 "go backward" 메쏘드를 호출함으로써 선형 시퀀스로 다시 방문될 수 있다.
NavigationApplication 클래스는 네비게이션에 관련된 속성 및 이벤트를 제공함으로써 네비게이션 기반 애플리케이션의 생성 작업을 단순화한다. NavigationApplication 클래스는 애플리케이션이 최초로 런칭될 때 시스템이 네비게이트하게 되는 페이지 또는 요소를 지정하는 스타트업 속성을 포함한다. NavigationApplication 클래스는, 애플리케이션 개발자가 애플리케이션을 세부 분류하지 않고서도 페이지들 간에서 글로벌 상태 정보를 공유할 수 있게 하는 속성 컬렉션을 가지며, 이러한 속성들에 관련된 데이터를 지원한다.
컴퓨팅 시스템 및 환경의 예
도 5는 프로그래밍 프레임워크(132)가 (모두 또는 부분적으로) 구현되기에 적합한 컴퓨팅 환경(400)의 일 예이다. 컴퓨팅 환경(400)은 본 명세서에 개시되는 컴퓨터 및 네트워크 아키텍쳐에 활용될 수 있다.
예시적인 컴퓨팅 환경(400)은 컴퓨팅 환경의 일 예일 뿐이고 컴퓨터 및 네트워크 아키텍쳐의 사용 범위나 기능성 등에 제한을 하고자 하는 것은 아니다. 또한, 컴퓨팅 환경(400)은 예시적인 컴퓨팅 환경(400)에 도시된 임의의 소자 또는 이들의 조합에 대한 임의의 종속성이나 요건을 갖는 것으로 해석되어서는 안된다.
프레임워크(132)는 여러 기타 범용 또는 전용 컴퓨팅 환경이나 구성으로 구현될 수 있다. 사용에 적합하지만 이에 제한 되지는 않는 공지된 컴퓨팅 시스템, 환경 및/또는 구성예는 퍼스널 컴퓨터, 서버 컴퓨터, 멀티프로세서 시스템, 마이크로프로세서-기반 시스템, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상술한 시스템 또는 장치 중 임의의 것을 포함하는 분산형 컴퓨팅 환경 등을 포함한다. 컴팩트 또는 서브셋 버전의 프레임워크 또한 셀룰러 전화, PDA, 핸드헬드 컴퓨터 또는 기타 통신/컴퓨팅 장치 등의 제한된 자원의 클라이언트에 구현될 수 있다.
프레임워크(132)는 프로그램 모듈 등 하나 이상의 컴퓨터 또는 기타 장치에 의해 실행되는 컴퓨터-실행가능 명령어들의 일반적인 컨택스트로서 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 타입을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 스트럭쳐 등을 포함한다. 프레임워크(132)는 또한 통신 네트워크를 통해 링크되는 원격 처리 장치들에 의해 태스크가 수행되는 분산형 컴퓨팅 환경에서 실행될 수 있다. 분산형 컴퓨팅 환경에서, 프로그램 모듈은 메모리 스토리지 장치를 포함하는 로컬 및 원격 컴퓨터 스토리지 매체 모두에 위치될 수 있다.
컴퓨팅 환경(400)은 컴퓨터(402)의 형태인 범용 컴퓨팅 장치를 포함한다. 컴퓨터(402)의 컴포넌트들은, 이에 제한되는 것은 아니지만, 하나 이상의 프로세서 또는 프로세싱 유닛(404), 시스템 메모리(406), 및 프로세서(404)를 포함하는 여러 시스템 컴포넌트를 시스템 메모리(406)에 연결하는 시스템 버스(408)를 포함할 수 있다.
시스템 버스(408)는 메모리 버스나 메모리 컨트롤러, 주변기기 버스, 가속 그래픽 포트, 및 다양한 버스 아키텍쳐들 중 임의의 것을 사용하는 프로세서 버스나 로컬 버스를 포함하는 다수의 가능한 타입의 버스 스트럭쳐들 중 하나 이상을 나타낸다. 예를 들어, 이러한 아키텍쳐는 ISA(Industry Standard Architecture) 버서, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스, 및 메자닌(Mezzanine) 버스로도 알려진 PCI(Peripheral Component Interconnects) 버스를 포함할 수 있다.
컴퓨터(402)는 전형적으로 다양한 컴퓨터 판독가능 매체를 포함한다. 이러한 매체는 컴퓨터(402)에 의해 액세스될 수 있고 휘발성 및 비휘발성 매체, 이동식 및 이동불가식 매체 모두를 포함하는 임의의 가용 매체일 수 있다.
시스템 메모리(406)는 RAM(410) 등의 휘발성 메모리 형태 및/또는 ROM(412) 등의 비휘발성 메모리 형태의 컴퓨터 판독가능 매체를 포함한다. 예를 들어 기동 동안(during start-up) 컴퓨터(402) 내의 요소들간 정보 전송을 돕는 BIOS(414)가 ROM(412)에 저장된다. RAM(410)은 프로세싱 유닛(404)에 의해 즉시 액세스될 수 있는 및/또는 현재 동작되고 있는 데이터 및/또는 프로그램 모듈을 전형적으로 포함한다.
컴퓨터(402)는 또한 기타 이동식/이동불가식, 휘발성/비휘발성 컴퓨터 스토리지 매체를 포함할 수 있다. 예를 들어, 도 5는 이동불가식 비휘발성 자기 매체(도시되지 않음)에 대한 판독 및 기입을 위한 하드 디스크 드라이브(416), 이동식 비휘발성 자기 디스크(420)(예를 들어, "플로피 디스크" 등)에 대한 판독 및 기입을 위한 자기 디스크 드라이브(418), 및 CD-ROM, DVD-ROM 또는 기타 광 매체 등의 이동식 비휘발성 광 디스크(424)에 대한 판독 및/또는 기입을 위한 광 디스크 드라이브(422)를 도시한다. 하드 디스크 드라이브(416), 자기 디스크 드라이브(418), 및 광 디스크 드리아브(422)는 각각 하나 이상의 데이터 매체 인터페이스(426)에 의해 시스템 버스(408)에 접속된다. 대안적으로, 하드 디스크 드라이브(416), 자기 디스크 드라이브(418), 및 광 디스크 드라이브(422)는 하나 이상의 인터페이스(도시되지 않음)에 의해 시스템 버스(408)에 접속될 수 있다.
디스크 드라이브들 및 관련 컴퓨터-판독가능 매체는 컴퓨터(402)에 대한 컴퓨터 판독가능 명령어, 데이터 스트럭쳐, 프로그램 모듈, 및 기타 데이터의 비휘발성 스토리지를 제공한다. 예시적으로 하드 디스크(416), 이동식 자기 디스크(420) 및 이동식 광 디스크(424)를 도시하였지만, 카세트나 기타 자기 스토리지 장치, 플래시 메모리 카드, CD-ROM, DVD 또는 기타 광 스토리지, RAM, ROM, EEPROM 등 컴퓨터에 의해 액세스될 수 있는 데이터를 저장할 수 있는 기타 타입의 컴퓨터 판독가능 매체가 또한 예시적인 컴퓨팅 시스템 및 환경을 구현하는데 활용될 수 있다는 것을 이해할 수 있을 것이다.
하드 디스크(416), 자기 디스크(420), 광 디스크(424), ROM(412) 및/또는 RAM(410)에는 예를 들어 오퍼레이팅 시스템(426), 하나 이상의 애플리케이션 프로그램(428), 기타 프로그램 모듈(430) 및 프로그램 데이터(432)를 포함하는 임의 갯수의 프로그램 모듈이 저장될 수 있다. 오퍼레이팅 시스템(426), 하나 이상의 애플리케이션 프로그램(428), 기타 프로그램 모듈(430) 및 프로그램 데이터(432) 각각(또는 이들의 조합)은 프로그래밍 프레임워크(132)의 요소를 포함할 수 있다.
사용자는 키보드(434) 및 포인팅 장치(436; 예를 들어, "마우스" 등) 등의 입력 장치를 통해 명령 및 정보를 컴퓨터(402)에 입력할 수 있다. 기타 입력 장치(438; 구체적으로 도시되지는 않음)는 마이크, 조이스틱, 게임 패드, 위성 접시, 직렬 포트, 스캐너 등을 포함할 수 있다. 이들 및 기타 입력 장치는 시스템 버스(408)에 연결되는 입력/출력 인터페이스(440)를 통해 프로세싱 유닛(404)에 접속되지만, 병렬 포트, 게임 포트 또는 USB 등의 기타 인터페이스 및 버스 스트럭쳐에 의해 접속될 수 있다.
모니터(442) 또는 기타 타입의 디스플레이가 또한 비디오 어댑터(444) 등의 인터페이스를 통해 시스템 버스(408)에 접속될 수 있다. 모니터(442) 이외에, 기타 출력 주변기기 장치는 입력/출력 인터페이스(440)를 통해 컴퓨터(402)에 접속될 수 있는 스피커(도시되지 않음) 및 프린터(446) 등의 컴포넌트를 포함할 수 있다.
컴퓨터(402)는 원격 컴퓨팅 장치(448) 등의 하나 이상의 원격 컴퓨터로의 논리 접속을 이용하는 네트워크된 환경에서 동작할 수 있다. 예를 들어, 원격 컴퓨팅 장치(448)는 퍼스널 컴퓨터, 휴대형 컴퓨터, 서버, 라우터, 네트워크 컴퓨터, 피어(peer) 장치 또는 기타 공통 네트워크 등 일 수 있다. 원격 컴퓨팅 장치(448)는 컴퓨터(402)에 대하여 본 명세서에 개시되는 요소 및 특징들의 다수 또는 전부를 포함할 수 있는 휴대형 컴퓨터로서 예를 들어 설명된다.
컴퓨터(402)와 원격 컴퓨터(448)간 논리 접속은 LAN(450) 및 범용 WAN(452)으로 묘사된다. 이러한 네트워킹 환경은 사무실, 기업형 컴퓨터 네트워크, 인트라넷 및 인터넷에서 공통적인 것이다.
LAN 네트워킹 환경에서 구현되는 경우, 컴퓨터(402)는 네트워크 인터페이스 또는 어댑터(454)를 통해 로컬 네트워크(450)에 접속된다. WAN 네트워킹 환경에서 구현되는 경우, 컴퓨터(402)는 전형적으로 광역 네트워크(452)를 통한 통신 수립을 위한 모뎀(456) 또는 기타 수단을 포함한다. 컴퓨터(402)에 대해 내장형이거나 외장형일 수 있는 모뎀(456)은 입력/출력 인터페이스(440) 또는 기타 적절한 메카니즘을 통해 시스템 버스(408)에 접속된다. 도시된 네트워크 접속은 예시적인 것으 로 컴퓨터들(402 및 448)간 통신 링크를 수립하기 위한 기타 수단이 채택될 수 있다는 것이 이해될 것이다.
컴퓨팅 환경(400)으로 도시된 바와 같은 네트워크된 환경에서, 컴퓨터(402)에 관련하여 묘사된 프로그램 모듈(402) 또는 그 일부는 원격 메모리 스토리지 장치에 저장될 수 있다. 예를 들어, 원격 애플리케이션 프로그램(458)이 원격 컴퓨터(448)의 메모리 장치에 상주한다. 설명의 목적상, 애플리케이션 프로그램 및 오퍼레이팅 시스템 등 기타 실행가능 프로그램 컴포넌트들이 여기서는 개별 블럭으로 도시되지만, 이러한 프로그램 및 컴포넌트들이 컴퓨팅 장치(402)의 서로 다른 스토리지 컴포넌트에 여러 시각에 존재하고, 컴퓨터의 데이터 프로세서(들)에 의해 실행된다는 것을 알 수 있을 것이다.
프레임워크(132 및/또는 150)의 구현, 특히, 프레임워크(132 및/또는 150)에 포함되는 API 또는 프레임워크(132 및/또는 150)에 포함되는 API에 대해 이루어지는 호출은, 일부 형태의 컴퓨터 판독가능 매체에 저장되거나 이를 통해 전송될 수 있다. 컴퓨터 판독가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있다. 예를 들어, 이에 제한되는 것은 아니지만, 컴퓨터 판독가능 매체는 "컴퓨터 스토리지 매체" 및 "통신 매체"를 포함할 수 있다. "컴퓨터 스토리지 매체"는 컴퓨터 판독가능 명령어, 데이터 스트럭쳐, 프로그램 모듈 또는 기타 데이터 등의 정보 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 이동불가식 매체를 포함한다. 컴퓨터 스토리지 매체는, 이에 제한되는 것은 아니지만, RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD 또는 기타 광 스토리지, 자기 카세트, 자기 테이프, 자기 디스크 스토리지 또는 기타 자기 스토리지 장치, 또는 원하는 정보를 저장하는데 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 기타 매체를 포함한다.
"통신 매체"는 전형적으로 컴퓨터 판독가능 명령어, 데이터 스트럭쳐, 프로그램 모듈, 또는 반송파나 기타 전송 메카니즘 등 변조된 데이터 신호의 기타 데이터를 구현한다. 통신 매체는 또한 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호(modulated data signal)"라는 용어는 하나 이상의 자신의 특징 세트를 갖고 신호의 정보를 인코드하는 방식으로 변경된 신호를 의미한다. 예를 들어, 이에 제한되는 것은 아니지만, 통신 매체는 유선 네트워크 또는 직접-배선된 접속(direct-wired connection) 등의 유선 매체 또는 음향, RF, 적외선 및 기타 무선 매체 등의 무선 매체를 포함한다. 상술한 것 중 임의의 조합이 또한 컴퓨터 판독가능 매체의 범위에 포함될 수 있다.
대안적으로, 프레임워크의 일부는 하드웨어 또는 하드웨어, 소프트웨어 및/또는 펌웨어의 조합으로 구현될 수 있다. 예를 들어, 하나 이상의 ASIC(Application Specific Integrated Circuits) 또는 PLD(Programmable Logic Device)가 하나 이상의 프레임워크의 일부를 구현하기 위해 설계되거나 프로그램될 수 있다.
프로그래밍 인터페이스(또는 보다 간략히는 '인터페이스')는 코드 중 하나 이상의 세그먼트(들)가 코드 중 하나 이상의 다른 세그먼트(들)에 의해 제공되는 기능성과 통신하거나 이를 액세스할 수 있게 하기 위한 임의의 메카니즘, 프로세 스, 프로토콜로서 고려될 수 있다. 대안적으로, 프로그래밍 인터페이스는 시스템의 다른 컴포넌트의 하나 이상의 메카니즘(들), 메소드(들), 기능 호출(들), 모듈(들), 객체(들) 등에 통신 결합될 수 있는 시스템 컴포넌트의 하나 이상의 메카니즘(들), 메소드(들), 기능 호출(들), 모듈(들), 객체(들) 등으로 고려될 수 있다. 앞선 문장에서 "코드의 세그먼트(segment of code)"라는 용어는 코드 중의 하나 이상의 명령어 또는 라인을 포함하도록 의도된 것으로, 채택된 용어; 또는 코드 세그먼트가 별도로 컴파일되는지 여부; 또는 코드 세그먼트가 소스, 중간물(intermediate); 또는 객체 코드 중 어느 것으로서 제공되는지 여부; 또는 코드 세그먼트가 런타임 시스템 또는 프로세스에 활용되는지 여부; 또는 이들이 동일한 머신 또는 서로 다른 머신에 또는 여러 머신에 분산되어 위치되는지 여부; 또는 코드 세그먼트에 의해 표현되는 기능성이 전부 소프트웨어로 구현되는지, 전부 하드웨어로 구현되는지, 또는 하드웨어와 소프트웨어의 조합으로 구현되는지 여부에 무관하게, 코드 모듈, 객체, 서브루틴, 기능 등을 포함한다.
관념적으로, 프로그래밍 인터페이스는 도 6 또는 도 7에 도시된 바와 같이 일반적으로 고려될 수 있다. 도 6은 제1 및 제2 코드 세그먼트가 통신하는 도관(conduit)으로서의 인터페이스(인터페이스1)을 도시한다. 도 7은 인터페이스 객체 I1 및 I2(제1 및 제2 코드 세그먼트의 일부이거나 또는 아닐 수 있음)를 포함하는 인터페이스를 도시하는 것으로, 이는 시스템의 제1 및 제2 코드 세그먼트가 매체 M을 통해 통신할 수 있게 한다. 도 7의 관점에서, 인터페이스 객체 I1 및 I2를 동일한 시스템의 별도의 인터페이스로 고려할 수 있고, 또한 객체 I1 및 ID2와 매체 M이 인터페이스를 구성하는 것으로 고려할 수도 있다. 도 6 및 도 7은 흐름의 각 측에 대하여 쌍방향 흐름 및 인터페이스를 도시하지만, 특정 구현은 한쪽 방향으로의 정보 흐름만을 가질 수 있거나(또는 이하 설명되는 바와 같이 정보 흐름이 없거나) 또는 한 측에 대한 인터페이스 객체만을 가질 수 있다. 예를 들어, 이에 제한되는 것은 아니지만, API(Application Programming Interface 또는 Programming Interface), 엔트리 포인트, 메소드, 기능, 서브루틴, 원격 프로시져 호출, COM(Component Object Model) 인터페이스 등의 용어는 프로그래밍 인터페이스의 정의 내에 포함된다.
이러한 프로그래밍 인터페이스의 양상은 제1 코드 세그먼트가 제2 코드 세그먼트로 정보("정보"는 광범위한 의미로 사용되는 것으로, 데이터, 커맨드, 요청 등을 포함함)를 전송하는 메소드; 제2 코드 세그먼트가 정보를 수신하는 메소드; 정보의 스트럭쳐, 시퀀스, 신텍스, 조직(organization), 스키마, 타이밍 및 콘텐츠를 포함할 수 있다. 이러한 관점에서, 매체가 유선, 무선 또는 이들의 조합인지 여부는 정보가 인터페이스에 의해 정의된 방식으로 전송되는 한, 근원적인 전송 매체 자체는 인터페이스의 동작에 중요하지 않은 것일 수 있다. 특정 상황에서, 정보 전달이 다른 메카니즘(예를 들어, 코드 세그먼트들간 정보 흐름과는 별도의 버퍼, 파일 등에 위치된 정보)을 통하거나 또는 하나의 코드 세그먼트가 제2 코드 세그먼트에 의해 수행되는 기능성을 간단히 액세스할 때와 같이 존재하지 않으면, 정보는 종래의 의미에서 한쪽 방향 또는 양쪽 방향으로 전달되지 않을 수 있다. 이러한 양상들 중 임의의 것 또는 전부는, 예를 들어 코드 세그먼트가 대략 결합된 (loosely coupled) 구성에서 시스템의 일부인지 또는 엄격하게 결합된(tightly coupled) 구성에서 시스템의 일부인지 여부에 따라 주어진 상황에서 중요할 수 있고, 따라서 이러한 리스트가 예시적으로 제한적이지 않는 것으로 고려되어야 한다.
프로그래밍 인터페이스의 이러한 고려는 당업자에게 공지된 것이고, 본 발명의 지금가지의 상세한 설명으로부터 명백하다. 그러나, 프로그래밍 인터페이스를 구현하는 다른 방식들이 존재하고, 명백히 제외되지 않는다면, 이들 또한 본 명세서의 후반부에 개시되는 특허청구범위에 포함되는 것으로 고려된다. 이러한 기타 방식들은 도 6 및 도 7의 개략적인 관점에서 보다 정교하거나 또는 복잡할 수 있지만, 그럼에도 불구하고 동일한 전체 결과를 달성하는 유사한 기능을 수행한다. 이하 프로그래밍 인터페이스의 대안적인 구현예를 간략하게 설명할 것이다.
A. FACTORING
하나의 코드 세그먼트로부터 다른 코드 세그먼트로의 통신은 여러 분산 통산으로의 통신을 차단함으로써 간접적으로 달성될 수 있다. 이는 도 8 및 도 9에 개략적으로 도시된다. 도시된 바와 같이, 몇몇 인터페이스는 분할가능한 세트의 기능성으로 기술될 수 있다. 따라서, 도 6 및 도 7의 인터페이스 기능성은 팩토링되어 동일한 결과를 달성할 수 있고, 이는 수학적으로 24, 즉 2 x 2 x 3 x 2를 제공한다. 따라서, 도 8에 도시된 바와 같이, 인터페이스(인터페이스1)에 의해 제공되는 기능은 다시 분할되어(subdivided) 인터페이스의 통신을 여러 인터페이스(인터페이스1A, 인터페이스1B, 인터페이스1C 등)로 변환하는 한편, 동일한 결과를 달성 한다. 도 9에 도시된 바와 같이, 인터페이스 I1에 의해 제공되는 기능은 여러 인터페이스 I1a, I1b, I1c 등으로 다시 분할되는 한편, 동일한 결과를 달성한다. 이와 유사하게, 제1 세그먼트로부터의 정보를 수신하는 제2 코드 세그먼트의 인터페이스 I2가 여러 인터페이스 I2a, I2b, I2c 등으로 인수분해될 수 있다. 팩토링시, 제1 코드 세그먼트가 포함된 인터페이스의 갯수가 제2 코드 세그먼트가 포함된 인터페이스의 갯수와 일치할 필요는 없다. 도 8 및 도 9 중 어느 하나의 경우, 인터페이스(인터페이스1 및 I1)의 기능적 사상은 각각 도 6 및 도 7에서와 동일하다. 인터페이스의 팩토링은 또한 연합의, 통신의 및 기타 수학적 특성을 추종하므로, 팩토링은 이해하기 어려울 것이다. 예를 들어, 동작 순서는 중요하지 않을 것이고, 결과적으로, 인터페이스에 의해 수행되는 기능은 다른 코드 또는 인터페이스에 의해 인터페이스에 도달하기 이전에 잘 수행되거나, 또는 시스템의 별도의 컴포넌트에 의해 수행될 것이다. 또한, 프로그래밍 업계의 당업자라면 동일한 결과를 달성하는 서로 다른 기능 호출들을 이루는 다양한 방식이 있다는 것을 이해할 것이사.
B. REDEFINITION
몇몇 경우, 의도된 결과를 여전히 달성하면서도 프로그래밍 인터페이스의 특정 양상(예를 들어, 파라미터 등)을 무시하거나, 추가하거나 또는 재정의(redefine)할 수 있을 것이다. 이는 도 10 및 도 11에 도시된다. 예를 들어, 도 6의 인터페이스(인터페이스1)가 기능 호출 Squre(input, precision, output), 즉 3 개의 파라미터인 input, precisonoutput을 포함하고, 이는 제1 코드 세그먼트로부터 제2 코드 세그먼트로 발행된다고 가정하자. 중간의 파라미터 precision이, 도 10에 도시된 바와 같이, 주어진 시나리오에서 관심사가 아니면, 무시되거나 또는 심지어 meaningless(본 상황에서) 파라미터로 대체될 수 있다. 관심사가 아닌 additional 파라미터를 추가할 수도 있다. 어느 이벤트에서도, 제2 코드 세그먼트에 의해 입력이 제곱처리된 후 출력이 리턴되는 한, 제곱의 기능성이 달성될 수 있다. Precision은 컴퓨팅 시스템의 일부 다운스트림 또는 기타 부분에 대하여 매우 의미있는 파라미터일 것이다; 그러나, 일단 precision이 제곱 계산의 지협적인 목적으로 필요하지 않다는 것이 인식되면, 교체되거나 무시될 수 있다. 예를 들어, 유효 precision 값을 전달하는 대신, 생일 등의 무의미한 값이 결과에 불리한 영향을 주지 않고 전달될 수 있다. 이와 유사하게, 도 11에 도시된 바와 같이, 인터페이스 I1은 인터페이스 I1'으로 교체되고, 인터페이스를 무시하거나 인터페이스에 파라미터를 추가하도록 재정의된다. 인터페이스 I2는 이와 유사하게 인터페이스 I2'로 재정의될 수 있고, 불필요한 파라미터 또는 그 외에 처리될 파라미터를 무시하도록 재정의된다. 여기서 요점은 몇몇 경우에 프로그래밍 인터페이스가 특정 목적에 필요하지 않은 양상, 예를 들어 파라미터 등을 포함할 수 있고, 따라서 이들이 무시되거나 재정의되거나, 또는 기타 목적을 위해 달리 처리될 수 있다는 것이다.
C. INLINE CODING
하나의 코드 세그먼트로부터 다른 것으로의 통신은 여러 분산 통신으로의 통신을 차단함으로써 간접적으로 달성될 수 있다. 이는 도 14 및 도 15에 개략적으로 도시된다. 도 14에 도시된 바와 같이, 하나 이상의 미들웨어[분리 인터페이스(Divorce Interface(s)), 이들은 본래 인터페이스로부터 기능성 및/또는 인터페이스 기능이 분리되기 때문임)가 제공되어, 제1 인터페이스(인터페이스1) 상에서의 통신을 변환하여, 이들을 다른 인터페이스[본 경우에는 인터페이스(인터페이스2A, 인터페이스2B 및 인터페이스2C) 임]에 따르게 한다. 이는 예를 들어 가령 인터페이스1 프로토콜에 따라 오퍼레이팅 시스템과 통신하도록 설계되지만, 오퍼레이팅 시스템이 다른 인터페이스[본 경우에는 인터페이스(인터페이스2A, 인터페이스2B 및 인터페이스2C) 임]를 사용하도록 변경되는 애플리케이션의 인스톨된 베이스가 존재하는 경우 행해질 수 있다. 요점은 제2 코드 세그먼트에 의해 사용되는 본래 인터페이스가 변경되어 제1 코드 세그먼트에 의해 사용되는 인터페이스와 더이상 호환될 수 없고, 따라서 중개(intermediary)가 사용되어 구 인터페이스와 신 인터페이스를 호환가능하게 한다는 것이다. 이와 유사하게, 도 15에 도시된 바와 같이, 제3 코드 세그먼트에 분리 인터페이스 DI1과 함께 도입되어 인터페이스 I1으로부터의 통신을 수신하고, 분리 인터페이스 DI2와 함께 도입되어 예를 들어 인터페이스 I2a 및 I2b에 인터페이스 기능성을 전송할 수 있고, DI2와 협응하지만 동일한 기능 결과를 제공하도록 재설계될 수 있다. 이와 유사하게, DI1 및 DI2는 함께 동작하여 도 7의 인터페이스 I1 및 I2의 기능성을 새로운 오퍼레이팅 시스템으로 중계하고(translate), 동일한 또는 유사한 기능 결과를 제공한다.
E. REWRITING
또 다른 가능한 변형으로는 코드를 동적으로 재작성하여 인터페이스 기능성을 종합적인 결과는 동일한 것을 달성하지만 실체는 다른 것으로 교체한다. 예를 들어, 중간 언어(intermediate language; 예를 들어, Microsoft IL, Java ByteCode 등)로 표현되는 코드 세그먼트가 실행 환경(.Net 프레임워크, Java 런타임 환경, 또는 기타 이와 유사한 런타임 타입 환경에 의해 제공되는 것 등)에서 JIT(Just-In-Time) 컴파일러 또는 해석기에 제공되는 시스템이 존재할 수 있다. 제1 코드 세그먼트로부터 제2 코드 세그먼트로의 통신을 동적으로 변환하도록, 즉 이들을 제2 코드 세그먼트(본래 또는 다른 제2 코드 세그먼트 중 어느 하나)에 의해 요구되는 것과는 다른 인터페이스에 따르도록 JIT 컴파일러가 작성될 수 있다. 도 16에 도시된 바와 같이, 이러한 접근방식은 상술된 분리(Divorce) 시나리오와 유사하다. 이는 예를 들어 애플리케이션의 인스톨된 베이스가 인터페이스 1 프로토콜에 따라 오퍼레이팅 시스템과 통신하지만, 오퍼레이팅 시스템은 다른 인터페이스를 사용하도록 변경되도록 설계되는 곳에서 행해질 수 있다. JIT 컴파일러는 인스톨된-베이스 애플리케이션으로부터 오퍼레이팅 시스템의 새로운 인터페이스로의 이동(FLY)에 대한 통신을 따르도록 사용될 수 있다. 도 17에 도시된 바와 같이, 인터페이스(들)를 동적으로 재작성하는 이러한 어프로치는 팩터에 동적으로 적용되거나, 또는 그렇지 않으면 인터페이스(들)를 변경하기도 한다.
대안적인 실시예를 통해 인터페이스로서 동일 또는 유사한 결과를 달성하기 위한 상술된 시나리오는 또한 직렬 및/또는 병렬로, 또는 다른 중재 코드(intervening code)와 함께 하는 등 다양한 방식으로 조합될 수 있다는 점에 주목하자. 따라서, 상술된 대안적인 실시예들은 상호 배타적인 것이 아니고, 혼합되거나, 매치되거나 조합되어 도 6 및 도 7에 표현된 일반적인 시나리오와 동일한 또는 등가인 시나리오를 제공할 수 있다. 또한, 최상의 프로그래밍 구성에서와 같이, 본 명세서에 개시되지 않은 인터페이스와 동일한 또는 유사한 기능성을 달성하는 다른 유사한 방식들이 존재하지만, 그럼에도 불구하고 본 발명의 사상 및 범위에 의해 표현되는 것은, 즉 인터페이스의 가치에 기초가되는 인터페이스에 의해 적어도 기능성의 일부가 표현되고, 그 유리한 결과가 인에이블된다는 점에 주목하자.
결론
비록 본 발명이 구조적 특징 및/또는 방법론적 액트들에 대한 특유의 언어로 설명되었지만, 이하의 청구범위에 개시되는 발명은 상술된 이러한 특유의 특징들 또는 액트들에 반드시 제한되는 것은 아니라는 점이 이해될 것이다. 오히려, 상기 특유한 특징들 및 액트들은 이하 청구되는 본 발명을 구현하는 예시적인 형태로서 개시된다.
프로그래밍 인터페이스는 애플리케이션, 문서, 매체 프리젠테이션 및 기타 콘텐츠를 생성하기 위한 기능을 제공한다. 이러한 기능들은 개발자가 오퍼레이팅 시스템, 객체 모델 서비스, 또는 다른 시스템 또는 서비스로부터 서비스를 받을 수 있도록 해준다.

Claims (58)

  1. 프로그래밍 인터페이스가 구현된 컴퓨터 판독 가능 기록 매체에 있어서, 상기 프로그래밍 인터페이스는,
    그래픽 컴포넌트의 생성과 관련된 제1 서비스 그룹;
    클래스의 속성들과 데이터 소스의 바인딩과 관련된 제2 서비스 그룹; 및
    콘텐츠의 포맷팅과 관련된 제3 서비스 그룹
    을 포함하는 컴퓨터 판독 가능 기록 매체.
  2. 제1항에 있어서,
    상기 제1 서비스 그룹은, 상기 그래픽 컴포넌트의 외관(appearance)을 결정하는 서비스, 상기 그래픽 컴포넌트의 거동(behavior)을 결정하는 서비스, 상기 그래픽 컴포넌트의 배열(arrangement)을 결정하는 서비스 및 상기 그래픽 컴포넌트를 정의하는 복수의 중첩형 프리미티브 제어(a plurality of nested primitive controls) 중 하나를 포함하는, 컴퓨터 판독 가능 기록 매체.
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 제1항에 있어서,
    상기 프로그래밍 인터페이스는, 적어도 하나의 그래픽 컴포넌트의 애니메이션, 네비게이션 능력을 가진 애플리케이션의 생성, 전자 잉크 처리 시스템의 지원, 복수의 상이한 매체 유형의 조합, 브라우저형 인터페이스를 이용한 클라이언트 상에서의 애플리케이션의 실행, 애플리케이션의 자동 설치 및 실행, 콘텐츠의 일련화(serializing) 및 사용자 인터페이스 생성의 자동화 중 하나와 관련된 제4 서비스 그룹을 더 포함하는, 컴퓨터 판독 가능 기록 매체.
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 프로그래밍 인터페이스가 구현된 컴퓨터 판독 가능 기록 매체에 있어서, 상기 프로그래밍 인터페이스는,
    콘텐츠를 디스플레이하기 이전 상기 콘텐츠의 포맷팅과 관련된 제1 서비스 그룹;
    클래스의 속성들과 데이터 소스의 바인딩과 관련된 제2 서비스 그룹; 및
    이미징 효과의 생성과 관련된 제3 서비스 그룹
    을 포함하는, 컴퓨터 판독 가능 기록 매체.
  17. 제16항에 있어서,
    상기 제1 서비스 그룹은 복수의 데이터 요소의 배열을 포함하는, 컴퓨터 판독 가능 기록 매체.
  18. 삭제
  19. 제16항에 있어서,
    상기 프로그래밍 인터페이스는, 애플리케이션의 사용자가 복수의 이미지 사이에서 네비게이션하는 것을 허용하는 애플리케이션의 생성, 이전에 생성된 콘텐츠의 편집, 입력 장치로부터 수신된 입력의 관리 및 다른 컴퓨팅 시스템과의 상호 동작성(interoperability)을 가능하게 하는 것 중 하나와 관련된 제4 서비스 그룹을 더 포함하는, 컴퓨터 판독 가능 기록 매체.
  20. 삭제
  21. 삭제
  22. 삭제
  23. 하나 이상의 마이크로프로세서 및 하나 이상의 소프트웨어 프로그램을 포함하되,
    상기 하나 이상의 소프트웨어 프로그램은 애플리케이션 프로그램 인터페이스를 이용하여 운영체제로부터 서비스를 요구하고,
    상기 애플리케이션 프로그램 인터페이스는
    그래픽 객체의 생성과 관련된 제1 서비스 그룹;
    상기 그래픽 객체의 컴포넌트들의 생성과 관련된 제2 서비스 그룹; 및
    상기 그래픽 객체의 외관의 수정과 관련된 제3 서비스 그룹
    을 포함하는 서비스를 요구하기 위한 개별 명령들을 포함하는 컴퓨터 시스템.
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 데이터 포맷팅을 용이하게 하는 하나 이상의 제1 기능을 호출하는 단계;
    그래픽 객체들의 생성을 용이하게 하는 하나 이상의 제2 기능을 호출하는 단계; 및
    상기 그래픽 객체들의 외관의 변경을 용이하게 하는 하나 이상의 제3 기능을 호출하는 단계
    를 포함하는 방법.
  30. 제29항에 있어서,
    복수의 그래픽 객체를 이용한 사용자 인터페이스의 생성을 용이하게 하거나 또는 사용자 인터페이스의 런타임 생성을 용이하게 하는 하나 이상의 제4 기능을 호출하는 단계를 더 포함하는 방법.
  31. 삭제
  32. 삭제
  33. 제29항에 있어서, 상기 제1 기능은
    사용자 입력의 수신; 및
    디스플레이 상의 데이터 요소들의 배열
    을 용이하게 하는 방법.
  34. 삭제
  35. 삭제
  36. 복수의 기하학적 형상(shape)의 생성을 가능하게 하는 제1 기능 세트를 노출시키기 위한 수단;
    상기 기하학적 형상들이 배열되는 방식의 변경을 가능하게 하는 제2 기능 세트를 노출시키기 위한 수단; 및
    상기 기하학적 형상들의 외관의 수정을 가능하게 하는 제3 기능 세트를 노출시키기 위한 수단
    을 포함하는 시스템.
  37. 삭제
  38. 삭제
  39. 제36항에 있어서,
    상기 제3 기능 세트는 또한 이미징 효과와 적어도 하나의 기하학적 형상의 연관을 가능하게 하거나 또는 소정 기간 동안 특정 기하학적 형상의 외관의 변경을 가능하게 하는 시스템.
  40. 삭제
  41. 제36항에 있어서,
    상기 복수의 기하학적 형상을 이용한 사용자 인터페이스의 생성, 그래픽 객체와 하나 이상의 데이터 소스의 연관 및 그래픽 객체들의 데이터 특정 버전들의 디스플레이 중 하나를 가능하게 하는 제4 기능 세트를 노출시키기 위한 수단을 더 포함하는 시스템.
  42. 삭제
  43. 삭제
  44. 그래픽 객체의 컴포넌트의 생성을 용이하게 하는 하나 이상의 제1 기능을 호출하는 단계;
    그래픽 객체의 생성을 용이하게 하는 하나 이상의 제2 기능을 호출하는 단계;
    상기 그래픽 객체의 외관의 수정을 용이하게 하는 하나 이상의 제3 기능을 호출하는 단계;
    상기 그래픽 객체의 배열을 용이하게 하는 하나 이상의 제4 기능을 호출하는 단계; 및
    상기 그래픽 객체와 데이터 소스를 연관시키는 것을 용이하게 하는 하나 이상의 제5 기능을 호출하는 단계
    를 포함하는 방법.
  45. 삭제
  46. 삭제
  47. 삭제
  48. 삭제
  49. 삭제
  50. 삭제
  51. 삭제
  52. 삭제
  53. 프로그램을 개발하는 방법에 있어서,
    그래픽 이미지의 컴포넌트들을 선택하기 위해 제1 기능 그룹을 액세스하는 단계;
    상기 그래픽 이미지를 생성하기 위해 제2 기능 그룹을 액세스하는 단계;
    상기 그래픽 이미지의 적어도 하나의 컴포넌트의 외관을 수정하기 위해 제3 기능 그룹을 액세스하는 단계; 및
    상기 그래픽 이미지와 관련된 콘텐츠를 포맷팅하기 위해 제4 기능 그룹을 액세스하는 단계
    를 포함하는 방법.
  54. 삭제
  55. 삭제
  56. 삭제
  57. 삭제
  58. 삭제
KR1020040072676A 2003-10-24 2004-09-10 컴퓨터 플랫폼에 대한 프로그래밍 인터페이스 KR101031700B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/694,080 2003-10-24
US10/694,080 US20050091576A1 (en) 2003-10-24 2003-10-24 Programming interface for a computer platform

Publications (2)

Publication Number Publication Date
KR20050039549A KR20050039549A (ko) 2005-04-29
KR101031700B1 true KR101031700B1 (ko) 2011-04-29

Family

ID=34465630

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040072676A KR101031700B1 (ko) 2003-10-24 2004-09-10 컴퓨터 플랫폼에 대한 프로그래밍 인터페이스

Country Status (16)

Country Link
US (2) US20050091576A1 (ko)
EP (1) EP1536327A3 (ko)
JP (1) JP2005135384A (ko)
KR (1) KR101031700B1 (ko)
CN (1) CN100530083C (ko)
AU (1) AU2004205327B2 (ko)
BR (1) BRPI0407050A (ko)
CA (1) CA2481590A1 (ko)
IL (1) IL164072A (ko)
MX (1) MXPA04008849A (ko)
NO (1) NO20043781L (ko)
NZ (1) NZ535217A (ko)
RU (1) RU2371758C2 (ko)
SG (1) SG111201A1 (ko)
TW (1) TWI366105B (ko)
ZA (1) ZA200407299B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101611848B1 (ko) 2012-07-13 2016-04-26 후아웨이 테크놀러지 컴퍼니 리미티드 콘텐츠 전송 및 전달 시에 콘텐츠 암호화 및 권한 관리의 시그널링 및 취급

Families Citing this family (283)

* 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
US20010048448A1 (en) * 2000-04-06 2001-12-06 Raiz Gregory L. Focus state themeing
US6753885B2 (en) 2000-04-06 2004-06-22 Microsoft Corporation System and theme file format for creating visual styles
US20050091576A1 (en) * 2003-10-24 2005-04-28 Microsoft Corporation Programming interface for a computer platform
US9256356B2 (en) * 2001-03-29 2016-02-09 International Business Machines Corporation Method and system for providing feedback for docking a content pane in a host window
US6826729B1 (en) * 2001-06-29 2004-11-30 Microsoft Corporation Gallery user interface controls
US8132115B2 (en) * 2003-02-27 2012-03-06 Autodesk, Inc. Dynamic properties for software objects
US7313764B1 (en) * 2003-03-06 2007-12-25 Apple Inc. Method and apparatus to accelerate scrolling for buffered windows
US7155440B1 (en) * 2003-04-29 2006-12-26 Cadence Design Systems, Inc. Hierarchical data processing
US9715678B2 (en) 2003-06-26 2017-07-25 Microsoft Technology Licensing, Llc Side-by-side shared calendars
US8799808B2 (en) 2003-07-01 2014-08-05 Microsoft Corporation Adaptive multi-line view user interface
US7716593B2 (en) * 2003-07-01 2010-05-11 Microsoft Corporation Conversation grouping of electronic mail records
US7707255B2 (en) 2003-07-01 2010-04-27 Microsoft Corporation Automatic grouping of electronic mail
CA2443454A1 (en) * 2003-09-11 2005-03-11 Teamplate Inc. Data binding method in workflow system
CA2451164C (en) * 2003-09-11 2016-08-30 Teamplate Inc. Customizable components
US7219340B2 (en) * 2003-10-23 2007-05-15 Microsoft Corporation Changeable class and pattern to provide selective mutability in computer programming environments
US7187380B2 (en) * 2003-10-30 2007-03-06 Hewlett-Packard Development Company, L.P. Telecommunications graphical service program
US7216127B2 (en) * 2003-12-13 2007-05-08 International Business Machines Corporation Byte stream organization with improved random and keyed access to information structures
GB2411331A (en) * 2004-02-19 2005-08-24 Trigenix Ltd Rendering user interface using actor attributes
US7181464B2 (en) * 2004-02-20 2007-02-20 Microsoft Corporation Forward-only evaluation for XPATH inverse query processing
US8241905B2 (en) 2004-02-24 2012-08-14 The Curators Of The University Of Missouri Self-assembling cell aggregates and methods of making engineered tissue using the same
US20050204368A1 (en) * 2004-03-09 2005-09-15 Venu Ambekar Executable application interoperability and interface creation system
US20050229048A1 (en) * 2004-03-30 2005-10-13 International Business Machines Corporation Caching operational code in a voice markup interpreter
US20050231512A1 (en) * 2004-04-16 2005-10-20 Niles Gregory E Animation of an object using behaviors
JP2007536634A (ja) * 2004-05-04 2007-12-13 フィッシャー−ローズマウント・システムズ・インコーポレーテッド プロセス制御システムのためのサービス指向型アーキテクチャ
US8239749B2 (en) 2004-06-25 2012-08-07 Apple Inc. Procedurally expressing graphic objects for web pages
US9098476B2 (en) * 2004-06-29 2015-08-04 Microsoft Technology Licensing, Llc Method and system for mapping between structured subjects and observers
US7275211B2 (en) * 2004-07-02 2007-09-25 Cognos Incorporated Rendering page sets
US7411590B1 (en) * 2004-08-09 2008-08-12 Apple Inc. Multimedia file format
US7703036B2 (en) 2004-08-16 2010-04-20 Microsoft Corporation User interface for displaying selectable software functionality controls that are relevant to a selected object
US9015621B2 (en) 2004-08-16 2015-04-21 Microsoft Technology Licensing, Llc Command user interface for displaying multiple sections of software functionality controls
US8255828B2 (en) 2004-08-16 2012-08-28 Microsoft Corporation Command user interface for displaying selectable software functionality controls
US7895531B2 (en) * 2004-08-16 2011-02-22 Microsoft Corporation Floating command object
US8146016B2 (en) 2004-08-16 2012-03-27 Microsoft Corporation User interface for displaying a gallery of formatting options applicable to a selected object
US8117542B2 (en) 2004-08-16 2012-02-14 Microsoft Corporation User interface for displaying selectable software functionality controls that are contextually relevant to a selected object
US7707498B2 (en) * 2004-09-30 2010-04-27 Microsoft Corporation Specific type content manager in an electronic document
US7747966B2 (en) 2004-09-30 2010-06-29 Microsoft Corporation User interface for providing task management and calendar information
US7653721B1 (en) * 2004-10-29 2010-01-26 Sun Microsystems, Inc. Mechanism for capturing high level events on user interface components
US20060136877A1 (en) * 2004-12-22 2006-06-22 International Business Machines Corporation Method, system and program product for capturing a semantic level state of a program
US7730394B2 (en) * 2005-01-06 2010-06-01 Microsoft Corporation Data binding in a word-processing application
US7617234B2 (en) * 2005-01-06 2009-11-10 Microsoft Corporation XML schema for binding data
US7945590B2 (en) * 2005-01-06 2011-05-17 Microsoft Corporation Programmability for binding data
US7668873B2 (en) 2005-02-25 2010-02-23 Microsoft Corporation Data store for software application documents
US7752224B2 (en) 2005-02-25 2010-07-06 Microsoft Corporation Programmability for XML data store for documents
US7512892B2 (en) 2005-03-04 2009-03-31 Microsoft Corporation Method and system for displaying and interacting with paginated content
US7844958B2 (en) * 2005-03-11 2010-11-30 Aptana, Inc. System and method for creating target byte code
US9507919B2 (en) * 2005-04-22 2016-11-29 Microsoft Technology Licensing, Llc Rights management system for streamed multimedia content
US7386558B2 (en) * 2005-04-22 2008-06-10 Microsoft Corporation Methods and systems for filtering an Extensible Application Markup Language (XAML) file to facilitate indexing of the logical content contained therein
US8135750B2 (en) * 2005-04-22 2012-03-13 Microsoft Corporation Efficiently describing relationships between resources
CN101542457B (zh) * 2005-04-29 2015-11-25 微软技术许可有限责任公司 事务变换
US7587671B2 (en) * 2005-05-17 2009-09-08 Palm, Inc. Image repositioning, storage and retrieval
BRPI0622274A2 (pt) 2005-06-09 2011-08-09 Whirlpool Co aparelho configurado para executar um ciclo de operação para completar uma operação fìsica em um artigo e rede de aparelho
US7886290B2 (en) * 2005-06-16 2011-02-08 Microsoft Corporation Cross version and cross product user interface
US7853605B2 (en) * 2005-07-29 2010-12-14 Microsoft Corporation Auxiliary data provider
US8239882B2 (en) * 2005-08-30 2012-08-07 Microsoft Corporation Markup based extensibility for user interfaces
US8689137B2 (en) 2005-09-07 2014-04-01 Microsoft Corporation Command user interface for displaying selectable functionality controls in a database application
US7953696B2 (en) * 2005-09-09 2011-05-31 Microsoft Corporation Real-time synchronization of XML data between applications
US9542667B2 (en) 2005-09-09 2017-01-10 Microsoft Technology Licensing, Llc Navigating messages within a thread
US8627222B2 (en) 2005-09-12 2014-01-07 Microsoft Corporation Expanded search and find user interface
US7861219B2 (en) * 2005-09-12 2010-12-28 Microsoft Corporation Script application framework
US8392151B1 (en) * 2005-09-28 2013-03-05 The Mathworks, Inc. Preview of an object in graphical modeling environments
US8095565B2 (en) * 2005-12-05 2012-01-10 Microsoft Corporation Metadata driven user interface
US7603260B2 (en) * 2005-12-29 2009-10-13 Sap Ag Object model for initiating physical operations
US7987456B2 (en) * 2006-01-24 2011-07-26 Microsoft Corporation Qualitatively annotated code
US7818660B2 (en) * 2006-01-29 2010-10-19 Litera Technology Llc Method of compound document comparison
US8601437B2 (en) * 2006-02-15 2013-12-03 Microsoft Corporation Reusable component data persistence using a markup language
US20070211056A1 (en) * 2006-03-08 2007-09-13 Sudip Chakraborty Multi-dimensional data visualization
KR100754211B1 (ko) * 2006-03-15 2007-09-03 삼성전자주식회사 멀티태스킹을 위한 사용자 인터페이스 방법 및 그 방법을수행하는 프로그램을 기록한 컴퓨터 판독 가능한 기록매체
CN101410839B (zh) * 2006-04-12 2012-10-10 国际商业机器公司 调节客户端设备的功能的环境设置的方法和系统
DE102006019917B4 (de) * 2006-04-28 2013-10-10 Airbus Operations Gmbh Verfahren und Vorrichtung zur Sicherung der Maßhaltigkeit von mehrsegmentigen Konstruktionsstrukturen beim Zusammenbau
WO2007134265A2 (en) * 2006-05-12 2007-11-22 Captaris, Inc. Workflow data binding
US9727989B2 (en) 2006-06-01 2017-08-08 Microsoft Technology Licensing, Llc Modifying and formatting a chart using pictorially provided chart elements
US8605090B2 (en) * 2006-06-01 2013-12-10 Microsoft Corporation Modifying and formatting a chart using pictorially provided chart elements
US7783686B2 (en) * 2006-06-16 2010-08-24 Microsoft Corporation Application program interface to manage media files
US7865481B2 (en) * 2006-06-29 2011-01-04 International Business Machines Corporation Changing documents to include changes made to schemas
US20090024958A1 (en) * 2006-08-09 2009-01-22 Kyocera Mita Corporation Program product including display control program and computer-readable media, display device, display control method, and image forming apparatus
JP4143661B2 (ja) * 2006-09-11 2008-09-03 インターナショナル・ビジネス・マシーンズ・コーポレーション テスト用リソース・ファイル及びテスト用フォントを用いた国際化ソフトウェアのテスト方法、装置及びプログラム
US20080091409A1 (en) * 2006-10-16 2008-04-17 Microsoft Corporation Customizable mathematic expression parser and evaluator
TWI396133B (zh) * 2006-10-24 2013-05-11 Sino Wealth Electronic Ltd 程式碼自動生成裝置及方法
KR101288970B1 (ko) * 2006-11-28 2013-07-24 삼성전자주식회사 렌더링 장치 및 방법
GB0624582D0 (en) * 2006-12-08 2007-01-17 Visible Computing Ltd USB autorun devices
KR100827241B1 (ko) * 2006-12-18 2008-05-07 삼성전자주식회사 동적 영상물을 생성하기 위한 템플릿을 편집하는 장치 및방법
US8732595B2 (en) * 2007-01-18 2014-05-20 Sap Ag Condition editor for business process management and business activity monitoring
US7761783B2 (en) * 2007-01-19 2010-07-20 Microsoft Corporation Document performance analysis
US7676524B2 (en) 2007-01-31 2010-03-09 Microsoft Corporation Hierarchical cursor-based object model
US20080186307A1 (en) * 2007-02-05 2008-08-07 Yaron Leifenberg Method and a protocol for describing procedural content for games
US8347206B2 (en) * 2007-03-15 2013-01-01 Microsoft Corporation Interactive image tagging
US20080256514A1 (en) * 2007-04-10 2008-10-16 Microsoft Corporation Side-by-side application manifests for single-purpose applications
US8650489B1 (en) * 2007-04-20 2014-02-11 Adobe Systems Incorporated Event processing in a content editor
US9547415B2 (en) * 2007-04-30 2017-01-17 Oracle International Corporation Suite-wide navigation
US8386923B2 (en) 2007-05-08 2013-02-26 Canon Kabushiki Kaisha Document generation apparatus, method, and storage medium
US8156509B2 (en) * 2007-06-05 2012-04-10 International Business Machines Corporation Exchanging data using data transformation
US8065628B2 (en) 2007-06-25 2011-11-22 Microsoft Corporation Dynamic user interface for previewing live content
US8041120B2 (en) * 2007-06-26 2011-10-18 Microsoft Corporation Unified digital ink recognition
US8094939B2 (en) 2007-06-26 2012-01-10 Microsoft Corporation Digital ink-based search
US8315482B2 (en) * 2007-06-26 2012-11-20 Microsoft Corporation Integrated platform for user input of digital ink
US8201103B2 (en) 2007-06-29 2012-06-12 Microsoft Corporation Accessing an out-space user interface for a document editor program
US8762880B2 (en) * 2007-06-29 2014-06-24 Microsoft Corporation Exposing non-authoring features through document status information in an out-space user interface
US8232901B2 (en) * 2007-06-29 2012-07-31 International Business Machines Corporation Determining an alternative character string
US8484578B2 (en) 2007-06-29 2013-07-09 Microsoft Corporation Communication between a document editor in-space user interface and a document editor out-space user interface
JP4342578B2 (ja) * 2007-07-24 2009-10-14 株式会社エヌ・ティ・ティ・ドコモ 情報処理装置およびプログラム
US20090037829A1 (en) * 2007-08-01 2009-02-05 Microsoft Corporation Framework to integrate web services with on-premise software
US20090132919A1 (en) * 2007-11-15 2009-05-21 International Business Machines Corporation Appending Hover Help to Hover Help for a User Interface
US8914774B1 (en) 2007-11-15 2014-12-16 Appcelerator, Inc. System and method for tagging code to determine where the code runs
US20090132994A1 (en) * 2007-11-16 2009-05-21 Microsoft Corporation Automation tool and method for generating test code
US8954989B1 (en) 2007-11-19 2015-02-10 Appcelerator, Inc. Flexible, event-driven JavaScript server architecture
US8260845B1 (en) 2007-11-21 2012-09-04 Appcelerator, Inc. System and method for auto-generating JavaScript proxies and meta-proxies
US8566807B1 (en) 2007-11-23 2013-10-22 Appcelerator, Inc. System and method for accessibility of document object model and JavaScript by other platforms
US8719451B1 (en) 2007-11-23 2014-05-06 Appcelerator, Inc. System and method for on-the-fly, post-processing document object model manipulation
US8756579B1 (en) 2007-12-03 2014-06-17 Appcelerator, Inc. Client-side and server-side unified validation
US8819539B1 (en) 2007-12-03 2014-08-26 Appcelerator, Inc. On-the-fly rewriting of uniform resource locators in a web-page
US8806431B1 (en) 2007-12-03 2014-08-12 Appecelerator, Inc. Aspect oriented programming
US8527860B1 (en) 2007-12-04 2013-09-03 Appcelerator, Inc. System and method for exposing the dynamic web server-side
US8938491B1 (en) 2007-12-04 2015-01-20 Appcelerator, Inc. System and method for secure binding of client calls and server functions
US8285813B1 (en) 2007-12-05 2012-10-09 Appcelerator, Inc. System and method for emulating different user agents on a server
US8335982B1 (en) 2007-12-05 2012-12-18 Appcelerator, Inc. System and method for binding a document object model through JavaScript callbacks
US8639743B1 (en) 2007-12-05 2014-01-28 Appcelerator, Inc. System and method for on-the-fly rewriting of JavaScript
US20090158181A1 (en) * 2007-12-18 2009-06-18 Mellmo Llc User interface method and apparatus to navigate a document file
US8473276B2 (en) * 2008-02-19 2013-06-25 Google Inc. Universal language input
US20090235161A1 (en) * 2008-03-15 2009-09-17 Microsoft Corporation Lossless Web-Based Editor For Complex Documents
US9753712B2 (en) 2008-03-20 2017-09-05 Microsoft Technology Licensing, Llc Application management within deployable object hierarchy
US9110685B2 (en) 2008-03-25 2015-08-18 Qualcomm, Incorporated Apparatus and methods for managing widgets in a wireless communication environment
US9069575B2 (en) 2008-03-25 2015-06-30 Qualcomm Incorporated Apparatus and methods for widget-related memory management
US9747141B2 (en) * 2008-03-25 2017-08-29 Qualcomm Incorporated Apparatus and methods for widget intercommunication in a wireless communication environment
US9600261B2 (en) * 2008-03-25 2017-03-21 Qualcomm Incorporated Apparatus and methods for widget update scheduling
US9269059B2 (en) * 2008-03-25 2016-02-23 Qualcomm Incorporated Apparatus and methods for transport optimization for widget content delivery
US9588781B2 (en) 2008-03-31 2017-03-07 Microsoft Technology Licensing, Llc Associating command surfaces with multiple active components
US8438539B2 (en) * 2008-04-11 2013-05-07 International Business Machines Corporation Using a menu slideshow framework for generating a custom menu-driven slideshow containing definable content
US9052924B2 (en) * 2008-04-15 2015-06-09 Microsoft Technology Licensing, Llc Light-weight managed composite control hosting
US8490050B2 (en) * 2008-04-17 2013-07-16 Microsoft Corporation Automatic generation of user interfaces
US8140593B2 (en) * 2008-05-15 2012-03-20 Microsoft Corporation Data viewer management
US8291079B1 (en) 2008-06-04 2012-10-16 Appcelerator, Inc. System and method for developing, deploying, managing and monitoring a web application in a single environment
US8880678B1 (en) 2008-06-05 2014-11-04 Appcelerator, Inc. System and method for managing and monitoring a web application using multiple cloud providers
US20090315894A1 (en) * 2008-06-18 2009-12-24 Microsoft Corporation Browser-independent animation engines
US9665850B2 (en) 2008-06-20 2017-05-30 Microsoft Technology Licensing, Llc Synchronized conversation-centric message list and message reading pane
US8143055B2 (en) 2008-06-24 2012-03-27 The Curators Of The University Of Missouri Self-assembling multicellular bodies and methods of producing a three-dimensional biological structure using the same
US9081590B2 (en) * 2008-06-24 2015-07-14 Microsoft Technology Licensing, Llc Multimodal input using scratchpad graphical user interface to edit speech text input with keyboard input
US8402096B2 (en) 2008-06-24 2013-03-19 Microsoft Corporation Automatic conversation techniques
CN101296198B (zh) * 2008-06-25 2010-07-14 腾讯科技(深圳)有限公司 一种在即时通信窗口中插入丰富界面元素的方法及客户端
US9471406B2 (en) * 2008-07-09 2016-10-18 International Business Machines Corporation Remote product invocation framework
US9639331B2 (en) 2008-07-09 2017-05-02 International Business Machines Corporation Service interface creation and modification for object-oriented services
US7596620B1 (en) 2008-11-04 2009-09-29 Aptana, Inc. System and method for developing, deploying, managing and monitoring a web application in a single environment
US8294723B2 (en) 2008-11-07 2012-10-23 Google Inc. Hardware-accelerated graphics for web applications using native code modules
US8675000B2 (en) * 2008-11-07 2014-03-18 Google, Inc. Command buffers for web-based graphics rendering
US8478798B2 (en) * 2008-11-10 2013-07-02 Google Inc. Filesystem access for web applications and native code modules
US7984332B2 (en) * 2008-11-17 2011-07-19 Microsoft Corporation Distributed system checker
US8495074B2 (en) 2008-12-30 2013-07-23 Apple Inc. Effects application based on object clustering
US8639086B2 (en) 2009-01-06 2014-01-28 Adobe Systems Incorporated Rendering of video based on overlaying of bitmapped images
US10685177B2 (en) * 2009-01-07 2020-06-16 Litera Corporation System and method for comparing digital data in spreadsheets or database tables
US8799790B2 (en) * 2009-02-18 2014-08-05 Kyocera Document Solutions Inc. Computer-readable recording medium storing driver program, image forming system, image forming apparatus, method for controlling image forming apparatus, and driver program
US20100235769A1 (en) * 2009-03-16 2010-09-16 Microsoft Corporation Smooth layout animation of continuous and non-continuous properties
US8136031B2 (en) 2009-03-17 2012-03-13 Litera Technologies, LLC Comparing the content of tables containing merged or split cells
WO2010107476A1 (en) * 2009-03-19 2010-09-23 Duke University Inhibiting gsnor
US8799353B2 (en) * 2009-03-30 2014-08-05 Josef Larsson Scope-based extensibility for control surfaces
US9046983B2 (en) 2009-05-12 2015-06-02 Microsoft Technology Licensing, Llc Hierarchically-organized control galleries
US8797337B1 (en) 2009-07-02 2014-08-05 Google Inc. Graphics scenegraph rendering for web applications using native code modules
US20110119479A1 (en) * 2009-11-17 2011-05-19 Robert Cowie EOOBE-Application to collect information for new computer and manufacturing process
US9137206B2 (en) 2009-11-20 2015-09-15 International Business Machines Corporation Service registry for saving and restoring a faceted selection
US20110126113A1 (en) * 2009-11-23 2011-05-26 c/o Microsoft Corporation Displaying content on multiple web pages
CN101719902B (zh) * 2009-12-04 2014-07-30 深圳创维数字技术股份有限公司 一种远程过程调用方法和系统
US8631333B2 (en) 2010-06-07 2014-01-14 Microsoft Corporation Feature set differentiation by tenant and user
US8302014B2 (en) 2010-06-11 2012-10-30 Microsoft Corporation Merging modifications to user interface components while preserving user customizations
US9213661B2 (en) * 2010-06-23 2015-12-15 International Business Machines Corporation Enable/disable adapters of a computing environment
CN101876917A (zh) * 2010-07-02 2010-11-03 深圳市迅雷网络技术有限公司 一种开发控件的方法及装置
KR20120010047A (ko) * 2010-07-23 2012-02-02 삼성전자주식회사 이메일 처리 방법 및 장치
US9013488B2 (en) 2010-10-19 2015-04-21 Apple Inc. Grouping items in a folder
CN101957759B (zh) * 2010-10-21 2013-02-06 江苏科技大学 一种sdk接口转换系统及其实现方法
DK2629975T3 (da) 2010-10-21 2022-05-09 Organovo Inc Anordninger til fremstilling af væv
US8793706B2 (en) 2010-12-16 2014-07-29 Microsoft Corporation Metadata-based eventing supporting operations on data
US20120159395A1 (en) 2010-12-20 2012-06-21 Microsoft Corporation Application-launching interface for multiple modes
US8689123B2 (en) 2010-12-23 2014-04-01 Microsoft Corporation Application reporting in an application-selectable user interface
US20110119575A1 (en) * 2010-12-28 2011-05-19 Whitmyer Jr Wesley W Fit-to function for document processing
US9104307B2 (en) 2011-05-27 2015-08-11 Microsoft Technology Licensing, Llc Multi-application environment
US9158445B2 (en) 2011-05-27 2015-10-13 Microsoft Technology Licensing, Llc Managing an immersive interface in a multi-application immersive environment
US8893033B2 (en) * 2011-05-27 2014-11-18 Microsoft Corporation Application notifications
CN102810041B (zh) * 2011-06-02 2015-11-18 深圳市金蝶友商电子商务服务有限公司 一种多文档界面的转换方法以及相关装置
US20130031076A1 (en) * 2011-07-28 2013-01-31 Kikin, Inc. Systems and methods for contextual searching of semantic entities
US20130055200A1 (en) * 2011-08-30 2013-02-28 Microsoft Corporation Application interface for object build information
US20130057587A1 (en) 2011-09-01 2013-03-07 Microsoft Corporation Arranging tiles
US8922575B2 (en) 2011-09-09 2014-12-30 Microsoft Corporation Tile cache
US10353566B2 (en) 2011-09-09 2019-07-16 Microsoft Technology Licensing, Llc Semantic zoom animations
US9146670B2 (en) 2011-09-10 2015-09-29 Microsoft Technology Licensing, Llc Progressively indicating new content in an application-selectable user interface
RU2466452C1 (ru) * 2011-09-14 2012-11-10 Российская Федерация, от имени которой выступает Министерство промышленности и торговли Российской Федерации (Минпромторг РФ) Конвейерная система автоматизированного конструирования с виртуальными рабочими местами
US20130110661A1 (en) * 2011-10-28 2013-05-02 Microsoft Corporation Application store delivered platform components
US8954475B2 (en) * 2011-11-10 2015-02-10 Microsoft Technology Licensing, Llc Deep cloning of objects using binary format
US8775936B2 (en) * 2011-12-13 2014-07-08 International Business Machines Corporation Displaying dynamic and shareable help data for images a distance from a pointed-to location
US8942489B2 (en) 2012-01-23 2015-01-27 Microsoft Corporation Vector graphics classification engine
CN104094282B (zh) 2012-01-23 2017-11-21 微软技术许可有限责任公司 无边框表格检测引擎
US9499779B2 (en) 2012-04-20 2016-11-22 Organovo, Inc. Devices, systems, and methods for the fabrication of tissue utilizing UV cross-linking
US10109255B2 (en) 2012-06-05 2018-10-23 Apple Inc. Method, system and apparatus for dynamically generating map textures
US9349205B2 (en) 2012-06-08 2016-05-24 Apple Inc. Systems and methods for animating between collection views
US9342518B1 (en) * 2012-06-21 2016-05-17 Emc Corporation Declaring directives in a data store
CN103678340B (zh) * 2012-09-07 2016-09-14 腾讯科技(深圳)有限公司 浏览器引擎的运行方法、装置、浏览器及终端
US20140136937A1 (en) * 2012-11-09 2014-05-15 Microsoft Corporation Providing and procuring worksheet functions through an online marketplace
US9953008B2 (en) 2013-01-18 2018-04-24 Microsoft Technology Licensing, Llc Grouping fixed format document elements to preserve graphical data semantics after reflow by manipulating a bounding box vertically and horizontally
US9380431B1 (en) 2013-01-31 2016-06-28 Palantir Technologies, Inc. Use of teams in a mobile application
US9552347B1 (en) * 2013-02-26 2017-01-24 Ca, Inc. Data grid cell styling systems and methods
US9575634B2 (en) * 2013-03-04 2017-02-21 Facebook, Inc. Techniques for asynchronous rendering
US10346501B2 (en) 2013-03-13 2019-07-09 International Business Machines Corporation Mobile enablement of existing web sites
US9563448B2 (en) * 2013-03-13 2017-02-07 International Business Machines Corporation Mobilizing a web application to take advantage of a native device capability
US9426201B2 (en) 2013-03-13 2016-08-23 International Business Machines Corporation Transforming application cached template using personalized content
US10083156B2 (en) 2013-03-13 2018-09-25 International Business Machines Corporation Mobile enablement of webpages
US20140272886A1 (en) * 2013-03-14 2014-09-18 Patrick H. Vane System and Method for Gamefied Rapid Application Development Environment
US20150279233A1 (en) * 2013-03-14 2015-10-01 Patrick H. Vane System and Method for Gamefied Rapid Application Development Environment
US10037314B2 (en) 2013-03-14 2018-07-31 Palantir Technologies, Inc. Mobile reports
US9305374B2 (en) * 2013-03-15 2016-04-05 Apple Inc. Device, method, and graphical user interface for adjusting the appearance of a control
US9442105B2 (en) 2013-03-15 2016-09-13 Organovo, Inc. Engineered liver tissues, arrays thereof, and methods of making the same
US8990839B2 (en) 2013-04-22 2015-03-24 Microsoft Technology Licensing, Llc Controlling runtime access to application programming interfaces
CN103279541B (zh) * 2013-06-04 2016-08-31 天津市天安怡和信息技术有限公司 一种降低网页浏览器加载负载的方法及其装置
US9734174B1 (en) * 2013-06-28 2017-08-15 Google Inc. Interactive management of distributed objects
US9276855B1 (en) * 2013-07-16 2016-03-01 Google Inc. Systems and methods for providing navigation filters
AU2014296246B2 (en) 2013-07-31 2021-01-21 Organovo, Inc. Automated devices, systems, and methods for the fabrication of tissue
US9058375B2 (en) * 2013-10-09 2015-06-16 Smart Screen Networks, Inc. Systems and methods for adding descriptive metadata to digital content
US9530233B2 (en) * 2013-10-10 2016-12-27 Adobe Systems Incorporated Action records associated with editable content objects
US8868537B1 (en) 2013-11-11 2014-10-21 Palantir Technologies, Inc. Simple web search
US9378276B1 (en) * 2014-01-03 2016-06-28 Google Inc. Systems and methods for generating navigation filters
EP3099011B1 (en) 2014-02-26 2019-07-03 Huawei Technologies Co., Ltd. Interface management service entity, functional service entity and network element management method
US9727376B1 (en) 2014-03-04 2017-08-08 Palantir Technologies, Inc. Mobile tasks
US10831731B2 (en) * 2014-03-12 2020-11-10 Dell Products L.P. Method for storing and accessing data into an indexed key/value pair for offline access
CA2944723C (en) 2014-04-04 2023-03-14 Organovo, Inc. Engineered three-dimensional breast tissue, adipose tissue, and tumor disease model
TWI509496B (zh) * 2014-08-12 2015-11-21 Noodoe Corp 電子裝置之頁面管理方法及系統,及相關電腦程式產品
CN105446788B (zh) * 2014-08-20 2019-01-11 联想(北京)有限公司 一种信息处理方法及电子设备
JP2017529877A (ja) 2014-10-06 2017-10-12 オルガノボ インコーポレイテッド 人工の腎臓組織、そのアレイ、およびその作製方法
US20160122723A1 (en) 2014-11-05 2016-05-05 Organovo, Inc. Engineered three-dimensional skin tissues, arrays thereof, and methods of making the same
CN104408120B (zh) * 2014-11-26 2019-04-12 北京国双科技有限公司 源代码的处理方法及装置
CN105159524A (zh) * 2015-08-03 2015-12-16 小米科技有限责任公司 界面显示方法及装置
US10296617B1 (en) 2015-10-05 2019-05-21 Palantir Technologies Inc. Searches of highly structured data
US10200298B2 (en) * 2015-10-26 2019-02-05 Knowlio, Inc. Array generation in a resource management system
AU2016352873B2 (en) 2015-11-09 2023-01-05 Organovo, Inc. Improved methods for tissue fabrication
CN105302445B (zh) * 2015-11-12 2019-07-23 小米科技有限责任公司 图形用户界面绘制方法及装置
US10558345B2 (en) 2015-11-16 2020-02-11 Sap Se User interface development in a transcompiling environment
JP6566850B2 (ja) * 2015-11-30 2019-08-28 キヤノン株式会社 情報処理システム、情報処理システムの制御方法、情報処理装置およびプログラム
CN112516605B (zh) * 2016-03-31 2022-06-14 贝尔合控(深圳)科技有限责任公司 模块化组件系统
US10466863B1 (en) * 2016-06-01 2019-11-05 Google Llc Predictive insertion of graphical objects in a development environment
US10104187B2 (en) * 2016-06-15 2018-10-16 Futurewei Technologies, Inc. System, computer program, and method for dividing services into subsets based on interdependencies
US10853412B2 (en) * 2016-06-16 2020-12-01 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Scenario-based sound effect control method and electronic device
RU2638779C1 (ru) * 2016-08-05 2017-12-15 Общество С Ограниченной Ответственностью "Яндекс" Способ и сервер для вьполнения авторизации приложения на электронном устройстве
CN106648813B (zh) * 2016-09-19 2020-01-10 南京航空航天大学 一种同步数据流程序的形式化编译方法
EP3538169A4 (en) 2016-11-10 2020-09-30 Organovo, Inc. BIO-PRINTED PILEUX FOLLICLES AND THEIR USES
US10365898B2 (en) * 2016-11-15 2019-07-30 Palantir Technologies Inc. Multi-platform interface framework
CN106775934B (zh) * 2016-11-29 2020-12-11 北京元心科技有限公司 基于多系统的输入输出方法及装置
US11995428B2 (en) 2017-01-26 2024-05-28 Nice Inc. Method and system for providing image-based interoperability with an application
US10133953B2 (en) * 2017-01-26 2018-11-20 Nice Ltd. System and method for enabling graphic-based interoperability with a run-time application
US10540167B2 (en) 2017-01-26 2020-01-21 Nice Ltd. Image based method and system for building object model and application states comparison and graphic-based interoperability with an application
US10740123B2 (en) 2017-01-26 2020-08-11 Nice Ltd. Method and system for accessing table content in a digital image of the table
US10671602B2 (en) * 2017-05-09 2020-06-02 Microsoft Technology Licensing, Llc Random factoid generation
CN108984221B (zh) * 2017-05-31 2021-07-20 北京京东尚科信息技术有限公司 一种多平台用户行为日志的采集方法和装置
IL299258B1 (en) * 2017-06-08 2024-07-01 Wix Com Ltd A system and method for intelligent interactions between components on websites
CN109101297B (zh) * 2017-06-20 2021-08-13 北京国双科技有限公司 一种页面的标识方法及装置
US10810004B2 (en) * 2017-06-30 2020-10-20 Oracle International Corporation System and method for managing a public software component ecosystem using a distributed ledger
RU2681408C2 (ru) * 2017-08-22 2019-03-06 Александр Павлович Соколов Способ и система графо-ориентированного создания масштабируемых и сопровождаемых программных реализаций сложных вычислительных методов
CN109558739B (zh) * 2017-09-26 2022-04-15 腾讯科技(深圳)有限公司 程序运行方法、装置、终端及可读介质
RU2668738C1 (ru) * 2017-11-15 2018-10-02 Общество с ограниченной ответственностью "УМИКОН" Способ и система для визуального создания программ для вычислительных устройств
US10963144B2 (en) * 2017-12-07 2021-03-30 Microsoft Technology Licensing, Llc Graphically organizing content in a user interface to a software application
EP3506033A1 (de) 2017-12-27 2019-07-03 Siemens Aktiengesellschaft Verfahren zur rechnergestützten verarbeitung von betriebsdaten eines technischen systems
US10984079B2 (en) * 2018-01-25 2021-04-20 Oracle International Corporation Integrated context-aware software applications
CN110362412A (zh) * 2018-04-09 2019-10-22 华为技术有限公司 一种服务api调用方法和相关装置
US10665008B2 (en) * 2018-05-31 2020-05-26 Microsoft Technology Licensing, Llc Hybrid traversal of object sets
CN108829339A (zh) * 2018-06-28 2018-11-16 上海哔哩哔哩科技有限公司 基于键盘光标的特殊交互元素编辑方法、装置和存储介质
TWI718429B (zh) * 2018-10-25 2021-02-11 國立清華大學 適應性調整使用者介面中資訊量的方法及其電子裝置
KR102136661B1 (ko) * 2018-11-01 2020-07-22 주식회사 한글과컴퓨터 전자 문서에 삽입된 개체들에 대한 손쉬운 깊이 조정을 가능하게 하는 전자 단말 장치 및 그 동작 방법
KR102144354B1 (ko) * 2018-11-05 2020-08-13 주식회사 한글과컴퓨터 전자 문서에 삽입된 개체에 대한 손쉬운 선택 및 조정을 가능하게 하는 전자 단말 장치 및 그 동작 방법
US11232172B2 (en) * 2018-12-04 2022-01-25 Sap Se Collaborative web application and data system
CN111381897B (zh) * 2018-12-28 2024-05-17 北京字节跳动网络技术有限公司 一种接口调用方法、装置、移动终端及存储介质
KR102187540B1 (ko) * 2019-01-04 2020-12-07 주식회사 한글과컴퓨터 문서 상에서 겹쳐진 개체에 대한 손쉬운 편집을 지원하는 전자 단말 장치 및 그 동작 방법
US10768901B2 (en) * 2019-01-16 2020-09-08 Accenture Global Solutions Limited Converting code of a first code type on a mainframe device in phases to code of a second code type
CN109951384A (zh) * 2019-01-24 2019-06-28 无锡帮趣数据服务有限公司 一种api网关系统灵活管理的使用方法
US10997192B2 (en) 2019-01-31 2021-05-04 Splunk Inc. Data source correlation user interface
KR102187544B1 (ko) * 2019-03-25 2020-12-07 주식회사 한글과컴퓨터 전자 문서에 존재하는 겹쳐진 개체에 대한 직관적 선택을 가능하게 하는 전자 장치 및 그 동작 방법
US11194564B1 (en) 2019-04-29 2021-12-07 Splunk Inc. Maintaining compatibility in a multi-component application
US10754638B1 (en) 2019-04-29 2020-08-25 Splunk Inc. Enabling agile functionality updates using multi-component application
US11537586B2 (en) * 2019-06-06 2022-12-27 Microsoft Technology Licensing, Llc Detection of layout table(s) by a screen reader
US11120205B2 (en) * 2019-09-09 2021-09-14 Adobe Inc. Reviewing document designs
US11151125B1 (en) 2019-10-18 2021-10-19 Splunk Inc. Efficient updating of journey instances detected within unstructured event data
US11269876B1 (en) 2020-04-30 2022-03-08 Splunk Inc. Supporting graph data structure transformations in graphs generated from a query to event data
CN111858368B (zh) * 2020-07-27 2022-11-25 成都新潮传媒集团有限公司 数据处理方法、装置及存储介质
US11741131B1 (en) 2020-07-31 2023-08-29 Splunk Inc. Fragmented upload and re-stitching of journey instances detected within event data
TWI776215B (zh) * 2020-08-24 2022-09-01 奇蹟行動科技有限公司 產生使用者介面的描述碼之方法、系統及非暫態電腦可讀取儲存媒體
CN112464463B (zh) * 2020-11-23 2022-09-06 上海交通大学 基于飞行过程的面向参数功能模型的仿真实现方法
US11790110B2 (en) 2021-02-09 2023-10-17 Nice Ltd. System and method for preventing sensitive information from being recorded
CN113094791B (zh) * 2021-04-13 2024-02-20 笔天科技(广州)有限公司 一种基于矩阵运算的建筑数据分析处理方法
CN113778398B (zh) * 2021-09-28 2024-05-14 北京达佳互联信息技术有限公司 代码生成方法、装置、电子设备及存储介质
US11632107B1 (en) 2021-10-01 2023-04-18 Psemi Corporation Gate resistive ladder bypass for RF FET switch stack

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030036736A (ko) * 2000-08-21 2003-05-09 비스퀘어 코포레이션 내장형 오퍼레이팅 시스템을 가진 디바이스를 위한 기능및 사용자 인터페이스를 형성하기 위한 방법 및 장치
US20030177282A1 (en) 2001-07-10 2003-09-18 Andres Hejlsberg Application program interface for network software platform

Family Cites Families (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5327529A (en) * 1990-09-24 1994-07-05 Geoworks Process of designing user's interfaces for application programs
US5655093A (en) * 1992-03-06 1997-08-05 Borland International, Inc. Intelligent screen cursor
JP2522898B2 (ja) * 1992-09-08 1996-08-07 インターナショナル・ビジネス・マシーンズ・コーポレイション 動的カストマイズ方法及びグラフィックリソ―ス・エディタ
JP2639308B2 (ja) * 1992-11-19 1997-08-13 富士電機株式会社 力センサ,温度センサおよび温度・力センサ装置
US5596702A (en) * 1993-04-16 1997-01-21 International Business Machines Corporation Method and system for dynamically sharing user interface displays among a plurality of application program
US6014138A (en) * 1994-01-21 2000-01-11 Inprise Corporation Development system with methods for improved visual programming with hierarchical object explorer
EP0760125B1 (en) * 1994-05-16 2002-04-03 Apple Computer, Inc. A system and method for customizing appearance and behavior of graphical user interfaces
US6404433B1 (en) * 1994-05-16 2002-06-11 Apple Computer, Inc. Data-driven layout engine
EP1156416A3 (en) * 1994-05-16 2007-07-18 Apple Computer, Inc. A method for editing a theme associated with a graphical user interface (GUI)
US6243102B1 (en) * 1994-05-16 2001-06-05 Apple Computer, Inc. Data-driven layout engine
US5880729A (en) * 1994-05-16 1999-03-09 Apple Computer, Inc. Graphical user interfaces having animated control elements
US5504892A (en) * 1994-09-08 1996-04-02 Taligent, Inc. Extensible object-oriented file system
US5745762A (en) * 1994-12-15 1998-04-28 International Business Machines Corporation Advanced graphics driver architecture supporting multiple system emulations
JPH08286916A (ja) * 1994-12-16 1996-11-01 Internatl Business Mach Corp <Ibm> オブジェクトにより手続きソフトウェアを機能的に改良するシステム及び方法
US5986667A (en) * 1994-12-22 1999-11-16 Apple Computer, Inc. Mechanism for rendering scenes using an object drawing subsystem
US5862379A (en) * 1995-03-07 1999-01-19 International Business Machines Corporation Visual programming tool for developing software applications
US6307574B1 (en) * 1995-05-08 2001-10-23 Apple Computer, Inc. Graphical user interface with hierarchical structure for customizable menus and control objects
US5838317A (en) * 1995-06-30 1998-11-17 Microsoft Corporation Method and apparatus for arranging displayed graphical representations on a computer interface
US5872973A (en) * 1995-10-26 1999-02-16 Viewsoft, Inc. Method for managing dynamic relations between objects in dynamic object-oriented languages
US5917487A (en) * 1996-05-10 1999-06-29 Apple Computer, Inc. Data-driven method and system for drawing user interface objects
US5794470A (en) * 1996-06-25 1998-08-18 P.L. Porter Co. Mechanical seat lock
US5893107A (en) * 1996-07-01 1999-04-06 Microsoft Corporation Method and system for uniformly accessing multiple directory services
US6128007A (en) * 1996-07-29 2000-10-03 Motorola, Inc. Method and apparatus for multi-mode handwritten input and hand directed control of a computing device
US5905492A (en) * 1996-12-06 1999-05-18 Microsoft Corporation Dynamically updating themes for an operating system shell
US6137492A (en) * 1997-04-03 2000-10-24 Microsoft Corporation Method and system for adaptive refinement of progressive meshes
US6262729B1 (en) * 1997-04-14 2001-07-17 Apple Computer, Inc. Method and apparatus for binding user interface objects to application objects
US6215495B1 (en) * 1997-05-30 2001-04-10 Silicon Graphics, Inc. Platform independent application program interface for interactive 3D scene management
US6072501A (en) * 1997-06-27 2000-06-06 Xerox Corporation Method and apparatus for composing layered synthetic graphics filters
US5974470A (en) * 1997-09-03 1999-10-26 Chicago-Soft, Ltd. System for reducing conflicts among dynamic link library modules by aliasing modules
US6243106B1 (en) * 1998-04-13 2001-06-05 Compaq Computer Corporation Method for figure tracking using 2-D registration and 3-D reconstruction
US6067785A (en) * 1998-04-24 2000-05-30 Wellman, Inc. Method of producing high quality dark dyeing polyester and resulting yarns and fabrics
US6188399B1 (en) * 1998-05-08 2001-02-13 Apple Computer, Inc. Multiple theme engine graphical user interface architecture
US6219056B1 (en) * 1998-06-05 2001-04-17 Autodesk, Inc. Shape objects having authorable behaviors and appearances
US6023271A (en) * 1998-06-11 2000-02-08 Sun Microsystems, Inc. Framework for binding data viewers/data manipulation with one to many objects through introspection
DE19928880A1 (de) * 1998-07-06 2000-01-13 Heidelberger Druckmasch Ag Farbkasten in einer Druckmaschine
US6915301B2 (en) * 1998-08-25 2005-07-05 International Business Machines Corporation Dynamic object properties
US6392671B1 (en) * 1998-10-27 2002-05-21 Lawrence F. Glaser Computer pointing device having theme identification means
US6039047A (en) * 1998-10-30 2000-03-21 Acuson Corporation Method and system for changing the appearance of a control region of a medical device such as a diagnostic medical ultrasound system
CA2255017A1 (en) * 1998-11-30 2000-05-30 Christina P. Lau Method and mechanism for a task oriented xml data model
US6353451B1 (en) * 1998-12-16 2002-03-05 Intel Corporation Method of providing aerial perspective in a graphical user interface
US6346945B1 (en) * 1998-12-28 2002-02-12 Klocwork Solutions Method and apparatus for pattern-based flowcharting of source code
US6668354B1 (en) * 1999-01-05 2003-12-23 International Business Machines Corporation Automatic display script and style sheet generation
US7117446B2 (en) * 1999-02-01 2006-10-03 Sonic Solutions, Inc. User interface method and system for application programs implemented with component architectures
US6480813B1 (en) * 1999-02-24 2002-11-12 Autodesk, Inc. Method and apparatus for defining a precision drawing in a drawing program
US6538651B1 (en) * 1999-03-19 2003-03-25 John Hayman Parametric geometric element definition and generation system and method
US6952215B1 (en) * 1999-03-31 2005-10-04 International Business Machines Corporation Method and system for graphics rendering using captured graphics hardware instructions
US6426761B1 (en) * 1999-04-23 2002-07-30 Internation Business Machines Corporation Information presentation system for a graphical user interface
US6779027B1 (en) * 1999-04-30 2004-08-17 Hewlett-Packard Development Company, L.P. Intelligent management module application programming interface with utility objects
US6393432B1 (en) * 1999-06-02 2002-05-21 Visionael Corporation Method and system for automatically updating diagrams
US6613099B2 (en) * 1999-08-20 2003-09-02 Apple Computer, Inc. Process and system for providing a table view of a form layout for a database
US6853868B1 (en) * 1999-10-15 2005-02-08 Sun Microsystems, Inc. Cross-platform audio feedback for GUI components
US7181686B1 (en) * 1999-10-29 2007-02-20 International Business Machines Corporation Selecting screens in a GUI using events generated by a set of view controllers
US6580438B1 (en) * 1999-11-22 2003-06-17 Fuji Xerox Co., Ltd. Systems and methods for maintaining uniformity in a presentation environment
US6546397B1 (en) * 1999-12-02 2003-04-08 Steven H. Rempell Browser based web site generation tool and run time engine
US6873337B1 (en) * 2000-04-06 2005-03-29 Microsoft Corporation Application programming interface for changing the visual style
US6753885B2 (en) * 2000-04-06 2004-06-22 Microsoft Corporation System and theme file format for creating visual styles
US20050091576A1 (en) * 2003-10-24 2005-04-28 Microsoft Corporation Programming interface for a computer platform
US6762767B2 (en) * 2000-04-06 2004-07-13 Microsoft Corporation Theme aware management using fusion
US7137066B2 (en) * 2000-04-06 2006-11-14 Microsoft Corporation Binary cache file format for themeing the visual appearance of a computer system
US20010048448A1 (en) * 2000-04-06 2001-12-06 Raiz Gregory L. Focus state themeing
US6886135B2 (en) * 2000-04-07 2005-04-26 Microsoft Corp. Extensible schema for defining the visual appearance of computer system components
US6918091B2 (en) * 2000-11-09 2005-07-12 Change Tools, Inc. User definable interface system, method and computer program product
US7596791B2 (en) * 2000-12-19 2009-09-29 Emc Corporation Methods and techniques for delivering rich Java applications over thin-wire connections with high performance and scalability
US7165239B2 (en) * 2001-07-10 2007-01-16 Microsoft Corporation Application program interface for network software platform
US7117504B2 (en) * 2001-07-10 2006-10-03 Microsoft Corporation Application program interface that enables communication for a network software platform
US6920461B2 (en) * 2001-07-10 2005-07-19 Microsoft Corp. Application program interface for network software platform
US7581231B2 (en) * 2001-07-10 2009-08-25 Microsoft Corporation Computing system and method for allowing plurality of applications written in different programming languages to communicate and request resources or services via a common language runtime layer
US7017162B2 (en) * 2001-07-10 2006-03-21 Microsoft Corporation Application program interface for network software platform
US20030093419A1 (en) * 2001-08-17 2003-05-15 Srinivas Bangalore System and method for querying information using a flexible multi-modal interface
US20030101439A1 (en) * 2001-11-29 2003-05-29 Giuseppe Desoli System and method for supporting emulation of a computer system through dynamic code caching and transformation
AUPS145902A0 (en) * 2002-03-28 2002-05-09 Canon Kabushiki Kaisha A client server approach for interactive updates of graphical user interfaces on intranets

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030036736A (ko) * 2000-08-21 2003-05-09 비스퀘어 코포레이션 내장형 오퍼레이팅 시스템을 가진 디바이스를 위한 기능및 사용자 인터페이스를 형성하기 위한 방법 및 장치
US20030177282A1 (en) 2001-07-10 2003-09-18 Andres Hejlsberg Application program interface for network software platform

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
논문1

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101611848B1 (ko) 2012-07-13 2016-04-26 후아웨이 테크놀러지 컴퍼니 리미티드 콘텐츠 전송 및 전달 시에 콘텐츠 암호화 및 권한 관리의 시그널링 및 취급
US9342668B2 (en) 2012-07-13 2016-05-17 Futurewei Technologies, Inc. Signaling and handling content encryption and rights management in content transport and delivery

Also Published As

Publication number Publication date
AU2004205327A1 (en) 2005-05-12
IL164072A (en) 2013-01-31
KR20050039549A (ko) 2005-04-29
IL164072A0 (en) 2005-12-18
SG111201A1 (en) 2005-05-30
TWI366105B (en) 2012-06-11
EP1536327A2 (en) 2005-06-01
MXPA04008849A (es) 2005-06-17
RU2004127210A (ru) 2006-02-20
CA2481590A1 (en) 2005-04-24
CN100530083C (zh) 2009-08-19
JP2005135384A (ja) 2005-05-26
ZA200407299B (en) 2006-05-31
BRPI0407050A (pt) 2005-11-22
AU2004205327B2 (en) 2010-04-01
NZ535217A (en) 2006-05-26
EP1536327A3 (en) 2007-09-05
CN1609792A (zh) 2005-04-27
RU2371758C2 (ru) 2009-10-27
US20050091576A1 (en) 2005-04-28
TW200515175A (en) 2005-05-01
NO20043781L (no) 2005-04-25
US20090119578A1 (en) 2009-05-07

Similar Documents

Publication Publication Date Title
KR101031700B1 (ko) 컴퓨터 플랫폼에 대한 프로그래밍 인터페이스
US7426734B2 (en) Facilitating presentation functionality through a programming interface media namespace
US7721254B2 (en) Programming interface for a computer platform
US7284192B2 (en) Architecture for ink annotations on web documents
JP3565850B2 (ja) オブジェクト指向通知フレームワークシステム
US7546602B2 (en) Application program interface for network software platform
USRE37722E1 (en) Object-oriented system for the transparent translation among locales of locale-dependent application programs
Nathan Windows presentation foundation unleashed
US20060031755A1 (en) Sharing inking during multi-modal communication
KR20060087995A (ko) 작업 흐름을 모델링하는 방법 및 시스템
Ghoda et al. XAML developer reference
US7657869B2 (en) Integration of external tools into an existing design environment
Phelps Multivalent documents: anytime, anywhere, any type, every way user-improvable digital documents and systems
Wenz Essential Silverlight 2 Up-to-Date
McDonald Pro WPF: Windows Presentation Foundation in. NET 3.0
WO1996015493A1 (en) Object-oriented operating system
Allen Self Handbook Documentation
Osenkov Designing, implementing and integrating a structured C# code editor
Theobald Tcl/Tk in a Nutshell
Federl Design and implementation of global virtual laboratory: a network accessible simulation environment
Kaláb SVG-based Knowledge Visualization
WO1996015492A1 (en) Object-oriented operating system
Likness Building Windows 8 Apps with C# and XAML
Jgr Programming With C#. Net
RepeatBehavior Symbols & Number

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160318

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170317

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee