(57)【要約】  プロセスの消費に対して、グラフィックス又は画像を表現するグラフィックスコマンドを提供するシステム。グラフィックスコマンドが、オブジェクト及び当該オブジェクトを描写するリソースを含むビジュアルツリーによって表現される。オブジェクト及びリソースが、ビジュアルツリーに対して相似である相似コンポジションツリーを作成するコンポジションエンジンに対して伝達される。コンポジションツリーが使用され、グラフィックス又は画像をレンダリングする。
2009507306.tif 000002
【特許請求の範囲】
【請求項１】
ビジュアルツリーを描写するグラフィックスコマンドを修正する方法であって、
グラフィックスストリームのグラフィックスコマンドを受信するステップと、
前記グラフィックスストリームを開くステップと、
前記グラフィックスストリームを修正されたグラフィックスストリームに修正するステップと、
前記修正されたグラフィックスストリームを前記ビジュアルツリーに対して相似な修正されたコンポジションツリーを作成するコンポジションエンジンに渡すステップと
を有することを特徴とする方法。
【請求項２】
前記グラフィックスストリームの前記グラフィックスコマンドを受信するステップは、前記ビジュアルツリーを作り上げるビジュアルオブジェクト及びリソースを描写するデータパケットを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記開くステップは、アクセシビリティアプリケーションによって実行されることを特徴とする請求項１に記載の方法。
【請求項４】
前記開くステップは、前記コンポジションエンジンによってサポートされたアプリケーションに対するポインターを提供するステップを含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記修正するステップは、前記グラフィックスストリームにおける拡大操作を有することを特徴とする請求項１に記載の方法。
【請求項６】
前記グラフィックスストリームを読込みから閉じるステップを更に有することを特徴とする請求項１に記載の方法。
【請求項７】
前記閉じるステップは、前記閉じるステップが発生している前記コンポジションエンジンに対してメッセージを送信するステップを更に有することを特徴とする請求項６に記載の方法。
【請求項８】
前記グラフィックスストリームを修正するステップに関するコアに対してメッセージを提供するステップを更に有することを特徴とする請求項１に記載の方法。
【請求項９】
フレームワークとコンポジションエンジンとの間の通信方法であって、
前記フレームワークとコンポジションエンジンとの間の専用チャネルを作成するステップと、
前記チャネルを介してデータパケットを提供するステップであって、前記データパケットはグラフィックスの編集可能なモデルの要素の描写であるステップと、
前記コンポジションエンジンにおいて前記グラフィックスの前記編集可能なモデルを構築するステップと
を有することを特徴とする方法。
【請求項１０】
前記作成するステップは、前記フレームワークに状態情報を送信するためにコンポジションエンジンに対してバックチャネルを作成するステップを更に有することを特徴とする請求項９に記載の方法。
【請求項１１】
前記提供するステップは、前記データパケットをバッチするステップを更に有し、前記コンポジションエンジンは、前記データパケットの完全なバッチを受信したときのみ、前記編集可能なモデルを構築することを特徴とする請求項９に記載の方法。
【請求項１２】
前記提供するステップは、前記チャネルを介して前記データパケットを含むグラフィックスストリームを送信するステップを有することを特徴とする請求項９に記載の方法。
【請求項１３】
前記構築するステップに先立ち、前記データパケットに対してアクセス及び修正をするステップを更に備えることを特徴とする請求項９に記載の方法。
【請求項１４】
前記編集可能なモデルは、前記データパケットで表されるビジュアル要素及びリソースを含むツリーであり、コマンドが前記編集可能なモデルの構築ステップにおいて前記データパケットに提供されることを特徴とする請求項９に記載の方法。
【請求項１５】
１つ又は複数のアプリケーションプログラムからのグラフィックス及び画像を表すグラフィックスコマンドにアクセスするフレームワークと、
前記フレームワークから前記グラフィックスコマンドを受信し、ビジュアルツリーを作成するコアと、
前記ビジュアルツリーのオブジェクト及びリソースを表現する前記コアからデータパケットを伝達するチャネルと、
前記チャネルに接続され、前記ビジュアルツリーに対して相似であるコンポジションツリーを作成するコンポジションエンジンと
を備えることを特徴とするシステム。
【請求項１６】
前記コアは、階層的なビジュアルオブジェクト及びリソースを作成することによって前記ビジュアルツリーを作成し、前記リソースは、前記ビジュアルオブジェクトを描写することを特徴とする請求項１５に記載のシステム。
【請求項１７】
前記チャネルは、前記コア及びコンポジションエンジンへの専用チャネルであることを特徴とする請求項１５に記載のシステム。
【請求項１８】
前記チャネルは、前半及び後半で構成され、アプリケーションを前記前半と前記後半との間で実装可能であることを特徴とする請求項１５に記載のシステム。
【請求項１９】
バックチャネルを更に備え、前記コンポジションエンジンは、前記バックチャネルを介して前記コアにメッセージを送信することを特徴とする請求項１５に記載のシステム。
【請求項２０】
前記システムは、トランスマシンシステム、トランスプロセスシステム、又はトランススレッドシステムのうちいずれか１つであることを特徴とする請求項１５に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高レベルグラフィックスシステムに関する。
【背景技術】
【０００２】
アプリケーションプログラム又はプロセスが、ディスプレイする画像又はグラフィックスを提供するとき、アプリケーションプログラム又はプロセスは、グラフィックスコマンドをオペレーティングシステムコンポーネント又は画像若しくはグラフィックスをレンダリングするグラフィックスコマンドを使用する他のプロセスに送信するかもしれない。グラフィックスコマンドは、上位レベルグラフィックスコマンド又はプリミティブとも呼ばれ、色、線、形状、及び他のグラフィックスの構成概念を指定又は定義することができる。オペレーティングシステムコンポーネント又はグラフィックスコマンドを受信するプロセスは、グラフィックスコマンドを、ディスプレイデバイス上にグラフィックスをレンダリングするために使用される個々のピクセル値又はビットマップのような下位レベルグラフィックス情報に翻訳又は変換することができる。
【０００３】
グラフィックスコマンドの例は、「Graphical Device Interface」、「Graphics Device Interface」、又は「Graphics Display Interface」を表すＧＤＩである。ＧＤＩの実装において、インタフェース（すなわち、ＧＤＩインタフェース）は、グラフィックスコマンドを受信するコンポーネント又はプロセスの一部であってもよく、又はそれらを支援する。具体的には、ＧＤＩインタフェースは、アプリケーションから、画像又はグラフィックスを描くためのパラメータを受信する。ＧＤＩインタフェースは、モニター又はプリンターなどのディスプレイ又は出力デバイスに画像を順次レンダリングするプロセス又はコンポーネントに、コマンドを送信することによって、画像を形成する。
【０００４】
いくつかの実装において、このようなグラフィックスコマンドを送信するアプリケーションプログラム又はプロセスは、グラフィックスコマンドを受信するオペレーティングシステムコンポーネント又はプロセスをホストするデバイス又はコンピュータとは別のデバイス又はコンピュータ上に存在する。これらの実装は、トランスマシンシステム（trans-machine systems）と呼ぶことができ、例として、アプリケーションが中央サーバコンピュータ上に存在し、リモートクライアントコンピュータがローカルに（すなわち、クライアントコンピュータで）レンダリングされたグラフィックスコマンドを受信するターミナルサービスシステムが含まれる。他の実装では、グラフィックスコマンドを受信するアプリケーションプログラム及びオペレーティングシステムコンポーネント（プロセス）は、同じデバイス又はコンピュータ上に存在し、トランスプロセスシステム（trans-process systems）と呼ぶことができる。他の実装では、同じプロセスを使用してグラフィックスコマンドを送信してもよいが、このような実装は、グラフィックスコマンドを渡す異なるスレッドを使用しても良い。これらの実装は、トランススレッドシステム（trans-thread systems）と呼ぶことができる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
トランスマシン、トランスプロセス、又はトランススレッドであるかという特定の実装又はシステムに関係なく、アプリケーションプログラムによって送信されるグラフィックスコマンドは通常、一時的なものである。言い換えれば、グラフィックスコマンドが処理のためにアプリケーションによって一度送信され受信されると、グラフィックスコマンドは直ぐに消費され、又は処理される。これは、ＧＤＩが使用される場合に特に当てはまり、インタフェースはパラメータを受信してグラフィックスコマンドを作成し、グラフィックスコマンドは直ぐに消費される。従って、特定のグラフィックス又は画像を消失した場合、アプリケーションプログラム又はプロセスは、グラフィックスコマンド（又は、パラメータ）を受信コンポーネント又はプロセスに再送する。なお、グラフィックスコマンドは、グラフィックスコマンドが受信されたときに消費されるので、ユーザが特定のグラフィックス又は画像を複製することをグラフィックスコマンドに対して所望する場合、特定のグラフィックスコマンドが再送されなければならない。
【０００６】
一定の状況において、グラフィックスコマンドは、最適化され、又は圧縮される。この最適化又は圧縮は通常、ターミナルサービスシステムなどのトランスマシン実装で実行され、中央サーバコンピュータとリモートクライアントコンピュータとの間の通信は、ネットワークなどの通信媒体を経由する。通信媒体又はネットワークの回線容量は、制限されることが良くある。従って、最適化又は圧縮が必要とされ得る。最適化又は圧縮は、画質の低下をもたらすことがある。例えば、一定の状況においては、受信したコンピュータ又はデバイスでグラフィック又は画像を拡大することが望ましいが、グラフィックスコマンドが圧縮されているので、拡大は画像の劣化をもたらす。
【０００７】
更に、一定の場合、異なるアプリケーションが異なる種類又は異なるグラフィックスコマンドをサポート又は提供することがある。例えば、あるアプリケーションは、ＧＤＩなどの従来のグラフィックスコマンドのフォーマットをサポートし、一方、他のアプリケーションは新しい又は異なるグラフィックスコマンドのフォーマットをサポートするかもしれない。しかしながら、異なるグラフィックスコマンドのフォーマットをサポートし、異なるグラフィックスコマンドのフォーマットを使用するアプリケーションからグラフィックスを処理可能であることが望ましい。
【課題を解決するための手段】
【０００８】
グラフィックスコマンドがグラフィックスシステムにおいてデータパケットに提供される。データパケットは、ビジュアルツリーなどの編集可能なモデルのオブジェクト及びリソースを表す。グラフィックスストリーム又はデータパケットが専用チャネルを介して送信され、アプリケーションを、グラフィックスストリーム又はデータパケットを修正するチャネルに導入することができる。データパケットを、ビジュアルツリーと相似であるコンポジションツリーを作成するコンポジションエンジンによって受信する。
【０００９】
この概要は、以下にさらに詳細に説明される概念のうち選択されたものを簡潔に紹介するものである。この概要は、発明の構成要件の主要な特性又は不可欠な特性を識別することを意図するものではなく、発明の構成要件の範囲の決定を支援するものとして使用されることを意図するものでもない。
【発明を実施するための最良の形態】
【００１０】
本出願は、合衆国法典第３５巻（35 U.S.C.）第１１９条の下、米国に優先権を主張する。２００５年９月７日に出願された仮出願番号６０／７１４，８８０の開示がここに組み込まれる。
【００１１】
詳細な説明が、図面を参照して説明される。図面において、符号の一番左の桁は、その符号が最初に表れた図面を識別する。異なる図面での同じ符号の使用は、同様の又は同一の項目を示す。
【００１２】
図１に、グラフィックス又は画像を提供又はレンダリングするシステム１００を示す。具体的には、システム１００は、グラフィックス又は画像の提供又はレンダリングにおいて、ビジュアルツリー（visual trees）及びコンポジションツリー（composition trees）の使用を実装する。システム１００は、トランスマシンシステムとして実装することができ、システム１００の要素及びプロセスは、１つより多いマシン又はデバイスに存在し、マシン又はデバイス間の通信は、イントラネット及びインターネットを含むネットワークなどの通信媒体を経由する。トランスマシンシステムの例には、ターミナルサービスシステムが含まれ、中央サーバコンピュータは、１つ又は複数のクライアントコンピュータを支援する。具体的には、アプリケーションプログラムは、中央サーバコンピュータに存在し、クライアントコンピュータによってアクセス又は使用される。システム１００は、トランスプロセスシステムとして実装することも可能であり、要素又はプロセスは、同じマシン又はデバイスに存在する。システム１００の他の例示的実装は、トランススレッドシステムであり、グラフィックスは同じプロセス内の異なるスレッドを介して送信される。
【００１３】
単純化のため、システム１００は、単一のアプリケーションプログラム１０２を示すが、システム１００は、複数のアプリケーションプログラムを含んでも良い。システム１００は、フレームワーク１０４を更に含む。フレームワーク１０４の例には、マイクロソフトコーポレーション（登録商標）より提供されるＷｉｎｄｏｗｓ（登録商標）  Ｐｒｅｓｅｎｔａｔｉｏｎ  Ｆｏｕｎｄａｔｉｏｎが含まれる。フレームワーク１０４は、アプリケーションプログラム１０２などの１つ又は複数のアプリケーションプログラムにアクセスする。具体的には、グラフィックスコマンドは、アプリケーションプログラム１０２により、フレームワーク１０４へ提供される。フレームワーク１０４は、アプリケーションプログラム１０２との通信における特定のアプリケーションプログラムインタフェース（ＡＰＩ）を実装し、又は含む。
【００１４】
システム１００は、フレームワーク１０４からグラフィックスコマンドを受信するコア１０６を含み、ビジュアルツリー１０８を作成する。ビジュアルツリー１０８は、フレームワーク１０４によって提供されるグラフィックス又は画像の表示であり、アプリケーションプログラム１０２からのグラフィックスコマンドの描写（representative）である。
【００１５】
ビジュアルツリー１０８は、後で更に詳細に説明するように、ビジュアルオブジェクト及びリソースから作成される。ビジュアルオブジェクト及びリソースは、データ又はグラフィックスストリームを作成する特定のデータパケットに翻訳されるかもしれない。グラフィックスストリームは、専用チャネル１１０を介して、コンポジションエンジン１１２に伝達される。チャネル１１０は、他のアプリケーションプログラムがシステム１００に含まれているとき各アプリケーションプログラムは自分自身の専用のチャネルを有するという意味で、専用のチャネルである。トランススレッドシステムにおいては、グラフィックスストリームは、異なるスレッドを介して伝達され、各専用チャネルは、特定のスレッドの描写である。後で更に説明するように、チャネル１１０は、異なる機能的な部分に分割されることもあり、前半分のチャネル及び後半分のチャネルを含む。
【００１６】
グラフィックスストリームのデータパケットを特定のフォーマットで提供することが可能である。例示的データフォーマットは、３２ビットデータパケットサイズ値、及び３２ビット符号無しパケット識別値の後に１つ又は複数のコマンドのパケットデータが続く。更に、複数のチャネルが実装されたとき、各チャネルを特定のコネクションと関連付けることができる。データパケットは、チャネルコネクションを特定するメッセージを提供できる。このようなメッセージは、例示的なフィールドとして「コネクションＩＤ」、次に「チャネルＩＤ」、次に「コマンドＩＤ」、次に「コマンドデータ」を含むフォーマットで実装することができる。
【００１７】
バックチャネル１１４が提供され、コンポジションエンジン１１２がコア１０６、フレームワーク１０４、及びアプリケーションプログラム１０２へメッセージを返信することを可能にする。バックチャネル１１４などのバックチャネルが、各専用チャネル（例えば、チャネル１１０）と共に提供されてもよい。バックチャネル１１４を介して返信されたメッセージは、コンポジションエンジン１１２によってサポートされたハードウェア状態及び／又はハードウェア若しくはハードウェア構成に対する変更を含むことができる。コンポジションエンジン１１２によって返信されるメッセージの他の例では、メモリからの情報、フレーム消費速度情報、ハードウェア変更等を含む。
【００１８】
データパケットは、バッチで用意されても良く、データパケットのバッチはチャネル１０８を介してコンポジションエンジン１１２へ送信される。例えば、ビジュアルツリー１０８のビジュアルオブジェクト及びリソースは、バッチとしてコンポジションエンジン１１２へ送信される。コンポジションエンジン１１２は、ビジュアルオブジェクト及びリソースのバッチ全体を受信するのを待ち、その後相似なコンポジションツリー１１６を作成する。グラフィックスストリームで送信されるオブジェクト及びリソースに加えて、コマンド又はインストラクションがグラフィックストリームに含まれる。コマンド又はインストラクションがコンポジションツリー１１６を作成するためにとりわけ使用される。システム１００が複数のアプリケーションプログラムを含む場合、各アプリケーションプログラムは、そのアプリケーションプログラム自身の、グラフィックスストリームを有する専用チャネルを保持し、特にデータパケットのバッチが伝達されるので、コンポジションエンジン１１２は、チャネルを介して伝達される他のバッチ又はグラフィックスストリームを待つ必要がない。言い換えれば、専用チャネルは、異なるアプリケーションプログラムからのグラフィックスストリーム（データパケットバッチ）の通信の干渉を防ぐ。更に、専用チャネルは、データパケットを相対経過順（relative chronological order）で受信するために、グラフィックスストリームに特有の同期化を可能にする。
【００１９】
コンポジションツリー１１６には、ビジュアルツリー１０８と同じ情報（すなわち、相似なオブジェクト及びリソース）が含まれるが、コンポジションツリー１１６は、プロセス／ファンクション１１８によって使用されるようにフォーマットされる。プロセス／ファンクション１１８は、コンポジションツリー１１６を使用してグラフィックス又は画像をレンダリングするオペレーティングシステムコンポーネント又はアプリケーションプログラムであっても良い。プロセス／ファンクション１１８は、コンポジションツリー１１６を、ディスプレイデバイス（図示せず）にグラフィックスをレンダリングするために使用される個々のピクセル値やビットマップなどの下位レベルグラフィックスに翻訳又は変換することができる。後で更に説明するように、コンポジションツリー１１６のオブジェクト及びリソースは、コンポジションツリー１１６の復元に関する他のコマンド又はインストラクションと共に、将来の使用又はコンポジションにより表示されたグラフィックス若しくは画像が消失したときの「リフレッシュ」などの場合の使用のために、ローカルメモリにファイルとして保存することができる。
【００２０】
最適化及び圧縮は、それらがチャネル１１０又は他のチャネルを介して送信されたときにグラフィックスストリームで実行される。最適化又は圧縮は、様々な最適化及び／又は圧縮方法の内の１つを実装することができる。更に、グラフィックスストリームメッセージ又はグラフィックスストリームを様々な転送プロトコル（例えば、ＲＰＣ、ＲＤＰ、ＴＣＰ／ＩＰなど）及び／又は方法の内の１つを使用して転送することができる。
【００２１】
図２に、例示的ビジュアルツリー１０８及び例示的コンポジションツリー１１６を示す。ビジュアルツリー１０８は、階層的なグラフィック又はビジュアルオブジェクトＶ１ ２００（１）からＶＮ ２００（Ｎ）によって構成される。ビジュアルツリー１０８は、グラフィックス又は画像を表す。ビジュアルオブジェクト２００のそれぞれは、コマンド、インストラクション、又はリソース（総称して、「リソース」と呼ばれる。）によって更に記述される。具体的には、リソースは、ビジュアルオブジェクトをどのように描くかを記述するために使用される。リソースは、高次又は低次のリソースを有することができる。例えば、グラフィックスオブジェクトＶ３ ２００（３）は、「線画（Draw Line）」リソース２０２によって定義される。「線画」リソース２０２は、更に「ペン」リソース２０４によって記述される。「ペン」リソース２０４は、更に「ブラシ」リソース２０６によって記述される。
【００２２】
上述のように、リソース（例えば、リソース２０２、２０４、２０６）と共にビジュアルオブジェクトＶ ２００は、コマンド又はインストラクションと一緒に、データパケットに翻訳され、グラフィックスストリームで送信される。コマンド又はインストラクションを使用し、相似なコンポジションオブジェクトＣ１ ２０８（１）からＣＮ ２０８（Ｎ）、及びコンポジションオブジェクトＣ２０８（例えば、「線画」リソース２１０、「ペン」リソース２１２、及び「ブラシ」リソース２１４）のそれぞれを定義するリソースを用いてコンポジションツリー１１６を構築する。前記のように、ビジュアルオブジェクト、リソース、コマンド、及びインストラクションのグラフィックスストリームを受信するコンポジションエンジンは、全てのデータパケットを受信するのを待って、その後コンポジションを構築しても良い。その結果、ビジュアルオブジェクト、リソース、コマンド、及びインストラクションは、バッチとして送信することができる。
【００２３】
図３に、ビジュアルツリー及びコンポジションツリーを実装してグラフィックス又は画像を提供及びレンダリングする例示的コンピューティングデバイス３００を示す。コンピューティングデバイス３００は、トランスプロセスシステムの実装であるが、トランスマシン及びトランススレッドシステムの一部として実装でき、又はトランスマシン及びトランススレッドシステムの相似な要素を有することもできることは明らかである。コンピューティングデバイス３００としては、標準的なデスクトップパーソナルコンピュータ（ＰＣ）が考えられ、ローカルオペレーティングシステム、プロセッシングユニット又はプロセッサ３０２、及びストレージシステム又はメモリ３０４を含む。一例として、コンピューティングデバイス３００は、マイクロソフトコーポレーション（登録商標）のＷｉｎｄｏｗｓ（登録商標）ブランドのオペレーティングシステムで実装された汎用ＰＣである。
【００２４】
この例において、アプリケーションプログラム３０６及びレガシーアプリケーションプログラム３０８は、メモリ３０４に存在又はメモリ３０４とは別に存在する複数のアプリケーションの一部であるかもしれない。プログラム３０６及び３０８は特に、プロセッサ３０２によってアクセス及び制御される。レガシーアプリケーションプログラム３０８は、ＧＤＩなどのグラフィックスコマンドフォーマットを実装するアプリケーションプログラムを含むことができる。
【００２５】
コンピューティングデバイス３００には、アプリケーションプログラム３０６に対応するフレームワーク及びコア３１０を含まれる。フレームワーク及びコア３１０には、前述のフレームワーク１０４及びコア１０６が含まれる。この例において、レガシーアプリケーションプログラム３０８に、レガシーフレームワーク及びコア３１２は対応する。他の実装において、単一のフレームワーク及びコアが使用され、複数のアプリケーションプログラムに対応することができる。フレームワーク及びコア３１０並びにレガシーフレームワーク及びコア３１２はとりわけ、個々のアプリケーションプログラム３０６及びレガシーアプリケーションプログラム３０８から受信したコマンドに基づいて、ビジュアルツリー１０８などのビジュアルツリーを作成及び提供するように構成される。
【００２６】
フレームワーク及びコア３１０は、アプリケーションプログラム３０６に対応する専用チャネル“Ａ”へのインタフェースとなりうるリダイレクタ３１４に接続されている。リダイレクタ３１４をチャネル“Ａ”の“前半”とみなしてもよい。レガシーフレームワーク及びコア３１２も同様に、レガシーアプリケーションプログラム３０８に対応する別のチャネル“Ｂ”へのインタフェースであるレガシーリダイレクタ３１６に接続されている。同様に、リダイレクタ３１６をチャネル“Ｂ”の“前半”とみなしてもよい。リダイレクタ３１４及び３１６は、トランスポート層又はトランスポート３１８に接続され、又はトランスポート層又はトランスポート３１８を使用してもよい。リダイレクション層３２０は、チャネル“Ａ”の後半（bottom half）であり、リダイレクション層３２２は、チャネル“Ｂ”の後半である。
【００２７】
コンポジションエンジン“Ａ”３２４は、チャネル“Ａ”を介してグラフィックスストリームを受信し、プロセス／ファンクション“Ａ”３２６による使用のためのコンポジションツリーを作成する。同様に、コンポジションエンジン“Ｂ”３２８は、チャネル“Ｂ”を介してグラフィックスストリームを受信し、プロセス／ファンクション“Ｂ”３３０による使用のためのコンポジションツリーを作成する。プロセス／ファンクション“Ａ”３２６及びプロセス／ファンクション“Ｂ”３３０はそれぞれ、作成されたコンポジションツリーを使用して、ローカルディスプレイ又は出力デバイスにグラフィックス又は画像をレンダリング又は生成する。
【００２８】
図４に、グラフィックス又は画像のコンポジションツリーを修正するために使用されるアプリケーション及びアプリケーションプログラムインタフェースを実装するシステム４００を示す。この例において、システム４００は、前述のシステム１００を変更したものである。一定の場合、アプリケーションプログラム３０６及びレガシーアプリケーションプログラム３０８などのアプリケーションプログラムによって提供されたグラフィックス又は画像を修正することが望ましい。グラフィックストリームメッセージ又はグラフィックスストリームが送信されたときに最適化又は圧縮が発生することを考慮して、特にトランスマシンシステムにおいて、修正が発生したときにグラフィックス又は画像の劣化を最小限にすることが望ましい。
【００２９】
この例において、アプリケーション４０２は、チャネルの前半４０４とチャネルの後半４０６との間に位置する。アプリケーション４０２は、グラフィックス又はイメージ修正を実行し、又は一定の場合にアプリケーション４０２は、チャネルを通されている（すなわち、チャネルが半分になり４０４及び４０６となる間）グラフィックスストリームへのアクセス又は参照が可能であるアクセシビリティ（accessibility）アプリケーションとして構成することができる。一般に、アプリケーション４０２は、チャネル内に配置される中間物とみなされる。
【００３０】
グラフィックス又は画像修正の例は、グラフィックス又は画像の拡張（enlarging）又は拡大（magnifying）である。アプリケーション４０２は特に、受信したコンポジションツリー４０８を作成するために、チャネルを通過するグラフィックスストリーム又は特定のデータパケットを修正する。以下に更に説明するように、修正は、コンポジションのノードの階層に関わらず、コンポジションツリーの特定のノードにおいて行われることがある。比較的上位レベルのノードが修正された場合、コンポジションツリーにおけるそのノードより下位の全てのノードが影響を受ける（すなわち、修正される）。
【００３１】
また、グラフィックスストリームアプリケーションプログラムインタフェース（ＡＰＩ）４１０及び再生ＡＰＩ４１２が提供され、アプリケーション４０２をコア１０４及びコンポジションエンジン１１０に公開する。具体的には、グラフィックスストリームＡＰＩ４１０を使用してコア１０４からグラフィックスストリームにアクセスし、再生ＡＰＩ４１２がコンポジションエンジン１１０によって使用されてアプリケーション４０２からグラフィックスストリームを開く。
【００３２】
グラフィックスストリームＡＰＩ４１０は、読込みのためのグラフィックスストリームを開く「グラフィックスストリームオープン」ＡＰＩを含んでも良い。更に、ポインターが実装されて、コンポジションエンジン１１０がサポートする特定のファンクション又はプロセスに対する「グラフィックスストリームオープン」ＡＰＩによって、ポインターがアプリケーション４０２に対して提供されても良い。グラフィックスストリームＡＰＩ４１０は更に、読込みのためのグラフィックスストリームを閉じる「グラフィックスストリームクローズ」ＡＰＩを含んでも良い。「グラフィックスストリームクローズ」ＡＰＩによって、クローズメッセージが、コンポジションエンジン１１０に対して、又はコンポジションエンジン１１０がサポートする特定のファンクション又はプロセスに対して送信される。
【００３３】
グラフィックスストリームＡＰＩ４１０は、コア１０４に対して、又はトランスマシンシステム（例えば、ターミナルサービスシステム）の場合にアプリケーション４０２がグラフィックスストリームへのアクション若しくは修正（例えば、拡大）を実行するグラフィックスサーバ（すなわち、コア１０４がグラフィックスサーバに存在する）に対して、ヒント又はメッセージを提供する「グラフィックスストリームセットトランスフォームヒント」ＡＰＩを含んでも良い。例えば、拡大の場合、「グラフィックスストリームセットトランスフォームヒント」ＡＰＩは、拡張又は拡大の役割を担うアプリケーションプログラム１０２に対して、メッセージを提供する。更に、ポインターが、特定の改訂されたコンポジションツリー４０４に関して提供されても良い。メッセージが、バックチャネル１１４などのバックチャネルを介して送信されてもよい。
【００３４】
再生ＡＰＩ４１２は、コンポジションエンジン１１２が改訂されたコンポジションツリー４０８を描画又は作成する能力を提供する。通常、再生ＡＰＩ４１２は、チャネルの後半４０６及びコンポジションエンジン１１２をアプリケーション４０２に公開する。
【００３５】
図５は、修正又は改訂されたコンポジションツリーの図を示す。具体的には、アプリケーション４０２によって修正され、改訂されたコンポジションツリー４０８が示されている。この例において、修正は、以前のコンポジションツリー（例えば、コンポジションツリー１１６）を拡張又は拡大することである。
【００３６】
修正がグラフィックス又は画像について、特にコンポジションツリーのノードについて発生したとき、修正がコンポジションツリーにおいて実行される。どのノード又は修正であるかに応じて、他のノードが影響を受けうる。言い換えれば、特定のノードが修正された場合、その特定のノードからの枝の全ての下位レベルノードが影響を受け又は修正される。この例において、ノードＣ１ ２０８（１）は、「拡大」ノード５００によって修正される。その結果、以前のコンポジションツリー１１６が修正され（すなわち、拡大され）、改訂されたコンポジションツリー４０８として提供される。
【００３７】
図６に、プロセス又はファンクションに対してビジュアルツリーの描写のグラフィックスストリームを提供するプロセス６００を示す。プロセス６００は更に、グラフィックスストリームの修正に対応するＡＰＩとして実装されても良い。プロセス６００は、論理フローグラフのブロックの集合として示されており、ハードウェア、ソフトウェア、ファームウェア、又はそれらの組合せで実装可能な操作の順序を表す。ソフトウェアの文脈の場合、ブロックは、コンピュータインストラクションを表し、１つ又は複数のプロセッサによって実行されるとき、列挙された操作を実行する。フローチャートとして記述されているが、所定のブロックは、同時に又は異なる順序で発生することを意図している。プロセス６００は他のアーキテクチャによって実装されても良いが、プロセス６００は、例えば、図１のシステム１００及び／又は図３で説明したコンピューティングデバイス３００によって実装することができる。
【００３８】
ブロック６０２において、グラフィックスコマンドが送信され、チャネルに位置するアプリケーションが受信する。アプリケーションは、アクセシビリティアプリケーション又は、修正を実行するアプリケーションである。このようなアプリケーションの例は、アプリケーション４０２である。グラフィックスストリームは、ビジュアルツリーを作り上げるビジュアルオブジェクト及びリソースの描写であるデータパケットを含むことができる。
【００３９】
ブロック６０４において、アプリケーションは、グラフィックスストリームを開き、又はグラフィックスストリームにアクセスする。当該開くことは、グラフィックスストリーム及びグラフィックスストリームのデータパケットを単に読み込むことに関係し、つまり、修正は、グラフィックスストリームで実行される。更に、ポインターが、グラフィックスストリームを受信するコンポジションエンジンによってサポートされるファンクション又はプロセスに対して提供されてもよい。
【００４０】
ブロック６０６において、グラフィックスストリーム及び／又はデータパケットの実際の修正が実行される。修正の例には、拡大が含まれる。一定の場合、メッセージが、グラフィックスストリームを提供するコアに対して提供されてもよく、このメッセージは、拡大などの修正が発生することを示す。
【００４１】
ブロック６０８において、修正されたストリームは、元のビジュアルツリー及び修正に由来する変更若しくは修正に基づいてコンポジションツリーを作成可能なコンポジションエンジンに渡される。
【００４２】
ブロック６１０において、グラフィックスストリームが閉じられる。言い換えれば、アプリケーションは、グラフィックスストリームの読込みができなくなる。メッセージがコンポジションエンジンに送られて、グラフィックスストリームが閉じられている、又は閉じられたことを示してもよい。
【００４３】
図７に、フレームワークとコンポジションエンジンとの間の通信を可能にするプロセス７００を示す。プロセス７００は更に、そのような通信を提供するプロトコルとして実装されても良い。プロセス７００は、論理フローグラフのブロックの集合として示されており、ハードウェア、ソフトウェア、ファームウェア、又はそれらの組合せで実装可能な操作の順序を表す。ソフトウェアの文脈の場合、ブロックは、コンピュータインストラクションを表し、１つ又は複数のプロセッサによって実行されるとき、列挙された操作を実行する。フローチャートとして記述されているが、所定のブロックは、同時に又は異なる順序で発生することを意図している。プロセス７００は他のアーキテクチャによって実装されても良いが、プロセス７００は、例えば、図１のシステム１００及び／又は図３で説明したコンピューティングデバイス３００によって実装することができる。
【００４４】
ブロック７０２において、専用チャネルが作成され、フレームワーク又はコアと、コンポジションエンジンとの間の通信を可能にする。専用バックチャネルもまた作成され、コンポジションエンジンがフレームワーク又はコアへメッセージを返信することを可能にする。
【００４５】
ブロック７０４において、データパケットが専用チャネルを介して送信され又は提供される。データパケットは、グラフィックスストリームの一部であり、バッチとして送信されても良い。データパケットのバッチは、編集可能なモデルを作成するのに必要な全てのオブジェクト及びリソースを含む。モデルは、グラフィックス又は画像の描写であり、例えば、前述のビジュアルツリー１０８などの階層的なツリーであっても良い。
【００４６】
ブロック７０６において、グラフィックスストリーム又はデータパケットを修正するチャネルにアプリケーションを導入することができる。アプリケーションの例には、グラフィックスストリームリーダ又はマグニファイア（magnifier）が含まれる。メッセージがフレームワーク又はコアに返され、修正が実行されたことを示しても良い。
【００４７】
ブロック７０８において、編集可能なモデルが、未修正の又は修正されたデータパケットを使用して構築される。説明したように、編集可能なモデルは、コアで作成されたビジュアルツリーに対して相似な階層ツリーであっても良い。具体的には、編集可能なモデルは、コンポジションツリー１１６及び４０８などのコンポジションツリーとみなされ、又は呼ばれる。
【００４８】
［結び］
上記のシステムは、グラフィックス又は画像をレンダリングするために使用されるコンポジションツリーを作成するコンポジションエンジンに対するビジュアルツリーなどの編集可能なモデルを伝達すること支援する。本発明は、構造的特徴及び／又は方法論的動作（acts）に特有の言語で記述されたが、特許請求の範囲に定義された発明が記述した詳細な特徴又は動作に必ずしも限定されないことを理解されたい。むしろ、詳細な特徴及び動作は、特許を請求する発明の実装の例示的形態として開示されている。
【図面の簡単な説明】
【００４９】
【図１】ビジュアルツリーの形式でグラフィックスを提供するチャネルを実装するシステムのブロック図である。
【図２】グラフィックス若しくは画像を表すビジュアルツリー、及び相似なコンポジションツリーの図である。
【図３】グラフィックス又は画像を提供するビジュアルツリー及びコンポジションツリーを実装するコンピューティングデバイスのブロック図である。
【図４】グラフィックス又は画像のコンポジションツリーを修正するアプリケーション及びアプリケーションプログラムインタフェースを実装するシステムのブロック図である。
【図５】改訂されたコンポジションツリーの図である。
【図６】プロセスを示すフローチャートである。
【図７】プロセスを示すフローチャートである。
【図１】
2009507306.tif 000003
【図２】
2009507306.tif 000004
【図３】
2009507306.tif 000005
【図４】
2009507306.tif 000006
【図５】
2009507306.tif 000007
【図６】
2009507306.tif 000008
【図７】
2009507306.tif 000009
【国際調査報告】
2009507306.tif 000010
2009507306.tif 000011