KR101086570B1 - 동적 윈도우 구조 - Google Patents

동적 윈도우 구조 Download PDF

Info

Publication number
KR101086570B1
KR101086570B1 KR1020057007426A KR20057007426A KR101086570B1 KR 101086570 B1 KR101086570 B1 KR 101086570B1 KR 1020057007426 A KR1020057007426 A KR 1020057007426A KR 20057007426 A KR20057007426 A KR 20057007426A KR 101086570 B1 KR101086570 B1 KR 101086570B1
Authority
KR
South Korea
Prior art keywords
window
content
base
rendering
desktop
Prior art date
Application number
KR1020057007426A
Other languages
English (en)
Other versions
KR20060105421A (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 KR20060105421A publication Critical patent/KR20060105421A/ko
Application granted granted Critical
Publication of KR101086570B1 publication Critical patent/KR101086570B1/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/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
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/14Display of multiple viewports
    • 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
    • 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

Abstract

합성 데스크탑 모델의 오퍼레이팅 시스템을 사용해 컴퓨터 상에 데스크탑을 렌더링하는 방법 및 시스템이 개시된다. 합성 데스크탑 윈도우 관리자는, 애플리케이션 프로그램으로부터 하나 이상의 컨텐츠 오브젝트들에 대한 기본 오브젝트 및 컨텐츠 오브젝트 정보의 수신시, 버퍼 메모리에 윈도우를 드로잉하고, 윈도우들이 드로잉되는 컨텐츠에 기초해 윈도우들을 렌더링하기 위해, 향상된 그래픽 하드웨어 및 시각 효과들을 이용한다. 각 윈도우의 프레임 부분은, 데스크탑의 컨텐츠에 기초해, 무광택 유리의 외관을 가진 비트맵을 프레임이 디스플레이되는 최상부 상에 픽셀 쉐이딩하는 것에 의해 생성될 수 있다. 오퍼레이팅 시스템이, 비-레거시 애플리케이션 윈도우들과 양립하는 것처럼 보이는 레거시 애플리케이션들에 의해 발생한 윈도우들을 드로잉하고 렌더링할 수 있도록, 레거시 지원이 제공된다.
데스크탑, 합성, 실효, 컨텐츠 오브젝트, 시각 효과, 무광택 유리, 레거시 지원

Description

동적 윈도우 구조{DYNAMIC WINDOW ANATOMY}
본 발명은 일반적으로 컴퓨터 오퍼레이팅 시스템의 그래픽 사용자 인터페이스에 관한 것이다. 보다 구체적으로, 본 발명은, 윈도우별로, 각각의 윈도우에 다수의 및/또는 부정형의(irregularly-shaped) 클라이언트 및 비-클라이언트 컨텐츠 영역들을 가질 수 있게 하는 메커니즘을 제공한다.
컴퓨터 오퍼레이팅 시스템들은 통상적으로, 최종 사용자에게 GUI(graphical user interface)를 제공하는 쉘을 가진다. 쉘은, 사용자와 오퍼레이팅 시스템간에 직접적인 통신을 제공하는 하나의 소프트웨어 컴포넌트 또는 소프트웨어 컴포넌트들의 조합으로 이루어진다. GUI는 통상적으로, 사용자가 오퍼레이팅 시스템과 상호 작용하기 위한 그래픽 아이콘-지향형의 및/또는 메뉴 구동형의 환경을 제공하며, 대개 데스크탑 메터퍼(desktop metaphor)에 기초한다. 좀더 구체적으로, GUI는 데스크에서의 작업을 실생활의 활동으로 모델링하도록 설계된다. 데스크탑 환경은 통상적으로 단일 디스플레이 장치의 전면을 차지하거나 다수 디스플레이 장치들로 확장될 수 있으며, 아이콘들, 메뉴들, 커서들, 및 윈도우들과 같은, 하위의 사용자 인터페이스 오브젝트들을 호스트한다.
데스크탑 환경에 의해 호스트되는 렌더링된 오브젝트들의 유형들 중에서, 시 각적으로 윤곽이 그려진 스크린 영역들을 윈도우들이라고 한다. 윈도우는 통상적으로 고유 사용자 활동 전용이며, 제3자 소프트웨어 애플리케이션이나 시스템 애플리케이션에 의해 생성되고 관리된다. 각각의 윈도우는, 윈도우 각각의 특정한 애플리케이션 프로그램 제어하의 가상 디스플레이 장치인 것처럼, 독자적으로 동작하며 자신의 컨텐츠를 디스플레이한다. 윈도우들은 통상적으로 쌍방향으로 리사이징되고, 디스플레이 주위로 이동되며, 누적되는 순서로(in stacked order) 정렬되어 서로 완전히 또는 부분적으로 중첩될 수 있다. 일부 윈도우 환경들에서, 윈도우는, 아이콘으로 크기가 최소화되거나 디스플레이 전면을 차지하도록 크기가 최대화되는 것과 같이, 시각적으로 또는 동작적으로 분별있는 상태들을 가정할 수 있다. 데스크탑 윈도우들의 집합은, 이들이 디스플레이되는, 업계에서는 Z-순서라고 하는, 위-아래의 순서(top to bottom order)로 배치됨으로써, 임의의 윈도우는, Z-순서와 관련하여 자신보다 낮으면서, 스크린상의 동일한 투사 위치를 차지하는 모든 타 윈도우들 위에 놓이게 된다. 소정 시간에는 하나의 선택된 윈도우가 "포커스(focus)"를 가지며, 사용자의 입력을 수용한다. 사용자는, 마우스 또는 다른 포인팅 장치를 클릭하거나 시스템-정의형 키보드 단축키 또는 키 조합을 사용함으로써, 다른 윈도우로 입력 포커스를 돌릴 수 있다. 이로 인해, 사용자는, 물리적 책상위에 무작위로 누적되거나 정렬될 수 있는 페이퍼 문서들 및 다른 아이템들을 관리하는 실생활의 시나리오와 유사한 방식으로, 다수의 애플리케이션 프로그램들, 파일들, 및 문서들을 이용해 효율적으로 작업할 수 있게 된다.
종래의 많은 GUI 데스크탑 구현들에 대한 단점은 시각적으로 풍부한 컨텐츠 를 제시하거나 그래픽 렌더링 기술의 향상들을 이용하기에는 이들의 용량이 한정되어 있다는 것이다. 이러한 향상들로는 물리적으로 모델링된 (밝은, 어두운, 질감이 있는, 투명한, 반사하는, 그리고 굴절하는) 2차원 및 3차원 컨텐츠 및 원활히 움직이는 고성능 애니메이션들의 실시간 렌더링을 들 수 있다. 데스크탑에서 그래픽 렌더링 향상들을 이용하는데 사용할 수 있는 한정된 서비스들과는 달리, Windows® 브랜드의 오퍼레이팅 시스템들 및 유사한 오퍼레이팅 시스템 쉘들내의 GUI에서 윈도우로 또는 풀 스크린으로 실행 중인 소정 애플리케이션 프로그램내에서는 시각적으로 풍부한 컨텐츠가 가능하다. 실시간 3D 애니메이션 및 효과들, 레이 트레이서들(ray tracers)과 같은 향상된 그래픽 저작 도구들, 그리고 향상된 2D 및 3D 인쇄 애플리케이션들을 가진 비디오 게임들이 이러한 컨텐츠를 제시하는 애플리케이션 프로그램들의 유형이다. 이러한 프로그램들의 시각적 출력은 자신의 애플리케이션 윈도우(들)의 컨텐츠 영역 또는 다른 윈도우들과 데스크탑 자체를 제외한 렌더링된 풀-스크린(full-screen)의 컨텐츠 영역으로 한정되므로, 애플리케이션 프로그램의 풍부한 그래픽 출력이 데스크탑 환경의 프레젠테이션에 전혀 기여하지 못한다.
컴퓨터 오퍼레이팅 시스템은, 아이콘들, 메뉴들, 커서들, 윈도우들, 및 데스크탑들과 같은 사용자 인터페이스를 관리하는 것; 마우스 및 키보드와 같은 입력 장치들로부터의 이벤트들을 중재하는 것; 및 소프트웨어 애플리케이션들에게 사용자 인터페이스 서비스들을 제공하는 것을 책임지는 소프트웨어 계층을 채용한다. 이러한 소프트웨어 계층을 DWM(Desktop Window Manager)이라고 할 수 있다. DWM의 렌더링 로직, 입력 이벤트 라우팅, 및 API들(application programming interfaces)이 집합적으로, 오퍼레이팅 시스템의 전반적인 사용자 경험을 정의하는 사용자 인터페이스 정책을 구현한다. 지금까지 풍부하고 시각적인 데스크탑들(rich, visual desktops)이 없었던 주된 원인은 DWM들이 데스크탑을 관리하고 렌더링하는 방법들이었다. 종래의 DWM 구현들은, 주로 비디오 및 시스템 메모리 리소스들 뿐만 아니라 CPU 및 GPU 대역폭을 보존하기 위한 필요성에서 발전된, "실효(invalidation)" 모델을 데스크탑 렌더링에 채용한다.
실효 모델에서는, 윈도우가 리사이징되거나 이동될 때, 또는 애플리케이션이 윈도우의 전부 또는 일부를 리드로잉(redrawing)하고자 할 때, 디스플레이의 영향을 받은 부분이 "실효된다". DWM은 윈도우 사이즈 또는 이동에 의해 영향 받는 영역들을 내부적으로 실효시키는 반면, 자신의 윈도우 전부 또는 일부를 리드로잉하고자 하는 애플리케이션은 자기 윈도우의 특정 영역을 실효시킬 것을, API를 통해, 오퍼레이팅 시스템에 지시한다. 어느 경우에서든, DWM은, 온-스크린 업데이트에 실제로 필요한, 요청 영역의 서브세트를 판정함으로써 실효 요청을 프로세싱한다. DWM은 통상적으로, 목표 윈도우와 관련된 교차 영역들, 목표 윈도우와 중첩되는 다른 윈도우들, 해당 윈도우들과 관련된 클리핑 영역들(clipping regions), 및 디스플레이 가시 경계들의 보유된 리스트를 조사하는 것에 의해, 이것을 실현한다. DWM은 후속적으로 소정의 위-아래 순서(prescribed top-to-bottom order)로 업데이트에 필요한 영역을 특정하는 페인트 메시지(paint message)를 각각의 해당 애플리케이션으로 송신한다. 애플리케이션들은 특정된 영역을 존중하거나 무시할 것을 선택할 수 있다. 로컬 업데이트 영역 외부의 애플리케이션에 의해 수행된 임의의 페인팅은 GDI(Graphics Device Interface)와 같은 하부 레벨의 그래픽 렌더링 엔진에 의해 제공되는 서비스들을 사용해 DWM에 의해 자동적으로 클리핑된다.
실효-메시지 모델(invalidation-messaging model)의 이점은 디스플레이 메모리의 보존이다. 즉, DWM에 기초한 실효는, 현재 디스플레이되어 있는 컨텐츠 아래에 있을 수 있는 것은 "기억"할 필요없이, 하나의 데스크탑을 드로잉하기에 충분한 버퍼 메모리를 유지하기만 하면 된다. 그러나, 데스크탑상의 윈도우들이 하향식(top-down order)으로 렌더링되기 때문에, 비-직사각형 윈도우들 및 GDI를 통한 풍부한 2D 애니메이션들과 같은 사양들은 복잡한 영역들과 관련하여 CPU 집약적인 계산들 및/또는 디스플레이 표면의 광범위한 샘플링을 요하는 한편, 투명도, 음영들, 3D 그래픽, 및 향상된 조명 효과들과 같은 다른 사양들은 극히 어렵고 대단히 리소스 집약적이다.
일례로써, USER로서 알려져 있는, Microsoft Windows® XP 윈도우 관리자는 Windows® 브랜드 오퍼레이팅 시스템의 출현 이래로 (현재 Win32로 알려져 있는) 그래픽 사용자 인터페이스 서브시스템의 주된 컴포넌트로서 기능하고 있다. USER는 디스플레이를 렌더링하기 위해 2-차원 GDI 그래픽 렌더링 엔진을 채용한다. GDI는 Win32의 또 하나의 주된 서브컴포넌트이고 원래의 Windows® 브랜드 오퍼레이팅 시스템에 존재하는 렌더링 기술에 기초한다. USER는 각각의 윈도우를 실효-메시지 모델을 사용해 GDI 클리핑 영역들 및 2D 드로잉 프리미티브들(primitives)과 협력하여 디스플레이에 렌더링한다. 데스크탑 렌더링시 USER의 주된 활동은, 데스크탑 렌더링의 실효 모델마다, 시각적 업데이트가 필요한 디스플레이 영역들을 식별하고 드로잉의 필요성 및 위치를 애플리케이션들에 통지하는 것과 관련이 있다.
데스크탑 렌더링의 후속 개발은 데스크탑 합성(desktop compositing)이라고 하는 아래-위 렌더링 접근 방법이다. 합성 DWM, 즉 CDWM에서, 데스크탑은 하부 계층에서 상부 계층으로 드로잉된다. 즉, 데스크탑 배경이 먼저 드로잉된 다음, 데스크탑상에 직접적으로 배치되는 아이콘들, 폴더들, 및 컨텐츠가 수반되고, 한 단계 높은 폴더(들)이 수반되는 식이다. 하부에서 상부로 데스크탑을 렌더링하는 것에 의해, 각각의 반복적인 계층은 자신의 컨텐츠를 그보다 아래에 있는 계층에 기초할 수 있다. 그러나, CDWM은 데스크탑에 드로잉된 각 아이템의 복사본을 메모리에 보유하기 때문에, 데스크탑 합성은 메모리 집약적인 프로세스이다. 향상된 비디오 하드웨어 및 컴퓨터 메모리의 가격이 훨씬 저렴해진 최근의 시장 변화들 및 제조 기술들이 등장하기 전에는, 상업용, 고가의 하이-엔드 컴퓨팅 시스템들만이, 영화를 위해 특수 효과들을 준비하기 위한 것과 같은, 합성 엔진들을 구현할 수 있었다.
미드- 및 로우-엔드 컴퓨터 비디오 하드웨어의 발전은 대부분 대중적인 오퍼레이팅 시스템들에 이용될 수 있는 그래픽 서비스들에 의해 주도되어 왔다. 그러나, 대중적인 오퍼레이팅 시스템들에 이용될 수 있는 그래픽 서비스들은, 이전의 애플리케이션 소프트웨어와의 호환성을 유지해야 할 필요성 및 가격이 적당한 범위의 비디어 하드웨어의 제한된 능력들을 포함하는, 다양한 원인들로 인해 크게 향상 되지 못했다. 그러나, 좀더 최근에는, 실시간 3D 컴퓨터 게임들은 단시간에 이례적인 수준의 정교함을 실현한 소매 비디오 하드웨어를 발전시키기 위한 시장의 주된 요인으로서 오퍼레이팅 시스템을 따라잡고 있다. 이제는 실시간의 하드웨어-기반 3D 가속화가 합리적인 비용으로 소비자들에게 이용될 수 있다. 따라서, 가속화된 텍스처 및 조명 알고리즘들, 3D 변환들, 및 GPU를 직접적으로 프로그램하는 능력과 같은, 한때 크게 향상된 것으로 간주되던 그래픽 하드웨어 사양들을 쉽게 이용할 수 있다. 현재로는, 범용의 게임 전용 소프트웨어 및 상당히 특수화된 그래픽 애플리케이션들이 적극적으로 이러한 사양들을 이용하고 있으며, 그렇게 하기 위해, 이들은 레거시 Win32 윈도우 관리자(USER) 및 GDI를 바이패스해야 한다.
합성 데스크탑 모델을 구현함에 있어서의 또 다른 장애는, 실효 모델 DWM에 사용하기 위해 기입된 레거시 애플리케이션들이 합성 환경에서 제대로 동작하지 않을 것이라는 점이다. 이것은, 레거시 애플리케이션의 코어 렌더링 로직이 오퍼레이팅 시스템의 실효-모델 DWM API들에 기초하기 때문이다. 즉, 사용자 상호 작용 또는 내부 상태의 변화들에 대한 직접적인 응답으로 윈도우 컨텐츠를 렌더링하기보다, 레거시 애플리케이션은, 오퍼레이팅 시스템이나 자신의 실효 요청에 의해 생성된 페인트 메시지의 수신시에만 드로잉할 것이다. 가장 어려운 해결책은, 합성 DWM이 애플리케이션을 위해 레거시 GUI 플랫폼을 대행하는 수단을 고안하는 것이다. 좀더 단순한 다른 방법들로는 합성 데스크탑 환경으로부터 애플리케이션을 제외시키는 것(업계에 "sand boxing"으로 공지되어 있는 접근 방법) 또는 간단하게 레거시 애플리케이션 호환성을 모두 포기하는 것을 들 수 있다.
현재, 비-클라이언트 영역에 상주하는 UI 요소들은 애플리케이션에 의해 변경될 수 없다. 또한, 표준 프레임 레이아웃을 조회, 변경, 또는 선택적으로 중첩하거나, 비-클라이언트 요소들을 개별적으로 렌더링하기 위한 직접적이고 확실한 수단은 존재하지 않는다. 예를 들어, 애플리케이션이 시스템 아이콘 또는 비-클라이언트 버튼들(예를 들어, 복구, 최대화, 최소화, 닫기)을 재배치하고 맞춤형 비-클라이언트 버튼들을 추가하거나 추적할 수 있는 실질적인 방법은 존재하지 않는다. 또한, 애플리케이션이 윈도우의 전체적인 비-클라이언트 영역(뿐만 아니라 클라이언트 영역)에 대한 렌더링 및 히트-테스팅(hit-testing)을 책임지려 하지 않는다면, 애플리케이션들은 애플리케이션 컨텐츠를 하나의 직사각형 영역(클라이언트 영역)으로 배치할 수밖에 없다. 기존 USER 프레임워크내의 이러한 제한들 중 어느 하나의 완화는, 이러한 제한들을 예견하고 그것에 의존하는 사용 불가능한 대중적인 많은 레거시 애플리케이션들을 재현할 것이다.
따라서, 합성 모델을 사용해 데스크탑을 렌더링하는 풍부한, 완전 사양의 오퍼레이팅 시스템을 제공하는 것과 동적 윈도우 아키텍처들을 허용하는 데스크탑 윈도우 관리자를 제공하는 것은 업계의 발전이 될 것이다. 레거시 애플리케이션들 또한 동적 아키텍처 모델에서 동작하도록 하기 위해, 레거시 애플리케이션들도 지원하는 동적 윈도우 아키텍처들을 허용하는 데스크탑 윈도우 관리자를 제공하는 것은 업계의 더 큰 발전이 될 것이다.
다음에서는, 본 발명의 일부 특징들에 대한 기본적인 이해를 제공하기 위해, 본 발명의 간략화된 요약을 제시한다. 이 요약이 본 발명에 대한 광범위한 개요는 아니다. 본 발명의 핵심 또는 중요한 요소들을 식별하거나 본 발명의 범위를 한정하려는 것도 아니다. 다음의 요약은 단지, 다음에 제공되는 보다 상세한 설명으로의 도입으로서, 간략화된 형태로 본 발명의 일부 개념들을 제시한다.
상술된 종래 기술의 한계들 및 본 명세서를 읽고 이해하면서 명백해질 다른 한계들을 극복하기 위해, 본 발명은 향상된 그래픽 및 렌더링 능력들을 제공하는 합성 데스크탑에 관한 것이다.
본 발명의 예시적 제1 양태는, 동적 구조들을 이용해 윈도우들을 드로잉하는 데이터 프로세싱 시스템을 제공한다. 데이터 프로세싱 시스템은, 그에 대한 속성들이 저장되는 각각의 윈도우에 대해, 기본 오브젝트에 대한 속성들 및 하나 이상의 컨텐츠 오브젝트에 대한 속성들을 구비하는 윈도우 속성들을 저장하는 메모리를 가진다. 또한, 데이터 프로세싱 시스템은, 그에 대한 속성들이 저장되는 각각의 윈도우에 대한 윈도우 속성들에 기초해 데스크탑을 합성하는 합성 데스크탑 윈도우 관리자 소프트웨어 모듈도 가진다.
본 발명의 다른 양태는, 불균일한 동적 구조들을 가진 윈도우들에 대한 윈도우 정보를 저장하는 데이터 구조를 제공한다. 데이터 구조는 윈도우의 기본 오브젝트에 대한 기본 오브젝트 속성들을 저장하는 제1 데이터 필드, 및 윈도우의 하나 이상의 컨텐츠 오브젝트들에 대한 컨텐츠 오브젝트 속성들을 저장하는 제2 데이터 필드를 포함한다.
유사한 참조 번호들이 유사한 사양들을 지시하는 첨부 도면들에 관한 다음의 설명을 참조함으로써, 본 발명 및 그에 관한 이점들을 좀더 완전하게 이해할 수 있다.
도 1A는 본 발명의 실시예에 대한 하나 이상의 양태들에 사용될 수 있는 동작 환경을 도시한다.
도 1B는 합성 데스크탑 플랫폼의 실시예에 대한 컴포넌트들 사이에서의 기능 및 서비스들의 분배를 도시한다.
도 2는 본 발명의 예시적 양태에 따른 합성 방법을 도시한다.
도 3은 본 발명의 예시적 양태에 따른 윈도우를 도시한다.
도 4는 본 발명의 예시적 양태에 따른 윈도우 합성 방법의 일부를 도시한다.
도 5는 본 발명의 예시적 양태에 따라 렌더링된 무광택 유리 프레임형 윈도우(frosted glass framed window)를 도시한다.
도 6은 동적 윈도우 구조를 가진 윈도우를 도시한다.
도 7은 메시 리사이징 동안에 사용된 영역들을 도시한다.
다양한 실시예들의 다음 설명에서는, 다양한 실시예들의 일부를 형성하며, 본 발명이 실시될 수 있는 다양한 실시예들의 예시로써 도시되어 있는 첨부 도면들을 참조한다. 본 발명의 범위 및 정신을 벗어나지 않으면서, 다른 실시예들이 이용될 수도 있고 구조적인 그리고 기능적인 변경들이 이루어질 수도 있다는 것을 알 수 있을 것이다.
본 발명은, 데스크탑 합성을 바람직한 렌더링 모델로서 사용하는 DWM을 제공한다. 본 발명의 DWM을 여기에서는 CDWM(Compositing Desktop Window Manager)라고 한다. CDWM은, UCE(Unified Compositing Engine)라고 하는 합성 서브시스템과 함께, 데스크탑에 3D 그래픽과 애니메이션, 음영들, 투명도, 향상된 조명 기술들, 및 다른 풍부한 시각적 특징들을 제공한다. 여기에 사용되는 합성 렌더링 모델은 본질적으로 렌더링시의 실효 단계를 제거하며, 시스템이 각각의 윈도우를 렌더링하기 위해 필요한 충분한 상태 정보를 보유하기 때문에, 페인트 및 다른 통지 메시지들을 전송할 필요성을 최소화하거나 제거한다.
예시적인 동작 환경
도 1은 본 발명이 구현되는 적절한 컴퓨팅 시스템 환경(100)의 예를 도시한다. 이 컴퓨팅 시스템 환경(100)은 적절한 컴퓨팅 환경의 일례일 뿐이고 발명의 이용 범위나 기능에 어떠한 한정을 지으려고 하는 것은 아니다. 컴퓨팅 환경(100)은 예시적인 동작 환경(100)에 기술된 컴포넌트 중 어느 하나 또는 어떠한 조합에 의존하거나 그것을 요구하는 것으로 해석되어서도 안된다.
본 발명은 무수한 다른 범용 또는 특수 컴퓨팅 시스템 환경 또는 구성과도 동작할 수 있다. 본 발명과 함께 사용하기에 적절한 공지의 컴퓨팅 시스템, 환경, 및/또는 구성의 예는 개인용 컴퓨터, 서버 컴퓨터, PDA, 태블릿 PC 또는 랩탑 PC와 같은 휴대용 또는 핸드헬드 장치, 멀티프로세서 시스템, 마이크로콘트롤러 기반 시스템, 셋탑 박스, 프로그램 가능한 주문형 전자기기, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 디지털 텔레비전, 시뮬레이터 시스템, 임의의 상기 시스템 또는 장치를 포함하는 분산 컴퓨팅 환경 등을 포함하나 이에 제한되지 않는다.
본 발명은 프로그램 모듈과 같이 컴퓨터에 의해 실행되는 일반적인 컴퓨터 실행가능한 명령의 문맥으로 기술된다. 일반적으로, 프로그램 모듈은 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등, 특정 태스크를 수행하거나 특정한 추상 데이터 형태를 구현하는 것들을 포함한다. 본 발명은 또한 통신 네트워크를 통해 링크된 리모트 프로세싱 장치에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서 실행될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 포함하는 로컬 및 원격 컴퓨터 저장 매체에 위치할 수 있다.
도 1A를 참조하면, 본 발명을 구현하기 위한 예시적인 시스템은 컴퓨터(110) 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 컴포넌트는 처리 유닛(120), 시스템 메모리(130), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트들을 처리 유닛(120)에 결합시키는 시스템 버스(121)를 포함하나, 이에 한정되지 않는다. 시스템 버스(121)는 메모리 버스 또는 메모리 컨트롤러, 주변 회로 버스, 및 임의의 다양한 버스 아키텍처를 사용하는 로컬 버스를 포함하는 몇가지 버스 구조 형태가 될 수 있다. 예를 들면, 이러한 아키텍처는 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Vedio Electronics Standards Association) 로컬 버스, AGP(Advanced Graphics Port) 버스, 및 메자닌(Mezzanine) 버스라고도 알려진 PCI(Peripheral Component Interconnect) 버스를 포함할 수 있으며 이에 한정되지는 않는다.
컴퓨터(110)는 전형적으로 다양한 컴퓨터 판독가능한 매체를 포함한다. 컴 퓨터 판독가능한 매체는 컴퓨터(110)에 의해 접근가능한 가용 매체일 수 있으며 휘발성 및 불휘발성 매체와, 착탈가능(removable) 및 착탈불가능 매체 모두를 포함할 수 있다. 예를 들어, 컴퓨터 판독가능한 매체는 컴퓨터 저장 매체와 통신 매체를 포함하나 이에 한하지 않는다. 컴퓨터 저장 매체는 컴퓨터 판독가능한 명령어, 데이터 구조, 프로그램 모듈이나 다른 데이터 등의 정보를 저장하기 위한 모든 방법 또는 기술로 구현되는 휘발성, 불휘발성, 그리고 착탈가능, 착탈불가능 매체를 모두 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD, 또는 다른 광디스크 저장장치, 자기 카세트, 자기 테잎, 자기 디스크 저장장치 또는 다른 자기 저장장치, 또는 원하는 정보를 저장하는데 사용될 수 있고 컴퓨터(110)에 의해 접근가능한 모든 다른 매체를 포함하나, 이들에 제한되지는 않는다. 통신 매체는 전형적으로 컴퓨터 판독가능한 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파 또는 다른 전송 메카니즘 등의 변조 데이터 신호의 다른 데이터를 구체화하며, 각종 정보 전달 매체를 포함한다. "변조 데이터 신호(modulated data signal)"라는 용어는 하나 이상의 특성 세트를 갖거나 신호 내의 정보를 부호화하는 방식으로 변경되는 신호를 의미한다. 예를 들어, 통신 매체는 유선 네트워크 또는 직접 유선 접속, 및 음향, RF, IR 및 다른 무선 매체와 같은 무선 매체를 포함하나, 이에 제한되지 않는다. 상기한 것들의 어떠한 조합도 컴퓨터 판독가능한 매체의 범위에 들어갈 수 있다.
시스템 메모리(130)는 ROM(131)과 RAM(132) 같은 휘발성 및/또는 불휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 기본 입출력 시스템(BIOS)(133)은 개시(start-up)와 같은 컴퓨터(110) 내의 소자 간에 정보를 전달하도록 돕는 기본 루틴을 포함하는 것으로, 통상 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), 애플리케이션 프로그램(135), 다른 프로그램 모듈(136), 및 프로그램 데이터(137)와 같거나 다른 수 있다는 점을 알아야 한다. 오퍼레이팅 시스템(144), 애플리케이션 프로그램(145), 다른 프로그램 모듈(146), 및 프로그램 데이터(147)는 최소한 그들이 다른 카피라는 것을 나타내기 위해 여기서는 다른 참조번호를 부여하였다. 사용자는 키보드(162)와 통상 마우스, 트랙볼, 또는 터치 패드라고 하는 포인팅 장치(161) 등의 입력 장치를 통해 커맨드와 정보를 컴퓨터(110)에 입력할 수 있다. 다른 입력 장치(도시되지 않음)는, 마이크로폰, 조이스틱, 게임 패드, 위성 접시, 스캐너, 등을 포함할 수 있다. 이러한 입력 장치들과 다른 입력 장치는 흔히 시스템 버스에 접속된 사용자 입력 인터페이스(160)를 통해 처리 유닛(120)에 접속되나, 병렬 포트, 게임 포트 또는 USB(universal serial bus)와 같은 다른 인터페이스와 버스 구조에 의해 접속될 수도 있다. 모니터(184)나 다른 형태의 디스플레이 장치도 비디오 인터페이스(183)와 같은 인터페이스를 통해 시스템 버스(121)에 접속된다. 또한, 컴퓨터(110)는 모니터(184)와 함께 사용되는 디지털 전화기(185)를 포함하여, 사용자가 스타일러스 입력 장치(186)를 사용한 입력을 제공할 수 있게 한다. 모니터 외에, 컴퓨터는 스피커(189)와 프린터(188)와 같은 다른 주변 회로 출력 장치도 포함할 수 있는데, 이들은 출력 주변 회로 인터페 이스(195)를 통해 접속될 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)과 같은 하나 이상의 원격 컴퓨터에 논리 접속을 사용하여 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 다른 공용 네트워크 노드가 될 수 있으며, 일반적으로 컴퓨터(110)에 관해 위에서 기술한 모든 또는 많은 소자들을 포함할 수 있는데, 도 1에는 메모리 저장 장치(181)만이 도시되어 있다. 도 1에 도시된 논리 접속은 LAN(171)과 WAN(173)을 포함하나, 다른 네트워크도 역시 포함할 수 있다. 이러한 네트워크 환경은 사무실, 전기업 컴퓨터 네트워크, 인트라넷, 인터넷에서 흔히 찾아볼 수 있다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 네트워크 인터페이스나 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워킹 환경에서 사용되는 경우, 일반적으로 컴퓨터(110)는 인터넷과 같은, WAN(173)에서의 통신들을 확립하기 위한 모뎀(172) 또는 기타 수단을 포함한다. 모뎀(172)은 내장 또는 외장될 수 있으며, 사용자 입력 인터페이스(160) 또는 다른 적절한 메카니즘을 통해 시스템 버스(121)에 접속될 수 있다. 네트워크 환경에서, 컴퓨터(110)에 대해 기술된 프로그램 모듈 또는 그 일부분들은 원격 메모리 기억 장치에 저장될 수 있다. 예로서 - 이에 한정되지는 않음 - , 도 1은 메모리 장치(181)에 상주하는 리모트 애플리케이션 프로그램들(185)을 나타낸다. 도시된 네트워크 접속은 예시적이고 컴퓨터들 사이에 통신 링크를 확립하는 다른 수단들이 사용될 수 있다.
예시적인 실시예들
본 발명은, 합성 데스크탑 모델, 즉, 상향식 렌더링 방법을 사용해 데스크탑 디스플레이를 드로잉하고 유지하기 위해, CDWM을 사용할 수 있다. CDWM은 장래의 참조를 위해 버퍼 메모리에 컨텐츠를 유지할 수 있다. CDWM은, 데스크탑 배경으로 시작해 Z-순서와 반대로 윈도우들을 중첩시켜, 상향식으로 데스크탑을 드로잉하는 것에 의해, 데스크탑을 구성한다. 데스크탑을 구성하는 동안, CDWM은, 그 상부의 윈도우가 드로잉되고 있는 컨텐츠에 부분적으로 기초하고 다른 환경 팩터들(예를 들어, 광원들, 반사 속성들 등)에 일부 기초해 각각의 윈도우를 드로잉할 수 있다. 예를 들어, CDWM은 윈도우에 투명도를 제공하기 위해 ARGB 포맷 텍스처의 알파 채널을 사용할 수 있고, 가상 광원에 기초해 윈도우 컨텐츠의 일부들(예를 들어, 프레임)을 선택적으로 강조할 수 있다.
CDWM은 오퍼레이팅 시스템(134, 144)의 일부로서 상주하거나 오퍼레이팅 시스템과 무관하게, 예를 들어, 다른 프로그램 모듈들(136, 146)에 상주할 수 있다. 또한, CDWM은, 여기에서 UCE(Unified Compositing Engine)라고 하며, 이하 그 전부가 여기에 참조로서 포함되는, "System and Method for a Unified Composition Engine in a Graphics Processing Sysyem"이라는 명칭으로 2003년 10월 23일에 출원된 계류 중인 특허출원 제 (attorney docket number 50037.201US01)호에서 더 후술되는, 하부 레벨의 그래픽 합성 서브시스템에 의존할 수 있다. 예시적 일 실시예에서, UCE는 워싱턴주, 레드몬드의 마이크로소프트사에 의한 Direct3D® 및 DirectX® 기술에 기초하거나 그것을 사용한다. 다른 실시예들에서는, 캘리포니아주 마운틴 뷰의 실리콘 그래픽스사에 의한 OpenGL® 그래픽 엔진에 기초하는 X Window 플랫폼의 변형들과 같은, 다른 그래픽 합성 서브시스템들이 사용될 수도 있다. UCE는 데스크탑상에 3D 그래픽과 애니메이션, 투명성, 음영들, 조명 효과들, 범프 매핑, 환경 매핑, 및 다른 풍부한 시각적 특징들을 가능하게 한다.
도 1B는 데스크탑 합성 플랫폼의 실시예에 따른 컴포넌트 아키텍처를 도시한다. CDWM(190)은, 합성식 애플리케이션 소프트웨어(191)가 CDWM의 윈도우 및 컨텐츠 생성과 관리 서비스들을 획득하는 애플리케이션 프로그래밍 인터페이스(190a); 레거시 윈도우 그래픽 서브시스템(192)이 개개 윈도우들의 방향 지정된 그래픽 출력(윈도우 그래픽 출력 방향 지정은 다음에서 부연된다)에 영향을 미치는 변화들에 대한 업데이트 통지들을 송신하는 서브시스템 프로그래밍 인터페이스(190b); 및 윈도우들 및 그들과 관련된 컨텐츠와 같은 데스크탑 UI 오브젝트들을 위한 Z-순서형 리포지토리(Z-ordered repository)를 보유하는 UI 오브젝트 관리자(190c)를 포함할 수 있다. UI 오브젝트 관리자는 리소스들, 오브젝트 동작 속성들, 및 액티브 데스크탑 테마와 관련된 렌더링 메트릭들을 검색하기 위해 테마 관리자(193)와 통신할 수 있다.
레거시 그래픽 사용자 인터페이스 서브시스템(192)은 레거시 윈도우 관리자(192a) 및 레거시 그래픽 장치 인터페이스(192b)를 포함할 수 있다. 레거시 윈도우 관리자(192a)는 CDWM의 출현 이전에 개발된 소프트웨어 애플리케이션들에 대해 실효-모델 윈도우 및 데스크탑 서비스들을 제공한다. 레거시 그래픽 장치 인터페이스(192b)는 레거시 애플리케이션들 뿐만 아니라 레거시 윈도우 관리자 모두에게 2D 그래픽 서비스들을 제공한다. 데스크탑을 렌더링하기 위한 실효 모델에 기초하 는 레거시 그래픽 장치 인터페이스는, 3D, 하드웨어-가속형 렌더링 프리미티브들 및 변환들에 대한 지원이 없을 수도 있고, 원래부터 비트맵 카피 및 전달 동작들에서의 픽셀마다의 알파 채널 투명성을 지원하지 않을 수도 있다. 레거시 윈도우 관리자(192a) 및 그래픽 장치 인터페이스(192b)는 다같이, 실효 모델을 사용하는, 사용자들이 선호하는 또는 중요한 소프트웨어 애플리케이션들을 실행시키기 위한 능력을 희생시키지 않으면서 그들의 오퍼레이팅 시스템을 업그레이드하고자 하는 사용자들에 대한 소유 비용을 지속적으로 감소시키는 역할을 한다. 인식할 수 있는 최종 사용자 손실이 거의 없거나 전혀 없는 방식으로 레거시 애플리케이션 윈도우들과 합성식 애플리케이션 윈도우들의 이음매 없는(seamless), 단계적 통합을 실현하기 위해, 레거시 그래픽 사용자 인터페이스 서브시스템(192)의 합성 프로세스에 대한 능동적인 참여가 필요할 수 있다. 실제로, 레거시 애플리케이션들을 위해 지각된 플랫폼 환경은, 합성된 데스크탑상에서 이들의 견고성(robustness)을 양보하는 것을 방지하기 위해, 변화하지 않는 것이 바람직하며, 그럼에도 불구하고, 레거시 윈도우들이 데스크탑에 렌더링되는 기본적인 방식은 근본적으로 변하지 않을 것이다. 본 발명은, 여기에서 윈도우 그래픽 출력 방향 지정(window graphic output redirection)으로서 설명된 사양의 추가를 통해, 이것이 실현되는 방법을 설명한다.
UCE(194)는 렌더링 명령어들을 서비스할 수 있고 CDWM으로부터 프로그래밍 인터페이스(194a)를 통해 방출된 리소스들을 합체할 수 있다. 넓은 의미에서, CDWM에 관한 UCE의 역할은 레거시 윈도우 관리자(192a)에 관한 레거시 그래픽 장치 인터페이스(192b)의 역할과 유사하다. UCE 프로그래밍 인터페이스(194a)는 CDWM을 제공하고, 궁극적으로는 광범위한 그래픽 서비스들에 대한 애플리케이션들 및 추상적 인터페이스를 제공한다. 이러한 UCE 서비스들 중에서는, 리소스 관리, 다수-디스플레이 시나리오들로부터의 인캡슐레이션, 및 원격 데스크탑 지원이 있다.
CDWM 기입 동작들과 렌더링 동작들간의 그래픽 리소스 경합은 내부 리소스 관리자(194b)에 의해 중재될 수 있다. 리소스 업데이트들 및 렌더링 서비스들을 위한 요청들은 프로그래밍 인터페이스 서브컴포넌트(194a)에 의해 UCE의 요청 큐(194c; request queue)상에 배치된다. 이러한 요청들은, 시스템상에 설치된 디스플레이 장치들의 리프레시 속도와 일치하는 간격들에서 렌더링 모듈(194d)에 의해 비동기적으로 프로세싱될 수 있다. 따라서, UCE(194)의 렌더링 모듈(194d)은 CDWM 요청들을 큐잉해제(dequeuing)하고, 필요하다면 리소스 관리자(194b)에 저장되어 있는 리소스들을 액세스 및 조작하며, 디스플레이-특정 렌더링 명령어들을 어셈블링하여 3D 그래픽 인터페이스(195)로 전달할 수 있다.
데스크탑을 다수 디스플레이들로 렌더링하는 것은 이질적인 디스플레이 장치들 사이에서의 리프레시 속도, 픽셀 포맷 지원, 및 장치 좌표 매핑의 차이들에 대한 추상화를 요한다. UCE가 이러한 추상화를 제공할 수 있다.
또한, UCE는 원격 데스크탑 구성들의 네트워크 접속을 통해 그래픽 데이터를 전달하는 것을 책임질 수도 있다. 하나의 특정 시스템의 데스크탑을 다른 시스템으로 효율적으로 통신 접속하기 위해서는, 리소스 경합이 방지되어야 하고, 성능 최적화가 수행되어야 하며, 보안이 강건해야 한다. 이러한 책임들도 UCE에 달려 있을 수 있다.
3D 그래픽 인터페이스(195)는 Direct3D®, OpenGL® 등과 같은 저레벨, 즉시-모드(무상태;stateless)의 그래픽 서비스를 포함할 수 있다. 3D 그래픽 인터페이스의 목적은 특정한 그래픽 하드웨어 구성의 사양들에 대해 추상적 인터페이스를 제공하는 것일 수 있다. 3D 그래픽 인터페이스는 하나의 디스플레이 장치를 서비스할 수 있고, UCE는 CDWM의 렌더링 명령어들을 파싱하고, 다수의 장치 드라이버들(196)을 통해, 다수-디스플레이 시스템의 다수 그래픽 출력 장치들(197) 사이에 분배할 수 있다.
도 1B에 도시된 컴포넌트 아키텍처는 실시예의 컴포넌트 아키텍처라는 것에 주의해야 한다. 도면은, 본 발명이 포함할 수 있는 기능들을 예시하려는 것이다. 이러한 기능들은, 플래폼 및 소정 사양 세트의 능력들에 따라, 도면에 표현된 것들보다 더 적은 또는 더 많은 수의 소프트웨어 컴포넌트들 사이에 분배될 수 있다. 예를 들어, 테마 관리가 없는 시스템은, 별개의 테마 관리자로부터가 아니라, CDWM 자체에 의해 정적 리소스들이 관리되는 것처럼, 시스템으로부터 모든 스톡 리소스들을 유도할 수도 있다. 플러거블 윈도우(plugable window)를 허용하는 플랫폼은, 합성된 UI 오브젝트 및 리소스 관리의 세부 사항들을 추상화하기 위해, CDWM의 애플리케이션 프로그래밍 인터페이스(190a)를 플러거블 윈도우 관리자 인터페이스로 대체할 수 있다. 가능한 또 다른 변형은, 레거시 애플리케이션 호환성이 불필요하다면, 서브시스템 프로그래밍 인터페이스(190b)를 제거할 수 있다. 도 1B에 도시된 UCE(194)의 서브컴포넌트들은 개개의 프로세스들로 분해되거나, CDWM 자체로 합 쳐지거나, 3D 그래픽 인터페이스로 통합될 수 있다. 따라서, 각각이, 본 발명이 구비하는 기능들의 전체 범위 또는 서브세트를 충족시킬 수 있는, 특정 컴포넌트들의 광범위한 설계들이 가능하다.
도 2는, 본 발명의 예시적 양태에 따른 데스크탑 합성을 수행하는 일반적인 방법을 도시한다. 단계들(201 내지 205)은 윈도우 및 윈도우 컨텐츠를 생성하고 관리하기 위해 CDWM API들을 사용하는 합성식 애플리케이션의 상호 작용을 설명한다. 단계들(207 및 209)는 레거시 실효-모델 윈도우 관리자 애플리케이션과 레거시 윈도우 컨텐츠를 합성하기 위한 CDWM간의 상호 작용을 도시한다.
단계 201에서, CDWM은 합성식 애플리케이션으로부터 (1) 합성된 윈도우를 생성하고 (2) 컨텐츠 오브젝트를 첨부하기 위한 요청들을 수신한다. 본 발명은 윈도우마다 하나의 컨텐츠 오브젝트에 한정되지 않으며; 애플리케이션은, 다음에서 부연되는, CDWM API를 통해, 임의 갯수의 컨텐츠 오브젝트들을 동적으로 생성하여 윈도우에 첨부(뿐만 아니라 분리 및 파괴)할 수 있다. 컨텐츠 오브젝트는, 추가적인 텍스처들(광 맵, 반사 맵, 범프/정상 맵 등), 광들, 및 픽셀 쉐이더(pixel shader)와 같은 선택적인 액세서리 리소스들과 함께, 애플리케이션- 또는 시스템-정의형 메시로 매핑되는 확산 텍스처로서 사용될 특정 크기와 픽셀 포맷의 래스터 표면(raster surface)으로 이루어진다. 확산 컨텐츠 텍스처의 픽셀 포맷은 시스템상에 설치된 비디오 하드웨어에 의해 지원되는 이용 가능한 포맷들 중 어느 하나일 수 있지만, 현재 예시의 목적들을 위해서는, 32-비트 ARGB일 수 있다. 이러한 포맷을 요청할 경우, 애플리케이션은, 알파(A) 채널이 컨텐츠 픽셀의 투명도 레벨을 변경 하는데 사용될 수 있으므로, 최종적인 렌더링상의 소스 픽셀로 데스크탑 배경 정보의 양에 대한 미세 제어를 조정할 수 있다는 것을 함축적으로 인지할 수 있다. 단계 203에서, CDWM은, CDWM이 CDWM-구현 컨텐츠 오브젝트를 부착하는 윈도우에 대한 상태 블록을 할당한다. 컨텐츠 오브젝트는 요청된 리소스들을 할당하거나 애플리케이션에 의해 전달된 리소스들을 부착한 다음, UCE 업데이트 요청들에 대한 준비된 액세스를 허용하기 위해, 이러한 리소스들을 UCE에 배치한다. 단계 205에서, 애플리케이션은 윈도우 또는 윈도우 컨텐츠에 대한 자발적인 변화를 CDWM에 통지한다. 이러한 변환들은 임의의 윈도우 또는 컨텐츠 상태에 영향을 미칠 수 있지만, 간략화를 위해, 본 예시는 3개의 일반적인 업데이트 요청들; 컨텐츠 크기, 윈도우 위치 또는 스케일, 또는 컨텐츠 확산 텍스처의 픽셀들에 대한 변화를 도시한다.
레거시 윈도우를 합성하는 프로세스는, 레거시 윈도우 각각의 그래픽 출력을 임시 메모리 위치로 위치 지정하기 위해, CDWM(190)이 요청을 레거시 윈도우화 및 그래픽 서브시스템(192)으로 전달하는(단계 207), 데스크탑 합성 개시에서 시작한다. 단계 207은, 레거시 윈도우 및 그래픽 서브시스템을, 개별적인 윈도우 각각의 렌더링이 개별적인 메모리 버퍼로 위치 지정되는 "합성 모드"에 배치하는 것으로서, 좀더 일반적으로 설명될 수 있다. 실시예에서, 레거시 그래픽 사용자 인터페이스 서브시스템(192)은 윈도우를 윈도우와 관련된 비트맵형 메모리 표면으로 렌더링하는 것에 관련된 그래픽 명령어들의 출력을 위치 지정한다. 그러나, 본 발명은, 원래의 드로잉 명령어들 및 관련 파라미터들을 보유하고, 목표 디스플레이 장치에 대한 후속 비디오 프레임의 합성 프로세스 동안 UCE에서 이 명령어들을 실행 할 수 있는 능력을 포함한다. 이러한 위치 지정 버퍼들(표면들 또는 드로잉 명령어 블록들)은 CDWM 또는 레거시 윈도우 관리자(192a)에 의해 관리될 수 있지만, 이 예시의 목적을 위해, 표면 리소스 관리는 CDWM에 집중된다. 각각의 위치 지정 버퍼는 윈도우에 대한 확산 컨텐츠 텍스처 리소스를 구성하거나 확산 컨텐츠 텍스처 리소스를 생성하는데 사용된다. 레거시 윈도우 관리자(192a)가 CDWM 윈도우 및 컨텐츠 생성 API들을 호출할 필요는 없고, 통지들을 위한 레거시 서브시스템-CDWM 통신 채널은 애플리케이션 인터페이스의 통신 채널과 구별되며, CDWM은 기존의 레거시 윈도우 속성들로부터 합성된 윈도우 속성들(프레임 및 보더 스타일, 캡션 등) 및 상태(은닉/표시, 최소화/최대화 등)를 유도한다. 단계 209에서, 레거시 윈도우 관리자(209a)는, 시각적 업데이트가 필요할 수 있는 위치 지정된 윈도우 컨텐츠 텍스처에 영향을 미치는 임의의 변화를 CDWM(190)으로 통지한다.
단계들(211, 219, 및 223)에서, CDWM(190)은 크기, 위치/스케일, 및 픽셀 레벨 텍스처로부터 업데이트 요청들을 구별하고, 그에 따라 동작한다. 크기 업데이트(단계 211)시에, CDWM은 먼저, 프레임이 목표 윈도우와 관련되어 있는지의 여부를 판정한다(단계 213). 프레임이 윈도우와 관련되어 있다면(단계 215), CDWM은 합성식 애플리케이션에 의해 명시적으로 제공된 2- 또는 3-차원 범위(extent)에 기초하거나, 또는 레거시 및 CDWM 윈도우 메트릭들과 위치 지정된 레거시 표면의 업데이트된 차원들의 조합에 기초해, 프레임 프리미티브의 적합한 크기 및 방향을 판정한다. 프레임 크기가 판정된 후, CDWM은 프레임 메시의 꼭지점(vertex)들에 대한 위치 정보를 적절히 변경하고, 꼭지점 데이터 버퍼를 UCE로 전달한다. UCE는 메시 업데이트 지시 및 새로운 꼭지점 정보를 비동기 프로세싱을 위해 큐에 배치한다. 윈도우가 프레임을 갖지 않으면, 단계 215는 생략될 수 있다. 프레임 또는 무프레임 윈도우의 어느 경우에서든, 컨텐츠 영역에 영향을 주는 크기 변화들로 인해, CDWM은 컨텐츠 메시를 리사이징하고 적절한 메시 업데이트 요청 및 데이터를 UCE에 큐잉한다(단계 217).
(방향을 포함하는) 위치 또는 스케일 업데이트시에(단계 219), CDWM은 새로운 변환 파라미터들을 판정하고, 데이터와 함께 변환 리소스 업데이트 요청을 비동기 프로세싱을 위한 UCE에 큐잉한다(단계 221). 리소스는 최소한 4×4 변환 행렬로 이루어지지만, 필터링된 변환들을 지원하기 위한 추가적인 데이터를 포함할 수도 있다.
단계 223에서, CDWM은 확산 컨텐츠 텍스처의 픽셀 데이터에 대한 변화, 즉, 애플리케이션이 자신의 윈도우내에서 자신의 컨텐츠를 업데이트했다는 것과 관련된 업데이트 요청을 수신한다. 단계 225에서, CDWM은 새로운 픽셀 정보를 비동기 프로세싱을 위해 UCE에 큐잉하는 것에 의해 요청을 서비스한다.
당업자들은, 도 2에 도시된 것들 이외에 추가적인 업데이트 요청들이 지원될 수 있다는 것을 알 수 있을 것이다. 예를 들어, 윈도우 아이콘 또는 캡션 텍스트에 대한 변화 또한 윈도우와 관련된 CDWM-관리형 아이콘 또는 캡션 컨텐츠 오브젝트의 리드로잉을 각각 필요로 할 수 있다. 윈도우 입력 포커스가 프레임의 외관에 반영될 수도 있으므로, 레거시 윈도우의 경우, 레거시 윈도우 관리자는 입력 포커스 변화 업데이트를 프레임 및 가능하다면 그에 따라 다른 컨텐츠를 리-렌더링하는 CDWM으로 전달할 수 있다.
단계 227에서, UCE는 CDWM으로 입력되는 합성 및 리소스 업데이트들을 프로세싱하고, 데스크탑의 합성에 참여하고 있는 각각의 액티브 비디오 그래픽 어댑터의 비디오 리프레시 속도와 동기화된 구간들에서, 데스크탑(또는 다수-디스플레이 구성에서의 적절한 부분)을 디스플레이-크기의 배킹 버퍼(display-sized backing buffer)로 리-렌더링한다. 이것은, 데스크탑을 일차 디스플레이 표면으로 전달하는 (Microsoft Direct3D®과 같은) 3D 그래픽 엔진에 의해 제공되는 순간-모드 렌더링 서비스들을 사용하여 실현된다.
윈도우를 3D로 드로잉하기 위해, CDWM은, 기본 컨텐츠 오브젝트 및 하나 이상의 자식 컨텐츠 오브젝트들을 포함하는, 다양한 컴포넌트들을 사용해 윈도우 구조를 정의할 수 있다. 기본 컨텐츠 오브젝트는 윈도우 프레임 또는 보더를 정의하고, 기본 기하 구조, 기본 범위, 기본 소재 속성들(base material properties), 및 기본 컨텐츠 마진들(base content margins)로 이루어진다. 기본 및 자식 컨텐츠 오브젝트들은 각각 시스템에 의해 전체적으로 정의되고 관리될 수 있고, 또는 맞춤형 컨텐츠 요소들의 경우, 애플리케이션에 의해 관리될 수 있다. 컨텐츠 오브젝트들은 다음에서 부연된다.
도 3은 본 발명의 예시적 양태에 따른 애플리케이션 윈도우를 도시한다. 애플리케이션 윈도우(301)는 다양한 영역들 및 컴포넌트들을 포함할 수 있다. 윈도우(301)의 프레임 또는 기본 컨텐츠(303)는 (예를 들어, 윈도우의 복구, 최대화, 최소화, 닫기에 사용되는) 버튼들(305), 지시 아이콘(307), 스크롤 바들(309), 메 뉴 바(311), 및 윈도우 캡션 텍스트(313)를 포함하는 자식 컨텐츠를 호스트할 수 있다. 일차 컨텐츠 오브젝트 영역(315)은 레거시 윈도우 및 그래픽 사용자 인터페이스 서브시스템으로부터 획득된 위치 지정 버퍼로부터 유도되거나 또는 생성되어 표준 기본 컨텐츠에 첨부되고 합성-인식 고유 애플리케이션(composition-aware owning application)에 의해 렌더링될 수 있다. 당업자들은, 도 3이 단지 기본 윈도우 요소들의 예시일 뿐이고, 추가적인 또는 상이한 윈도우 요소들이 추가적으로 또는 다른 방법으로 사용될 수 있다는 것을 알 수 있을 것이다. 또한, 윈도우 프레임 요소들은, 예를 들어, 애플리케이션 프로그램에 독특한 인상 및 느낌을 제공하기 위해, 애플리케이션에 의해 다른 방법으로 제공될 수도 있다. 애플리케이션 프로그램에 특이한 외관 및 동작을 강조하기 위해, 애플리케이션 프로그램이 스크롤 바 요소들을 맞춤형 자식 컨텐츠 오브젝트들(custom child content objects)로서 제공하는 경우가 일례가 될 것이다. 또한, 애플리케이션은, CDWM API를 사용해 스톡 프레임 요소들 중 하나 이상을 삭제하거나 재배치할 것을 결정할 수 있다. 애플리케이션이, 종래 기술에서의 일반적인 제약인, 하나의 일차 컨텐츠 영역에 한정될 필요는 없다.
CDWM은 단일 윈도우와 관련된 다수 애플리케이션-생성형 및 렌더링형 컨텐츠 영역들을 지원할 수 있다. 보다 고유한 사용자 경험을 제공하는 능력을 애플리케이션들에 제공하기 위해, 본 발명의 하나 이상의 실시예들에서, CDWM은 윈도우가 드로잉될 수 있는 방식에 있어서 융통성을 제공한다. 즉, CDWM은, 애플리케이션들이, 각각의 애플리케이션을 하나의 직사각형 클라이언트 컨텐츠 영역으로 한정하는 대신에, 각각이 임의의 형태를 갖는 다수의 맞춤형 컨텐츠 오브젝트들을 정의할 수 있도록 허용하는 것에 의해, 애플리케이션이 윈도우의 디폴트 구조를 변경하게 할 수 있다.
따라서, 각각의 CDWM 윈도우는 기본 컨텐츠 오브젝트(즉, 프레임) 및 하나 이상의 자식 오브젝트들의 집합을 구비할 수 있다. 각각의 컨텐츠 오브젝트는, 컨텐츠 속성들의 고유한 세트에 의해 정의될 수 있고 키보드 및 마우스 이벤트들을 선택적으로 수신하도록 구성될 수 있다. CDWM은 애플리케이션-정의의, 컨텐츠-로컬, 3D 좌표들에 대한 마우스 히트-테스트 포인트들(hit-test points)을 매핑하고, 마우스 이벤트 통지들을 애플리케이션으로 전달한다. 컨텐츠 오브젝트들은 시스템에 의해 전체적으로 관리되거나, 맞춤형 컨텐츠 요소들의 경우에는, 애플리케이션에 의해 관리될 수 있다. 시스템-관리형 컨텐츠 오브젝트들의 예로는 애플리케이션 지시 아이콘, 프레임 버튼들(예를 들어, 최소화, 복구, 닫기), 캡션 텍스트, 및 소정 메뉴 바들과 스크롤 바들을 들 수 있다. 애플리케이션-관리형 컨텐츠 오브젝트들로는, 애플리케이션이 그것의 일차 시각 출력, 예를 들어, 워드프로세스에 의한 텍스트, 스프레드시트 애플리케이션에 의한 숫자 눈금, 또는 사진 편집 애플리케이션에 의한 이미지들을 렌더링하는 컨텐츠 오브젝트(들)을 들 수 있다.
컨텐츠 텍스처는 시스템에 의해 관리되는 비트맵, 또는 맞춤형 컨텐츠의 경우에는, 애플리케이션일 수 있다. 컨텐츠 텍스처는 한번의 반복으로 컨텐츠 기하 구조로 선형적으로 매핑될 수 있다. 어스펙트비는 컨텐츠 기하 구조에 의해 판정될 수 있고, 텍스처 좌표들은 컨텐츠 기하 구조로 노출될 수 있다. 컨텐츠 확대 (magnification)는, 컨텐츠 텍스처의 그 기하 구조로의 매핑에 영향을 미치는 스케일링 변환으로 제어될 수 있다. CDWM은, 사용자가, 시스템-제공형 메뉴 옵션과 같은 줌 팩터, 슬라이더 제어, 및/또는 마우스와 키보드 조합들을 조정할 수 있는 디폴트 상호 작용 메커니즘을 제공할 수 있다.
각각의 리-렌더링 이전에, 그것의 확산 텍스처가 픽셀마다 알파를 지원하는 포맷인 컨텐츠 표면은 애플리케이션(또는 스톡 컨텐츠 오브젝트의 경우에는 시스템)의 재량에 따라 시스템에 의해 제로 알파(zero alpha)로 초기화될 수 있다. 따라서, 하부의 기본 컨텐츠 오브젝트가 컨텐츠 표면의 미페인팅 영역들에 디스플레이될 수 있다. 이것은, 애플리케이션들이 렌더링하기 전에 컨텐츠 표면을 소거할 것을 요하지 않으며 사용자에게는 윈도우의 플리커(flicker) 및 스테일(stale) 또는 미페인팅 영역들이 남겨지기 때문에, 프로그래밍 모델과 사용자 경험 모두를 향상시킨다.
일부 실시예들에서, 소정 컨텐츠 오브젝트들, 특히 애플리케이션이 자신의 일차 그래픽 출력을 렌더링하는 컨텐츠 오브젝트들은 그들과 관련된 소재 속성들을 갖지 않을 수 있는데, 사용자에게로 주의를 돌리게 하거나 아니면 사용자의 활동을 방해하는 방식으로 컨텐츠가 광 또는 환경과 상호 작용하게 하는 것은 바람직하지 않기 때문이다. 컨텐츠 오브젝트의 시각적 외관은 컨텐츠 오브젝트의 텍스처, 기하 구조, 그리고 어쩌면 이러한 실시예들에서는 꼭지점마다 또는 픽셀마다의 알파 값에 의해서만 판정될 수 있다.
도 6은, 여기에서 설명된 동적 비표준 구조를 가진 윈도우(601)의 일례를 도 시한다. 윈도우(601)는 비표준 형태의 (즉, 직사각형이 아닌) 기본 프레임 오브젝트(630), 비표준 (윈도우의 우측 상단 모서리가 아닌) 위치에 배치된 비표준 형태의 (직사각형이 아닌) 프레임 버튼 오브젝트들(605), 비표준 (윈도우의 좌측 상단 모서리가 아닌) 위치의 시스템-제공형 지시 프레임 아이콘 오브젝트(607), 및 이 또한 비표준 위치의 (윈도우의 상단에서 좌측 정렬되지 않은) 프레임 윈도우 캡션 오브젝트(613)를 가진다. 도 6에서, 윈도우와 관련된 애플리케이션은 2개의 일차 컨텐츠 오브젝트 영역들(615a 및 615b)을 정의했다. 일차 컨텐츠 오브젝트 영역(615a)은 규칙적인 (즉, 직사각형) 형태이지만, 일차 컨텐츠 오브젝트 영역(615b)은 불규칙적인, 비-직사각형 형태이다. 또한, 윈도우(601)는, 예를 들어, 브라우징 관점에서, 각각 후진 및 전진의 네비게이션 제어를 제공하는 애플리케이션-정의형 프레임 버튼 오브젝트들(617 및 619)을 포함할 수도 있다.
CDWM은 애플리케이션 윈도우(301)의 기본적인 부분을 3차원(3D) 오브젝트로서 렌더링할 수 있다. 3D 메시 프리미티브는 윈도우 오브젝트의 형태(기본 기하 구조)를 정의하는데 사용될 수 있고, 일차 확산 텍스처는 메시의 3D 기하 구조로 매핑될 수 있으며, 조명, 음영, 반사, 번짐, 및 다른 특수 효과 파라미터들, 그리고 부수적인 텍스처들을 포함하는 리소스들을 포함할 수 있는 선택적인 소재 속성들은 렌더링 프로세스 동안에 적용될 수 있다. 부수적인 텍스처들은, 물리적으로 모델링된, "생동감 있는(live)" 상호 작용을 데스크탑 환경의 광원들, 커서들, 및 다른 UI 오브젝트들에게 제공하기 위해, 업계에 널리 공지되어 있는 그래픽 효과들을 위한 리소스들로서 사용될 수 있다. 따라서, 텍스처들은 픽셀마다의 3D 정상 정보(정상/범프 매핑;normal/bump mapping), 광 마스크들(주변, 확산, 및 전반사광 필터들), 반사 소스들(예를 들어, 윈도우상에서 선회될 때의 커서의 반사), 정적인 환경 맵들 등의 소스로서 기능할 수 있다
상기한 바와 같이, 기본 기하 구조의 꼭지점 포맷은 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}과 유사하다. 트리플렛(triplet) {xleft-xright, ytop-ybottom, zfront-zback}은 컨텐츠 범위의 너비, 높이, 및 깊이를 정의한다. 범위는 시스템에 의해 계산되고 관리되며 컨텐츠의 크기 및 로컬 위치를 표현한다.
윈도우 오브젝트가 리사이징될 수 있다면, 기본 컨텐츠의 범위를 조작하는 것이, CDWM이 윈도우를 리사이징할 수 있는 방법이다. 에지 및 코너 윤곽선들을 보존하기 위해, 리사이징 가능한 메시의 각 꼭지점에 대한 위치는 단순히 새로운 범위로 스케일링되지 않을 수도 있다. 메시 리사이징에 대한 미세 제어를 가능하게 하기 위해, 적용 가능한 파라미터들과 함께 소정의 꼭지점 위치 필터 기능(vertex position filter function)이 윈도우 생성 시간에 애플리케이션에 의해 특정되거나 디폴트로 CDWM에 의해 선택될 수 있다. 꼭지점 리사이징 필터 기능의 역할은, 목표 메시의 꼭지점 각각이 그것의 경계 범위가 변경될 때 어떻게 동작하는지를 판정하는 것이다. 모든 필터 기능은, 모든 멤버 꼭지점에 대해, 각 차원 (x, y, z)에서의 변위 방향(displacement direction)과 크기를 판정해야 한다.
가장 간단한 필터 기능은 (양 또는 음의) 방향 및 (새로운 범위에 대해 스케일링되거나 3D 공간의 메시 경계 박스(bounding box)에 대한 6개의 면 중 하나의 오프셋과 동일한 양만큼 오프셋된) 크기를 판정한다. 각각의 꼭지점이 리사이징 연산시에 동작하는 방법은 꼭지점 자체와 관련된 속성으로서 꼭지점마다, 차원마다에 기초하여 설명되거나, 전반적으로 기하 구조의 관점에서 메시에 대해 정의될 수 있다. 후자의 방법에 대한 일례가, 각각이 메시 경계 박스의 면과 관련되어 있으며, 경계 박스의 부피를 27개의 정육면체 하부 영역들로 효과적으로 분할하는 6개 크기의 마진 면들(six sizing margin planes)을 정의하는 벡터들의 쌍 {mxleft, mytop, mzfront, mxright, mybottom, mzback}이다. 크기의 마진 값들은 메시의 크기에 상관없이 상수로 남거나, 경계 박스의 처음 크기에 기초해 계산될 수도 있다. 임의의 메시 리사이징 연산에서, ({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개 상한들(quadrants)(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 및 703f)은 X(수평) 차원에서는 적어도 한 변상의 경계 박스에 의해 둘러싸이지만, Y(수직) 차원에서는 영역 분할자들(705)에 의해서만 둘러싸여 있다. 따라서, 영역들(703d 및 703f)의 메시 꼭지점들은 X 차원에서는 그들의 오프셋들을 유지하지만, Y 차원에서는 스케일링될 것이다. 영역(703e)는 X 및 Y 차원들 모두에서 분할 선들(705)에 의해 둘러싸이므로, 영역(703e)내에 해당되는 메시 꼭지점들은 X 및 Y 차원들 모두에서 스케일링될 것이다. 당업자는, 선행 문단들에서 설명된 바와 같이 Z 차원을 포함시키는 것에 의해, 이러한 알고리즘을 3차원으로 확장할 수 있다는 것을 알 수 있을 것이다.
메시 리사이징 필터 기능의 다른 변형은, 꼭지점 위치가 임의의 방향으로 스 케일링되는지 아니면 오프셋되는지를 판정하기 위해, 크기 마진들과 같은 전역적 기하 구조(global geometric construct)에 의존하기보다는 핸드-조작형 꼭지점 메타데이터(hand-authored vertex metadata)를 해석할 수 있다. 이러한 기능은 메시 리사이징 동안 리지들 및 트로프들(ridges and troughs)과 같은 복잡한 표면 토폴로지를 보존하는데 사용될 수 있다. 메시 리사이징 필터 기능의 또 다른 변형은, 식별 비트들(discrimination bits) 및 기능 계수들은 꼭지점마다의 메타데이터로서 저장되면서, 꼭지점들이 각각의 차원으로 선형 또는 비선형 방식으로 이동될 수 있게 한다. 이러한 기능은 메시 리사이징에 수반되는 선형 또는 비선형, 국부적 또는 일반적 돌출, 또는 붕괴와 같은 효과들을 가능하게 한다.
기본 컨텐츠 마진들은, 자식 컨텐츠들이 속박되는 경계들을 정의한다. 컨텐츠 마진들은 크기 마진(sizing margins)들과 동일한 방식으로 정의된 3차원 경계들일 수도 있다. 그러나, 크기 마진들과 달리, 컨텐츠 마진들은 윈도우 스케일로 선형적으로 스케일링하면서 메시 리사이징에 영향을 주지 않을 수도 있다.
추상적 소재 속성들의 값들에 따라 특정된, 로컬 및 데스크탑-전역 리소스들 및 파라미터들은 픽셀 쉐이더들과 함께, CDWM이 물리적 모델의 데스크탑 컨텐츠에 대한 렌더링을 구현할 수 있는 데이터 및 메커니즘을 구비한다.
고급 컨텐츠 소재 속성들은, 컨텐츠가 광 및 주변 환경들과 상호 작용하는 방식을 정의한다. 무광택 유리(frosted glass)와 같은 복잡한 소재의 렌더링은 비디오 하드웨어에서 원래부터 지원되지 않는 기술들을 사용할 수 있다. 그 결과, CDWM은 소수의 소정 픽셀 쉐이더들 중 하나를 사용해 소재 속성들을 구현한다. 픽 셀 쉐이더는, 광원들, 텍스처들, 및 메시 프리미티브의 꼭지점들 뿐만 아니라 변환들 및 메트릭들과 같은 파라미터들을 포함하지만, 이에 한정되는 것은 아닌 리소스들의 소정 세트에 기초해, 디스플레이하기 전에 픽셀들의 값들을 조작하는, 디스플레이 하드웨어에 로딩되는 소형 루틴이다. CDWM은 자신의 소정 픽셀 쉐이더들의 집합 중에서, 주변 컬러(세기 및 투명도), 확산 컬러(세기 및 투명도), 편향 컬러(specular color;세기 및 투명도), 반사 스칼라, 굴절율, 확산 텍스처, 및 범프 텍스처를 포함 - 이들 각각은 후술됨 - 하는, 오브젝트 소재 속성들의 특정 세트를 렌더링하기에 적합한 쉐이더를 선택할 수 있다. 데스크탑-전역 속성들은, 눈의 위치, 전역 광원(들), 환경 맵들 등과 같은, 전역 환경 속성들을 정의하는데 사용될 수 있다. 이러한 데스크탑-전역 속성들을 정의하는 리소스들 및 파라미터들은, 기본 윈도우 소재 속성들과 함께, 윈도우를 렌더링하기 바로 직전에, 액티브 픽셀 쉐이더에 대한 파라미터로서 3D 그래픽 인터페이스로 전달될 수 있다.
주변 컬러는 모든 방향에서 오브젝트의 표면을 때리는 광을 시뮬레이션한다. 소재 속성이 임의의 CDWM-관리형 UI 컨텐츠 오브젝트에 적용될 수 있으므로, 주변 세기는 오브젝트의 표면과 접촉하는 주변 광의 상대적인 양을 판정하며, 32-비트 ARGB 값은 주변 컬러 및 투명도를 특정하는데 사용될 수 있다. 예시적 일 실시예에서, 주변 세기는 (균일한 블랙 외관을 제공하는 제로 주변 광의) 0.0에서 (오브젝트에 걸쳐 균일하게 분포된 특정 컬러의 최대 세기인) 1.0의 범위일 수 있다. 화이트 주변 컬러를 가진 주변 세기의 효과는 오브젝트에 대한 전반적인 밝기 제어를 허용한다.
확산 세기는 오브젝트의 표면에 접촉한 후 전방향으로 산란되는 방향 광의 양을 판정한다. 광 자체는 하나 이상의 방향 광들이나 정육면체 광 맵으로서 제공된다. 소재 속성은 임의의 CDWM-관리형 UI 컨텐츠 오브젝트에 적용될 수 있으므로, 확산 컬러는 컬러를 지시하는 32-비트 ARGB 값으로써 특정되는데, 여기서 알파 컴포넌트는 확산 반사된 광의 투명도를 지시한다. 확산 세기 값은 (광이 확산 반사되지 않아, 오브젝트에 균일한 블랙 외관을 제공하는) 0.0에서 (모든 광이 확산 반사되어, 오브젝트에 확산 컬러 값에 따라 음영진 외관을 제공하는) 1.0의 범위이다. 조명된 표면들은, 주변 및 확산 세기 값들의 합이 1에 접근함에 따라 좀더 생동감있게 모델링될 것이다.
편향 세기(specular intensity)는, 얼마나 많은 광이 오브젝트의 표면에서 반사되어 바로 뷰어에게 되돌아오는지를 제어하며, 편향 컬러는 오브젝트의 ARGB 컬러로서 특정될 수 있다. 광원 자체는 하나 이상의 방향 광들이나 정육면체 광 맵의 형태일 수 있다. 소재 속성이 임의의 CDWM-관리형 UI 컨텐츠 오브젝트에 적용될 수 있으므로, 높은 편향 세기 값들은 예리한 하일라이트들을 가진 빛나는 표면을 모델링하는데 사용될 수 있는 한편, 낮은 값들은 희미한 하일라이트들이나 하일라이트가 없는 무광택 표면을 모델링하는데 사용될 수 있다. 컬러의 알파 컴포넌트는 반사 하일라이트들의 투명도를 판정하다.
편향율(specularity)과 유사한, 반사율(reflectivity)은 오브젝트의 표면으로부터 뷰어에게 직접적으로 반사되는 광량을 결정한다. 반사가, 광원만이 아니라 전체 환경에 적용된다는 점에서, 반사는 편향성과 다르다. 소재 속성이 임의의 CDWM-관리형 UI 컨텐츠 오브젝트에 적용될 수 있으므로, 0.0의 반사율 값은 표면 환경의 반사를 발생시키지 않고, 1.0의 값은 표면 환경의 거울같은 반사를 발생시킨다. 환경은 정육면체 환경 맵 및 마우스 커서의 조합을 사용해 모델링될 수 있다. 따라서, 마우스 커서 뿐만 아니라 환경의 정적인 사양들도, 반사 강도 스칼라에 의해 제어되는 정도로, 윈도우 표면으로부터 반사될 수 있다.
각각의 오브젝트에 대한 굴절율은 광이 이동하는 전송 각도를 판정한다. 스넬의 법칙, n1sinθ1= n2sinθ2이 사용될 수 있는데, 여기서 n1 및 n2는 매질 1 및 매질 2의 굴절율이고 θ1 및 θ2는 각각 표면 법선에 대한 광의 입사각 및 전송각이다. 따라서, 매질 1이 1.0(무굴절)의 할당된 굴절율을 가진 데스크탑 환경을 표현하고,매질 2가 윈도우 기본 오브젝트의 매질이라면, 굴절각은 θobj = sin-1(sinθenv/nobj)로서 결정된다. 시뮬레이션될 수 있는 다양한 매질에 대한 공지의 굴절율들이 다음의 표 1에 표시되어 있다.
매질 굴절율
진공 1.00
얼음 1.31
1.33
유리 대략 1.50 - 1.75
다이아몬드 2.42
일단 굴절각이 결정/계산되고 나면, 그 값은 배경으로부터, 다른 소재 속성들과 관련된 추가적인 프로세싱이 수반되는, 오브젝트의 가청 표면상에 렌더링하기에 적합한 픽셀을 선택하는데 사용될 수 있다. 굴절의 실시간 렌더링 목적을 위한 최적화는, 당업자들이라면 알 수 있는 Fresnel 기술을 포함할 수 있다.
비주얼 스타일들(테마들;themes)은 CDWM의 시각 및 동작 정책을 정의하는데 사용될 수 있다. 비주얼 스타일들은 일반적으로, 정교한, 수작업-설계 그래픽 및 공통적인 사용자 인터페이스 요소들에 적용되는 동작 속성들을 특정하는 사용자-선택 가능 테마들을 참조한다. 애플리케이션들은 이러한 속성들 중 일부를 선택적으로 중첩할 수 있는 한편, 다른 것들은 사용자 인터페이스의 일관성을 위해 시스템에 의해 선택적으로 강제된다. 시각적 속성들은 프레임 영역(기본 컨텐츠)과 같은 공통 윈도우 컨텐츠의 외관, 비-클라이언트 버튼들, 및 다른 애플리케이션 독립형 요소들을 포함한다. 동작 속성들은 윈도우 및 데스크탑 전이 애니메이션들(window and desktop transition animations), 윈도우가 마우스와 상호 작용적으로 이동되거나 리사이징되는 방식(예를 들어, 스냅, 밀착, 및 신장과 축소), 및 다른 애플리케이션-독립형 동작들을 포함한다. 시각 및 동작 정책은, 그 정책이 소프트웨어 렌더링 파이프라인을 통해 분산되기보다는 CDWM에 집중됨으로써, 보다 일관적인 최종-사용자 경험 및 보다 간단한 개발 환경을 제공할 수 있다.
본 발명의 실시예에 따르면, 비주얼 스타일의 디폴트(또는 맞춤형) 텍스처는, 각각의 픽셀이 변경되는 것에 기초하여 알파 레벨 및/또는 비트맵을 구비할 수 있다. 예를 들어, 알파 레벨은, 업계에 공지되어 있는 바와 같이, 투명도를 변경하는데 사용될 수 있다. 또한, 텍스처는 클라이언트 및/또는 비-클라이언트 영역, 또는 클라이언트 및/또는 비-클라이언트 영역의 일부가 픽셀 쉐이딩될 수 있는 비트맵을 구비할 수 있다. 예시적 일 실시예에서, 예를 들어, 비트맵은 무광택 유리의 외관을 제공할 수 있다. 도 5는, 무광택 유리 프레임(503)으로 렌더링된 윈도우(501)를 도시하며, 굴절율은 윈도우 프레임(503) 뒤쪽의 컨텐츠로부터 어떤 픽셀이 나타나야 하는지를 판정할 때 굴절율이 유리를 시뮬레이션하도록 특정될 수 있다. 그래픽 렌더링 엔진의 향상된 텍스처 방식, 조명 방식, 및 3D 기능들을 이용하고 적절한 비트맵을 사용함으로써, CDWM은 3D 데스크탑 환경내의 선택적으로 특정된 가상 광원으로부터 광은 반사하지만 불투명한 클라이언트 컨텐츠 영역을 가져, 클라이언트 컨텐츠의 시각적 날카로움은 사라지지 않는 무광택 유리 외관의 프레임(503)을 가진 윈도우(501)를 구성할 수 있다.
데스크탑 렌더링 모델들(실효 대 합성) 각각은 애플리케이션 프로그램들과 상호 작용하기 위한 고유한 스키마를 가지므로, 애플리케이션 프로그램의 윈도우(들)이 데스크탑상에 적절히 유지된다. 예를 들어, 실효 모델의 경우, 데스크탑 렌더링은 윈도우 "클리핑 영역들"의 관리 및 계속적인 업데이트에 의존한다. 클리핑은, 렌더링이 윈도우의 적절한 영역으로 한정되는 프로세스이다. 하나의 윈도우가 다른 윈도우에 의해 부분적으로 가려질 경우, 그것의 클리핑 영역은 가려진 영역의 반전에 해당된다. 페인트 메시지에 응답하여 또는 자발적인 방식으로, 하부 윈도우가 자신의 컨텐츠를 페인트한다면, 실효 모델 DWM은, 그것의 클리핑 영역이 출력에 적용된다는 것을 확인함으로써, 상부 윈도우(들)에서는 페인팅이 발생하지 않을 것을 보장한다. 상부 윈도우가 이동되거나 하부 윈도우가 Z-순서의 상부로 이동된다면, 하부 윈도우의 클리핑 영역은, 그에 따라 임의의 새롭게 노출된 컨텐츠를 업데이트하기 위한 페인트 메시지를 윈도우로 송신하기 전에, 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® Word® XP는 레거시 API들을 호출함으로써, 레거시 DWM(192a)이 사용자에 의해 입력된 텍스트를 드로잉할 수 있다. 단계 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(graphics processing unit)가 덜 활성화되고 그에 따라 전력 소모가 적기 때문이다.
상술된 방법들 및 시스템들을 사용하여, 오퍼레이팅 시스템은, 향상된 3D 그래픽 능력들을 사용하는, 물리적으로 모델링된 그래픽 사용자 인터페이스를 제공할 수 있다. 윈도우 프레임들은 무광택 유리 또는, 투명성의 결과로서 가시 컨텐츠의 적어도 일부의 왜곡과 조합되어, 불투명 효과를 발생시키는, 적어도 일부의 투명성을 가진 시뮬레이션된 표면 외관을 제공하는 복잡한 다른 소재의 외관 뿐만 아니라 특징들을 취할 수 있다. 즉, 본 발명은 윈도우 프레임 또는 보더가 무광택 유리처럼 보이게 할 수 있는 능력을 가질 뿐만 아니라, 윈도우 프레임은 또한, 윈도우 프레임이 GUI 환경에서 컨텐츠를 반사하고, 가상 광원들을 지시하는 스펙트럼 하일라이트들을 포함하며, "무광택 유리" 보더 이면의 컨텐츠가 그에 따라 약하게 오프셋되도록 유리와 유사한 굴절율을 시뮬레이션하고, 하부 컨텐츠의 왜곡을 제공하기 위한 하나 이상의 픽셀 쉐이더들을 통해 비트맵을 적용될 수 있다는 점에서, 무광택 유리처럼 동작한다.
무광택 유리 또는 물리적으로 유리처럼 모델링된 오브젝트들은 그래픽 사용자 인터페이스의 사용자에게 많은 이점들을 제공한다. 예를 들어, 유리의 심미적인 외관은 GUI를 향상시키고, 다른 오퍼레이팅 시스템들의 GUI들보다 본 발명의 GUI는, 밝고 개방된 느낌을 사용자에게 제공함으로써, 최종-사용자들에게 좀더 바람직한 GUI가 될 수 있다. 동시에, 진정한 또는 거의 진정한 유리의 특징들을 갖도록 물리적으로 모델링된 무광택 유리는 기능적 이점들도 제공한다.
무광택 외관은, 사용자가 다중-윈도우 환경에서 윈도우 계층 순서를 이해하는 것을 돕는다. 음영, 반사, 및 편향 하일라이트들은 데스크탑 상에 좀더 강한 의미의 깊이 및 계층들을 생성하여, 사용자가 데스크탑 상의 다양한 윈도우들에 대한 Z 순서를 판정하는 것을 돕는다. 공지의 일부 시스템들이 전체 윈도우에 일률적인 투명도를 적용하는 동안, 사용자는 어떤 컨텐츠가 관심 윈도우 내에 있는지 및 어떤 컨텐츠가 윈도우 이면에 있는지를 쉽게 인식할 수 없을 수도 있다. 이러한 일률적인, 픽셀마다의 투명도를 Z-순서의 함수로 변경함으로써, 부자연스럽고, 비직관적인 방식으로 이 문제를 개선할 수도 있다. 오히려, 각각의 목적 픽셀을 생성하는 과정에서 다수의 주변 소스 픽셀들을 샘플링하는 조정 가능한 블러링(blurring) 알고리즘을 픽셀 쉐이더에 통합하고, 윈도우 프레임의 렌더링 프로세스에서 이 쉐이더를 실행하는 것에 의해, 본 발명은 실제 무광택 유리의 소재 결점들로 인해 발생하는 광-산란 동작(light-scattering behavior)을 모델링한다. 사용자로 하여금 배경과 전경 컨텐츠 사이를 즉시 구별할 수 있게 하는 것은 이와 같이 물리적으로 모델링된 배경의 왜곡이다. 이러한 효과는 누적되기 때문에, 무광택 유리 윈도우 프레임들을 중첩하는 것은 전경에서 배경으로 갈수록 점차적으로 왜곡이 심해지기 때문이다. 따라서, 사용자는 무광택 유리 윈도우 프레임들의 다수 계층들 하부의 배경 컨텐츠를 직관적으로 구별할 수 있다.
무광택 유리는 또한, 예를 들어, 사용자가 윈도우를 이동시키거나 리사이징하기 위해 마우스로, (유리가 투명하거나 반투명하기 때문에) 윈도우 아래의 불분명한 내용이 아니라, 윈도우 보더를 그랩(grab)하는 것을 좀더 용이하게 함으로써, GUI와의 사용자 상호 작용을 용이하게 하는 좀더 두꺼운 보더들을 사용할 수 있게 한다. 다양한 무광택 유리 효과들이, 사용자가 활성화 윈도우 상태와 비활성화 윈도우 상태를 구별하는 것을 좀더 용이하게 하는데 사용될 수 있다. 또한, 무광택 유리는, 사용자가 스크린상의 컨텐츠를 판독 및/또는 관찰하는 것을 좀더 용이하게 하는데, 이것은 (무광택 유리는 반투명이거나 투명이기 때문에) 언제든 사용자가 좀더 넓은 스크린 영역을 볼 수 있고 유리는 디스플레이 스크린상에서 눈에 확 띄는 요소가 아니므로 데스크탑이 덜 흩뜨러져 보이기 때문이다.
당업자들은, 도면들이 무광택 유리의 특정 예를 도시하긴 하지만, 본 발명이 그렇게 한정되는 것은 아니라는 것을 알 수 있을 것이다. 무광택 유리 외관은, 상이한 비트맵 및/또는 상이한 픽셀 셰이퍼를 외관의 렌더링에 적용하는 것에 의해 쉽게 변경될 수 있다. 또한, 상이한 환경 변수들을 적용하거나(예를 들어, 반사 및 전반사 하일라이트들에 영향을 주는 광원(들)을 달리하거나) 유리의 물리적 가상 속성들(예를 들어, 굴절율, 반사율 등)을 변경하는 것도 무광택 유리의 외관에 영향을 미칠 것이다. 본 발명이 다른 텍스처들 및 혼합물들, 예를 들어, 금속들, 플라스틱들, 종이, 면(cotton), 그리고 다른 자연 및 합성 소재들을 시뮬레이션하는데도 사용될 수 있다는 것을 알 수 있을 것이다.
본 발명을 수행하는 현재의 바람직한 모드들을 포함하는 특정 예들을 참조하여 본 발명을 설명하였지만, 당업자들은, 상술된 시스템들 및 기술들에 대한 다수의 변형들 및 조합들이 존재한다는 것을 알 수 있을 것이다. 따라서, 본 발명의 정신 및 범위는 첨부된 청구항들에 기술된 바에 따라 광범위하게 해석되어야 한다.

Claims (34)

  1. 디스플레이 장치 상에 디스플레이된 데스크탑 표현(representation) 상에 드로잉하기 위한 윈도우를 정의하는 데이터 구조를 저장하기 위한 컴퓨터 실행가능 명령어들이 구현된 컴퓨터 판독 가능 저장 매체로서,
    상기 윈도우의 기본 컨텐츠 오브젝트에 대한 기본 컨텐츠 오브젝트 속성들을 저장하는 제1 데이터 필드 - 상기 기본 컨텐츠 오브젝트는 윈도우 프레임을 정의하고, 상기 제1 데이터 필드는 기본 기하 구조(base geometry)를 포함하는 기본 오브젝트 속성들을 저장하기 위해 세분되며, 메시(mesh)를 정의하는 복수의 꼭지점들을 포함하는 기본 기하 구조 속성들을 저장하기 위해 더 세분됨 - ; 및
    복수개의 개별적인 일차 컨텐츠 오브젝트들에 대한 컨텐츠 오브젝트 속성들을 저장하는 제2 데이터 필드
    를 포함하는 컴퓨터 판독 가능 저장 매체.
  2. 제1항에 있어서,
    상기 제1 데이터 필드는 기본 컨텐츠 마진들, 기본 범위, 및 기본 소재를 포함하는 기본 오브젝트 속성들을 저장하기 위해 세분되는 컴퓨터 판독 가능 저장 매체.
  3. 제2항에 있어서,
    상기 제1 데이터 필드는 주변 컬러, 확산 컬러(diffusive color), 및 전반사 컬러(specular color)를 포함하는 기본 소재 속성들을 저장하기 위해 더 세분되는 컴퓨터 판독 가능 저장 매체.
  4. 제3항에 있어서,
    상기 주변 컬러, 확산 컬러, 및 전반사 컬러 각각은 ARGB 값으로서 정의되는 컴퓨터 판독 가능 저장 매체.
  5. 제2항에 있어서,
    상기 제1 데이터 필드는 반사 스칼라(reflection scalar) 및 굴절율을 포함하는 기본 소재 속성들을 저장하기 위해 더 세분되는 컴퓨터 판독 가능 저장 매체.
  6. 제2항에 있어서,
    상기 제1 데이터 필드는 확산 텍스처 및 범프 텍스처를 포함하는 기본 소재 속성들을 저장하기 위해 더 세분되는 컴퓨터 판독 가능 저장 매체.
  7. 제1항에 있어서,
    상기 제2 데이터 필드는 각각의 일차 컨텐츠 오브젝트에 대한 컨텐츠 기하 구조 및 컨텐츠 표면을 저장하기 위해 더 세분되는 컴퓨터 판독 가능 저장 매체.
  8. 제7항에 있어서,
    상기 제2 데이터 필드는 각각의 일차 컨텐츠 오브젝트에 대한 ARGB 텍스처를 포함하는 컨텐츠 표면 속성들을 저장하기 위해 더 세분되는 컴퓨터 판독 가능 저장 매체.
  9. 데이터 프로세싱 시스템으로서,
    속성들이 저장되는 복수의 윈도우들에 대해, 기본 오브젝트에 대한 속성들 및 하나 이상의 일차 컨텐츠 오브젝트들에 대한 속성들을 포함하는 윈도우 속성들을 저장하는 메모리 - 상기 기본 오브젝트에 대한 상기 속성들은 기본 기하 구조를 포함하고, 기본 기하 구조 속성은 메시를 정의하는 복수의 꼭지점들을 포함함 - ; 및
    속성들이 저장되어 있는 각 윈도우의 상기 윈도우 속성들에 기초해, 데스크탑을 구성하는 합성 데스크탑 윈도우 관리자 소프트웨어 모듈
    을 포함하고,
    속성들이 저장되어 있는 상기 복수의 윈도우들 중 하나에 대해, 상기 메모리는 복수의 일차 컨텐츠 오브젝트들을 저장하는 데이터 프로세싱 시스템.
  10. 제9항에 있어서,
    상기 기본 오브젝트에 대한 상기 속성들은 기본 컨텐츠 마진들, 기본 범위, 및 기본 소재를 포함하는 데이터 프로세싱 시스템.
  11. 제10항에 있어서,
    기본 소재 속성은 주변 컬러, 확산 컬러, 및 전반사 컬러를 포함하는 데이터 프로세싱 시스템.
  12. 제11항에 있어서,
    상기 주변 컬러, 확산 컬러, 및 전반사 컬러 각각은 적어도 ARGB 값에 의해 정의되는 데이터 프로세싱 시스템.
  13. 제10항에 있어서,
    기본 소재 속성은 반사 스칼라 및 굴절율을 포함하는 데이터 프로세싱 시스템.
  14. 제10항에 있어서,
    기본 소재 속성은 확산 텍스처 및 범프 텍스처를 포함하는 데이터 프로세싱 시스템.
  15. 제9항에 있어서,
    상기 메모리는, 적어도 하나의 일차 컨텐츠 오브젝트에 대해, 컨텐츠 기하 구조, 및 컨텐츠 표면을 저장하는 데이터 프로세싱 시스템.
  16. 제15항에 있어서,
    상기 컨텐츠 표면은 ARGB 텍스처를 포함하는 데이터 프로세싱 시스템.
  17. 삭제
  18. 삭제
  19. 오퍼레이팅 시스템의 쉘(shell)의 그래픽 사용자 인터페이스에서 윈도우를 디스플레이하는 컴퓨터 구현 방법으로서,
    컴퓨팅 장치와 연관된 애플리케이션 프로그램의 인스턴스(instance)로부터 윈도우 정보를 수신하는 단계; 및
    기본 오브젝트 및 복수의 개별적인 일차 컨텐츠 오브젝트들을 가진 윈도우를 상기 컴퓨팅 장치와 연관된 디스플레이 상에서 렌더링하는 단계 - 상기 렌더링하는 단계는 메시에 의해 정의된 기본 기하 구조, 기본 컨텐츠 마진들, 기본 범위 및 기본 소재에 기초하며, 상기 렌더링하는 단계는 주변 컬러, 확산 컬러, 및 전반사 컬러를 포함하는 기본 소재 속성들에 기초함 -
    를 포함하는 컴퓨터 구현 방법.
  20. 제19항에 있어서,
    상기 주변 컬러, 확산 컬러, 및 전반사 컬러 각각은 ARGB 값으로서 정의되는 컴퓨터 구현 방법.
  21. 오퍼레이팅 시스템의 쉘(shell)의 그래픽 사용자 인터페이스에서 윈도우를 디스플레이하는 컴퓨터 구현 방법으로서,
    컴퓨팅 장치와 연관된 애플리케이션 프로그램의 인스턴스(instance)로부터 윈도우 정보를 수신하는 단계; 및
    기본 오브젝트 및 복수의 개별적인 일차 컨텐츠 오브젝트들을 가진 윈도우를 상기 컴퓨팅 장치와 연관된 디스플레이 상에서 렌더링하는 단계 - 상기 렌더링하는 단계는 메시에 의해 정의된 기본 기하 구조, 기본 컨텐츠 마진들, 기본 범위 및 기본 소재에 기초하며, 상기 렌더링하는 단계는 반사 스칼라 및 굴절율을 포함하는 기본 소재 속성들에 기초함 -
    를 포함하는 컴퓨터 구현 방법.
  22. 오퍼레이팅 시스템의 쉘(shell)의 그래픽 사용자 인터페이스에서 윈도우를 디스플레이하는 컴퓨터 구현 방법으로서,
    컴퓨팅 장치와 연관된 애플리케이션 프로그램의 인스턴스(instance)로부터 윈도우 정보를 수신하는 단계; 및
    기본 오브젝트 및 복수의 개별적인 일차 컨텐츠 오브젝트들을 가진 윈도우를 상기 컴퓨팅 장치와 연관된 디스플레이 상에서 렌더링하는 단계 - 상기 렌더링하는 단계는 메시에 의해 정의된 기본 기하 구조, 기본 컨텐츠 마진들, 기본 범위 및 기본 소재에 기초하며, 상기 렌더링하는 단계는 확산 텍스처 및 범프 텍스처를 포함하는 기본 소재 속성들에 기초함 -
    를 포함하는 컴퓨터 구현 방법.
  23. 오퍼레이팅 시스템의 쉘(shell)의 그래픽 사용자 인터페이스에서 윈도우를 디스플레이하는 컴퓨터 구현 방법으로서,
    컴퓨팅 장치와 연관된 애플리케이션 프로그램의 인스턴스(instance)로부터 윈도우 정보를 수신하는 단계; 및
    기본 오브젝트 및 복수의 개별적인 일차 컨텐츠 오브젝트들을 가진 윈도우를 상기 컴퓨팅 장치와 연관된 디스플레이 상에서 렌더링하는 단계 - 상기 렌더링하는 단계는 메시에 의해 정의된 기본 기하 구조, 기본 컨텐츠 마진들, 기본 범위 및 기본 소재에 기초하며, 상기 렌더링하는 단계는 각각의 일차 컨텐츠 오브젝트에 대한 컨텐츠 기하 구조 및 컨텐츠 표면에 기초함 -
    를 포함하는 컴퓨터 구현 방법.
  24. 제23항에 있어서,
    상기 렌더링하는 단계는 각각의 일차 컨텐츠 오브젝트에 대한 ARGB 텍스처를 포함하는 컨텐츠 표면 속성들에 기초하는 컴퓨터 구현 방법.
  25. 오퍼레이팅 시스템의 쉘(shell)의 그래픽 사용자 인터페이스에서 윈도우를 디스플레이하는 컴퓨터 구현 방법으로서,
    컴퓨팅 장치와 연관된 애플리케이션 프로그램의 인스턴스(instance)로부터 윈도우 정보를 수신하는 단계; 및
    기본 오브젝트 및 복수의 개별적인 일차 컨텐츠 오브젝트들을 가진 윈도우를 상기 컴퓨팅 장치와 연관된 디스플레이 상에서 렌더링하는 단계 - 상기 렌더링하는 단계는 메시에 의해 정의된 기본 기하 구조, 기본 컨텐츠 마진들, 기본 범위 및 기본 소재에 기초함 -;
    상기 윈도우를 리사이징(resize)하기 위해 사용자 입력을 수신하는 단계;
    상기 메시를 메시 차원당 3개의 영역들로 분할하는 단계; 및
    각각의 영역에 대해, 상기 각각의 영역이 상기 윈도우의 경계 박스에 의해 둘러싸인 임의의 차원의 메시 꼭지점들의 오프셋들을 유지하고, 상기 각각의 영역이 상기 윈도우의 상기 경계 박스에 의해 둘러싸이지 않은 임의의 차원의 메시 꼭지점들을 스케일링하는 단계
    를 포함하는 컴퓨터 구현 방법.
  26. 제9항에 있어서,
    각각의 일차 컨텐츠 오브젝트는 상기 윈도우의 데이터 필드의 크기 및 형태를 정의하는 데이터 프로세싱 시스템.
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
KR1020057007426A 2003-10-23 2004-07-28 동적 윈도우 구조 KR101086570B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/691,442 2003-10-23
US10/691,442 US7817163B2 (en) 2003-10-23 2003-10-23 Dynamic window anatomy
PCT/US2004/019109 WO2005045558A2 (en) 2003-10-23 2004-07-28 Dynamic window anatomy

Publications (2)

Publication Number Publication Date
KR20060105421A KR20060105421A (ko) 2006-10-11
KR101086570B1 true KR101086570B1 (ko) 2011-11-23

Family

ID=34521879

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057007426A KR101086570B1 (ko) 2003-10-23 2004-07-28 동적 윈도우 구조

Country Status (14)

Country Link
US (1) US7817163B2 (ko)
EP (1) EP1682964A4 (ko)
JP (2) JP4808158B2 (ko)
KR (1) KR101086570B1 (ko)
CN (1) CN101288104B (ko)
AU (2) AU2004279204B8 (ko)
BR (1) BRPI0406387A (ko)
CA (1) CA2501671A1 (ko)
MX (1) MXPA05007169A (ko)
MY (1) MY142719A (ko)
RU (1) RU2377663C2 (ko)
TW (1) TWI374385B (ko)
WO (1) WO2005045558A2 (ko)
ZA (1) ZA200503149B (ko)

Families Citing this family (90)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7681112B1 (en) 2003-05-30 2010-03-16 Adobe Systems Incorporated Embedded reuse meta information
US7765143B1 (en) 2003-11-04 2010-07-27 Trading Technologies International, Inc. System and method for event driven virtual workspace
US7170526B1 (en) * 2004-01-26 2007-01-30 Sun Microsystems, Inc. Method and apparatus for redirecting the output of direct rendering graphics calls
US7847800B2 (en) * 2004-04-16 2010-12-07 Apple Inc. System for emulating graphics operations
US8134561B2 (en) 2004-04-16 2012-03-13 Apple Inc. System for optimizing graphics operations
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
US8453065B2 (en) 2004-06-25 2013-05-28 Apple Inc. Preview and installation of user interface elements in a display environment
US8239749B2 (en) 2004-06-25 2012-08-07 Apple Inc. Procedurally expressing graphic objects for web pages
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
US7652678B2 (en) * 2004-06-25 2010-01-26 Apple Inc. Partial display updates in a windowing system using a programmable graphics processing unit
US8566732B2 (en) 2004-06-25 2013-10-22 Apple Inc. Synchronization of widgets and dashboards
US7490295B2 (en) * 2004-06-25 2009-02-10 Apple Inc. Layer for accessing user interface elements
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
US7730418B2 (en) * 2005-05-04 2010-06-01 Workman Nydegger Size to content windows for computer graphics
US8543931B2 (en) 2005-06-07 2013-09-24 Apple Inc. Preview including theme based installation of user interface elements in a display environment
US7865830B2 (en) 2005-07-12 2011-01-04 Microsoft Corporation Feed and email content
US7843466B2 (en) * 2005-07-29 2010-11-30 Vistaprint Technologies Limited Automated image framing
US8046706B2 (en) * 2005-08-05 2011-10-25 Samsung Electronics Co., Ltd. Apparatus for providing multiple screens and method of dynamically configuring multiple screens
US7752556B2 (en) 2005-10-27 2010-07-06 Apple Inc. Workflow widgets
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
US7954064B2 (en) 2005-10-27 2011-05-31 Apple Inc. Multiple dashboards
US9104294B2 (en) 2005-10-27 2015-08-11 Apple Inc. Linked widgets
US7707514B2 (en) 2005-11-18 2010-04-27 Apple Inc. Management of user interface elements in a display environment
US20070162850A1 (en) * 2006-01-06 2007-07-12 Darin Adler Sports-related widgets
US8108785B2 (en) * 2006-01-09 2012-01-31 Microsoft Corporation Supporting user multi-tasking with clipping lists
US20070245250A1 (en) * 2006-04-18 2007-10-18 Microsoft Corporation Microsoft Patent Group Desktop window manager using an advanced user interface construction framework
US8155682B2 (en) * 2006-05-05 2012-04-10 Research In Motion Limited Handheld electronic device including automatic mobile phone number management, and associated method
US8144166B2 (en) * 2006-08-01 2012-03-27 Microsoft Corporation Dynamic pixel snapping
US8497874B2 (en) * 2006-08-01 2013-07-30 Microsoft Corporation Pixel snapping for anti-aliased rendering
US8869027B2 (en) 2006-08-04 2014-10-21 Apple Inc. Management and generation of dashboards
NZ575810A (en) * 2006-08-27 2011-11-25 My Mobile Watch Ltd Gsm mobile watch phone
US8508552B2 (en) * 2006-09-08 2013-08-13 Microsoft Corporation Pixel snapping with relative guidelines
CN100583022C (zh) * 2006-09-27 2010-01-20 联想(北京)有限公司 获取计算机屏幕图像的方法
US7712047B2 (en) * 2007-01-03 2010-05-04 Microsoft Corporation Motion desktop
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
KR101415023B1 (ko) 2007-04-26 2014-07-04 삼성전자주식회사 네트워크를 통한 정보 제공 방법 및 장치
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
US8176466B2 (en) 2007-10-01 2012-05-08 Adobe Systems Incorporated System and method for generating an application fragment
US8397168B2 (en) 2008-04-05 2013-03-12 Social Communications Company Interfacing with a spatial virtual communication environment
US8407605B2 (en) * 2009-04-03 2013-03-26 Social Communications Company Application sharing
JP4995057B2 (ja) * 2007-12-07 2012-08-08 キヤノン株式会社 描画装置、印刷装置、描画方法、及びプログラム
US9189250B2 (en) * 2008-01-16 2015-11-17 Honeywell International Inc. Method and system for re-invoking displays
US8356258B2 (en) * 2008-02-01 2013-01-15 Microsoft Corporation Arranging display areas utilizing enhanced window states
US9619304B2 (en) 2008-02-05 2017-04-11 Adobe Systems Incorporated Automatic connections between application components
US8266637B2 (en) * 2008-03-03 2012-09-11 Microsoft Corporation Privacy modes in a remote desktop environment
CN102067085B (zh) * 2008-04-17 2014-08-13 微系统道格有限公司 用于向远程客户机虚拟传送软件应用程序的方法和系统
US8379058B2 (en) * 2008-06-06 2013-02-19 Apple Inc. Methods and apparatuses to arbitrarily transform windows
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
US20100054632A1 (en) * 2008-09-02 2010-03-04 Motorola, Inc. Method and Apparatus to Facilitate Removing a Visual Distraction From an Image Being Captured
KR101520067B1 (ko) * 2008-10-02 2015-05-13 삼성전자 주식회사 윈도우 시스템을 구현한 그래픽 처리 방법 및 그 장치
US8490026B2 (en) * 2008-10-27 2013-07-16 Microsoft Corporation Painting user controls
US8363067B1 (en) * 2009-02-05 2013-01-29 Matrox Graphics, Inc. Processing multiple regions of an image in a graphics display system
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
CN102156999B (zh) * 2010-02-11 2015-06-10 腾讯科技(深圳)有限公司 一种用户界面的生成方法和装置
US9052926B2 (en) 2010-04-07 2015-06-09 Apple Inc. Device, method, and graphical user interface for managing concurrently open software applications
US9823831B2 (en) * 2010-04-07 2017-11-21 Apple Inc. Device, method, and graphical user interface for managing concurrently open software applications
CN102065336B (zh) * 2010-07-21 2013-06-26 深圳市创维软件有限公司 数字电视接收机及其确定多级窗口剪切关系的方法
US20120092381A1 (en) * 2010-10-19 2012-04-19 Microsoft Corporation Snapping User Interface Elements Based On Touch Input
WO2012159361A1 (zh) * 2011-08-01 2012-11-29 华为技术有限公司 虚拟桌面中分布处理的方法和系统
TWI489370B (zh) * 2012-10-16 2015-06-21 智邦科技股份有限公司 呈現界面工具集的方法及系統
US9477404B2 (en) 2013-03-15 2016-10-25 Apple Inc. Device, method, and graphical user interface for managing concurrently open software applications
US9591295B2 (en) 2013-09-24 2017-03-07 Amazon Technologies, Inc. Approaches for simulating three-dimensional views
US9530243B1 (en) 2013-09-24 2016-12-27 Amazon Technologies, Inc. Generating virtual shadows for displayable elements
US9437038B1 (en) 2013-09-26 2016-09-06 Amazon Technologies, Inc. Simulating three-dimensional views using depth relationships among planes of content
US9224237B2 (en) * 2013-09-27 2015-12-29 Amazon Technologies, Inc. Simulating three-dimensional views using planes of content
US9367203B1 (en) 2013-10-04 2016-06-14 Amazon Technologies, Inc. User interface techniques for simulating three-dimensional depth
US9703445B2 (en) 2014-05-07 2017-07-11 International Business Machines Corporation Dynamic, optimized placement of computer-based windows
US9659394B2 (en) * 2014-06-30 2017-05-23 Microsoft Technology Licensing, Llc Cinematization of output in compound device environment
US10147158B2 (en) 2014-12-13 2018-12-04 Microsoft Technology Licensing, Llc Frame invalidation control with causality attribution
US9911395B1 (en) * 2014-12-23 2018-03-06 Amazon Technologies, Inc. Glare correction via pixel processing
CN105068714B (zh) * 2015-08-10 2019-02-05 联想(北京)有限公司 一种显示控制方法及电子设备
US10915952B2 (en) 2015-12-18 2021-02-09 Trading Technologies International, Inc. Manipulating trading tools
GB2563282B (en) * 2017-06-09 2022-01-12 Displaylink Uk Ltd Bypassing desktop composition
US11321103B2 (en) * 2017-06-16 2022-05-03 Microsoft Technology Licensing, Llc Generating user interface containers
CN114546204B (zh) * 2022-04-21 2022-08-12 广东统信软件有限公司 一种窗口管理方法、计算设备及可读存储介质
US11886685B1 (en) 2022-10-20 2024-01-30 Stardock Corporation Desktop container peek interface

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR970002701A (ko) * 1995-06-07 1997-01-28 제프리 엘. 포만 다수의 사용자 및 윈도에 기초한 컴퓨터 시스템 및 다수의 사용자에 기초한 컴퓨터 시스템을 제공하는 방법

Family Cites Families (30)

* 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
US4696404A (en) 1986-08-27 1987-09-29 Corella Arthur P Heat sealed package with perforated compartment seal
JPH0546568A (ja) 1991-08-08 1993-02-26 Internatl Business Mach Corp <Ibm> 分散アプリケーシヨン実行装置および方法
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
GB2312119B (en) 1996-04-12 2000-04-05 Lightworks Editing Systems Ltd Digital video effects apparatus and method therefor
US5870088A (en) * 1996-05-09 1999-02-09 National Instruments Corporation System and method for editing a control via direct graphical user interaction
US5751283A (en) * 1996-07-17 1998-05-12 Microsoft Corporation Resizing a window and an object on a display screen
US5923328A (en) * 1996-08-07 1999-07-13 Microsoft Corporation Method and system for displaying a hierarchical sub-tree by selection of a user interface element in a sub-tree bar control
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 大日本スクリーン製造株式会社 印刷データ処理装置および方法
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
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
EP1257902A4 (en) 2000-02-16 2006-04-19 Goamerica Inc DOCUMENT GENERATION AND FLOW PLANNING FOR JOBS OF APPLICATIONS
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
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR970002701A (ko) * 1995-06-07 1997-01-28 제프리 엘. 포만 다수의 사용자 및 윈도에 기초한 컴퓨터 시스템 및 다수의 사용자에 기초한 컴퓨터 시스템을 제공하는 방법

Also Published As

Publication number Publication date
CN101288104A (zh) 2008-10-15
AU2009217377B2 (en) 2011-04-28
JP2010267274A (ja) 2010-11-25
JP4808158B2 (ja) 2011-11-02
AU2009217377A1 (en) 2009-10-08
US20050088452A1 (en) 2005-04-28
TW200519724A (en) 2005-06-16
EP1682964A4 (en) 2009-01-28
MXPA05007169A (es) 2005-08-26
CN101288104B (zh) 2012-08-01
US7817163B2 (en) 2010-10-19
JP4819175B2 (ja) 2011-11-24
AU2004279204B8 (en) 2009-11-19
WO2005045558A2 (en) 2005-05-19
EP1682964A2 (en) 2006-07-26
WO2005045558A3 (en) 2008-06-05
AU2004279204A1 (en) 2005-06-23
RU2005115848A (ru) 2006-01-20
CA2501671A1 (en) 2005-04-23
AU2004279204B2 (en) 2009-06-18
ZA200503149B (en) 2006-11-29
BRPI0406387A (pt) 2005-08-09
JP2007522535A (ja) 2007-08-09
TWI374385B (en) 2012-10-11
MY142719A (en) 2010-12-31
AU2004279204A8 (en) 2008-10-02
KR20060105421A (ko) 2006-10-11
RU2377663C2 (ru) 2009-12-27

Similar Documents

Publication Publication Date Title
KR101086570B1 (ko) 동적 윈도우 구조
US7839419B2 (en) Compositing desktop window manager
EP3111318B1 (en) Cross-platform rendering engine
US8713460B2 (en) User interfaces
US7439975B2 (en) Method and system for producing dynamically determined drop shadows in a three-dimensional graphical user interface
US20060107229A1 (en) Work area transform in a graphical user interface
KR101307192B1 (ko) 3차원 전자 판서 시스템

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: 20141017

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151016

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161019

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20171018

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20181018

Year of fee payment: 8