KR20060105422A - 데스크톱 윈도우 관리자 합성 - Google Patents

데스크톱 윈도우 관리자 합성 Download PDF

Info

Publication number
KR20060105422A
KR20060105422A KR1020057008053A KR20057008053A KR20060105422A KR 20060105422 A KR20060105422 A KR 20060105422A KR 1020057008053 A KR1020057008053 A KR 1020057008053A KR 20057008053 A KR20057008053 A KR 20057008053A KR 20060105422 A KR20060105422 A KR 20060105422A
Authority
KR
South Korea
Prior art keywords
window
content
computer
legacy
desktop
Prior art date
Application number
KR1020057008053A
Other languages
English (en)
Inventor
스코트 행기에
빅토 탄
게라도 버무데즈
그레고리 디. 스웨드버그
마크 알. 리가메리
그레그 에스. 멜랜더
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20060105422A publication Critical patent/KR20060105422A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2203/00Indexing scheme relating to G06F3/00 - G06F3/048
    • G06F2203/048Indexing scheme relating to G06F3/048
    • G06F2203/04804Transparency, e.g. transparent or translucent windows

Abstract

합성된 데스크톱 모델 오퍼레이팅 시스템을 사용하여 컴퓨터 상에 데스크톱을 렌더링하는 방법 및 시스템이 개시된다. 합성된 데스크톱 윈도우 관리자는 애플리케이션 프로그램으로부터 콘텐츠 정보를 수신할 때 장래의 참조를 위해 버퍼 메모리에 윈도우를 드로잉하고, 최신의 그래픽 하드웨어 및 시각적 효과를 이용하여 윈도우가 드로잉되어 있는 콘텐츠에 기초해 윈도우를 렌더링한다. 윈도우는 또한 가상 광원을 포함한 환경 변수에 기초해 렌더링될 수도 있다. 각 윈도우의 프레임 부분은 데스크톱의 콘텐츠에 기초해 프로스티드 글래스(frosted glass)의 외관을 갖는 비트맵을 쉐이딩하는 픽셀에 의해 생성될 수 있으며, 그 데스크톱의 상부에 프레임이 디스플레이된다. 레거시 지원이 제공되며, 따라서 오퍼레이팅 시스템은 비레거시 애플리케이션 윈도우와 일관성있게 보이도록 레거시 애플리케이션에 의해 생성된 윈도우를 드로잉 및 렌더링할 수 있다.
렌더링, 드로잉, 윈도우 관리자, 프로스티드 글래스

Description

데스크톱 윈도우 관리자 합성{COMPOSITING DESKTOP WINDOW MANAGER}
본 발명은 일반적으로 컴퓨터 그래픽 및 컴퓨터 오퍼레이팅 시스템에 관한 것이다. 보다 상세하게는, 본 발명은, 합성-불가지론 레거시 애플리케이션들에 대해 본질적으로 지원하며, 데스크톱을 관리하고 이 데스크톱을 오퍼레이팅 시스템을 위해 단일 또는 다수의 컴퓨터 디스플레이 상에 렌더링하는 3D 합성 데스크톱 윈도우 관리자를 제공한다.
컴퓨터 오퍼레이팅 시스템은 일반적으로 최종 사용자에 그래픽 사용자 인터페이스(GUI)를 제공하는 쉘을 갖는다. 쉘은 사용자와 오퍼레이팅 시스템 간의 직접 통신을 제공하는 소프트웨어 컴포넌트 중 하나 또는 그 조합으로 이루어져 있다. 그래픽 사용자 인터페이스는 일반적으로 사용자가 오퍼레이팅 시스템과 상호 작용하기 위한 그래픽 아이콘 지향(graphical icon-oriented) 및/또는 메뉴 구동(menu driven) 환경을 제공하며, 종종 데스크톱 메타포어(desktop metaphor)에 기초한다. 보다 상세하게는, 그래픽 사용자 인터페이스는 책상에서 일하는 실세계 활동을 모델링하도록 설계되어 있다. 데스크톱 환경은 일반적으로 단일 디스플레이 장치의 전체 표면을 차지하거나 다수의 디스플레이 장치에 걸쳐 있을 수 있으며, 아이콘, 메뉴, 커서 및 윈도우 등의 하위 사용자 인터페이스 객체를 호스팅한 다.
데스크톱 환경에 의해 호스팅되는 렌더링된 객체들의 유형들 중에는 윈도우라고 하는 화면의 시각적으로 묘사된 영역이 있다. 윈도우는 일반적으로 고유의 사용자 활동에 전용되어 있으며 써드파티 소프트웨어 애플리케이션 또는 시스템 애플리케이션에 의해 생성되고 관리된다. 각각의 윈도우는 그의 특정의 애플리케이션 프로그램의 제어 하에서 그 윈도우가 가상 디스플레이 장치인 것처럼 동작하고 그의 콘텐츠를 독립적으로 디스플레이한다. 윈도우는 일반적으로 상호작용적으로 크기 조정되고, 디스플레이 여기저기로 이동되며 또 서로 완전히 또는 부분적으로 오버랩하도록 적층된 순서로 배열될 수 있다. 일부 윈도우 환경에서, 윈도우는 크기가 아이콘으로 최소화되거나 크기가 전체 디스플레이 표면을 차지하도록 최대화되거나 하는 등 개별적인 시각적 또는 행동적 상태를 가질 수 있다. 데스크톱 윈도우의 컬렉션은 통상 당업계에서 Z-order라고 알려져 있는, 윈도우가 디스플레이되는 위에서 아래로 순서(top to bottom order)를 할당받으며, 그에 의해 임의의 윈도우는 Z-order와 관련하여 그 자신보다 더 낮은 모든 다른 윈도우 위에 오게 되어 화면 상에서 동일한 투영 위치를 차지하게 된다. 단일의 선택된 윈도우는 임의의 주어진 시간에 "초점'을 가지며, 사용자의 입력에 수용적(receptive)이다. 사용자는 마우스 또는 다른 포인팅 장치로 윈도우를 클릭함으로써 또는 시스템 정의 키보드 단축키 또는 키 조합을 이용함으로써 입력 초점을 다른 윈도우로 보낼 수 있다. 이것은 사용자가 물리적 책상 위에 임의로 쌓아두거나 정렬될 수 있는 종이 문서 및 다른 아이템을 관리하는 실세계 시나리오와 유사한 방식으로 다수의 애플 리케이션 프로그램, 파일 및 문서를 가지고 효율적으로 작업할 수 있게 해준다.
많은 종래의 그래픽 사용자 인터페이스 데스크톱 구현의 단점은 시각적으로 화려한 콘텐츠를 표현하거나 그래픽 렌더링 기술의 향상을 이용하는 능력이 제한되어 있다는 것이다. 이러한 향상은 물리적으로 모델링된 (조명 처리된, 쉐이딩 처리된, 텍스처 처리된, 투명한, 반사하는, 굴절하는) 2차원 및 3차원 콘텐츠와 매끄러운 고성능 애니메이션의 실시간 렌더링을 포함한다. 데스크톱 상에서 그래픽 렌더링 향상을 활용하는 데 이용가능한 제한된 서비스와 반대로, 시각적으로 화려한 콘텐츠는 Windows
Figure 112005023823557-PCT00001
브랜드 오퍼레이팅 시스템 및 유사 오퍼레이팅 시스템 쉘의 그래픽 사용자 인터페이스 내에 윈도우 화면 또는 전체 화면을 실행시키는 어떤 애플리케이션 프로그램으로 가능하다. 이러한 콘텐츠를 제공하는 애플리케이션 프로그램의 유형들은 실시간 3D 애니메이션 및 효과를 갖는 비디오 게임, 광선 추적기(ray tracer) 등의 최신의 그래픽 저작 도구, 및 최신의 2D 및 3D 출판 애플리케이션이다. 이들 프로그램의 시각적 출력이 다른 윈도우 및 데스크톱 자체를 제외하고 그의 애플리케이션 윈도우(들)의 콘텐츠 영역 또는 렌더링된 전체 화면으로 제한되기 때문에, 애플리케이션 프로그램의 화려한 그래픽 출력은 결코 데스크톱 환경의 표현에 기여하지 못한다.
컴퓨터 오퍼레이팅 시스템은 아이콘, 메뉴, 커서, 윈도우 및 데스크톱 등의 사용자 인터페이스 객체를 관리하고, 마우스 및 키보드 등의 입력 장치로부터의 이벤트들을 조정하며, 사용자 인터페이스 서비스를 소프트웨어 애플리케이션에 제공하는 책임을 맡고 있는 소프트웨어 레이어(software layer)를 이용한다. 이 소프 트웨어 레이어는 데스크톱 윈도우 관리자(Desktop Window Manager, DWM)라고 말할 수 있다. 데스크톱 윈도우 관리자(DWM)의 렌더링 로직, 입력 이벤트 라우팅, 및 애플리케이션 프로그래밍 인터페이스(API)는 모두 함께 사용자 인터페이스 정책을 구현하고, 이 정책은 이어서 오퍼레이팅 시스템의 전체적인 사용자 경험을 정의한다. 현재까지 화려한 시각적 데스크톱의 결여에 대한 주된 이유는 DWM이 데스크톱을 관리하고 렌더링하는 방법 때문이었다. 종래의 DWM 구현은 주로 CPU 및 GPU 대역폭 뿐만 아니라 비디오 및 시스템 메모리 리소스를 보존할 필요성로부터 발전한 데스크톱을 렌더링하는 "무효화" 모델을 이용한다.
무효화 모델에서, 윈도우가 크기 조정되거나 이동될 때, 또는 애플리케이션이 윈도우의 전부 또는 일부를 재드로잉하고자 할 때, 디스플레이의 영향을 받는 부분이 "무효화"된다. DWM은 내부적으로 윈도우 크기 또는 이동에 의해 영향을 받는 영역을 무효화시키는 반면, 그 자신의 윈도우의 전부 또는 일부의 재드로잉을 시도하는 애플리케이션은 오퍼레이팅 시스템에 API를 통해 그의 윈도우의 지정된 영역을 무효화시키도록 지시한다. 어느 경우든지, DWM은 온-스크린 갱신을 실제로 필요로 하는 요청된 영역의 서브셋을 결정함으로써 무효화 요청을 처리한다. DWM은 일반적으로 타겟 윈도우와 연관된 교차 영역들, 타겟을 덮고 있는 다른 윈도우들, 영향을 받는 윈도우들과 연관된 클리핑 영역들, 및 디스플레이의 가시 경계의 유지된 리스트를 조회함으로써 이것을 달성한다. DWM은 이어서 갱신을 필요로 하는 영역을 지정하는 페인트 메시지를 금지된 위에서 아래로 순서로 각각의 영향받은 애플리케이션에 전송한다. 애플리케이션은 지정된 영역을 존중하거나 무시하거 나 할 수 있다. 로컬 갱신 영역 외부에서 애플리케이션에 의해 수행된 임의의 페인팅은 그래픽 디바이스 인터페이스(GDI) 등의 하위 레벨 그래픽 렌더링 엔진에 의해 제공되는 서비스를 사용하여 DWM에 의해 자동적으로 클리핑된다.
무효화 메시징 모델의 이점은 디스플레이 메모리의 보존이다. 즉, 무효화 기반 DWM은 현재 디스플레이된 콘텐츠 아래에 무언가 있을 수 있음을 "기억"하지 않고 단일 데스크톱을 드로잉하기에 충분한 버퍼 메모리를 보유하기만 하면 된다. 그렇지만, 데스크톱 상의 윈도우들이 위에서 아래로 순서로 렌더링되기 때문에, GDI를 통한 비직사각형 윈도우 및 화려한 2D 애니메이션 등의 특징은 복잡한 영역 및/또는 디스플레이 표면의 광범위한 샘플링을 수반하는 CPU 위주의 계산(CPU intensive calculation)을 필요로 하는(그에 의해 그래픽 하드웨어 기반 가속의 잠재성을 제한함) 반면, 투명성, 쉐도우, 3D 그래픽 및 최신 조명 효과 등의 다른 특징은 극히 어려우며 아주 리소스 소모적(resource intensive)이다.
예로서, 역사적으로 USER로서 알려져 있는 Microsoft Windows
Figure 112005023823557-PCT00002
XP 윈도우 관리자는 Windows
Figure 112005023823557-PCT00003
브랜드 오퍼레이팅 시스템의 등장 이후로 그래픽 사용자 인터페이스 서브시스템(지금은 Win32로 알려져 있음)의 주요 컴포넌트로서 기능해왔다. USER는 디스플레이를 렌더링하기 위해 2차원 그래픽 디바이스 인터페이스(GDI) 그래픽 렌더링 엔진을 이용한다. GDI는 Win32의 다른 주요 서브컴포넌트이며, 최초의 Windows
Figure 112005023823557-PCT00004
브랜드 오퍼레이팅 시스템에 존재하는 렌더링 기술에 기초하고 있다. USER는 GDI 클리핑 영역 및 2D 드로잉 프리미티브와 협력하여 무효화 메시징 모델 을 사용하여 각각의 윈도우를 디스플레이에 렌더링한다. 데스크톱을 렌더링함에 있어서의 USER의 주된 동작은 데스크톱 렌더링의 무효화 모델에 따라, 시각적 갱신을 필요로 하는 디스플레이의 영역들의 식별, 및 애플리케이션에 드로잉할 필요성 및 장소를 알려주는 것을 포함한다.
데스크톱 렌더링에서의 그 다음 발전은 데스크톱 합성이라고 말하는 아래에서 위로(bottom-to-top) 렌더링 방식이다. 합성 DWM, 즉 CDWM에서, 데스크톱은 하부 레이어로부터 상부 레이어쪽으로 드로잉된다. 즉, 데스크톱 배경이 먼저 드로잉되고, 이어서 아이콘, 폴더, 그리고 데스크톱 바로 위에 있는 콘텐츠, 그 뒤를 이어 한 레벨 위의 폴더가 드로잉되며, 이하 마찬가지이다. 아래에서 위로 데스크톱을 렌더링함으로써, 각각의 반복 레이어는 그의 콘텐츠를 그 아래쪽에 있는 레이어 상에 둘 수 있다. 그렇지만, 데스크톱 합성은 메모리 소모적 프로세스인데, 그 이유는 CDWM이 데스크톱에 드로잉된 각 아이템의 복사본을 메모리에 보유하기 때문이다. 최신의 비디오 하드웨어 및 컴퓨터 메모리를 훨씬 더 저렴하게 만든 제조 기술 및 최근의 시장 변화 이전에는, 단지 상업용의 고가인, 고급 컴퓨팅 시스템만이 영화의 특수 효과를 준비하기 위한 것 등의 합성 엔진을 구현할 수 있었다.
중저급 컴퓨터 비디오 하드웨어의 발전은 대체로 대중적인 오퍼레이팅 시스템에서 이용가능한 그래픽 서비스에 의해 주도되어 왔다. 그렇지만, 대중적인 오퍼레이팅 시스템에서 이용가능한 그래픽 서비스는 이전의 애플리케이션 소프트웨어와의 호환성 유지의 필요성 및 적당한 가격의 비디오 하드웨어의 제한된 기능을 비롯한 여러가지 이유로 인해 그다지 진보되지 않았다. 그렇지만, 보다 최근에 실시 간 3D 컴퓨터 게임은 리테일 비디오 하드웨어를 발전시키기 위한 주된 시장 유인으로서 오퍼레이팅 시스템을 능가하였으며, 오래지 않아 아주 뛰어난 수준의 정교함을 달성하였다. 실시간의 하드웨어 기반 3D 가속은 이제 저렴한 가격으로 소비자가 이용할 수 있다. 따라서, 한때 가속 텍스처 및 조명 알고리즘 등의 아주 고도의 것으로 생각되었던 그래픽 하드웨어 특징, 3D 변환 및 GPU를 직접 프로그램하는 기능은 용이하게 이용할 수 있다. 현재, 일반적으로 게임 소프트웨어 및 고도로 전문화된 그래픽 애플리케이션만이 이러한 특징을 실제 이용하고 있으며, 그렇게 하기 위해 이들은 레거시 Win32 윈도우 관리자(USER) 및 GDI를 무시해야만 한다.
합성 데스크톱 모델을 구현하는 데 있어 다른 장애는 무효화 모델 DWM과 함께 사용하기 위해 작성된 레거시 애플리케이션이 합성 환경에서는 제대로 기능하지 않는다는 것이다. 이러한 이유는 레거시 애플리케이션의 코어 렌더링 로직이 오퍼레이팅 시스템의 무효화 모델 DWM API에 기초하기 때문이다. 즉, 사용자 상호작용 또는 내부 상태의 변화에 직접 응답하여 윈도우 콘텐츠를 렌더링하는 것이 아니라, 레거시 애플리케이션은 오퍼레이팅 시스템 또는 그 자신의 무효화 요청에 의해 발생된 페인트 메시지의 수신시에만 드로잉을 한다. 가장 어려운 해결책은 애플리케이션을 대신하여 합성 DWM이 레거시 GUI 플랫폼을 대용하게 해주는 수단을 고안하는 것을 포함한다. 더 간단한 대안은 애플리케이션을 합성된 데스크톱 환경으로부터 배제시키는 것(당업계에서 "샌드 박싱(sand boxing)"이라고 하는 방법) 또는 간단히 레거시 애플리케이션 호환성을 모두 포기하는 것을 포함한다.
따라서, 합성 모델을 사용하여 데스크톱을 렌더링하는 풍성하고 완전한 기능 을 갖춘 오퍼레이팅 시스템을 제공하고 또 최신의 그래픽 하드웨어를 이용할 수 있는 데스크톱 윈도우 관리자를 제공하는 것이 개선일 것이다. 또한, 최신의 텍스처, 조명, 및 3D 변환을 사용하고 또 무효화 모델형 데스크톱 관리자에서 사용하기 위해 최초로 작성된 레거시 애플리케이션을 지원하는 데스크톱을 제공하는 것이 기술 분야에서 개선일 것이다.
<발명의 요약>
이하는 본 발명의 일부 측면들에 대한 기본적인 이해를 제공하기 위해 본 발명의 간략한 요약을 제공한다. 이 요약은 본 발명의 전체적인 개요는 아니다. 이 요약은 본 발명의 주된 또는 필수적인 구성요소를 식별하거나 본 발명의 범위를 기술하기 위한 것도 아니다. 이하의 요약은 단지 이하에 제공되는 보다 상세한 설명에 대한 서문으로서 간략화된 형태로 본 발명의 일부 개념들을 제공한다.
전술한 종래 기술에서의 제한을 극복하기 위해, 또 본 명세서를 읽으면서 이해할 때 명백하게 될 것인 다른 제한을 극복하기 위해, 본 발명은 최신의 그래픽 및 렌더링 기능을 제공하는 합성 데스크톱에 관한 것이다.
본 발명의 제1의 예시적인 측면은, 합성 데스크톱 윈도우 관리자(CDWM)가 윈도우 콘텐츠를 포함하는 애플리케이션 렌더링된 메모리 표면(memory surface)을 관리할 때, CDWM이 합성된 디스플레이 상의 다른 윈도우의 콘텐츠와 함께 그 콘텐츠를 디스플레이하기 위해 이 사전 렌더링된 표면을 사용하는 오퍼레이팅 시스템에서 데스크톱 윈도우를 렌더링하는 소프트웨어 및 컴퓨터 구현 방법을 제공한다. 구체적으로는, CDWM은 윈도우 또는 그의 일부분을 위해 리디렉션된 디스플레이 표면을 2D 또는 3D 메쉬 프리미티브에 적용된 텍스처로서 사용하며, 이 프리미티브는 이어서 렌더링을 위해 저레벨 그래픽 엔진으로 포워딩된다. 이 설명은 윈도우의 애플리케이션 발생 콘텐츠 부분의 배경을 이루는 3D 윈도우 프레임의 렌더링을 포함한다. 합성된 윈도우 프레임은 별도의 크기 조정 가능한 3D 메쉬 프리미티브에 매핑된 별도의 텍스처를 포함하며, 이 프리미티브는 드롭 쉐도우(drop shadow)가 배경을 이루는 프로스티드 글래스 슬래브(frosted glass slab)의 외관을 생성하기 위해 CDWM이 그래픽 디스플레이 장치에 이전에 로드했을 수 있는 픽셀 쉐이더 루틴에 대한 선택적인 파라미터와 함께 그래픽 렌더링 엔진으로 포워딩된다. 본 발명의 부가의 예시적인 측면은 무효화 모델 데스크톱 윈도우 관리자와 함께 사용하기 위해 설계된 애플리케이션에 대한 레거시 지원을 제공한다.
본 발명 및 그의 이점에 대한 보다 완전한 이해는 유사한 참조 번호가 유사한 특징을 가리키고 있는 첨부 도면을 고려하여 이하의 설명을 참조하면 달성될 것이다.
도 1a는 본 발명의 예시적인 실시예의 하나 이상의 측면을 위해 사용될 수 있는 오퍼레이팅 환경을 나타낸 도면.
도 1b는 합성된 데스크톱 플랫폼의 예시적인 실시예에서 컴포넌트들 간의 기능 및 서비스의 분포를 나타낸 도면.
도 2는 본 발명의 예시적인 측면에 따른 합성 방법을 설명한 도면.
도 3은 본 발명의 예시적인 측면에 따른 윈도우를 나타낸 도면.
도 4는 본 발명의 예시적인 측면에 따른 윈도우 합성 방법의 일부분을 나타낸 도면.
도 5는 본 발명의 예시적인 측면에 따라 렌더링된 프로스티드 글래스 프레임을 갖는 윈도우를 나타낸 도면.
도 6은 동적 윈도우 해부 구조를 갖는 윈도우를 나타낸 도면.
도 7은 메쉬 크기 조정 동안에 사용되는 영역을 나타낸 도면.
여러가지 실시예들에 대한 이하의 설명에서, 본 명세서의 일부를 이루고 있으며 또 본 발명이 실시될 수 있는 여러가지 실시예가 예로서 도시되어 있는 첨부 도면을 참조한다. 다른 실시예들이 이용될 수 있고 구조상 및 기능상 수정이 본 발명의 범위 및 정신을 벗어나지 않고 행해질 수 있음을 이해해야 한다.
본 발명은 그의 양호한 렌더링 모델로서 데스크톱 합성을 사용하는 데스크톱 윈도우 관리자(DWM)를 제공한다. 본 발명의 데스크톱 윈도우 관리자는 본 명세서에서 합성 데스크톱 윈도우 관리자(CDWM)라고 한다. CDWM은 UCE(Unified Compositing Engine, 통합 합성 엔진)라고 하는 합성 서브시스템과 함께 3D 그래픽 및 애니메이션, 쉐도우, 투명성, 최신의 조명 기술 및 데스크톱 상의 다른 화려한 시각적 특징을 제공한다. 본 명세서에서 사용되는 합성 렌더링 모델은 본질적으로 렌더링에 있어서 무효화 단계를 필요없게 해주며, 페인트 및 다른 통지 메시지를 전송할 필요성을 최소화 또는 없애는데, 그 이유는 이 시스템이 필요에 따라 각 윈도우를 렌더링하는 데 충분한 상태 정보를 보유하고 있기 때문이다.
예시적인 오퍼레이팅 환경
도 1은 본 발명이 실시될 수 있는 적당한 컴퓨팅 시스템 환경(100)의 일례를 나타낸 것이다. 컴퓨팅 시스템 환경(100)은 적당한 컴퓨팅 환경의 단지 한 예에 불과하며 본 발명의 사용 또는 기능의 범위에 관해 어떤 제한을 암시하고자 하는 것이 아니다. 컴퓨팅 환경(100)은 예시적인 오퍼레이팅 환경(100)에 설명된 컴포넌트 중 임의의 것 또는 그의 조합과 관련하여 어떤 의존성 또는 요구사항을 갖는 것으로 해석되어서도 안된다.
본 발명은 많은 다른 범용 또는 특수 목적의 컴퓨팅 시스템 환경 또는 구성에서 동작한다. 본 발명과 함께 사용하기에 적당할 수 있는 공지의 컴퓨팅 시스템, 환경 및/또는 구성의 예로는 퍼스널 컴퓨터, 서버 컴퓨터, 개인 휴대 단말기(PDA), 태블릿 PC, 또는 랩톱 PC 등의 휴대용 및 핸드헬드 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 셋톱 박스, 프로그램가능 가전 제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기 시스템 또는 장치 중 임의의 것을 포함하는 분산 컴퓨팅 환경 등이 있다.
본 발명은 컴퓨터에 의해 실행되는 프로그램 모듈 등의 컴퓨터 실행가능 명령어의 일반적인 관점에서 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정의 작업을 수행하거나 특정의 추상 데이터 유형을 구현하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조체 등을 포함한다. 본 발명은 또한 작업들이 통신 네트워크를 통해 링크되어 있는 원격 프로세싱 장치에 의해 수행되는 분산 컴퓨팅 환경에서 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치 를 포함한 로컬 및 원격 컴퓨터 저장 매체 양쪽 모두에 위치될 수 있다.
도 1을 참조하면, 본 발명을 구현하기 위한 예시적인 시스템은 컴퓨터(110)의 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 컴포넌트들로는, 프로세싱 유닛(120), 시스템 메모리(130), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트를 프로세싱 유닛(120)에 연결시키는 시스템 버스(121)가 포함될 수 있지만, 이에 한정되는 것은 아니다. 시스템 버스(121)는 다양한 버스 아키텍처 중의 임의의 것을 사용하는 로컬 버스, 주변 버스, 및 메모리 버스 또는 메모리 컨트롤러를 포함하는 몇가지 유형의 버스 구조 중의 임의의 것일 수 있다. 예로서, 이러한 아키텍처는 산업 표준 아키텍처(ISA) 버스, 마이크로 채널 아키텍처(MCA) 버스, 확장 ISA(Enhanced ISA; EISA) 버스, 비디오 일렉트로닉스 표준 어소시에이션(VESA) 로컬 버스, 및 메자닌(Mezzanine) 버스라고도 하는 주변 컴포넌트 상호접속(PCI) 버스를 포함하지만, 이에 한정되는 것은 아니다.
컴퓨터(110)는 일반적으로 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터(110)에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있으며, 휘발성 및 비휘발성 매체, 분리형(removable) 및 비분리형(non-removable) 매체를 둘다 포함한다. 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있지만, 이에 한정되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 분리형 및 비분리형 매체 둘다를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래쉬 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광학 디스크 저장장치, 자기 카세트, 자기 테이프, 자기 디스크 저장장치 또는 기타 자기 저장장치, 또는 컴퓨터(110)에 의해 액세스될 수 있고 원하는 정보를 저장하는 데 사용될 수 있는 임의의 기타 매체를 포함할 수 있지만, 이에 한정되지 않는다. 통신 매체는 통상적으로 반송파 또는 기타 전송 메카니즘 등의 변조된 데이터 신호에 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈, 또는 다른 데이터를 구현하며, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호 내에 정보를 인코딩하도록 그 신호의 특성 중 하나 이상이 설정되거나 변경된 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 접속 등의 유선 매체와, 음향, RF, 적외선 및 기타 무선 매체 등의 무선 매체를 포함하지만, 이에 한정되지 않는다. 상술한 것들 중의 임의의 조합도 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
시스템 메모리(130)는 ROM(131) 및 RAM(132) 등의 휘발성 및/또는 비휘발성 메모리의 형태의 컴퓨터 저장 매체를 포함한다. 시동중과 같은 때에 컴퓨터(110) 내의 구성요소들간에 정보를 전송하는 것을 돕는 기본 루틴을 포함하는 기본 입출력 시스템(133; BIOS)은 일반적으로 ROM(131)에 저장된다. RAM(132)은 일반적으로 프로세싱 유닛(120)에 의해 즉시 액세스될 수 있는 것 및/또는 프로세싱 유닛(120)에 의해 현재 작동되고 있는 것인 프로그램 모듈 및/또는 데이터를 포함한다. 예로서, 도 1에는 오퍼레이팅 시스템(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)가 도시되어 있지만, 이에 한정되는 것은 아니다.
컴퓨터(110)는 또한 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체도 포함할 수 있다. 단지 예로서, 도 1에는 비분리형 비휘발성 자기 매체로부터 판독하거나 그 자기 매체에 기록하는 하드 디스크 드라이브(141), 분리형 비휘발성 자기 디스크(152)로부터 판독하거나 그 자기 디스크에 기록하는 자기 디스크 드라이브(151), 및 CD-ROM 또는 기타 광학 매체 등의 분리형 비휘발성 광학 디스크(156)로부터 판독하거나 그 광학 디스크에 기록하는 광학 디스크 드라이브(155)가 도시되어 있다. 예시적인 운영 환경에서 사용될 수 있는 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래쉬 메모리 카드, DVD(Digital versatile disk), 디지털 비디오 테이프, 고체 상태 RAM, 고체 상태 ROM 등을 포함하지만 이에 한정되지 않는다. 하드 디스크 드라이브(141)는 일반적으로 인터페이스(140)와 같은 비분리형 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광학 디스크 드라이브(155)는 일반적으로 인터페이스(150)와 같은 분리형 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
앞서 기술되고 도 1에 도시된 드라이브 및 그 관련 컴퓨터 저장 매체는 컴퓨터(110)에 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 및 기타 데이터의 저장을 제공한다. 도 1에서, 예를 들어, 하드 디스크 드라이브(141)는 오퍼레이팅 시스템(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146), 및 프로그램 데이터(147)를 저장하는 것으로 도시되어 있다. 이들 컴포넌트는 오퍼레이팅 시스 템(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)와 동일한 것이거나 그와 다른 것일 수 있음에 유의한다. 오퍼레이팅 시스템(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146), 및 프로그램 데이터(147)는 최소한 이들이 서로 다른 복사본(different copies)임을 나타내기 위하여 다른 번호를 부여하였다. 사용자는 일반적으로 마우스, 트랙볼, 또는 터치 패드라 불리우는 포인팅 장치(161) 및 키보드(162)와 같은 입력 장치를 통해 컴퓨터(110)에 명령 및 정보를 입력할 수 있다. (도시되지 않은) 기타 입력 장치로는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등이 있을 수 있다. 이들 입력 장치 및 그외의 입력 장치는 시스템 버스(121)에 연결된 사용자 입력 인터페이스(160)를 통해 종종 프로세싱 유닛(120)에 접속되지만, 병렬 포트, 게임 포트 또는 유니버설 시리얼 포트(USB)와 같은 기타 인터페이스 및 버스 구조에 의해 접속될 수 있다. 모니터(184) 또는 다른 유형의 디스플레이 장치도 비디오 인터페이스(183) 등의 인터페이스를 통해 시스템 버스(121)에 접속된다. 컴퓨터(110)는 또한 사용자가 스타일러스 입력 장치(186)를 사용하여 입력을 제공할 수 있도록 하기 위해 모니터(184)와 연계하여 사용하기 위한 디지타이저(185)를 포함할 수 있다. 모니터 외에도, 컴퓨터는 또한 출력 주변 인터페이스(187)를 통해 접속될 수 있는 스피커(189) 및 프린터(188) 등의 기타 주변 출력 장치도 포함할 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 이용하여 네트워크화된 환경에서 동작될 수 있다. 원격 컴퓨터(180)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어(peer) 장치, 또는 기타 통상의 네트워크 노드일 수 있으며, 컴퓨터(110)에 관하여 상술한 구성요소 중 다수 또는 그 모두를 일반적으로 포함할 수 있지만, 도 1에는 메모리 저장 장치(181)만이 도시되어 있다. 도 1에 도시된 논리적 접속은 근거리 통신망(LAN; 171) 및 원거리 통신망(WAN; 173)을 포함하지만, 그 외의 네트워크도 포함할 수 있다. 이러한 네트워킹 환경은 사무실, 기업 규모의 컴퓨터 네트워크(enterprise-wide computer network), 인트라넷, 및 인터넷에서 일반적인 것이다.
LAN 네트워킹 환경에서 사용되는 경우, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워킹 환경에서 사용되는 경우, 컴퓨터(110)는 일반적으로 인터넷 등의 WAN(173)을 통해 통신을 설정하기 위한 모뎀(172) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 기타 적절한 메카니즘을 통해 시스템 버스(121)에 접속될 수 있다. 네트워크화된 환경에서, 컴퓨터(110)에 관하여 도시된 프로그램 모듈 또는 그 일부분은 원격 메모리 저장 장치에 저장될 수 있다. 예로서 (한정하고자 하는 것은 아님), 도 1에서는 원격 애플리케이션 프로그램(182)이 메모리 장치(181)에 상주하는 것으로 도시되어 있다. 도시된 네트워크 접속은 예시적인 것이며, 컴퓨터들간의 통신 링크를 구축하는 그 외의 수단이 사용될 수 있음을 잘 알 것이다.
예시적인 실시예
본 발명은 합성 데스크톱 모델, 즉 아래로부터 위로 렌더링 방법을 사용하여 데스크톱 디스플레이를 드로잉 및 유지하기 위해 합성 데스크톱 윈도우 관리자 (CDWM)를 사용할 수 있다. CDWM은 장래의 참조를 위해 콘텐츠를 버퍼 메모리 영역에 유지할 수 있다. CDWM은 아래로부터 위로 데스크톱을 드로잉하여, 데스크톱 배경부터 시작하여 Z-order 역방향 순으로 중첩 윈도우를 통해 진행함으로써 데스크톱을 구성한다. 데스크톱을 구성하는 동안, CDWM은 윈도우가 그 위에 드로잉되고 있는 콘텐츠에 부분적으로 기초하고 또 다른 환경 요인(예를 들어, 광원, 반사 특성 등)에 부분적으로 기초하여 각각의 윈도우를 드로잉할 수 있다. 예를 들어, CDWM은 윈도우에 투명성을 제공하기 위해 ARGB 포맷 텍스처의 알파 채널을 사용할 수 있고 또 가상 광원에 기초하여 윈도우 콘텐츠의 부분(예를 들어, 프레임)을 선택적으로 강조할 수 있다.
CDWM은 오퍼레이팅 시스템(134, 144)의 일부로서 존재할 수 있거나 오퍼레이팅 시스템에 독립적으로, 예를 들면 기타 프로그램 모듈(136, 146)에 존재할 수 있다. 게다가, CDWM은 본 명세서에서 통합 합성 엔진(UCE)이라고 하는 하위 레벨 그래픽 합성 서브시스템에 의존할 수 있으며, 이 UCE는 이하에 더 설명되어 있고 또 2003년 10월 23일자로 출원된 발명의 명칭이 "그래픽 프로세싱 시스템에서의 통합 합성 엔진을 위한 시스템 및 방법(System and Method for a Unified Composition Engine in a Graphics Processing System)"인 동시 계류 중인 출원(대리인 문서 번호 50037.201US01)(여기 인용함으로써 본 명세서에 그 전체 내용이 포함됨)에도 기술되어 있다. 한 예시적인 실시예에서, UCE는 미국 워싱턴 레드몬드 소재의 마이크로소프트사의 Direct3D
Figure 112005023823557-PCT00005
및 DirectX
Figure 112005023823557-PCT00006
기술에 기초하거나 이를 사용한다. 대체 실시예에서, 미국 캘리포니아 마운틴 뷰 소재의 실리콘 그래픽스사의 OpenGL
Figure 112005023823557-PCT00007
그 래픽 엔진에 기초한 X Window 플랫폼 등의 변형과 같은 다른 그래픽 합성 서브시스템이 사용될 수 있다. UCE는 데스크톱 상에 3D 그래픽 및 애니메이션, 투명성, 쉐도우, 조명 효과, 범프 매핑(bump mapping), 환경 매핑, 및 다른 화려한 시각적 특성을 가능하게 해준다.
도 1b는 데스크톱 합성 플랫폼의 예시적인 실시예에 따른 컴포넌트 아키텍처를 나타낸 것이다. 합성 데스크톱 윈도우 관리자(CDWM)(190)는 콤포지션웨어 애플리케이션 소프트웨어(composition-ware Application Software)(191)가 이를 통해 CDWM 윈도우 및 콘텐츠 생성 서비스 그리고 관리 서비스를 획득하는 애플리케이션 프로그래밍 인터페이스(190a), 레거시 윈도우 그래픽 서브시스템(192)이 이를 통해 개별적인 윈도우의 리디렉션된 그래픽 출력에 영향을 주는 변동에 대한 갱신 통지를 전송하는 서브시스템 프로그래밍 인터페이스(190b)(윈도우 그래픽 출력 리디렉션에 대해서는 이하에 보다 상세히 기술함), 및 윈도우 및 그와 관련된 콘텐츠 등의 데스크톱 UI 오브젝트에 대한 Z-order 저장소를 유지하는 UI 오브젝트 관리자(190c)를 포함할 수 있다. UI 오브젝트 관리자는 리소스, 오브젝트 행동 속성, 및 활성 데스크톱 테마와 관련된 렌더링 메트릭을 검색하기 위해 테마 관리자(Theme Manager)(193)와 통신할 수 있다.
레거시 그래픽 사용자 인터페이스 서브시스템(192)은 레거시 윈도우 관리자(192a) 및 레거시 그래픽 디바이스 인터페이스(192b)를 포함할 수 있다. 레거시 윈도우 관리자(192a)는 CDWM의 등장 이전에 개발된 소프트웨어 애플리케이션을 위한 무효화 모델 윈도우 및 데스크톱 서비스를 제공한다. 레거시 그래픽 디바이스 인터페이스(192b)는 레거시 윈도우 관리자 뿐만 아니라 레거시 애플리케이션 둘다에 2D 그래픽 서비스를 제공한다. 데스크톱을 렌더링하기 위한 무효화 모델에 기초한 레거시 그래픽 디바이스 인터페이스는 3D 하드웨어 가속 렌더링 프리미티브 및 변환에 대한 지원을 하지 않을 수 있으며, 비트맵 복사 및 전송 동작에서 본질적으로 픽셀별 알파 채널 투명성을 지원하지 않을 수 있다. 이와 함께, 레거시 윈도우 관리자(192a) 및 그래픽 디바이스 인터페이스(192b)는 무효화 모델을 사용하는 사용자의 선호하는 또는 필수적인 소프트웨어 애플리케이션을 실행시키는 기능을 희생시키지 않고 사용자의 오퍼레이팅 시스템을 업그레이드시키기를 원하는 사용자의 소유 비용을 계속하여 감소시키는 역할을 한다. 최종 사용자에게 불이익이 거의 없도록 또는 전혀 없도록 하는 방식으로 레거시 애플리케이션 윈도우와 콤포지션웨어 애플리케이션 윈도우의 매끄러운 병행 통합을 달성하기 위해, 레거시 그래픽 사용자 인터페이스 서브시스템(192)이 합성 프로세서에 적극적으로 참여할 수도 있다. 실제로, 레거시 애플리케이션의 인지된 플랫폼 환경은 양호하게는 합성된 데스크톱에 대한 애플리케이션의 안정성을 해치지 않도록 하기 위해 변화하지 않지만, 레거시 윈도우가 데스크톱에 렌더링되는 기본적인 방식은 근본적으로 변동된다. 본 발명은 윈도우 그래픽 출력 리디렉션이라고 본 명세서에 기술되는 특징의 부가를 통해 어떻게 이것이 달성되는지에 대해 기술한다.
통합 합성 엔진(UCE)(194)은 렌더링 명령어를 서비스하고 프로그래밍 인터페이스(194a)를 통해 CDWM으로부터 방출된 리소스들을 연합시킬 수 있다. 광의적으로, CDWM에 대한 UCE의 역할은 레거시 윈도우 관리자(192a)에 대한 레거시 그래픽 디바이스 인터페이스(192b)의 역할과 유사하다. UCE 프로그래밍 인터페이스(194a)는 CDWM을 제공하고, 궁극적으로는 애플리케이션, 광범위한 그래픽 서비스에 대한 추상 인터페이스를 제공한다. 이들 UCE 서비스 중에는 리소스 관리, 다중 디스플레이 시나리오로부터의 캡슐화, 및 원격 데스크톱 지원이 있다.
CDWM 기록 동작과 렌더링 동작 간의 그래픽 리소스 경합은 내부 리소스 관리자(194b)에 의해 조정될 수 있다. 리소스 갱신 및 렌더링 서비스에 대한 요청은 프로그래밍 인터페이스 서브컴포넌트(194a)에 의해 UCE의 요청 큐(194c)에 놓여진다. 이들 요청은 시스템 상에 설치된 디스플레이 장치의 리프레쉬 레이트와 일치하는 간격으로 렌더링 모듈(194d)에 의해 비동기적으로 처리될 수 있다. 따라서, UCE(194)의 렌더링 모듈(194d)은 CDWM 요청을 큐에서 제거(dequeue)할 수 있으며, 필요에 따라 리소스 관리자(194b)에 저장된 리소스에 액세스하여 이를 처리할 수 있으며, 또 디스플레이 고유 렌더링 명령어를 어셈블링하여 이를 3D 그래픽 인터페이스(195)로 전달할 수 있다.
데스크톱을 다중 디스플레이로 렌더링하는 것은 이기종 디스플레이 장치들 간의 리프레쉬 레이트, 픽셀 포맷 지원, 및 디바이스 좌표 매핑에서의 차이의 추상화를 필요로 한다. UCE는 이 추상화를 제공할 수 있다.
UCE는 또한 원격 데스크톱 구성에서 네트워크 연결을 통해 그래픽 데이터를 전달할 책임을 맡을 수 있다. 한 특정 시스템의 데스크톱을 다른 것과 효율적으로 분리시키기 위해, 리소스 경합이 회피되어야만 하고, 성능 최적화가 수행되어야만 하며, 보안이 견고해야만 한다. 이들 책임도 또한 UCE에 있다.
3D 그래픽 인터페이스(195)는 Direct3D
Figure 112005023823557-PCT00008
, OpenGL
Figure 112005023823557-PCT00009
, 등과 같은 하위 레벨 직접 모드(immediate-mode)(상태 비저장, stateless) 그래픽 서비스를 포함할 수 있다. 3D 그래픽 인터페이스의 목적은 특정 그래픽 하드웨어 구성의 특징을 통해 추상 인터페이스를 제공하는 것일 수 있다. 3D 그래픽 인터페이스는 단일 디스플레이 장치를 서비스할 수 있으며, UCE는 다중 디스플레이 시스템에서 다중 장치 드라이버(196)를 거쳐 CDWM의 렌더링 명령어를 파싱하여 다수의 그래픽 출력 장치(197) 간에 분배할 수 있다.
유의할 점은 도 1b에 도시된 컴포넌트 아키텍처가 예시적인 실시예의 아키텍처라는 것이다. 도면은 본 발명이 포함할 수 있는 기능을 설명하기 위한 것이다. 이들 기능은 플랫폼의 성능 및 원하는 특성 세트에 따라 도면에 표시한 것보다 더 적은 또는 더 많은 수의 소프트웨어 컴포넌트 사이에 분산될 수 있다. 예를 들어, 테마 관리가 없는 시스템은 별도의 테마 관리자로부터보다는 아마도 CDWM 자체에 관리되는 정적 리소스로서 시스템으로부터 모든 저장 리소스를 도출할 수 있다. 플러그형 윈도우 관리자(plugable window manager)를 허용하는 플랫폼은 합성된 UI 오브젝트 및 리소스 관리의 상세를 추출하기 위해 CDWM 내의 애플리케이션 프로그래밍 인터페이스(190a)를 플러그형 윈도우 관리자 인터페이스로 대체할 수 있다. 다른 가능한 변형은 레거시 애플리케이션 호환성이 요구되지 않는 경우 서브시스템 프로그래밍 인터페이스(190b)를 없앨 수 있다. 도 1b에 도시된 UCE(194)의 서브컴포넌트는 개별적인 프로세스로 분해되어, CDWM 자체 내로 들어가거나 3D 그래픽 인터페이스 내로 통합될 수 있다. 따라서, 광범위한 특정의 컴포넌트 설계가 가능하 며, 그 각각은 본 발명을 포함하는 기능들의 전 범위 또는 그 서브셋을 이행할 수 있다.
도 2는 본 발명의 예시적인 측면에 따라 데스크톱 합성을 수행하는 일반적인 방법을 나타낸 것이다. 단계(201 내지 205)는 윈도우 및 윈도우 콘텐츠를 생성 및 관리하기 위해 합성 데스크톱 윈도우 관리자(CDWM) API를 사용하는 콤포지션 어웨어 애플리케이션(composition aware application)의 상호작용을 기술한 것이다. 단계(207, 209)는 레거시 윈도우 콘텐츠를 합성하기 위한 레거시, 무효화 모델 윈도우 관리자 애플리케이션과 CDWM 사이의 상호작용을 나타낸 것이다.
단계(201)에서, 합성 데스크톱 윈도우 관리자(CDWM)는 (1) 합성 윈도우를 생성하고 (2) 콘텐츠 오브젝트를 첨부하기 위해 콤포지션 어웨어 애플리케이션으로부터 요청을 수신한다. 본 발명은 윈도우별 단일 콘텐츠 오브젝트에 한정되지 않으며, 애플리케이션은 이하에 상세히 기술되는 CDWM API를 거쳐 임의의 수의 콘텐츠 오브젝트를 동적으로 생성하여 윈도우에 첨부할 수 있다(제거 및 파괴도 할 수 있다). 콘텐츠 오브젝트는 부가의 텍스처(광 맵(light map), 거울 반사 맵(specular map), 범프/법선 맵(bump/normal map) 등), 광 및 픽셀 쉐이더 등의 선택적인 보조 리소스와 함께 애플리케이션 정의 또는 시스템 정의 메쉬로 매핑되는 확산 텍스처(diffuse texture)로서 사용될 지정된 크기 및 픽셀 포맷의 래스터 표면을 포함한다. 확산 콘텐츠 텍스처의 픽셀 포맷은 시스템 상에 설치된 비디오 하드웨어에 의해 지원되는 이용가능한 포맷 중 임의의 것일 수 있지만, 현재의 설명의 목적상 32-비트 ARGB일 수 있다. 이 포맷을 요청할 때, 애플리케이션은 알파(A) 채널이 콘텐츠 픽셀의 투명도 레벨을 변화시키는 데 사용될 수 있음을 암시적으로 인식할 수 있으며, 따라서 최종 렌더링 시에 소스 픽셀로 변조시키는 데스크톱 배경 정보의 양에 대한 미세 제어를 제공한다. 단계(203)에서, CDWM은 윈도우에 대한 상태 블록을 할당하며, CDWM은 이 윈도우에 CDWM 구현 콘텐츠 오브젝트를 첨부시킨다. 콘텐츠 오브젝트는 요청된 리소스를 할당하거나 애플리케이션에 의해 포워딩된 리소스를 첨부하며, 이어서 UCE 갱신 요청 시에 즉각적인 액세스를 가능하게 하기 위해 이들 리소스를 UCE로 마샬링(marshals)한다. 단계(205)에서, 애플리케이션은 윈도우 또는 윈도우 콘텐츠에 대한 불필요한 변경을 CDWM에 알려 준다. 이들 변경은 임의의 윈도우 또는 콘텐츠 상태에 영향을 줄 수 있으며, 간단함을 위해 본 설명은 3개의 통상적인 갱신 요청, 즉 콘텐츠 크기, 윈도우 위치 또는 스케일, 또는 콘텐츠의 확산 텍스처의 픽셀에 대한 변경을 나타내고 있다.
레거시 윈도우를 합성하는 프로세스는 데스크톱 합성 초기화로 시작하여, CDWM(190)은 각각의 레거시 윈도우의 그래픽 출력을 임시 메모리 장소로 리디렉션하라는 요청을 레거시 윈도우 및 그래픽 서브시스템(192)으로 전달한다(단계 207). 단계(207)는 레거시 윈도우 및 그래픽 서브시스템을, 각각의 개별적인 윈도우의 렌더링이 별도의 메모리 버퍼로 리디렉션되는 것인 "합성 모드"에 두는 것으로서 보다 일반적으로 기술될 수 있다. 예시적인 실시예에서, 레거시 그래픽 사용자 인터페이스 서브시스템(192)은 윈도우의 렌더링에 관여하는 그래픽 명령어의 출력을 그 윈도우와 연관된 비트맵된 메모리 표면으로 리디렉션한다. 그렇지만, 본 발명은 내장된 드로잉 명령어 및 관련 파라미터를 보유하는 기능, 및 타겟 디스플레이 장 치에 대한 그 다음 비디오 프레임을 합성하는 프로세스 동안에 이들 명령어를 UCE에서 실행하는 것을 포함한다. 이들 리디렉션 버퍼(표면 또는 드로잉 명령어 블록)은 CDWM 또는 레거시 윈도우 관리자(192a)에 의해 관리될 수 있지만, 본 설명의 목적상, 표면 리소스 관리는 CDWM에 집중되어 있다. 각각의 리디렉션 버퍼는 윈도우를 위한 확산 콘텐츠 텍스처 리소스를 구성하거나 이를 발생하는 데 사용된다. 레거시 윈도우 관리자(192a)는 CDWM 윈도우 및 콘텐츠 생성 API를 호출할 필요가 없으며, 통지를 위한 레거시 서브시스템-CDWM 통신 채널은 애플리케이션 인터페이스의 채널과 별개의 것이고, CDWM은 합성된 윈도우 속성(프레임 및 경계 스타일, 캡션 등) 및 상태(감춤/보임, 최소화/최대화, 등)를 기존의 레거시 윈도우 속성으로부터 도출한다. 단계(209)에서, 레거시 윈도우 관리자(192a)는 시각적 갱신을 필요로 할 수 있는 리디렉션된 윈도우 콘텐츠 텍스처에 영향을 주는 어떤 변경도 CDWM(190)에 알려 준다.
단계(211, 219, 223)에서, CDWM(190)은 크기, 위치/스케일 및 픽셀 레벨 텍스처 갱신 요청을 구분하고, 그에 따라 동작한다. 크기 갱신(단계 211) 시에, CDWM은 먼저 프레임이 타겟 윈도우와 연관되어 있는지를 결정한다(단계 213). 프레임이 윈도우와 연관되어 있는 경우(단계 215), CDWM은 콤포지션 어웨어 애플리케이션에 의해 명시적으로 제공되는 2차원 또는 3차원 범위, 또는 레거시 및 CDWM 윈도우 메트릭과 리디렉션된 레거시 표면의 갱신된 차원의 조합에 기초하여 프레임 프리미티브의 적당한 크기 및 방위를 결정한다. 프레임 크기가 결정되었으면, CDWM은 프레임 메쉬의 정점에서의 위치 정보에 대해 적당한 변경을 행하고, 정점 데이터 버퍼를 UCE로 포워딩한다. UCE는 비동기 처리를 위해 메쉬 갱신 디렉티브 및 새로운 정점 정보를 큐 상에 배치한다. 윈도우가 프레임을 갖지 않는 경우, 단계(215)는 무시될 수 있다. 프레임을 갖는 윈도우 또는 프레임이 없는 윈도우 어느 경우든지, 콘텐츠 영역에 영향을 주는 크기 변동은 CDWM으로 하여금 콘텐츠 메쉬를 크기 조정하고 적당한 메쉬 갱신 요청 및 데이터를 UCE로 큐잉하게 할 수 있다(단계 217).
위치(회전 포함) 또는 스케일 갱신(단계 219) 시에, CDWM은 새로운 변환 파라미터를 결정하고 비동기 처리를 위해 데이터와 함께 변환 리소스 갱신 요청을 UCE로 큐잉한다(단계 221). 리소스는 최소한 4×4 변환 행렬로 이루어져 있지만, 필터링된 변환을 지원하기 위해 부가의 데이터를 포함할 수 있다.
단계(223)에서, CDWM은 확산 콘텐츠 텍스처의 픽셀 데이터에 대한 변경을 포함한 갱신 요청을 수신한다. 즉, 애플리케이션은 그의 윈도우 내의 그의 콘텐츠를 갱신한다. 단계(225)에서, CDWM은 비동기 처리를 위해 새로운 픽셀 정보를 UCE로 큐잉함으로써 요청에 서비스할 수 있다.
도 2에 도시된 것 이외에 부가의 갱신 요청이 지원될 수 있음을 당업자라면 잘 알 것이다. 예를 들어, 윈도우 아이콘 또는 캡션 텍스트에 대한 변경은 또한 윈도우와 각각 연관되어 있는 CDWM-관리 아이콘 또는 캡션 콘텐츠 오브젝트의 재드로잉(redraw)을 필요로 할 수 있다. 윈도우 입력 초점은 프레임의 외관에 반영될 수 있으며, 따라서 레거시 윈도우의 경우, 레거시 윈도우 관리자는 그에 따라 프레임 및 아마도 다른 콘텐츠를 재렌더링하는 CDWM에 입력 초점 변경 갱신을 전달할 수 있다.
단계(227)에서, UCE는 CDWM으로부터 들어오는 합성 및 리소스 갱신을 처리하고, 데스크톱의 합성에 참여하는 각각의 활성 비디오 그래픽 어댑터의 비디오 리프레쉬 레이트와 동기된 간격으로, 데스크톱(또는 다중 디스플레이 구성에서는 그의 적절한 일부분)을 디스플레이 크기 배경 버퍼(display-sized backing buffer)로 재렌더링한다. 이것은 3D 그래픽 엔진(Microsoft Direct3D
Figure 112005023823557-PCT00010
)에 의해 제공되는 직접 모드(immediate-mode) 렌더링 서비스를 사용하여 달성되며, 이 엔진은 이어서 데스크톱을 주 디스플레이 표면으로 전송한다.
윈도우를 3D로 드로잉하기 위해, CDWM은 베이스 콘텐츠 오브젝트(base content object) 및 하나 이상의 자식 콘텐츠 오브젝트를 포함한 여러가지 컴포넌트를 사용하여 윈도우 해부구조를 정의할 수 있다. 베이스 콘텐츠 오브젝트는 윈도우 프레임, 또는 경계를 정의하며, 베이스 지오메트리(base geometry), 베이스 범위(base extent), 베이스 재료 속성(base material property) 및 베이스 콘텐츠 여백(base content margin)으로 이루어져 있다. 베이스 콘텐츠 오브젝트 및 자식 콘텐츠 오브젝트는 각각 시스템에 의해 전체적으로 정의 및 관리될 수 있거나 또는 커스텀 콘텐츠 요소(custom content element)의 경우, 애플리케이션에 의해 관리될 수 있다. 콘텐츠 오브젝트에 대해서는 이하에서 보다 상세히 기술한다.
도 3은 본 발명의 예시적인 측면에 따른 애플리케이션 윈도우를 나타낸 것이다. 애플리케이션 윈도우(301)는 여러가지 영역 및 컴포넌트를 포함할 수 있다. 윈도우(301)의 프레임 또는 베이스 콘텐츠(303)는 버튼(305)(예를 들어, 윈도우의 복원, 최대화, 최소화, 닫기 등을 수행하는 데 사용됨), 표시 아이콘(indicative icon)(307), 스크롤바(309), 메뉴바(311), 및 윈도우 캡션 텍스트(313)를 포함한 자식 콘텐츠를 호스팅할 수 있다. 주 콘텐츠 오브젝트 영역(315)은 레거시 윈도우 및 그래픽 사용자 인터페이스 서브시스템으로부터 획득한 리디렉션 버퍼로부터 도출되거나 또는 콤포지션 어웨어 소유 애플리케이션에 의해 생성되어 표준 베이스 콘텐츠에 첨부되고 렌더링될 수 있다. 당업자라면 도 3이 기본적인 윈도우 요소를 예시한 것에 불과하다는 것과 부가의 또는 다른 윈도우요소가 부가적으로 또는 대안적으로 사용될 수 있다는 것을 잘 알 것이다. 게다가, 윈도우 프레임 요소는 다른 대안에서는 예를 들어 애플리케이션 프로그램에 독특한 룩앤필(look and feel)을 제공하기 위해 애플리케이션에 의해 제공될 수 있다. 애플리케이션이 커스텀 자식 콘텐츠 오브젝트로서 스크롤바 요소를 제공하고 그에 따라 이들 요소가 애플리케이션 프로그램에 특유한 외관 및 행동을 드러내주는 예가 있다. 게다가, 애플리케이션은 CDWM API를 사용하여 저장 프레임 요소 중 하나 이상을 제거 또는 재배치하려고 할 수 있다. 애플리케이션은 종래 기술에서 보편적인 제한인 단일 주 콘텐츠 영역으로 제한될 필요는 없다.
CDWM은 단일 윈도우와 연관된 다중 애플리케이션 생성 및 렌더링 콘텐츠 영역을 지원할 수 있다. 애플리케이션에 보다 독특한 사용자 경험을 제공하는 기능을 제공하기 위해, 본 발명의 하나 이상의 실시예에서, CDWM은 윈도우가 드로잉될 수 있는 방식에 있어서의 유연성을 제공한다. 즉, CDWM은 각 애플리케이션을 단일의 직사각형 클라이언트 콘텐츠 영역으로 한정하지 않고 애플리케이션이 다수의 커 스텀 콘텐츠 오브젝트(각각이 임의의 형상을 가짐)를 정의할 수 있게 해줌으로써 애플리케이션이 윈도우의 디폴트 해부구조를 변경할 수 있게 해줄 수 있다.
따라서, 각각의 CDWM 윈도우는 베이스 콘텐츠 오브젝트(즉, 프레임) 및 하나 이상의 자식 콘텐츠 오브젝트의 컬렉션으로 이루어질 수 있다. 각각의 콘텐츠 오브젝트는 고유의 콘텐츠 속성 세트에 의해 정의될 수 있으며, 키보드 및 마우스 이벤트를 선택적으로 수신하도록 구성될 수 있다. CDWM은 애플리케이션 정의되고 콘텐츠-로컬인 3D 좌표(application-defined, content-local, 3D coordinate)에 대해 마우스 히트-테스트 포인트(mouse hit-test point)를 매핑하고 마우스 이벤트 통지를 애플리케이션에 전달한다. 콘텐츠 오브젝트는 시스템에 의해 전부 관리될 수 있거나, 커스텀 콘텐츠 요소의 경우, 애플리케이션에 의해 관리될 수 있다. 시스템 관리 콘텐츠 오브젝트의 예는 애플리케이션 표시 아이콘, 프레임 버튼(예를 들어, 최소화, 복원, 닫기), 캡션 텍스트, 및 어떤 메뉴바 및 스크롤바가 있다. 애플리케이션 관리 콘텐츠 오브젝트는 애플리케이션이 그의 주 시각적 출력을 렌더링하는 그 콘텐츠 오브젝트, 예를 들어 워드 프로세서에 의한 텍스트, 스프레드시트 애플리케이션에 의한 숫자 그리드 또는 사진 편집 애플리케이션에 의한 이미지를 포함한다.
콘텐츠 텍스처는 시스템에 의해 관리되는 비트맵일 수 있거나, 커스텀 콘텐츠의 경우 애플리케이션에 의해 관리되는 비트맵일 수 있다. 콘텐츠 텍스처는 단일 반복으로 콘텐츠 지오메트리로 선형 매핑될 수 있다. 종횡비(aspect ratio)는 콘텐츠 지오메트리에 의해 결정될 수 있으며, 텍스처 좌표는 콘텐츠 지오메트리에 노출될 수 있다. 콘텐츠의 확대는 콘텐츠 텍스처의 그의 지오메트리에 대한 매핑에 영향을 주는 스케일링 변환으로 제어될 수 있다. CDWM은 디폴트 대화형 메카니즘을 제공할 수 있으며, 이 메카니즘에 의해 사용자는 시스템 제공 메뉴 옵션, 슬라이더 제어, 및/또는 마우스 및 키보드 조합 등의 줌 인자(zoom factor)를 조절할 수 있다.
각각의 재렌더링 이전에, 픽셀별 알파를 지원하는 포맷으로 된 확산 텍스처를 갖는 콘텐츠 표면은 애플리케이션(또는 저장 콘텐츠 오브젝트의 경우 시스템)의 자유 재량으로 시스템에 의해 제로 알파로 초기화될 수 있다. 따라서, 기초를 이루는 베이스 콘텐츠 오브젝트는 콘텐츠 표면의 비페인트 영역(unpainted area)에 디스플레이될 수 있다. 이것은 프로그래밍 모델 및 사용자 경험 둘다를 향상시키는데, 그 이유는 애플리케이션이 렌더링 이전에 콘텐츠 표면을 지울 필요가 없기 때문이며, 사용자는 윈도우 내의 스테일 영역 또는 비페인트 영역(stale or unpainted area) 및 플리커(flicker)를 할애받는다.
일부 실시예들에서, 특정 콘텐츠 오브젝트, 특히 애플리케이션이 그의 주 그래픽 출력을 그에게로 렌더링하는 콘텐츠 오브젝트는 그와 연관된 재료 속성을 갖지 않을 수 있는데, 그 이유는 사용자에게 혼란스러운 방식으로 또는 사용자의 활동을 다른 방식으로 방해하는 방식으로 콘텐츠가 광 또는 환경과 상호작용하도록 하는 것이 바람직하지 않기 때문이다. 콘텐츠 오브젝트의 시각적 외관은 이러한 실시예에서는 그의 텍스처, 지오메트리 및 아마도 정점별 또는 픽셀별 알파값에 의해서만 결정될 수 있다.
도 6은 본 명세서에 기술한 바와 같이 동적인 비표준 해부구조를 갖는 윈도우(601)의 일례를 나타낸 것이다. 윈도우(601)는 비표준 형상(즉, 비직사각형)의 베이스 프레임 오브젝트(603), 비표준 위치(윈도우의 우측 상부 코너 이외의 위치)에 배치된 비표준 형상(비직사각형)의 프레임 버튼 오브젝트(605), 비표준 위치(윈도우의 좌측 상부 코너 이외의 위치)에 있는 시스템 제공 표시 프레임 아이콘 오브젝트(607), 및 역시 비표준 위치(프레임의 상부에 왼쪽 맞춤되지 않은 위치)에 있는 프레임 윈도우 캡션 오브젝트(613)를 갖는다. 도 6에서, 윈도우와 연관된 애플리케이션은 2개의 주 콘텐츠 오브젝트 영역(615a, 615b)을 정의한다. 주 콘텐츠 오브젝트 영역(615a)은 정규(즉, 직사각형) 형상을 가지는 반면, 주 콘텐츠 오브젝트 영역(615b)은 비정규의 비직사각형 형상을 갖는다. 윈도우(601)는 또한 예를 들어 브라우징 컨텍스트에 앞으로 및 뒤로 네비게이션 콘트롤을 각각 제공하는 애플리케이션 정의 프레임 버튼 오브젝트(617, 619)를 포함할 수 있다.
CDWM은 애플리케이션 윈도우(301)의 베이스 부분을 3차원(3D) 오브젝트로서 렌더링할 수 있다. 3D 메쉬 프리미티브는 윈도우 오브젝트의 형상(베이스 지오메트리)을 정의하는 데 사용될 수 있고, 주 확산 텍스처(primary diffuse texture)는 메쉬의 3D 지오메트리에 매핑될 수 있으며, 조명, 쉐이딩, 굴절, 번짐 및 다른 특수 효과 파라미터 및 리소스를 포함할 수 있는 선택적인 재료 속성이 부속 텍스처(ancillary texture)를 포함하여 렌더링 프로세스 동안 적용된다. 부속 텍스처는 데스크톱 환경에서 광원, 커서 및 다른 UI 오브젝트를 갖는 "생생한" 물리적으로 모델링된 상호작용을 제공하기 위해 기술 분야에 공지된 그래픽 효과를 위한 리소 스로서 사용될 수 있다. 따라서, 텍스처는 픽셀별 3D 법선 정보(법선/범프 매핑), 광 마스크(주변광 필터, 확산광 필터, 및 반사광 필터), 반사 소스(예를 들어, 윈도우 상을 돌아다닐 때 커서의 반사), 정적 환경 맵 등의 소스로서 기능할 수 있다.
전술한 바와 같이, 베이스 지오메트리의 정점 포맷은 선택적으로 ARGB 포맷의 32-비트 확산 컬러 성분 및 최대 n개의 텍스처를 메쉬 지오메트리에 매핑하기 위한 텍스처 좌표쌍{tun, tvn}을 포함할 수 있다. 당업계에서 잘 알려져 있는 바와 같이, tu 및 tv의 각각의 정수 증분은 각각의 차원에서의 텍스처의 반복을 정의한다. 예를 들어, {0.0, 0.0}(텍스처 좌, 상)에서 {1.0, 1.0}(텍스처 우, 하)까지의 값 범위는 전체 메쉬에 걸쳐 단일 반복을 나타내는 반면, {0.0, 0.0}에서 {6.0, 4.0}은 x차원에서 6번 반복 및 y 차원에서 4번 반복을 정의한다.
콘텐츠 범위는 경계 범위{xleft, ytop, zfront, xright, ybottom, zback}를 정의하는 3차원 점들의 쌍, 또는 베이스 지오메트리를 포함하는 최소 박스의 좌표로 정의될 수 있다. 이것은 2D 경계 윈도우 직사각형{xleft, ytop, xright, ybottom}과 유사하다. 트리플릿{xleft-xright, ytop-ybottom, zback-zback}은 콘텐츠의 범위의 폭, 높이 및 깊이를 정의한다. 이 범위는 시스템에 의해 계산되고 관리되며, 콘텐츠의 크기 및 로컬 위치를 나타낸다.
윈도우 오브젝트가 크기 조정가능한 경우, 베이스 콘텐츠의 범위를 조작하는 것이 CDWM이 윈도우를 크기 조정할 수 있는 수단이다. 모서리 및 코너 윤곽을 보 존하기 위해, 크기 조정가능한 메쉬의 각각의 정점의 위치는 새로운 범위로 간단히 스케일링될 수 없다. 메쉬 크기 조정에 대한 미세 조정을 가능하게 하기 위해, 적용가능한 파라미터와 함께 사전 정의된 정점 위치 필터 함수가 윈도우 생성 시에 애플리케이션에 의해 지정되거나 디폴트로서 CDWM에 의해 선택될 수 있다. 정점 크기 조정 필터 함수의 역할은 그의 경계 범위가 변동될 때 타겟 메쉬 내의 각각의 정점이 어떻게 동작하는지를 결정하는 것이다. 모든 필터 함수는 모든 멤버 정점에 대해 각 차원(x, y, z)에서의 변위 방향 및 크기를 결정해야만 한다.
가장 간단한 필터 함수는 방향(플러스 또는 마이너스) 및 크기(새로운 범위에 대해 스케일링되거나 3D 공간에서 메쉬의 경계 박스의 6면 중 하나의 양과 동일한 양만큼 오프셋됨)를 결정한다. 크기 조정 동작에서 각각의 정점이 어떻게 동작하는지는 정점 자체와 관련된 속성으로서 정점별, 차원별로 기술될 수 있거나, 기하학적 관점에서 전체로서 메쉬에 대해 정의될 수 있다. 후자의 방법의 일례가 6개의 사이징 여백 평면(sizing margin plane)을 정의하는 벡터의 쌍{mxleft, mytop, mzfront, mxright, mybottom, mzback}이고, 각각은 메쉬 경계 박스의 면과 관련된 것으로서 경계 박스의 체적을 27개의 입방체 서브영역으로 효과적으로 분할한다. 사이징 여백 값은 메쉬의 크기에 상관없이 일정하게 유지될 수 있거나 경계 박스의 초기 크기에 기초하여 계산될 수 있다. 임의의 메쉬 크기 조정 동작에서, 상부 좌측 전방의(upper, left, front) 입방체 서브영역({xleft, ytop, zfront, mxleft, mytop, mzfront}에 의해 경계를 이룸)은 경계 범위의 상부 좌측 전방 코너와 동일한 크기 및 방향만큼 오프셋된다. 정중앙 입방체 서브영역({mxleft, mytop, mzfront, mxright, mybottom, mzback}에 의해 경계를 이룸)에 있는 정점은 그 서브영역의 새로운 범위에 대해 스케일링된다. 전방 중앙 입방체 서브영역에 있는 정점은 x 및 y 차원에서의 그 서브영역의 새로운 범위에 대해 스케일링되지만, 메쉬의 전방 Z 경계 평면과 동일한 크기만큼 동일한 방향으로 변위된다.
상기한 원리에 대한 이해를 돕기 위해, 도 7은 2차원 공간에서의 메쉬 크기 조정 동작의 일례를 나타낸 것이다. 윈도우(701)는 코너 반경(707)을 갖는 둥근 코너를 갖는다. 윈도우 크기 조정 동작이 윈도우가 기초하고 있는 메쉬를 단지 스케일링하는 경우, 코너 반경은 메쉬와 함께 스케일링된다. 그렇지만, 코너 반경이 스케일링되면, 둥근 코너의 반경이 너무 커지거나 작아질 수 있고 사용자 경험을 악화시키고 또 사용자 인터페이스의 사용성을 악화시킨다. 따라서, 윈도우(701)가 크기 조정될 때, 코너 반경이 변하지 않는 것이 바람직하다. 코너 반경이 스케일링되지 않도록 하기 위해, 메쉬가 차원마다 3개의 세그먼트(적용되는 경우 x, y, z)로 분할될 수 있다. 따라서, 본 예에서, 윈도우는 9개의 4분면(703a-i)으로 분할된다. 3D 공간에서, 윈도우는 27개의 영역으로 분할될 수 있다. 각각의 차원은 똑같이 분할되거나 다르게 분할될 수 있으며, 따라서 똑같은 크기의 영역 또는 서로 다른 크기의 영역이 가능하게 된다. 영역들이 서로 다른 크기인 경우, 경계 박스에 의해 경계를 이루는 영역들은 스케일링되어서는 안되는 재료를 포함하도록 필요한 만큼 작을 수 있다.
윈도우 크기 조정 동작 동안에, 사분면은 사분면이 경계 박스와 경계를 이루고 있는 각 차원에서는 오프셋되고, 사분면이 영역 분할기(705a-d)와 경계를 이루고 있는 각 차원에서는 스케일링된다. 예를 들어, 영역(703a, 703c, 703g, 703i)는 X 및 Y 차원 둘다에서 적어도 한 변에서 경계 박스와 경계를 이루고 있으며, 따라서 영역(703a, 703c, 703g, 703i)에서의 메쉬 정점은 윈도우가 크기 조정될 때 경계 박스로부터 동일한 오프셋을 유지한다. 영역(703b, 703h)은 Y(수직) 차원에서 적어도 한 변에서 경계 박스와 경계를 이루고 있지만, X(수평) 차원에서 영역 분할기(705)에 의해서만 경계를 이루고 있다. 따라서, 영역(703b, 703h) 내의 메쉬 정점은 Y 차원에서는 그의 오프셋을 유지하게 되지만, X 차원에서는 스케일링된다. 영역(703d, 703h)은 X(수평) 차원에서는 적어도 한 변에서 경계 박스와 경계를 이루지만, Y(수직) 차원에서는 영역 분할기(705)에 의해서만 경계를 이루게 된다. 따라서, 영역(703d, 703f) 내의 메쉬 정점은 X 차원에서는 그의 오프셋을 유지하게 되지만, Y 차원에서는 스케일링된다. 영역(703e)은 X 및 Y 차원 둘다에서 분할 라인(705)에 의해 경계를 이루고 있으며, 따라서 영역(703e) 내에 속하는 메쉬 정점은 X 및 Y 차원 둘다에서 스케일링된다. 당업자라면 이전 단락에서 기술된 바와 같이 Z 차원을 포함함으로써 이 알고리즘을 3차원으로 확장하는 것을 잘 알 것이다.
메쉬 크기 조정 필터 함수의 다른 변형은 정점 위치가 임의의 방향으로 스케일링될지 오프셋될지를 결정하기 위해 사이징 여백 등의 전체적인 기하 구성(global geometric construct)에 의존하는 것이 아니라 수기 작성된(hand- authored) 정점 메타데이터를 해석할 수 있다. 이러한 함수는 메쉬 크기 조정 동안에 마루(ridge) 및 골(trough) 등의 복잡한 표면 토폴로지를 보존하는 데 사용될 수 있다. 메쉬 크기 조정 필터 함수의 다른 변형은 정점이 정점별 메타데이터로서 저장되어 있는 구별 비트(discrimination bit) 및 함수 계수(function coefficient)를 사용하여 선형 또는 비선형 방식으로 각 차원에서 변위될 수 있게 해줄 수 있다. 이러한 함수는 메쉬 크기 조정과 동시에 일어나는 선형 또는 비선형, 국소적 또는 전반적 융기 또는 함몰(localized or generalized bulging or collapsing) 등의 효과를 가능하게 해준다.
베이스 콘텐츠 여백은 자식 콘텐츠가 제한을 받는 경계를 정의한다. 콘텐츠 여백은 사이징 여백과 동일한 방식으로 정의된 3차원 경계일 수 있다. 그렇지만, 사이징 여백과는 달리, 콘텐츠 여백은 윈도우 스케일에 선형적으로 스케일링될 수 있으며, 메쉬 크기 조정에 영향을 주지 않을 수 있다.
추상 재료 속성의 값에 따라 지정된 국소 및 데스크톱 전역 리소스 및 파라미터는 픽셀 쉐이더와 함께 CDWM이 물리적으로 모델링된 데스크톱 콘텐츠의 렌더링을 구현할 수 있는 데이터 및 메카니즘을 포함한다.
상위 레벨 콘텐츠 재료 속성은 콘텐츠가 조명 및 주변 환경과 상호작용하는 방식을 정의한다. 프로스티드 글래스 등의 복잡한 재료의 렌더링은 비디오 하드웨어에서 내장 지원되지 않는 기술을 사용할 수 있다. 그 결과, CDWM은 적은 수의 사전 정의된 픽셀 쉐이더 중 하나를 사용하여 재료 속성을 구현한다. 픽셀 쉐이더는 광원, 텍스처, 및 메쉬 프리미티브에서의 정점은 물론 변환 및 메트릭 등의 파 라미터(이에 한정되는 것은 아님)를 포함한 사전 정의된 리소스 세트에 기초한 디스플레이 이전에 픽셀의 값을 처리하는 디스플레이 하드웨어에 로드되는 소형 루틴이다. CDWM은 그의 사전 정의된 픽셀 쉐이더 컬렉션 중에서 특정의 오브젝트 재료 속성 세트를 렌더링하는 데 적절한 쉐이더를 선택할 수 있으며, 그 속성들로는 주변광 컬러(세기 및 투명도), 확산광 컬러(세기 및 투명도), 반사광 컬러(세기 및 투명도), 반사 스칼라(reflection scalar), 굴절율, 확산 텍스처, 및 범프 텍스처가 있으며, 그 각각에 대해서는 이하에서 더 설명한다. 데스크톱 전역 속성은 눈 위치, 전역 광원, 환경 맵 등과 같은 전역 환경 속성을 정의하는 데 사용될 수 있다. 이들 데스크톱 전역 속성을 정의하는 리소스 및 파라미터는 윈도우를 렌더링하기 바로 전에 활성 픽셀 쉐이더에 대한 파라미터로서 베이스 윈도우 재료 속성과 함께 3D 그래픽 인터페이스로 포워딩될 수 있다.
주변광 컬러는 모든 방향으로부터 오브젝트의 표면에 충돌하는 광을 시뮬레이션한다. 임의의 CDWM 관리 UI 콘텐츠 오브젝트에 적용가능한 재료 속성으로서, 주변광 세기는 오브젝트의 표면에 접촉하는 주변광의 상대적 양을 결정하고, 32-비트 ARGB 값이 주변광 컬러 및 투명도를 지정하는 데 사용될 수 있다. 한 예시적인 실시예에서, 주변광 세기는 0.0(주변광 없음, 균일하게 검은 외관을 나타냄)에서 1.0(오브젝트에 걸쳐 균일하게 분포된 지정된 컬러의 최대 세기)의 범위를 가질 수 있다. 백색 주변광 컬러를 갖는 주변광 세기의 효과는 오브젝트의 전체적인 밝기에 대한 제어를 가능하게 해준다.
확산광 세기는 오브젝트의 표면에 접촉한 후에 모든 방향으로 산란되는 방향 성 광(directional light)의 양을 결정한다. 광 자체는 하나 이상의 방향성 광 또는 입체 광 맵(cubic light map)에 의해 제공된다. 임의의 CDWM 관리 UI 콘텐츠 오브젝트에 적용가능한 재료 속성으로서, 확산광 컬러는 컬러를 좌우하는 32-비트 ARGB 값에 의해 지정될 수 있으며, 여기서 알파 성분은 확산 반사된 광의 투명도를 좌우한다. 확산 세기 값은 0.0(확산 반사되는 광이 없음, 오브젝트에 균일하게 검은 외관을 제공함)에서 1.0(모든 광이 확산 반사됨, 오브젝트에 확산 컬러 값에 따라 음영 외관을 제공함) 범위이다. 조명된 표면은 주변광 세기값과 확산광 세기값의 합이 1.0에 접근함에 따라 보다 실감나게 모델링된 것처럼 보인다.
반사광 세기는 얼마나 많은 광이 오브젝트의 표면에서 반사되어 보는 사람에게로 직접 돌아오는지를 제어하고, 반사광 컬러는 오브젝트의 ARGB 컬러로 지정될 수 있다. 광원 자체는 하나 이상의 방향성 광 또는 입체 광 맵의 형태일 수 있다. 임의의 CDWM 관리 UI 콘텐츠 오브젝트에 적용가능한 재료 속성으로서, 높은 반사광 세기값은 하이라이트가 강한 빛나는 표면을 모델링하는 데 사용될 수 있는 반면, 낮은 값은 하이라이트가 흐릿하거나 없는 광택없는 표면을 모델링하는 데 사용될 수 있다. 컬러의 알파 성분은 반사광 하이라이트의 투명도를 결정한다.
반사도(reflectivity)는 거울 반사도(specularity)와 유사하게 오브젝트의 표면으로부터 반사되어 보는 사람에게로 직접 돌아오는 광의 양을 결정한다. 반사가 단지 광원만이 아닌 전체 환경에 적용된다는 점에서 반사는 거울 반사와 다르다. 임의의 CDWM 관리 UI 콘텐츠 오브젝트에 적용가능한 재료 속성으로서, 0.0의 반사도값은 표면에서 환경의 반사를 전혀 일으키지 않으며, 1.0의 값은 표면에서 환경의 거울같은 반사를 일으킨다. 환경은 입체 환경 맵과 마우스 커서의 조합을 사용하여 모델링될 수 있다. 따라서, 마우스 커서는 물론 환경의 정적 특성이 반사 세기 스칼라에 의해 제어되는 정도까지 윈도우 표면으로부터 반사될 수 있다.
각 오브젝트의 굴절율은 그를 통과하는 광의 투과 각도를 결정한다. 스넬의 법칙,
Figure 112005023823557-PCT00011
이 사용될 수 있고, 여기서 n1 및 n2가 매체 1 및 매체 2의 굴절율이고,
Figure 112005023823557-PCT00012
Figure 112005023823557-PCT00013
는 각각 표면 법선에 대한 광의 입사각 및 투과각이다. 따라서, 매체 1이 할당된 굴절율 1.0(굴절 없음)을 갖는 데스크톱 환경을 나타내고 매체 2가 윈도우 베이스 오브젝트의 환경인 경우, 굴절각은
Figure 112005023823557-PCT00014
로서 결정된다. 시뮬레이션될 수 있는 여러가지 매체에 대한 기지의 굴절율은 이하의 표 1에 나타내어져 있다.
매체 굴절율
진공 1.00
얼음 1.31
1.33
유리 일반적으로 1.50 -1.75
다이어몬드 2.42
굴절각이 결정/계산되었으면, 이 굴절각은 다른 재료 특성과 연관된 추가 처리 이후에 오브젝트의 가시 표면 상에 렌더링할 배경으로부터 적당한 픽셀을 선택하는 데 사용될 수 있다. 굴절의 실시간 렌더링을 위한 최적화는 당업자라면 잘 알고 있는 방법인 프레넬 기술을 포함할 수 있다.
시각적 스타일(테마)는 CDWM 시각 및 행동 정책을 정의하는 데 사용될 수 있다. 시각적 스타일은 일반적으로 정교하고 수작업 설계된 그래픽 및 통상의 사용자 인터페이스 요소에 적용되는 행동 속성을 지정하는 사용자 선택가능 테마를 말한다. 애플리케이션은 선택적으로 이들 속성 중 일부를 오버라이드할 수 있는 반면, 다른 것들은 사용자 인터페이스에서의 일관성을 위해 시스템에 의해 선택적으로 시행된다. 시각적 속성은 프레임 영역(베이스 콘텐츠) 등의 통상의 윈도우 콘텐츠의 외관, 비클라이언트 버튼, 및 다른 애플리케이션 독립적인 요소를 포함한다. 행동 속성은 윈도우 및 데스크톱 전이 애니메이션, 마우스로 윈도우가 상호작용적으로 이동되거나 크기 조정되는 방식(예를 들어, 스냅(snap), 글루(glue), 스트레치(stretch) 및 컨스트레인트(constraint)), 및 다른 애플리케이션 독립적인 행동을 포함한다. 시각 및 행동 정책은 그 정책을 소프트웨어 렌더링 파이프라인 전체에 걸쳐 분산시키기 보다는 CDWM에 집중되어 있을 수 있으며, 따라서 보다 일관성있는 최종 사용자 경험 및 보다 간단한 개발 환경을 제공한다.
본 발명의 예시적인 실시예에 따르면, 시각적 스타일의 디폴트(또는 커스텀) 텍스처는 알파 레벨 및/또는 비트맵을 포함할 수 있으며, 이들에 기초하여 각각의 픽셀이 수정된다. 예를 들어, 알파 레벨은 당업계에 공지된 바와 같이 투명도 레벨을 수정하는 데 사용될 수 있다. 게다가, 텍스처는 비트맵을 포함할 수 있으며, 이것을 사용하여 클라이언트 및/또는 비클라이언트 영역, 또는 클라이언트 및/또는 비클라이언트 영역의 일부분이 픽셀 쉐이딩될 수 있다. 예를 들어, 한 예시적인 실시예에서, 비트맵은 프로스티드 글래스의 외관을 제공할 수 있다. 도 5는 프로스티드 글래스 프레임(503)으로 렌더링된 윈도우(501)를 나타낸 것으로서, 굴절율은 윈도우 프레임(503) 후방의 콘텐츠로부터 어느 픽셀이 나타나야 하는지를 결정할 때 글래스를 시뮬레이션하도록 지정될 수 있다. 그래픽 렌더링 엔진의 최신 텍스처, 조명 및 3D 기능을 이용하고 또 적당한 비트맵을 사용함으로써, CDWM은 3D 데스크톱 환경 내에서 선택적으로 지정된 가상 광원으로부터의 광을 반사하지만 클라이언트 콘텐츠의 시각적 예리함이 저감되지 않도록 불투명한 클라이언트 콘텐츠를 갖는 프로스티드 글래스 외관을 갖는 프레임(503)을 갖춘 윈도우(501)를 작성할 수 있다.
데스크톱 렌더링 모델(무효화 대 합성) 각각은 애플리케이션 프로그램의 윈도우가 데스크톱 상에 적절히 유지되도록 애플리케이션 프로그램과 상호작용하기 위한 고유의 스키마를 갖는다. 예를 들어, 무효화 모델에서, 데스크톱 렌더링은 윈도우 "클리핑 영역"의 관리 및 연속적인 갱신에 의존하고 있다. 클리핑은 렌더링이 윈도우의 적절한 영역으로 제한되는 프로세스이다. 한 윈도우가 다른 윈도우에 의해 부분적으로 가려지는 경우, 그의 클리핑 영역은 가려진 영역의 반전에 대응한다. 아래에 있는 윈도우가 그의 콘텐츠를 페인트하는 경우, 페인트 메시지에 응답하거나 또는 요구되지 않았어도 무효화 모델 DWM은 그의 클리핑 영역이 출력에 적용되도록 보장하며, 따라서 위에 있는 윈도우에 어떤 페인팅도 일어나지 않도록 보장한다. 위에 있는 윈도우가 이동되거나, 아래에 있는 윈도우가 Z-order의 상부로 옮겨지면, 아래에 있는 윈도우의 클리핑 영역은 임의의 새로 노출된 콘텐츠를 갱신하기 위해 DWM이 윈도우에 페인트 메시지를 전송하기 전에 그에 따라 DWM에 의해 조정된다.
무효화 모델 DWM 및 합성 모델 DWM은 따라서 데스크톱을 드로잉하기 위해 서로 다른 정보에 의존한다. 에를 들어, 무효화 모델 DWM에서는, DWM이 테스크톱 상의 각각의 윈도우의 전체 표면의 복사본을 저장하지 않기 때문에, DWM은 크기 조정 및 재드로잉 동안 콘텐츠를 리프레쉬하기 위해 애플리케이션과 통신해야만 한다. 이와 마찬가지로, 애플리케이션은 DWM에 의해 그렇게 하도록 요구받지 않는 한(물론, 사용자 입력의 결과로서 콘텐츠가 갱신되지 않는 한) 그의 콘텐츠를 리프레쉬할 필요가 없는 것으로 예상한다. 애플리케이션이 독립적으로 그 자신의 콘텐츠를 갱신할 필요가 있는 경우, 애플리케이션은 DWM으로부터 무효 영역에 대응하는 페인트 요청을 수신하려고 하면서 DWM에 그 자신의 윈도우의 일부를 무효화하도록 요구한다. 합성 데스크톱의 경우 각각의 윈도우를 전체적으로 드로잉하기에 충분한 저보가 CDWM에 의해 유지되어 있기 때문에, CDWM은 전술한 것 등의 이벤트 시에 윈도우에 페인트 메시지를 전송할 필요가 없다. 이것은 이어서 무효화 단계를 필요없게 만든다. 애플리케이션은 내부 이벤트가 지시하는 대로 그 자신의 전부 또는 일부분을 재드로잉하기만 하면 된다.
이들 기본적인 차이로 인해, 각각의 DWM 및/또는 CDWM은 고유의 API 세트를 가지며, 이를 통해 애플리케이션 프로그램은 윈도우 콘텐츠가 계속 존재하도록 보장하기 위해 DWM과 통신하려고 한다. 그 결과, 원래 무효화 모델 DWM과 함께 사용하기 위해 프로그램된 애플리케이션, 즉 그의 콘텐츠를 렌더링하기 위해 페인트 메시지에 의존하는 애플리케이션은 꼭 합성 모델 CDWM과 함께 동작할 필요는 없다. 따라서, 도 4를 참조하면, CDWM은 원래 무효화 모델 DWM에서 사용하기 위해 개발된 애플리케이션에 대한 지원을 제공할 수 있다. 이들 애플리케이션은 본 명세서에서 레거시 애플리케이션이라고 말할 수 있으며, 후방 호환 지원은 본 명세서에서 레거시 지원이라고 말할 수 있다. 레거시 API는 레거시 애플리케이션과 호환되는 무효화 모델 DWM을 사용했던 이전 버전의 오퍼레이팅 시스템과 함께 사용하기 위한 API를 말한다. 레거시 API(192b)(도 1b)는 애플리케이션이 무효화 모델 DWM(레거시 DWM)(192a)과 통신할 수 있게 해준다. 레거시 DWM은 애플리케이션 대신에 여러가지 레거시 통지를 처리하여 CDWM으로 보내기 위해, 관련 상태 정보를 CDWM으로 전송하기 위해, 그리고 입력 초점 결정을 위한 레거시 좌표 공간과 CDWM 좌표 공간 사이의 변환을 위해 별도의 레거시 API 요소를 사용할 수 있다. 레거시 DWM은 이하에 기술되는 바와 같이 데이터를 CDWM으로 리디렉션하기 위해 수정될 수 있다.
도 4는 본 발명의 예시적인 측면에 따른 윈도우 합성 방법의 일부분을 나타낸 것이다. 단계(401-409)는 레거시 윈도우 관리자(192a)(도 1b)로부터 획득된 소스 렌더링 표면(표면을 생성하기 위해 명령어가 요구되는 경우 설정됨)을 갖는 레거시 애플리케이션 윈도우와 연관된 콘텐츠의 초기 렌더링을 나타낸다. 단계(411-419)는 콤포지션-어웨어 애플리케이션 프로그램에 의해 생성된 윈도우 콘텐츠의 렌더링을 나타낸 것이다.
단계(401)에서, CDWM은 레거시 애플리케이션이 그에 맞춰 설계된 무효화 모델에 따라 데스크톱 상에 윈도우를 드로잉하기 위해 레거시 API(192b)를 호출한 결과 레거시 윈도우 관리자로부터 주 윈도우 콘텐츠에 대한 초기 갱신 통지를 수신한다. 예를 들어, Microsoft
Figure 112005023823557-PCT00015
Word
Figure 112005023823557-PCT00016
XP는 레거시 DWM(192a)이 사용자에 의해 입력된 텍스트를 드로잉하도록 레거시 API를 호출할 수 있다. 단계(403)에서, CDWM은 테마 관리자로부터 콘텐츠의 디폴트 메쉬를 검색한다. 단계(405)에서, CDWM은 레거시 윈도우 관리자로부터 리디렉션 표면을 검색(또는 생성)한다. 이 표면은 콘텐츠의 확산 텍스처로서 사용될 수 있다. 단계(407)에서, CDWM은 레거시 텍스처의 원하는 영역만이 유지되도록 보장하고, 그에 따라 레거시 윈도우 프레임, 경계 및/또는 캡션을 포함하는 영역은 렌더링되지 않는다. 이것이 임시적으로 달성될 수 있는 한 방법은 원하는 영역만이 메쉬의 x 및 y 경계 범위로 매핑되도록 메쉬의 텍스처 매핑 좌표를 변환하는 것이다. 단계(409)에서, CDWM은 그 콘텐츠에 대한 디폴트 재료 속성을 검색한다. 레거시 콘텐츠를 렌더링하는 데 요구되는 리소스 및 파라미터가 이제 수집되었다.
단계(411)에서, CDWM은 윈도우와 연관된 콘텐츠 오브젝트의 렌더링을 필요로 하는 애플리케이션 프로그램으로부터 정보를 수신한다. 콘텐츠는 선택적으로 커스텀 메쉬, 커스텀 텍스처, 및/또는 커스텀 재료 속성을 수반할 수 있다. 커스텀 메쉬는 애플리케이션 프로그램이 기존의 콘텐츠 오브젝트에 대해 비표준 형상을 갖고자 하는 경우에만 제공될 수 있다. 문제의 콘텐츠 오브젝트가 윈도우 베이스 콘텐츠인 경우, 커스텀 메쉬는 윈도우의 형상을 재정의한다. 커스텀 텍스처 및/또는 커스텀 재료 속성은 애플리케이션 프로그램이 비표준 외관(활성 테마에 의해 지정된 것 이외의 것)을 시스템 정의 콘텐츠 오브젝트에 부여하고자 하는 경우에만 제공될 수 있다. 문제의 콘텐츠 오브젝트가 윈도우 베이스 콘텐츠인 경우, 커스텀 텍스처 및/또는 재료 속성은 윈도우의 형상을 수정하지 않고 윈도우의 외관을 재정의한다. 보다 통상적으로는, 애플리케이션은 스크래치로부터 콘텐츠 오브젝트를 생성하고 생성 시에 그의 메쉬(사전 정의된 시스템 메쉬 세트로부터 선택될 수 있음), 텍스처(사전 정의된 시스템 재료 속성 세트로부터 선택될 수 있음) 및 재료 속성을 지정한다.
단계(413)에서, CDWM은 커스텀 콘텐츠 메쉬가 지정되어 있었는지 여부를 결정하고, 지정되어 있지 않은 경우 테마 관리자로부터 디폴트 메쉬를 검색한다(단계 403). 단계(415)에서, CDWM은 커스텀 텍스처가 지정되어 있었는지 여부를 결정하고, 지정되어 있지 않은 경우 테마 관리자로부터 디폴트 텍스처를 검색한다. 단계(417)에서, CDWM은 커스텀 재료 속성이 애플리케이션에 의해 지정되어 있었는지 여부를 결정하고, 지정되어 있지 않은 경우 테마 관리자로부터 디폴트 재료 속성 세트를 검색한다. 커스텀 콘텐츠를 렌더링하는 데 요구되는 리소스 및 파라미터가 이제 수집되었다.
단계(419)에서, CDWM은 적당한 메쉬, 텍스처 및 재료 속성을 참조하여 콘텐츠를 렌더링하기 위해 UCE 프로그래밍 인터페이스를 통해 렌더링 명령어 블록을 조립한다. 렌더링 명령어 블록은 UCE에 의한 실행을 위해 큐잉된다. 명령어 블록은 타겟 디바이스의 보류 중인 리프레쉬 간격의 만료 시에 UCE 렌더링 모델에 의해 실행된다.
레거시 지원을 제공함으로써, CDWM 및 레거시 DWM이 통합되어 있는 오퍼레이팅 시스템은 본질적으로 무효화 DWM(레거시 DWM(192a)) 또는 합성 DWM(CDWM(190))을 사용하여 데스크톱을 렌더링하는 기능을 갖는다. 즉, 무효화 모델 DWM은 레거시 지원을 제공하기 위해 합성 모델 이외에 오퍼레이팅 시스템에 의해 지원된다. 따라서, 데스크톱 합성을 위해 요구되는 프로세서 위주의 계산을 효율적으로 수행하는 데 필요한 비디오 하드웨어를 갖지 않는 시스템에서(예를 들어, 비디오 메모리를 적게 갖거나 3D 가속 하드웨어를 갖지 않는 시스템에서), CDWM 및/또는 오퍼레이팅 시스템은 사용자가 합성 또는 레거시 드로잉 모델이 사용되어야만 하는지 여부를 선택할 수 있도록 할 수 있다. 이 선택은 자동적으로 또는 수동적으로 행해질 수 있다. 예를 들어, 선택은 사용자에 의해 선택된 활성화된 시각적 스타일에 의해 정의된 드로잉 모드에 따라 수동 사용자 콘트롤을 통해 행해질 수 있다. 선택은 다른 대안에서 전원 보전 상태에 기초할 수 있다. 예를 들어, 휴대형 장치가 AC 전원으로부터 분리되고 배터리 전원으로 전환될 때, 비디오 그래픽 프로세싱 유닛(GPU)이 덜 활동적이고 따라서 전원을 더 적게 소모하기 때문에, 오퍼레이팅 시스템은 레거시 드로잉 모드를 시행할 수 있다.
상기한 방법 및 시스템을 사용하여, 오퍼레이팅 시스템은 최신의 3D 그래픽 기능을 사용하는 물리적으로 모델링된 그래픽 사용자 인터페이스를 제공할 수 있다. 윈도우 프레임은 프로스티드 글래스 또는 투명도의 결과로서 보이는 콘텐츠의 적어도 어떤 왜곡과 결합된 적어도 어떤 투명도를 갖는 시뮬레이션된 표면 외관을 제공하는 어떤 다른 복잡한 재료의 외관 뿐만 아니라 그 특성도 가질 수 있으며, 그 결과 반투명 효과를 얻는다. 즉, 본 발명은 윈도우 프레임 또는 경계를 프로스티드 글래스처럼 보이게 만드는 기능을 가질 뿐만 아니라, 윈도우 프레임도 GUI 환경에서 콘텐츠를 반사한다는 점에서 프로스티드 글래스처럼 행동하고, 가상 광원을 나타내는 스펙트럼 하이라이트를 포함하며, "프로스티드 글래스" 경계 후방의 콘텐츠가 그에 따라 약간 오프셋되도록 글래스와 유사한 굴절율을 시뮬레이션하고, 비트맵이 하나 이상의 픽셀 쉐이더를 통해 아래에 있는 콘텐츠의 왜곡을 제공하도록 적용될 수 있다.
프로스티드 글래스 또는 다른 유리와 유사한 물리적으로 모델링된 오브젝트는 그래픽 사용자 인터페이스의 사용자에게 많은 이점을 제공한다. 예를 들어, 유리의 심미적인 외관은 GUI를 향상시키고 사용자에게 부드럽고 개방된 느낌을 제공함으로써 본 발명의 GUI를 최종 사용자에게 다른 오퍼레이팅 시스템의 GUI 보다 바람직한 것으로 만들어주는 풍부한 사용자 경험을 제공한다. 동시에, 진짜의 또는 거의 진짜같은 유리 특성을 갖는 물리적으로 모델링된 프로스티드 글래스는 또한 기능상의 이점도 제공한다.
프로스티드 글래스 외관은 다중 윈도우 환경에서 사용자가 윈도우 레이어 순서를 이해하는 데 도움을 준다. 쉐이딩, 반사, 및 유리 반사 하이라이트는 데스크톱 상에 더 강한 깊이감 및 레이어를 생성하며, 사용자가 데스크톱 상의 여러가지 윈도우의 Z-order를 결정하는 데 도움을 준다. 어떤 공지의 시스템이 전체 윈도우에 균일한 투명도를 적용하는 동안, 사용자는 어느 콘텐츠가 관심의 윈도우 내에 있는지 또 어느 콘텐츠가 윈도우 후방에 있는지를 즉시 인식하지 못할 수 있다. 이 균일한 픽셀별 투명도를 Z-order의 함수로서 변화시킴으로써, 문제를 완화시킬 수는 있지만 자연스럽지 못하고 직관적이지 못하다. 오히려, 각각의 목적지 픽셀을 생성하는 동안 다수의 주변 소스 픽셀을 샘플링하는 조정가능한 블러링 알고리즘을 픽셀 쉐이더 내에 포함시키고 또 윈도우 프레임을 렌더링하는 동안 이 쉐이더를 실행시킴으로써, 본 발명은 실세계 프로스티드 글래스에서의 재료 불비점으로부터 발생되는 광 산란 동작을 모델링한다. 이 물리적으로 모델링된 배경 왜곡이 사용자로 하여금 배경과 전경 콘텐츠를 즉각 구별할 수 있게 해준다. 효과가 가중적이기 때문에, 중첩하는 프로스티드 글래스 윈도우 프레임은 전경으로부터 배경으로 점차적으로 더 왜곡된다. 따라서, 사용자는 직관적으로 프로스티드 글래스 윈도우 프레임의 다수의 레이어 아래에 있는 배경 콘텐츠를 직관적으로 구별할 수 있다.
프로스티드 글래스는 또한 예를 들어 사용자가 윈도우를 이동시키거나 크기조정을 하기 위해 마우스를 사용하여 윈도우 경계를 붙잡는 것을 더 쉽게 할 수 있도록 함으로써 더 두꺼운 경계의 사용이 GUI와의 사용자 상호작용을 쉽게 만들어 줄 수 있지만, 윈도우 아래의 콘텐츠를 가리지는 않는다(왜냐하면 유리가 투명 또는 반투명이기 때문이다). 여러가지 프로스티드 글래스 효과는 사용자가 활성 대 비활성 윈도우 상태에 대한 차이점을 구별하는 것이 더 쉬워지도록 하기 위해 사용될 수 있다. 게다가, 프로스티드 글래스는 사용자가 화면 상의 콘텐츠를 읽고 및/또는 보는 것이 더 쉬워지도록 하는데, 그 이유는 사용자가 주어진 시간에 더 많은 화면 영역을 볼 수 있기 때문이고(왜냐하면 프로스티드 글래스가 반투명 또는 투명이기 때문임), 데스크톱이 덜 어수선해 보이는 이유는 유리가 디스플레이 화면 상에서 눈에 거슬리지 않는 요소이기 때문이다.
도면이 프로스티드 글래스의 특정 일례를 나타내고 본 발명은 그에 한정되는 것이 아니라는 것을 당업자라면 잘 알 것이다. 프로스티드 글래스 외관은 다른 비트맵 및/또는 다른 픽셀 쉐이퍼를 외관의 렌더링에 적용함으로써 쉽게 변화될 수 있다. 게다가, 다른 환경 변수를 적용(예를 들어, 반사 및 거울 반사 하이라이트에 영향을 주는 광원을 다르게 함)하거나 유리의 가상 물리 특성(예를 들어, 굴절율, 반사 등)을 변경하는 것도 역시 프로스티드 글래스의 외관에 영향을 준다. 본 발명은 또한 다른 텍스처 및 합성물, 예를 들어 금속, 플라스틱, 종이, 솜, 및 다른 천연 및 합성 재료를 시뮬레이션하는 데도 사용될 수 있다.
본 발명이 본 발명의 양호한 실시 형태를 포함한 특정의 예에 관하여 기술되어 있지만, 당업자라면 상기한 시스템 및 기술의 여러가지 변형 및 치환이 있음을 잘 알 것이다. 따라서, 본 발명의 정신 및 범위는 첨부한 청구항들에 개시된 바와 같이 광의적으로 해석되어야만 한다.

Claims (48)

  1. 오퍼레이팅 시스템 쉘의 그래픽 사용자 인터페이스에 데스크톱 윈도우를 렌더링하는 컴퓨터 구현 방법으로서,
    상기 그래픽 사용자 인터페이스 내의 윈도우에 디스플레이할 애플리케이션 콘텐츠를 수신하는 단계, 및
    상기 윈도우의 불투명한 콘텐츠 부분에 상기 애플리케이션 콘텐츠의 적어도 일부분을 디스플레이하는 단계- 상기 윈도우는 반투명의 프레임 부분을 가짐 -를 포함하는 컴퓨터 구현 방법.
  2. 제1항에 있어서, 상기 디스플레이하는 단계는 상기 프레임 부분이 그 위에 렌더링되어 있는 콘텐츠를 왜곡시키기 위해 픽셀 쉐이더가 상기 프레임 부분에 비트맵을 적용하는 단계를 포함하는 컴퓨터 구현 방법.
  3. 제2항에 있어서, 상기 비트맵은 글래스의 유사물(a likeness of glass)을 포함하는 컴퓨터 구현 방법.
  4. 제2항에 있어서, 상기 비트맵은 프로스티드 글래스(frosted glass)의 유사물을 포함하는 컴퓨터 구현 방법.
  5. 제1항에 있어서, 상기 수신하는 단계는 레거시 애플리케이션 프로그램의 인스턴스로부터 나온 애플리케이션 콘텐츠 정보를 수신하는 단계를 포함하는 컴퓨터 구현 방법.
  6. 제1항에 있어서, 상기 수신하는 단계는 합성 데스크톱 윈도우 관리자(compositing desktop window manager, CDWM)가 상기 애플리케이션 콘텐츠를 수신하는 단계를 포함하는 컴퓨터 구현 방법.
  7. 제6항에 있어서, 상기 디스플레이하는 단계는 상기 CDWM이 메쉬(mesh)에 텍스처(texture)를 적용함으로써 상기 윈도우를 물리적으로 모델링하는 단계를 포함하는 컴퓨터 구현 방법.
  8. 제7항에 있어서, 상기 메쉬는 현재의 시각 스타일(visual style)에 의해 정의되는 컴퓨터 구현 방법.
  9. 제7항에 있어서, 상기 메쉬는 상기 애플리케이션 콘텐츠 정보에 제공되어 있는 컴퓨터 구현 방법.
  10. 제7항에 있어서, 상기 텍스처는 현재의 시각 스타일에 의해 정의되는 컴퓨터 구현 방법.
  11. 제7항에 있어서, 상기 텍스처는 상기 애플리케이션 콘텐츠 정보에 제공되는 컴퓨터 구현 방법.
  12. 제5항에 있어서, 상기 레거시 애플리케이션 프로그램의 상기 인스턴스가 레거시 윈도우 콘텐츠를 레거시 데스크톱 윈도우 관리자(desktop window manager, DWM)에 제공하는 단계,
    상기 레거시 윈도우 콘텐츠로부터 애플리케이션 콘텐츠를 제거(strip out)하는 단계, 및
    상기 애플리케이션 콘텐츠를 상기 애플리케이션 콘텐츠의 그래픽 표현으로 변환하는 단계를 더 포함하는 컴퓨터 구현 방법.
  13. 제12항에 있어서, 디폴트 데스크톱 윈도우 관리자로서 상기 CDWM과 상기 레거시 DWM 간을 전환하는 단계를 더 포함하는 컴퓨터 구현 방법.
  14. 제12항에 있어서, 상기 레거시 DWM이 상기 애플리케이션 콘텐츠를 상기 CDWM으로 리디렉션하는 컴퓨터 구현 방법.
  15. 제13항에 있어서, 상기 전환은 상기 현재의 시각 스타일에 기초하는 컴퓨터 구현 방법.
  16. 제13항에 있어서, 상기 전환은 현재의 전원 구성에 기초하는 컴퓨터 구현 방법.
  17. 제1항에 있어서, 상기 프레임은 가상 광원에 기초한 스펙트럼 하이라이트(spectral highlights)를 포함하는 컴퓨터 구현 방법.
  18. 제1항에 있어서, 상기 프레임은 상기 윈도우와 별개인 상기 그래픽 사용자 인터페이스의 다른 콘텐츠에 기초하는 반사 콘텐츠(reflective content)를 포함하는 컴퓨터 구현 방법.
  19. 제1항에 있어서, 상기 프레임 부분은 상기 윈도우가 입력 초점(input focus)을 가질 때 반투명인 컴퓨터 구현 방법.
  20. 제7항에 있어서, 상기 윈도우를 크기 조정하기 위한 사용자 입력을 수신하는 단계,
    상기 메쉬를 메쉬 차원마다 3개의 영역으로 분할하는 단계,
    각각의 영역에 대해, 상기 영역이 상기 윈도우의 경계 박스와 경계를 이루고 있는 임의의 차원에서는 메쉬 정점의 오프셋을 유지하고, 상기 영역이 상기 윈도우의 상기 경계 박스와 경계를 이루고 있지 않은 임의의 차원에서는 메쉬 정점을 스 케일링하는 단계를 더 포함하는 컴퓨터 구현 방법.
  21. 오퍼레이팅 시스템 쉘의 그래픽 사용자 인터페이스에 데스크톱 윈도우를 렌더링하는 방법을 컴퓨터로 하여금 수행하도록 하는 컴퓨터 실행가능 명령어를 저장하는 컴퓨터 판독가능 매체로서,
    상기 방법은:
    상기 그래픽 사용자 인터페이스의 윈도우에 디스플레이할 애플리케이션 콘텐츠를 수신하는 단계; 및
    상기 윈도우의 불투명한 콘텐츠 부분에 상기 애플리케이션 콘텐츠의 적어도 일부분을 디스플레이하는 단계- 상기 윈도우는 반투명의 프레임 부분을 가짐 -를 포함하는 컴퓨터 판독가능 매체.
  22. 제21항에 있어서, 상기 디스플레이하는 단계는 상기 프레임 부분이 그 위에 렌더링되어 있는 콘텐츠를 왜곡시키기 위해 픽셀 쉐이더가 상기 프레임 부분에 비트맵을 적용하는 단계를 포함하는 컴퓨터 판독가능 매체.
  23. 제22항에 있어서, 상기 비트맵은 글래스의 유사물(a likeness of glass)을 포함하는 컴퓨터 판독가능 매체.
  24. 제22항에 있어서, 상기 비트맵은 프로스티드 글래스(frosted glass)의 유사 물을 포함하는 컴퓨터 판독가능 매체.
  25. 제21항에 있어서, 상기 수신하는 단계는 레거시 애플리케이션 프로그램의 인스턴스로부터 나온 애플리케이션 콘텐츠 정보를 수신하는 단계를 포함하는 컴퓨터 판독가능 매체.
  26. 제21항에 있어서, 상기 수신하는 단계는 합성 데스크톱 윈도우 관리자(compositing desktop window manager, CDWM)가 상기 애플리케이션 콘텐츠를 수신하는 단계를 포함하는 컴퓨터 판독가능 매체.
  27. 제26항에 있어서, 상기 디스플레이하는 단계는 상기 CDWM이 메쉬(mesh)에 텍스처(texture)를 적용함으로써 상기 윈도우를 물리적으로 모델링하는 단계를 포함하는 컴퓨터 판독가능 매체.
  28. 제27항에 있어서, 상기 메쉬는 현재의 시각 스타일(visual style)에 의해 정의되는 컴퓨터 판독가능 매체.
  29. 제27항에 있어서, 상기 메쉬는 상기 애플리케이션 콘텐츠 정보에 제공되어 있는 컴퓨터 판독가능 매체.
  30. 제27항에 있어서, 상기 텍스처는 현재의 시각 스타일에 의해 정의되는 컴퓨터 판독가능 매체.
  31. 제27항에 있어서, 상기 텍스처는 상기 애플리케이션 콘텐츠 정보에 제공되어 있는 컴퓨터 판독가능 매체.
  32. 제25항에 있어서, 상기 방법은:
    상기 레거시 애플리케이션 프로그램의 상기 인스턴스가 레거시 윈도우 콘텐츠를 레거시 데스크톱 윈도우 관리자(desktop window manager, DWM)에 제공하는 단계;
    상기 레거시 윈도우 콘텐츠로부터 애플리케이션 콘텐츠를 제거(strip out)하는 단계; 및
    상기 애플리케이션 콘텐츠를 상기 애플리케이션 콘텐츠의 그래픽 표현으로 변환하는 단계를 더 포함하는 컴퓨터 판독가능 매체.
  33. 제32항에 있어서, 상기 방법은,
    디폴트 데스크톱 윈도우 관리자로서 상기 CDWM과 상기 레거시 DWM 간을 전환하는 단계를 더 포함하는 컴퓨터 판독가능 매체.
  34. 제32항에 있어서, 상기 레거시 DWM이 상기 애플리케이션 콘텐츠를 상기 CDWM 으로 리디렉션하는 컴퓨터 판독가능 매체.
  35. 제33항에 있어서, 상기 전환은 상기 현재의 시각 스타일에 기초하는 컴퓨터 판독가능 매체.
  36. 제33항에 있어서, 상기 전환은 현재의 전원 구성에 기초하는 컴퓨터 판독가능 매체.
  37. 제21항에 있어서, 상기 프레임은 가상 광원에 기초하는 스펙트럼 하이라이트(spectral highlights)를 포함하는 컴퓨터 판독가능 매체.
  38. 제21항에 있어서, 상기 프레임은 상기 윈도우와 별개인 상기 그래픽 사용자 인터페이스 내의 다른 콘텐츠에 기초한 반사 콘텐츠(reflective content)를 포함하는 컴퓨터 판독가능 매체.
  39. 제21항에 있어서, 상기 프레임 부분은 상기 윈도우가 입력 초점(input focus)을 가질 때 반투명인 컴퓨터 판독가능 매체.
  40. 제27항에 있어서, 상기 방법은:
    상기 윈도우를 크기 조정하기 위한 사용자 입력을 수신하는 단계;
    상기 메쉬를 메쉬 차원마다 3개의 영역으로 분할하는 단계; 및
    각각의 영역에 대해, 상기 영역이 상기 윈도우의 경계 박스와 경계를 이루고 있는 임의의 차원에서는 메쉬 정점의 오프셋을 유지하고, 상기 영역이 상기 윈도우의 상기 경계 박스와 경계를 이루고 있지 않은 임의의 차원에서는 메쉬 정점을 스케일링하는 단계를 더 포함하는 컴퓨터 판독가능 매체.
  41. 오퍼레이팅 시스템 쉘의 그래픽 사용자 인터페이스에 데스크톱 윈도우를 렌더링하는 컴퓨터 구현 방법으로서,
    윈도우에 디스플레이할 애플리케이션 콘텐츠를 수신하는 단계, 및
    프레임 부분을 갖는 상기 윈도우의 콘텐츠 부분에 상기 애플리케이션 콘텐츠의 적어도 일부분을 디스플레이하는 단계를 포함하며,
    상기 디스플레이하는 단계는 가상 광원에 기초하여 상기 프레임 부분 상에 스펙트럼 하이라이트를 렌더링하는 단계를 더 포함하는 컴퓨터 구현 방법.
  42. 오퍼레이팅 시스템 쉘의 그래픽 사용자 인터페이스에 데스크톱 윈도우를 렌더링하는 컴퓨터 구현 방법으로서,
    윈도우에 디스플레이할 애플리케이션 콘텐츠를 수신하는 단계, 및
    프레임 부분을 갖는 상기 윈도우의 콘텐츠 부분에 상기 애플리케이션 콘텐츠의 적어도 일부분을 디스플레이하는 단계를 포함하며,
    상기 디스플레이하는 단계는 상기 그래픽 사용자 인터페이스의 상기 윈도우 와 별개인 다른 개별적인 콘텐츠에 기초하여 상기 프레임 부분 상에 반사 콘텐츠를 렌더링하는 단계를 더 포함하는 컴퓨터 구현 방법.
  43. 오퍼레이팅 시스템 쉘의 그래픽 사용자 인터페이스에 데스크톱 윈도우를 렌더링하는 컴퓨터 구현 방법으로서,
    윈도우에 디스플레이할 애플리케이션 콘텐츠를 수신하는 단계, 및
    프레임 부분을 갖는 상기 윈도우의 콘텐츠 부분에 상기 애플리케이션 콘텐츠의 적어도 일부분을 디스플레이하는 단계를 포함하며,
    상기 디스플레이하는 단계는 상기 그래픽 사용자 인터페이스의 상기 윈도우 후방의 다른 개별적인 콘텐츠에 기초하여 상기 프레임 부분 상에 굴절 콘텐츠를 렌더링하는 단계를 더 포함하는 컴퓨터 구현 방법.
  44. 합성 데스크톱 렌더링 모델을 사용하는 컴퓨터 오퍼레이팅 시스템에서, 무효화 데스크톱 렌더링 모델과만 호환되는 애플리케이션에 대한 레거시 지원을 제공하는 방법으로서,
    레거시 애플리케이션 프로그램의 인스턴스가 레거시 데스크톱 윈도우 관리자(DWM)에 레거시 윈도우 정보를 제공하는 단계,
    상기 레거시 윈도우 정보로부터 클라이언트 콘텐츠를 제거하는 단계,
    상기 클라이언트 콘텐츠를 상기 클라이언트 콘텐츠의 래스터 이미지로 변환하는 단계, 및
    합성 데스크톱 윈도우 관리자(CDWM)가 버퍼 메모리에 윈도우를 드로잉하는 단계를 포함하며,
    상기 CDWM은 메쉬에 텍스처를 적용함으로써 상기 윈도우를 렌더링하고,
    상기 텍스처는 상기 클라이언트 콘텐츠의 래스터 이미지 및 디폴트 비클라이언트 정보를 포함하는 방법.
  45. 부분적으로 메쉬에 의해 정의된 윈도우를 크기 조정하는 방법으로서,
    상기 메쉬를 메쉬 차원마다 3개의 영역으로 분할하는 단계, 및
    각각의 영역에 대해, 상기 영역이 상기 윈도우의 경계 박스와 경계를 이루고 있는 임의의 차원에서는 메쉬 정점의 오프셋을 유지하고, 상기 영역이 상기 윈도우의 상기 경계 박스와 경계를 이루고 있지 않은 임의의 차원에서는 메쉬 정점을 스케일링하는 단계를 포함하는 방법.
  46. 제45항에 있어서, 상기 영역은 동일한 크기인 방법.
  47. 제45항에 있어서, 상기 영역은 동일한 크기가 아닌 방법.
  48. 제45항에 있어서, 상기 경계 박스와 경계를 이루고 있는 영역은 스케일링되어서는 안되는 요소를 둘러싸는 데 충분할 정도로 작은 방법.
KR1020057008053A 2003-10-23 2004-07-21 데스크톱 윈도우 관리자 합성 KR20060105422A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/691,450 2003-10-23
US10/691,450 US7839419B2 (en) 2003-10-23 2003-10-23 Compositing desktop window manager

Publications (1)

Publication Number Publication Date
KR20060105422A true KR20060105422A (ko) 2006-10-11

Family

ID=34521880

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057008053A KR20060105422A (ko) 2003-10-23 2004-07-21 데스크톱 윈도우 관리자 합성

Country Status (13)

Country Link
US (2) US7839419B2 (ko)
EP (2) EP2112592A3 (ko)
JP (1) JP2007510202A (ko)
KR (1) KR20060105422A (ko)
CN (1) CN101002252B (ko)
AU (1) AU2004279190A1 (ko)
BR (1) BRPI0406379A (ko)
CA (1) CA2501600A1 (ko)
MX (2) MXPA05007172A (ko)
RU (2) RU2360284C2 (ko)
TW (1) TW200515226A (ko)
WO (1) WO2005045736A2 (ko)
ZA (1) ZA200503158B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11886685B1 (en) 2022-10-20 2024-01-30 Stardock Corporation Desktop container peek interface

Families Citing this family (156)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9213365B2 (en) 2010-10-01 2015-12-15 Z124 Method and system for viewing stacked screen displays using gestures
US8943434B2 (en) 2010-10-01 2015-01-27 Z124 Method and apparatus for showing stored window display
US7681112B1 (en) 2003-05-30 2010-03-16 Adobe Systems Incorporated Embedded reuse meta information
US7817163B2 (en) 2003-10-23 2010-10-19 Microsoft Corporation Dynamic window anatomy
US7839419B2 (en) 2003-10-23 2010-11-23 Microsoft Corporation Compositing desktop window manager
US7248265B2 (en) * 2004-04-16 2007-07-24 Apple Inc. System and method for processing graphics operations with graphics processing unit
US8704837B2 (en) * 2004-04-16 2014-04-22 Apple Inc. High-level program interface for graphics operations
US7231632B2 (en) * 2004-04-16 2007-06-12 Apple Computer, Inc. System for reducing the number of programs necessary to render an image
US8134561B2 (en) 2004-04-16 2012-03-13 Apple Inc. System for optimizing graphics operations
US7847800B2 (en) * 2004-04-16 2010-12-07 Apple Inc. System for emulating graphics operations
US8068103B2 (en) * 2004-06-24 2011-11-29 Apple Inc. User-interface design
US8130237B2 (en) * 2004-06-24 2012-03-06 Apple Inc. Resolution independent user interface design
US7652678B2 (en) * 2004-06-25 2010-01-26 Apple Inc. Partial display updates in a windowing system using a programmable graphics processing unit
US20050285866A1 (en) * 2004-06-25 2005-12-29 Apple Computer, Inc. Display-wide visual effects for a windowing system using a programmable graphics processing unit
US8566732B2 (en) 2004-06-25 2013-10-22 Apple Inc. Synchronization of widgets and dashboards
US8453065B2 (en) 2004-06-25 2013-05-28 Apple Inc. Preview and installation of user interface elements in a display environment
US7490295B2 (en) * 2004-06-25 2009-02-10 Apple Inc. Layer for accessing user interface elements
US8239749B2 (en) 2004-06-25 2012-08-07 Apple Inc. Procedurally expressing graphic objects for web pages
US8302020B2 (en) * 2004-06-25 2012-10-30 Apple Inc. Widget authoring and editing environment
US7761800B2 (en) * 2004-06-25 2010-07-20 Apple Inc. Unified interest layer for user interface
US20060059432A1 (en) * 2004-09-15 2006-03-16 Matthew Bells User interface having viewing area with non-transparent and semi-transparent regions
US20060168537A1 (en) * 2004-12-22 2006-07-27 Hochmuth Roland M Computer display control system and method
US8140975B2 (en) * 2005-01-07 2012-03-20 Apple Inc. Slide show navigation
US20060230105A1 (en) * 2005-04-06 2006-10-12 Ericom Software B 2001 Ltd Method of providing a remote desktop session with the same look and feel as a local desktop
US7847755B1 (en) * 2005-05-23 2010-12-07 Glance Networks Method and apparatus for the identification and selective encoding of changed host display information
US8543931B2 (en) 2005-06-07 2013-09-24 Apple Inc. Preview including theme based installation of user interface elements in a display environment
US7681200B2 (en) * 2005-07-22 2010-03-16 Microsoft Corporation Secure hardware desktop buffer composition
US8543824B2 (en) 2005-10-27 2013-09-24 Apple Inc. Safe distribution and use of content
US7743336B2 (en) * 2005-10-27 2010-06-22 Apple Inc. Widget security
US9104294B2 (en) 2005-10-27 2015-08-11 Apple Inc. Linked widgets
US7752556B2 (en) 2005-10-27 2010-07-06 Apple Inc. Workflow widgets
US7954064B2 (en) 2005-10-27 2011-05-31 Apple Inc. Multiple dashboards
US7707514B2 (en) 2005-11-18 2010-04-27 Apple Inc. Management of user interface elements in a display environment
US7418668B2 (en) * 2005-11-30 2008-08-26 Microsoft Corporation Glass appearance window frame colorization
US20070162850A1 (en) * 2006-01-06 2007-07-12 Darin Adler Sports-related widgets
US8155682B2 (en) * 2006-05-05 2012-04-10 Research In Motion Limited Handheld electronic device including automatic mobile phone number management, and associated method
TW200806030A (en) * 2006-07-06 2008-01-16 Sin Etke Technology Co Ltd Mobile video system for vehicle
US8869027B2 (en) 2006-08-04 2014-10-21 Apple Inc. Management and generation of dashboards
CN100583022C (zh) * 2006-09-27 2010-01-20 联想(北京)有限公司 获取计算机屏幕图像的方法
US8893038B2 (en) * 2006-10-03 2014-11-18 International Business Machines Corporation Graphical association of task bar entries with corresponding desktop locations
US7739613B2 (en) * 2006-11-10 2010-06-15 Microsoft Corporation Graphics tiering strategy incorporating bitmaps and window geometries
EP1939714A1 (en) * 2006-12-27 2008-07-02 Research In Motion Limited Method for presenting data on a small screen
US20080168367A1 (en) * 2007-01-07 2008-07-10 Chaudhri Imran A Dashboards, Widgets and Devices
US7996787B2 (en) * 2007-02-06 2011-08-09 Cptn Holdings Llc Plug-in architecture for window management and desktop compositing effects
JP4858313B2 (ja) * 2007-06-01 2012-01-18 富士ゼロックス株式会社 ワークスペース管理方式
US8954871B2 (en) 2007-07-18 2015-02-10 Apple Inc. User-centric widgets and dashboards
US20090021486A1 (en) * 2007-07-19 2009-01-22 Apple Inc. Dashboard Surfaces
US8667415B2 (en) 2007-08-06 2014-03-04 Apple Inc. Web widgets
US8156467B2 (en) * 2007-08-27 2012-04-10 Adobe Systems Incorporated Reusing components in a running application
US8201102B2 (en) * 2007-09-04 2012-06-12 Apple Inc. Opaque views for graphical user interfaces
US8176466B2 (en) 2007-10-01 2012-05-08 Adobe Systems Incorporated System and method for generating an application fragment
US8890874B2 (en) * 2007-12-14 2014-11-18 Microsoft Corporation Changing visual content communication
US8433747B2 (en) * 2008-02-01 2013-04-30 Microsoft Corporation Graphics remoting architecture
US9619304B2 (en) 2008-02-05 2017-04-11 Adobe Systems Incorporated Automatic connections between application components
US20090210817A1 (en) * 2008-02-15 2009-08-20 Microsoft Corporation Mechanism for increasing remote desktop responsiveness
US7937452B2 (en) 2008-02-19 2011-05-03 Microsoft Corporation Framework for rendering plug-ins in remote access services
US9471996B2 (en) * 2008-02-29 2016-10-18 Autodesk, Inc. Method for creating graphical materials for universal rendering framework
US8134551B2 (en) * 2008-02-29 2012-03-13 Autodesk, Inc. Frontend for universal rendering framework
CN101539856B (zh) * 2008-03-17 2013-01-16 国际商业机器公司 在应用共享软件中恢复被遮挡窗口的方法和装置
US8521478B2 (en) * 2008-04-01 2013-08-27 Autodesk, Inc. Automatic coloring of rigid groups of parts
US8212806B2 (en) * 2008-04-08 2012-07-03 Autodesk, Inc. File format extensibility for universal rendering framework
US8379058B2 (en) * 2008-06-06 2013-02-19 Apple Inc. Methods and apparatuses to arbitrarily transform windows
US8200896B2 (en) * 2008-06-06 2012-06-12 Microsoft Corporation Increasing remote desktop performance with video caching
US20090315900A1 (en) * 2008-06-23 2009-12-24 Microsoft Corporation Generic surface manager
US20090328080A1 (en) * 2008-06-25 2009-12-31 Microsoft Corporation Window Redirection Using Interception of Drawing APIS
US8656293B1 (en) 2008-07-29 2014-02-18 Adobe Systems Incorporated Configuring mobile devices
US7577913B1 (en) * 2008-07-30 2009-08-18 International Business Machines Corporation Method of using a fovea type pointer in a video conferencing system including at least two 2-dimensional display screens forming a common virtual surface
US8667404B2 (en) * 2008-08-06 2014-03-04 Autodesk, Inc. Predictive material editor
WO2010024820A2 (en) * 2008-08-29 2010-03-04 Hewlett-Packard Development Company, L.P. Combining interfaces of shell applications and sub-applications
US8762879B1 (en) * 2008-09-01 2014-06-24 Google Inc. Tab management in a browser
US8300056B2 (en) 2008-10-13 2012-10-30 Apple Inc. Seamless display migration
US9342901B2 (en) * 2008-10-27 2016-05-17 Autodesk, Inc. Material data processing pipeline
US8584084B2 (en) * 2008-11-12 2013-11-12 Autodesk, Inc. System for library content creation
US20100141658A1 (en) * 2008-12-09 2010-06-10 Microsoft Corporation Two-dimensional shadows showing three-dimensional depth
US8363067B1 (en) * 2009-02-05 2013-01-29 Matrox Graphics, Inc. Processing multiple regions of an image in a graphics display system
US20110043535A1 (en) * 2009-08-18 2011-02-24 Microsoft Corporation Colorization of bitmaps
CN101655804B (zh) * 2009-09-02 2012-07-11 国际伸得纬科技有限公司 虚拟操作系统构建方法及装置
US20110060993A1 (en) * 2009-09-08 2011-03-10 Classified Ventures, Llc Interactive Detailed Video Navigation System
WO2011060442A2 (en) * 2009-11-16 2011-05-19 Citrix Systems, Inc. Methods and systems for selective implementation of progressive display techniques
WO2011072497A1 (zh) * 2009-12-18 2011-06-23 联想(北京)有限公司 窗口管理方法、装置及计算设备
US8648868B2 (en) 2010-01-06 2014-02-11 Apple Inc. Color correction to facilitate switching between graphics-processing units
US8368702B2 (en) 2010-01-06 2013-02-05 Apple Inc. Policy-based switching between graphics-processing units
US8797334B2 (en) 2010-01-06 2014-08-05 Apple Inc. Facilitating efficient switching between graphics-processing units
US10397639B1 (en) 2010-01-29 2019-08-27 Sitting Man, Llc Hot key systems and methods
JP5179537B2 (ja) * 2010-04-09 2013-04-10 株式会社ソニー・コンピュータエンタテインメント 情報処理装置
WO2011132188A1 (en) * 2010-04-19 2011-10-27 Tactile World Ltd. Intelligent display system and method
US9052800B2 (en) 2010-10-01 2015-06-09 Z124 User interface with stacked application management
US20120218202A1 (en) 2010-10-01 2012-08-30 Sanjiv Sirpal Windows position control for phone applications
US20120092351A1 (en) * 2010-10-19 2012-04-19 Apple Inc. Facilitating atomic switching of graphics-processing units
US9396001B2 (en) * 2010-11-08 2016-07-19 Sony Corporation Window management for an embedded system
CN102609167A (zh) * 2011-01-25 2012-07-25 联想(北京)有限公司 电子设备及其显示方法
US20120274639A1 (en) * 2011-04-29 2012-11-01 Simon Boy Method for Generating images of three-dimensional data
CN102724574B (zh) * 2011-05-11 2015-02-18 新奥特(北京)视频技术有限公司 一种多路视频开窗的实现方法
US9843665B2 (en) 2011-05-27 2017-12-12 Microsoft Technology Licensing, Llc Display of immersive and desktop shells
US10417018B2 (en) * 2011-05-27 2019-09-17 Microsoft Technology Licensing, Llc Navigation of immersive and desktop shells
US8640047B2 (en) * 2011-06-01 2014-01-28 Micorsoft Corporation Asynchronous handling of a user interface manipulation
US9361715B2 (en) 2011-06-02 2016-06-07 Microsoft Technology Licensing, Llc Global composition system
RU2458396C1 (ru) * 2011-07-19 2012-08-10 Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." Способ редактирования статических цифровых комбинированных изображений, включающих в себя изображения нескольких объектов
US9563971B2 (en) 2011-09-09 2017-02-07 Microsoft Technology Licensing, Llc Composition system thread
US9182935B2 (en) 2011-09-27 2015-11-10 Z124 Secondary single screen mode activation through menu option
CN102591656B (zh) * 2011-12-28 2015-02-18 深圳万兴信息科技股份有限公司 一种窗口动画实现方法和装置
US9052414B2 (en) 2012-02-07 2015-06-09 Microsoft Technology Licensing, Llc Virtual image device
US9354748B2 (en) 2012-02-13 2016-05-31 Microsoft Technology Licensing, Llc Optical stylus interaction
US9384711B2 (en) * 2012-02-15 2016-07-05 Microsoft Technology Licensing, Llc Speculative render ahead and caching in multiple passes
US8749529B2 (en) 2012-03-01 2014-06-10 Microsoft Corporation Sensor-in-pixel display system with near infrared filter
US9870066B2 (en) 2012-03-02 2018-01-16 Microsoft Technology Licensing, Llc Method of manufacturing an input device
US8935774B2 (en) 2012-03-02 2015-01-13 Microsoft Corporation Accessory device authentication
US8873227B2 (en) 2012-03-02 2014-10-28 Microsoft Corporation Flexible hinge support layer
US9075566B2 (en) 2012-03-02 2015-07-07 Microsoft Technoogy Licensing, LLC Flexible hinge spine
US9134807B2 (en) 2012-03-02 2015-09-15 Microsoft Technology Licensing, Llc Pressure sensitive key normalization
US20130300590A1 (en) 2012-05-14 2013-11-14 Paul Henry Dietz Audio Feedback
US9235925B2 (en) 2012-05-31 2016-01-12 Microsoft Technology Licensing, Llc Virtual surface rendering
US9230517B2 (en) 2012-05-31 2016-01-05 Microsoft Technology Licensing, Llc Virtual surface gutters
US9177533B2 (en) * 2012-05-31 2015-11-03 Microsoft Technology Licensing, Llc Virtual surface compaction
US9286122B2 (en) 2012-05-31 2016-03-15 Microsoft Technology Licensing, Llc Display techniques using virtual surface allocation
US10031556B2 (en) 2012-06-08 2018-07-24 Microsoft Technology Licensing, Llc User experience adaptation
US9019615B2 (en) 2012-06-12 2015-04-28 Microsoft Technology Licensing, Llc Wide field-of-view virtual image projector
US9069905B2 (en) 2012-07-16 2015-06-30 Microsoft Technology Licensing, Llc Tool-based testing for composited systems
CN102799385B (zh) * 2012-07-19 2016-12-21 腾讯科技(深圳)有限公司 桌面控制方法和装置
US9355345B2 (en) 2012-07-23 2016-05-31 Microsoft Technology Licensing, Llc Transparent tags with encoded data
US8964379B2 (en) 2012-08-20 2015-02-24 Microsoft Corporation Switchable magnetic lock
US9152173B2 (en) 2012-10-09 2015-10-06 Microsoft Technology Licensing, Llc Transparent display device
TWI493501B (zh) * 2012-10-26 2015-07-21 Mstar Semiconductor Inc 圖像檔處理方法以及圖像檔處理裝置
US9513748B2 (en) 2012-12-13 2016-12-06 Microsoft Technology Licensing, Llc Combined display panel circuit
KR20140100316A (ko) * 2013-02-06 2014-08-14 엘지전자 주식회사 이동 단말기 및 이의 제어 방법
US9638835B2 (en) 2013-03-05 2017-05-02 Microsoft Technology Licensing, Llc Asymmetric aberration correcting lens
US9594603B2 (en) 2013-04-15 2017-03-14 Microsoft Technology Licensing, Llc Application-to-application launch windowing
US11294529B2 (en) 2013-04-15 2022-04-05 Microsoft Technology Licensing, Llc Application window divider control for window layout management
US10754536B2 (en) 2013-04-29 2020-08-25 Microsoft Technology Licensing, Llc Content-based directional placement application launch
US9542906B2 (en) 2013-05-10 2017-01-10 Microsoft Technology Licensing, Llc Shared compositional resources
US9443331B2 (en) 2013-06-06 2016-09-13 Microsoft Technology Licensing, Llc Input object for routing input for visual elements
US9870115B2 (en) * 2013-06-07 2018-01-16 Apple Inc. User interfaces for multiple displays
US9317891B2 (en) * 2013-06-07 2016-04-19 Ncomputing, Inc. Systems and methods for hardware-accelerated key color extraction
US9307007B2 (en) 2013-06-14 2016-04-05 Microsoft Technology Licensing, Llc Content pre-render and pre-fetch techniques
CN104750440B (zh) * 2013-12-30 2017-09-29 纬创资通股份有限公司 多屏幕的窗口管理方法、电子装置与计算机程序产品
US10120420B2 (en) 2014-03-21 2018-11-06 Microsoft Technology Licensing, Llc Lockable display and techniques enabling use of lockable displays
US10222953B2 (en) * 2014-04-30 2019-03-05 Disney Enterprises, Inc. Systems and methods for editing virtual content of a virtual space
US9659394B2 (en) * 2014-06-30 2017-05-23 Microsoft Technology Licensing, Llc Cinematization of output in compound device environment
US10324733B2 (en) 2014-07-30 2019-06-18 Microsoft Technology Licensing, Llc Shutdown notifications
US10146409B2 (en) 2014-08-29 2018-12-04 Microsoft Technology Licensing, Llc Computerized dynamic splitting of interaction across multiple content
US9733823B2 (en) * 2015-04-01 2017-08-15 Microsoft Technology Licensing, Llc View activation via hit testing in an asynchronous windowing system
CN105068714B (zh) * 2015-08-10 2019-02-05 联想(北京)有限公司 一种显示控制方法及电子设备
CN105549880A (zh) * 2015-12-08 2016-05-04 联想(北京)有限公司 一种窗口控制方法及电子设备
CN107292807B (zh) * 2016-03-31 2020-12-04 阿里巴巴集团控股有限公司 一种图形合成方法、窗口设置方法及系统
US11042955B2 (en) * 2016-06-02 2021-06-22 Nextlabs, Inc. Manipulating display content of a graphical user interface
US20190056854A1 (en) * 2016-10-31 2019-02-21 Hewlett-Packard Development Company, L.P. Developing a non-rectangular user interface
US10223135B2 (en) 2016-12-30 2019-03-05 Dropbox, Inc. User interface extender
WO2018186843A1 (en) * 2017-04-05 2018-10-11 Hewlett-Packard Development Company, L.P. Shell application
CN109240677B (zh) 2017-07-07 2020-10-16 阿里巴巴集团控股有限公司 一种图层处理方法及装置
US11294530B2 (en) * 2017-08-07 2022-04-05 Microsoft Technology Licensing, Llc Displaying a translucent version of a user interface element
TWI726252B (zh) * 2018-10-31 2021-05-01 宏碁股份有限公司 多螢幕操作方法與使用此方法的電子系統
CN111611031A (zh) * 2019-02-26 2020-09-01 华为技术有限公司 一种图形绘制方法和电子设备
US11175423B2 (en) * 2019-08-22 2021-11-16 Schlumberger Technology Corporation Real time deformation of seismic slices using programmable shaders
CN112000417B (zh) * 2020-10-27 2021-05-28 统信软件技术有限公司 一种窗口展示效果的控制方法及计算设备
CN113835600A (zh) * 2021-09-24 2021-12-24 统信软件技术有限公司 一种应用窗口旋转方法、计算设备及可读存储介质
CN114546204B (zh) * 2022-04-21 2022-08-12 广东统信软件有限公司 一种窗口管理方法、计算设备及可读存储介质

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4694404A (en) * 1984-01-12 1987-09-15 Key Bank N.A. High-speed image generation of complex solid objects using octree encoding
JPS63174478A (ja) * 1987-01-14 1988-07-18 Nec Corp デイジタル式テレビジヨン特殊効果発生装置
US5113213A (en) * 1989-01-13 1992-05-12 Sandor Ellen R Computer-generated autostereography method and apparatus
US5396559A (en) * 1990-08-24 1995-03-07 Mcgrew; Stephen P. Anticounterfeiting method and device utilizing holograms and pseudorandom dot patterns
JPH0546568A (ja) * 1991-08-08 1993-02-26 Internatl Business Mach Corp <Ibm> 分散アプリケーシヨン実行装置および方法
US5311329A (en) * 1991-08-28 1994-05-10 Silicon Graphics, Inc. Digital filtering for lenticular printing
US5307449A (en) * 1991-12-20 1994-04-26 Apple Computer, Inc. Method and apparatus for simultaneously rendering multiple scanlines
US5303370A (en) * 1992-11-13 1994-04-12 Score Group, Inc. Anti-counterfeiting process using lenticular optics and color masking
US5487145A (en) * 1993-07-09 1996-01-23 Taligent, Inc. Method and apparatus for compositing display items which minimizes locked drawing areas
US5708717A (en) 1995-11-29 1998-01-13 Alasia; Alfred Digital anti-counterfeiting software method and apparatus
IL116804A (en) 1996-01-17 1998-12-06 R N S Remote Networking Soluti Application user interface redirector
US5862325A (en) * 1996-02-29 1999-01-19 Intermind Corporation Computer-based communication system and method using metadata defining a control structure
GB2312119B (en) 1996-04-12 2000-04-05 Lightworks Editing Systems Ltd Digital video effects apparatus and method therefor
US5805163A (en) * 1996-04-22 1998-09-08 Ncr Corporation Darkened transparent window overlapping an opaque window
US5870088A (en) * 1996-05-09 1999-02-09 National Instruments Corporation System and method for editing a control via direct graphical user interaction
US5819271A (en) * 1996-06-04 1998-10-06 Multex Systems, Inc. Corporate information communication and delivery system and method including entitlable hypertext links
US6061695A (en) * 1996-12-06 2000-05-09 Microsoft Corporation Operating system shell having a windowing graphical user interface with a desktop displayed as a hypertext multimedia document
EP0890926A1 (en) * 1997-01-24 1999-01-13 Sony Corporation Device, method, and medium for generating graphic data
JP3361951B2 (ja) * 1997-02-25 2003-01-07 大日本スクリーン製造株式会社 印刷データ処理装置および方法
US6026433A (en) * 1997-03-17 2000-02-15 Silicon Graphics, Inc. Method of creating and editing a web site in a client-server environment using customizable web site templates
US5896131A (en) * 1997-04-30 1999-04-20 Hewlett-Packard Company Video raster display with foreground windows that are partially transparent or translucent
US6208347B1 (en) * 1997-06-23 2001-03-27 Real-Time Geometry Corporation System and method for computer modeling of 3D objects and 2D images by mesh constructions that incorporate non-spatial data such as color or texture
US6486886B1 (en) * 1997-07-15 2002-11-26 Silverbrook Research Pty Ltd Bump map compositing for simulated digital painting effects
US6023724A (en) * 1997-09-26 2000-02-08 3Com Corporation Apparatus and methods for use therein for an ISDN LAN modem that displays fault information to local hosts through interception of host DNS request messages
US5940843A (en) * 1997-10-08 1999-08-17 Multex Systems, Inc. Information delivery system and method including restriction processing
US5986652A (en) * 1997-10-21 1999-11-16 International Business Machines Corporation Method for editing an object wherein steps for creating the object are preserved
US5933141A (en) * 1998-01-05 1999-08-03 Gateway 2000, Inc. Mutatably transparent displays
JP3350923B2 (ja) 1998-01-06 2002-11-25 横河電機株式会社 計器図表示装置及び計器図表示プログラムを記録した記録媒体
US6870546B1 (en) * 1998-06-01 2005-03-22 Autodesk, Inc. Protectable expressions in objects having authorable behaviors and appearances
US7523415B1 (en) * 1999-06-24 2009-04-21 Porter Swain W Exclusive use display surface areas and persistently visible display of contents including advertisements
EP1257902A4 (en) 2000-02-16 2006-04-19 Goamerica Inc DOCUMENT GENERATION AND FLOW PLANNING FOR JOBS OF APPLICATIONS
IL153939A0 (en) * 2000-07-18 2003-07-31 Incredimail Ltd System and method for visual feedback of command execution in electronic mail systems
US20040075670A1 (en) * 2000-07-31 2004-04-22 Bezine Eric Camille Pierre Method and system for receiving interactive dynamic overlays through a data stream and displaying it over a video content
US7427995B2 (en) * 2000-08-18 2008-09-23 Amcor Limited System for creating an artwork
US7051288B2 (en) * 2001-02-15 2006-05-23 International Business Machines Corporation Method, system, and product for a java-based desktop to provide window manager services on UNIX
US6700583B2 (en) * 2001-05-14 2004-03-02 Ati Technologies, Inc. Configurable buffer for multipass applications
JP3790126B2 (ja) * 2001-05-30 2006-06-28 株式会社東芝 時空間領域情報処理方法及び時空間領域情報処理システム
US7181699B2 (en) * 2001-06-13 2007-02-20 Microsoft Corporation Dynamic resizing of dialogs
US7047500B2 (en) 2001-11-16 2006-05-16 Koninklijke Philips Electronics N.V. Dynamically configurable virtual window manager
US6816159B2 (en) * 2001-12-10 2004-11-09 Christine M. Solazzi Incorporating a personalized wireframe image in a computer software application
US7028266B2 (en) * 2002-04-05 2006-04-11 Microsoft Corporation Processing occluded windows during application sharing
US6980209B1 (en) * 2002-06-14 2005-12-27 Nvidia Corporation Method and system for scalable, dataflow-based, programmable processing of graphics data
US7342589B2 (en) * 2003-09-25 2008-03-11 Rockwell Automation Technologies, Inc. System and method for managing graphical data
US7839419B2 (en) 2003-10-23 2010-11-23 Microsoft Corporation Compositing desktop window manager
US20050275661A1 (en) * 2004-06-10 2005-12-15 Cihula Joseph F Displaying a trusted user interface using background images

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11886685B1 (en) 2022-10-20 2024-01-30 Stardock Corporation Desktop container peek interface

Also Published As

Publication number Publication date
RU2360284C2 (ru) 2009-06-27
ZA200503158B (en) 2006-10-25
EP1702289A4 (en) 2008-02-27
MXPA05007172A (es) 2005-08-29
EP1702289A2 (en) 2006-09-20
US7839419B2 (en) 2010-11-23
AU2004279190A1 (en) 2005-06-23
JP2007510202A (ja) 2007-04-19
RU2009109090A (ru) 2010-09-20
RU2005120233A (ru) 2006-01-20
US20050088447A1 (en) 2005-04-28
US20110072391A1 (en) 2011-03-24
AU2004279190A8 (en) 2008-10-02
MXPA05007140A (es) 2005-08-26
CA2501600A1 (en) 2005-04-23
TW200515226A (en) 2005-05-01
EP2112592A2 (en) 2009-10-28
WO2005045736A2 (en) 2005-05-19
CN101002252A (zh) 2007-07-18
CN101002252B (zh) 2011-09-07
EP2112592A3 (en) 2010-01-20
US8059137B2 (en) 2011-11-15
BRPI0406379A (pt) 2005-08-09
WO2005045736A3 (en) 2006-07-20

Similar Documents

Publication Publication Date Title
JP4819175B2 (ja) オペレーティングシステムのグラフィカルユーザインターフェース内でウィンドウを表示する方法
US7839419B2 (en) Compositing desktop window manager
EP0636971B1 (en) Method and apparatus for producing a composite second image in the spatial context of a first image
EP3111318B1 (en) Cross-platform rendering engine
US6931601B2 (en) Noisy operating system user interface
JP4796499B2 (ja) 映像およびシーングラフインターフェイス
US20060107229A1 (en) Work area transform in a graphical user interface
EP1462936A2 (en) Visual and scene graph interfaces
US8432396B2 (en) Reflections in a multidimensional user interface environment
Kniss Large Scale Volume Rendering in Immersive Environments with Direct Manipulation Widgets
JPH0778243A (ja) 機械操作方法

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid