KR20040086042A - 벡터 그래픽을 위한 마크업 언어 및 오브젝트 모델 - Google Patents

벡터 그래픽을 위한 마크업 언어 및 오브젝트 모델 Download PDF

Info

Publication number
KR20040086042A
KR20040086042A KR1020030031430A KR20030031430A KR20040086042A KR 20040086042 A KR20040086042 A KR 20040086042A KR 1020030031430 A KR1020030031430 A KR 1020030031430A KR 20030031430 A KR20030031430 A KR 20030031430A KR 20040086042 A KR20040086042 A KR 20040086042A
Authority
KR
South Korea
Prior art keywords
data
attribute
visual
data structure
tags
Prior art date
Application number
KR1020030031430A
Other languages
English (en)
Other versions
KR100996738B1 (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 KR20040086042A publication Critical patent/KR20040086042A/ko
Application granted granted Critical
Publication of KR100996738B1 publication Critical patent/KR100996738B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/60Editing figures and text; Combining figures or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/61Scene description

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Generation (AREA)
  • Processing Or Creating Images (AREA)
  • Image Analysis (AREA)
  • Image Processing (AREA)

Abstract

엘리먼트 오브젝트 모델, 및 프로그램 코드 개발자가 장면 그래프 데이터 구조와 지속적으로 인터페이스하여 그래픽을 생성할 수 있도록 상기 엘리먼트 오브젝트 모델을 이용하기 위한 벡터 그래픽 마크업 언어를 제공한다. 일반적으로, 벡터 그래픽 엘리먼트 오브젝트 모델은, 형상 엘리먼트 및 장면 그래프의 장면 그래프 오브젝트 모델과 상관하는 이미지 및 비디오 엘리먼트를 포함한 다른 엘리먼트들에 대응한다. 마크업은 장면 그래프 데이터 구조의 오브젝트로 번역되는 엘리먼트 트리 내의 엘리먼트들을 포함하는 데이터로 구문 분석될 수 있다. 다른 마크업은 장면 그래프 오브젝트를 생성하는 데이터 및 호출로 직접 번역될 수 있다. 마크업 언어는, 마크업 언어 내의 다른 위치에서 재사용될 수 있도록 명명 가능한 단순 스트링 포맷 또는 복합 속성 신택스를 포함한 엘리먼트를 기술한다.

Description

벡터 그래픽을 위한 마크업 언어 및 오브젝트 모델{MARKUP LANGUAGE AND OBJECT MODEL FOR VECTOR GRAPHICS}
본 발명은 일반적으로 컴퓨터 시스템에 관한 것으로, 특히, 컴퓨터 시스템 상으로의 표시를 위한 그래픽 및 다른 비디오 정보의 처리에 관한 것이다.
컴퓨터 시스템 상의 그래픽을 액세스하는 종래의 즉시 모드 모델(immediate mode model)은 한계에 달했다. 이는 부분적으로는 메모리 및 버스의 속도가 메인 프로세서 및/또는 그래픽 프로세서의 발전을 따라가지 못하기 때문이다. 일반적으로, 프레임을 준비하기 위한 현재(예를 들어, WM_PAINT)의 모델은, 복잡한 그래픽효과가 요구되는 때에는 하드웨어 리프레시 속도를 따라가기 위해 지나치게 많은 데이터 처리를 필요로 한다. 결과적으로, 종래의 그래픽 모델을 이용하여 복잡한 그래픽 효과를 시도하는 경우, 감지되는 시각적 효과를 야기하는 변화가 후속 프레임의 시간에 맞춰 완성되지 않고, 그 변화가 다른 프레임들에 더해져서 시각적으로 두드러지게 바람직하지 못한 결과를 야기하게 된다.
그래픽 출력을 제어하기 위한 신규한 모델이 미국 특허 출원 제10/184,795호, 제10/184,796호 및 제10/185,775호에 기술되어 있다. 이들 신규한 모델은 그래픽 처리 기술에 대해 수많은 중요한 개선을 제공한다. 예를 들어, 미국 특허 출원 제10/184,795호는 일반적으로 다중 레벨 그래픽 처리 시스템 및 방법에 관한 것으로, 여기에서 상위 레벨 컴포넌트(예를 들어 운영 시스템)는 장면 그래프(scene graph)를 설계하는 단계, 애니메이션 파라미터를 업데이트하는 단계, 비교적 낮은 가동률(operating rate)로 장면 그래프의 데이터 구조를 횡단하여 단순화된 데이터 구조 및/또는 그래픽 커맨드를 하위 레벨 컴포넌트에 전달하는 단계의 계산적으로 집중적인 양태를 수행한다. 상위 레벨 처리가 데이터를 현저하게 단순화시키기 때문에, 하위 레벨 컴포넌트는 그래픽 서브시스템의 프레임 리프레시 속도에 대응하는 속도 등과 같이 (상위 레벨 컴포넌트에 비하여) 보다 고속으로 동작하여, 데이터를 그래픽 서브시스템에 대한 일정한 출력 데이터로 처리할 수 있다. 애니메이션이 이용되는 경우, 변경에 따라 전체 장면을 재드로잉해야만 하는 대신에, 하위 레벨 처리는 필요에 따라 파라미터 간격을 보간하여, 렌더링(rendering)되는 때에 각 프레임에 대해 미세하게 변경된 장면을 제공하는 순간값을 획득하여, 매끄러운애니메이션을 제공한다.
미국 특허 출원 번호 제10/184,796호는, 그래픽을 드로잉하고자 하는 프로그램 코드(예를 들어, 응용 프로그램 또는 운영 시스템 컴포넌트)가 장면 그래프 기술(description)의 다른 양태들은 변화시키지 않은 채로 특정 양태만을 선택적으로 변화시킬 수 있도록, 가변 (애니메이트된) 값 및 파라미터화된 그래프 컨테이너를 제공하는 파라미터화된 장면 그래프를 기술하고 있다. 또한, 프로그램 코드는 가능한 다른 파라미터를 이용하여 장면 그래프의 기설계된 부분을 재사용할 수 있다. 예상할 수 있는 바와 같이, 파라미터화를 통해 표시 항목의 외양을 용이하게 변화시키는 능력 및/또는 장면 그래프의 현존하는 부분의 재사용은 전체적인 그래픽 처리 효율에 있어서의 실질적인 이득을 제공한다.
미국 특허 출원 번호 제10/185,775호는 일반적으로 장면 그래프 내에 오브젝트 및 데이터를 통해 시각 정보를 저장하기 위한 캐싱 데이터 구조(caching data structure) 및 관련 메커니즘을 기술하고 있다. 데이터 구조는 일반적으로 그 내부의 시각 데이터가 어떻게 파퓰레이트되고 사용될지를 지능적으로 제어하는 메커니즘과 연관된다. 예를 들어, 응용 프로그램에 의해 특별하게 요청되지 않는 한, 데이터 구조 내에 저장된 정보의 대부분은 그에 대한 외부 참조(해당 정보가 최적화되거나 다르게 처리될 수 있게 함)를 갖고 있지 않다. 예상할 수 있는 바와 같이, 이것은 자원의 효율 및 절약을 제공하며, 예를 들어, 캐시 데이터 내의 데이터가 보다 컴팩트한 다른 포맷으로 처리될 수 있고/있거나 비트맵 또는 다른 후처리 결과와 같은 후속되는 반복적 처리에 대한 필요성을 감소시킨다.
상기의 개선점들은 그래픽 처리 기술에 대한 실질적인 이점을 제공하긴 하지만, 이러한 개선된 그래픽 모델 및 관련 개선점들을 프로그램들이 바로 직접적으로 이용할 수 있게 하는 방법에 대한 필요성은 여전히 존재한다. 프로그램들이 개선된 그래픽 모델에 의해 제공되는 다수의 특징 및 그래픽 처리 능력을 유리하게 이용하여, 복잡한 그래픽을 효율적으로 출력할 수 있게 하는 포괄적이고 간단한 방법이 요구된다.
도 1은 본 발명이 이용될 수 있는 예시적인 컴퓨터 시스템을 나타내는 블럭도.
도 2는 본 발명이 이용될 수 있는 그래픽 계층 아키텍쳐를 개괄적으로 나타내는 블럭도.
도 3은, 본 발명에 따라 장면 그래프를 횡단하여 그래픽 커맨드 및 다른 데이터를 제공하는 것 등에 의해 장면 그래프를 처리하는 비주얼 및 관련 컴포넌트의 장면 그래프의 도면.
도 4는 본 발명의 한 양태에 따라 구성된 유효화 비주얼, 드로잉 비주얼 및 관련 드로잉 프리미티브의 도면.
도 5는 본 발명의 한 양태에 따른 오브젝트 모델의 비주얼 클래스를 나타낸 도면.
도 6은 본 발명의 한 양태에 따른 오브젝트 모델의 다양한 다른 오브젝트를 나타낸 도면.
도 7은 본 발명의 한 양태에 따른 비주얼의 데이터의 변환을 나타낸 도면.
도 8a 및 도 8b는 본 발명의 한 양태에 따른, 기하학 스케일 및 비균일 스케일에서의 비주얼의 데이터의 변환을 각각 나타낸 도면.
도 9a 내지 도 9c는 본 발명의 한 양태에 따른 표면 비주얼 오브젝트와 다른 비주얼 및 컴포넌트의 블럭도.
도 10a 및 도 10b는 본 발명의 한 양태에 따른 HWnd 비주얼 오브젝트를 나타낸 도면.
도 11은 본 발명의 한 양태에 따른 계층화된 비주얼 오브젝트를 나타낸 도면.
도 12는 본 발명의 한 양태에 따른 오브젝트 모델의 기하학 클래스를 나타낸 도면.
도 13은 본 발명의 한 양태에 따른 PathGeometry 구조의 도면.
도 14는 본 발명의 한 양태에 따른, 프리미티브에 의해 생성된 예시적인 그래픽을 나타내는 비주얼 및 드로잉 프리미티브의 장면 그래프의 도면.
도 15는 본 발명의 한 양태에 따른 오브젝트 모델의 브러쉬 클래스의 도면.
도 16은 본 발명의 한 양태에 따른 선형 그래디언트 브러쉬 오브젝트 내의 데이터로부터 발생된 렌더링된 그래픽의 도면.
도 17은 본 발명의 한 양태에 따른 원형 그래디언트 브러쉬 오브젝트 내의 데이터로부터 발생된 렌더링된 그래픽의 도면.
도 18은 본 발명의 한 양태에 따른 다양한 스트레치값을 갖는 것으로부터 발생된 렌더링된 그래픽의 도면.
도 19는 본 발명의 한 양태에 따른 다양한 타일값을 갖는 것으로부터 발생된렌더링된 그래픽의 도면.
도 20은 본 발명의 한 양태에 따라 브러쉬 오브젝트를 포함하는 비주얼을 해석하여 그래픽을 생성하기 위한 논리를 개괄적으로 나타낸 순서도.
도 21은 본 발명의 한 양태에 따른 비주얼 브러쉬 오브젝트로부터 발생된 그리드 및 변환 그리드의 도면.
도 22는 본 발명의 한 양태에 따른, 비주얼로부터 드로잉된 렌더링된 그래픽을 내부에 포함하는 그리드 및 변환 그리드의 도면.
도 23은 본 발명의 한 양태에 따른, 렌더링된 9 그리드 브러쉬 오브젝트를 나타낸 도면.
도 24는 본 발명의 한 양태에 따른 오브젝트 모델의 변환 클래스의 도면.
도 25는 본 발명의 한 양태에 따른 엘리먼트 오브젝트 모델의 엘리먼트 클래스의 도면.
도 26은 본 발명의 한 양태에 따른, 마크업 언어 코드를 해석하여 비주얼 API 계층과 인터페이스하는 컴포넌트의 도면.
도 27은 본 발명의 한 양태에 따른 기하학 경로를 통한 클립핑의 도면.
<도면의 부호의 설명>
110 : 컴퓨터
120 : 처리 유닛
121 : 시스템 버스
130 : 시스템 메모리
133 : BIOS
134 : 운영 시스템
135 : 파일 시스템
136 : 애플리케이션 프로그램
137 : 다른 프로그램 모듈
138 : 프로그램 데이터
160 : 사용자 입력 인터페이스
170 : 네트워크 인터페이스
172 : 모뎀
191 : 모니터
196 : 프린터
간단하게, 본 발명은 엘리먼트 오브젝트 모델, 및 프로그램 코드 개발자가 장면 그래프 데이터와 지속적으로 인터페이스하여 그래픽을 생성할 수 있도록 상기 엘리먼트 오브젝트 모델에 액세스하기 위한 벡터 그래픽 마크업 언어를 제공한다. 벡터 그래픽 마크업 언어는 엘리먼트 오브젝트 모델을 통해 벡터 그래픽을 표현하기 위한 교환 포맷을 포함한다. 해석시, 마크업은 장면 그래프 데이터 구조의 오브젝트로 번역되는 엘리먼트 트리 내의 엘리먼트를 포함하는 데이터로 구문 분석(parse)된다. 엘리먼트 트리 레벨에서, 전승 특성(inheritance characteristics) 및 이벤팅(eventing)을 포함한 풍부한 프로그램 가능성 특징을 제공하기 위해, 속성 시스템(property system) 및 프리젠터 시스템(presenter system)이 제공되어, 장면 설계자가 복잡한 장면을 간단히 설계할 수 있게 한다. 일반적으로, 벡터 그래픽 엘리먼트는, 형상 엘리먼트, 및 장면 그래프 오브젝트 모델의 장면 그래프 오브젝트와 상관되는 이미지 및 비디오 엘리먼트를 포함하는 다른 엘리먼트들에 대응한다. 또한, 벡터 그래픽 엘리먼트의 속성 및 다른 자원들은 장면 그래프 오브젝트 모델의 유사한 속성 및 자원과 상관된다.
따라서, 벡터 그래픽 시스템은 엘리먼트 레벨로 프로그램할 수 있고, 여기에서 각각의 드로잉 형상은 페이지/스크린 내의 나머지 프로그래밍 가능한 엘리먼트들과 동일한 레벨에서 엘리먼트로서 표현되어, 프리젠터 시스템, 이벤트 및 속성과의 상호 작용을 허용한다. 또한, 벡터 그래픽 시스템은 자원 레벨로의 프로그래밍하기 위한 메커니즘을 제공하며, 이에 의해 장면 설계자는 엘리먼트 트리 및 프리젠터 시스템을 본질적으로 쇼트컷고, 장면 그래프 데이터와 인터페이스하는 시각 API 계층으로 직접 프로그래밍할 수 있다. 이는 엘리먼트 레벨의 프로그래밍 가능성의 일부를 상실하게 하긴 하지만, 적합한 오브젝트를 출력하기 위한 보다 효율적이고 간단한 방법을 제공한다. 한 구현예에서, "비주얼 브러쉬(visual brush)" 타입의 채움(fill)이 프로그래밍되는 경우, 구문 분석자(parser)는 자원 레벨 데이터와 함께 API 계층을 직접적으로 호출하여, 대응하는 비주얼 페인트 오브젝트(엘리먼트 오브젝트 모델과 장면 그래프 오브젝트 모델 간의 상관 관계임)를 생성할 수 있다. 이러한 2 계층 시스템에서, 자원 레벨 벡터 그래픽은 효율적인 방식으로 구문 분석되고 직접 저장되는 데에 반해, 엘리먼트 레벨 벡터 그래픽은 생성된 엘리먼트로 구문 분석되며, 이는 나중에 오브젝트로 번역되어야 한다. 동시에, 자원 레벨 데이터 또는 그에 의해 생성된 오브젝트는 엘리먼트 및 엘리먼트 트리의 부분에 의해 참조될 수 있다. 결국, 비주얼 페인트 엘리먼트를 포함하는 엘리먼트가 명칭 부여(naming)될 수 있다. 따라서, 장면 설계자는 필요에 따라 프로그래밍 가능성과 효율의 균형을 조절할 수 있는 능력을 갖는다.
엘리먼트 클래스 계층 구조는, 형상 클래스, 이미지 클래스, 비디오 클래스 및 캔버스 클래스(canvas class)를 포함한다. 형상 클래스의 엘리먼트로는, 직사각형, 다중선(polyline), 다각형, 경로, 선 및 타원이 있다. 각각의 엘리먼트는 채움(속성) 데이터, 스트로크 데이터, 클립핑 데이터, 변환 데이터, 필터 효과 데이터 및 마스크 데이터를 포함하거나 그들에 연관될 수 있다. 형상은, 그것을 드로잉하는 데에 필요한 펜 및 브러쉬를 구성하기 위해 이용된 전승 및 캐스캐이드된 프리젠테이션 속성으로 드로잉된 (장면 그래프 오브젝트 모델의) 기하학에 대응한다. 이미지 클래스는 형상보다 특수하고, 더 많은 래스터 그래픽 데이터를 포함할 수 있는 한편, 비디오 클래스는 표시되는 엘리먼트 내에서 비디오(또는 유사한 멀티미디어)가 재생될 수 있게 한다. 캔버스 클래스는 형상을 위한 컨테이너의 역할을 하여, 형상을 경량으로 유지할 수 있다.
일 구현예에서, 마크업 코드는 구문 분석자/번역자에 의해 해석되며, 구문 분석자/번역자는 일반적으로 엘리먼트 트리/속성 시스템에 엘리먼트-레벨 엘리먼트를 더하고 이들 엘리먼트에 프리젠터를 부착한다. 그러면, 프리젠터 시스템은, 엘리먼트 트리를 부착된 프리젠터와 함께 취득하고, (빌더를 통해) 데이터를 오브젝트로 번역하고, 장면 그래프와 인터페이스하고 장면 그래프 오브젝트를 생성하는 비주얼 API 계층을 호출한다.
마크업 언어는, 간단한 스트링 포맷 또는 복잡한 오브젝트 표기법(복합 속성 신택스)을 포함하여, 엘리먼트를 기술하기 위한 독특한 방법을 제공한다. 단순한스트링 포맷에 대하여, 구문 분석자/번역자 및/또는 프리젠터 시스템은 스트링을 적절한 비주얼 API 오브젝트로 변환하는 타입 변환기를 이용한다. 채움 속성이 단일 스트링에 피팅될 수 없을 정도로 복잡한 경우에는, 마크업 내에서 인라인일 수 있는 복합 속성 신택스가 속성 세트를 기술하는 데에 이용된다. 엘리먼트 레벨과 API 레벨 간에 동일한 렌더링 모델이 공유되기 때문에, 다수의 오브젝트가 동일하고, 그 결과 구문 분석/번역이 매우 효율적으로 되며, 다른 이점들이 제공된다. 또한, 자원 인스턴스는 어디든지 (예를 들면, 마크업 또는 파일 내) 위치될 수 있으며, 명칭에 의해 참조될 수 있다. 이러한 방식으로, 장면 설계자는 복합 속성 신택스에 의해 기술된 엘리먼트를 포함하여, 장면 전체를 통해 엘리먼트 트리 내의 엘리먼트를 재사용할 수 있다.
다른 이점 및 특성들은 이하의 상세한 설명 및 첨부된 도면으로부터 명백해질 것이다.
예시적인 운영 환경
도 1은 본 발명이 구현될 수 있는 적합한 컴퓨팅 시스템 환경(100)의 일례를 도시하고 있다. 컴퓨팅 시스템 환경(100)은 적합한 컴퓨팅 환경의 일례일 뿐이며, 본 발명의 이용 및 기능성의 범위에 대한 한계를 제시하기 위한 것은 아니다. 또한, 컴퓨팅 환경(100)은, 예시적인 운영 환경(100) 내에 도시되어 있는 컴포넌트 중 하나 또는 그 조합에 관련된 의존성 또는 요구 사항을 갖고 있는 것으로 해석되어서는 안 된다.
본 발명은 다른 수많은 범용 또는 전용 컴퓨팅 시스템 환경 또는 구성에서 동작할 수 있다. 본 발명에 이용되기에 적합할 수 있는 공지된 컴퓨팅 시스템, 환경 및/또는 구성의 예로는, 개인용 컴퓨터, 서버 컴퓨터, 휴대형 또는 랩탑 디바이스, 타블렛 디바이스, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 셋톱 박스, 프로그래밍 가능한 가전 기기, 네트워크 PC, 미니 컴퓨터, 메인프레임 컴퓨터, 및 상기의 시스템 또는 디바이스 중 일부를 포함하는 분산된 컴퓨팅 환경 등을 들 수 있지만, 이들로 제한되는 것은 아니다.
본 발명은, 컴퓨터에 의해 실행되는 프로그램 모듈과 같이, 컴퓨터 실행 가능 명령의 일반적인 컨텍스트로 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 타입을 구현하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함한다. 본 발명은 통신 네트워크를 통해 링크된 원격 처리 디바이스들에 의해 태스크가 수행되는 분산된 컴퓨팅 환경에서도 실현될 수 있다. 분산된 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 디바이스를 포함하는 로컬 및 원격 컴퓨터 저장 매체 내에 위치될 수 있다.
도 1을 참조하면, 본 발명을 구현하기 위한 예시적인 시스템은 컴퓨터(110) 형태의 범용 컴퓨팅 디바이스를 포함한다. 컴퓨터(110)의 컴포넌트는 처리 유닛(120), 시스템 메모리(130), 및 시스템 메모리를 포함한 다양한 시스템 컴포넌트들을 처리 유닛(120)에 결합시키는 시스템 버스(121)를 포함할 수 있지만, 이들로 제한되는 것은 아니다. 시스템 버스(121)는 메모리 버스 또는 메모리 제어기, 주변 버스, 및 다양한 버스 아키텍쳐 중 어느 하나를 이용하는 로컬 버스를 포함하는 몇몇 타입의 버스 구조 중 어느 하나일 수 있다. 예를 들어, 이러한 아키텍쳐는 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스, AGP(Accelerated Graphics Port) 버스, 및 메자닌 버스(Mezzanine bus)로도 공지되어 있는 PCI(Peripheral Component Interconnect) 버스를 포함하지만, 이들로 제한되는 것은 아니다.
컴퓨터(110)는 전형적으로 다양한 컴퓨터 판독 가능 매체를 포함한다. 컴퓨터 판독 가능 매체는 컴퓨터(110)에 의해 액세스될 수 있는 어떠한 매체라도 가능하며, 휘발성 및 비휘발성 매체, 착탈 가능 및 착탈 불가능 매체를 모두 포함한다. 예를 들어, 컴퓨터 판독 가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있지만, 이들로 제한되는 것을 아니다. 컴퓨터 저장 매체는 컴퓨터 판독 가능 명령, 데이터 구조, 프로그램 모듈 또는 다른 데이터과 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 착탈 가능 및 착탈 불가능 매체를 모두 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD 또는 다른 광디스크 저장 장치, 자기 카세트, 자기 테입, 자기 디스크 저장 장치 또는 다른 자기 저장 장치, 또는 원하는 정보를 저장하는 데에 이용될 수 있고 컴퓨터(110)에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만, 이들로 제한되는 것은 아니다. 전형적으로, 통신 매체는 반송파 또는 다른 전송 매커니즘 등의 변조된 데이터 신호 내의 컴퓨터 판독 가능 명령, 데이터 구조, 프로그램 모듈, 또는 다른 데이터를 구체화하며, 임의의 정보 배달매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호 내의 정보를 인코딩하는 것과 같은 방식으로 설정 또는 변경된 하나 이상의 특성을 갖는 신호를 의미한다. 예를 들어, 통신 매체는 유선 네트워크 또는 직접 유선 접속 등과 같은 유선 매체, 및 음향, RF, 적외선 및 다른 무선 매체 등과 같은 무선 매체를 포함하지만, 이들로 제한되는 것은 아니다. 상술한 것들 중 일부의 조합은 컴퓨터 판독 가능 매체의 범위 내에 포함될 수 있다.
시스템 메모리(130)는 리드 온리 메모리(ROM, 131) 및 랜덤 액세스 메모리(RAM, 132)와 같은 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 스타트업동안 등에서 컴퓨터(110) 내의 엘리먼트들 간의 정보 전송을 돕는 기본 루틴을 포함하는 기본 입출력 시스템(133, BIOS)은, 전형적으로 ROM(131) 내에 저장된다. 전형적으로, RAM(132)은 즉각적으로 액세스될 수 있고/있거나 처리 유닛(120)에 의해 현재 동작중인 데이터 및/또는 프로그램 모듈을 포함한다. 예를 들어, 도 1은 운영 시스템(134), 응용 프로그램(135), 다른 프로그램 모듈(136) 및 프로그램 데이터(137)를 도시하고 있지만, 이들로 제한되는 것은 아니다.
또한, 컴퓨터(110)는 다른 착탈 가능/착탈 불가능, 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 예를 들어, 도 1은 비착탈식 비휘발성 자기 매체의 판독 및 기입을 행하는 하드디스크 드라이브(141), 착탈식 비휘발성 자기 디스크(152)의 판독 및 기입을 행하는 자기 디스크 드라이브(151), 및 CD-ROM 또는 다른 광매체와 같은 착탈식 비휘발성 광디스크(156)의 판독 및 기입을 행하는 광디스크드라이브(155)를 도시하고 있지만, 이에 제한되는 것은 아니다. 예시적인 운영 환경에서 이용될 수 있는 다른 착탈식/비착탈식 휘발성/비휘발성 컴퓨터 저장 매체는, 자기 테이프 카세트, 플래시 메모리 카드, DVD, 디지탈 비디오 테입, 고체 상태 RAM, 고체 상태 ROM 등을 포함하며, 이들로 제한되는 것은 아니다. 하드 디스크 드라이브(141)는 통상적으로 인터페이스(140) 등의 착탈 불가능 메모리 인터페이스를 통해 시스템 버스(121)에 접속되며, 자기 디스크 드라이브(151) 및 광학 디스크 드라이브(155)는 통상적으로 인터페이스(150) 등의 착탈 가능 메모리 인터페이스를 통해 시스템 버스(121)에 접속된다.
도 1에서 전술되고 예시된, 상기 드라이브 및 이 드라이브와 관련된 컴퓨터 기억 매체는 컴퓨터(110)에 대한 컴퓨터 판독 가능 명령, 데이터 구조, 프로그램 모듈 및 다른 데이터의 저장을 제공한다. 도 1에서, 예를 들어, 하드 디스크 드라이브(141)는 운영 시스템(144), 응용 프로그램(145), 다른 프로그램 모듈(146) 및 프로그램 데이터(147)를 기억시키는 것으로 예시된다. 이러한 컴포넌트는 운영 시스템(134), 응용 프로그램(136), 다른 프로그램 모듈(137) 및 프로그램 데이터(138)와 동일하거나 이것들과는 상이할 수 있다는 것이 인식되어야 한다. 운영 시스템(144), 응용 프로그램(145), 다른 프로그램 모듈(146) 및 프로그램 데이터(147)는, 이들이 최소한 상이한 카피라는 것을 나타내기 위하여 여기에서는 각각 다른 번호가 부여된다. 사용자는 타블렛(전자 디지타이저)(164), 마이크(163), 키보드(162) 및 일반적으로 마우스, 트랙볼 또는 터치 패드로 칭해지는 포인팅 디바이스(161) 등의 입력 디바이스를 통해 커맨드 및 정보를 컴퓨터(110)에 입력할수 있다. 다른 입력 디바이스(도시하지 않음)는 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 이러한 입력 디바이스 및 다른 입력 디바이스는 종종 시스템 버스에 결합된 사용자 입력 인터페이스(160)를 통해 처리 유닛(120)에 접속되지만, 병렬 포트, 게임 포트 또는 범용 직렬 버스(USB) 등의 다른 인터페이스 및 버스 구조를 통해 접속될 수 있다. 또한, 모니터(191) 또는 다른 형태의 표시 디바이스는 비디오 인터페이스(190) 등의 인터페이스를 통해 시스템 버스(121)에 접속된다. 또한, 모니터(191)에는 터치-스크린 인터페이스(192) 등의 인터페이스를 통해 핸드라이팅 등의 디지탈 입력을 컴퓨터 시스템(110)에 입력할 수 있는 터치-스크린 패널(193) 등이 통합될 수 있다. 컴퓨팅 디바이스(110)가 통합되는 타블렛형 퍼스널 컴퓨터 등의 하우징에 모니터 및/또는 터치 스크린 패널이 물리적으로 결합될 수 있으며, 터치 스크린 패널(193)이 본질적으로 타블렛(164)으로서 기능한다는 것이 인식되어야 한다. 아울러, 컴퓨팅 디바이스(110) 등의 컴퓨터는 또한 출력 주변 인터페이스(194) 등을 통해 접속될 수 있는 스피커(195) 및 프린터(196) 등의 다른 주변 출력 디바이스를 포함할 수 있다.
컴퓨터(110)는 원격 컴퓨터(180) 등의 하나 이상의 원격 컴퓨터들에 대한 논리 접속부를 이용한 네트워크 환경에서 운용될 수 있다. 도 1에는 메모리 기억 디바이스(181)만이 도시되어 있지만, 원격 컴퓨터(180)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 디바이스 또는 다른 공통 네트워크 노드일 수 있으며, 통상적으로 컴퓨터(110)에 대하여 전술된 다수 또는 모든 엘리먼트를 포함한다. 도 1에 도시된 논리 접속부는 근거리 통신망(LAN)(171) 및 광역 통신망(WAN)(173)을 포함하지만, 다른 네트워크를 포함할 수도 있다. 이러한 네트워크 환경은 사무실, 종합(Enterprise-wide) 컴퓨터 네트워크, 인트라넷 및 인터넷에서 일반적이다.
LAN 네트워크 환경에서 사용되는 경우, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워크 환경에서 사용되는 경우, 컴퓨터(110)는 통상적으로 모뎀(172) 또는 인터넷 등의 WAN(173) 상에서 통신을 구현하기 위한 다른 수단을 포함한다. 모뎀(172)은 내장형 또는 외장형일 수 있으며, 사용자 입력 인터페이스(160) 또는 다른 적절한 메카니즘을 통해 시스템 버스(121)에 접속될 수 있다. 네트워크 환경에서, 컴퓨터(110) 또는 그 일부에 대하여 기술된 프로그램 모듈은 원격 메모리 기억 디바이스에 저장될 수 있다. 예를 들어, 도 1은 메모리 디바이스(181) 상에 상주하는 원격 응용 프로그램(185)을 도시하지만, 이에 제한되지 않는다. 도시된 네트워크 접속부는 예시적이며 컴퓨터들 사이에서 통신 링크를 구현하는 다른 수단이 사용될 수 있다는 것이 이해될 것이다.
그래픽 아키텍처
본 발명의 한 양태는 개괄적으로는 시스템 표시 장치 상에 그래픽을 출력하기 위하여 애플리케이션 또는 운영 시스템 컴포넌트 등의 프로그램 코드를 통해 드로잉 명령 및 다른 정보(예를 들어, 이미지 비트맵)를 그래픽 컴포넌트로 통신하는 것을 가능하게 하는 것이다. 따라서, 본 발명은 형상 엘리먼트 세트 및 다른 엘리먼트들, 그룹화 및 합성 시스템과 함께, 그리고 프로그램을 통해 데이터 구조, 드로잉 프리미티브(커맨드) 및 다른 그래픽 관련 데이터로 장면 그래프를 파퓰레이트가능한 오브젝트 모델에서의 일반적인 속성 시스템에 통합되는 마크업 언어를 제공한다. 처리되는 경우, 장면 그래프는 스크린 상에 표시되는 그래픽으로 된다.
도 2는 본 발명이 수행될 수 있는 일반적인 적층 아키텍처(200)를 도시한다. 도 2에서 도시된 바와 같이, 프로그램 코드(202)(예를 들어, 응용 프로그램 또는 운영 시스템 컴포넌트 등)는 이미징(204), 벡터 그래픽 엘리먼트(206), 및/또는 비주얼 응용 프로그래밍 인터페이스(API) 계층(212)에 직접 제공되는 기능/방법 호출(call)을 포함하는 하나 이상의 다양한 방법을 통해 출력 그래픽 데이터로 개발될 수 있다. API 계층와의 직접적인 상호 작용은 "비주얼 및 장면 그래프 인터페이스"라는 제목으로 공동 계류중인 전술한 특허 출원에서도 기술되어 있다.
일반적으로, 이미징(204)은 이미지, 예를 들어, 비트맵을 로딩, 편집 및 저장하기 위한 메카니즘에 프로그램(202)을 제공한다. 이러한 이미지들은 시스템의 다른 부분에 의해 사용될 수 있으며, 이미지에 직접적으로 드로잉을 하기 위해 프리미티브 드로잉 코드를 사용하는 방법도 있다.
본 발명의 일 양태에 따르면, 벡터 그래픽 엘리먼트(206)는 (이하에서 기술되는 바와 같이) 나머지 오브젝트 모델과 일치하는, 그래픽을 드로잉하는 다른 방법을 제공한다. 벡터 그래픽 엘리먼트(206)는 마크업 언어를 통해 생성될 수 있으며, 엘리먼트/속성 시스템(208) 및 프리젠터 시스템(210)은 비주얼 API 계층(212)에 대한 적절한 호출을 형성하도록 처리된다. 도 26을 참조로 이하에서 기술되는 바와 같이, 일반적으로 벡터 그래픽 엘리먼트(206)는 장면 그래프가 드로잉되는 오브젝트 모델의 오브젝트로 분석되며, 엘리먼트/속성 시스템(208) 및 프리젠터 시스템(210)을 개재하여 엘리먼트 레벨을 매개로 장면 그래프에 제공되거나, 또는 이하에서 기술되는 바와 같이, 자원 레벨에서 보다 효율적인 방식으로 제공될 수 있다.
일 실시예에서, 그래픽 계층 아키텍처(200)는 상위 레벨의 합성 및 애니메이션 엔진(214)를 포함하며, 캐싱 데이터 구조(216)를 포함하거나 그렇지 않으면 상기 구조(216)와 관련이 있다. 캐싱 데이터 구조(216)는 이하 기술되는 바와 같이, 정의된 오브젝트 모델에 따라 관리되는 계층적으로 배열된 오브젝트를 포함하는 장면 그래프로 이루어진다. 일반적으로, 비주얼 API 계층(212)는 오브젝트를 생성하며, 상기 오브젝트에 데이터를 제공하기 위해 오브젝트를 개방 및 폐쇄하는 등의 능력을 구비한, 캐싱 데이터 구조(216)에 대한 인터페이스에 프로그램 코드(202)(및 프리젠터 시스템(210))를 제공한다. 즉, 상위 레벨의 합성 및 애니메이션 엔진(214)은 개발자가 그래픽 및 매체에 관한 의도를 표현하여 그래픽 정보를 디스플레이하고, 플렛폼이 프로그램 코드를 위한 하드웨어의 사용을 최적화할 수 있도록 충분한 정보를 가진 기반 플렛폼을 제공할 수 있게 되어 통합된 매체의 API 계층(212)를 노출시킨다. 예를 들어, 기반 플렛폼은 캐싱, 자원 니고시에이션(negotiation) 및 매체 통합의 기능을 한다.
일 실시예에서, 상위 레벨의 합성 및 애니메이션 엔진(214)은 명령 스트림 및 가능하다면 다른 데이터(예를 들어, 비트맵에 대한 포인터)를 고속의 하위 레벨의 합성 및 애니메이션 엔진(218)으로 보낸다. 본 발명에서 사용되는 바와 같이, "상위 레벨" 및 "하위 레벨"이라는 용어는 다른 컴퓨팅 시나리오에서 사용되는 용어와 유사하며, 여기에서는 일반적으로, 소프트웨어 컴포넌트가 상위 레벨의 컴포넌트와 관련이 낮으면 낮을수록, 이 컴포넌트는 하드웨어에 보다 밀접하다. 따라서, 예를 들어, 상위 레벨의 합성 및 애니메이션 엔진(214)으로부터 전송된 그래픽 정보는 하위 레벨의 합성 및 애니메이션 엔진(218)에서 수신될 수 있으며, 상기 그래픽 정보는 하드웨어(222)를 포함하는 그래픽 서브시스템에 그래픽 데이터를 전송하기 위해 사용된다.
프로그램 코드(202)와 함께 상위 레벨의 합성 및 애니메이션 엔진(214)은 프로그램 코드(202)에 의해 제공된 그래픽 장면을 나타내는 장면 그래프를 구축한다. 예를 들어, 드로잉될 각각의 아이템은 드로잉 명령으로 로딩될 수 있으며, 시스템은 장면 그래프 데이터 구조(216)에서 캐싱될 수 있다. 이하에서 기술되는 바와 같이, 이러한 데이터 구조(216) 및 드로잉되는 것을 열거하기 위한 여러 가지 방법이 있다. 아울러, 상위 레벨의 합성 및 애니메이션 엔진(214)은 선언적인 (또는 다른) 애니메이션 제어(예를 들어, 애니메이션 간격) 및 타이밍 제어를 제공하기 위해 타이밍 및 애니메이션 시스템(220)과 통합된다. 애니메이션 시스템은 예를 들어, 엘리먼트 속성 레벨(208)에서, 비주얼 API 계층(212) 내부에서, 그리고 다른 모든 자원에서 등, 어느 시스템에서나 본질적으로 애니메이트 값이 통과되는 것이 허용된다는 것이 인식되어야 한다. 타이밍 시스템은 엘리먼트 및 비주얼 레벨에서 노출된다.
하위 레벨 합성 애니메이션 엔진(218)은 장면의 합성, 애니메이팅 및 렌더링을 관리하며, 이 장면은 그 후에 그래픽 서브시스템(222)에 제공된다. 상기 하위 레벨의 엔진(218)은 다수의 애플리케이션의 장면에 대한 렌더링을 합성하고, 컴포넌트를 렌더링함으로써, 그래픽의 실질적 렌더링을 스크린에 대해 수행한다. 그러나, 때때로 일부 렌더링이 상위 레벨에서 발생하는 것이 필요하고 및/또는 바람직할 수도 있다는 것이 인식되어야 한다. 예를 들어, 하위 계층이 다수의 애플리케이션으로부터의 요청을 처리하는 동안, 상위 계층은 하나의 애플리케이션을 기초로 실증(instantiate)되고, 이에 의해 상위 레벨에서 시간-소비 또는 애플리케이션-특정한 렌더링을 이미징 메카니즘(204)을 통해서 수행하고, 비트맵에 대한 기준을 하위 레벨로 보내는 것이 가능하다.
장면 그래프 오브젝트 모델
이하 기술되는 바와 같이, 렌더링 모델은 상위 레벨의, 제어-기반 벡터 그래픽 엘리먼트(206)에 의해 공유되며, 하위 레벨의 오브젝트는 장면 그래프 데이터 구조(216)에서 사용된 비주얼 API 계층(212)에 의해 생성된다. 이것은 본 발명의 상위 레벨의 엘리먼트 및 하위 레벨의 오브젝트 사이에서 높은 상관 관계를 제공한다. 이하에서는 장면 그래프 오브젝트 모델의 일 실시예에 대해서 기술한다.
도 3 및 4는 비주얼로 칭해지는 베이스 오브젝트를 포함하는 예시적인 장면 그래프(300, 400)를 각각 도시한다. 일반적으로, 비주얼은 사용자에게 가상의 표면을 나타내고 표시 장치 상에 시각적으로 나타나는 오브젝트를 포함한다. 도 5에 도시된 바와 같이, 기본 클래스 비주얼은 다른 비주얼 타입에 대해 기본적인 기능을 제공한다. 즉, 비주얼 클래스(500)는 비주얼 타입(예를 들어, 501-506)으로부터 도출된는 추상(abstract) 기본 클래스가다.
도 3에서 도시된 바와 같이, 최상위 레벨(또는 루트)의 비주얼(302)은 비주얼관리 오브젝트(304)에 접속되며, 또한 그래픽 데이터가 프로그램 코드를 위해 출력되는 윈도우(HWnd)(306) 또는 유사한 유닛과 관련성이 있다. 비주얼 관리자(304)는 이러한 윈도우(306)에 대한 최상위 레벨의 비주얼(및 이러한 비주얼의 임의의 차일드의 드로잉을 관리한다. 도 6은 본 발명에서 기술되는 그래픽 시스템의 오브젝트 모델에서의 일련의 다른 오브젝트(620)들 중 하나로서 비주얼 관리자를 나타낸다.
드로잉을 위하여, 비주얼 관리자(304)는 디스패쳐(308)에 의해 예정된 바와 같이 장면 그래프를 처리(예를 들어, 횡단(traverse) 또는 전송)하고, 미국 특허 출원 No. 10/184,795, 10/184,796 및 10/185,775에서 개괄적으로 개시된 바와 같이, 그 대응 윈도우(306)에 대한 하위 레벨의 컴포넌트(218)(도 2)에 그래픽 명령 및 다른 데이터를 제공한다. 장면 그래프 처리는 통상적으로 하위 레벨의 컴포넌트(218) 및/또는 그래픽 서브시스템(222)의 리프레쉬 속도보다 상대적으로 느린 속도로 디스패처(308)에 의해 스케쥴될 것이다. 도 3은 계층적으로 최상위 레벨(루트)의 비주얼(302) 밑에 계층적으로 배열되며, 그 중 일부는 드로잉 컨텍스트(316, 317)(그 일시적 특성을 나타내기 위해 점선 박스로 도시됨)를 통해, 예를 들어 드로잉 프리미티브 및 다른 비주얼을 포함하는 해당 명령 리스트(318, 319) 각각으로 파퓰레이트되는 것으로 나타난다. 비주얼은 또한 다음의 예시적 비주얼 클래스에서 도시되는 바와 같이, 다른 속성 정보를 포함할 수 있다:
Transform 속성에 의해 설정된 변환은 비주얼의 서브-그래프를 위한 좌표 시스템을 정의한다. 변환 이전의 좌표 시스템은 전-변환(Pre-Transformation) 좌표 시스템이라 하며, 변환 이후의 좌표 시스템은 후-변환(post-Transformation) 좌표 시스템이라 한다. 즉, 변형된 비주얼은 페어런트로서 변형 노드를 갖는 비주얼과 동일하다. 도 7은 일반적으로 비주얼과 관련된 전-변환 좌표 시스템 및 후-변환 좌표 시스템을 나타내는 변형예를 제공한다. 비주얼의 변환을 얻거나 설정하기 위하여, Transform 속성이 사용될 수 있다.
좌표 변환은 마치 비트맵에서 존재하는 것처럼, 모든 것에 대해 동일한 방법으로 적용될 수 있다는 것에 유의해야 한다. 이것은 비트맵에 변형이 항상 적용되는 것이 아니라, 렌더링되는 것이 변형에 의해 동일하게 영향을 받는다는 것을 의미한다는 것에 유의해야 한다. 예를 들어, 사용자가 1인치 폭의 라운드 펜으로 원을 드로잉한 후에 이 원에 대해 2의 X 방향 스케일을 적용하면, 그 펜은 좌우로 2인치 폭 및 상하로 단지 1인치 폭이 될 것이다. 이것은 때때로 합성 또는 비트맵 변형(윤곽 또는 기하학에만 영향을 주는 기하학적 스케일에 대항함)이라고 한다. 도 8a는 스케일링 변환을 나타내는 도면으로, 좌측에 비변환 이미지(800)를 나타내고, 우측에 비균일 스케일을 갖는 변환된 이미지(802)를 나타내고 있다. 도 8b는 스케일링 변환을 나타내는 도면으로, 좌측에 비변환 이미지(800)를 나타내고, 우측에 기하학적 스케일링을 나타내는 변환된 이미지(804)를 나타내고 있다.
비주얼의 좌표 변환에 대하여, TransformToDescendant는 포인트를 참조 비주얼로부터 후손 비주얼(descendant visual)로 변환한다. 이 포인트는 참조 비주얼의 후-변환 좌표 공간으로부터 후손 비주얼의 후-변환 좌표 공간으로 변환된다. TransformFromDescendant는 포인트를 페어런트 체인 위의 후손 비주얼로부터 참조 비주얼로 변환한다. 이 포인트는 후손 비주얼의 후-변환 좌표 공간으로부터 참조 비주얼의 후-변환 좌표 공간으로 변형된다. CalculateBounds 방법은 후-변환 좌표 공간에서 비주얼 콘텐츠의 바운딩 박스를 리턴한다. 좌표 변환 동안 비주얼에 대한 변환이 해석되는 방법에 관하여 다수의 특정 규격이 허용되는 API의 대안적 버전이 존재할 수도 있다는 것이 인식되어야 한다. 예를 들어, 참조 및 후손 비주얼에 대한 변형은 고려될 수도 있고 또는 그렇지 않을 수도 있다. 따라서, 이러한 대안에서는 4개의 옵션이 존재한다. 예를 들어, 전-변환으로부터 전-변환 공간으로의 변형, 전-변환으로부터 후-변환 공간으로의 변형, 후-변환으로부터 전-변환 공간으로의 변형 및 후-변환으로부터 후-변환 공간으로의 변형이 좌표에서 존재할수 있다. 히트(hit)-테스트에 동일한 개념이 적용되는데, 예를 들어, 히트-테스트는 전-변환 또는 후-변환의 변형 좌표 공간에서 시작될 수 있으며, 히트-테스트의 결과는 전-변환 또는 후-변환 좌표 공간에서 존재할 수 있다.
Clip 속성은 비주얼의 클립핑 영역을 획득 및 설정한다. 임의의 기하학(기하학적 클래스는 이하에서 도 12를 참조로 기술됨)은 클립핑 영역으로서 사용될 수 있으며, 클립핑 영역은 후-변환 좌표 공간에서 적용된다. 일 실시예에서, 클립핑 영역을 위해 설정되는 디폴트는 널(null), 즉, (-∞, -∞)으로부터 (+∞, +∞)으로의 무한대의 대형 클립핑 직사각형으로 인식될 수 있는 클립핑은 없다.
Opacity 속성은 비주얼의 불투명값을 획득/설정하며, 그 결과 비주얼의 콘텐츠는 불투명값 및 선택된 혼합(blending) 모드에 기초한 드로잉 표면상에서 혼합된다. 혼합 모드(BlendMode) 속성은 사용된 혼합 모드를 설정(또는 획득)하기 위해 사용될 수 있다. 예를 들어, 상기 모드로서 선형 알파가 혼합 설정되어, 불투명(알파) 값은 0.0 내지 1.0 사이에서 설정될 수 있다(예를 들어, 컬러 = 알파 * 전경 컬러 + (1.0 - 알파) * 배경 컬러). 특수 효과 속성 등의 다른 서비스는 비주얼, 예를 들어, 블러(blur), 단색 등에 포함될 수 있다.
다양한 서비스(변환, 불투명 및 클립을 포함)는 드로잉 컨텍스트상에서 푸시(push) 및 팝(pop)될 수 있으며, 푸시/팝 동작은 팝 호출이 푸시 호출과 매칭되는 한, 네스트(nest)될 수 있다. 예를 들어, PushTransform(...); PushOpacity(...); PopTransform(...)은 규격에 맞지 않는데, 이는 PopTransform 호출 이전에 PopOpacity가 호출될 필요가 있기 때문이다.
PushTransform 방법은 변환을 푸시한다. 후속하는 드로잉 동작은 푸시된 변형에 대하여 수행된다. PopTransform은 매칭 PushTransform 호출에 의해 푸시된 변형을 팝한다:
void PushTransform(Transform transform);
void PushTransform(Matrix matrix);
void PopTransform( );.
유사하게, PushOpacity 방법은 불투명값을 푸시한다. 후속하는 드로잉 동작은 특정 불투명값을 갖는 임시 표면상에서 수행된 후에 장면 내부에서 합성된다. PopOpacity는 매칭 PushOpacity 호출에 의해 푸시된 불투명값을 팝한다:
void PushOpacity(float opacity);
void PushOpacity(NumberAnimationBase opacity);
void PopOpacity( );.
PushClip 방법은 클립핑 기하학을 푸시한다. 후속하는 드로잉 동작은 기하학에 대해 클립핑된다. 클립핑은 후-변환 공간에 적용된다. PopClip은 매칭 PushClip 호출에 의해 푸시된 클립핑 영역을 팝한다:
void PushClip(Geometry clip);
void PopClip( );.
팝 동작이 푸시 및 매칭되는 한, 푸시 동작은 임의로 네스팅될 수 있다. 예를 들어, 다음은 유효하다.
히트-테스트는 후-변환 좌표 공간에서 수행되어, 예를 들어, 펜 또는 마우스 클릭이 검출되는 경우, 히트된 각각의 히트-테스트 가능한 비주얼의 아이덴티티를 리턴한다. 인터페이스의 대안적 버전은 히트-테스트가 시작되는 비주얼에 관련된 전-변환 좌표 공간에서 히트-테스트가 시작되는 것을 가능하게 할 수 있다. 히트되는 비주얼은 우측-좌측 깊이 우선 순서(right-to-left, depth-first)로 리턴된다. 히트-테스트는 비주얼이 히트-테스트 가능한지(디폴트는 참)를 결정하는 HitTestable 및 비주얼이 히트되는 경우에 히트-테스트가 정지하는지, 즉, 비주얼이 히트되고 비주얼의 HitTestFinal 속성이 참이면 히트-테스트가 중지되어 이 포인트까지 수집된 결과를 리턴하는지(디폴트는 거짓)를 결정하는 HitTestFinal을 포함하는 다양한 플래그로 제어될 수 있다. 다른 플래그는 히트-테스트가 비주얼상에서 수행되는 경우에 (디폴트는 거짓) 비주얼의 차일드가 고려되어야 하는지를 결정하는 HitTestIgnoreChildren이다.
ProxyVisual은 장면 그래프에 한 번 이상 부가될 수 있는 비주얼이다. ProxyVisual에 의해 참조되는 임의의 비주얼이 루트로부터 다수의 경로에 의해 도달될 수 있기 때문에, 판독 서비스(TransformToDescendant, TransformFromDescendant 및 HitTest)는 ProxyVisual을 통해 수행되지 않는다. 필수적으로, 임의의 비주얼로부터 비주얼 트리의 루트까지 하나의 기준(canonical) 경로가 존재하고 그 경로는 임의의 ProxyVisual을 포함하지 않는다.
도 5에 도시된 바와 같이, 다양한 타입의 비주얼은 ContainVisual(501), DrawingVisual(502), ValidationVisual(503), SurfaceVisual(504) 및 HwndVisual(505)를 포함하는 오브젝트 모델로 정의된다. 이하의 표는 DrawingVisual의 예시적 방법을 설명한다.
DrawingVisual은 그래픽 콘텐츠(예를 들어, 라인, 텍스트, 이미지 등)을 위한 컨테이너가다. DrawingVisual에 비주얼을 부가하는 것이 가능하지만, 일부 실시예에서는 이것이 허용되지 않음을 알아야 한다. DrawingVisual(502)은 이하 기술되는 바와 같이, DrawingVisual이 예를 들어, 다른 비주얼 및 드로잉 프리미티브로 파퓰레이트하는 데 사용될 수 있는 IDrawingContext를 리턴하는 Open 방법을 포함한다. 일 실시예에서, 마찬가지로 이하 기술되는 여러 가지 이유로, DrawingVisual은 그 드로잉 컨텍스트를 파퓰레이트 하기 위해 단지 한 번만 개방될 수 있다. 즉, 이러한 DrawingVisual은 변경되지 않는다. DrawingVisual이 파퓰레이트된 후에, DrawingVisual은 Close 방법을 사용하여 예를 들어, 드로잉 컨텍스트상에서 폐쇄된다. Open 호출이 비주얼의 임의의 콘텐츠(차일드)를 제거(clear)할 수 있지만, 하나의 대안적 실시예에서, 이러한 비주얼에 부가되는 방식으로 현재의비주얼을 개방하는, Append 방법이 제공된다는 것이 인식되어야 한다. 즉, OpenForAppend 호출은 DrawingVisual의 현재의 콘텐츠가 개방시에 제거되지 않는다는 것을 제외하고는 Open과 동일하게 동작한다.
다음은 드로잉 컨텍스트가 비주얼을 파퓰레이트하는데 사용되는 방법의 예이다.
일반적으로, ValidationVisual(503)은, 프로그램 코드가 그것을 파퓰레이트하기를 원할 때가 아니라 시스템이 채워질 것을 요구하는 경우에 ValidationVisual이 파퓰레이트되는 것을 제외하고는, 개념적으로 DrawingVisual과 유사하다. 예를들어, 미국 특허 출원 No. 10/185,775에서 개시된 바와 같이, 상위 레벨의 합성 및 애니메이션 엔진(214)(도 2)은, 장면 그래프의 일부가 눈에 보이지 않을 때와 같이, 자원이 요구되는 경우에, 장면 그래프 데이터를 무효화할 수 있다. 예를 들어, 일부분이 디스플레이 스크롤 오프되는 경우, 클립핑 등이 된다. 무효화된 장면 그래프 데이터가 추후에 요구되는 경우, 호출된 프로그램 코드(202)는 장면 그래프의 무효화 부분을 리드로잉(유효화)하도록 회수될 것이다. 따라서, 통상적인 하나의 사용 시나리오는 프로그램 코드가 ValidationVisual을 서브클래스하고 OnValidate 방법을 무효로 하는(override) 것이다. 시스템이 OnValidate 방법을 호출하는 경우, 드로잉 컨텍스트는 통과되고, 드로잉 컨텍스트를 사용하는 프로그램은 ValidationVisual을 리파퓰레이트(repopulate)한다.
이하의 예는 단순한 ValidationVisual을 수행하는 하나의 방법, 예를 들어, 특정 컬러로 라인을 드로잉하는 방법을 나타낸다. 라인 컬러는 SetColor를 호출함으로써 변경될 수 있다. ValidationVisual를 갱신하기 위하여, SetColor 호출은 그래픽 서브-시스템이 ValidationVisual을 다시 유효화하도록 무효화된다:
이 예는 ValidationVisual의 사용법을 나타낸다:
도 4는 ContainerVisual 및 DrawingVisual이 장면 그래프에 관련되고 드로잉 프리미티브의 형태로(예를 들어, 대응 드로잉 컨텍스트에서) 해당 데이터를 포함하는 예시적 장면 그래프(400)를 나타낸다. ContainerVisual은 Visual을 위한 컨테이너가고, ContainerVisual은 서로에 대해 네스트될 수 있다. ContainerVisual의 차일드는 VisualContainer의 Children 속성으로부터 리턴된 VisualCollection으로 조작될 수 있다. VisualCollection에서 Visual의 순서는 Visual이 렌더링되는, 즉 Visual이 뒤에서부터 앞으로, 최하위 인덱스로부터 최상위 인덱스로 렌더링되는 순서로 결정된다. 예를 들어, 컨테이너 비주얼 하에서 계층적으로 직사각형의 적색, 녹색 및 청색을 나타내는 3개의 드로잉 비주얼을 갖는 적절한 파라미터에 대하여, 다음의 코드는 후방부의 적색 직사각형, 중간부의 녹색 직사각형 및 전반부의 청색 직사각형 등의 3개의 직사각형이 드로잉되는 결과가 초래될 것이다(우측 하부로 이동(translate)됨).
도 5에 도시된 바와 같이, 다른 타입의 비주얼 오브젝트는 SurfaceVisual(504)이다. 일반적으로, 도 3에 도시된 바와 같이, SurfaceVisual 오브젝트(315)는 프로그램 코드(202)(도 2)가 액세스될 수 있는 인-메모리 표면(비트맵)(322)을 기준으로 한다. 클라이언트 프로그램 코드(202)는 자신의 표면 메모리를 공급하거나 메모리가 표면 오브젝트에 의해 할당되도록 요청할 수 있다.
프로그램 코드(202)는 SurfaceVisual을 개방하여 드로잉 컨텍스트(323)를 얻는 옵션을 가지며, 그 중에서 프로그램 코드(202)는 화소 데이터(324) 등을 기록하고 표면상에 그 화소를 직접 배치할 수 있다. 이것은 표면 오브젝트(322), 드로잉 컨텍스트(323)(그것의 임시 특성을 나타내기 위해 점선 박스로 도시함) 및 화소 데이터(324) 사이에서 점선으로 도 3에서 도시된다.
프로그램 코드(202)는 또한 표면 비주얼 관리자(330)를 생성하고 비주얼 서브그래프(332)를 SurfaceVisual(315)과 관련시키는 옵션을 갖는다. 이 옵션은 도 3에서 표면 오브젝트(322) 및 표면 비주얼 관리자(330) 사이에서 점선으로 표시된다. 도 3에서 도시된 바와 같이, 비주얼 서브그래프(332)는 또한 다른 표면 비주얼을 네스트할 수 있다는 것이 인식되어야 한다. 표면 비주얼 관리자(330)(도 6의세트(620)에서 다른 오브젝트의 타입으로서도 도시됨)는 비주얼 서브그래프(332)를 배회(walk)하여 SurfaceVisual 비트맵(322)을 갱신한다. 아울러, 이러한 배회는 디스패쳐(308)에 의해 스케쥴되며, 효율성을 위하여 이러한 비트맵(322)이 갱신되는 빈도를 제어하도록 억제(throttle)될 수 있다. 표면 비주얼 관리자(330)는 비주얼 서브그래프(322)를 매번 및/또는 최상위 레벨의 비주얼 관리자(302)가 장면 그래프의 나머지를 배회하는 것과 동일한 레이트로 배회할 필요는 없다.
표면에 대하여, 도 9a-9c를 참조로 추가로 기술되는 바와 같이, 일반적으로 본 발명의 그래픽 모델은 벡터의 표면에 비주얼 세트를 합성하고, 벡터 및 비트맵 프리미티브를 표면에 즉시-모드로 렌더링하고, 데스크탑 또는 다른 표면상에 표면을 합성하고, 표면 리스트 내의 표면이 합성 또는 드로잉하는데 사용되는 것을 제어하는 것을 허용한다. 표면 리스트는 비주얼 또는 그래픽 드로잉, 또는 둘다의 합성을 기억하는데 사용되는 물리적(시스템 또는 비디오) 메모리의 하나 이상의 표면(즉, 프레임/버퍼)의 컬렉션으로서 정의된다. 표면 리스트의 표면 중 하나는 드로잉 및/또는 합성이 수행되는 현재 후방 버퍼로서 설정될 수 있으며, 표면 리스트의 표면 중 하나는 다른 렌더링 타겟에 합성되는 데에 사용되는 현재 제1 또는 전방 버퍼로서 설정된다.
표면은 다수의 방법으로 사용될 수 있다. 예를 들어, 도 9a는 표면에 합성하는 것을 나타낸다. 도 9a에서, 표면 비주얼 관리자 오브젝트(900)는 비주얼 트리(904)에 대한 렌더링 타겟으로서 표면 리스트(902)를 접속한다. 각각의 합성 주기동안, 비주얼은 표면 리스트에 대한 활성 후방 버퍼로서 일반적으로 제공되는 표면 리스트의 표면으로 합성된다. 합성되는 표면은 시나리오를 합성하는 인-프로세스(in-process)에 대한 클라이언트/상위 레벨 엔진(214; 도 2)이 소유하는 표면, 클라이언트가 비트를 필요로 하지 않지만 하위 레벨 합성 엔진(218)이 또다른 렌더링 타겟에 표면을 합성하기 위하여 필요로 하는 시나리오에 대하여 하위 레벨 합성 엔진(218)이 소유하는 표면, 또는 클라이언트가 표면 비트에 액세스할 필요가 있지만 하위 레벨 합성 엔진(218)이 다른 합성 작업에 대한 표면을 필요로 하는 시나리오에 대한 크로스-프로세스(cross-process) 표면을 포함할 수 있다.
합성은 비주얼 관리자에 부가된 타이밍 서비스에 의해 제어된다. 타이밍 서비스의 일례는 이하의 예에서 사용될 수 있는 수동 모드이다.
표면을 사용하는 또다른 방법은 컨텍스트를 통한 표면에 대한 즉시 모드 렌더링이다. 표면 리스트를 비주얼(표면 비주얼)에 부가하는 것은, 현재 표면 리스트에 대한 액티브 후방 버퍼로서 기능하는 표면 리스트의 표면에 대한 렌더링을 가능하게 한다. 이 렌더링은 상술한 바와 같이 표면 비주얼로부터 드로잉 컨텍스트를 얻고 그 컨텍스트에 대한 명령을 실행함으로써 행해진다. 드로잉 컨텍스트를 얻는 것은 표면을 잠궈(lock) 다른 합성 동작이 수행될 수 없도록 하는 것이다. 각각의 드로잉 명령은 즉시 실행되고, 벡터 및 다른 표면은 표면상에 드로잉(혼합)될 수 있다. 그러나, 다른 비주얼은 표면상에 드로잉될 수 없지만, 대신해서 상술한 바와 같이 비주얼 관리자로 관련시킴으로써 표면에 합성될 수 있다 (예를 들어, 도 9a).
표면에 대한 또다른 사용은 또다른 렌더링 타겟에 표면을 합성하는 경우이다. 이 때문에, 표면 리스트가 표면 비주얼에 부착되면, 표면은 비주얼 트리의 노드로서 부착될 수 있고, 일반적으로 첫번째 또는 전방 버퍼로서 제공되는 표면 리스트의 표면이 다른 표면 또는 데스크탑에 합성될 수 있다. 이것은 도 9b에 도시되어 있으며, 그 예는 다음과 같다.
표면으로/으로부터의 라이브 합성(live composition)은 도 9c에 도시되며,상술한 능력은 결합되어 표면 리스트의 후방 버퍼 표면으로의 합성 및 표면 리스트의 전방 버퍼 표면으로부터(예를 들어, 데스크탑으로)의 합성이 동시에 수행된다. 티어링(tearing)으로서 공지된 바람직하지 않은 비디오 효과를 제거하기 위하여 표면 리스트는 적어도 2개의 표면, 전방 및 후방 버퍼 표면을 가져야 한다. 도 9c에서 사용된 표면은 하위 레벨 엔진(218)에 의해 소유될 수 있고, 또는 하위 레벨 엔진(218)의 합성이 더 잘 수행되도록 하는 크로스프로세스 표면이다.
표면은 이하의 작성예에서와 같이 독립 오브젝트로서 작성된다.
일단 작성되면, 표면 및/또는 표면 리스트가 표면 비주얼 오브젝트 또는 비주얼 관리자 오브젝트에 부착될 수 있다.
또한, 표면은 디코더로부터 데이터를 얻을 수 있고, 및/또는 그 데이터를 특정 파일 포맷으로 기입하기 위한 인코더로 전송할 수 있다. 표면은 또한 효과 인터페이스로/로부터 데이터를 수신/전송할 수 있다. 표면은 모든 셋트의 지지 표면 포맷 타입으로부터 임의의 화소 포맷에 대하여 작성될 수 있다. 그러나, 특정 화소 포맷에 몇가지 조정이 수행될 수 있다. 예를 들어, 특정 화소 포맷이 화소당 32비트 미만이면, 포맷은 화소당 32비트로 진행된다. 비트가 원래의 포맷의 표면으로부터 요구될 때마다, 표면은 포맷 변환 필터를 사용하여 요구된 화소 포맷의 버퍼로 복제될 것이다.
도 5로 되돌아가서, 또다른 비주얼이 장면 그래프에 Win32 차일드 HWnd를 배치하는 HwndVisual(505)이다. 특히, 레가시(legacy) 프로그램은 이전의 그래픽 기술에 기초하여 차일드 HWnd (등)으로 드로잉하는 WM_PAINT 방법 (등)을 통해 동작할 것이다. 새로운 그래픽 처리 모델에서 이러한 프로그램을 지지하기 위하여, HwndVisual은, 도 10a에 도시된 바와 같이, Hwnd가 장면 그래프에 포함되도록 하고 페어런트 비주얼(parent visual)은 이동하여 재배치된다. 그러나, 기존의 Hwnd의 제한 결과로서, 렌더링될때, 차일드 Hwnd는 다른 윈도우의 상부에만 있을 수 있으며, 상술한 다른 비주얼처럼 회전되거나 스케일링될 수 없다. 도 10b에 도시된 바와 같이, 몇몇 클립핑이 가능하며, 여기서 파선은 HWnd가 표시되는 직사각형이 그 페어런트 비주얼에 대하여 상대적으로 이동하는 동안 클립핑되는 것을 나타낸다.
다른 타입의 비주얼(506)이 또한 실행될 수 있으며, 현재의 오브젝트 모델은 다른 비주얼이 개발되도록 확장될 수 있다. 예를 들어, 도 11에 도시된 바와 같이, 계층화된 비주얼(1100)은 애플리케이션 개발자가 다중 데이터 스트림을 통해 비주얼의 정보를 개별적으로 제어하도록 하고, 단일 데이터 스트림을 갖는 비주얼에 대하여 미세 입도(granularity)의 제어를 제공한다. 유사한 입도의 제어는 단일 페어런트 비주얼하의 (예를 들어 3개의) 개별 차일드 비주얼을 가짐으로써 달성될 수 있지만, 이것은 단일 계층 비주얼을 갖는 작업보다 더 복잡한 다중 비주얼을 갖는 프로그램 코드 작업이 다중층에 대하여 색인을 다는 것을 요구한다.
예를 들어, 도 11에서, 배경 데이터, 컨텐츠 데이터, 경계 데이터는 단일 계층 비주얼에 포함되지만, 계층값, 예를 들어, 0, 1, 2에 의해 색인을 달아 서로 각각 분리된다. 표시를 위한 암시된 Z 순서를 정의하는 계층 순서(예를 들어, 도시된 바와 같이 왼쪽으로부터 오른쪽으로)를 갖는 계층이 삽입(어느 한쪽끝에 결합되는 것을 포함)되고/되거나 삭제될 수 있다. 보안을 위하여, 계층화된 비주얼 내의 차일드 컨텐츠와 다른 데이터는 열거될 수 없다.
다른 타입의 비주얼은 컨테이너 비주얼을 포함하고, 그 컨텐츠가 비트맵으로 드로잉되는 차일드 Hwnd 비주얼을 재지향시키고(redirect), 표면 비주얼에 결합시킨다. 3차원 비주얼은 2차원 및 3차원 세계사이의 접속을 가능하게 하고, 예를 들어, 3차원 세계로의 뷰(view)를 갖는 2차원 비주얼을 통해 카메라와 같은 뷰(camera-like view)가 가능하다.
많은 자원 오브젝트는, 일단 생성되면 불변한다. 즉, 자원 오브젝트는 일단 생성되면 연속하는 유출의 간략화, 다른 것에 의한 변조 방지, 및 엘리먼트와 API 간의 상호 작용 간략화를 포함하는 다양한 이유에 대해서 변경될 수 없다. 이것은 일반적으로 시스템을 간략화시킨다. 그러나, 이러한 오브젝트가 변하는 시스템을 이용하는 것도 가능하지만, 예를 들어, 의존 그래프를 관리할 필요가 있다는 점에 유의한다. 예를 들어, 이러한 오브젝트가 변하는 시스템을 가질 수 있지만, 프로그램 코드가 비주얼에 설정된 클립을 변경시키면, 비주얼은 다시 렌더링될 필요가 있고, 따라서, 예를 들어 새로운 클립이 비주얼에 할당되면, 통지/등록 메카니즘이 필요하고, 비주얼은 그 자체를 통지(예를 들어, 클립 변경 통지)를 위한 클립으로등록한다. 따라서, 일 구현에 있어서, 간략화하기 위하여, 자원 오브젝트는 불변이다.
이들 자원 오브젝트는 이하에서 설명하는 바와 같이 오브젝트를 생성하기 위한 간단하고 일반적인 방법인 작성자로 정의될 수도 있고, 컴패니언 빌더 오브젝트(companion builder object)를 사용하여 정의될 수도 있다. 예를 들어, SolidColorBrush(브러쉬 오브젝트는 이하에 설명됨)를 생성하기 위하여, 작성자가 사용될 수 있다.
Brush MyBrush = new SolidColorBrush(Colors.Red);
사용자는 또한 한 셋트의 미리 정의된 컬러를 얻기 위하여 브러쉬 클래스에 정적 부재를 사용할 수 있다.
불변 오브젝트는 변화할 수 없기 때문에, 오브젝트를 효과적으로 변화시키기 위하여 사용자는 새로운 오브젝트를 생성하고 기존의 것을 그 새로운 오브젝트로 대체할 필요가 있다. 이 때문에, 시스템의 많은 자원 오브젝트는, 가변하는 컴패니언 클래스인 빌더 클래스를 갖는 불변 오브젝트가 생성되는 빌더 패턴을 이용할 수 있다. 사용자는 불변 오브젝트를 생성하며 빌더에 설정된 파라미터를 반영하고, 그 오브젝트에 대한 새로운 빌더를 생성하고, 불변 오브젝트로부터 새로운 빌더를 초기화시킨다. 그후, 사용자는 필요에 따라 빌더를 변경한다. 일단 수행되면, 사용자는 빌더를 변경하고 재사용하여 또다른 불변 오브젝트를 생성함으로써 새로운 오브젝트를 작성할 수 있다. 설정된 특성을 갖는 불변 오브젝트가 바람직하고, 불변 오브젝트는 변경될 수 없지만, 특성 변경에 의해서 대체될 수 있다.
그러므로, 상술한 바와 같이 SolidColorBrush를 생성하기 위하여 작성자를 사용하는 대신에, SolidColorBrushBuilder가 사용될 수 있다.
SolidColorBrushBuilder MyBuilder = new
SolidColorBrushBuilder();
MyBuilder.Color = Colors.Red;
Brush MyBrush = MyBuilder.ToBrush();
정적인 값을 갖는 대부분의 오브젝트는 또한 애니메이션 오브젝트를 가질 수 있다. 예를 들어, DrawingContext에서, 원의 중심에 대하여 PointAnimationBase를 갖는 DrawCircle에 대한 철회가 있다. 이 방법에서, 사용자는 프리미티브 레벨에서 풍부한 애니메이션 정보를 지정할 수 있다. 자원 오브젝트에서, 베이스값에 더하여 애니메이션 컬렉션이 존재한다. 이들은 합성되어, 사용자가 상기의 예를 애니메이팅하기를 원하면, 브러쉬가 작성되기 전에 사용자가 다음의 예를 지정할 수 있다.
MyBuilder.ColorAnimations.Add(new ColorAnimation(...));
애니메이션 파라미터는 정적이기 때문에, 애니메이션 파라미터를 갖는 오브젝트는 불변이다. 그러나, 장면 그래프가 처리될 때(예를 들어, 횡단) 애니메이션 파라미터의 의미는 시간에 따라 변화하고, 정적이지 않고 애니메이팅된 데이터의 외관을 부여한다.
상술한 바와 같이, Geometry, ImageData, 및 Videodata를 포함하는 다양한 드로잉 프리미티브와 함께 그 드로잉 컨텍스트를 배치시킴으로써 비주얼이 드로잉될 수 있다. 또한, 이 모든 스택을 통해 공유되는 한 세트의 자원과 클래스가 있다. 이것은 Pen, Brushe, Geometry, Transform, 및 Effect를 포함한다. IDrawingContext는 DrawingVisual, ValidationVisual을 배치하는데 사용될 수 있는 한 세트의 드로잉 동작을 나타낸다. IDrawing 컨텍스트로의 베이스 인터페이스인 ISurfaceDrawingContext는 SurfaceVisual을 배치하는데 사용될 수 있다. 즉, 드로잉 컨텍스트는 한 셋트의 드로잉 동작을 나타내고, 각각의 드로잉 동작에 대하여 2개의 방법이 있으며, 그중 하나는 인수로서 정수를 취하고, 또다른 하나는 인수로서 애니메이터를 취한다.
DrawLine 법은 시작점에서 끝점까지 지정된 펜으로 라인을 드로잉한다.
DrawRoundedRectangle 법은 지정된 브러쉬와 펜으로 라운딩된 직사각형을 드로잉한다. 브러쉬와 펜은 중요하지 않다.
DrawGeometry법은 지정된 브러쉬와 펜으로 경로를 드로잉한다. 브러쉬와 펜은 중요하지 않다.
DrawRectangle 법은 지정된 브러쉬와 펜으로 직사각형을 드로잉한다. 브러쉬와 펜은 중요하지 않다.
DrawSurface 법은 표면을 드로잉한다.
Geometry는 스트로크 또는 채움없이 벡터 그래픽 골격을 정의하는 한 타입의 클래스(도 12)이다. 각각의 기하학 오브젝트는 간단한 형상(LineGeometry, EllipseGeometry, RectangleGeometry), 복잡한 단일 형상(PathGeometry), 또는 결합 동작(예를 들어, 유니온, 인터섹션 등)을 갖는 이러한 형상 GeometryList의 리스트이다. 이들 오브젝트는 도 12에 도시된 바와 같이 클래스 계층을 형성한다.
도 13에 도시된 바와 같이, PathGeometry는 Figure 오브젝트의 컬렉션이다. Figure 오브젝트의 각각은 실제적으로 도형의 형상을 정의하는 하나 이상의 세그먼트로 구성된다. Figure는 세그먼트 컬렉션을 정의하는 Geometry의 서브섹션(sub-section)이다. 이 세그먼트 컬렉션은 접속된 일련의 2차원 세그먼트 오브젝트이다. Figure는 정의된 영역을 갖는 밀폐된 형상 또는 곡선을 정의하는 접속된 일련의 세그먼트일 수 있지만, 포위된 영역은 없다.
PathGeometry의 채움 영역은 참(true)으로 설정된 채움 특성을 갖는 포함된 Figure을 취하고 FillMode를 적용하여 포위된 영역을 결정함으로써 정의된다. FillMode 열거는 Geometry내에 포함된 Figure 오브젝트의 교차 영역이 어떻게 결합되어 Geometry의 결과 영역을 형성하는지를 지정한다. "alternate" 룰은 그 위치로부터 무한대로 광선을 임의의 방향으로 개념적으로 드로잉함으로써 포인트가 캔버스내에 있는지를 결정한 후, 형상의 세그먼트가 광선과 교차하는 위치를 조사한다. 0으로부터 카운트를 시작하여 왼쪽으로부터 오른쪽으로 세그먼트가 광선을 교차할때마다 하나씩 더하고, 경로 세그먼트가 오른쪽으로부터 왼쪽으로 광선과 교차할때마다 하나씩 빼고, 교차를 카운팅한 후, 그 결과가 0이면, 포인트는 경로의 밖에 있는 것이다. 그렇지 않으면, 포인트가 경로내에 있는 것이다. "winding" 룰은 캔버스상의 포인트가 내부에 있는지를 결정하고, 임의의 방향으로 그 포인트로부터 무한대로 광선을 개념적으로 드로잉하고 그 광선이 교차하는 주어진 형상으로부터 경로 세그먼트의 수를 카운트함으로써 작업을 수행한다. 그 수가 홀수이면, 포인트가 내부에 있는 것이고, 그렇지 않으면 포인트는 외부에 있는 것이다.
도 14에 도시된 바와 같이, 기하 도형(예를 들어, 직사각형)이 드로잉되면, 이하에 설명되는 바와 같이, 브러쉬 또는 펜이 지정될 수 있다. 또한, 펜 오브젝트는 또한 브러쉬 오브젝트를 갖는다. 브러쉬 오브젝트는 어떻게 평면을 그래픽으로 채울 것인지를 정의하고, 브러쉬 오브젝트의 클래스 계층이 있다. 이것은 도 14에서 직사각형 및 브러쉬 명령 및 파라미터를 포함하는 비주얼이 처리될 때 나타내는 채워진 직사각형(1402)으로 표시된다.
이하에서 설명하는 바와 같이, 몇가지 타입의 브러쉬(그래디언트 및 9개의 그리드)가 크기별로 분류된다. 사용될때, 이들 브러쉬의 크기는 바운딩 박스(bounding box)로부터 얻어진다. 예를 들어, 브러쉬에 대한 GradentUnit/DestinationUnit이 ObjectBoundingBox로 설정되면, 드로잉되는 프리미티브의 바운딩 박스가 사용된다. 그 특성이 UserSpaceOnUse로 설정되면, 좌표 공간이 사용된다.
Pen 오브젝트는 이하의 예에 나타낸 바와 같이 Width, LineJoin, LineCap, MiterLimit, DashArray, 및 DashOffset에 대한 특성에 따라 Brush 상에 유지된다.
상술한 바와 같이, 본 발명의 그래픽 오브젝트 모델은 일반적으로 화소를 갖는 평면을 커버하는 개념을 지향하는 Brush 오브젝트 모델을 포함한다. 브러쉬의 타입의 예는 도 15의 계층에 표시되며, Brush 기본 클래스하에서, SolidColorBrush, GradientBrush, ImageBrush, (Visual을 참조할 수 있는) VisualBrush, 및 NineGridBrush을 포함한다. GradientBrush는 LinearGradient 및 RadialGradient 오브젝트를 포함한다. 상술한 바와 같이, Brush 오브젝트는 불변이다.
다음은 BrushBuilder 클래스의 예이다:
Brush 오브젝트는 브러쉬 오브젝트가 사용될때 좌표계와 어떻게 관련되는지 및/또는 브러쉬 오브젝트가 사용되는 형상의 바운딩 박스와 어떻게 관련되는지를 인식할 수 있다. 일반적으로, 크기 등의 정보는 브러쉬가 드로잉된 오브젝트로부터 추측될 수 있다. 특히, 많은 브러쉬 타입은 몇개의 파라미터를 지정하는 좌표계를 사용한다. 이 좌표계는 브러쉬가 적용되는 형상의 간단한 바운딩 박스에 관련되도록 정의될 수 있거나, 또는 브러쉬가 사용되는 시간에 활성화되는 좌표 공간에 관련될 수 있다. 이들은 각각 ObjectBoundingBox 모드 및 UserSpaceOnUse 모드로 공지되어 있다.
SolidColorBrush 오브젝트는 식별된 평면을 솔리드 컬러로 채운다. 컬러의 알파 성분이 있으면, Brush 기본 클래스의 대응하는 불투명 속성으로 증가하는 방식으로 결합된다. 다음은 SolidColorBrush 오브젝트의 예를 나타낸다.
GradientBrush 오브젝트, 또는 단순히 그래디언트는 그래디언트 채움(gradient fill)을 제공하고, 몇종류의 진행에 따라 컬러를 지정하는 한 세트의 그래디언트 스톱을 지정함으로써 드로잉된다. 그래디언트는 감마 2.2 RGB 컬러 공간에서 그래디언트 스톱간의 선형 보간을 수행함으로써 드로잉된다; 다른 감마 또는 다른 컬러 공간(HSB, CMYK 등)을 통한 보간이 실행될 수 있는 대안이다. 2가지 타입의 그래디언트 오브젝트는 선형 및 원형 그래디언트를 포함한다.
일반적으로, 그래디언트는 그래디언트 스톱의 리스트로 구성된다. 이들 그래디언트 스톱의 각각은 (알파값을 갖는) 컬러와 오프셋을 함유한다. 그래디언트 스톱이 지정되지 않으면, 마치 브러쉬가 전혀 지정되지 않은 것처럼, 브러쉬는 솔리트 투명 블랙으로 드로잉된다. 하나의 그래디언 스톱만이 지정되면, 브러쉬는 그 지정된 하나의 컬러로 솔리드 컬러로서 드로잉된다. 다른 자원 클래스처럼, 그래디언트 스톱 클래스(이하의 표의 예)는 불변이다.
또한, 다음의 예에서처럼, 컬렉션 클래스가 있다.
아래의 표에 나타낸 바와 같이, GradientSpreadMethod는 그래디언트가 지정된 벡터 또는 공간의 외부에 어떻게 드로잉되어야 하는지를 지정한다. 에지 컬러(첫번째와 마지막)가 잔여의 공간을 채우는데 사용되는 패드, 스톱이 공간을 채우기 위하여 역순으로 반복적으로 재생되는 반사, 및 공간이 채워질때까지 스톱이 순서대로 반복되는 반복을 포함하는 3개의 값이 있다.
도 16은 GradientSpreadMethod의 예를 나타낸다. 각각의 형상은 백색으로부터 회색으로 진행하는 선형 그래디언트를 갖는다. 솔리드 라인은 그래디언트 벡터를 나타낸다.
LinearGradient는 벡터에 따라 선형 그래디언트 브러쉬를 지정한다. 각각의스톱은 그 벡터에 따라 컬러를 지정한다. 일례가 이하의 표에 표시된다.
RadialGradient 는 프로그래밍 모델에서의 선형 그래디언트와 유사하다. 그러나, 선형 그래디언트는 그래디언트 벡터를 정의하기 위한 시작점과 끝점을 갖지만, 원형 그래디언트는 그래디언트 행동을 정의하기 위한 초점과 함께 원을 갖는다. 원은 그래디언트의 끝점을 정의한다. 즉, 1.0에서의 그래디언트 스톱은 원에서의 컬러를 정의한다. 초점은 그래디언트의 중심을 정의한다. 0.0에서의 그래디언트 스톱은 초점에서의 컬러를 정의한다.
도 17은 백색으로부터 회색으로의 원형 그래디언트를 나타낸다. 외부 원은 그래디언트 원을 나타내고, 도트는 초점을 지칭한다. 그래디언트의 이 예는 Pad에 설정된 SpreadMethod를 갖는다.
도 15에 나타낸 또다른 브러쉬 오브젝트는 VisualBrush 오브젝트이다. 개념적으로, VisualBrush는 채움으로서 반복 타일(tile) 방식으로 드로잉된 비주얼을 갖는 방법을 제공한다. 비주얼 페인트 오브젝트는 이하에서 설명되는 바와 같이 마크업 언어를 위한 메카니즘을 제공하여, 자원 레벨에서 API 계층으로 직접 작업한다. 이러한 채움의 예는 도 14에서 직사각형(1422)을 채우는 단일 원형(1420)을지정하는 비주얼 (및 임의의 차일드 비주얼)을 참조하는 비주얼 브러쉬에 의해 표시된다. 그러므로, VisualBrush 오브젝트는 브러쉬가 어떻게 드로잉되는지를 정의하기 위하여 비주얼을 참조할 수 있으며, 비주얼을 위한 다중 사용의 타입을 도입한다. 이 방법에서, 프로그램은 임의의 그래픽 "메타파일(metafile)"을 이용하여 브러쉬 또는 펜을 통해 영역을 채울 수 있다. 이것은 임의의 그래픽을 저장하고 사용하기 위하여 압축된 형태이므로, 그래픽 자원을 제공한다. 다음은 VisualBrush 오브젝트의 일례를 나타낸다.
비주얼 브러쉬의 컨텐츠는 고유(intrinsic) 경계가 없으며, 무한 평면을 효과적으로 기술한다. 이들 컨텐츠는 그들 자체의 좌표 공간에 존재하며, 비주얼 브러쉬에 의해 채워지는 공간은 애플리케이션에서는 국부 좌표 공간이다. 컨텐츠 공간은 ViewBox, ViewPort, Alignment, 및 Stretch 속성에 기초하여 국부 공간에 매핑된다. 뷰박스는 컨텐츠 공간에서 규정되며, 이 사각형은 뷰포트(Origin 및 Size 속성에 의해 규정되는 바와 같이) 직사각형으로 매핑된다.
뷰포트는 이 브러쉬에 대한 기본 타일을 생성하여 컨텐츠가 최종적으로 드로잉되는 위치를 정의한다. DestinationUnit의 값이 UserSpaceOnUse이면, 원점 및 크기 속성이 애플리케이션에서는 국부 공간에 있는 것으로 간주된다. 반면에, DestinationUnit의 값이 ObjectBoundingBox이면, 원점 및 크기는, 브러쉬되는 오브젝트의 바운딩 박스의 상부 좌측 코너가 0,0 이며, 동일 박스의 하부 우측 코너가 1,1 인 좌표 공간에 있는 것으로 간주된다. 예를 들면, 100,100에서 200,200까지 도시되어 채워지는 RectagnleGeometry를 고려하자. 이러한 예에서, DestinationUnit이 UserSpaceOnUse이면, 100,100의 원점과 100,100의 크기가 전체 컨텐츠 영역을 기술한다. DestinationUnit이 ObjectBoundingBox이면, 0,0의 원점과 1,1의 크기는 전체 컨텐츠 영역을 기술한다. 크기가 비어 있으면, 브러쉬는 아무 것도 렌더링하지 않는다.
뷰박스는 컨텐츠 공간에서 규정된다. 이 직사각형은 Alignment 속성과 Stretch 속성에 의해 결정된대로 뷰포트 내 맞도록 변환된다. 스트레치가 None이면, 어떠한 스케일링도 그 컨텐츠에 적용되지 않는다. 스트레치가 Fill이면, 뷰박스는 X와 Y 모두 독립적으로 스케일되어 뷰포트와 동일한 크기가 된다. 스트레치가 Uniform 또는 UniformToFill이면, 논리는 유사하지만 X와 Y차원이 균일하게 스케일링되어 컨텐츠의 종횡비가 유지된다. 스트레치가 Uniform이면, 뷰박스는 뷰포트의 크기와 동일하게 보다 제한된 차원을 갖도록 스케일된다. 스트레치가UniformToFill이면, 뷰박스는 뷰포트의 크기와 동일하게 보다 적게 제한되는 차원을 갖도록 스케일된다. 즉, Uniform과 UniformToFill 모두 종횡비를 유지하지만, Uniform은 전체 뷰박스가 뷰포트 내부에 있음을 보장하고(뷰박스에 의해 커버되지 않은 뷰포트 부위를 잠재적으로 버림), UniformToFill은 전체 뷰포트가 뷰박스에 의해 채워지는 것을 보장한다(잠재적으로 뷰박스의 일부를 뷰포트 외부에 있게 함). 뷰박스가 비어 있으면, 어떠한 스트레치도 적용되지 않는다. 또한, 정렬은 여전히 행해지며, 이에 의해 "점" 형태의 뷰박스가 위치되는 것에 주목하자.
도 18은 스트레치가 "none"으로 설정되는 경우의 타일(800)을 포함하여, 다양한 스트레치가 설정된 그래픽의 단일 타일(1800)의 표현을 제공한다. 타일(1802)은 스트레치가 "Uniform"으로 설정되는 경우의 표현이고, 타일(1804)은 스트레치가 "UniformToFill"로 설정되는 경우이며, 타일(1806)은 스트레치가 "Fill"로 설정되는 경우이다.
일단 뷰포트가 (DestinationUnit에 기초하여) 결정되고 그 뷰박스의 크기가 (스트레치에 기초하여) 결정되면, 그 뷰박스는 뷰포트 내에 위치될 필요가 있다. 그 뷰박스가 뷰포트와 동일한 크기이면 (스트레치가 Fill이거나 다른 3개의 스트레치 값들 중의 하나로서 발생하는 경우), 뷰박스는 뷰포트와 동일하도록 원점에 위치된다. 그렇지 않으면, HorizontalAlignment와 VerticalAlignment가 고려된다. 이들 속성에 기초하여, 뷰박스는 X와 Y차원으로 정렬된다. HorizontalAlignment가 좌측이면, 뷰박스의 좌측 에지는 뷰포트의 좌측 에지에 위치될 것이다. 그것이 중앙이면, 뷰박스의 중앙은 뷰포트의 중앙에 위치될 것이며, 우측이면, 우측 에지들이 만날 것이다. 그 프로세스는 Y차원에 대하여 반복된다.
뷰박스가 (0,0,0,0)이면, 비설정으로 간주되고, 그에 따라 ContentUnit이 고려된다. ContentUnit이 UserSpaceOnUse이면, 어떠한 스케일링 또는 오프셋도 발생하지 않으며, 컨텐츠는 아무런 변환없이 뷰포트에 드로잉된다. ContentUnit이 ObjectBoudingBox이면, 컨텐츠 원점은 뷰포트 원점에 정렬되어, 그 컨텐츠는 오브젝트의 바운딩 박스의 폭과 높이에 의해 스케일링된다.
비주얼 브러쉬에 의해 공간을 채우는 경우에는, 그 컨텐츠는 상기한 바와 같이 뷰포트로 매칭되고 그 뷰포트에 클립핑된다. 이는 채움을 위한 기본 타일을 형성하며, 공간의 여백은 브러쉬의 TileMode에 기초하여 채워진다. 최종적으로, 설정된 경우, 브러쉬의 변환이 적용된다 -이것은 결국 다른 매핑, 스케일링, 오프셋 등이 모두 다 행해지고 난 후에 발생한다.
TileMode 나열되는 공간이 브러쉬에 의해 채워질지의 여부 그리고 어떻게 채워지는지를 설명하는 데에 이용된다. 타일될 수 있는 브러쉬는 타일 사각형을 정의하며, 이 타일은 채워진 공간 내부에 베이스 위치를 가진다. 나머지 공간은 TileMode 값에 기초하여 채워진다. 도 19는 "None"(1900), "Tile"(1902), "FlipX"(1904), "FlipY"(1906) 및 "FlipXY"(1908)를 포함하는 다양한 TileMode 설정을 갖는 예시적인 그래픽 표현을 제공한다. 다양한 실시예의 그래픽에서의 상부 최좌측 타일은 기본 타일을 구비한다.
도 20은 이 브러쉬에 대한 화소를 생성하는 프로세스를 나타낸다. 도 20에 도시되는 논리는 단지 그 논리를 구현하는 가능한 하나의 방법이며, 보다 효과적인방식을 포함하여 다른 방식들도 가능하다. 예를 들면, 타일이 드로잉되고 캐싱되는 것에 의해 매 반복시마가 컨텐츠가 드로잉되지 않는 것과 같이, 효율적인 데이터 처리 방식들이 있을 것이다. 그러나, 도 20은 간단한 설명을 제공한다.
통상적으로, 패턴의 컨텐츠가 드로잉될 때마다, 새로운 좌표 시스템이 생성된다. 각각의 반복에 대한 원점과 오프셋은 DestinationUnit와 Transform 속성에 의해 필터링되어 Origin 및 Size 속성에 의해 규정된다.
좌표 프레임은 DestinationUnit 속성에 기초하여 설정된다. 이를 위해서는, 단계(2000)에서, DestinationUnit 속성이 UserSpaceOnUse이면, 브러쉬가 이용되는 때의 좌표 프레임은 단계(2002)에 의해 개시 좌표 프레임이다. 단계(2004)에서, 속성이 ObjectBoudingBox이면, 단계(2004)에서 나타낸 바와 같이 이 브러쉬가 적용되는 기하학의 바운딩 박스가 이용되어 바운딩 박스의 상부 좌측 코너가 (0,0)에 매핑하고 바운딩 박스의 하부 좌측 코너가 (1,1)에 매핑되도록 새로운 좌표 프레임을 설정한다. 어떠한 경우이든, 단계(2006)에서는, Transform 속성이 그리드를 실질적으로 정의하는 이러한 좌표 프레임에 적용된다.
도 21은 비주얼 브러쉬에서 타일로서 정의되는 비주얼 브러쉬 그리드를 나타낸다. 제1 원은 단순 그리드이며, 제2 원은 x 방향으로 47만큼 스큐된 Transform을 가진다.
단계(2008)에서, 비주얼은, 도 22에 나타난 바와 같이, 그리드의 각각의 셀로 드로잉되고, 여기에서 비주얼은 적합한 드로잉한다. 단계(2010)에서, 뷰박스가 규정되며, 비주얼은 단계(2012)에 의해 ViewBox, Stretch, HorizontalAlign 및VerticalAlign 속성들에 의해 규정된 바와 같이 그리드 셀에 맞춰진다. DestinationUnit과 Transform 속성은 비주얼이 그리드 박스에 라인업(line-up)하도록 정확한 변환형을 적용하는데 이용된다.
아무런 뷰박스도 규정되지 않으면, 단계(2014)에서 컨텐츠를 드로잉하기 위해서 새로운 좌표 시스템이 설정된다.
좌표 프레임은 그 원점이 특정 그리드 셀이 도시되는 원점이 되도록 설정된다.
단계(2018)에서는, Size 속성에 기초하여 타일이 셀 경계 외부를 드로잉하지 않도록 클립이 적용된다. 원점과 크기는 DestinationUnit 속성에 기초하여 적절하게 변환된다.
그 후, 좌표 시스템이 SourceUnit 속성에 기초하여 변환된다. 이를 위해서, 단계(2020)에서는, SourceUnit 속성이 ObjectBoundbox이며, 적절한 스케일링 변환이 단계(2026)에서 적용되지만, UserspaceOnUse이면, 어떠한 새로운 변환도 적용되지 않는다. 단계(2024)에서 Transform 속성이 적용되며, 단계(206)에서는 그 컨텐츠가 드로잉된다.
크기의 어느 부분이 0이면, 아무것도 드로잉되지 않으며, 스트레치가 "None"이면, 뷰박스에 대한 변환은 새로운 좌표 프레임에서의 일단위가 구 좌표 프레임에서의 일단위와 동일하도록 설정된다. 변환은 뷰박스의 정렬 속성과 크기에 기초되는 실질적인 오프셋이 된다. 단계(2010)과 단계(2012)에서 상술한 바와 같이, Stretch 및 Alignment 속성은 규정된 뷰박스가 있는 경우에만 적용된다. 뷰박스는컨텐츠에 대한 새로운 좌표 시스템을 규정하며 스트레치는 이들 컨텐츠를 뷰박스에 어떻게 매핑하는 지를 규정하게 한다. 정렬 옵션은 컨텐츠가 아닌 뷰박스를 정렬한다. 따라서, 예를 들면, 뷰박스가 "0 0 10 10"으로 설정되고 무엇인가가 -10,-10에 드로잉되고 상부 좌측 코너에 정렬된 경우, 그것은 클립핑될 것이다.
도 15를 참조하면, 이미지 브러쉬는 비주얼 브러쉬의 특별한 경우로서 간주될 수 있다. 프로그램이 비주얼을 생성하여 이미지를 그 비주얼에 적용한 후 이를 비주얼 브러쉬에 첨부하더라도, 그렇게 하는 API는 번거로울 것이다. 필요한 컨텐츠 좌표 프레임이 없기 때문에, 뷰박스와 ContentUnit 속성 멤버는 더이상 적용하지 않는다.
NineGridBrush는 이미지가 크기에 기초하여 워핑(warping)되는 것을 제외하면, ImageBrush와 매우 유사하다. 본질적으로, 다른 것들(예를 들면, 경계)과는 달리, NineGridBrush는 이미지 스트레치의 일정 부분인 통상의 스트레치 타입으로 간주될 수 있다. 따라서, ImageBrush 내의 이미지의 크기는 단순 스케일링되며, NineGridBrush는 원하는 크기까지 불균일하게 스케일 업된다. 스케일되지 않은 영역에 대한 단위는 브러쉬가 인가되는 때의 사용자 단위이며, 이는 ContentUnit (만약 NineGridBrush가 존재하면)은 UserUnitOnUse로 설정되는 것을 의미한다. 브러쉬의 변환 속성은 효과적으로 사용될 수 있다. 경계 멤버는 이미지의 에지로 간주됨에 주목하자.
예를 들면, 도 23은 제1 인스턴스(2302)로부터 제2 인스턴스(2304)까지 4개 타입의 영역을 가지며 확대되는 9개의 그리드 이미지를 나타낸다. 도 23에 나타낸 바와 같이, 경계를 동일하게 유지하기 위해서, "a"로 마크된 영역은 수평하게 확장하고, "b"로 마크된 영역은 수직으로 확장하며, "c"로 마크된 영역은 수직과 수평으로 확장하고, "d"로 마크된 영역은 크기가 변하지 않는다.
상술한 바와 같이, 본 발명의 그래픽 오브젝트 모델은 변형 오브젝트 모델을 구비하며, 이는 변형 기본 클래스 하에서, 도 24의 계층에 표현된 타입들의 변형을 포함한다. 변형을 행하는 이들 서로 다른 타입의 컴포넌트들은 TransformList, TranslateTransform, RotateTransform, ScaleTransform, SkewTransform, 및 MatrixTransform 등을 구비한다. 개별 속성은 예를 들면 애니메이트될 수 있으며, 프로그램 개발자는 RotateTransform의 각도 속성을 애니메이트할 수 있다.
2D 계산을 위한 행렬은 3×3 행렬로서 표현된다. 요구되는 변환에 대하여, 3×3 행렬 전체 대신 단지 6개의 값만이 요구된다. 이들은 다음과 같이 지정되고정의된다.
행렬과 점을 승산하면, 점은 새로운 좌표 시스템에서 이전의 좌표 시스템으로 변환된다.
변환은 임의의 레벨로 네스트될 수 있다. 새로운 변환이 가해질 때마다, 현재의 변환 행렬상에 그것을 후-승산하는(post-multiplying) 것과 동일하게 된다.
API 내의 대부분의 장소는 직접 행렬을 취하지 않는 대신, 애니메이션을 지원하는 변환 클래스를 이용한다.
벡터 그래픽에 대한 오브젝트 모델과 마크업 언어
본 발명의 일 양태에 따르면, 사용자 프로그램 및 툴이 API 계층(212)(도 2)의 세부사항에 대한 특정 지식을 요구하지 않고도 장면 그래프 데이터 구조(216)와 상호 작용할 수 있도록 하기 위해, 마크업 언어와 엘리먼트 오브젝트 모델이 제공된다. 통상적으로, 엘리먼트 오브젝트 모델에 의해 벡터 그래픽을 표현하는 기재 포맷(authoring format)에 기초한 단순 마크업과 함께, 교환 포맷을 구성하는 벡터 그래픽 마크업 언어가 제공된다. 이 언어를 통해서, 마크업(예를 들면, HTML 또는 XML 타입의 컨텐츠)이 프로그래밍될 수 있다. 따라서, 장면 그래프를 구축하기 위해서, 마크업이 구문 분석되어 상술한 바와 같은 적절한 비주얼 API 계층으로 번역된다. 이러한 보다 고도의 동작 레벨에서는, 엘리먼트 트리, 속성 시스템 및 프리젠터 시스템이 상당한 정도의 복잡도를 다룰 수 있도록 제공되어 장면 설계자가 복잡한 장면을 설계할 수 있게 한다.
통상적으로, 벡터 그래픽 시스템은 일련의 형상 및 다른 엘리먼트들, 범용 속성시스템과의 통합, 그룹화 및 합성 시스템, 그리고 2층(엘리먼트 레벨과 자원 레벨) 접근을 주로 제공하여, 사용자가 유연성과 성능요구를 매치하는 방식으로 프로그램할 수 있다. 본 발명의 일 양태에 대하여 계속 설명하면, 백터 그래픽을 다루는 엘리먼트 오브젝트 모델은 장면 그래프 오브젝트 모델과 상관한다. 즉, 백터 그래픽 시스템과 비주얼 API 계층은 예를 들면, 엘리먼트 오브젝트 모델 레벨에서 일련의 자원을 공유하고, 브러쉬 오브젝트는 비주얼 API에 드로잉하는 경우에 사용될 수 있으며, 또한, 이는 형상에 대해서는 채움 속성의 타입이다. 따라서, 마크업 언어는 장면 그래프 오브젝트와 상관하는 엘리먼트를 가질 뿐만 아니라, 다수의기본자원(예를 들면, 브러쉬, 변형 등)을 비주얼 API 계층과 공유한다. 또한, 그래픽 시스템은 비주얼 API 계층의 애니메이션 성능을 노출 및 확장하며, 이는 레벨들 간에 대부분 공유된다.
또한, 이하 설명하는 바와 같이, 벡터 그래픽 시스템은 엘리먼트 레벨과 자원 레벨을 포함하는 레벨 또는 서로 다른 프로그램을 프로그래밍할 수 있다. 엘리먼트 레벨에서, 각각의 드로잉 형상은 페이지/스크린 내의 나머지 프로그래밍가능한 엘리먼트들과 동일한 레벨에서의 엘리먼트로서 나타난다. 이는 형상이 프리젠터 시스템, 이벤트, 및 속성과 함께 전체적으로 상호 작용함을 의미한다. 자원 레벨에서, 벡터그래픽 시스템은 종래 그래픽 메타파일과 유사하게 순수한 자원 포맷에서 동작한다. 자원 레벨은 효율적이지만, 중첩 속성, 이벤트 및 정밀(fine-grained) 프로그래밍 가능성을 다소 제한적으로 지원한다. 따라서, 그 장면 설계자는 요구되는 프로그래밍 가능성을 효율적으로 균형잡을 수 있는 능력을 갖는다.
본 발명의 일 양태에 대하여 계속 설명하면, 일 실시예에서, 자원 레벨 마크업이 비주얼 브러쉬로서 표현된다는 점에서 자원 레벨에서의 벡터 그래픽 시스템은 또한 비주얼 API 계층에 상관한다. 자원 마크업이 구문 분석될 때, 비주얼 오브젝트가 생성된다. 비주얼 오브젝트는 형상, 제어 및 동일 엘리먼트 레벨에서의 다른 엘리먼트에 의해 이용될 수 있는 비주얼 브러쉬로 설정된다.
도 25는 엘리먼트 클래스 계층(2500)의 엘리먼트 표현이다. 본 발명의 마크업 언어오브젝트 모델의 클래스는 음영된 박스에 의해 나타내며, 형상 클래스(2502), 이미지 클래스(2504), 비디오 클래스(2506), 캔버스 클래스(2508)를구비한다. 형상 클래스의 엘리먼트는 사각형(2510), 다중선(2512), 다각형(2514), 경로(2516), 선(2518), 및 타원(2520)을 구비한다. 일부 실시예에서는, 도 25의 점선 박스(2522)에 의해 표시되는 바와 같이 원 엘리먼트는 나타내지 않을 수 있지만, 여기서 다양한 실시예의 목적을 위해서, 원 엘리먼트(2522)을 설명하고자 한다. 각 엘리먼트는 채움(속성) 데이터, 스트로크 데이터, 클립핑 데이터, 변형 데이터, 필터 효과 데이터 및 마스크 데이터를 포함하거나 이들에 관련될 수 있다.
이하 설명되는 바와 같이, 형상들은 전승되고 중첩되는 프리젠테이션 속성으로 도시되는 기하학에 대응한다. 그 프리젠테이션 속성은 형상을 드로잉하는 데 필요한 펜과 브러쉬를 구성하는데 사용된다. 일 실시예에서, 형상은 다른 제어엘리먼트과 같이 전체 프리젠터이다. 그러나, 다른 실시예에서는, 캔버스 클래스(2508)는 형상에 대한 컨테이너로서 제공될 수 있으며, 형상은 캔버스 엘리먼트에 있는 경우에만 드로잉될 수 있다. 예를 들면, 형상을 가볍게 하기 위해서, 형상에는 프리젠터가 첨부될 수 없을 것이다. 캔버스 엘리먼트는 이하 상세히 설명하고자 한다.
또한, 이하 설명하는 바와 같이, 이미지 클래스는 형상보다 구체적이며, 예를 들면 복잡할 수 있는 경계 데이터를 포함할 수 있다. 예를 들면, 경계는 상부에 하나의 색으로서 규정되고, 측면에는 다른 색으로 되며, 여러 규정된 두께와 다른 속성 세트들이 가능하다. 텍스트 또는 비디오와 같은 이미지 또는 유사 박스엘리먼트에 대하여 위치, 크기 회전 및 스케일이 설정될 수 있다. 이미지 및 비디오 엘리먼트는 캔버스 엘리먼트의 외부에 존재하여 나타낼 수 있으며, 예를 들면,BoxedElement로부터 전승되어 그 엘리먼트으로부터 배경, 경계, 패딩(padding) 지원을 획득할 수 있다.
비디오 엘리먼트는 표시되는 엘리먼트 내에서 비디오(또는 유사한 멀티미디어)가 재생될 수 있게 한다. 이러한 방식으로, 벡터 그래픽 시스템은 마크업 인터페이스를 텍스트, 2D 그래픽, 3D 그래픽, 애니메이션, 비디오, 및 이미지와 오디오를 포함하는 멀티미디어에 대하여 완전하게 부합하는 API 계층에 제공한다. 이는 하나의 매체에서 작업하는 것을 배운 설계자에게 다른 매체를 애플리케이션과 문서에 용이하게 통합할 수 있게 한다. 벡터 그래픽 시스템은 또한 멀티미디어가 다른 엘리먼트과 동일한 방식으로 동작되게 하고, 설계자가 다른 엘리먼트과 같이 멀티미디어를 이용할 수 있게 하지만 개별 매체타입 각각의 코어 내재적 고유성을 희생시키지는 않는다. 예를 들면, 설계자는 서로 다른 매체타입에 걸쳐서 회전, 스케일링, 애니메이팅, 그림, 합성, 및 다른 효과에 대한 동일한 명명법을 이용함으로써, 매우 많은 애플리케이션을 생성할 수 있을 뿐만 아니라 매우 유효한 렌더링과 이를 기반으로 구축되는 실시예를 구성할 수 있다.
도 26은 마크업 코드(2602)가 구문 분석기/번역기(2604)에 의해 설명되는 일실시예를 나타낸다. 통상적으로, 구문 분석기/번역기(2604)는 엘리먼트에 엘리먼트 트리/속성 시스템(208)(도 2에도 도시됨)을 추가하며, 이들 엘리먼트에 프리젠터를 첨부한다. 그 후, 프리젠터 시스템(210)은 첨부된 프리젠터로 엘리먼트 트리(210)을 취하여, 데이터를 오브젝트로 번역하고 비주얼 API 계층(212)을 호출한다. 모든 엘리먼트가 번역될 필요는 없으며, 단지 첨부된 프리젠터만이 번역됨에 주목하자.
통상적으로, 엘리먼트는 속성 시스템, 이벤팅 및 레이아웃/프리젠테이션 시스템 내에 관여하는 엘리먼트층 내의 오브젝트이다. 구문 분석기는 태그를 발견하며 이들 태그가 엘리먼트 또는 자원 오브젝트를 정의하는지를 결정한다. 비주얼 브러쉬의 특별한 경우에는, 예를 들면, 이들 태그가 표시되는 신택스에 의존하고, 복합 속성 신택스가 나타나는지에 의존하여, 동일한 태그가 엘리먼트로서 해석되거나 또한 자원 오브젝트로서 해석된다.
본 발명의 일 양태에 따라서, 마크업 언어는 단순 스트링 포맷 또는 복잡한 오브젝트 표현을 포함하는 자원을 기재하는 고유의 방식을 제공한다. 단순 스트링 포맷에서는, 구문 분석기/번역기(2604)는 스트링을 적절한 비주얼 API 오브젝트로 변환하는 타입 변환기(2608)를 사용한다. 예를 들면, 마크업의 다음 라인에서는, Fill 속성값이 타입 변형기(2608)에 의해 브러쉬 오브젝트로 변환될 수 있다.
파라미터의 단순 스트링을 갖는 이러한 태그 기반의 인라인 선의 변환은 브러쉬 오브젝트에서는 명확하며, 장면 설계자가 형상과 그 속성을 장면에 추가하는 간단한 방법을 제공한다.
그러나 Fill 속성이 단일 스트링에 맞추기에는 너무 복잡한 경우가 있다. 이러한 상황에서, 마크업에서 인라인일 수 있는 복합 속성 신택스가 이러한 속성을 설정하는 데에 이용된다. 예를 들면, 다음의 복합 속성 신택스가 여러 그래디언트스탑(gradient stop)(0에서 1 범위)으로 색들을 규정하여, 점진적으로 다소 진해지는 색으로 원을 채운다.
자원 인스턴스는 마크업에서 현재 인라인 뿐만 아니라, 다른 곳에도 위치될 수 있으며 (예를 들면, 원격 네트워크 및 적절하게 다운로드되거나 로컬일 수 있는 파일 또는 마크업), 명칭(예를 들면, 텍스트 명칭, 참조 또는 다른 적합한 식별자)에 의해 참조된다. 이러한 방식으로, 장면 설계자는 복합 속성 신택스에 의해 기술되는 엘리먼트들을 포함하는 장면에 걸쳐서 엘리먼트 트리에서의 엘리먼트를 재사용할 수 있다.
구문 분석기는 필요시 타입 변환기(2608)를 액세스하고 또한 규정된 파라미터를 오브젝트 속성에 매칭함으로써 복합 속성 신택스에서의 마크업을 다루어 장면 설계자에 대한 복잡성을 취급한다. 따라서, 구문 분석기는 오브젝트만을 설정하는 것이 아니라 오브젝트에 대한 속성도 설정한다. 오브젝트는 불변이기 때문에, 구문 분석기는 빌더를 실증하여 오브젝트를 생성함에 주목하자.
동일한 렌더링 모델이 엘리먼트 레벨과 API 레벨 간에 공유되기 때문에, 다수의 오브젝트들은 본질적으로 동일하다. 이는 구문 분석/번역을 매우 효율적이게하며, 또한 서로 다른 타입의 프로그래밍 언어(예를 들면, C#과 같은 언어)가 마크업에서 그 자체의 신택스으로 또는 그 역으로 용이하게 변환될 수 있게 한다. 도 26에 나타낸 바와 같이, 또다른 이러한 프로그래밍 언어(2610)가 엘리먼트 트리(208)에 엘리먼트를 추가하거나 비주얼 API 계층 (212)과 직접 인터페이스할 수 있다.
또한, 도 26에 나타낸 바와 같이, 본 발명의 일 양태에 따르면, 동일한 마크업(2602)이 엘리먼트 레벨과 자원 레벨을 프로그래밍하는 데에 이용될 수 있다. 상술한 바와 같이, 엘리먼트 레벨은 장면 설계자에게 전체 프로그래밍 가능성, 전승(예를 들면, 스타일시트(style-sheet) 유사의 특성)을 제공하는 속성시스템의 사용, 및 이벤팅(예를 들면, 엘리먼트가 사용자 입력 이벤트에 대응하여 그 외관, 위치 등을 변경하는 첨부 코드를 가질 수 있게 함)을 부여한다. 그러나, 본 발명은 또한 장면 설계자가 엘리먼트 트리와 프리젠터 시스템을 실질적으로 단축하여 비주얼 API 계층에 직접 프로그램할 수 있다. 정적 형상, 이미지 등의 많은 타입에서는, 엘리먼트 레벨특성이 요구되지 않으며, 이는 적절한 오브젝트를 출력하는데 보다 효율적이고 경량의 방법을 제공한다. 이를 위해서, 구문 분석기는 "비주얼 브러쉬" 타입의 채움이 존재하는 경우, 자원 레벨 데이터(2612)를 갖는 API 계층(212)를 직접 호출하여 오브젝트를 생성한다. 즉, 도 22에 나타낸 바와 같이, 엘리먼트 레벨 벡터 그래프는 생성되는 엘리먼트에 구문 분석되며, 이는 후에 오브젝트로 번역되는 반면, 자원 레벨벡터 그래프는 구문 분석되어 효과적인 방식으로 직접 저장된다.
예를 들면, 다음의 마크업이 LinearGradient 오브젝트에 대한 오브젝트 모델로부터 직접 유도되어 VisualBrush로 외부 원을 채운다. 그 VisualBrush의 컨텐츠는 내부 마크업에 의해 정의된다. 이 신택스는 여러 브러쉬, 변형 및 애니메이션을 표현하는데 주로 사용된다.
이들 비주얼 블러시가 채워진 오브젝트들은 효율적으로 저장되지만, 자원 레벨 데이터(또는 그에 의해 생성되는 오브젝트)는 도 26에 주로 나타낸 바와 같이 엘리먼트들과 엘리먼트트리(208)의 일부에 의해 참조될 수 있다. 이를 위해서, 이들 비주얼 브러쉬 자원들은 복합 속성신택스에 의해 기재되는 다른 자원과 같이 (예를 들면, 명칭, 참조, 또는 다른 적합한 식별자에 의해) 명명되어 참조된다.
캔버스의 설명에 있어서는 한 대체 실시예에서 전술한 바와 같이 형상은 경량으로 유지될 수 있으며, 따라서 캔버스에 포함되도록 요구될 수 있다. 이 대체 실시예에서 콘텐츠는 렌더링 시에 연관 좌표 시스템을 가진 무한, 장치 비종속 캔버스 상에 렌더링된다. 따라서, 캔버스 요소는 절대 좌표에 따라 콘텐츠를 배치할 수 있다. 캔버스 요소는 선택적으로 뷰포트를 정의할 수 있으며, 클립핑, 변환, 선호 종횡비 및 뷰포트를 페어런트 공간에 맵핑하는 방법을 지정한다. 뷰포트가 정의되지 않은 경우, 캔버스 요소는 드로잉 원시 함수들의 그룹화만을 지정하며,변환, 불투명도 및 다른 복합 속성을 정의할 수 있다.
다음은 샘플 캔버스에 대한 마크업 예이다.
일 실시예에서, 단위 없이 좌표가 지정될 때 이들 단위는 1 인치의 1/96의 "논리 화소들"로 간주되며, 전술한 예에서 라인은 200 화소 길이이다. 좌표 외에 다른 특성으로는 폭, 높이 수평 및 수직 정렬 및 뷰박스(직사각형; 디폴트는 조정이 되지 않는 것을 의미하는 미설정 또는 (0, 0, 0, 0)이며, 스트레치 및 정렬 특성은 무시된다) 등이 있다. 도 18-20을 참조하여 전술한 바와 같이, 다른 특성에는 스트레치가 있는데, 이 스트레치는 미지정시 최초 크기를 유지하거나, 1) 종횡비가 유지되지 않고 콘텐츠가 상/좌/폭/높이에 의해 정의되는 경계를 채우도록 스케일링되는 "채움"을 지정하거나, 2) 화상이 상/좌/폭/높이에 의해 정의되는 경계에 맞을 때까지 크기를 균일하게 스케일링하는 균일(uniform)을 지정하거나, 3) 상/좌/폭/높이에 의해 정의되는 경계를 채우도록 크기를 균일하게 스케일링하고 필요에 따라 클립하는 UniformToFill을 지정할 수 있다.
더 낮은 레벨의 오브젝트 모델과 더 상관되기 위하여, 변환 특성은 요소의 차일드에 대해 새로운 좌표 프레임을 정의하며, 클립 특성은 콘텐츠가 캔버스 상에 드로잉될 수 있는 영역을 제한하는데, 디폴트 클립핑 경로는 바운딩 박스로 정의된다. ZIndex 특성은 패널 내의 중첩 캔버스 요소들에 대한 렌더링 순서를 지정하는데 사용될 수 있다.
뷰박스는 예컨대 뷰포트의 크기 및 원점을 재정의함으로써 콘텐츠에 대해 새로운 좌표 시스템을 지정한다. 스트레치는 이들 콘텐츠가 뷰포트로 맵핑되는 방법을 지정하는 것을 돕는다. 뷰박스 속성의 값은 예컨대 여백 및/또는 콤마로 분리된 4개의 "단위없는" 숫자 <min-x>, <min-y>, <width> 및 <height>의 리스트이고, 직사각형이다. 뷰포트 직사각형은 바운딩 박스로 맵핑되는 사용자 공간에 직사각형을 지정한다. 이것은 scaleX와 scaleY를 삽입하는 것과 동일하게 이루어진다. 스트레치 특성은(옵션이 none이 아닌 경우) 그래픽의 종횡비를 유지하기 위한 추가적인 제어를 제공한다. 특정 효과를 달성하기 위하여 주어진 요소의 차일드에 대해 추가적인 변환이 이루어진다.
전술한 예에서, 각 스트레치 규칙 하에서 상기 마크업 샘플 내의 직사각형의 유효 결과는 다음과 같다:
None - (100, 600)에서 (200, 650)까지
Fill - (100, 100)에서 (900, 700)까지
Uniform - (100, ?)에서 (900, ?)까지 - 새로운 높이는 400이고, HorizontalAlign 및 VerticalAlign에 기초하여 센터링된다.
UniformToFill - (?, 100)에서 (?, 700)까지 -새로운 폭은 1200이고, HorizontalAlign 및 VerticalAlign에 기초하여 다시 센터링된다.
캔버스에 대한 변환이 있는 경우, 기본적으로 (예컨대 트리에서) 뷰박스로의 맵핑 위에 변환이 이루어진다. 이 맵핑은 형상만이 아니라 캔버스 내의 임의의 요소, 예컨대 박스, 텍스트 등을 스트레칭하게 된다는 점에 유의한다. 또한, 뷰박스가 지정되면, 캔버스는 그 콘텐츠에 맞추어지지 않고 특정 크기를 갖는다는 점에도 유의한다. y-width과 y-height도 지정되면, 스트레치/정렬 특성은 뷰박스를 특정 폭 및 높이에 맞추는 데 사용된다.
오브젝트 모델 내의 요소들 각각은 'Clip' 속성이 적용될 수 있다. 일부 요소, 특히 형상에 대해 이것은 공통 언어 실행 시간 특성으로서 직접 노출되지만, 다른 것들(예컨대 대부분의 제어)에 대해서 이 특성은 DynamicProperty를 통해 설정된다.
일반적으로, 클립핑 경로는 도 27에 일반적으로 표시된 바와 같이 콘텐츠가 그려질 수 있는 영역을 제한하는데, 도 27에는 버튼이 클립되지 않은 형태(2702)와 클립핑 경로가 특정된 형태(2704)(점선은 클립핑 경로를 나타냄)로 도시되어 있다. 개념적으로, 현재 활성화된 클립핑 경로에 의해 경계가 정해지는 영역의 외측에 위치하는 드로잉의 어느 부분도 도시되어 있지 않다. 클립핑 경로는 마스크로 간주될 수 있는데, 클립핑 경로 외측의 화소들은 0의 알파 값을 가진 블랙이고, 클립핑 경로 내측의 화소들은 1의 알파 값을 가진 화이트이다(실루엣의 에지를 따른 안티-에일리어싱은 예외일 수 있음).
클립핑 경로는 인라인 또는 자원 섹션에서 더 일반적으로 기하 오브젝트에 의해 정의된다. 클립핑 경로는 아래의 예에 나타난 바와 같이 요소 상의 "클립"특성을 이용하여 이용되거나 참조된다.
클립을 애니메이션화하는 것은 변환을 애니메이션화하는 것과 유사하다:
'기하' 데이타 및 경로 요소 상의 Fill, Stroke 및 StrokeWidth와 같은 렌더링 특성을 지정함으로써 경로가 드로잉된다. 경로에 대한 예시적인 마크업이 다음과 같이 지정된다:
경로 '데이타' 스트링은 기하 형태이다. 그려진 경로를 특정하는 더 상세하고 완전한 방법은 전술한 바와 같이 복합 속성 신택스 통해서이다. 마크업은 (아래 예에서와 같이) 전술한 기하 구축 클래스로 직접 제공된다.
경로 데이타 스트링은 또한 경로 데이타 스트링에 대한 신택스를 설명하기 위한 아래의 기호를 이용하여 설명된다:
* : 0 또는 그 이상
+ : 1 또는 그 이상
? : 0 또는 1
() : 그룹화
| : 올터너티브(alternative)를 분리
이중 인용 부호가 리터럴(literal)을 둘러싼다.
다음은 상기 기호로 설명된 경로 데이타 스트링 정보를 나타낸다(일 실시예에서 요소 레벨에서의 속성 대신에 FillMode가 지정될 수 있다는 점에 유의).
이미지 엘리먼트(도 25)는, 완전한 파일의 컨텐츠가 현재 사용자 좌표 시스템 내에서 주어진 직사각형으로 렌더링되는 것을 표시한다. (이미지 태그에 의해 표시되는) 이미지는 다음의 예시에서와 마찬가지로 "image/wvg"의 MIME 타입을 갖는 파일이거나, PNG 또는 JPEG와 같은 래스터 이미지 파일에 적용될 수 있다.
아래의 테이블은 이미지들에 대한 예시적인 속성들에 대한 정보를 제공한다.
명칭 타입 R/RW 디폴트 값 설명
Top BoxUnit 이미지의 상면의 좌표
Left BoxUnit 이미지의 좌측면의 좌표
Width BoxUnit 이미지의 폭
Height BoxUnit 이미지의 높이
Source ImageData 이미지의 소스
Dpi Float 96 (?) 크기 결정위해 사용할 타겟 DPI
HorizontalAlign enum {Left (?),Center (?),Right (?)} Center
VerticalAlign enum {Top (?),Middle (?),Bottom (?)} Middle
Stretch enum Stretch{None,Fill,Uniform,UniformToFill} None None: 원크기를 보전함.Fill: 종횡비는 보전되지 않으며, 컨텐츠는 tlbh에 의해 형성된 경계를 채우도록 스케일링됨Uniform: 이미지가 tlwh에 의해 형성된 경계에 맞을 때까지 크기를 균일하게 스케일링함.UniformToFill: tlbh에 의해 형성되고 클립핑된 경계를 채울 때까지 크기를 균일하게 스케일링함
ReadyState enum {MetaDataReady,Loading,LoadedLoadError}
LoadCounter Int Read Null ReadyState가 로딩하고 있는 때에 증가하는 카운터
Name String 이미지에 대한 대체 텍스트
위에서 기술한 바와 같이, 형상들은, 전승되고 캐스캐이드된 표현 속성 을 갖고 드로잉된 도형에 대응한다. 아래의 표는 앞서 설명한 기본적인 형상 엘리먼트들(직사각형, 타원, 선, 다중선, 다각형)에 대한 예시적인 형상 속성을 나타낸다. 이러한 기본적인 형상들은 스트로크 속성, 채움 속성을 가질 수 있고, 클립핑 경로로 사용될 수 있으며, 전승 특성을 가질 수 있을 뿐 아니라, 엘리먼트 및 자원 레벨 모두에 적용될 수 있다.
명칭 타입 R/RW 디폴트 값 설명
Fill Brush RW null 직사각형의 상면에 대한 좌표
FillOpacity Float RW 1.0 직사각형의 좌측면에 대한 좌표
Stroke Brush RW null 직사각형의 폭
StrokeOpacity Float RW 1.0 직사각형의 높이
StrokeWidth BoxUnit RW 1px 스트로크의 폭 (1px=1/96 인치)
FillRule enum {EvenOdd,NonZero} RW EvenOdd FillRule은 캔버스의 어떤 부분이 형상 안에 포함되는지를 결정하는 데에 사용되는 알고리즘을 표시함.
StrokeLineCap enum {Butt,Round,Square,Diamond} RW Butt StrokeLineCap은 개방형 서브-경로가 스트로크될 때 개방형 서브-경로의 마지막에 사용되는 형상을 특정함.
StrokiLineJoint enum {Miter,Round,Bevel} RW Miter StrokiLineJoint는 경로의 코너 또는 다른 벡터 형상이 스트로크될 때 스트로크되는 다른 벡터 형상 또는 경로의 코너에 사용되는 형상을 특정함.
StrokeMiterLimit Float RW 4.0 StrokeWidth까지 MiterLength의 비율에 대한 한계, 1보다 크거나 같은 값
StrokeDashArray PointList RW null StrokeDashArray는 스트로크 경로에 사용되는 갭 또는 대시(dash)의 패턴을 제어함. <dasharray>는 사용자 유닛에서 교대의 대시 및 갭의 길이를 지정하는 콤마 또는 공백으로 분리된 <number>들의 리스트를 포함함. 홀수개의 값이 제공되면, 값의 리스트는 짝수개의 값을 내도록 반복됨. 따라서, stroke-dasharrary: 5 3 2는 stroke-dasharrary: 5 3 2 5 3 2 와 동등함.
StrokeDashOffset Point RW StrokeDashOffset는 대시를 시작하기 위해 대시 패턴으로의 거리를 특정함.
Transform Transform RW null Transform는 엘리먼트의 차일드에 대한 새로운 좌표 프레임을 형성함.
Clip Geometry RW null Clip은 페인트가 캔버스에 가해질 수 있는 영역을 제한함. 디폴트 클립핑 경로는 바운딩 박스로 정의됨.
아래 표는 직사각형에 대한 마크업 신택스를 예시한다.
직사각형은 오브젝트 모델에서 다음과 같은 속성을 갖는다. (직사각형은 판독/기입이고, 제로와 동일한 디폴트 값을 가지며, 전승을 지원할 뿐 아니라, 엘리먼트 및 자원 레벨 모두에 적용된다.)
명칭 타입 설명
Top BoxUnit 직사각형의 상면에 대한 좌표
Left BoxUnit 직사각형의 좌측면에 대한 좌표
Width BoxUnit 직사각형의 폭
Height BoxUnit 직사각형의 높이
RadiusX BoxUnit 둥글게 된 직사각형에 대하여, 직사각형의 코너를 둥글게 하기 위해 사용되는 타원의 X축 반지름, 음의 X측 반지름이 지정되면, 반지름의 절대값이 사용됨.
RadiusY BoxUnit 둥글게 된 직사각형에 대하여, 직사각형의 코너를 둥글게 하기 위해 사용되는 타원의 Y축 반지름, 음의 Y측 반지름이 지정되면, 반지름의 절대값이 사용됨.
아래의 표는 원에 대한 마크업 신택스를 예시한다.
원은 오브젝트 모델에서 다음과 같은 속성을 갖는다. (원은 판독/기입이고, 제로와 동일한 디폴트 값을 가지며, 전승을 지원할 뿐 아니라, 엘리먼트 및 자원 레벨 모두에 적용된다.)
명칭 타입 설명
CenterX BoxUnit 원 중심의 X 좌표
CenterY BoxUnit 원 중심의 Y 좌표
Radius BoxUnit 원의 반지름
아래의 표는 타원에 대한 마크업 신택스를 예시한다.
타원은 오브젝트 모델에서 다음과 같은 속성을 갖는다. (타원은 판독/기입이고, 제로와 동일한 디폴트 값을 가지며, 전승을 지원할 뿐 아니라, 엘리먼트 및 자원 레벨 모두에 적용된다.)
명칭 타입 설명
CenterX Coordinate 타원 중심의 X 좌표
CenterY Coordinate 타원 중심의 Y 좌표
RadiusX Length 타원의 X축 반지름. 음의 X축 반지름이 지정되면, 반지름의 절대값이 사용됨.
RadiusY Length 타원의 Y축 반지름. 음의 Y축 반지름이 지정되면, 반지름의 절대값이 사용됨.
아래의 표는 선에 대한 마크업 신택스를 예시한다.
선은 오브젝트 모델에서 다음과 같은 속성을 갖는다. (선은 판독/기입이고, 제로와 동일한 디폴트 값을 가지며, 전승을 지원할 뿐 아니라, 엘리먼트 및 자원 레벨 모두에 적용된다.)
명칭 타입 설명
X1 BoxUnit 선의 시작점의 X축 좌표, 디폴트 값은 "0".
Y1 BoxUnit 선의 시작점의 Y축 좌표, 디폴트 값은 "0".
X2 BoxUnit 선의 종결점의 X축 좌표, 디폴트 값은 "0".
Y2 BoxUnit 선의 종결점의 Y축 좌표, 디폴트 값은 "0".
'다중선'은 연결된 직선 세그먼트의 세트를 정의한다. 전형적으로, '다중선'은 개방형 형상을 정의한다.
아래의 표는 다중선에 대한 마크업 신택스를 예시한다.
다중선은 오브젝트 모델에서 다음과 같은 속성을 갖는다. (다중선은 판독/기입이고, 널(null)과 동일한 디폴트 값을 가지며, 전승을 지원할 뿐 아니라, 엘리먼트 및 자원 레벨 모두에 적용된다.)
명칭 타입 설명
Points PointCollection 다중선을 구성하는 점들. 좌표값들은 사용자 좌표 시스템 내에 있음.
다각형 엘리먼트는 연결된 직선 조각들의 세트으로 구성된 폐쇄형 형상을 정의한다. 아래의 표는 다각형에 대한 마크업 신택스를 예시한다.
다각형은 오브젝트 모델에서 다음과 같은 속성을 갖는다. (다중선은 판독/기입이고, 널과 동일한 디폴트 값을 가지며, 전승을 지원할 뿐 아니라, 엘리먼트 및 자원 레벨 모두에 적용된다.)
명칭 타입 설명
Points PointCollection 다각형을 구성하는 점들. 좌표값들은 사용자 좌표 시스템 내에 있음. 홀수개의 좌표가 제공되면, 엘리먼트는 에러 상태에 있음.
'다중선' 및 '다각형'에서의 점 지정에 대한 신택스는 아래 표와 같은 표시법을 사용하여 기술된다.
*: 0 or more+: 1 or more?: 0 or 1(): 그룹화(grouping)|: 대안들을 분리함(separates alternatives)겹따옴표는 리터럴을 둘러쌈 (double quotes surround literals)
아래의 표에서는 위 표시법을 사용하여 '다중성' 및 '다각형'에서의 점 지정을 기술한다.
이상과 같은 상세한 설명에서 알 수 있듯이, 장면 그래프와 인터페이스하도록, 프로그램 코드의 다양한 메카니즘을 제공하는 시스템, 방법 및 엘리먼트/오브젝트 모델이 제공된다. 이러한 시스템, 방법, 오브젝트 모델은 이용하기에 수월하면서도, 강력하고 유연성이 있으며, 확장성 역시 갖추고 있다.
본 발명은 다양한 변형 및 대안적인 구성이 가능하며, 설명된 실시예들은 도면에 나타나 있으며 위에서 상세히 기술하였다. 하지만, 본 발명은 개시된 특정 형태에 제한되지 않으며, 본 발명은 오히려 본 발명의 정신 및 범위 내에서의 모든 변형 및 대안적 구성, 동등한 것을 포함하는 것임을 알아야 한다.

Claims (60)

  1. 컴퓨팅 환경에서의 시스템에 있어서,
    엘리먼트들의 엘리먼트 트리(element tree of elements)- 상기 엘리먼트 트리에서 상기 엘리먼트들 중 적어도 일부는 연관된 속성 데이터(associated property data)를 갖고 엘리먼트 오브젝트 모델(element object model)에 대응됨 - 를 구성하기 위하여 마크업(markup)을 해석하는 메커니즘;
    장면 그래프 오브젝트 모델(scene graph object model)에 대응하는 오브젝트를 생성하라는 요구에 응답하여 상기 오브젝트들을 장면 그래프에 배치하는 적어도 하나의 인터페이스의 세트를 포함하는 장면 그래프 인터페이스 계층(scene graph interface layer); 및
    장면 그래프에서 오브젝트를 생성하기 위하여, 상기 엘리먼트들 중 적어도 일부와 상기 엘리먼트 트리의 속성 데이터를 상기 장면 그래프 인터페이스 계층에 대한 요구로 번역하는 번역기(translator)
    를 포함하는 시스템.
  2. 제1항에 있어서,
    상기 엘리먼트 오브젝트 모델의 상기 엘리먼트들은 상기 장면 그래프 오브젝트 모델의 상기 오브젝트들과 실질적으로 서로 관련되는 시스템.
  3. 제1항에 있어서,
    상기 마크업은 엘리먼트 특성을 정의하는 스트링(string)을 포함하는 인라인 텍스트(inline text)를 포함하고, 상기 번역기는 스트링을 오브젝트 특성으로 변환하는 타입 변환기(type converter)와 통신(communicate)하는 시스템.
  4. 제1항에 있어서,
    상기 마크업은 복합 속성 신택스(complex property syntax)를 포함하는 인라인 텍스트를 포함하는 시스템.
  5. 제4항에 있어서,
    상기 인라인 텍스트는 상기 마크업의 다른 장소에서 참조되는 참조(reference)에 의해 식별되는 시스템.
  6. 제4항에 있어서,
    상기 인라인 텍스트는 파일을 참조하는 참조에 의해 식별되는 시스템.
  7. 제4항에 있어서,
    인라인 텍스트는 네트워크에서 원격 위치로부터 다운로드(download)될 수 있는 파일에 대응하는 참조에 의해 식별되는 시스템.
  8. 제1항에 있어서,
    상기 마크업은 그래픽 자원(graphical resource)에 대응하는 복합 속성 신택스를 포함하는 인라인 텍스트를 포함하는 시스템.
  9. 제8항에 있어서,
    상기 그래픽 자원은 비주얼 브러쉬 오브젝트(visual brush object)를 기술하고, 상기 번역기는 상기 장면 그래프 인터페이스 계층과 직접 통신하여 상기 복합 속성 신택스에 의해 기술되는 상기 엘리먼트에 대응하는 시각 페인트 오브젝트(visual paint object)를 생성하기 위한 자원 레벨 데이터(resource level data)를 제공하는 시스템.
  10. 제9항에 있어서,
    상기 자원 레벨 데이터는 상기 마크업의 다른 위치에서 참조되는 참조에 의해 식별되는 시스템.
  11. 제9항에 있어서,
    상기 자원 레벨 데이터는 파일을 참조하는 참조에 의해 식별되는 시스템.
  12. 제9항에 있어서,
    상기 자원 레벨 데이터는 네트워크에서 원격 위치로부터 다운로드될 수 있는파일에 대응하는 참조에 의해 식별되는 시스템.
  13. 제1항에 있어서,
    상기 엘리먼트 오브젝트 모델의 엘리먼트들 중 하나는 이미지 엘리먼트를 포함하는 시스템.
  14. 제1항에 있어서,
    상기 엘리먼트 오브젝트 모델의 상기 엘리먼트들 중 하나는 비디오 엘리먼트를 포함하는 시스템.
  15. 제1항에 있어서,
    상기 엘리먼트 오브젝트 모델의 상기 엘리먼트들 중 하나는 형상 엘리먼트(shape element)를 포함하는 캔버스 엘리먼트(canvas element)를 포함하는 시스템.
  16. 제1항에 있어서,
    상기 엘리먼트 오브젝트 모델의 상기 엘리먼트들 중 하나는 형상 엘리먼트를 포함하는 시스템.
  17. 제16항에 있어서,
    상기 형상 엘리먼트는 직사각형의 엘리먼트(rectangle element)를 포함하는 시스템.
  18. 제16항에 있어서,
    상기 형상 엘리먼트는 다중선 엘리먼트(polyline element)를 포함하는 시스템.
  19. 제16항에 있어서,
    상기 형상 엘리먼트는 다각형 엘리먼트(polygon element)를 포함하는 시스템.
  20. 제16항에 있어서,
    상기 형상 엘리먼트는 경로 엘리먼트(path element)를 포함하는 시스템.
  21. 제16항에 있어서,
    상기 형상 엘리먼트는 선 엘리먼트(line element)를 포함하는 시스템.
  22. 제16항에 있어서,
    상기 형상 엘리먼트는 타원 엘리먼트(ellipse element)를 포함하는 시스템.
  23. 제16항에 있어서,
    상기 형상 엘리먼트는 원 엘리먼트(circle element)를 포함하는 시스템.
  24. 제16항에 있어서,
    상기 형상 엘리먼트는 채움 속성 데이터(fill property data)를 포함하는 시스템.
  25. 제16항에 있어서,
    상기 형상 엘리먼트는 스트로크 속성 데이터(stroke property data)를 포함하는 시스템.
  26. 제16항에 있어서,
    상기 형상 엘리먼트는 클립핑 속성 데이터(clipping property data)를 포함하는 시스템.
  27. 제16항에 있어서,
    상기 형상 엘리먼트는 변환 속성 데이터(transfer property data)를 포함하는 시스템.
  28. 제16항에 있어서,
    상기 형상 엘리먼트는 효과 데이터(effect data)를 포함하는 시스템.
  29. 제16항에 있어서,
    상기 형상 엘리먼트는 불투명 데이터(opacity data)를 포함하는 시스템.
  30. 제16항에 있어서,
    상기 형상 엘리먼트는 혼합 모드 데이터(blend mode data)를 포함하는 시스템.
  31. 제1항에 있어서,
    장면 그래프 데이터 구조(scene graph data structure)를 처리하고 적어도 하나의 하위 레벨 그래픽 컴포넌트(lower level graphics component)에 대한 명령을 제공하는 엔진을 포함하는 시스템.
  32. 제31항에 있어서,
    상기 엔진은 상기 장면 그래프 데이터 구조를 횡단(traverse)하는 시스템.
  33. 제31항에 있어서,
    상기 엔진은 상기 장면 그래프 데이터 구조를 전송하는 시스템.
  34. 제1항에 있어서,
    상기 번역기는 상기 오브젝트를 생성하기 위하여 적어도 하나의 빌더(builder)의 실증(instantiation)을 요청하는 시스템.
  35. 컴퓨터 구현 방법에 있어서,
    태그 및 오브젝트 모델에 따른 관련 속성 데이터를 포함하는 마크업을 분석하는 단계와,
    상기 마크업 내의 태그를 해석하여 상기 태그가 엘리먼트 레벨에 관한 것인지 또는 자원 레벨에 관한 것인지를 결정하는 단계와,
    a) 만일 상기 태그가 상기 엘리먼트 레벨에 관한 것이면, 상기 태그 및 상기 태그와 관련된 속성 데이터에 기초하여 엘리먼트를 생성하고 장면 그래프 데이터 구조의 장면 그래프 오브젝트로 나중에 번역하기 위하여 상기 엘리먼트를 엘리먼트 트리에 추가하고,
    b) 만일 상기 태그가 상기 자원 레벨에 관한 것이면, 상기 장면 그래프 데이터 구조 내의 장면 그래프 오브젝트를 직접적으로 생성하기 위하여 인터페이스를 경유하여 상기 장면 그래프 데이터 구조로 데이터를 제공하는 단계
    를 포함하는 방법.
  36. 제35항에 있어서, 상기 엘리먼트 오브젝트 모델의 오브젝트들은 상기 장면 그래프 데이터 구조 내의 오브젝트들과 실질적으로 서로 관련되는 방법.
  37. 제35항에 있어서, 상기 마크업은 태그 속성값을 위한 인라인 텍스트(inline text)를 포함하고, 상기 인라인 텍스트를 오브젝트 특성으로 변환하기 위한 타입 변환기(type converter)와 통신하는 단계를 더 포함하는 방법.
  38. 제35항에 있어서, 상기 마크업은, 상기 마크업 내의 다른 텍스트에 대하여 참조를 갖는 태그 속성값을 위한 인라인 텍스트를 포함하고, 상기 태그 속성값을 해석하는 단계는 상기 다른 텍스트를 해석하는 단계를 포함하는 방법.
  39. 제35항에 있어서, 상기 마크업은 엘리먼트를 위한 복합 속성 신택스를 포함하는 태그들을 포함하고, 상기 태그들을 해석하는 단계는 상기 복합 속성 신택스를 해석하여 상기 태그들이 상기 엘리먼트 레벨에 관한 것인지를 결정하는 단계를 포함하는 방법.
  40. 제35항에 있어서, 상기 마크업은 엘리먼트를 위한 복합 속성 신택스를 특정하는 태그들을 포함하고, 상기 태그들을 해석하는 단계는 상기 복합 속성 신택스를 해석하여 상기 엘리먼트가 상기 자원 레벨에 관한 것인지를 결정하는 단계를 포함하는 방법.
  41. 제40항에 있어서, 상기 복합 속성 신택스를 해석하는 단계는 상기 복합 속성신택스가 비주얼 브러쉬 오브젝트에 대응하는 속성을 기술하는 것을 검출하는 단계를 포함하는 방법.
  42. 제40항에 있어서, 상기 태그들은 상기 엘리먼트 트리 내의 엘리먼트에 의해 지시되는 비주얼 브러쉬 오브젝트를 정의하는 방법.
  43. 제35항의 방법을 실행하기 위한 컴퓨터 실행가능 명령어들을 포함하는 컴퓨터 판독 가능 매체.
  44. 데이터 구조를 저장하고 있는 컴퓨터 판독 가능 매체에 있어서,
    태그들의 제1 세트 및 속성 데이터를 포함하는 데이터의 제1 세트 - 상기 태그들의 제1 세트가 해석되는 컨텍스트는 상기 태그들의 제1 세트가 엘리먼트 레벨에 관한 것임을 나타냄 - 와,
    태그들의 제2 세트 및 제2 속성 데이터를 포함하는 데이터의 제2 세트 - 상기 태그들의 제2 세트가 해석되는 컨텍스트는 복합 속성 신택스에 대응하고 상기 태그들의 제2 세트가 자원 레벨에 관한 것임을 나타냄 -
    를 포함하고,
    상기 데이터 구조가 해석될 때, 상기 데이터의 제1 세트는 상기 텍스트의 제1 세트 내의 제1 정보에 기초하여 생성되고 엘리먼트 레벨 트리로 삽입되는 상기 태그들의 제1 세트에 대응하는 데이터를 유발하고, 상기 데이터의 제2 세트는 상기텍스트의 제2 세트 내의 제2 정보에 기초하여, 상기 자원 레벨에서 인터페이스를 경유하여 장면 그래프 데이터 구조로 상기 장면 그래프 데이터 구조 내의 장면 그래프 오브젝트를 직접적으로 생성하도록 제공되는 상기 태그들의 제2 세트에 대응하는 데이터를 유발하는 컴퓨터 판독 가능 매체.
  45. 제44항에 있어서, 속성값에 대응하는 스트링을 포함하는 데이터의 제3 세트를 더 포함하는 데이터 구조.
  46. 제44항에 있어서, 상기 태그들의 제1 세트는 식별자를 특정하고, 상기 식별자를 참조하는 데이터의 제3 세트를 더 포함하는 데이터 구조.
  47. 제46항에 있어서, 해석될 때, 상기 데이터의 제3 세트는 상기 데이터의 제3 세트에 대한 트리 위치 내의 엘리먼트 레벨 트리에 추가되는 상기 태그들의 제1 세트에 대응하는 데이터로 되는 데이터 구조.
  48. 제44항에 있어서, 상기 태그들의 제2 세트는 식별자를 포함하고, 상기 식별자를 참조하는 데이터의 제3 세트를 더 포함하는 데이터 구조.
  49. 제44항에 있어서, 상기 태그들의 제2 세트는 마크업에서 복합 속성 신택스 인라인으로 포매팅된 데이터를 포함하는 데이터 구조.
  50. 제49항에 있어서, 상기 복합 속성 신택스는 비주얼 페인트 오브젝트에 상응하는 채움 속성(fill property)을 가지는 자원 레벨의 엘리먼트를 기술하는 데이터 구조.
  51. 제49항에 있어서, 상기 복합 속성 신택스는 이미지 엘리먼트의 속성을 기술하는 데이터 구조.
  52. 제49항에 있어서, 상기 복합 속성 신택스는 비디오 엘리먼트의 속성을 기술하는 데이터 구조.
  53. 제44항에 있어서, 상기 제1 태그 세트는 형상 엘리먼트의 속성을 기술하는 데이터 구조.
  54. 제53항에 있어서, 형상 엘리먼트를 포함하는 캔버스 엘리먼트를 기술하는 데이터 구조의 데이터를 더 포함하는 데이터 구조.
  55. 제53항에 있어서, 상기 형상 엘리먼트의 속성은 채움 속성 데이터를 포함하는 데이터 구조.
  56. 제53항에 있어서, 상기 형상 엘리먼트의 속성은 스트로크 속성 데이터를 포함하는 데이터 구조.
  57. 제44항에 있어서, 상기 제1 엘리먼트의 속성은 클립핑 데이터(clipping data)를 포함하는 데이터 구조.
  58. 제44항에 있어서, 상기 제1 엘리먼트의 속성은 변환 데이터(transform data)를 포함하는 데이터 구조.
  59. 제44항에 있어서, 상기 제1 엘리먼트의 속성은 불투명 데이터(opacity data)를 포함하는 데이터 구조.
  60. 제44항에 있어서, 상기 제1 엘리먼트의 속성은 혼합 모드 데이터(blend mode data)를 포함하는 데이터 구조.
KR1020030031430A 2003-03-27 2003-05-17 벡터 그래픽을 위한 마크업 언어 및 오브젝트 모델 KR100996738B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/401,717 2003-03-27
US10/401,717 US7486294B2 (en) 2003-03-27 2003-03-27 Vector graphics element-based model, application programming interface, and markup language

Publications (2)

Publication Number Publication Date
KR20040086042A true KR20040086042A (ko) 2004-10-08
KR100996738B1 KR100996738B1 (ko) 2010-11-25

Family

ID=23588917

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030031430A KR100996738B1 (ko) 2003-03-27 2003-05-17 벡터 그래픽을 위한 마크업 언어 및 오브젝트 모델

Country Status (27)

Country Link
US (1) US7486294B2 (ko)
EP (1) EP1462998B1 (ko)
JP (1) JP4290477B2 (ko)
KR (1) KR100996738B1 (ko)
CN (1) CN1534476B (ko)
AT (1) ATE403198T1 (ko)
AU (1) AU2003204007B2 (ko)
BR (1) BR0302004A (ko)
CA (1) CA2428471C (ko)
CO (1) CO5460278A1 (ko)
DE (1) DE60322505D1 (ko)
EC (1) ECSP034609A (ko)
GT (1) GT200300184A (ko)
HK (1) HK1066311A1 (ko)
HR (1) HRP20030389B1 (ko)
HU (1) HUP0301289A3 (ko)
IL (1) IL155881A (ko)
MX (1) MXPA03004410A (ko)
MY (1) MY143630A (ko)
NO (1) NO328434B1 (ko)
NZ (1) NZ525857A (ko)
RO (1) RO123609B1 (ko)
RU (1) RU2321892C2 (ko)
SG (1) SG127696A1 (ko)
TR (1) TR200300696A2 (ko)
TW (1) TWI336042B (ko)
ZA (1) ZA200303553B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100735971B1 (ko) * 2006-01-17 2007-07-06 엘지전자 주식회사 홈 네트워크에서의 원격 화면 제어 방법
KR101527775B1 (ko) * 2013-07-11 2015-06-16 정은숙 Ifc 파일 고속 처리 시스템 및 방법

Families Citing this family (79)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7619633B2 (en) 2002-06-27 2009-11-17 Microsoft Corporation Intelligent caching data structure for immediate mode graphics
US7511718B2 (en) * 2003-10-23 2009-03-31 Microsoft Corporation Media integration layer
US7219340B2 (en) * 2003-10-23 2007-05-15 Microsoft Corporation Changeable class and pattern to provide selective mutability in computer programming environments
US7475061B2 (en) * 2004-01-15 2009-01-06 Microsoft Corporation Image-based document indexing and retrieval
US7729538B2 (en) * 2004-08-26 2010-06-01 Microsoft Corporation Spatial recognition and grouping of text and graphics
US7574048B2 (en) * 2004-09-03 2009-08-11 Microsoft Corporation Freeform digital ink annotation recognition
US7603624B2 (en) * 2004-10-21 2009-10-13 Microsoft Corporation System and method for styling content in a graphical user interface control
US8631347B2 (en) * 2004-11-15 2014-01-14 Microsoft Corporation Electronic document style matrix
US7570816B2 (en) * 2005-03-31 2009-08-04 Microsoft Corporation Systems and methods for detecting text
US7526129B2 (en) * 2005-06-23 2009-04-28 Microsoft Corporation Lifting ink annotations from paper
RU2005124030A (ru) * 2005-07-28 2007-02-10 Александр Михайлович Юров (RU) Способ визуальной адресации команд в дереве
WO2007016457A2 (en) 2005-07-29 2007-02-08 Bender Gary T Apparatuses, methods and systems for a composite multimedia content generator
US20070061351A1 (en) * 2005-09-13 2007-03-15 Microsoft Corporation Shape object text
US8001526B2 (en) * 2005-09-15 2011-08-16 Microsoft Corporation Hierarchical property storage
US20070061349A1 (en) * 2005-09-15 2007-03-15 Microsoft Corporation Hierarchically describing shapes
KR20070047463A (ko) * 2005-11-02 2007-05-07 삼성전자주식회사 장면 기반의 벡터 에니메이션 생성 장치
CN100428243C (zh) * 2005-12-14 2008-10-22 国际商业机器公司 用于在模型上实现动作的方法和系统
US9153125B2 (en) * 2005-12-20 2015-10-06 Savant Systems, Llc Programmable multimedia controller with programmable services
US7616203B1 (en) * 2006-01-20 2009-11-10 Adobe Systems Incorporated Assigning attributes to regions across frames
US7657340B2 (en) * 2006-01-31 2010-02-02 Dragon & Phoenix Software, Inc. System, apparatus and method for facilitating pattern-based clothing design activities
US7657341B2 (en) 2006-01-31 2010-02-02 Dragon & Phoenix Software, Inc. System, apparatus and method for facilitating pattern-based clothing design activities
US7460710B2 (en) * 2006-03-29 2008-12-02 Amazon Technologies, Inc. Converting digital images containing text to token-based files for rendering
US7962895B2 (en) * 2006-07-20 2011-06-14 Oracle America, Inc. Language for binding scalable vector graphics elements to java classes
US8130226B2 (en) * 2006-08-04 2012-03-06 Apple Inc. Framework for graphics animation and compositing operations
US9019300B2 (en) 2006-08-04 2015-04-28 Apple Inc. Framework for graphics animation and compositing operations
US7930644B2 (en) 2006-09-13 2011-04-19 Savant Systems, Llc Programming environment and metadata management for programmable multimedia controller
FR2907574B1 (fr) * 2006-10-20 2009-01-16 Streamezzo Sa Procede de description de scene multimedia comprenant au moins une zone de rognage rectangulaire alignee sur des frontieres de pixels.
US8490117B1 (en) 2006-10-23 2013-07-16 Adobe Systems Incorporated Bridging script engines
US8020089B1 (en) * 2006-10-23 2011-09-13 Adobe Systems Incorporated Rendering hypertext markup language content
US7614003B2 (en) * 2006-10-23 2009-11-03 Adobe Systems Incorporated Rendering hypertext markup language content
US8234392B2 (en) 2006-11-17 2012-07-31 Apple Inc. Methods and apparatuses for providing a hardware accelerated web engine
KR100803947B1 (ko) * 2006-12-01 2008-02-15 주식회사 코아로직 오픈 벡터그래픽 응용 프로그램 인터페이스 변환 장치와방법, 모바일 단말기, 및 그 방법이 기록된 기록매체
US20080158254A1 (en) * 2006-12-29 2008-07-03 Hong Jiang Using supplementary information of bounding boxes in multi-layer video composition
CN101647045A (zh) * 2007-03-15 2010-02-10 汤姆森特许公司 用于场景图中的参数的访问及控制的方法和系统
US20080266288A1 (en) * 2007-04-27 2008-10-30 Identitymine Inc. ElementSnapshot Control
US7876336B2 (en) * 2007-07-02 2011-01-25 Autodesk, Inc. Scale-dependent rendering of natural media styles
US20090079744A1 (en) * 2007-09-21 2009-03-26 Microsoft Corporation Animating objects using a declarative animation scheme
JP2009129127A (ja) * 2007-11-22 2009-06-11 Fujitsu Ltd プログラムの不変物抽出処理プログラム,処理装置,および処理方法,ならびに該プログラムを記憶する記憶媒体
US20090193067A1 (en) * 2008-01-30 2009-07-30 Microsoft Corporation Server-based recalculation of vector graphics
US8760472B2 (en) * 2008-04-01 2014-06-24 Apple Inc. Pixel transforms
US8612485B2 (en) * 2008-08-11 2013-12-17 Sony Corporation Deferred 3-D scenegraph processing
US8314951B2 (en) 2008-09-26 2012-11-20 Kyocera Document Solutions Inc. Image processing apparatus, and computer-readable recording medium
JP5007291B2 (ja) * 2008-09-30 2012-08-22 京セラドキュメントソリューションズ株式会社 画像処理装置、画像処理方法及び画像処理プログラム
JP5094667B2 (ja) * 2008-09-30 2012-12-12 京セラドキュメントソリューションズ株式会社 画像処理装置、画像処理方法及び画像処理プログラム
JP5820276B2 (ja) * 2009-02-17 2015-11-24 コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. 3d画像及びグラフィカル・データの結合
US9250926B2 (en) 2009-04-30 2016-02-02 Microsoft Technology Licensing, Llc Platform extensibility framework
US8638343B2 (en) * 2009-04-30 2014-01-28 Microsoft Corporation Data visualization platform performance optimization
JP5008714B2 (ja) 2009-12-15 2012-08-22 三菱電機株式会社 画像生成装置及び画像生成方法
US8823797B2 (en) * 2010-06-03 2014-09-02 Microsoft Corporation Simulated video with extra viewpoints and enhanced resolution for traffic cameras
JP5512449B2 (ja) * 2010-07-28 2014-06-04 富士フイルム株式会社 ページ記述データ処理装置、方法及びプログラム並びに印刷物生産方法
CN102054280B (zh) * 2010-11-29 2013-06-12 广东威创视讯科技股份有限公司 快速生成矢量图的方法及装置
EP2549389A1 (en) * 2011-07-20 2013-01-23 Axel Springer Digital TV Guide GmbH Easy 2D navigation in a video database
CN102289834B (zh) * 2011-08-30 2013-06-12 北京瑞信在线系统技术有限公司 一种微动画编辑器及其编辑方法
US9563971B2 (en) 2011-09-09 2017-02-07 Microsoft Technology Licensing, Llc Composition system thread
CN109348160B (zh) * 2011-09-14 2021-04-30 巴科股份有限公司 用于会议的电子工具和方法
US11258676B2 (en) 2011-09-14 2022-02-22 Barco N.V. Electronic tool and methods for meetings
EP4398524A2 (en) 2011-09-14 2024-07-10 Barco N.V. Electronic tool and methods with audio for meetings
US8756348B2 (en) 2011-09-14 2014-06-17 Barco N.V. Electronic tool and methods for meetings
CN102662963A (zh) * 2012-03-08 2012-09-12 北京神州数码思特奇信息技术股份有限公司 一种元设施扩展方法及模块
US20130278607A1 (en) * 2012-04-20 2013-10-24 A Thinking Ape Technologies Systems and Methods for Displaying Animations on a Mobile Device
US20140300611A1 (en) * 2013-03-15 2014-10-09 Trigger Happy, Ltd. Web and native code environment modular player and modular rendering system
US9323514B2 (en) 2013-05-30 2016-04-26 Microsoft Technology Licensing, Llc Resource package indexing
US20140357357A1 (en) 2013-05-30 2014-12-04 Microsoft Corporation Game bundle package
US9766870B2 (en) 2013-05-30 2017-09-19 Microsoft Technology Licensing, Llc Bundle package generation
CN104572050A (zh) * 2013-10-18 2015-04-29 镇江鼎拓科技信息有限公司 一种基于saas的出版物平台图形生成方法
KR102140294B1 (ko) * 2014-01-16 2020-07-31 삼성전자주식회사 전자 장치의 광고 방법 및 그 전자 장치
US10423652B2 (en) * 2016-08-08 2019-09-24 Baidu Usa Llc Knowledge graph entity reconciler
US10455188B2 (en) 2016-11-18 2019-10-22 Microsoft Technology Licensing, Llc Correlating UI with CPU stacks for profiling sessions
JP6855348B2 (ja) * 2017-07-31 2021-04-07 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置およびダウンロード処理方法
US12100112B2 (en) 2018-08-10 2024-09-24 Nvidia Corporation Cloud-centric platform for collaboration and connectivity on 3D virtual environments
CN109117051B (zh) * 2018-09-05 2021-05-11 广州视源电子科技股份有限公司 思维导图的展示方法、装置、设备及存储介质
US10839249B2 (en) * 2019-03-08 2020-11-17 International Business Machines Corporation Methods and systems for analyzing images utilizing scene graphs
CN110213265B (zh) * 2019-05-29 2021-05-28 腾讯科技(深圳)有限公司 图像获取方法、装置、服务器及存储介质
CN110297932B (zh) * 2019-06-28 2021-07-23 北京金山安全软件有限公司 确定矢量图中封闭图形的最大内接圆的方法、装置及电子设备
CN110427142A (zh) * 2019-07-29 2019-11-08 成都科鸿智信科技有限公司 一种基于Html5 canvas标签制作的特种设备监管平台用画图工具
US11176314B2 (en) * 2019-09-19 2021-11-16 Sap Se XML schema description code generator
US20220134222A1 (en) * 2020-11-03 2022-05-05 Nvidia Corporation Delta propagation in cloud-centric platforms for collaboration and connectivity
DE102022103909A1 (de) 2022-02-18 2022-07-14 FEV Europe GmbH Datenstruktur zum testen autonom fahrender kraftfahrzeuge
CN115309313A (zh) * 2022-08-09 2022-11-08 盈帜科技(常州)有限公司 一种二维场景海量矢量数据显示方法及设备

Family Cites Families (89)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4209852A (en) 1974-11-11 1980-06-24 Hyatt Gilbert P Signal processing and memory arrangement
CA2075048C (en) 1990-01-30 1999-08-17 Gregory A. Pascucci Networked facilities management system
US5509115A (en) 1990-08-08 1996-04-16 Peerless Systems Corporation Method and apparatus for displaying a page with graphics information on a continuous synchronous raster output device
US5261041A (en) 1990-12-28 1993-11-09 Apple Computer, Inc. Computer controlled animation system based on definitional animated objects and methods of manipulating same
US5852449A (en) 1992-01-27 1998-12-22 Scientific And Engineering Software Apparatus for and method of displaying running of modeled system designs
AU4279893A (en) 1992-04-10 1993-11-18 Avid Technology, Inc. A method and apparatus for representing and editing multimedia compositions
US5987627A (en) 1992-05-13 1999-11-16 Rawlings, Iii; Joseph H. Methods and apparatus for high-speed mass storage access in a computer system
US5500933A (en) 1993-04-28 1996-03-19 Canon Information Systems, Inc. Display system which displays motion video objects combined with other visual objects
CN1109695A (zh) 1993-05-10 1995-10-04 塔里根特公司 多媒体同步系统
US5555368A (en) 1993-12-30 1996-09-10 Taligent Object-oriented multi-tasking view framework
US5912666A (en) 1994-08-23 1999-06-15 Object Technology Licensing Corp. Object-oriented global cursor tool
US5745761A (en) 1994-12-15 1998-04-28 International Business Machines Corporation Advanced graphics driver architecture with extension capability
US5986667A (en) 1994-12-22 1999-11-16 Apple Computer, Inc. Mechanism for rendering scenes using an object drawing subsystem
US5727141A (en) 1995-05-05 1998-03-10 Apple Computer, Inc. Method and apparatus for identifying user-selectable regions within multiple display frames
US5790130A (en) 1995-06-08 1998-08-04 Hewlett-Packard Company Texel cache interrupt daemon for virtual memory management of texture maps
US5930810A (en) 1995-08-09 1999-07-27 Taylor Corporation Printing system with pre-defined user modifiable forms and local and remote printing
US5986675A (en) 1996-05-24 1999-11-16 Microsoft Corporation System and method for animating an object in three-dimensional space using a two-dimensional input device
US5936632A (en) 1996-07-26 1999-08-10 Hewlett-Packard Co. Method for fast downloading of textures to accelerated graphics hardware and the elimination of extra software copies of texels
EP0925542B1 (en) * 1996-09-09 2002-08-07 Design Intelligence, Inc. Automatic layout and formatting of content for a design in a medium
US6275857B1 (en) 1996-10-30 2001-08-14 Microsoft Corporation System and method for freeing shared resources in a computer system
US5920325A (en) 1996-11-20 1999-07-06 International Business Machines Corporation Prioritization of background display during animation
US6137499A (en) 1997-03-07 2000-10-24 Silicon Graphics, Inc. Method, system, and computer program product for visualizing data using partial hierarchies
US6195694B1 (en) * 1997-03-13 2001-02-27 International Business Machines Corporation Server for reconfiguring control of a subset of devices on one or more kiosks
CA2257577C (en) * 1997-04-07 2002-03-19 At&T Corp. System and method for interfacing mpeg-coded audiovisual objects permitting adaptive control
US6160907A (en) 1997-04-07 2000-12-12 Synapix, Inc. Iterative three-dimensional process for creating finished media content
US6215495B1 (en) * 1997-05-30 2001-04-10 Silicon Graphics, Inc. Platform independent application program interface for interactive 3D scene management
US5924098A (en) 1997-06-30 1999-07-13 Sun Microsystems, Inc. Method and apparatus for managing a linked-list data structure
US6377263B1 (en) * 1997-07-07 2002-04-23 Aesthetic Solutions Intelligent software components for virtual worlds
US6314470B1 (en) 1997-07-25 2001-11-06 Hewlett Packard Company System and method for asynchronously accessing a graphics system for graphics application evaluation and control
US6154215A (en) 1997-08-01 2000-11-28 Silicon Graphics, Inc. Method and apparatus for maintaining multiple representations of a same scene in computer generated graphics
US6654931B1 (en) 1998-01-27 2003-11-25 At&T Corp. Systems and methods for playing, browsing and interacting with MPEG-4 coded audio-visual objects
US6243856B1 (en) * 1998-02-03 2001-06-05 Amazing Media, Inc. System and method for encoding a scene graph
US6272650B1 (en) * 1998-02-03 2001-08-07 Amazing Media, Inc. System and method for disambiguating scene graph loads
US6075532A (en) 1998-03-23 2000-06-13 Microsoft Corporation Efficient redrawing of animated windows
US6266053B1 (en) 1998-04-03 2001-07-24 Synapix, Inc. Time inheritance scene graph for representation of media content
US6570578B1 (en) 1998-04-03 2003-05-27 Avid Technology, Inc. System for automatic generation of selective partial renderings of complex scenes
US6237092B1 (en) 1998-05-05 2001-05-22 International Business Machines Corp. Client-server system with central application management allowing an administrator to configure user and group contexts during application configuration without relaunching the application
US6631403B1 (en) 1998-05-11 2003-10-07 At&T Corp. Architecture and application programming interfaces for Java-enabled MPEG-4 (MPEG-J) systems
KR20010034920A (ko) * 1998-06-26 2001-04-25 매클린토크 샤운 엘 엠펙-4 비디오 프로그램을 작성하고 표현하기 위한 단말기
US6731314B1 (en) 1998-08-17 2004-05-04 Muse Corporation Network-based three-dimensional multiple-user shared environment apparatus and method
US6487565B1 (en) 1998-12-29 2002-11-26 Microsoft Corporation Updating animated images represented by scene graphs
US6411297B1 (en) * 1999-03-03 2002-06-25 Discreet Logic Inc. Generating image data
US6714201B1 (en) 1999-04-14 2004-03-30 3D Open Motion, Llc Apparatuses, methods, computer programming, and propagated signals for modeling motion in computer applications
US6986101B2 (en) * 1999-05-06 2006-01-10 International Business Machines Corporation Method and apparatus for converting programs and source code files written in a programming language to equivalent markup language files
US6707456B1 (en) 1999-08-03 2004-03-16 Sony Corporation Declarative markup for scoring multiple time-based assets and events within a scene composition system
US6765571B2 (en) * 1999-09-24 2004-07-20 Sun Microsystems, Inc. Using a master controller to manage threads and resources for scene-based rendering
US7184038B2 (en) * 1999-09-24 2007-02-27 Sun Microsystems, Inc. Using render bin parallelism for rendering scene graph based graphics data
US6538656B1 (en) 1999-11-09 2003-03-25 Broadcom Corporation Video and graphics system with a data transport processor
AU1948201A (en) * 1999-12-06 2001-06-12 Axiomatic Design Software, Inc. Method and apparatus for producing software
US7102651B1 (en) 1999-12-22 2006-09-05 Adobe Systems Incorporated Hierarchical 2-D color compositing with blending mode and opacity controls at all levels
US7103581B1 (en) 2000-01-13 2006-09-05 Hewlett-Packard Development Company, L.P. System and method for pricing print jobs
US6833840B2 (en) 2000-02-14 2004-12-21 Optibase Ltd PROTO implementation in MPEG-4
JP2001273520A (ja) * 2000-03-23 2001-10-05 Famotik Ltd マルチメディアドキュメント統合表示システム
US6751655B1 (en) * 2000-04-18 2004-06-15 Sun Microsystems, Inc. Method and apparatus for transport of scenegraph information across a network
US6990653B1 (en) * 2000-05-18 2006-01-24 Microsoft Corporation Server-side code generation from a dynamic web page content file
US6717599B1 (en) 2000-06-29 2004-04-06 Microsoft Corporation Method, system, and computer program product for implementing derivative operators with graphics hardware
US20020019844A1 (en) 2000-07-06 2002-02-14 Kurowski Scott J. Method and system for network-distributed computing
JP2004506262A (ja) * 2000-08-04 2004-02-26 イントリンジック グラフィックス, インコーポレイテッド グラフィックハードウェアおよびソフトウェアの開発
US6675230B1 (en) * 2000-08-22 2004-01-06 International Business Machines Corporation Method, system, and program for embedding a user interface object in another user interface object
US7143339B2 (en) 2000-09-20 2006-11-28 Sap Aktiengesellschaft Method and apparatus for dynamically formatting and displaying tabular data in real time
US20020078255A1 (en) * 2000-10-17 2002-06-20 Shankar Narayan Pluggable instantiable distributed objects
US6636211B2 (en) * 2000-12-15 2003-10-21 Dassault Systemes CAD/CAM feature tree with manipulatable 3D miniatures
US6732109B2 (en) * 2001-01-31 2004-05-04 The Eon Company Method and system for transferring information between a user interface and a database over a global information network
WO2002076058A2 (en) * 2001-03-21 2002-09-26 Research In Motion Limited Method and apparatus for providing content to media devices
FR2825556A1 (fr) * 2001-05-31 2002-12-06 Koninkl Philips Electronics Nv Generation d'une description dans un langage de balisage d'une structure d'un contenu multimedia
US7069503B2 (en) 2001-06-04 2006-06-27 Murata Kikai Kabushiki Kaisha Device and program for structured document generation data structure of structural document
US7305011B2 (en) * 2001-06-14 2007-12-04 International Business Machines Corporation Periodic broadcast and location of evolving media content with application to seminar and stroke media
US7203692B2 (en) 2001-07-16 2007-04-10 Sony Corporation Transcoding between content data and description data
US6919891B2 (en) 2001-10-18 2005-07-19 Microsoft Corporation Generic parameterization for a scene graph
US7161599B2 (en) * 2001-10-18 2007-01-09 Microsoft Corporation Multiple-level graphics processing system and method
US7064766B2 (en) 2001-10-18 2006-06-20 Microsoft Corporation Intelligent caching data structure for immediate mode graphics
AU2002348584B2 (en) 2001-10-23 2007-05-10 Samsung Electronics Co., Ltd. Information storage medium including markup document and AV data, recording method, reproducing method, and reproducing apparatus therefor
US7055092B2 (en) 2001-12-05 2006-05-30 Canon Kabushiki Kaisha Directory for multi-page SVG document
US20030110297A1 (en) 2001-12-12 2003-06-12 Tabatabai Ali J. Transforming multimedia data for delivery to multiple heterogeneous devices
US20040110490A1 (en) * 2001-12-20 2004-06-10 Steele Jay D. Method and apparatus for providing content to media devices
KR100453225B1 (ko) * 2001-12-26 2004-10-15 한국전자통신연구원 3차원 가상 현실 구현을 위한 클라이언트 시스템과 이를이용한 가상 현실 구현 방법
US7076332B2 (en) 2002-01-18 2006-07-11 National Instruments Corporation System and method for invoking execution of a sequence of operations that includes motion control, machine vision, and data acquisition (DAQ) functionality
IES20030064A2 (en) * 2002-02-04 2003-08-06 Mobileaware Technologies Ltd Document transformation
US20030210267A1 (en) 2002-05-13 2003-11-13 Kylberg Robert Lee Systems and methods for providing asynchronous client rendering in a graphical user interface (GUI) environment
US7236165B2 (en) * 2002-07-11 2007-06-26 Raytheon Company System and method for asynchronous storage and playback of a system state
AU2003251879A1 (en) * 2002-07-12 2004-02-02 Raytheon Company Scene graph based display for desktop applications
US20040216139A1 (en) * 2002-08-21 2004-10-28 Rhoda Merlin A. System controlling test/measurement devices on a network using markup language documents and methods thereof
US7240346B2 (en) 2002-11-13 2007-07-03 Microsoft Corporation Method and system for accessing drawing resources
US7126606B2 (en) 2003-03-27 2006-10-24 Microsoft Corporation Visual and scene graph interfaces
US7088374B2 (en) 2003-03-27 2006-08-08 Microsoft Corporation System and method for managing visual structure, timing, and animation in a graphics processing system
US7466315B2 (en) 2003-03-27 2008-12-16 Microsoft Corporation Visual and scene graph interfaces
US7412455B2 (en) * 2003-04-30 2008-08-12 Dillon David M Software framework that facilitates design and implementation of database applications
US8051389B2 (en) 2003-08-26 2011-11-01 Hewlett-Packard Development Company, L.P. Methods of displaying resources of overlapping but separate hierarchies
US7012606B2 (en) 2003-10-23 2006-03-14 Microsoft Corporation System and method for a unified composition engine in a graphics processing system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100735971B1 (ko) * 2006-01-17 2007-07-06 엘지전자 주식회사 홈 네트워크에서의 원격 화면 제어 방법
KR101527775B1 (ko) * 2013-07-11 2015-06-16 정은숙 Ifc 파일 고속 처리 시스템 및 방법

Also Published As

Publication number Publication date
CA2428471A1 (en) 2004-09-27
HK1066311A1 (en) 2005-03-18
JP2004295857A (ja) 2004-10-21
RO123609B1 (ro) 2014-07-30
AU2003204007A1 (en) 2004-10-14
ATE403198T1 (de) 2008-08-15
EP1462998A2 (en) 2004-09-29
US20040189667A1 (en) 2004-09-30
CN1534476A (zh) 2004-10-06
MXPA03004410A (es) 2004-09-29
HUP0301289A3 (en) 2011-04-28
AU2003204007B2 (en) 2009-09-17
BR0302004A (pt) 2004-11-03
DE60322505D1 (de) 2008-09-11
EP1462998B1 (en) 2008-07-30
CA2428471C (en) 2012-09-04
JP4290477B2 (ja) 2009-07-08
CN1534476B (zh) 2010-05-26
ZA200303553B (en) 2004-04-22
SG127696A1 (en) 2006-12-29
IL155881A0 (en) 2003-12-23
CO5460278A1 (es) 2004-11-30
HRP20030389A2 (en) 2005-04-30
IL155881A (en) 2008-11-03
HUP0301289A2 (hu) 2004-10-28
TW200419376A (en) 2004-10-01
NO20032205D0 (no) 2003-05-15
RU2321892C2 (ru) 2008-04-10
HRP20030389B1 (en) 2009-06-30
MY143630A (en) 2011-06-15
GT200300184A (es) 2006-04-21
HU0301289D0 (en) 2003-07-28
TR200300696A2 (tr) 2004-10-21
EP1462998A3 (en) 2005-12-07
NO328434B1 (no) 2010-02-15
NZ525857A (en) 2005-06-24
NO20032205L (no) 2004-09-28
KR100996738B1 (ko) 2010-11-25
US7486294B2 (en) 2009-02-03
ECSP034609A (es) 2004-10-26
TWI336042B (en) 2011-01-11

Similar Documents

Publication Publication Date Title
KR100996738B1 (ko) 벡터 그래픽을 위한 마크업 언어 및 오브젝트 모델
KR100962920B1 (ko) 비주얼 및 장면 그래프 인터페이스
KR101109395B1 (ko) 벡터 그래픽을 위한 마크업 언어 및 객체 모델
US7466315B2 (en) Visual and scene graph interfaces

Legal Events

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

Payment date: 20131016

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20141017

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20151016

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20161019

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20171018

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20181018

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20191016

Year of fee payment: 10