JP2007522535A - 動的ウィンドウ構成 - Google Patents

動的ウィンドウ構成 Download PDF

Info

Publication number
JP2007522535A
JP2007522535A JP2006536548A JP2006536548A JP2007522535A JP 2007522535 A JP2007522535 A JP 2007522535A JP 2006536548 A JP2006536548 A JP 2006536548A JP 2006536548 A JP2006536548 A JP 2006536548A JP 2007522535 A JP2007522535 A JP 2007522535A
Authority
JP
Japan
Prior art keywords
window
content
basic
mesh
desktop
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
JP2006536548A
Other languages
English (en)
Other versions
JP4808158B2 (ja
Inventor
ハンギー スコット
タン ビクター
バームズ ゲラルド
ディ.スイードバーグ グレゴリー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2007522535A publication Critical patent/JP2007522535A/ja
Application granted granted Critical
Publication of JP4808158B2 publication Critical patent/JP4808158B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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
    • 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

Abstract

合成デスクトップモデルのオペレーティングシステムを使用するコンピュータ上にデスクトップを描画するための方法およびシステムを開示する。合成デスクトップウィンドウマネージャは、アプリケーションプログラムから基本オブジェクトおよび1つまたは複数のコンテンツオブジェクトのコンテンツオブジェクト情報を受け取ると、ウィンドウをバッファメモリに描画し、高度なグラフィックスハードウェアおよびビジュアル効果を利用して、それらが描画されるコンテンツに基づいてウィンドウを描画する。各ウィンドウのフレーム部分は、表示されるフレームの下にあるデスクトップのコンテンツに基づくすりガラスの外観を有するビットマップのピクセルシェーディングを行うことにより生成することができる。オペレーティングシステムが非レガシアプリケーションウィンドウと整合するように見えるようにレガシアプリケーションにより生成されるウィンドウを描き、描画することができるようなレガシサポートが提供される。

Description

本発明は、一般に、コンピュータオペレーティングシステムのグラフィカルユーザインターフェースに関する。より詳細には、本発明は、ウィンドウ毎に、複数かつ/または不規則な形状のクライアントおよび非クライアントコンテンツの領域を各ウィンドウ内にもつ機能を可能にさせるメカニズムを実現する。
コンピュータのオペレーティングシステムは、通常、グラフィカルユーザインターフェース(GUI)をエンドユーザに提供するシェルを有する。このシェルは、ユーザとオペレーティングシステムとの間の直接通信を実現するソフトウェアコンポーネントの1つまたはそれらの組み合わせからなる。グラフィカルユーザインターフェースは、通常、ユーザがオペレーティングシステムと対話するためのアイコン指向のおよび/またはメニュー駆動型の環境を提供し、多くの場合、デスクトップメタファ(desktop metaphor)に基づく。より具体的に述べると、グラフィカルユーザインターフェースは、机に向かって仕事をするという現実世界の活動をモデル化するように設計されている。デスクトップ環境は、通常、単一の表示装置のサーフェス全体を占有するか、または複数の表示装置にまたがることができ、アイコン、メニュー、カーソル、およびウィンドウなどの従属するユーザインターフェースオブジェクトのホストとなる。
デスクトップ環境によりホストされる種類の描画オブジェクトの中には、ウィンドウとして知られる、視覚的に線引きされた画面領域がある。ウィンドウは、通常、固有のユーザ活動に対し専用となっており、サードパーティのソフトウェアアプリケーションまたはシステムアプリケーションのいずれかにより作成され管理される。各ウィンドウは、特定のアプリケーションプログラムの制御の下で仮想表示装置であるかのように動作し、そのコンテンツを独立して表示する。ウィンドウは、通常、サイズ変更、表示画面上での移動、および完全にまたは部分的に互いに重なるように積み重ねた配置を対話的に行うことができる。一部のウィンドウ操作環境では、ウィンドウは、アイコンへとサイズを最小化する、またはサイズを最大化して表示面全体を占有するなどの控えめな視覚的状態または動作状態をとることができる。デスクトップウィンドウのコレクション(collection)は、一般に、当業ではZオーダと呼ぶ、上から下への表示順序を割り当てられ、ウィンドウは画面上で同じ投影位置を占有するZオーダに関して自ウィンドウよりも下位の他のすべてのウィンドウの上に載る。単一の、選択されたウィンドウは、いつでも「フォーカス」を持ち、ユーザの入力を受け入れられる。ユーザは、マウスまたはその他のポインタデバイスを使ってウィンドウをクリックするか、またはシステム定義のキーボードショートカットまたはキーの組み合わせを使用することにより、入力フォーカスを他のウィンドウに導くことができる。これにより、ユーザは、実際の机の上に任意に積み重ねられる、または配置できる紙の書類およびその他の品目を管理する現実世界のシナリオに似た方法で複数のアプリケーションプログラム、ファイル、およびドキュメントを使って効率よく働くことができる。
従来の多数のグラフィカルユーザインターフェースデスクトップ実装の欠点は、視覚的にリッチなコンテンツを表示する能力、またはグラフィック描画技術の機能強化を十分に引き出すための能力が限られていることである。このような機能強化には、物理的にモデル化された(照明、陰影、テクスチャ、透明、反射、および屈折)、2および3次元のコンテンツおよび滑らかな高性能アニメーションのリアルタイムの描画が含まれる。デスクトップ上でグラフィック描画機能強化を利用するために使用可能なサービスが限られることと対照的に、Windows(登録商標)ブランドのオペレーティングシステムおよび類似のオペレーティングシステムのシェルのグラフィカルユーザインターフェース内でウィンドウ表示または全画面表示されて動作する所定のアプリケーションプログラムでは視覚的にリッチなコンテンツの表示が可能である。このようなコンテンツを表示する種類のアプリケーションプログラムには、リアルタイムの3Dアニメーションおよび効果を使用するビデオゲーム、レイトレーサなどの高度なグラフィカルオーサリングツール、および高度な2Dおよび3Dパブリッシングアプリケーションがある。これらのプログラムのビジュアル出力は、アプリケーションウィンドウのコンテンツ領域に制約されるか、または他のウィンドウおよびデスクトップ自体を除いて全画面で描画されるため、アプリケーションプログラムのリッチなグラフィック出力はデスクトップ環境の表示に全く寄与しない。
コンピュータのオペレーティングシステムは、アイコン、メニュー、カーソル、ウィンドウ、およびデスクトップなどのユーザインターフェースオブジェクトの管理、マウスおよびキーボードなどの入力装置からのイベントの調停(arbitrating)、およびソフトウェアアプリケーションへのユーザインターフェースサービスの提供に関与するソフトウェアレイヤを採用している。このソフトウェアレイヤは、デスクトップウィンドウマネージャ(DWM)と呼ばれる。デスクトップウィンドウマネージャ(DWM)の描画ロジック、入力イベントのルーティング、およびアプリケーションプログラミングインターフェース(API)は全体として、ユーザインターフェースポリシーを具体化し、同様に、オペレーティングシステムの総合的なユーザエクスペリエンス(experience)を規定する。現在までリッチなビジュアルデスクトップがなかった主な理由は、DWMがデスクトップを管理し描画する方法にあった。従来のDWMの実装では、デスクトップを描画するのに「無効化(invalidation)」モデルを採用しているが、それは主にビデオおよびシステムメモリのリソースならびにCPUおよびGPUの処理能力を節約して使う必要性から発達したものである。
無効化モデルでは、ウィンドウのサイズ変更または移動が行われる、またはアプリケーション側でウィンドウの全部または一部を再描画したい場合、表示の影響を受ける部分が「無効化」される。DWMでは、ウィンドウのサイズ変更または移動の影響を受ける領域を内部的に無効化するが、自ウィンドウの全部または一部を再描画しようと試みるアプリケーションは、オペレーティングシステムに対し、APIを介して、自ウィンドウの指定領域を無効化するよう指令する。いずれの場合も、DWMが画面上の更新が実際に必要になっている要求領域の一部(subset)を決定することにより無効化要求を処理する。DWMは、通常、ターゲットウィンドウに関連付けられている交差領域、ターゲットの上にかぶさる他のウィンドウ、影響を受けるウィンドウに関連付けられているクリッピング領域、および表示の目に見える境界の保持されているリストを調べることによりこれを達成する。DWMは、その後、それぞれの影響を受けるアプリケーションに、禁止されている上から下への順序で更新の必要のある領域を指定する描画メッセージを送る。アプリケーションは、その指定領域を受け入れるか、または無視するかを選択することができる。ローカルの更新領域の外でアプリケーションにより実行される描画は、グラフィカルデバイスインターフェース(GDI)などの低レベルのグラフィック描画エンジンにより提供されるサービスを使用してDWMによって自動的にクリッピングされる。
無効化メッセージングモデルの利点は、表示メモリを節約できることにある。つまり、無効化ベースのDWMは、現在表示されているコンテンツの下にあるかもしれないものを「覚えておく」ことをせずに、単一のデスクトップの描画に十分なバッファメモリを維持するだけでよい。しかし、デスクトップ上のウィンドウは上から下への順序で描画されるため、GDIを介した非矩形ウィンドウおよびリッチな2Dアニメーションなどの機能は、表示サーフェスの複雑な領域および/または広範囲に及ぶサンプリングを伴うCPUの大規模な計算を必要とするが(したがって、グラフィックスハードウェアベースの高速化の可能性が制限される)、透明化、陰影、3Dグラフィックス、および高度な照明効果などの他の機能は、極めて困難であり、大量の資源を消費する。
例えば、従来USERとして知られているMicrosoft Windows(登録商標)XPウィンドウマネージャは、Wiondows(登録商標)ブランドオペレーティングシステムの出現以来、グラフィカルユーザインターフェースサブシステム(現在ではWin32と呼ばれている)の主要なコンポーネントとして役目を果たしてきた。USERでは、2次元グラフィックスデバイスインターフェース(DGI)グラフィック描画エンジンを使用して、表示装置に描画を行う。GDIは、Win32の他の主要サブコンポーネントである、オリジナルのWindows(登録商標)ブランドのオペレーティングシステムの中に存在する描画技術に基づいている。USERは、GDIクリッピング領域および2D描画プリミティブと連携し、無効化メッセージングモデルを使用してそれぞれのウィンドウを表示装置に描画する。デスクトップを描画する際のUSERの主要な動作として、デスクトップ描画の無効化モデルにより、ビジュアル更新が必要な表示領域を識別すること、ならびに、描画する必要があることおよび描画する位置をアプリケーションに通知することがある。
デスクトップの描画で次に発展したのは、デスクトップ合成(desktop compositing)と呼ばれる下から上への描画手法である。合成DWM(compositing DWM)、つまりCDWMでは、デスクトップは下位レイヤから上位レイヤへと描画される。つまり、デスクトップの背景が最初に描画され、その後、デスクトップ上に直接配置されているアイコン、フォルダ、およびコンテンツが続き、そして、1レベル上のフォルダ、というように描画されて行く。デスクトップを下から上に描画することにより、繰り返される各レイヤは、そのコンテンツを下にあるレイヤに基づかせることができる。しかし、デスクトップ合成は、CDWMがデスクトップに描画される各アイテムのコピーをメモリ内に保持するためメモリを大量に使用する処理である。最近の市場の変化と製造技術により高度なビデオハードウェアおよびコンピュータメモリがかなり手頃な価格になる前には、映画向けの特殊効果の準備のためなど、合成エンジンを実装することができるのは商業用の高価なハイエンドコンピューティングシステムだけであった。
ミッドエンドおよびローエンドのコンピュータのビデオハードウェアの発展は、普及しているオペレーティングシステムに用意されているグラフィカルサービスによって主に促進されてきた。しかし、普及しているオペレーティングシステムで利用できるグラフィカルサービスは、旧式のアプリケーションソフトウェアおよび手の届く値段のビデオハードウェアの限られた機能との互換性を維持する必要性を含むさまざまな理由からあまり高度なものではなかった。しかし、最近、リアルタイム3Dコンピュータゲームは、小売りのビデオハードウェア発展の主要な市場推進役としてオペレーティングシステムを追い越し、短期間のうちに、並外れた高度な水準に達した。リアルタイムのハードウェアベースの3D高速化機能は、現在では、消費者にとって妥当な価格で入手可能になっている。したがって、かつては非常に高度なものと考えられていた、高速なテクスチャおよび照明アルゴリズム、3D変換、およびGPUの直接プログラミング機能などのグラフィックスハードウェア機能が容易に利用できる。現在、一般的に、ゲームソフトウェアおよび非常に専門的なグラフィックスアプリケーションのみがこのような機能を積極的に活用しており、またそうするためには、レガシWin32ウィンドウマネージャ(USER)およびGDIをバイパスする必要がある。
合成デスクトップモデルを実装する際のもう1つの障害は、無効化モデルDWMとともに使用するように書かれているレガシアプリケーションが合成環境では正常に機能しないということである。これは、レガシアプリケーションのコアの描画ロジックがオペレーティングシステムの無効化モデルDWM APIに基づいているためである。つまり、レガシアプリケーションは、ユーザの対話操作または内部状態の変化に直接応答してウィンドウのコンテンツを描画するのではなく、オペレーティングシステムまたは自身の無効化要求により生成される描画メッセージを受け取ったときのみ描画するものとなっている。最も困難な改善法は、合成DWMがアプリケーションの代わりにレガシGUIプラットフォームを代理とする手段を考案することからなる。これよりも単純な代替手段は、アプリケーションを合成デスクトップ環境から除外する(当分野で「サンドボクシング(sand boxing)」として知られている方法)、または単にレガシアプリケーションの互換性を完全に放棄してしまうという方法からなる。
現状では、非クライアント領域内にあるUI要素は、アプリケーションにより修正することはできない。さらに、標準フレームレイアウトに対しクエリ、修正、または選択的オーバーライドを実行する、または非クライアント要素を個別に描画する直接的で堅牢な手段はない。例えば、アプリケーション側でシステムアイコンまたは非クライアントボタン(例えば、元のサイズに戻す、最大化、最小化、閉じる)を再配置し、カスタム非クライアントボタンを追加または追跡するための実用的な方法はない。さらに、アプリケーションは、アプリケーション側にウィンドウの非クライアント領域全体(クライアント領域とともに)に対する描画およびヒットテスト(hit−testing)の責任を負わせたいのでない限り、単一の矩形領域(クライアント領域)にアプリケーションコンテンツを配置することに制限される。既存のUSERフレームワーク内のこれらの制約を緩めると、制約を見込み、またそれに依存する多数の一般的に利用されているレガシアプリケーションが使用できなくなるであろう。
そこで、合成モデルを使用してデスクトップを描画するリッチなフル機能のオペレーティングシステムを実現させ、動的ウィンドウアーキテクチャを許容するデスクトップウィンドウマネージャを実現させることは、技術の進歩となるであろう。レガシアプリケーションも動的アーキテクチャモデルで動作するように、動的ウィンドウアーキテクチャを許容ししかもレガシアプリケーションをサポートするデスクトップウィンドウマネージャを実現すると技術の進歩となるであろう。
以下では、本発明のいくつかの態様の基本的な理解を与えるために、本発明の概要を簡単に述べる。この概要は、本発明の広範な全体像ではない。この要約は、本発明の鍵となる要素やクリティカルな要素を特定したり、本発明の範囲を線引きすることを意図していない。以下の概要は、後述の詳細な説明の前置きとして、本発明のいくつかの概念を簡単な形態で述べるにすぎない。
上述の従来技術における制限を克服するために、また本明細書を読み理解した後に明白になるであろう他の制限を克服するために、本発明は、高度なグラフィックスおよび描画機能を備える合成デスクトップを対象とする。
本発明の第1の例示されている態様は、動的な構成を持つウィンドウを描画するデータ処理システムを提供する。データ処理システムは、プロパティが格納されているウィンドウ毎に、基本オブジェクトのプロパティおよび少なくとも1つのコンテンツオブジェクトに対するプロパティを含むウィンドウプロパティを格納するメモリを有する。データ処理システムは、さらに、プロパティが格納される各ウィンドウのウィンドウプロパティに基づいてデスクトップを構成する合成デスクトップウィンドウマネージャのソフトウェアモジュールも有する。
本発明の他の態様では、ウィンドウが一様でない動的構成を有するウィンドウ情報を格納するためのデータ構造を提供する。データ構造は、ウィンドウの基本オブジェクトの基本オブジェクトプロパティを格納する第1のデータフィールド、およびウィンドウの1つまたは複数のコンテンツオブジェクトに対するコンテンツオブジェクトプロパティを格納する第2のデータフィールドを含む。
添付の図面と合わせて、以下の説明を参照すると、本発明およびその利点をより完全な理解を得ることができ、また図面では類似の参照番号は類似の機能を示している。
さまざまな実施形態の以下の説明では、これに関して一部をなし、本発明を実施できるさまざまな実施形態を図で示す付属の図面を参照する。他の実施形態を利用し、本発明の範囲および精神から逸脱することなく構造的および機能的な修正を加えることができることは当然理解されよう。
本発明は、好ましい描画モデルとしてデスクトップ合成を使用するデスクトップウィンドウマネージャ(DWM)を提供する。本発明のデスクトップウィンドウマネージャは、本明細書では、合成デスクトップウィンドウマネージャ(CDWM)と呼ぶ。CDWMは、合成サブシステムと合わせて、統一合成エンジン(UCE)(Unified Compositing Engine)と呼ばれ、3Dグラフィックスおよびアニメーション、シャドウ、透明化、高度な照明手法、およびデスクトップ上のその他のリッチなビジュアル機能を備える。本明細書で本質的に使用される合成描画モデルは、描画における無効化ステップをなくし、描画およびその他の通知メッセージの送信の必要性を最小化するかなくすが、それは、システムがそれぞれのウィンドウを必要に応じ描画するのに十分な状態情報を保有しているからである。
例示されている動作環境
図1は、本発明を実施するのに適しているコンピューティングシステム環境100の一例を示す図である。コンピューティングシステム環境100は、適当なコンピューティング環境の一例にすぎず、本発明の用途または機能性の範囲に関する制限を示唆する意図はない。コンピューティング環境100は、例示的なオペレーティング環境100に示されている1つのコンポーネントまたはその組み合わせに関係する何らかの依存または要求のいずれも有するものとして解釈すべきでない。
本発明は、他の数多くの汎用または専用のコンピューティングシステム環境または構成で使用できる。本発明での使用に適した周知のコンピューティングシステム、環境、および/または構成の例として、それだけに限定はされないがパーソナルコンピュータ、サーバコンピュータ、パーソナルデジタルアシスタント(PDA)、タブレットPC、またはラップトップPCなどの携帯型およびハンドヘルド型の装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な家電製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記システムまたは装置のいずれかを含む分散コンピューティング環境、などが挙げられる。
本発明は、コンピュータによって実行される、プログラムモジュールなどのコンピュータ実行可能命令の一般的なコンテキストで説明することができる。一般に、プログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。また、本発明は、通信ネットワークを通じてリンクされているリモート処理装置によりタスクが実行される分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールをメモリ記憶装置を含むローカルとリモートの両方のコンピュータ記憶媒体に配置することができる。
図1に関して、本発明を実施する例示的なシステムは、コンピュータ110の形態の汎用コンピューティング装置を備える。コンピュータ110が備えるコンポーネントとしては、それだけに限定はされないが、処理装置120、システムメモリ130、およびシステムメモリを備えるさまざまなシステムコンポーネントを処理装置120に接続するシステムバス121などが挙げられる。システムバス121には、メモリバスまたはメモリコントローラ、周辺機器バス、およびさまざまなバスアーキテクチャのいずれかを使用するローカルバスを含む数種類のバス構造のいずれかであってよい。例えば、限定するものではないが、このようなアーキテクチャとしては、Industry Standard Architecture(ISA)バス、Micro Channel Architecture(MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカルバス、Advanced Graphics Port(AGP)バス、およびメザニン(Mezzanine)バスとしても知られているPeripheral Component Interconnect(PCI)バスが挙げられる。
コンピュータ110は通常、さまざまなコンピュータ読み取り可能な媒体を含む。コンピュータ読み取り可能な媒体は、コンピュータ110によってアクセスすることができる媒体であればどのような媒体でも使用可能であり、揮発性および不揮発性媒体、取り外し可能および固定の媒体を含む。例えば、コンピュータ読み取り可能な媒体は、それだけに限定はされないがコンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ読み取り可能な命令、データ構造体、プログラムモジュール、またはその他のデータなどの情報を格納する任意の方法または技術で実装される揮発性および不揮発性、取り外し可能および固定の媒体を含む。コンピュータ記憶媒体としては、それだけに限定はされないがRAM、ROM、EEPROM、フラッシュメモリまたはその他のメモリ技術、CD−ROM、デジタル多目的ディスク(DVD)またはその他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置またはその他の磁気記憶装置、または所望の情報を格納するために使用することができコンピュータ110によりアクセスできるその他の媒体が挙げられる。通信媒体は、典型的には、搬送波もしくはその他の搬送メカニズムなどの変調されたデータ信号中のコンピュータ読み取り可能な命令、データ構造体、プログラムモジュール、または、その他のデータを具現化するものであり、任意の情報伝達媒体を含む。「変調データ信号」という用語は、信号中に情報を符号化する形でその特性の1つまたは複数を設定または変化させた信号を意味する。
例えば、通信媒体としては、それだけに限定はされないが有線ネットワークまたは直接配線接続などの有線媒体、および、音響、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を例示している。例示的な動作環境で使用できる他の取り外し可能な/固定の揮発性/不揮発性コンピュータ記憶媒体としては、それだけに限定はされないが磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステート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)などの他のインターフェースおよびバス構造により接続することもできる。モニタ184またはその他の種類の表示装置も、ビデオインターフェース183などのインターフェースを介してシステムバス121に接続される。コンピュータ110は、ユーザがペン入力装置186を使用して入力できる、モニタ184と併用するデジタイザ185も備えることができる。モニタのほかに、コンピュータは、スピーカ189およびプリンタ188などの他の周辺出力装置も備えることができ、これらは出力周辺インターフェース187を介して接続することができる。
コンピュータ110は、リモートコンピュータ180などの1つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク接続環境で動作することができる。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、またはその他の共通ネットワークノードでもよく、通常は、コンピュータ110に関係する上述の構成要素の多くまたはすべてを含むが、メモリ記憶装置181だけが図1に例示されている。図1に示す論理接続は、ローカルエリアネットワーク(LAN)171とワイドエリアネットワーク(WAN)173を含むが、他のネットワークを含むこともできる。このようなネットワーキング環境は、オフィス、企業全体にわたるコンピュータネットワーク、イントラネット、およびインターネットでは一般的なものである。
LANネットワーキング環境で使用される場合、コンピュータ110はネットワークインターフェースまたはアダプタ170を介してLAN 171に接続される。WANネットワーキング環境で使用される場合、コンピュータ110は、通常、モデム172、またはインターネットなどのWAN 173上で通信を確立するためのその他の手段を備える。モデム172は、内蔵でも外付けでもよいが、ユーザ入力インターフェース160またはその他の適切なメカニズムを介してシステムバス121に接続することができる。ネットワーク接続環境では、コンピュータ110またはその一部に関して示されているプログラムモジュールは、リモートメモリ記憶装置に格納することができる。限定ではなく例として、図1には、リモートアプリケーションプログラム182がメモリデバイス181にあるものとして例示されている。図に示されているネットワーク接続は例であり、コンピュータ間の通信リンクを確立する他の手段が使用可能であることは理解されるであろう。
例示されている実施形態
本発明では、合成デスクトップウィンドウマネージャ(CDWM)を使用し、合成デスクトップモデル、つまり、下から上への描画方法を使用してデスクトップ表示を描画し保持することができる。CDWMは、将来参照できるようにバッファメモリ領域内にコンテンツを保持することができる。CDWMは、デスクトップを下から上へ、デスクトップの背景から始めて重なり合うウィンドウを経て、逆Zオーダで描画することによりデスクトップを合成する。デスクトップを構成している間、CDWMは、描画されているウィンドウの下にあるコンテンツに一部基づいて、また他の環境要因(例えば、光源、反射特性)にも一部基づいて、各ウィンドウを描画することができる。例えば、CDWMは、ARGB形式のテクスチャのアルファチャネルを使用して、ウィンドウに透明性を付与し、仮想光源に基づいてウィンドウのコンテンツの一部(例えば、フレーム)を選択的に強調することができる。
CDWMは、オペレーティングシステム134、144の一部として存在するか、またはオペレーティングシステムとは独立して、例えば他のプログラムモジュール136、146に存在することができる。さらに、CDWMは、本明細書では統一合成エンジン(UCE)と呼ばれる、以下および、すべての目的に関して全体が参照により本明細書に組み込まれる、2003年10月23日に出願された「System and Method for a Unified Composition Engine in a Graphics Processing System」という名称の同時係属特許出願番号(法定代理人整理番号50037.201US01)において詳しく説明されている、低レベルのグラフィックス合成サブシステムに頼ることができる。例示されている一実施形態では、UCEは、ワシントン州レッドモンドのマイクロソフト社のDirect3D(登録商標)およびDirectX(登録商標)技術に基づくか、または使用する。他の実施形態では、カリフォルニア州マウンテンビューのシリコン グラフィクス社によるOpenGL(登録商標)グラフィックスエンジンに基づくX Windowプラットフォームのバリエーションなどの他のグラフィックス合成サブシステムを使用することができる。UCEは、3Dグラフィックスおよびアニメーション、透明性、シャドウ、照明効果、バンプマッピング(bump mapping)、環境マッピング、およびデスクトップ上のその他のリッチなビジュアル機能を可能にする。
図1Bは、デスクトップ合成プラットフォームの例示的実施形態によるコンポーネントアーキテクチャを示している。合成デスクトップウィンドウマネージャ(CDWM)190は、合成ウェア(composition−ware)アプリケーションソフトウェア191が、CDWMウィンドウならびにコンテンツ作成および管理サービスをそれを通じて得るためのアプリケーションプログラミングインターフェース190a、レガシウィンドウ操作グラフィックスサブシステム192が、個々のウィンドウのリダイレクトされたグラフィックス出力に影響を及ぼす変更に関する更新通知をそれを通じて送信するためのサブシステムプログラミングインターフェース190b(ウィンドウグラフィック出力のリダイレクトについては、以下で詳述する)、およびウィンドウおよびその関連するコンテンツなどのデスクトップUIオブジェクトのZオーダリポジトリ(Z−ordered repository)を保持するUIオブジェクトマネージャ190cを含むことができる。UIオブジェクトマネージャは、テーママネージャ193と通信し、リソース、オブジェクト挙動属性(object behavioral attributes)、およびアクティブなデスクトップテーマに関連付けられているレンダリングメトリック(rendering metric)を取得することができる。
レガシグラフィカルユーザインターフェースサブシステム192は、レガシウィンドウマネージャ192aおよびレガシグラフィックスデバイスインターフェース192bを含むことができる。レガシウィンドウマネージャ192aは、CDWMが出現する以前に開発されたソフトウェアアプリケーション用の無効化モデルウィンドウ操作(windowing)およびデスクトップサービスを提供する。レガシグラフィックスデバイスインターフェース192bは、2Dグラフィックスサービスをレガシアプリケーションだけでなくレガシウィンドウマネージャにも提供する。デスクトップを描画するための無効化モデルに基づくレガシグラフィックスデバイスインターフェースは、3D、ハードウェア高速化描画プリミティブ、および変換のサポートを欠く場合があり、ビットマップコピーおよび転送オペレーションのピクセル毎のアルファチャネルの透明性(transparency)をネイティブ機能としてサポートしないかもしれない。レガシウィンドウマネージャ192aおよびグラフィカルデバイスインターフェース192bは共に、無効化モデルを使用するお気に入りのまたは重要なソフトウェアアプリケーションを実行する機能を犠牲にせずに、オペレーティングシステムのアップグレードを望むユーザの所有コストを低減するために役目を果たし続ける。エンドユーザに対し目立ったペナルティがほとんどまたは全く生じない方法で、レガシアプリケーションウィンドウと合成ウェアアプリケーションウィンドウとが継ぎ目なく並ぶ統合を実現するために、合成プロセスへのレガシグラフィカルユーザインターフェースサブシステム192のアクティブな関与がある。実際、レガシアプリケーションの認知されているプラットフォーム環境は、合成されたデスクトップに対する堅牢性(robustness)を損なわないようにするために、変化しないのが好ましいが、それでもレガシウィンドウがデスクトップに描画される基本的な方法は、基本的に変更されるであろう。本発明では、本明細書でウィンドウグラフィック出力のリダイレクトとして説明される機能を付加することによりどのようにこれが実現されるか説明する。
統一合成エンジン(UCE)194は、プログラミングインターフェース194aを介してCDWMから発行された描画命令および合体した(coalesce)リソースを使用可能にする(service)ことができる。広い意味で、CDWMに関するUCEの役割は、レガシウィンドウマネージャ192aに関するレガシグラフィックスデバイスインターフェース192bの役割に似ている。UCEプログラミングインターフェース194aは、CDWMを提供し、そして最終的にアプリケーションが、抽象インターフェースをさまざまなグラフィックスサービスに提供する。これらのUCEサービスには、リソース管理、複数表示シナリオからのカプセル化、およびリモートデスクトップサポートがある。
CDWMの書き込み動作と描画動作間のグラフィックスリソースの競合は、内部のリソースマネージャ194bにより調停することができる。リソース更新および描画サービスの要求は、プログラミングインターフェースサブコンポーネント194aによりUCEの要求キュー194cに置かれる。これらの要求は、システムにインストールされている表示装置のリフレッシュレートと一致する間隔で描画モジュール194dにより非同期で処理することができる。したがって、UCE194の描画モジュール194dは、CDWM要求をキューから取り出し、必要に応じてリソースマネージャ194bに格納されているリソースにアクセスして操作し、3Dグラフィックスインターフェース195への表示画面固有の描画命令を組み立てて送出することができる。
デスクトップを複数の表示画面に描画するには、異種表示装置間の、リフレッシュ速度、ピクセル形式サポート、およびデバイス座標マッピングの相違の抽象化を必要とする。UCEでは、この抽象化を実現することができる。
UCEは、さらに、リモートデスクトップ構成においてネットワーク接続でグラフィックスデータを送出する責務も有する。一方の特定のシステムのデスクトップを他のシステムのデスクトップから効率よく離すために、リソース競合を回避し、性能の最適化を成立させ、セキュリティを堅牢なものとしなければならない。これらの責務は、UCEにもありうる。
3Dグラフィックスインターフェース195は、Direct3D(登録商標)、OpenGL(登録商標)などの低レベルの直接モード(ステートレス)グラフィックスサービスを備えることができる。3Dグラフィックスインターフェースの目的は、特定のグラフィックスハードウェア構成の機能にわたる抽象インターフェースを実現することである。3Dグラフィックスインターフェースは、単一の表示装置のために働き、UCEは、複数のデバイスドライバ196を介してマルチディスプレイシステムの複数のグラフィックス出力装置197の間に、CDWMの描画命令を解析し分配することができる。
図1Bに示されているコンポーネントアーキテクチャは、例示的な実施形態のアーキテクチャであることに留意されたい。図は、本発明が含むことができる機能を図示することを意図している。これらの機能は、プラットフォームの機能および所望の機能セットに従って、図に表されているものよりも少ないまたはより多い数のソフトウェアコンポーネントの間に分配することができる。例えば、テーマ管理を欠くシステムでは、別のテーママネージャからではなく、おそらくCDWM自体により管理される静的リソースとして、システムからすべてのストックリソースを派生させる場合もある。差し込み可能な(plugable)ウィンドウマネージャを許容するプラットフォームでは、CDWM内のアプリケーションプログラミングインターフェース190aを差し込み可能ウィンドウマネージャインターフェース(Plugable Window Manager Interface)で置き換えて、合成UIオブジェクトおよびリソース管理の詳細を抽象化することができる。他の考えられる変更形態では、レガシアプリケーションとの互換性が必要なければ、サブシステムプログラミングインターフェース190bをなくしてもよい。
図1Bに示されているUCE 194のサブコンポーネントは、別々のプロセスに分解するか、CDWM自体の中に折り込むか、または3Dグラフィックスインターフェースに統合することができる。したがって、幅広い特定のコンポーネント設計が可能であり、それぞれが本発明を含む機能全体または機能の一部を実行することができる。
図2は、本発明の例示的態様によるデスクトップ合成を実行する一般的な方法を例示している。ステップ201から205は、合成デスクトップウィンドウマネージャ(CDWM)APIを使用してウィンドウおよびウィンドウのコンテンツを作成し管理する合成を意識したアプリケーションの相互作用を説明している。ステップ207および209は、レガシウィンドウコンテンツを合成するための従来の無効化モデルウィンドウマネージャアプリケーションとCDWM間の相互作用を示している。
ステップ201で、合成デスクトップマネージャ(CDWM)は、合成を意識したアプリケーションから、(1)合成ウィンドウを作成し、(2)コンテンツオブジェクトを付ける要求を受け取る。本発明は、ウィンドウ毎に単一のコンテンツオブジェクトに限られるわけではなく、アプリケーション側で、CDWM APIを介してウィンドウを動的に作成し、ウィンドウに任意の個数のコンテンツオブジェクトを付ける(それだけでなく分離および破壊する)ことができる。コンテンツオブジェクトは、追加のテクスチャ(ライトマップ(light map)、鏡面マップ(specular map)、バンプ/通常マップ(bump/normal map)など)、ライト(lights)、およびピクセルシェーダ(pixel shader)などのオプションのアクセサリリソースとともに、アプリケーション定義メッシュまたはシステム定義メッシュにマッピングされた拡散テクスチャ(diffuse texture)として使用される指定されたサイズおよびピクセル形式のラスタサーフェスからなる。拡散コンテンツテクスチャのピクセル形式は、システムにインストールされているビデオハードウェアでサポートされている形式であればどのようなものでもよいが、今の説明を目的として、32ビットARGBとすることができる。この形式を要求する場合、アプリケーションは、コンテンツピクセルの透明レベルを変えるのにアルファ(A)チャネルを使用することができ、したがって最終の描画でソースピクセルとともに調節するデスクトップ背景情報の量の微調整を行うことができることを暗黙のうちに知ることができる。ステップ203で、CDWMは、CDWM実装コンテンツオブジェクトを付けるウィンドウに対する状態ブロック(state block)を割り当てる。コンテンツオブジェクトは、要求されたリソースを割り当てるか、またはアプリケーションにより転送されたリソースを添付し、UCEに対しこれらのリソースを整列させて(marshal)、UCE更新要求後直ちにアクセスできるようにする。ステップ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次元のエクステント(extent)、またはレガシおよびCDWMウィンドウのメトリクス(metrics)とリダイレクトされたレガシサーフェスの更新された次元の組み合わせに基づいてフレームプリミティブの適切なサイズおよび向きを決定する。フレームサイズが決定されると、CDWMは、フレームメッシュ内の頂点の位置情報に適切な変更を加え、頂点データバッファをUCEに転送する。UCEは、非同期処理を行うため、メッシュ更新ディレクティブおよび新しい頂点情報をキューに入れる。ウィンドウにフレームがない場合、ステップ215をバイパスすることができる。フレーム付きまたはフレームなしのウィンドウの場合、コンテンツ領域に影響を及ぼすサイズの変更は、CDWMが、コンテンツメッシュのサイズを変更し、UCEへの適切なメッシュ更新要求およびデータをキューに入れることを引き起こす(ステップ217)。
位置(回転を含む)またはスケールの更新(ステップ219)では、CDWMは、非同期処理のために、新しい変換パラメータを決定し、UCEへの変換リソース更新要求をデータとともにキューに入れる(ステップ221)。リソースは、最低でも、4×4変換行列からなるが、フィルタ処理された変換をサポートするため追加データを含むこともできる。
ステップ223で、CDWMは、拡散コンテンツテクスチャのピクセルデータへの変更を伴う更新要求を受け取る、つまり、アプリケーションはすでにそのウィンドウ内でコンテンツを更新している。ステップ225で、CDWMは、非同期処理のため、UCEへの新しいピクセル情報をキューに入れることによりこの要求を使用可能にする(service)。
追加の更新要求は、図2に示されているもののほかにもサポートできることは当業者であれば理解されるであろう。例えば、ウィンドウのアイコンまたはキャプションのテキストに対する変更はまた、それぞれウィンドウに関連付けられたCDWM管理されたアイコンまたはキャプションコンテンツオブジェクトの再描画を必要とする場合がある。ウィンドウ入力フォーカスは、フレームの外観に反映され、したがって、レガシウィンドウの場合、レガシウィンドウマネージャが、入力フォーカス変更更新を、フレームを再描画し場合によっては他のコンテンツもそれに応じて再描画するCDWMに送ることができる。
ステップ227で、UCEはCDWMから入ってくる合成およびリソース更新を処理し、デスクトップの合成に関与するそれぞれのアクティブなビデオグラフィックスアダプタのビデオリフレッシュレートと同期する間隔で、表示サイズのバッキングバッファへデスクトップ(またはマルチディスプレイ構成における該当する部分)を再描画する。これは、3Dグラフィックスエンジン(Microsoft Direct3D(登録商標)など)により提供される直接モードの描画サービスを使用して実行され、これはデスクトップを順に1次(primary)表示サーフェスに転送する。
ウィンドウを3Dで描画するために、CDWMは、さまざまなコンポーネントを使用してウィンドウ構成を定義し、基本コンテンツオブジェクトおよび1つまたは複数の子コンテンツオブジェクトを含むようにできる。基本コンテンツオブジェクトは、ウィンドウのフレーム、つまり枠を定義し、基本ジオメトリ、基本エクステント、基本マテリアルプロパティ、および基本コンテンツマージンからなる。基本コンテンツオブジェクトおよび子コンテンツオブジェクトは、それぞれシステムにより完全に定義し管理することができ、またカスタムコンテンツ要素の場合には、アプリケーションにより管理することができる。コンテンツオブジェクトについて、以下で詳述する。
図3は、本発明の例示的態様によるアプリケーションウィンドウを例示している。
アプリケーションウィンドウ301は、さまざまな領域およびコンポーネントを含むことができる。ウィンドウ301のフレームまたは基本コンテンツ303は、ボタン305(例えば、ウィンドウを元のサイズに戻す、最大化する、最小化する、閉じるなどのために使用される)、指示アイコン307、スクロールバー309、メニューバー311、およびウィンドウキャプションテキスト313を含む子コンテンツをホストすることができる。1次コンテンツオブジェクト領域315は、レガシウィンドウおよびグラフィカルユーザインターフェースサブシステムから得られるリダイレクトバッファから派生させるか、または合成を意識した自アプリケーションにより作成し、標準の基本コンテンツに添付し、描画することができる。当業者であれば、図3が、基本的なウィンドウ要素を単に例示しているにすぎないこと、また追加もしくは異なるウィンドウ要素がさらに、またはそれとは別に使用できることは理解されよう。さらに、それとは別にウィンドウフレーム要素をアプリケーション側で用意し、例えば、アプリケーションプログラミングと異なるルックアンドフィールを与えることができる。一例として、アプリケーションプログラム側でカスタム子コンテンツオブジェクトとしてスクロールバー要素を備え、そのアプリケーションプログラムに特有の外観と挙動を表すようにするものがある。さらに、アプリケーションは、CDWM APIを使用してストックフレーム要素のうちの1つまたは複数を取り除くか、または再配置することを選択することができる。アプリケーションは、単一の1次コンテンツ領域に限られる必要はないが、これは従来技術では広く見られる制限である。
CDWMは、単一ウィンドウに関連付けられた複数のアプリケーション作成および描画コンテンツ領域をサポートすることができる。アプリケーションに固有のユーザエクスペリエンスを提供する機能を備えるために、本発明の1つまたは複数の実施形態では、CDWMは、ウィンドウを描画する仕方に、柔軟性を与えるものとなっている。つまり、CDWMでは、各アプリケーションを単一の矩形のクライアントコンテンツ領域に制限するのではなく、アプリケーション側でそれぞれ任意の形状を持つ複数のカスタムコンテンツオブジェクトを定義できるようにすることで、アプリケーションがウィンドウの既定の構成を変更することを可能とする。
したがって、各CDWMウィンドウは、基本コンテンツオブジェクト(つまり、フレーム)および1つまたは複数の子コンテンツオブジェクトのコレクションで構成することができる。各コンテンツオブジェクトは、唯一の一組のコンテンツ属性により定義することができ、またオプションによりキーボードおよびマウスイベントを受け取るように構成することができる。CDWMは、アプリケーションで定義されたコンテンツに局所的な3D座標に関してマウスのヒットテスト点をマッピングし、マウスイベント通知をアプリケーションに送る。コンテンツオブジェクトは、システムにより完全に管理できるか、またはカスタムコンテンツ要素の場合には、アプリケーションにより管理することができる。システム管理されたコンテンツオブジェクトの例としては、アプリケーション指示アイコン、フレームボタン(例えば、最小化、元に戻す、閉じる)、キャプションテキスト、ならびに所定のメニューバーおよびスクロールバーがある。アプリケーション管理されたコンテンツオブジェクトは、アプリケーションが1次ビジュアル出力を描画するコンテンツオブジェクト、例えば、ワードプロセッサによるテキスト、表計算アプリケーションによる数値グリッド、写真編集アプリケーションによる画像がある。
コンテンツテクスチャは、システムにより管理されるビットマップであるか、またはカスタムコンテンツの場合では、アプリケーションである。コンテンツテクスチャは、1回の反復でコンテンツジオメトリに直線的にマッピングすることができる。アスペクト比は、コンテンツジオメトリにより決定することができ、テクスチャ座標はコンテンツジオメトリで公開することができる。コンテンツの倍率は、コンテンツテクスチャのジオメトリへのマッピングに影響を及ぼす拡大縮小変換により制御することができる。CDWMは、システムに備えられているメニューオプション、スライダコントロール、および/またはマウスとキーボードの組み合わせなど、ユーザがそれにより拡大縮小係数(zoom factor)を調整することができる既定の対話的メカニズムを備えることができる。
各再描画の前に、システムは、アプリケーション(またはストックコンテンツオブジェクトの場合にはシステム)の裁量により、拡散テクスチャがピクセル毎のアルファをサポートする形式であるコンテンツサーフェスをゼロアルファ(zero alpha)に初期化することができる。したがって、下にある基本コンテンツオブジェクトは、コンテンツサーフェスの描画されていない領域に表示することができる。これは、アプリケーションが描画する前にコンテンツサーフェスを消去する必要がないため、プログラミングモデルおよびユーザエクスペリエンスの両方を強化し、ユーザはウィンドウ内のフリッカーおよび陳腐なまたは描画されていない領域を免れる。
いくつかの実施形態では、所定のコンテンツオブジェクト、特にアプリケーションがその1次グラフィック出力を描画するコンテンツオブジェクトは、それらに関連するマテリアルプロパティを持たない場合があるが、それは、ユーザの気を散らす方法でまたはユーザの活動に干渉する別の方法で、コンテンツを光または環境と相互作用させることが望ましくないからである。コンテンツオブジェクトのビジュアルな外観は、このような実施形態においてそのテクスチャ、ジオメトリ、および場合によっては頂点毎もしくはピクセル毎のアルファ値だけにより決定することができる。
図6は、本明細書で説明しているような動的非標準構成を持つウィンドウ601の一例を示している。ウィンドウ601は、非標準形状(つまり、非矩形)の基本フレームオブジェクト603、非標準位置(ウィンドウの右上角以外の位置)に配置されている非標準形状(矩形でない)のフレームボタンオブジェクト605、非標準位置(ウィンドウの左上角以外の位置)にあるシステム提供の指示(indicative)フレームアイコンオブジェクト607、および非標準位置(フレームの上段で左寄せされていない)にもあるフレームウィンドウキャプションオブジェクト613を有する。図6では、ウィンドウに関連付けられているアプリケーションは、2つの1次コンテンツオブジェクト領域615aおよび615bを定義している。1次コンテンツオブジェクト領域615aは、規則正しい形状(つまり、矩形)であるが、1次コンテンツオブジェクト領域615bは、不規則な、非矩形形状である。ウィンドウ601は、例えばブラウズする状況において、それぞれ戻るおよび進むナビゲーションコントロールを備える、アプリケーションにより定義されるフレームボタンオブジェクト617および619を含むこともできる。
CDWMは、アプリケーションウィンドウ301の基本部分を3次元(3D)オブジェクトとして描画することができる。3Dメッシュプリミティブは、ウィンドウブジェクトの形状(基本ジオメトリ)を定義するために使用することができ、1次拡散テクスチャ(primary difuse texture)は、メッシュの3Dジオメトリにマッピングすることができ、照明(lighting)、シェーディング、屈折、ぼかし、ならびに補助テクスチャを含む他の特殊効果パラメータおよびリソースを含むことができるオプションのマテリアルプロパティは、描画プロセス実行時に適用することができる。補助テクスチャは、この技術分野で周知のグラフィック効果のためのリソースとして使用され、デスクトップ環境内の光源、カーソル、およびその他のUIオブジェクトとの「ライブの(live)」物理的にモデル化された相互作用を実現することができる。したがって、テクスチャは、ピクセル毎の3D通常情報源(通常/バンプ マッピング)、ライトマスク(環境光、拡散光、および鏡面光のフィルタ)、反射源(例えば、ウィンドウ上で動かしたときのカーソルの反射)、静的環境マップなどとして役立つことができる。
基本ジオメトリの頂点形式は、オプションにより、ARGB形式の32ビットの拡散カラー成分とテクスチャ座標ペア{tu,tv}を含み、上述のように、最大n個までのテクスチャをメッシュジオメトリにマッピングすることができる。当技術分野で確立しているように、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面のうちの1つの量に等しい量により補正(offset))を決定する。各頂点のサイズ変更動作での挙動の仕方は、頂点毎、次元毎に頂点自体に関連付けられたプロパティとして記述するか、またはジオメトリに関して全体としてメッシュに対し定義することができる。後者の方法の一例は、6つのサイズ設定(sizing)マージン平面を定めるベクトルのペア{mxleft,mytop,mzfront,mxright,mybottom,mzback}であり、それぞれメッシュ境界ボックスの1面に関連付けられ、実際には、境界ボックスの体積を27個の立方体部分領域に分割している。サイズ設定マージン値は、メッシュのサイズに関係なく一定にするか、または境界ボックスの初期サイズに基づいて計算することができる。任意のメッシュサイズ変更動作では、上、左、前の立方体部分領域({xleft,ytop,zfront,mxleft,mytop,mzfront}により囲まれている)内の頂点は、境界エクステントの上−左−前の角と同じ大きさおよび方向により補正される。真ん中の立方体部分領域({mxleft,mytop,mzfront,mxright,mybottom,mzback}で囲まれている)にある頂点は、その部分領域の新しいエクステントに関して拡大縮小される。前、中心の立方体部分領域内にある頂点は、xおよびy次元のその部分領域の新しいエクステントに関して拡大縮小されるが、メッシュの前Z境界平面と同じ大きさで、かつ同じ方向に変位される。
上述の原理を分かりやすくするために、図7では、2次元空間内のメッシュサイズ変更動作の一例を示している。ウィンドウ701は、角の半径707がある丸型の角を持つ。ウィンドウサイズ変更動作が単に、ウィンドウのベースとなるメッシュを拡大縮小するだけであれば、角の半径はメッシュとともに拡大縮小する。しかし、角の丸みが拡大縮小された場合、丸くなっている角の半径が大きすぎたり小さすぎたりし、ユーザエクスペリエンスを損ない、ユーザインターフェースの使い勝手を悪化する可能性がある。そこで、ウィンドウ701がサイズ変更されても、角の丸みは変化しないのが好ましい。角の丸みが拡大縮小されないようにするため、メッシュを1つの次元について3セグメント(適宜x、y、z)に分割することができる。そこで、本例では、ウィンドウは9つの象限(quadrant)703a〜iに分割される。3D空間では、ウィンドウは、27個の領域に分割することができる。それぞれの次元は、等分に分割するか、または不均等に分割し、それにより、サイズ均等の領域またはサイズ不均等の領域を容認することができる。領域がサイズ不均等であれば、境界ボックスにより囲まれた領域は、拡大縮小すべきでないマテリアルを含むのに必要なだけ小さくすることができる。
ウィンドウサイズ変更動作では、象限は、この象限が境界ボックスにより囲まれている各次元で補正され、象限が領域仕切(region divider)705a〜dにより囲まれている各次元で拡大縮小される。例えば、領域703a、703c、703g、および703iは、XおよびYの両方の次元で少なくとも1つの側面で境界ボックスにより囲まれ、領域703a、703c、703g、および703i内のメッシュ頂点は、ウィンドウがサイズ変更されるのと同じ、境界ボックスからのオフセットを保持する。領域703bおよび703hは、Y(垂直)次元では少なくとも1つの側面で境界ボックスにより囲まれるが、X(水平)次元では領域仕切705によってのみ囲まれる。そこで、領域703bおよび703h内のメッシュ頂点は、Y次元でオフセットを保持するが、X次元では拡大縮小される。領域703dおよび703fは、X(水平)次元では少なくとも1つの側面で境界ボックスにより囲まれるが、Y(垂直)次元では領域仕切705によってのみ囲まれる。そこで、領域703dおよび703f内のメッシュ頂点は、X次元でオフセットを保持するが、Y次元では拡大縮小される。領域703eは、X次元とY次元の両方で、仕切線705により囲まれ、領域703e内に入るメッシュ頂点は、X次元とY次元の両方で拡大縮小される。当業者であれば、前の段落で説明しているように、Z次元を含めることによりこのアルゴリズムを3次元に拡張できることを理解されよう。
メッシュサイズ変更フィルタ関数の別の形態では、頂点の位置が任意の方向で拡大縮小または補正するかを判別するために、サイズ設定マージンなどの大域的な幾何学的構造に依存せず、手書きの(hand−authored)頂点メタデータを解釈することができる。このような関数は、メッシュサイズ変更時に尾根と谷などの複雑なサーフェストポロジーを保存するために使用することができる。メッシュサイズ変更フィルタ関数の別の形態では、各次元で頂点を直線的または非直線的に変位させることができ、区別ビット(discrimination bits)および関数係数(function coefficients)は頂点毎のメタデータとして格納される。このような関数では、メッシュサイズ変更に付随して、直線的もしくは非負直線的、局所化された、または一般化された膨張もしくは潰れなどの効果を可能にする。
基本コンテンツマージンは、子コンテンツが制約される境界を定義する。コンテンツマージンは、サイズ設定マージンと同じようにして定義された3次元境界とすることができる。しかし、サイズ設定マージンとは異なり、コンテンツマージンは、ウィンドウのスケールに合わせて直線的に拡大縮小することができ、メッシュサイズ変更には影響を及ぼさないかもしれない。
抽象マテリアルプロパティの値に応じて指定された、ローカルおよびデスクトップの大域的リソースおよびパラメータは、ピクセルシェーダと組み合わせることで、CDWMが物理的モデル化デスクトップコンテンツの描画を実施するためのデータおよびメカニズムを含む。
高水準コンテンツマテリアルプロパティでは、コンテンツが光および周囲環境と相互作用する仕方を定義する。すりガラスなどの複雑なマテリアルの描画では、ビデオハードウェアでは元々サポートしていない手法を使用することがある。結果として、CDWMは、少数の定義済みピクセルシェーダのうちの1つを使用してマテリアルプロパティを実装する。ピクセルシェーダは、メッシュプリミティブ内の光源、テクスチャ、および頂点だけでなく変換およびメトリクスなどのパラメータも含む、定義済みのリソースの集まりに基づいて、表示前にピクセルの値を操作する表示ハードウェアにロードされる小さなルーチンである。CDWMは、定義済みピクセルシェーダのコレクションの中から、特定のオブジェクトマテリアルプロパティの集合を描画するのに適したシェーダを選択することができ、これらは環境色(強さおよび透明度)、拡散色(強さおよび透明度)、鏡面色(強さおよび透明度)、反射スカラ、屈折率、拡散テクスチャ、ならびにバンプテクスチャを含み、それぞれにいて後述する。デスクトップグローバルプロパティを使用することにより、目の位置、大域的光源、環境マップなどの大域的環境プロパティを定義することができる。これらのデスクトップグローバルプロパティを定義するリソースおよびパラメータを、基本ウィンドウマテリアルプロパティとともに、ウィンドウ描画直前のアクティブピクセルシェーダへのパラメータとして3Dグラフィックスインターフェースに送ることができる。
環境色は、すべての方向からオブジェクトのサーフェスに当たる光をシミュレートするものである。CDWM管理されたUIコンテンツオブジェクトに適用可能なマテリアルプロパティとして、環境の強さは、オブジェクトのサーフェスと接触する環境光の相対的量を決定し、32ビットARGB値を使用して、環境色と透明度を指定することができる。
例示されている一実施形態では、環境の強さは0.0(環境光量0では、一様に黒の外観が与えられる)から1.0(オブジェクト上に一様に分散されている指定された色の最大の強さ)の範囲である。白い環境色を持つ環境の強さの効果により、オブジェクトの一般的明度の制御を可能とする。
拡散の強さは、オブジェクトのサーフェスに接触した後すべての方向に散乱する有向光の量を決定する。光自体は、1つまたは複数の指向性の光または立方体ライトマップ(cubic light map)のいずれにかによって与えられる。CDWM管理されたUIコンテンツオブジェクトに適用可能なマテリアルプロパティとして、拡散色は、乱反射した光の透明度がアルファ成分により指示される、色を指示する32ビットARGB値により指定することができる。拡散の強度値は0.0(光が乱反射せず、オブジェクトに一様に黒い外観が与えられる)から1.0(すべての光が反射され、拡散色値に応じてオブジェクトに陰影付の外観が与えられる)までの範囲である。照明が当たったサーフェスは、環境と拡散の強度値の合計が1.0に近づくにつれてよりリアルにモデル化されているように見える。
鏡面の強さでは、オブジェクトのサーフェスから見る人に直接反射される光の量を制御し、鏡面色は、オブジェクトのARGB色として指定することができる。光源自体は、1つまたは複数の指向性の光または立方体のライトマップの形態とすることができる。CDWM管理されたUIコンテンツオブジェクトに適用可能なマテリアルプロパティとして鏡面の強さの値を大きくすることにより、鮮明なハイライトで光沢のあるサーフェスをモデル化することができるが、値を小さくした場合は、ハイライトがかすかであるか、または全くない、つや消しのサーフェスをモデル化することができる。色のアルファ成分により、鏡面ハイライトの透明度が決定される。
反射率(reflectivity)も、鏡面反射率(specularity)のように、オブジェクトのサーフェスから見る人に向かって直接反射される光の量を決定する。反射が鏡面反射率と異なるのは、反射が光源だけでなく環境全体に適用されるという点である。CDWM管理されたUIコンテンツオブジェクトに適用可能なマテリアルプロパティとして反射率の値が0.0だと、サーフェスにおける環境の反射はなく、値が1.0だと、サーフェスにおける環境の反射は鏡のようになる。環境は、立方体環境マップとマウスカーソルとの組み合わせを使用してモデル化することができる。したがって、マウスカーソルだけでなく環境の静的特徴もウィンドウサーフェスから反射されるようにでき、ある程度反射の強さのスカラで制御される。
各オブジェクトの屈折率は、オブジェクトを通過する光の出射角を決定する。nsinθ=nsinθというスネルの法則を使用することができるが、ただし、nおよびnは、媒体1および2の屈折率、θおよびθは、それぞれ、サーフェス法線に対する光の入射角と出射角である。したがって、媒体1が割り当てられた屈折率が1.0(屈折なし)のデスクトップ環境を表し、媒体2がウィンドウ基本オブジェクトの媒体であれば、屈折角はθobj=sin−1(sinθenv/nobj)で求められる。シミュレートできるさまざまな媒体の知られている屈折率を以下の表1に示す。
Figure 2007522535
屈折角が決定され/計算されると、これを使用して、他のマテリアルプロパティに関連するさらなる処理に続いてオブジェクトの可視サーフェス上に描画する適切なピクセルを背景から選択することができる。屈折のリアルタイムの描画を目的とする最適化では、フレネルの方法、つまり当業者に周知の方法を組み込むことができる。
ビジュアルスタイル(テーマ)を使用して、CDWMのビジュアルおよび挙動ポリシーを定義することができる。ビジュアルスタイルとは、一般に、共通のユーザインターフェース要素に適用される手書きでデザインした精密なグラフィックスおよび挙動属性を指定するユーザ選択可能なテーマを指す。アプリケーションのオプションによりこれらの属性の一部をオーバーライドすることができるが、他の属性は、ユーザインターフェースの整合性のためにシステムにより選択的に強制される。ビジュアル属性は、フレーム領域(基本コンテンツ)、非クライアントボタン、およびその他のアプリケーション独立の要素などの共通ウィンドウコンテンツの外観を含む。挙動属性は、ウィンドウおよびデスクトップ遷移アニメーションを含み、このとき、ウィンドウは、マウス(例えば、素早く動く(snap)、接着して伸ばす(glue and stretch)、および制約(constraint))、およびその他のアプリケーション独立の挙動で対話的に移動またはサイズ変更される。ビジュアルおよび挙動ポリシーは、そのポリシーをソフトウェア描画パイプライン全体に分散させるのではなく、CDWM内に一括して配置することができるため、エンドユーザのエクスペリエンスがより整合性のあるものとなり、開発環境が簡素化される。
本発明の例示されている一実施形態によれば、ビジュアルスタイルの既定の(またはカスタムの)テクスチャは、各ピクセルが修正されたものに基づくアルファレベルおよび/またはビットマップを含むことができる。例えば、当技術分野で知られているように、アルファレベルを使用して透明度レベルを修正することができる。さらに、テクスチャは、クライアントおよび/または非クライアント領域、あるいはクライアントおよび/または非クライアント領域の一部のピクセルシェーディングに使用するビットマップを含むことができる。例えば、例示されている一実施形態では、このビットマップは、すりガラスの外観を与えることができる。図5は、すりガラスフレーム503で描画されたウィンドウ501を例示しており、ウィンドウフレーム503の背後のコンテンツからどのピクセルを表示するべきかを決定する際にガラスをシミュレートするため屈折率を指定することができる。グラフィックス描画エンジンの高度なテクスチャ機能、照明、および3D機能を活用し、適切なビットマップを使用することにより、CDWMは、3Dデスクトップ環境内のオプション指定された仮想光源からの光を反射するが、クライアントコンテンツが見えにくくならないように不透明のクライアントコンテンツ領域を有する、すりガラスの外観を有するフレーム503でウィンドウ501を合成することができる。
デスクトップ描画モデル(無効化対合成(invalidation versus compositing))は、それぞれ、アプリケーションプログラムのウィンドウがデスクトップ上に適切に保持されるようにアプリケーションプログラムと対話するための固有のスキーマを持つ。例えば、無効化モデルでは、デスクトップ描画は、ウィンドウの「クリッピング領域」の管理および連続更新に依存する。クリッピングは、描画をウィンドウの該当する領域に制限するプロセスである。一方のウィンドウが他方のウィンドウで一部隠されると、クリッピング領域はその隠された領域の反転に対応する。下にあるウィンドウでそのコンテンツが描画される場合、描画メッセージに対する応答であろうと、要求に基づかない方法であろうと、無効化モデルDWMでは、そのクリッピング領域が出力に適用され、描画が上に載るウィンドウ内で必ず発生しないようにする。上に載るウィンドウが移動した場合、または下にあるウィンドウがZオーダの最上位に来た場合、下にあるウィンドウのクリッピング領域は、それに応じて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では、別々のレガシAPI要素を使用して、アプリケーションの代わりにCDWMへのさまざまなレガシ通知を処理し、関連する状態情報をCDWMに転送し、入力およびフォーカスの決定についてレガシ座標空間とCDWM座標空間との間の変換を行うことができる。レガシDWMは、後述のように、CDWMにデータをリダイレクトするように修正することができる。
図4は、本発明の例示されている一態様によるウィンドウ合成方法の一部を示す図である。ステップ401〜409は、ソース描画サーフェス(またはサーフェスを生成するために要求される命令があれば集合(set))が、レガシウィンドウマネージャ192aから取得されるレガシアプリケーションウィンドウと関連付けられたコンテンツの初期描画を表している(図1B)。ステップ411〜419は、合成を意識したアプリケーションプログラムにより作成されたウィンドウコンテンツの描画を例示している。
ステップ401において、アプリケーションがそれのために設計された無効化モデルに従って、レガシアプリケーションがレガシAPI192bを呼び出してデスクトップ上にウィンドウ描画した結果として、CDWMは、レガシウィンドウマネージャから1次ウィンドウコンテンツの初期更新通知を受け取る。例えば、Microsoft(登録商標)Word(登録商標)XPは、レガシAPIを呼び出し、その結果レガシDWM192aが、ユーザにより入力されたテキストを描画することができる。ステップ403で、CDWMは、テーママネージャからコンテンツの既定のメッシュを取り出す。ステップ405で、CDWMは、レガシウィンドウマネージャからリダイレクトサーフェスを取り出す(または生成する)。このサーフェスは、コンテンツの拡散テクスチャとして使用することができる。ステップ407で、CDWMは、レガシテクスチャの所望の領域のみが保持され、レガシウィンドウフレーム、枠、および/またはキャプションを含む領域が描画されないようにする。これを都合よく実行する方法として、所望の領域のみがメッシュのxおよびy境界エクステントにマッピングされるように、メッシュのテクスチャマッピング座標を変換することによる方法がある。ステップ409で、CWDMは、コンテンツに対する既定のマテリアルプロパティを取り出す。レガシコンテンツを描画するために必要なリソースおよびパラメータはすでに集められている。
ステップ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環境でコンテンツを反映し、仮想光源を示すスペクトルハイライトを含み、「すりガラス」の枠の背後のコンテンツがそれに応じて少し補正され、ビットマップが1つまたは複数のピクセルシェーダを介して適用され下にあるコンテンツの歪みをもたらすようにガラスに似た屈折率をシミュレートするという点ですりガラスに似た挙動をウィンドウフレームがする。
すりガラスまたは他のガラスに似た物理的にモデル化されたオブジェクトは、グラフィカルユーザインターフェースのユーザに多くの利点を提供する。例えば、ガラスの審美的外観は、GUIを強化し、ユーザに明るいオープンな感じを与えることによりエンドユーザにとって本発明のGUIが他のオペレーティングシステムのGUIよりも望ましいものとなるリッチなユーザエクスペリエンスを提供する。それと同時に、ガラスの真の特性またはそれに近い特性を持つ物理的にモデル化されたすりガラスは、機能的な利点も持つ。
すりガラスの外観を持たせると、マルチウィンドウ環境でユーザがウィンドウのレイヤの順序を理解するのに役立つ。シェーディング、反射、および鏡面ハイライトは、デスクトップ上の深さとレイヤのより強い感覚を引き起し、ユーザがデスクトップ上のさまざまなウィンドウのZオーダを判別することを助ける。いくつかの知られているシステムでは、一様な透明性をウィンドウ全体に適用しているが、これだとユーザは注目しているウィンドウ内にどのようなコンテンツがあるのか、ウィンドウの背後にどのようなコンテンツがあるのかを容易に認識できないであろう。この一様なピクセル毎の透明性をZオーダの関数として変化させることにより、問題を改善することが可能であるが、その方法は不自然であり直感的ではない。むしろ、本発明では、それぞれのデスティネーションピクセルを生成する過程で複数の囲んでいるソースピクセルをサンプリングする調節可能なぼかしアルゴリズムをピクセルシェーダに組み込み、このシェーダをウィンドウフレームを描画するプロセスで実行することにより、現実世界のすりガラスの材質の欠陥から生じる光散乱挙動をモデル化する。ユーザが背景と前景のコンテンツとを瞬時に区別できるようにするのは、背景のこの物理的にモデル化された歪みである。また、この効果は累積的なので、重なり合うすりガラスウィンドウフレームは、前景から背景へと徐々に歪んでゆく。したがって、ユーザはすりガラスウィンドウフレームの複数のレイヤの下にある背景コンテンツを直感的に区別することができる。
すりガラスは、より太い枠線を使用して、例えば、ユーザがウィンドウの移動またはサイズ変更を行うためにウィンドウの枠をマウスで掴み、しかも、(ガラスは透明または半透明であるため)ウィンドウの下にあるコンテンツを遮らないことを容易にすることにより、GUIを用いたユーザの対話操作を容易にする。さまざまなすりガラス効果を利用することにより、アクティブなウィンドウ状態と非アクティブなウィンドウ状態とをユーザが簡単に区別するようにできる。さらに、すりガラスにより、ユーザはいつでもより広い画面領域を見ることができ(すりガラスは半透明または透明なので)、デスクトップはガラスが表示画面上で邪魔にならない要素なのであまり散らかっているようには見えないため、ユーザは容易に画面上のコンテンツを読み、かつ/または見ることができる。
当業者であれば、図はすりガラスの特定の例を示しているが、本発明はそれらに限られないことは理解されるであろう。すりガラスの外観は、異なるビットマップおよび/または異なるピクセルシェーダを外観の描画に適用することにより容易に変えることができる。さらに、異なる環境変数を適用する(例えば、反射および鏡面ハイライトに影響を及ぼす、光源を別のものにする)か、またはガラスの仮想物理特性(例えば、屈折率、反射率など)を変えて、すりガラスの外観にも影響を及ぼす。本発明は、他のテクスチャおよび複合物、例えば、金属、プラスチック、紙、コットン、ならびにその他の天然および合成材料をシミュレートすることにも使用できることは理解されるであろう。
本発明は、本発明を実施するこの好ましい方法を含む特定の実施例に関して説明してきたが、当業者であれば、上述のシステムおよび技術のさまざまな変更形態および置換があることを理解されよう。そこで、本発明の精神および範囲は、添付の特許請求の範囲で規定されているとおり広い意味で解釈すべきである。
本発明の例示的な実施形態の1つまたは複数の態様に使用できる動作環境を示す図である。 合成デスクトッププラットフォームの例示的な実施形態におけるコンポーネント間の機能およびサービスの分配を示す図である。 本発明の例示的な態様による合成方法を示す図である。 本発明の例示的な態様によるウィンドウを示す図である。 本発明の例示的な態様によるウィンドウ合成方法の一部を示す図である。 本発明の例示的な態様により描画されるすりガラスフレーム付きのウィンドウを示す図である。 動的なウィンドウ構造をもつウィンドウを示す図である。 メッシュのサイズ変更の間に使用される領域を示す図である。
符号の説明
120 処理装置
121 システムバス
130 システムメモリ
134 オペレーティングシステム
135 アプリケーションプログラム
136 その他のプログラムジュール
137 プログラムデータ
140 固定の、不揮発性メモリインターフェース
144 オペレーティングシステム
145 アプリケーションプログラム
146 その他のプログラムモジュール
147 プログラムデータ
150 取り外し可能の、不揮発性メモリインターフェース
160 ユーザ入力インターフェース
170 ネットワークインターフェース
171 ローカルエリアネットワーク
172 モデム
173 ワイドエリアネットワーク
180 リモートコンピュータ
182 リモートアプリケーションプログラム
183 ビデオアダプタ
184 モニタ
185 デジタイザ
187 出力周辺インターフェース
188 プリンタ
189 スピーカ
190 合成デスクトップウィンドウマネージャ
190a アプリケーションプログラミングインターフェース
190b サブシステムプログラミングインターフェース
190c UIオブジェクトマネージャ
191 アプリケーションソフトウェア
192 レガシグラフィカルユーザインターフェースサブシステム
192a レガシウィンドウマネージャ
192b レガシグラフィックスデバイスインターフェース
193 テーママネージャ
194 ユニバーサル合成エンジン(UCE)
194a プログラミングインターフェース
194b リソースマネージャ
194c 要求キュー
194d 描画モジュール
195 3Dグラフィックスインターフェース(Direct3D、OpenGLなど)
196 ビデオドライバデバイスオブジェクト
197 表示装置

Claims (34)

  1. 表示装置に表示されるデスクトップ表現を描画するためのウィンドウを定義するデータ構造を格納するコンピュータ読み取り可能な媒体であって、
    前記ウィンドウの基本コンテンツオブジェクトの基本コンテンツオブジェクトプロパティを格納する第1のデータフィールドと、
    複数の個別の1次コンテンツオブジェクトのコンテンツオブジェクトプロパティを格納する第2のデータフィールドとを備えることを特徴とするコンピュータ読み取り可能な媒体。
  2. 前記第1のデータフィールドは、基本ジオメトリを含む基本オブジェクトプロパティを格納するように細分されることを特徴とする請求項1に記載のコンピュータ読み取り可能な媒体。
  3. 前記第1のデータフィールドは、基本コンテンツマージン、基本エクステント、および基本マテリアルを含む基本オブジェクトプロパティを格納するように細分されることを特徴とする請求項1に記載のコンピュータ読み取り可能な媒体。
  4. 前記第1のデータフィールドは、さらに、メッシュを定義する複数の頂点を含む基本ジオメトリプロパティを格納するように細分されることを特徴とする請求項2に記載のコンピュータ読み取り可能な媒体。
  5. 前記第1のデータフィールドは、さらに、環境色、拡散色、および鏡面色を含む基本マテリアルプロパティを格納するように細分されることを特徴とする請求項3に記載のコンピュータ読み取り可能な媒体。
  6. 前記環境色、拡散色、および鏡面色はそれぞれARGB値として定義されることを特徴とする請求項5に記載のコンピュータ読み取り可能な媒体。
  7. 前記第1のデータフィールドは、さらに、反射スカラおよび屈折率を含む基本マテリアルプロパティを格納するように細分されることを特徴とする請求項3に記載のコンピュータ読み取り可能な媒体。
  8. 前記第1のデータフィールドは、さらに、拡散テクスチャおよびバンプテクスチャを含む基本マテリアルプロパティを格納するように細分されることを特徴とする請求項3に記載のコンピュータ読み取り可能な媒体。
  9. 前記第2のデータフィールドは、さらに、それぞれの1次コンテンツオブジェクトに対するコンテンツジオメトリおよびコンテンツサーフェスを格納するように細分されることを特徴とする請求項1に記載のコンピュータ読み取り可能な媒体。
  10. 前記第2のデータフィールドは、さらに、それぞれの1次コンテンツオブジェクトに対するARGBテクスチャを含むコンテンツサーフェスプロパティを格納するように細分されることを特徴とする請求項9に記載のコンピュータ読み取り可能な媒体。
  11. プロパティが格納される複数のウィンドウについて、基本オブジェクトのプロパティおよび1つまたは複数の1次コンテンツオブジェクトのプロパティを含むウィンドウプロパティを格納するメモリと、
    プロパティが格納される各ウィンドウのウィンドウプロパティに基づいてデスクトップを構成する合成デスクトップウィンドウマネージャのソフトウェアモジュールとを備え、
    プロパティが格納される前記複数のウィンドウのうちの1つについて、前記メモリは複数の1次コンテンツオブジェクトを格納することを特徴とするデータ処理システム。
  12. 前記基本オブジェクトの前記プロパティは、基本ジオメトリを含むことを特徴とする請求項11に記載のデータ処理システム。
  13. 前記基本オブジェクトの前記プロパティは、基本コンテンツマージン、基本エクステント、および基本マテリアルを含むことを特徴とする請求項11に記載のデータ処理システム。
  14. 前記基本ジオメトリプロパティは、メッシュを定義する複数の頂点を含むことを特徴とする請求項12に記載のデータ処理システム。
  15. 前記基本マテリアルプロパティは、環境色、拡散色、および鏡面色を含むことを特徴とする請求項13に記載のデータ処理システム。
  16. 前記環境色、拡散色、および鏡面色はそれぞれ、少なくともARGB値により定義されることを特徴とする請求項15に記載のデータ処理システム。
  17. 前記基本マテリアルプロパティは、反射スカラおよび屈折率を含むことを特徴とする請求項13に記載のデータ処理システム。
  18. 前記基本マテリアルプロパティは、拡散テクスチャおよびバンプテクスチャを含むことを特徴とする請求項13に記載のデータ処理システム。
  19. 前記メモリは、少なくとも1つの1次コンテンツオブジェクトについて、コンテンツジオメトリおよびコンテンツサーフェスを格納することを特徴とする請求項11に記載のデータ処理システム。
  20. 前記コンテンツサーフェスは、ARGBテクスチャを含むことを特徴とする請求項19に記載のデータ処理システム。
  21. オペレーティングシステムのシェルのグラフィカルユーザインターフェースでウィンドウを表示するためのコンピュータによって実施される方法であって、
    アプリケーションプログラムのインスタンスからウィンドウ情報を受け取ることと、
    基本オブジェクトおよび複数の個別の1次コンテンツオブジェクトを有するウィンドウを描画することとを備えることを特徴とする方法。
  22. 描画することは、基本コンテンツマージン、基本エクステント、および基本マテリアルに基づくことを特徴とする請求項21に記載の方法。
  23. 描画することは、メッシュにより定義された基本ジオメトリに基づくことを特徴とする請求項21に記載の方法。
  24. 描画することは、環境色、拡散色、および鏡面色を含む基本マテリアルプロパティに基づくことを特徴とする請求項22に記載の方法。
  25. 前記環境色、拡散色、および鏡面色はそれぞれ、ARGB値として定義されることを特徴とする請求項24に記載の方法。
  26. 描画することは、反射スカラおよび屈折率を含む基本マテリアルプロパティに基づくことを特徴とする請求項22に記載の方法。
  27. 描画することは、拡散テクスチャおよびバンプテクスチャを含む基本マテリアルプロパティに基づくことを特徴とする請求項21に記載の方法。
  28. 描画することは、それぞれの1次コンテンツオブジェクトのコンテンツジオメトリおよびコンテンツサーフェスに基づくことを特徴とする請求項21に記載の方法。
  29. 描画することは、それぞれの1次コンテンツオブジェクトに対するARGBテクスチャを含むコンテンツサーフェスプロパティに基づくことを特徴とする請求項28に記載の方法。
  30. 前記ウィンドウのサイズを変更するユーザ入力を受け取ることと、
    前記メッシュをメッシュ次元毎に3つの領域に分割することと、
    領域毎に、前記領域を前記ウィンドウの境界ボックスで囲む任意の次元のメッシュの頂点のオフセットを保持し、前記領域を前記ウィンドウの前記境界ボックスで囲まない任意の次元のメッシュの頂点を拡大縮小することとをさらに備えることを特徴とする請求項23に記載の方法。
  31. 2つの1次コンテンツオブジェクトを有する、一部メッシュにより定義されるウィンドウのサイズ変更を行うための方法であって、
    前記メッシュをメッシュ次元毎に3つの領域に分割することと、
    領域毎に、前記領域を前記ウィンドウの境界ボックスで囲む任意の次元のメッシュの頂点のオフセットを保持し、前記領域を前記ウィンドウの前記境界ボックスで囲まない任意の次元のメッシュの頂点を拡大縮小することとを含むことを特徴とする方法。
  32. 前記領域は、等しいサイズであることを特徴とする請求項31に記載の方法。
  33. 前記領域は、等しいサイズでないことを特徴とする請求項31に記載の方法。
  34. 前記境界ボックスによって囲まれる前記領域は、拡大縮小すべきでないマテリアルを包含するのに必要なだけ小さいことを特徴とする請求項33に記載の方法。
JP2006536548A 2003-10-23 2004-07-28 デスクトップ表現を描画するためのウィンドウを定義するデータ構造を格納するコンピュータ読み取り可能な媒体、およびデータ処理システム Expired - Fee Related JP4808158B2 (ja)

Applications Claiming Priority (3)

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

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2010137115A Division JP4819175B2 (ja) 2003-10-23 2010-06-16 オペレーティングシステムのグラフィカルユーザインターフェース内でウィンドウを表示する方法

Publications (2)

Publication Number Publication Date
JP2007522535A true JP2007522535A (ja) 2007-08-09
JP4808158B2 JP4808158B2 (ja) 2011-11-02

Family

ID=34521879

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2006536548A Expired - Fee Related JP4808158B2 (ja) 2003-10-23 2004-07-28 デスクトップ表現を描画するためのウィンドウを定義するデータ構造を格納するコンピュータ読み取り可能な媒体、およびデータ処理システム
JP2010137115A Expired - Fee Related JP4819175B2 (ja) 2003-10-23 2010-06-16 オペレーティングシステムのグラフィカルユーザインターフェース内でウィンドウを表示する方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2010137115A Expired - Fee Related JP4819175B2 (ja) 2003-10-23 2010-06-16 オペレーティングシステムのグラフィカルユーザインターフェース内でウィンドウを表示する方法

Country Status (14)

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

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
US8704837B2 (en) 2004-04-16 2014-04-22 Apple Inc. High-level program interface for graphics operations
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
US7231632B2 (en) * 2004-04-16 2007-06-12 Apple Computer, Inc. System for reducing the number of programs necessary to render an image
US7248265B2 (en) * 2004-04-16 2007-07-24 Apple Inc. System and method for processing graphics operations with graphics processing unit
US7761800B2 (en) * 2004-06-25 2010-07-20 Apple Inc. Unified interest layer for user interface
US7490295B2 (en) * 2004-06-25 2009-02-10 Apple Inc. Layer for accessing user interface elements
US8566732B2 (en) 2004-06-25 2013-10-22 Apple Inc. Synchronization of widgets and dashboards
US8302020B2 (en) * 2004-06-25 2012-10-30 Apple Inc. Widget authoring and editing environment
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
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
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
US7903176B2 (en) * 2005-08-05 2011-03-08 Samsung Electronics Co., Ltd. Apparatus for providing multiple screens and method of dynamically configuring multiple screens
US7743336B2 (en) * 2005-10-27 2010-06-22 Apple Inc. Widget security
US8543824B2 (en) 2005-10-27 2013-09-24 Apple Inc. Safe distribution and use of content
US7954064B2 (en) 2005-10-27 2011-05-31 Apple Inc. Multiple dashboards
US9104294B2 (en) 2005-10-27 2015-08-11 Apple Inc. Linked widgets
US7752556B2 (en) 2005-10-27 2010-07-06 Apple Inc. Workflow 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
RU2009111002A (ru) * 2006-08-27 2010-10-10 Май Мобайл Вотч Лимитед (Cn) Мобильный телефон-часы для системы gsm
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
US8407605B2 (en) * 2009-04-03 2013-03-26 Social Communications Company Application sharing
US8397168B2 (en) 2008-04-05 2013-03-12 Social Communications Company Interfacing with a spatial virtual communication environment
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
CA2721174C (en) * 2008-04-17 2017-03-14 Microsystemes Dog Inc. Method and system for virtually delivering software applications to remote clients
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
EP2502153A4 (en) * 2009-11-16 2015-12-16 Citrix Systems Inc SYSTEMS AND METHODS FOR SELECTIVE IMPLEMENTATION OF PROGRESSIVE DISPLAY TECHNIQUES
CN102156999B (zh) * 2010-02-11 2015-06-10 腾讯科技(深圳)有限公司 一种用户界面的生成方法和装置
US9823831B2 (en) * 2010-04-07 2017-11-21 Apple Inc. Device, method, and graphical user interface for managing concurrently open software applications
US9058186B2 (en) 2010-04-07 2015-06-16 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
US9530243B1 (en) 2013-09-24 2016-12-27 Amazon Technologies, Inc. Generating virtual shadows for displayable elements
US9591295B2 (en) 2013-09-24 2017-03-07 Amazon Technologies, Inc. Approaches for simulating three-dimensional views
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
EP3639136B1 (en) * 2017-06-16 2023-07-19 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 (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09198524A (ja) * 1996-01-11 1997-07-31 Microsoft Corp 漸進的メッシュ
US5870088A (en) * 1996-05-09 1999-02-09 National Instruments Corporation System and method for editing a control via direct graphical user interaction

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
US5682550A (en) * 1995-06-07 1997-10-28 International Business Machines Corporation System for restricting user access to default work area settings upon restoration from nonvolatile memory where the settings are independent of the restored state information
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
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
US6466239B2 (en) * 1997-01-24 2002-10-15 Sony Corporation Method and apparatus for editing data used in creating a three-dimensional virtual reality environment
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
TW487879B (en) 2000-02-16 2002-05-21 Hotpaper Com Inc Internet document creation system and document-format generator therefor
AU2001276583A1 (en) 2000-07-31 2002-02-13 Hypnotizer Method and system for receiving interactive dynamic overlays through a data stream and displaying it over a video content
WO2002015128A1 (en) * 2000-08-18 2002-02-21 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 (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09198524A (ja) * 1996-01-11 1997-07-31 Microsoft Corp 漸進的メッシュ
US5870088A (en) * 1996-05-09 1999-02-09 National Instruments Corporation System and method for editing a control via direct graphical user interaction

Also Published As

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

Similar Documents

Publication Publication Date Title
JP4819175B2 (ja) オペレーティングシステムのグラフィカルユーザインターフェース内でウィンドウを表示する方法
US8059137B2 (en) Compositing desktop window manager
US7245310B2 (en) Method and apparatus for displaying related two-dimensional windows in a three-dimensional display model
US6931601B2 (en) Noisy operating system user interface
US20060107229A1 (en) Work area transform in a graphical user interface
US8432396B2 (en) Reflections in a multidimensional user interface environment
KR20160120343A (ko) 크로스 플랫폼 렌더링 엔진
GB2406770A (en) Displaying related two-dimensional windows in a three-dimensional display model

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070727

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100316

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100616

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110222

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110520

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110527

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110715

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110809

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110816

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140826

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4808158

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees