(57)【要約】グラフィカル表示内の要素の要素プロパティ値の時間調節された変化をサポートするグラフィカル動画表示システム（１００）が開示されている。動画システムは、グラフィカルに表示されるシーン内で表示されるオブジェクトに対応する１組の要素（２０２）を維持する表示構造を使用する。要素は、可変プロパティ値を含む。動画システムは、表示構造によって維持される要素に関連するプロパティを維持するプロパティシステムも使用する。プロパティは、時間の経過に伴って変化することができ、したがってグラフィカル表示上の対応する要素の外観に影響を与える動的プロパティ（４１０）を含む。動画システムは、動画オブジェクトがそこからインスタンス化され、ランタイム時に要素プロパティに関連付けられる動画クラス（２２２）を含む。動画オブジェクトインスタンスは、プロパティシステムによって維持される動的プロパティに割り当てられた値に影響を与える時間変化する値を提供する。
2006526181.tif 000002
【特許請求の範囲】
【請求項１】
要素の表示特性に影響を与える可変プロパティ値をそれぞれ含む１組の要素を維持する表示構造と、
時間の経過に伴って変化することができる動的プロパティを含む、前記表示構造によって維持される要素に関連付けられるプロパティを維持するプロパティシステムと、
動画オブジェクトはそこからインスタンス化される、前記動画オブジェクトインスタンスは前記動的プロパティに割り当てられた値に影響を与える時間変化する値を提供する動画クラスと
を含むことを特徴とする要素プロパティ値の時間調節された変更をサポートするグラフィカル動画表示システム。
【請求項２】
１つまたは複数の動画オブジェクトを前記表示構造内の要素の動的プロパティに関連付ける動的動画クラス
をさらに含むことを特徴とする請求項１に記載のグラフィカル動画表示システム。
【請求項３】
１組の動画クラスオブジェクトをグループ化する動画コレクションクラスをさらに含み、前記動画コレクションクラスのインスタンスは前記１組の動画クラスオブジェクトを基底値に適用することによって構成された出力値を提供する
ことを特徴とする請求項１に記載のグラフィカル動画表示システム。
【請求項４】
前記動画クラスはそれぞれ内部タイムラインを指定することを特徴とする請求項１に記載のグラフィカル動画表示システム。
【請求項５】
動画オブジェクトインスタンスは、前記内部タイムラインによって定義されたタイミングシーケンスのコンテキストを提供する親タイムラインに結び付けられることを特徴とする請求項４に記載のグラフィカル動画表示システム。
【請求項６】
前記親タイムラインは前記動画オブジェクトインスタンスのコンテナによって指定されることを特徴とする請求項５に記載のグラフィカル動画表示システム。
【請求項７】
前記複数の動画クラスのうちの１つまたは複数は、それらが時間可変値を提供する特定のデータ型に関連付けられることを特徴とする請求項１に記載のグラフィカル動画表示システム。
【請求項８】
前記複数の動画クラスのうちの１つの動画クラスは浮動小数点値を提供することを特徴とする請求項７に記載のグラフィカル動画表示システム。
【請求項９】
前記複数の動画クラスのうちの１つの動画クラスはプレゼンタボックスの寸法を提供することを特徴とする請求項７に記載のグラフィカル動画表示システム。
【請求項１０】
前記複数の動画クラスのうちの１つの動画クラスは四角形の左上の位置を提供することを特徴とする請求項７に記載のグラフィカル動画表示システム。
【請求項１１】
前記複数の動画クラスのうちの１つの動画クラスは時間変化するカラー値を提供することを特徴とする請求項７に記載のグラフィカル動画表示システム。
【請求項１２】
前記複数の動画クラスのうちの１つの動画クラスはブール値を提供することを特徴とする請求項７に記載のグラフィカル動画表示システム。
【請求項１３】
実行プログラムによって生成される１組のランタイムの表示要素を維持する表示構造および前記表示要素に関連するプロパティを管理するプロパティシステムを含むグラフィカル表示システムにおいて表示要素を動画化するための方法であって、該方法は、
時間の経過に応答して表示要素プロパティ値を変更することによって表示要素のうちの１つまたは複数の動画化が達成され、
変更可能なプロパティを含むグラフィカル表示要素を作成するステップと、
前記変更可能なプロパティに割り当て可能な動画挙動を定義するステップと、
ランタイム時にプログラムからの要求に従って前記動画挙動を前記要素の前記変更可能なプロパティに関連付けるステップと、
前記動画挙動に従って時間変化する値のシーケンスを前記変更可能なプロパティに提供するステップと
を含むことを特徴とする。
【請求項１４】
動画挙動をそれぞれ定義する１組の動画クラスを提供するステップをさらに含むことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記１組の動画クラスは動画型を指定し、動画型は動画クラスのインスタンスによって処理されるデータの型に対応することを特徴とする請求項１３に記載の方法。
【請求項１６】
前記提供するステップは前記動画挙動を具現化する動画クラスからインスタンス化される動画オブジェクトによって容易になることを特徴とする請求項１３に記載の方法。
【請求項１７】
前記動画挙動を定義するステップは、動画コレクションクラス内の１組の動画クラスインスタンスをグループ化することを含み、前記動画コレクションクラスのインスタンスは、前記１組の動画クラスインスタンスを基底値に適用することによって構成された出力値を提供することを特徴とする請求項１３に記載の方法。
【請求項１８】
前記関連付けるステップは、１つまたは複数の動画オブジェクトを前記要素の前記変更可能なプロパティに結び付ける動的動画クラスをインスタンス化することを含むことを特徴とする請求項１３に記載の方法。
【請求項１９】
前記時間変化する値のシーケンスの進行のタイミングは、前記動画挙動を定義する１つまたは複数の動画オブジェクトに関連するタイミングツリーノードに従って指定されることを特徴とする請求項１３に記載の方法。
【請求項２０】
親タイムラインを動画オブジェクトに結び付け、それによって内部タイムラインによって定義されるローカルタイミングシーケンスのグローバルタイミングコンテキストを提供することをさらに含むことを特徴とする請求項１３に記載の方法。
【請求項２１】
前記動画オブジェクトの前記親タイムラインは、動画オブジェクトインスタンスの集合のコンテナによって指定されることを特徴とする請求項２０に記載の方法。
【請求項２２】
時間変化する値のシーケンスを提供する前記ステップは、アクティブな動画期間にわたり、現在の時間および基底プロパティ値を、前記動画挙動を具現化する動画値ジェネレータに数回適用して、前記変更可能なプロパティの現在値を提供し、
前記変更可能なプロパティの前記現在値に従って更新されたレイアウトを生成すること
を特徴とする請求項１３に記載の方法。
【請求項２３】
時間の経過に伴う要素プロパティ値への連続した変更を実施して、プロパティシステムによって維持される要素プロパティに動画挙動を適用するための方法であって、
基本の動画挙動を指定する動画オブジェクトクラスから動画オブジェクトインスタンスをインスタンス化することと、
構成体の動画オブジェクトのリストを指定する動画コレクションクラスから動画コレクションオブジェクトをインスタンス化することと、
前記動画コレクションオブジェクトを前記プロパティシステムによって維持される前記要素プロパティに関連付ける動画コレクションクラスから動的動画コレクションをインスタンス化することと
を含むことを特徴とする方法。
【請求項２４】
前記動画オブジェクトクラスのインスタンスに親タイムラインを割り当てることをさらに含むことを特徴とする請求項２３に記載の方法。
【請求項２５】
動画オブジェクトインスタンスの前記プロパティをロックすることをさらに含むことを特徴とする請求項２３に記載の方法。
【請求項２６】
動画コレクションオブジェクトインスタンスの前記プロパティをロックすることをさらに含むことを特徴とする請求項２３に記載の方法。
【請求項２７】
現在の時間および基底プロパティ値を、前記動画コレクションオブジェクトの前記構成体の動画オブジェクトに適用して、前記要素プロパティの現在のプロパティ値を提供することと、
前記要素プロパティの前記現在のプロパティ値に従って更新されたレイアウトを生成することと
をさらに含むことを特徴とする請求項２３に記載の方法。
【請求項２８】
要素プロパティ値の時間調節された変更をサポートするグラフィカル動画表示システムを提供するコンピュータ実行可能命令を含むコンピュータ可読媒体であって、該グラフィカル動画表示システムは、
要素の表示特性に影響を与える可変プロパティ値をそれぞれ含む１組の要素を維持する表示構造と、
時間の経過に伴って変化することができる動的プロパティを含む、前記表示構造によって維持される要素に関連付けられるプロパティを維持するプロパティシステムと、
動画オブジェクトがそこからインスタンス化され、該動画オブジェクトのインスタンスが前記動的プロパティに割り当てられた値に影響を与える時間変化する値を提供する動画クラスと
を含むことを特徴とする。
【請求項２９】
前記グラフィカル動画表示システムは、
１つまたは複数の動画オブジェクトを前記表示構造内の要素の動的プロパティに関連付ける動的動画クラス
をさらに含むことを特徴とする請求項２８に記載のコンピュータ可読媒体。
【請求項３０】
前記グラフィカル動画表示システムは、
１組の動画クラスオブジェクトをグループ化する動画コレクションクラスをさらに含み、前記動画コレクションクラスのインスタンスは前記１組の動画クラスオブジェクトを基底値に適用することによって構成された出力値を提供する
ことを特徴とする請求項２８に記載のコンピュータ可読媒体。
【請求項３１】
前記動画クラスはそれぞれ内部タイムラインを指定することを特徴とする請求項２８に記載のコンピュータ可読媒体。
【請求項３２】
前記動画オブジェクトのインスタンスは、前記内部タイムラインによって定義されたタイミングシーケンスのコンテキストを提供する親タイムラインに結び付けられることを特徴とする請求項３１に記載のコンピュータ可読媒体。
【請求項３３】
前記親タイムラインは前記動画オブジェクトインスタンスのコンテナによって指定されることを特徴とする請求項３２に記載のコンピュータ可読媒体。
【請求項３４】
前記複数の動画クラスのうちの１つまたは複数は、それらが時間可変値を提供する特定のデータ型に関連付けられることを特徴とする請求項２８に記載のコンピュータ可読媒体。
【請求項３５】
前記複数の動画クラスのうちの１つの動画クラスは浮動小数点値を提供することを特徴とする請求項３４に記載のコンピュータ可読媒体。
【請求項３６】
前記複数の動画クラスのうちの１つの動画クラスはプレゼンタボックスの寸法を提供することを特徴とする請求項３４に記載のコンピュータ可読媒体。
【請求項３７】
前記複数の動画クラスのうちの１つの動画クラスは四角形の左上の位置を提供することを特徴とする請求項３４に記載のコンピュータ可読媒体。
【請求項３８】
前記複数の動画クラスのうちの１つの動画クラスは時間変化するカラー値を提供することを特徴とする請求項３４に記載のコンピュータ可読媒体。
【請求項３９】
前記複数の動画クラスのうちの１つの動画クラスはブール値を提供することを特徴とする請求項３４に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にコンピュータ装置に関する。より詳細には、本発明は、オペレーティングシステムおよび／またはアプリケーションからのデータおよび命令入力によって駆動されるグラフィカルユーザインターフェースのビューを維持し、提供するコンピューティングシステムの構成要素およびサブシステムに関する。
【背景技術】
【０００２】
グラフィカルユーザインターフェースは、本質的に極めて視覚的である。ユーザおよびグラフィカルユーザインターフェースを伴う一般の対話式セッションは、ユーザが表示された要素に対してアクション（例えばポインタの移動やアイコンまたはコントロールの選択）を行ってある操作を呼び出し、次いで操作の結果を視覚的に確認するという複数の場合を含む。アクティブ状況、または変更状況を示すためにグラフィカルユーザインターフェース上の特定の要素にユーザの関心を引き寄せる１つの方法には、グラフィカル要素の動画によるものがある。動画は、本明細書で使用する場合、時間の経過に伴って表示要素に適用される漸進的な一連の変化によってグラフィカル表示要素（例えばアイコン、コントロール、ウィンドウ）の外観および位置を変更することを含む。しかし動画は、非視覚的に表示された要素への時間ベースの変化も含む。したがって動画は、本明細書で言及する場合、視覚的（すなわち視覚表示パラメータ値を変更する）および非視覚的（すなわち視覚表示要素に影響を与えることなく時間の経過に伴ってパラメータ値を変更する）動画を含む。
【０００３】
動画には、コンピュータシステムおよびアプリケーションの有用性および美感を向上させる可能性がある。ユーザインターフェース、より詳細にはグラフィカルユーザインターフェースは、コンピュータ／ユーザの対話において重要な役割を占める。動画は、ユーザにコンピュータプログラムまたはその構成要素の状況を伝える別のタイプの情報または方法を提供することによってコンピュータ／ユーザの対話経験を向上させる。例えば、選択した項目を単に消す、または即座に変更する代わりに、動画によって変化の進行を表示することができ、これによって、認識上の状況との組合せにより、何が起こっているか（例えば削除されたファイルが浮動してゴミ箱に入るなど）をユーザに知らせる。さらに、多くの人々は、動画がコンピュータシステムとの対話をより面白くし、より効果的にユーザの注意を引くことを認めている。さらに、動画は、プロパティ値への自動的な変更も可能にする。特にユーザモードのアプリケーションは、手動タイマを設定し、次いでこうしたタイマに応答して値を変更する。
【０００４】
動画は、こうした動画がユーザにとって有益となる多くのユーザインターフェースにたいてい組み込まれていない。１つの理由は、単にユーザインターフェース要素の動画化のコストである。動画化は、一般に時間がかかる／面倒な作業である。グラフィカルユーザインターフェースに動画を実装するのに費用／便益手段を採ると、動画を組み込むメリットはそのコストを超えるはずである。現在動画プログラミングのコストが比較的高額であるために、動画からメリットを得るであろう多くのアプリケーションは、その比較的高額な実装コストのために動画化されていない。
【０００５】
動画化のコストを低減する１つの方法は、複数の独自用途の動画プログラミングを再利用することである。しかし、一般に動画コードは再利用されない。代わりに、単一（アプリケーション）用途の動画コードは、開発時にプログラミングツールを使用してアプリケーション自体の中で完全にプログラム化される。動画挙動は、コンパイルされたプログラムコード内で明示的に定義される。ランタイム中、あらかじめプログラムされているコードセグメントを単に実行することによって動画が実行される。時間がかかる試みである上に、動画をプログラムに組み込むことによって、表示要素で所望の動画挙動を実行するのに詳細なデータおよび命令が使用されるため、プログラムが過度に大きくなってしまう。
【０００６】
ユーザインターフェースにおいて動画のプログラマビリティを向上させようとする取り組みによって、所望の動画挙動を提供するために実行可能なスクリプトセグメントがそこから参照される編集不可／モノシリック動画スクリプトシーケンスが設計され、提供された。こうした既知の動画プログラミング方法は、例えば同期マルチメディア統合言語（ＳＭＩＬ）標準に基づいてキーフレーミングを組み込む。キーフレーミング方法は、モノシリックで編集不可の動画スクリプトの特定のセグメントの参照に依存する。
【０００７】
従来の既知のキーフレーミング手法には、グラフィカルユーザインターフェースでの新しい動画挙動のプログラミングに関する柔軟性の相対的な欠如が見られる。キーフレーミングスクリプトは、指定された始点と終点の間で表示要素（または要素の組合せ）をモーフィングするコンパイル済みの編集不可の動画命令シーケンスを含む。動画シーケンスにおいて２つの点を選択し、次いでこれら２つの点の間でプログラムスクリプトを実行する既知のキーフレーミング動画手法は、プログラマが以前に作成された／コンパイルされた動画スクリプト内に組み込まれる動画挙動を実施しようとするのを助ける。しかし、キーフレーミング手法では、サポートされている動画の範囲は、既存の基本動画スクリプトによって定義されている直線的な進行に限られる。動画スクリプトをユーザ／開発者に出荷する前に、サポートされているすべての動画挙動を識別し、コード化する必要があり、このことが基本動画スクリプトの開発の障害となっている。動画スクリプトの耐用年限中に、所望の動画挙動がスクリプトに含まれていない多くの場合が生じる可能性がある。しかし、ユーザ／開発者はスクリプトを編集することはできず、したがってそのスクリプトを使用して、コンパイルされた動画スクリプトにあらかじめコード化されていない所望の新しい動画挙動を実行することはできない。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
したがって、興味深く報知的で有意味な動画挙動をグラフィカルユーザインターフェースの表示に実装するためのより効率的で柔軟性が高く費用のかからない方法が必要である。
【課題を解決するための手段】
【０００９】
一例として本明細書で以下に記載し、請求する動画システムは、グラフィカルユーザインターフェース表示要素および非視覚パラメータ値のための動画挙動を定義し、作成し、実行する枠組みを提供する。動画挙動が要素に適用されると、動画挙動がアクティブなときに時間の経過に伴ってプロパティに関連付けられている値が変化する。
【００１０】
動画システムは、コンピュータシステムのグラフィカルユーザインターフェースの表示ウィンドウなど、あるシーン内に表示されるオブジェクトに対応する１組の要素を維持する表示構造を使用するシステムに組み込まれる。要素は、要素の表示特性に影響を与える可変プロパティ値を含む。こうした可変プロパティの例には、位置、寸法、色、不透明度などがある。
【００１１】
また、動画システムは、プロパティシステムを使用する。プロパティシステムは、表示構造によって維持される要素に関連するプロパティを維持する。プロパティシステムは、時間の経過に伴って変化することができる動的プロパティをサポートする。
【００１２】
また、動画システムは、基底値に基づいて実行可能な特定の動画挙動を指定する動画クラスも含む。動画オブジェクトは、動画クラスからインスタンス化される。こうした動画オブジェクトのインスタンスは、動的プロパティに割り当てられた値に影響を与える時間変化する値を提供する。こうした動画オブジェクトが作成され、関連の動画オブジェクトに従って時間の経過に伴って変化する要素を含む表示を駆動しているアプリケーションの指揮下でプロパティシステムによって維持されるプロパティに結び付けられる。
【００１３】
添付の特許請求の範囲は本発明の特徴を詳細に記載しているが、本発明およびその利点は、以下の詳細な説明を添付の図面と併せ読めば、最もよく理解できる。
【発明を実施するための最良の形態】
【００１４】
動画システム、プロパティシステム、および表示要素編成構造を含むグラフィカルユーザインターフェースアーキテクチャについて説明する。これらの構成要素は、組み合わせて、グラフィカルユーザインターフェースの表示要素、さらに非表示値のプロパティベースの動画をサポートする。開示した動画アーキテクチャは、要素によって所望の動画挙動を達成するために様々なグラフィカル表示（および非表示）要素（例えばアイコン、ダイアログボックス、スクロールバー）に結び付けられる動画インスタンスを容易に作成し、追跡できるようにする動画クラス、インターフェース、およびコレクションを含む動画システムを含む。表示要素の動画化は、表示要素のプロパティ値の変更によって達成される。本発明の一実施形態では、プロパティ値に対する変更は、動画クラスからインスタンス化され、プロパティに結び付けられる動画オブジェクトによって駆動される。
【００１５】
本発明の一実施形態では、要素ツリー内の特定の要素に対するレンダリング操作に動画コレクションを関連付けることによってグラフィカル動画が達成される。動画化された要素が最初に描かれると、レンダリングシステムは、指定された動画クラスからインスタンス化された動画オブジェクトの構成要素によって定義された動画挙動に従って、ある時間間隔で要素の表示状態を更新する。
【００１６】
本発明の一実施形態では、動画は、異なるリフレッシュサイクルを有するグラフィカル表示システムにおいて複数のレベルで指定される。容易に計算される一部の動画は、比較的高いリフレッシュ速度で更新される。他のグラフィカル表示オブジェクトに影響を与えるものなどより複雑な他の動画は、比較的低いリフレッシュ速度で更新される。
【００１７】
全体として見ると、本明細書に記載した動画アーキテクチャは、新しい様々な動画挙動を実行するための柔軟性の高いプラットフォームを提供し、新しい挙動を表示要素に結び付け、新しく極めて人を引き付ける動画化された表示インターフェースを作成する。
【００１８】
図１は、本発明を具現化する動画アーキテクチャを実行するのに適した動作環境１００の例を示している。動作環境１００は、適した動作環境の一例にすぎず、本発明の使用または機能の範囲に関する限定を示唆するものではない。本発明との使用に適した他のよく知られているコンピューティングシステム、環境、および／または構成には、それだけには限定されないが、パーソナルコンピュータ、サーバコンピュータ、ラップトップ／ポータブルコンピューティング装置、ハンドヘルドコンピューティング装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記の任意のシステムまたは装置を含む分散コンピューティング環境などがある。
【００１９】
本発明は、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令によって実行される１組のステップおよびプロセスの一般的な文脈で説明する。一般にプログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。実施形態の例は、単一のコンピュータシステム上でローカルに実行されるプロセスに関連して説明するが、本発明は、通信ネットワークを介して接続された複数のリモート処理装置によってタスクが実行される分散コンピューティング環境で動作するネットワークノード内に組み込まれる可能性がある。分散コンピューティング環境では、一般に、メモリ記憶装置を含むローカルおよびリモートのコンピュータ記憶媒体にプログラムモジュールを置くことができる。
【００２０】
引き続き図１を参照すると、本発明を実施するシステムの例は、汎用コンピューティング装置をコンピュータ１１０の形で含んでいる。コンピュータ１１０の構成要素は、それだけには限定されないが、処理ユニット１２０、システムメモリ１３０、およびシステムメモリを含む様々なシステム構成要素を処理ユニット１２０に結合するシステムバス１２１を含み得る。システムバス１２１は、様々なバスアーキテクチャのうちの任意のものを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造のうちどんなものでもよい。こうしたアーキテクチャには、それだけには限定されないが一例として、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ電子装置規格化協会（ＶＥＳＡ）ローカルバス、およびメザニンバスとしても知られている周辺部品相互接続（ＰＣＩ）バスなどがある。
【００２１】
コンピュータ１１０は、一般に様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ１１０からアクセスできる使用可能な任意の媒体とすることができ、揮発性および不揮発性媒体、リムーバブルおよび非リムーバブル媒体を含む。コンピュータ可読媒体は、それだけには限定されないが一例として、コンピュータ記憶媒体および通信媒体を含み得る。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、他のデータなど、情報を記憶するための任意の方法または技術で実施される揮発性および不揮発性のリムーバブルおよび非リムーバブル媒体がある。コンピュータ記憶媒体には、それだけには限定されないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、または所望の情報の格納に使用でき、コンピュータ１１０からアクセスできる他の任意の媒体などがある。通信媒体は一般に、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを搬送波または他の移送機構などの変調されたデータ信号に組み込む。これには任意の情報配信媒体がある。「変調されたデータ信号」という用語は、信号内の情報を符号化するようにして設定または変更された１つまたは複数のその特徴を有する信号を意味する。通信媒体には、それだけには限定されないが一例として、有線ネットワーク、直接配線された接続などの有線媒体、および音響、ＲＦ、赤外線、その他の無線媒体などの無線媒体がある。また、上記の任意の組合せもコンピュータ可読媒体の範囲内に含まれるものとする。
【００２２】
システムメモリ１３０は、読取り専用メモリ（ＲＯＭ）１３１やランダムアクセスメモリ（ＲＡＭ）１３２など、揮発性および／または不揮発性メモリの形のコンピュータ記憶媒体を含む。基本入出力システム１３３（ＢＩＯＳ）は、例えば起動中など、コンピュータ１１０内の要素間での情報の転送を助ける基本ルーチンを含み、ＲＯＭ１３１に格納されることもある。ＲＡＭ１３２は一般に、処理ユニット１２０から直接アクセス可能な、かつ／または処理ユニット１２０が現在処理しているデータおよび／またはプログラムモジュールを含む。図１は、それだけには限定されないが一例として、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７を示している。
【００２３】
コンピュータ１１０は、他のリムーバブル／非リムーバブル、揮発性／不揮発性コンピュータ記憶媒体を含むこともできる。一例にすぎないが、図１は、非リムーバブル不揮発性磁気媒体から読み取り、あるいはそこに書き込むハードディスクドライブ１４０、リムーバブル不揮発性磁気ディスク１５２から読み取り、あるいはそこに書き込む磁気ディスクドライブ１５１、およびＣＤ−ＲＯＭや他の光媒体など、リムーバブル不揮発性光ディスク１５６から読み取り、あるいはそこに書き込む光ディスクドライブ１５５を示している。動作環境の例で使用できる他のリムーバブル／非リムーバブル、揮発性／不揮発性コンピュータ記憶媒体には、それだけには限定されないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、半導体ＲＡＭ、半導体ＲＯＭなどがある。ハードディスクドライブ１４１は一般に、インターフェース１４０などの非リムーバブルメモリインターフェースを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は一般に、インターフェース１５０などのリムーバブルメモリインターフェースによってシステムバス１２１に接続される。
【００２４】
上述し、図１に示したドライブおよびその関連のコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびコンピュータ１１０の他のデータの記憶を提供する。図１では例えば、ハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７を記憶するものとして示されている。これらの構成要素は、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７と同じであっても、異なっていてもよいことに注意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７は少なくとも異なるコピーであることを示すために、ここではそれらに異なる番号を付している。ユーザは、キーボード１６２、および一般にマウス、トラックボール、またはタッチパッドと呼ばれるポインティング装置１６１などの入力装置を介して、コマンドおよび情報をコンピュータ１００に入力することができる。他の入力装置（図示せず）には、マイクロフォン、ジョイスティック、ゲームパッド、衛星アンテナ、スキャナなどがある。これらおよび他の入力装置は、しばしばシステムバスに結合されているユーザ入力インターフェース１６０を介して処理ユニット１２０に接続されるが、パラレルポート、ゲームポート、ユニバーサルシリアルバス（ＵＳＢ）など他のインターフェースおよびバス構造で接続してもよい。モニタ１９１または他のタイプの表示装置もまた、ビデオインターフェース１９０などのインターフェースを介してシステムバス１２１に接続することができる。モニタに加えて、コンピュータは、出力周辺インターフェース１９５などを介して接続できるスピーカー１９７、プリンタ１９６など他の周辺出力装置を含むこともできる。
【００２５】
コンピュータ１１０は、リモートコンピュータ１８０など１つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク環境で動作する可能性がある。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルーター、ネットワークＰＣ、ピア装置、または他の一般のネットワークノードでよく、一般にコンピュータ１１０に関連して上述した多くまたはすべての要素を含むが、図１には、メモリ記憶装置１８１のみを示している。図１に示した論理接続は、ローカルエリアネットワーク（ＬＡＮ）１７１および広域エリアネットワーク（ＷＡＮ）１７３を含むが、他のネットワークを含んでいてもよい。こうしたネットワーキング環境は、オフィス規模、全社規模のコンピュータネットワーク、イントラネット、およびインターネットではごく一般的である。
【００２６】
ＬＡＮネットワーキング環境で使用する場合、コンピュータ１１０は、ネットワークインターフェースまたはアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境で使用する場合、コンピュータ１１０は一般に、インターネットなどＷＡＮ１７３を介して通信を確立するモデム１７２または他の手段を含む。モデム１７２は、内蔵のものでも外付けのものでもよく、ユーザ入力インターフェース１６０または他の適切な機構を介してシステムバス１２１に接続することができる。ネットワーク環境では、コンピュータ１１０に関連して示したプログラムモジュール、またはその一部をリモートメモリ記憶装置に格納することができる。図１は、それだけには限定されないが一例として、リモートアプリケーションプログラム１８５をメモリ記憶装置１８１上に存在するものとして示している。図示したネットワーク接続は例であり、コンピュータ間の通信リンクを確立する他の手段を使用してもよいことは理解されよう。
【００２７】
図２は、本発明を具現化し、動画システムの１組の相互作用する機能的構成要素を組み込むグラフィカル表示アーキテクチャの構成要素を識別する高レベルの概略図である。図２に示すグラフィカル表示アーキテクチャは、本発明の実施形態の例の説明を助けるために１組の機能的構成要素に分割している。本発明は、例で示したような構成要素の構成に限定されない。代わりに、本明細書で後述する構成要素の機能は、本発明の代替実施形態において異なるようにグループ分けされる。
【００２８】
動画システムは、いくつかの副構成要素を含み、組み合わせて、アプリケーション２００によってサブミットされる高レベルの命令に基づいてグラフィカル表示オブジェクト（および非視覚パラメータ）の動画化を容易にする。アプリケーション２００は、オペレーティングシステムの内部または外部に存在する任意のアプリケーションまたはコントロールとすることができる。本明細書に記載した動画インフラストラクチャによって、動画のプログラミングおよび実行をかなりの程度まで汎用の動画構成要素に委任することができる。本発明の一実施形態では、アプリケーション２００は、更新されたビットマップを計算するのではなく、１つまたは複数の表示オブジェクトに動画を指定／定義するコマンドを動画システムにサブミットする。
【００２９】
アプリケーション２００のコマンドによれば、動画システムは、動画オブジェクトを構築する。動画オブジェクトは、インスタンス化されると、要素ツリー２０２に関連付けることができる。要素ツリー２０２は、アプリケーション２００によって生成されたイベントに応答して作成される。こうしたイベントの例には、アプリケーション２００の開始、または新しいビューの作成をもたらす他の何らかの実行されたコマンドを含む。その後アプリケーションは、要素ツリー２０２において新しい要素を作成し、後に要素を削除する。
【００３０】
要素ツリー２０２は、階層的に並べられた１組の要素を含む。本発明の一実施形態では、要素ツリー２０２は、ドキュメントを構造的に定義する。各要素は、ほとんどの場合、例えばグラフィカルユーザインターフェース上に表示可能な可視画像に対応するオブジェクトを表す。要素の例には、ボタン、テーブル、テーブルセル、リストコントロール、フレーム、イメージ、およびパラグラフ（フローパネル）などがある。要素ツリー２０２内の要素は一般に、１つまたは複数のプロパティ（色、高さ、幅、位置、透過性など）を含む。要素のプロパティに割り当てられる値は、要素の表示状態の定義に貢献する。本発明の一実施形態では、動画オブジェクトは、１つまたは複数の要素／プロパティの組合せに割り当てられる。その後、動画オブジェクトインスタンスは、各動画オブジェクトインスタンスが関連付けられるタイムラインに従って要素のプロパティに関する動画挙動をレンダリングするよう実行される。
【００３１】
「タイムライン」
タイミングおよびタイムラインは、本明細書に記載した動画システムを駆動する。本明細書に記載されている動画システムのタイミングの側面は、Ｗ３Ｃの同期マルチメディア統合言語（ＳＭＩＬ２．０）仕様から派生したものである。各動画オブジェクトは、作成されると、実行前に、動画オブジェクトの定義された挙動に関連付けられる一連の変化の進行を制御するタイムライン（例えば時間系列定義など）に関連付けられる。さらに上記のタイムラインは、動画挙動のローカルな／相対的な時間系列（動画、反復、加速などの期間など）のみを定義する。したがって動画オブジェクトは、動画オブジェクトに「親」タイムラインが（直接に、または別のオブジェクトを介して間接的に）割り当てられるまで実行することができない。したがって、動画オブジェクトを実行するために、動画オブジェクトの相対的なタイミング定義を親タイムラインによって定義された実際の実行時間に結び付ける「親」タイミング定義（「親タイムライン」）に相対的なタイムラインが割り当てられる。したがって親タイムラインは、動画オブジェクトの動画挙動を管理しない。代わりに、親タイムラインは、例えば動画が実際に始まるときなど、外部挙動を管理する。タイムラインは、階層型のタイミングツリー構造で維持され、個々のタイムラインは、親タイムラインを基準にして挙動を定義する属性を有する。最上位のタイムラインは、ルート（ドキュメント、ページ、フレームなど）タイムラインを基準にして定義される。
【００３２】
親タイムラインを、そのローカルの動画タイミング挙動を定義するそれ自体の内部タイムラインを有する動画オブジェクトに関連付けるいくつかの方法がある。一例として、親タイムラインは、動画オブジェクトが結び付けられるタイミング定義である。タイムラインを指定するモードの一例では、動画オブジェクトの作成を要求するエンティティ（アプリケーションなど）は、動画オブジェクトのタイムラインが結び付けられる親タイムラインを指定する。この場合、動画オブジェクトのタイムラインは、作成時に親タイムラインを識別し、作成された動画オブジェクトは、（コピーとは異なり）動画オブジェクトがその後関連付けられる１つまたは複数の要素／プロパティの組合せによって使用される実際に実行される動画オブジェクトである。
【００３３】
動画オブジェクトにタイムラインを指定する別のモードの例では、それ自体のタイムラインを含み、しかし親タイムラインは含んでいない未完成の動画オブジェクトクラスが作成される。（親タイムラインを欠く）動画オブジェクト定義のこの未完成の形式を、本明細書では「動画テンプレート」と呼ぶ。動画テンプレートは実行されず、代わりに動画テンプレートのコピー（またはクローン）が作成され、新しい動画インスタンスにはそれぞれ、新しい動画が結び付けられる要素の動画の親タイムラインが割り当てられる。こうした場合、クローン化された動画オブジェクトの親タイムラインは、クローン化された動画オブジェクトが結び付けられる要素によって指定される親タイムラインである。特定の親タイムラインのタイミング定義がないことによって、単一の動画テンプレートから複数のクローンを作成することができ、「クローン化された」各動画オブジェクトは、それが結び付けられる要素によって定義される要素指定の動画実行（開始、一時停止など）タイミングを採用する。本システムは、親タイムラインを後から指定することを可能にするため、要素ツリー２０２上に配置されるように作成された動画オブジェクトは、作成時に親タイムラインの明示的な指定を必要としない。しかし、こうしたタイミング情報が完成されて、動画が実行可能をなる。
【００３４】
あるいは、アプリケーション２００は、動画オブジェクトをメディア統合レイヤ（ＭＩＬ）インターフェース２０６を介して直接メディア統合レイヤ（ｍｅｄｉａ  ｉｎｔｅｇｒａｔｉｏｎ  ｌａｙｅｒ：ＭＩＬ）２０４に渡す。ＭＩＬ２０４は、一例として、Ｂｅｄａ他による２００２年６月２７日に出願した「Multiple-Level Graphics Processing System and Method」という名称の米国特許出願第１０／１８４７９５号明細書に記載されている。この内容を、そこに含まれるすべての参照の内容を含めて、参照により本明細書に明示的に組み込む。本発明の一実施形態では、アプリケーション２００からＭＩＬインターフェース２０６に直接渡された動画オブジェクトは、親タイムラインの明示的な指定が必要である。そうでなければ動画オブジェクトは実行されない。
【００３５】
ＭＩＬ２０４は、ＭＩＬインターフェース２０６を介してアクセスされる１組のグラフィカル表示オブジェクトのレンダリングおよびコントロール構成要素を含む。ＭＩＬインターフェース２０６は、一例として、Ｂｅｄａ他による２００２年６月２７日に出願した「Generic Parameterization for a Scene Graph」という名称の米国特許出願第１０／１８４７９６号明細書に記載されている。この内容を、そこに含まれるすべての参照の内容を含めて、参照により本明細書に明示的に組み込む。ＭＩＬインターフェース２０６は、アプリケーションの表示フレームの低レベル記述を構築するためにアプリケーション２００またはプレゼンタシステム２０８（後述）が依存するインターフェースである。ＭＩＬインターフェース２０６は、ＤｒａｗＬｉｎｅ（．．．）、ＰｕｓｈＴｒａｎｓｆｏｒｍ（．．．）、ＰｏｐＴｒａｎｓｆｏｒｍ（．．．）など１組のメソッドの呼び出しを含む。ＭＩＬインターフェース２０６によって提供される呼び出しは、シーン／ドキュメント／またはグラフィカルユーザインターフェースを記述する。
【００３６】
本明細書で取り組んだ本発明は、時間の経過に伴って変化するグラフィカルオブジェクトおよび任意のパラメータ値に対して動画を定義するインフラストラクチャを提供する。したがって、実際の動画は、一例として本明細書で概説したＭＩＬ２０４を含む様々なグラフィックスレンダリングエンジンの内のいずれかで実行することができる。
【００３７】
要素ツリー２０２によって維持される要素は、高レベルグラフィカル項目（ボタン、スクロールバーなど）を表す。本発明の一実施形態では、こうしたグラフィカルオブジェクトは、ＭＩＬ２０４構成要素によって直接使用することのできない高レベルで記載される。したがってプレゼンタシステム２０８内のプレゼンタは、プレゼンタが関連付けられる要素ツリー２０２の構成体を、要素ツリー２０２の要素を構成する可視要素（線、塗りつぶした四角形など）にコンパイル／変換する。プレゼンタシステム２０８は、可視要素を、ＭＩＬインターフェース２０６を介してＭＩＬ２０４に渡す。プレゼンタシステム２０８の機能を実行する多くの方法がある。プレゼンタシステム２０８の実施形態の例は、Ｐａｒｉｋｈ他による２００３年５月９日に出願した（速達郵便ＥＶ３２９７３４５８４ＵＳ）の「SYSTEM FOR HOSTING GRAPHICAL LAYOUT/PRESENTATION OBJECTS」という名称の米国特許出願第１０／（出願番号未割当）号明細書に詳細が記載されている。この内容は、そこに含まれるすべての参照を含めて、参照により本明細書に明示的に組み込む。
【００３８】
本発明の特定の実施形態では、ＭＩＬ２０４は、プレゼンタシステム２０８によってＭＩＬインターフェース２０６を介してＭＩＬ２０４に渡される可視要素を処理することができる高レベル可視ツリー２１０を含む。高レベル可視ツリー２１０は、構造化された１組の基本形状（線、四角形、画像など）を含む。アプリケーションの単一の画像フレームを描く構造化された１組の基本形状。高レベル可視ツリー２１０は、「独立型動画（ｉｎｄｅｐｅｎｄｅｎｔ  ａｎｉｍａｔｉｏｎｓ）」と呼ばれる動画のクラスをサポートする。独立型動画は、以下で詳述するが、動画を達成するのにプレゼンタシステム２０８のレイアウト機能に依存しない。
【００３９】
低レベル可視ツリー２１２は、高レベル可視ツリー２１０を平たくしたものである。低レベル可視ツリー２１２は、高レベル可視ツリー２１０を介して低レベル可視ツリー２１２に渡された独立型動画を迅速にレンダリングし、実行するように構成されている。低レベル可視ツリー２１２は、例えば高レベル可視ツリー２１０からその構造への更新の間の複数のフレームを実行する可能性がある。
【００４０】
低レベル可視ツリー２１２は、出力ドライバとのインターフェースをとるように構成されている。リモートマシンネットワーク通信ドライバ２１４は、アプリケーション２００が出力をレンダリングするマシンに対応するオブジェクトである。マシンは、アプリケーション２００が実行されるマシンとは異なるマシンである可能性がある。こうした場合、アプリケーション２００は、アプリケーション２００のユーザのために、その可視出力をリモートマシンの表示出力にネットワーク通信を介して伝える。
【００４１】
あるいは、低レベル可視ツリー２１２は、グラフィカル表示ドライバ２１６に出力をレンダリングする。グラフィカル表示ドライバ２１６は、ローカルユーザのためにアプリケーション２００を現在実行しているマシンの出力表示装置（可視表示画面など）にフレームを描画するよう働くローカルマシン上のハードウェアへのフレーム表示データの通信を代行する。
【００４２】
オブジェクトが動画化されているとき、レンダーキュー項目２１３は、複数の動画が確実に他との同期状態を保つようにする。レンダーキュー項目２１３は、例えば要素ツリー２０２への変更が行われたとき、動画オブジェクトによって値が変更されたときなど、新しいフレームのレンダリングの必要があるたびに作成される。レンダーキュー項目２１３は、完全に処理されるとすぐに消滅する。レンダーキュー項目２１３は、その同期の役割を実行する際、タイミングツリー２２８（後述）をティック（ｔｉｃｋ）し、その結果、従属的に動画化されたプロパティを無効にし、ティック手順が完了した後、プレゼンタシステム２０８を呼び出してレイアウトを完成させ、高レベル可視ツリー２１０を更新し、プレゼンタシステム２０８がレイアウトを完成させた後、変更をコンパイルし、低レベル可視ツリー２１２に伝達するよう可視ツリー２１０に要求する処理を構成する。レンダーキュー項目２１３の機能を実行するステップについて、図３を参照して本明細書で後述する。
【００４３】
提供された動画化の値に従ってデータのフレームを維持し、生成するいくつかの機能ブロックの例を説明してきたが、次に要素ツリー２０２内の動画化されたプロパティのソースおよび時間で駆動される変化に注目する。プロパティシステム２２０は、プロパティの値を維持するよう働く。プロパティシステム２２０は、プレゼンタシステム２０８が値を使用して高レベル可視ツリー２１０を作成できるように、値を要素に格納し、それを計算する。プロパティシステム２２０は、特定のプロパティの要素の値がその要素の１組の子によって継承されるプロパティ値の継承モデルをサポートする。
【００４４】
図２で例示的に示すように、プロパティシステム２２０は、多くのソースから入力値を受信する。アプリケーション２２０は、プロパティシステム２２０によって維持される動的プロパティの基底値を設定（および現在値を取得）する。要素ツリー２０２は、プレゼンタシステム２０８に提供するための要素ツリー２０２内の要素のプロパティの値をプロパティシステム２２０に要求する。プレゼンタシステム２０８は、プロパティ値を使用して、呼び出しのためのＭＩＬインターフェース２０６への入力を生成する。要素ツリー２０２の要素を処理する過程の間、プレゼンタシステム２０８は、動的プロパティの基底値および要素に関連する他の情報をプロパティシステム２２０に要求して、値を整理し、プレゼンタシステム２０８が関連付けられる特定のビューを構成する要素に割り当てる。
【００４５】
プロパティシステム２２０は、異なるソースからの値に優先順位を付ける。例えば、プロパティシステム２２０によって、ローカルに指定されたプロパティ値が、プロパティシートで指定された値または親から継承された値より優先されるようにすることができる。プロパティシステム２２０は、様々なソースによって提供される値をソートし、受信した値のいずれかに最高優先順位の値を戻すロジックを含む。プロパティシステム２２０は、プロパティの現在値を計算するときにプロパティに結び付けられる任意のアクティブな動画を考慮に入れる。ユーザが特定のソースからの値を要求した場合、プロパティシステム２２０は、こうした要求を扱う。
【００４６】
プロパティシステム２２０によって維持されるプロパティ値への変更を行う動画オブジェクトは、動画オブジェクトインスタンス（またはその親）に関連付けられるタイムラインに基づいてプロパティ値を変更する方法を定義し、実行する動画クラス２２２からインスタンス化される。動画クラスオブジェクトインスタンスは、アプリケーション２００によって作成される。また、アプリケーション２００は、動画クラス２２２からインスタンス化された動画オブジェクトに値を設定する。また、アプリケーション２００は、特定の動画クラスオブジェクトについての現在値を要求することもできる。動画クラスオブジェクトは、動画クラスオブジェクトのための参照が存在しないときは削除される。動画クラス２２２はそれぞれ、特定の動画挙動を記載するＦｒｏｍ、Ｔｏ、Ｄｕｒａｔｉｏｎなどの指定可能なプロパティを有する。
【００４７】
動画クラスは、異なる動画挙動およびその対応するデータ型のために異なるクラスが存在するように類別される。動画クラスの例には
ＦｌｏａｔＡｎｉｍａｔｉｏｎ−浮動小数点を提供
ＢｏｘＵｎｉｔＡｎｉｍａｔｉｏｎ−プレゼンタボックスの寸法を提供
ＰｏｉｎｔＡｎｉｍａｔｉｏｎ−四角形の左上位置を提供
ＣｏｌｏｒＡｎｉｍａｔｉｏｎ−時間変化するカラー値を提供
ＢｏｏｌＡｎｉｍａｔｉｏｎ−ブール値を提供
などがある。動画クラス２２０のインスタンスは不変である。したがって、これらをいったん作成すると、そのプロパティ値を変更することはできない。このことは、アプリケーションの作成者が、その定義済みの挙動が変更されることを気にすることなく、動画インスタンスを複数の場所で使用することができることを意味する。
【００４８】
動画コレクションクラス２２４は、動画クラス２２２を整理する。動画コレクションクラスは、アプリケーション２００によって作成される。アプリケーション２００は、動画コレクションクラス内に含まれる１つまたは複数の動画クラス２２２を指定する。次いでアプリケーション２００は、動画コレクションクラスを、プロパティシステム２２０で動的プロパティを動画化する動画の集合として設定する。また、アプリケーション２００は、動画コレクションクラスインスタンスを、要素ツリー２０２の特定の要素のいずれかに関連付けられた任意の動的プロパティに関連付けることもできる。アプリケーション２００は、動画コレクションクラス２２４の特定の動画コレクションクラス内に含まれている動的クラスを列挙し、構成済みの動画値を動画コレクションクラスに要求することができる。動画コレクションクラスインスタンスは、特定の動画コレクションクラスインスタンスについての参照が存在しないときに不要データとして処理される。
【００４９】
動画コレクションは、同じデータ型を処理する動画オブジェクトの集合である。動画コレクションクラスは、そのリスト内の動画クラスの相対的優先度、および動画コレクションクラスインスタンスに渡された基底値に従って動画クラスをどのように構成するかを認識しており、動画クラスは現在の値を戻す。本発明の一実施形態では、動画クラスは、ともに動画コレクションクラスにおいて連鎖される。動画コレクションの入力は、基本プロパティ値を受信する。第１の段階（動画オブジェクト）は、同じ型の変更されたプロパティ値（動画コレクションクラスオブジェクト内に複数の動画オブジェクトがある場合）を、次の可能性のある段階への入力として提供する。動画コレクションのパイプライン化された動画オブジェクトによる基底値のパイプライン処理によって、動画化されるプロパティの現在の値を提供する。こうしたパイプライン化の結果、連続的に実行される複合動画機能が作成される。
【００５０】
動画コレクションクラスは、動画をサポートするためのプロパティ値の型ごとに存在する（ＦｌｏａｔＡｎｉｍａｔｉｏｎＣｏｌｌｅｃｔｉｏｎ、ＢｏｘＵｎｉｔＡｎｉｍａｔｉｏｎＣｏｌｌｅｃｔｉｏｎ、ＰｏｉｎｔＡｎｉｍａｔｉｏｎＣｏｌｌｅｃｔｉｏｎ、ＣｏｌｏｒＡｎｉｍａｔｉｏｎＣｏｌｌｅｃｔｉｏｎ、ＢｏｏｌＡｎｉｍａｔｉｏｎＣｏｌｌｅｃｔｉｏｎなど）。動画コレクションクラス型のリストは、単に例として示している。当分野の技術者であれば、多種多様な動画コレクションクラス型が可能であることは容易に理解できよう。動画クラス２２０と同様、動画コレクションクラス２２４からの動画コレクションクラスのインスタンスは不変である。
【００５１】
動的動画コレクションクラス２２６は、動画コレクションクラス２２４の機能に基づいている。動的動画コレクションクラス２２６のインスタンスは、動画コレクションクラス２２４の動画コレクションクラスインスタンスへの参照を堅持する。さらに、動的動画コレクションオブジェクトインスタンスは、要素ツリー２０２内の要素、および動的動画コレクションインスタンスが動画化している要素のプロパティへの参照を堅持する。アプリケーションの作成者は、本発明の一実施形態では、動的動画コレクションインスタンスを作成したり、それにアクセスしたりすることはできない。代わりに、プロパティシステム２２０は、アプリケーション２２０からの要求を受信すると、動的動画コレクションインスタンスを作成する。
【００５２】
動画コレクションクラスインスタンスが動的プロパティに関連付けられると、動的動画コレクションオブジェクトインスタンスがプロパティシステム２２０によって作成される。動的プロパティは、幅、高さ、上、左、または他の任意の定義プロパティなど、要素ツリー２０２の要素の単一の定義プロパティに関連付けられる値を保持し、かつ／または計算する。また、動的動画コレクションは、動画コレクションクラス２２４の動画クラスからインスタンス化された動画コレクションを保持し、したがって動画コレクションクラスを要素ツリー２０２の特定の要素／プロパティの組合せに関連付ける。プロパティシステム２２０は、動的プロパティの現在値を求められると、動的プロパティが動的動画コレクションクラス２２６からインスタンス化された関連する動的動画コレクションオブジェクトを有しているかどうかを決定し、動的動画コレクション内の現在アクティブな任意の動画クラスによって基底値を処理して動画化された現在値を提供する。本発明の一実施形態では、プロパティシステム２２０が特定の動的動画コレクションオブジェクトに現在値を要求すると、指定された動的動画コレクションは、要求を動画コレクションクラス２２４の１つからインスタンス化された適切な動画コレクションオブジェクトに渡す。動画コレクションオブジェクトは、動画クラス２２２からインスタンス化された動画オブジェクトのその組の中をループして進み、現在値を提供して、その呼び出し側の動的動画コレクションに、動画コレクションオブジェクトが最終値を提供するための基礎を提供する。
【００５３】
アプリケーション２２０によって作成された動画の一部は、親タイムラインを指定せず、要求された動画に適した親タイムラインの選択を動画システムに期待するものがある。関連付けプロセス中、プロパティシステム２２０は、最初に、動画コレクションクラス内の各動画クラスが親タイムラインを有しているかどうかを決定する。動画クラスが親タイムラインに関連付けられていない場合、動的動画コレクションが関連付けられている表示要素の親タイムラインに関連付けられた新しい動画クラスが作成される。さらに、表示要素に関連付けられている親タイムラインが変更された場合、動的動画コレクションは再構築されて、親タイムラインの変更を反映することに注意されたい。
【００５４】
適切に機能するために、動画コレクションクラス内のすべての動画クラスは、最終的に、その実行のタイミングを管理する親タイムラインを指定する必要がある。指定された動画コレクションクラス内のすべての動画クラスが親タイムラインに関連付けられている場合、動的動画コレクションは、指定された動画コレクションクラスを使用する。そうでない場合、動画クラスおよび動画コレクションクラスの不変性を考慮して、プロパティシステム２２０は、新しい動画コレクションクラスを作成する。新しい動画コレクションクラスは、割り当てられた親タイムラインをそれぞれ有する複数の新しい動画クラスを含む。プロパティシステム２２０は、各動画オブジェクトが親タイムラインを有する新しい動画コレクションクラスを作成すると、動画コレクションクラスを、要素／動的プロパティの対に関連付けられた動的動画コレクションに提供する。この対に関連付けられた動的動画コレクションがまだ存在しない場合、プロパティシステムは、新しいもの２２６を作成する。
【００５５】
上記で何度も述べたように、タイミングは、要素ツリー２０２内の要素のプロパティに結び付けられた動画オブジェクトに関連する動画挙動を駆動する。本明細書で使用する場合、タイムラインは、１組のタイミング属性に従ってランタイム状態を維持するタイミングエンティティのインスタンスである。タイミングツリー２２８は、本発明の一実施形態では、階層的に配列されているタイミングノード（タイムライン）を含むデータ構造である。タイミングノード間の関係は、継承ルール、およびタイミングツリー２２８のタイミングノードに対応する各タイムラインのノード固有のタイミング属性によって定義される。継承ルールは、親開始時間に関連する子開始時間のオフセットの定義を含む。さらに、継承関係は、制御関係を指定する。例えば、親が再起動、繰り返し、一時停止、再開、シーク、または終了すると、すべての子（およびその子など）もそのように行う。こうした関係によって単一の親タイムラインに対するアクションを介して子タイムラインのグループ全体を開始させることができる。タイミングツリー２２８は、（１）動画クラスインスタンスの値への変更を潜在的に駆動するタイムライン、および（２）他のタイムラインを含むコンテナタイムラインを堅持する。タイムラインから導出される進行値（ｐｒｏｇｒｅｓｓ  ｖａｌｕｅ）を使用して、所与の動画オブジェクトの現在値を算出する。タイミングツリー２２８は、アプリケーション２００の起動時に作成される。
【００５６】
タイミングツリー２２８は、図２に示した動画インフラストラクチャに対するタイミングイベント通知の役割を実行する。最初に、動的動画コレクションがインスタンス化されると、その動的コレクションクラスオブジェクトにおける動的インスタンスが進行したかどうかの通知を発行せよとの要求が動的動画コレクションからタイミングツリー２２８に発行される。動的動画コレクションがタイミングツリー２２８から、その動画の１つが進行したとの通知を受信すると、動的動画コレクションインスタンスは、それが関連付けられる表示要素の動的プロパティが現在無効であることをプロパティシステム２２０に通知する。次に表示要素プロパティの無効化によって、本明細書では依存型動画（ｄｅｐｅｎｄｅｎｔ  ａｎｉｍａｔｉｏｎ）と呼ばれるプロセスが開始する。依存型動画処理中、プレゼンタシステム２０８は、動画に関連する値の変更に従って高レベル可視ツリー２１０を構築するよう要求される。
【００５７】
また、タイミングツリー２２８は、動画クラス２２２のインスタンスについて進度の測定および報告の役割を行う。無効化に応答して、動画クラス２２２のインスタンスは、その現在値を報告するよう要求される。動画クラス２２２は、それぞれが関連付けられているタイムライン進行値について、タイミングツリー２２８に照会する。その後動画クラス２２２は、タイミングツリーによって提供される進行値に基づいて各現在値を計算し、現在値を任意の要求側エンティティに提供する。
【００５８】
レンダーキュー項目２１３は、タイミングツリー２２８と相互作用する。レンダーキュー項目は、実行されると、アプリケーション２００によって生成されたアプリケーション／ページ／シーンが低レベル可視ツリー２１２までコンパイルされ、最終的に表示装置上にレンダリングされるようにするオペレーティングシステムキューのキュー項目である。呼び出されると、レンダーキュー項目が行う最初のことは、タイミングツリー２２８を「ティックする」ことである。これには、タイミングツリーにそのタイムラインを現在の時間に更新させる効果がある。その結果、タイミングツリー２２８は、プロパティシステム２２０において多くの無効化を引き起こす通知を送信する。独立型動画の進行値も、ティックが実行されたときに更新される。レンダーキュー項目２１３の進行中、タイミングツリー２２８は変更され、レンダーキュー項目は、タイミングツリー２２８が安定するまで繰り返し、同時に「再ティック」を行う。
【００５９】
独立型／依存型動画
独立型動画および依存型動画については上述した。本発明の一実施形態では、図２に示した動画システムは、少なくともこれら２つの型の動画インスタンスをサポートする。その分類は、他の動画インスタンスとの関係に基づいている。独立型動画インスタンスは、ビューのレイアウトに影響を与えず、したがってより高速でリフレッシュすることができる。独立型動画の例は、色の動画である。オブジェクトの色は、その幅または高さを変更せず、したがって色が変化する動画は、色が変化する動画要素がページにどのように配置されるか（サイズや位置など）に影響を与えない。
【００６０】
依存型動画は、一般に依存型動画が関連付けられた要素のレイアウトを変更し、したがって、グラフィックユーザインターフェースレイアウトの再計算が必要となる。依存型動画インスタンスは、要素ツリー２０２構造内に格納されて、影響を受けるすべての表示要素プロパティの適切な処理を確実にする。潜在的にかなり大きい計算およびメモリアクセスが必要となるため、ＭＩＬ２０４は、依存型動画をより低いリフレッシュ速度で計算する可能性がある。
【００６１】
「動画」クラスの３つのレベル／段階
本発明の一実施形態では、表示要素プロパティに適用される動画挙動は、３つのレベルのクラスおよびその対応するインスタンスによって実施される。引き続き図２を参照すると、動画クラス２２２は、プロパティ値に関する特定の定義済み動画操作（一般に単一の動画挙動）を計算することができるオブジェクトを定義する１組のオブジェクトクラスを含む。
【００６２】
次のレベルでは、動画コレクションクラス２２４は、動画クラス２２２からの１つまたは複数の個々の動画クラスを単一の動画クラス定義にグループ化し／割り当て、それによって単一の要素プロパティに関する複合動画挙動の作成をサポートする１組のオブジェクトを定義する。
【００６３】
次のレベルでは、動的動画コレクション２２６は、動画コレクションクラス２２４のうちの１つによって定義される動画挙動を、要素ツリー２０２内の要素のプロパティ関して実行するオブジェクト型を定義する。こうした機能は、動画コレクションクラス２２４の動画コレクションクラスインスタンスへの参照、および要素ツリー２０２内の要素および動的動画コレクションクラスインスタンスが動画化している要素のプロパティへの参照を堅持する動的動画コレクション２２６のインスタンスによって容易になる。動画コレクションクラスインスタンスが動的プロパティに関連付けられると、プロパティシステム２２０によって動的動画コレクションが作成される。動的プロパティは、幅、高さ、上、左、または任意の要素の他の任意の定義プロパティなど、要素ツリー２０２内の要素の単一の定義プロパティに関連する値を保持し、かつ／または計算する。また、動的動画コレクションは、動画コレクションクラス２２４のうちの１つからインスタンス化された動画コレクションクラスオブジェクトへの参照を保持し、このようにして動画コレクションクラスオブジェクトを、要素ツリー２０２内の特定の要素／プロパティの組合せに関連付ける。
【００６４】
図３を参照すると、図２のレンダーキュー項目２１３によって実行されるレンダリングシーケンスの例の１組のステップの概要を示している。上述したように、レンダーキュー項目２１３は、実行されると、アプリケーション２００によって生成されたアプリケーション／ページ／シーンが低レベル可視ツリー２１２までコンパイルされて表示装置によってレンダリングされるようにする。この一連のステップは例であり、レンダーキュー項目操作は、本発明の他の実施形態では変更されることに注意されたい。
【００６５】
最初に、ステップ３００中、レンダーキュー項目２１３によって、タイミングツリー２２８のティックが引き起こされる。タイミングツリー２２８のティックは、タイミングツリー２２８にそのタイムラインを現在の時間に更新させる効果がある。その結果、タイミングツリー２２８は、プロパティシステム２２０において多くの無効化（依存的に動画化されるプロパティの無効化など）を引き起こす通知を送信する。本発明の一実施形態では、更新された時間によって影響を受けた動画オブジェクトによってＣｈａｎｇｅイベントが生成される。これらのイベントは、動画オブジェクトの関連のＤｙｎａｍｉｃ  Ａｎｉｍａｔｉｏｎ  Ｃｏｌｌｅｃｔｉｏｎオブジェクトインスタンスによって収集され、処理される。Ｄｙｎａｍｉｃ  Ａｎｉｍａｔｉｏｎ  Ｃｏｌｌｅｃｔｉｏｎオブジェクトは、要素のその動的プロパティを無効にする。独立型動画の進行値も、ステップ３００でティックが実行されたときに更新される。
【００６６】
タイミングツリー２２８のティックを行った後、ステップ３１０中に、レンダーキュー項目２１３によってレイアウトプロセスが行われる。レイアウトプロセス３１０中に、レンダーキュー項目の最後の実行以降の要素ツリー２０２への任意の変更に従って高レベル可視ツリー２１０が更新される。本発明の一実施形態では、（時間のティックの結果）プロパティ値を変更したグラフィカル要素をビューに配置するよう働くプレゼンタが無効になる。これは、プレゼンタは、そのレイアウトを再計算し、影響を受けた動的プロパティへの変更を組み込む新しい高レベル可視ツリーを作成する必要があることを意味する。また、ステップ３１０の間、表示システムは、レイアウトに影響を与える可能性のあるアプリケーション、オペレーティングシステムシェルなどからの要求を送受信する。こうした要求の例には、ヒットテスト、ユーザプログラムへのコールバック、グラフィカル表示に影響を与える一般のアプリケーションアクションなどがある。
【００６７】
レイアウトプロセス３１０中、タイミングツリー２２８構造は、変化する可能性がある（新しいタイミングノードが追加された、既存のノードが削除された、既存のタイミングノードに新しい参照が設定されたなど）。ステップ３２０で、タイミングツリー構造が変化したと決定されると、制御はステップ３００に戻され、その新しい形式のタイミングツリー２２８構造に対してタイミングのティックが再実行される。
【００６８】
タイミングツリー２２８の構造が変化していない場合、制御はステップ３２０からレンダリングステップ３３０に進み、ここで高レベル可視ツリー２１０は、新しい／更新されたグラフィカル表示データをコンパイルし、低レベル可視ツリー２１２に伝える。低レベル可視ツリー２１２は、受信された変化に基づいて、再計算された出力をドライバ２６２および／または２６４へレンダリングする。
【００６９】
その後、ステップ３４０の間、ティックの必要がある次の時間（最も近いイベント）を決定するために、動的動画コレクションに関連するタイムラインに照会する。ティックがそれ以上必要でない場合、制御は終了３６０に進む。ツリーのティックがさらに必要な場合、制御はステップ３５０に進み、レンダーキュー項目２１３の新しいインスタンスが、動画化された要素プロパティの動的動画コレクションインスタンスのために作成される。新しいレンダーキュー項目は、実行の必要があるときを指定する。指定された実行時間がまだ到達していないある時間である場合、レンダーキュー項目は最初に非アクティブリストに配置される。そのときになると、レンダーキュー項目は、アクティブキューに配置され、図３に示したステップに従って実行される。新しいレンダーキュー項目を作成した後、制御は終了３６０に進む。
【００７０】
要素プロパティの動画挙動は、動画クラス２２２からインスタンス化された１つまたは複数の動画オブジェクトによって実行される。各動画オブジェクトは、（少なくとも現在のタイムライン値を含む）第１の組の入力を取得し、動画化される表示要素をレンダリングするのに適した型の出力を生成する動画機能を含む。複数の動画クラス２２２のうちの様々なもの（ＰｏｉｎｔＡｎｉｍａｔｉｏｎなど）は、タイムライン進行値を、要素プロパティに適切なデータ型（点など）に変換する。
【００７１】
図４を参照すると、高レベル動画クラス構造の例の概要を示している。様々な動画クラスは、共通のパターンに従い、同様の１組のインスタンスを実装する。主に、プロパティのデータ型、および計算された進行値を考慮して現在値を入力値に割り当てるために（浮動小数点、ブール値、点など特定のデータ型を考慮して）実行された計算に違いが生じる。本明細書に含まれる動画クラスの機能の例および説明を考慮すると、こうした変更は当分野の技術者であれば十分実現できる。
【００７２】
本発明の一実施形態では、動画クラス構造は、１組の動画プロパティ４００を含む。Ｆｒｏｍプロパティは、動画開始値を指定する。Ｔｏプロパティは、動画終了値を指定する。Ｂｙプロパティは、動画の終了時の変更（デルタ）値を指定する。Ｔｏプロパティで明示的な終了値を指定する代わりに、Ｂｙプロパティが動画終了値と初期の動画値との間の差を指定する。
【００７３】
動画クラスは、各セグメント内の異なるタイミングパラメータを使用する複数のセグメントを含むことができる。ＫｅｙＶａｌｕｅｓプロパティは、動画の値のリストを指定する。ＩｎｔｅｒｐｏｌａｔｉｏｎＭｅｔｈｏｄプロパティは、ＫｅｙＶａｌｕｅｓプロパティで指定された２つのキー値の間を補間する方法を指定する。ＩｎｔｅｒｐｏｌａｔｉｏｎＭｅｔｈｏｄの例には、離散、線形、ペース、スプラインなどがある。ＫｅｙＴｉｍｅｓプロパティは、動画の間隔の制御に使用する時間値のリストを指定する。このリストは、ＫｅｙＶａｌｕｅｓリストと同じ数の要素を含む。このリストでは、時間値が昇順に配列され、このリストの最初の値は０、最後の値は１である（ただし、ＩｎｔｅｒｐｏｌａｔｉｏｎＭｅｔｈｏｄがＤｉｅｃｒｅｔｅに設定されている場合、最後の値は１以下の任意の数字となり得る）。ＫｅｙＳｐｌｉｎｅｓプロパティは、ＫｅｙＴｉｍｅｓリストに関連する１組のベジェ制御点を指定する。ベジェ制御点は、動画の間隔を制御する３次関数を定義する。このリストは、ＫｅｙＴｉｍｅｓリストより１つ少ない要素を含む。このリストは、ＩｎｔｅｒｐｏｌａｔｉｏｎＭｅｔｈｏｄ属性がＳｐｌｉｎｅに設定されている場合にのみ使用される。
【００７４】
動画クラス構造内の動画プロパティは、ブール値属性をいくつか含む。動画オブジェクトのタイムラインがアクティブであるか、充填期間（ｆｉｌｌ  ｐｅｒｉｏｄ）である場合、ＩｓＯｖｅｒｒｉｄｉｎｇＢａｓｅＶａｌｕｅプロパティがＴｒｕｅに設定される。さらに、ＩｓＡｃｃｕｍｕｌａｔｉｎｇプロパティによって、繰り返される動画シーケンスが要素のプロパティに累積的な効果を及ぼすことができる。ＩｓＡｃｃｕｍｕｌａｔｉｎｇプロパティをＴｒｕｅに設定すると、繰り返される動画シーケンスのすべての反復時に同じ道筋を繰り返すのではなく、動画は、各反復の効果を蓄積し、本質的にそれ自体で構成し、前の動画により誘導された要素のプロパティの変更に基づいて構築する。
【００７５】
動画オブジェクトのＧｅｔＶａｌｕｅ（１組のメソッド４０２との関連で後述する）の戻り値が基底値（動画オブジェクトに提供される）に依存する場合、ＵｓｅｓＢａｓｅＶａｌｕｅプロパティはＴｒｕｅを戻す。ＵｓｅｓＢａｓｅＶａｌｕｅプロパティがＦａｌｓｅを戻す場合、動画オブジェクトは、基底値を完全に無視する。動画オブジェクトがリスト内にある場合、場合によっては、ＵｓｅｓＢａｓｅＶａｌｕｅプロパティによって、動画オブジェクトの一部のみを評価する必要があるものの最適化が可能になる。
【００７６】
動画クラス構造は、１組のタイミングプロパティ４１０も含む。ＣｕｒｒｅｎｔＴｉｍｅプロパティは、動画オブジェクトのタイムラインにとって局所的な現在の時間を提供する。ＰａｒｅｎｔＴｉｍｅｌｉｎｅプロパティは、動画オブジェクトのタイムラインのタイミングの親であるタイムラインを指定する。ＰａｒｅｎｔＴｉｍｅｌｉｎｅプロパティは、他の任意のタイムライン、またはＴｉｍｅｌｉｎｅ．ＶｉｓｕａｌＰａｒｅｎｔまたはＴｉｍｅｌｉｎｅ．ＲｏｏｔＴｉｍｅｌｉｎｅという２つの特別な参照値の一方を参照することができる。ＰａｒｅｎｔＴｉｍｅｌｉｎｅプロパティがＴｉｍｅｌｉｎｅ．ＶｉｓｕａｌＰａｒｅｎｔに設定されている場合、タイムラインは、それが使用される可視要素に関連するタイムラインを使用時に自動的に親とする。可視要素が関連するＤｅｆａｕｌｔＴｉｍｅｌｉｎｅを有していない場合、親の可視要素は、繰り返し検査される。ＰａｒｅｎｔＴｉｍｅｌｉｎｅプロパティがＴｉｍｅｌｉｎｅ．ＲｏｏｔＴｉｍｅｌｉｎｅに設定されている場合、このタイムラインは、タイミングツリー２２８の「ルート」を使用時に自動的に親とする。
【００７７】
タイミングプロパティの組は、特定の動画オブジェクトのタイムラインが開始すべき時間を指定するＢｅｇｉｎプロパティも含む。デフォルトでは、開始時間値は、親タイムラインの開始時間に関連しているが、他の何らかのタイムラインの開始または終了時間に関連する時間を提供するオフセットも潜在的に指定される。後者の場合、他のタイムラインは、この特定の動画オブジェクトのタイムラインと同じタイムラインに対する親でなければならない。動画オブジェクトのＤｕｒａｔｉｏｎプロパティは、開始から終了までの単一の期間を指定する。Ｐｒｏｇｒｅｓｓプロパティは、タイムラインの現在の進行値を指定する。ＩｓＯｖｅｒｒｉｄｉｎｇＢａｓｅＶａｌｕｅ（本明細書で後述）がｆａｌｓｅである場合、Ｐｒｏｇｒｅｓｓプロパティは０を戻す。いかなる場合でも、Ｐｒｏｇｒｅｓｓプロパティの戻り値は、常に０から１までの間の値である。
【００７８】
本発明の一実施形態では、動画の繰り返しがサポートされている。ＲｅｐｅａｔＣｏｕｎｔプロパティは、この動画オブジェクトの寿命中、開始から終了までの期間が繰り返される回数を指定する。ＲｅｐｅａｔＣｏｕｎｔプロパティ値は、分数値である可能性がある。特殊な値、ｆｌｏａｔ．Ｐｏｓｉｔｉｖｅｌｎｆｉｎｉｔｙは、タイムラインは連続的に繰り返す必要があることを示す。ＣｕｒｒｅｎｔＲｅｐｅａｔプロパティは、繰り返す場合、タイムラインの現在の反復を指定する。最初の反復は反復１である。ＩｓＯｖｅｒｒｉｄｉｎｇＢａｓｅＶａｌｕｅ動画プロパティがｆａｌｓｅの場合、ＣｕｒｒｅｎｔＲｅｐｅａｔプロパティは０を戻す。
【００７９】
ＲｅｐｅａｔＤｕｒａｔｉｏｎプロパティは、開始から終了までの期間が繰り返される必要がある時間の長さを指定する。これによって、部分的な実行（反復回数）が引き起こされる可能性がある。Ｔｉｍｅ．ＩｎｄｅｆｉｎｉｔｅのＲｅｐｅａｔＤｕｒａｔｉｏｎプロパティ値は、タイムラインが常時繰り返す必要があることを示す。ＩｓＯｖｅｒｒｉｄｉｎｇＢａｓｅＶａｌｕｅプロパティがｆａｌｓｅの場合、このプロパティは、Ｔｉｍｅ．Ｕｎｓｐｅｃｉｆｉｅｄを戻す。値がＲｅｐｅａｔＣｏｕｎｔプロパティおよびＲｅｐｅａｔＤｕｒａｔｉｏｎプロパティに指定されている場合、総アクティブ期間は、２つの指定されたプロパティの最小値である。
【００８０】
動画クラスのタイミングプロパティは、時間の加速段階で費やされる単一の期間の一部を表す０から１の間の値を指定するａｃｃｅｌｅｒａｔｉｏｎプロパティも含む。ｄｅｃｅｌｅｒａｔｉｏｎプロパティは、時間減速段階で費やされる単一の期間の一部を表す０から１の間の値を指定する。動画は、同時に加速、減速することはできないため、ａｃｃｅｌｅｒａｔｉｏｎプロパティ値およびｄｅｃｅｌｅｒａｔｉｏｎプロパティ値の合計は１（単一の期間）を超えない。
【００８１】
Ａｕｔｏｒｅｖｅｒｓｅプロパティは、動画が開始から終了まで進み、次いで戻るかどうかを指定する。Ａｕｔｏｒｅｖｅｒｓｅプロパティが「Ｔｒｕｅ」の値を有している場合、タイムラインは開始から終了まで進み、次いですぐに終了から開始まで逆向きに進む。タイムラインは、動画オブジェクトのＤｕｒａｔｉｏｎプロパティによって指定されている時間量の２倍の間アクティブである。
【００８２】
Ｅｎｄプロパティは、動画オブジェクトのタイムラインに最大の終了時間を指定する値を維持する。Ｅｎｄプロパティ値がＢｅｇｉｎおよびＤｕｒａｔｉｏｎのプロパティ値の合計より小さい場合、アクティブ期間は、Ｅｎｄプロパティ値によって短縮される。さらに、指定された動画の開始（スケジュールされている、または対話式）で、Ｅｎｄ属性によって指定された時間を過ぎたものはすべて無視される。
【００８３】
ＥｎｄＳｙｎｃプロパティ値は、タイムラインの暗黙の期間を定義する。ＥｎｄＳｙｎｃプロパティによって指定された暗黙の期間は、Ｄｕｒａｔｉｏｎプロパティが明示的に設定されていない場合に使用される。タイムラインの暗黙の期間は、それが制御する時間調節されたオブジェクトによって、またはそれの親となり得る他のタイムラインによって定義することができる。
【００８４】
Ｆｉｌｌプロパティは、終了時間が経過した後の動画オブジェクトのタイムラインの挙動を指定する。デフォルトでは、タイムラインが「オン」となるのは、開始から終了までだけであるが、Ｆｉｌｌプロパティが「Ｆｒｅｅｚｅ」に設定されている場合、タイムラインは、終了時間を過ぎてもオンのままである。この場合、終了時間後の動画オブジェクトの進行値は、終了時間にあった値に等しい。Ｆｉｌｌプロパティ値の設定値は、Ｒｅｍｏｖｅ（グローバルデフォルト）、Ｆｒｅｅｚｅ、およびＨｏｌｄである。ＦｉｌｌＤｅｆａｕｌｔプロパティは、Ｆｉｌｌプロパティのデフォルトの値を指定する。Ｆｉｌｌプロパティ値が指定されていない場合、ＤｅｆａｕｌｔＦｉｌｌプロパティの値は、Ｆｉｌｌの挙動を指定する。さらに、これを親とするタイムラインのそれぞれのＦｉｌｌＤｅｄａｕｌｔ属性が設定されていない限り、このデフォルトはそれらによって継承される。ＤｅｆａｌｕｔＦｉｌｌプロパティの可能な値は、Ｆｉｌｌ属性と同じである。
【００８５】
Ｒｅｓｔａｒｔプロパティは、第２の（または後の）開始時間に到達したときの動画オブジェクトのタイムラインの挙動を指定する。デフォルトでは、開始時間は、任意のアクティブ期間を中断し、タイムラインの時間ｔ＝０に戻す。しかし、ＲｅｓｔａｒｔプロパティがＷｈｅｎＮｏｔＡｃｔｉｖｅに設定されている場合、アクティブ期間を中断する開始時間は無視される。Ｒｅｓｔａｒｔプロパティの可能な値は、Ａｌｗａｙｓ、ＷｈｅｎＮｏｔＡｃｔｉｖｅ、およびＮｅｖｅｒである。Ｒｅｓｔａｒｔ  Ｄｅｆａｕｌｔプロパティは、Ｒｅｓｔａｒｔプロパティのデフォルトの値を指定する。
【００８６】
Ｓｐｅｅｄプロパティは、動画オブジェクトのタイムラインの時間が（その親のタイムラインに比較して）経過すべき相対速度を指定する。例えば、値１は通常の速度、値２は２倍の速度で時間が経過する（したがって知覚される期間は、Ｄｕｒａｔｉｏｎ属性によって指定された時間のわずか半分になる）ことを意味する。この値は負でもよく、この場合時間は、このタイムラインにおいて、親タイムラインが逆方向であるかのように終了時間から開始時間に逆方向に流れる。
【００８７】
動画オブジェクトの動画の状態を識別するために、１組のＢｏｏｌｅａｎプロパティが含まれている。ＩｓＦｏｒｗａｒｄＰｒｏｇｒｅｓｓｉｎｇプロパティは、このタイムラインでの進行が、実時間（ｗａｌｌ−ｃｌｏｃｋ  ｔｉｍｅ）に対して０から１に移動するかどうかを識別する。ＩｓＦｏｒｗａｒｄＰｒｏｇｒｅｓｓｉｎｇプロパティは、潜在的に逆方向のタイムラインにおいてネストされる影響を考慮に入れる。ＩｓＯｖｅｒｒｉｄｉｎｇＢａｓｅＶａｌｕｅがｆａｌｓｅの場合、ＩｓＦｏｒｗａｒｄＰｒｏｇｒｅｓｓｉｎｇは、このタイムラインの親タイムラインが戻すものと同じ値を戻す。ＩｓＲｅｖｅｒｓｅｄプロパティは、タイムライン自体の局所基準の視点から、タイムラインが逆方向の期間内であるかどうかを識別する。このプロパティは、ＩｓＦｏｒｗａｒｄＰｒｏｇｒｅｓｓｉｎｇプロパティとは対照的に、潜在的に逆方向のタイムラインでネストされる影響を考慮に入れない。ＩｓＯｖｅｒｒｉｄｉｎｇＢａｓｅＶａｌｕｅプロパティ値がｆａｌｓｅの場合、Ｉｓ  Ｒｅｖｅｒｓｅｄプロパティはｆａｌｓｅを戻す。
【００８８】
他のプロパティは、動画のアクティビティ状態の状態に関するものである。ＩｓＣｈａｎｇｉｎｇプロパティは、動画オブジェクトのタイムラインがアクティブかどうかを識別する。これに対して、ＩｓＰａｕｓｅｄプロパティは、タイムラインがアクティブである場合Ｔｒｕｅを戻し、しかし動画は一時停止する。
【００８９】
動画クラスは、１組のメソッド４２０も含む。特定の動画クラス内の１組のコンストラクタメソッドは、特定の動画クラス型（浮動小数点、ブール値、点など）の特定の動画挙動を組み込む動画オブジェクトを作成する。特定の動画挙動に対応する１組の動画コンストラクタメソッドの型は、一例として、本明細書で後述する図５で識別される。
【００９０】
ＢｅｇｉｎＩｎメソッドは、オフセット時間値を入力として受信する。ＢｅｇｉｎＩｎメソッドは、オフセット値に対応する将来または過去におけるある時点での相互作用の開始をトリガする。入力オフセットパラメータは、動画オブジェクトの親タイムラインに関連する時間を指定する。親タイムラインが非アクティブである場合、このメソッドは効果がない。
【００９１】
同様に、ＥｎｄＩｎメソッドは、別の関連の時間値を入力として受信する。ＥｎｄＩｎメソッドは、将来または過去における指定された時点での相互作用の終了をトリガする。パラメータは、動画オブジェクトの親タイムラインの参照のフレーム内にある。親タイムラインが非アクティブである場合、このメソッドは効果がない。
【００９２】
アクティブである間に動画オブジェクトの進行を停止／開始するメソッドが提供されている。ｐａｕｓｅメソッドは、動画オブジェクトのタイムライン、および動画オブジェクトのタイムラインを参照する子を一時停止する。このタイムラインが非アクティブである場合、このメソッドは効果がない。逆に、ｒｅｓｕｍｅメソッドは、動画オブジェクトのタイムラインおよびその子のすべてのタイムラインを再開する。このタイムラインが非アクティブであり、一時停止されている場合、このメソッドは効果がない。
【００９３】
ｓｅｅｋメソッドは、指定されているオフセット値に基づいて動画実行シーケンスの特定のポイントに直接移動できるようにする。ｓｅｅｋメソッドは、このタイムラインの現在の時間を変更する。このことによって、そのすべての子のタイムラインに影響を与える可能性がある。タイムラインが非アクティブである場合、このメソッドは効果がない。
【００９４】
ＧｅｔＵｎｉｑｕｅｌｎｓｔａｎｃｅメソッドは、タイムラインを入力として受信し、他のインスタンスから切り離してそれ自体のランタイム状態を維持することができる動画オブジェクトのインスタンスを戻す。動画オブジェクトが、自動的に親が割り当てられるタイムラインを含む場合、戻されたインスタンスは、パラメータとして渡されたタイムラインを親とするタイムラインを有する。
【００９５】
ＧｅｔＶａｌｕｅメソッドは、ある型の基底値を入力として取得し、入力された基底値と同じ型の別の値を戻す。出力の値は、入力（基底値）およびそれが渡された変更子（動画オブジェクト／コレクションなど）の内部状態によって決まる。特にこれは、同じ入力で複数回ＧｅｔＶａｌｕｅを呼び出しても同じ出力を戻すことは保証されておらず、実際、動画シーケンスの過程の間の変更が予測されることを意味する。動画オブジェクトクラス２２２の場合、ＧｅｔＶａｌｕｅメソッドは、渡された基底値を受信し、進行値のその内部変更子定義計算に基づいて値を戻す。
【００９６】
最後に、動画クラス構造は、１組のイベントをサポートする。動画オブジェクトの内部状態が変化した場合はいつでもＣｈａｎｇｅｄイベント４３０が生成される。Ｃｈａｎｇｅｄイベント４３０フラグは、再レンダリングが必要（位置または寸法について何かが変更された）であることを示すために使用する。Ｂｅｇｕｎイベント信号は、オブジェクトがその内部状態が連続的に変化している期間に入るときに生成される。Ｅｎｄｅｄイベント信号は、オブジェクトがその内部状態が連続的に変化している期間を離れるときはいつでも生成される。Ｒｅｐｅａｔｅｄイベントは、動画オブジェクトのタイムラインがその純然たる期間を繰り返すときにはいつでも生成される。Ｒｅｖｅｒｓｅｄイベントは、動画オブジェクトのタイムラインでの時間の方向が変化したときに常に生成される。Ｐａｕｓｅｄ、Ｒｅｓｕｍｅ、およびＳｅｅｋｅｄのイベントは、動画オブジェクトのタイムラインでの対応するＰａｕｓｅ、Ｒｅｓｕｍｅ、およびＳｅｅｋメソッドの完了に応答して生成される。
【００９７】
図５を参照すると、１組の動画オブジェクト挙動が識別されている。識別された挙動のそれぞれは、適切な場合、本明細書で上述した動画クラス型のそれぞれによってサポートされている特定のコンストラクタクラスに対応する。Ｆｒｏｍコンストラクタ型５００は、渡された「Ｆｒｏｍ」値をその初期値として取得し、関連するプロパティに指定された基底値に進む動画オブジェクトを作成する。Ｔｏコンストラクタ型５１０は、関連するプロパティに対して指定された基底値をその初期値として取得し、渡された「Ｔｏ」値に進む動画オブジェクトを作成する。Ｆｒｏｍ−Ｔｏコンストラクタ型５２０は、動画オブジェクトにＦｒｏｍおよびＴｏのプロパティ値を指定する渡されたパラメータを受信する。動画化された要素のプロパティに関する基底値は、動画中には使用されない。しかし、動画オブジェクトのＦｉｌｌタイミングプロパティが「Ｆｒｅｅｚｅ」でない場合は、動画シーケンスが終了すると、要素プロパティは基底値に戻る。
【００９８】
動画の終点を指定する代わりに、動画値範囲は、終点および変化量（デルタ）値によって指定することができる。Ｂｙコンストラクタ５３０は、デルタ値を受信し、基底値で動画を開始し、動画サイクルの過程中デルタ値によって指定された量分だけ基底値の変更を進める。Ｆｒｏｍ−ｂｙコンストラクタ５４０は、その入力として「Ｆｒｏｍ」開始値を受信して、動画サイクル中渡されたデルタ値分だけ「Ｆｒｏｍ」初期値の変更を進める。動画オブジェクトの１組の基本的なコンストラクタについて説明してきたが、本発明は、上記の挙動の複合／組合せを含む様々な動画挙動（および対応するコンストラクタ）を含むことに注意されたい。
【００９９】
動画クラス構造の例について説明してきたが、次に動画オブジェクトのコンテナ、動画コレクションクラス２２４に注目する。図６を参照すると、動画コレクションクラスの構造の例を示している。動画コレクションオブジェクトは、動画クラス２２４からインスタンス化された動画オブジェクトのリストを維持する。まず、動画コレクションクラスによってサポートされる１組のメソッド６００を参照すると、ＧｅｔＵｎｉｑｕｅＩｎｓｔａｎｃｅメソッドは、渡されたタイムラインの識別に対応するデフォルトの親タイムラインとともに動画コレクションインスタンスを戻す。また、動画コレクションクラスは、動画コレクションクラスに対してＤｅｆａｕｌｔＰａｒｅｎｔＴｉｍｅｌｉｎｅプロパティを設定するインターフェースをサポートする。本発明の実施形態の例では、プロパティシステム２２０は、ＧｅｔＵｎｉｑｕｅＩｎｓｔａｎｃｅメソッドを呼び出して、動的動画コレクションオブジェクトの特定の動画コレクションのコピーを取得する。動画コレクションオブジェクトは、動画オブジェクトのリストを含む。ビルダ機能／エンティティは、作成された動画コレクションインスタンスに動画オブジェクトを追加する。動画コレクション内の動画オブジェクトは、インデックスが付され、（配列と同様に）リスト内の特定の位置を指定することによって、参照／アクセスされる。
【０１００】
ＧｅｔＶａｌｕｅメソッドは、ある型の基底値を入力として取得し、入力された基底値とおなじ型の別の値を戻す。出力の値は、入力（基底値）およびそれが渡された変更子（動画オブジェクト／コレクションなど）の内部状態によって決まる。特にこれは、同じ入力で複数回ＧｅｔＶａｌｕｅを呼び出しても同じ出力を戻すことは保証されておらず、実際、動画シーケンスの過程の間の変更が予測されることを意味する。動画コレクションクラスの場合、ＧｅｔＶａｌｕｅメソッドは、渡された基底値をそのコレクションの第１の動画オブジェトに提供する。第１の動画オブジェクトの出力は、動画コレクション内の次の動画オブジェクト（存在する場合）への入力基底値となる。このプロセスは、動画コレクション内の最後の動画オブジェクトが出力を算出するまで繰り返される。ＧｅｔＶａｌｕｅメソッドは、動画コレクション内の動画オブジェクトのパイプライン内の最後の動画オブジェクトによって提供された出力値を戻す。
【０１０１】
動画コレクションクラスは、１組のプロパティ６１０も含む。ＩｓＣｈａｎｇｉｎｇプロパティおよびＩｓＯｖｅｎｉｄｉｎｇＢａｓｅＶａｌｕｅプロパティは、それに応じて指定された動画オブジェクトのプロパティと類似している。しかし、動画コレクションクラスの場合、動画オブジェクトの対応するプロパティのいずれかが「Ｔｒｕｅ」を戻す場合、動画コレクションの対応するプロパティが「Ｔｒｕｅ」を戻すように、プロパティがマージされる。Ａｎｉｍａｔｉｏｎｓ（ａｒｒａｙ）プロパティは、動画コレクション内の動画オブジェクトのリストを維持する。
【０１０２】
動画コレクションは、１組のイベント６２０もサポートする。Ｃｈａｎｇｅｄイベントは、動画コレクションの構造体の動画オブジェクトから放出され、合体し、本明細書で上述した対応するイベントを報告する。
【０１０３】
次に図７を参照すると、動的動画コレクションクラス２２６について、１組のメソッドおよびプロパティが識別されている。１組のメソッド７００は、動的動画コレクションコンストラクタメソッドを含む。動的動画コレクションコンストラクタメソッドは、入力として、（要素ツリー２０２上の）要素参照、要素の動的プロパティ、および動的コレクションインスタンスを受信し、コンストラクタは、渡された動画コレクションオブジェクト内の動画オブジェトへのタイムラインにより引き起こされた変更と、要素ツリー２０２内に含まれる要素の動的プロパティの間のインターフェースとして動作する動的動画コレクションオブジェクトを戻す。
【０１０４】
動的動画コレクションオブジェクトのインターフェースは、動的動画コレクションオブジェクトが関連付けられる動画コレクションオブジェクトの設定／取得をサポートする。ＳｅｔＤｅｆａｕｌｔＰａｒｅｎｔＴｉｍｅｌｉｎｅメソッドは、動的動画コレクションオブジェクトが結び付けられる要素が要素ツリー２０２内で再配置された場合、そうでない場合は要素のタイミングが変更された場合、タイムラインの接続を修正する。
【０１０５】
ＧｅｔＶａｌｕｅメソッドは、（動的動画コレクションが結び付けられた動画コレクションによって提供される）要素の動画化されたプロパティの現在値を戻す。
【０１０６】
ＯｎＣｈａｎｇｅｄメソッドは、動画コレクション内の任意の動画オブイジェクトの進行が変更されたときに呼び出される。呼び出されると、ＯｎＣｈａｎｇｅｄメソッドは、動的プロパティの無効化を引き起こす。これは、影響を受けた要素の再レンダリングを呼び出す。
【０１０７】
プロパティ７１０を参照すると、ＯｒｉｇｉｎａｌＤｙｎａｍｉｃＰｒｏｐｅｒｔｙプロパティは、動的動画コレクションが関連付けられる動的プロパティへの参照を戻す。Ｅｌｅｍｅｎｔプロパティは、動的動画コレクションが関連付けられる要素を戻す。ＩｓＯｖｅｒｉｄｉｎｇＢａｓｅＶａｌｕｅは、それが関連付けられた動画コレクションに関してそれに応じて指定されたプロパティへの呼び出しに基づいて値を戻す。
【０１０８】
動画アーキテクチャについて説明してきたが、要素のプロパティに時間変化する値を提供することによって要素のプロパティを動画化するために記載したアーキテクチャを使用することを一例として説明する。一般に、動画化されたすべてのリソース、メソッドまたはオブジェクトは、エンティティの動画機能、そのデフォルトの親タイムライン、それが変更されたかどうか、オブジェクトの現在値、およびエンティティが変化しているかどうかの通知を可能にするインターフェースを含む。特定の例では、動画可能なエンティティのインスタンスは、オブジェクトが時間に応じて変化し得る場合、Ｔｒｕｅを戻すＤｏｅｓＣｈａｎｇｅプロパティを含む。一般に、ＤｏｅｓＣｈａｎｇｅプロパティは、オブジェクトは任意の動画コレクションを保持している場合、Ｔｒｕｅである。ＤｅｆａｕｌｔＰａｒｅｎｔＴｉｍｅｌｉｎｅプロパティは、自動的に親が割り当てられる任意のタイムラインの親であるタイムラインへの参照を戻す。ＤｅｆａｕｌｔＰａｒｅｎｔＴｉｍｅｌｉｎｅプロパティが設定されると、自動的に親が割り当てられる任意のタイムラインは再度親になり、しかしタイムライン、またはこの動画可能なオブジェクトについての新しいクローンは作成されない。ＩｓＣｈａｎｇｉｎｇプロパティは、動画可能なオブジェクトの任意の動画が変化する場合、Ｔｒｕｅを戻す。ＩｓＯｖｅｒｒｉｄｉｎｇＢａｓｅＶａｌｕｅプロパティは、動画可能なオブジェクトの任意のタイムラインがアクティブである、または充填期間である場合、Ｔｒｕｅである。Ｃｈａｎｇｅｄイベントは、動画可能なエンティティの値が変化したときはいつでも生成される。
【０１０９】
さらに、動画可能なエンティティは、プロパティの値として使用されるオブジェクトを戻すＣｕｒｒｅｎｔＶａｌｕｅメソッドを含む。値は、オブジェクトの瞬時の値であるが、いったん設定されると、変更されない。特定のタイムラインを指定するＧｅｔＵｎｉｑｕｅｌｎｓｔａｎｃｅメソッドは、プロパティの値として使用することができるオブジェクトを戻す。オブジェクトは、自動的に親が割り当てられる任意のタイムラインを参照する場合、戻されたインスタンスは、指定されたデフォルトの親タイムラインを親とするタイムラインを有する。
【０１１０】
また、動画可能なエンティティは、動画可能なプロパティごとに、動画コレクション型への対応する参照を指定して、プロパティシステムによる動的動画コレクションの作成を容易にする。本発明の一実施形態では、基本的な動画オブジェクトの使用では、動画の複合が排除されるため、動画コレクションが使用される。
【０１１１】
動画コレクションを個々のプロパティに追加することによってリソースが動画化される。次の例は、色の動画でＳｏｌｉｄＣｏｌｏｒＢｒｕｓｈをどのように作成するかを示す。
【０１１２】
【表１】
2006526181.tif 000003
【０１１３】
動画リソースは、レンダリング操作に使用する、または要素プロパティの値として使用することができる。レンダリング操作は、一例では、動画コレクションを描画コンテキストメソッドの呼び出しに追加することによって、または動画リソースを使用することによって動画化される。次の例は、動画化された不透明値を描画コンテキストにどのようにプッシュするかを示している。
【０１１４】
【表２】
2006526181.tif 000004
【０１１５】
要素は、動画コレクションをＥｌｅｍｅｎｔプロパティに追加することによって動画化することができる。次の例は、Ｃ＃でボタンの幅をどのように動画化するかを示す。
【０１１６】
【表３】
2006526181.tif 000005
【０１１７】
次は、ＸＡＭＬでの同じ例を示す。
【０１１８】
【表４】
2006526181.tif 000006
【０１１９】
動画（または動画化されたリソース）が使用されるときはいつでも、動画（またはリソース）はクローン化されて、宛先に一意の独立した制御可能なタイムラインを提供する。プロパティに対して動画を実装するこの特定の方法の結果は、元の動画は決して可視のシーンの一部ではなく、したがって動画オブジェクトのタイミングインターフェースを介した制御呼び出しに応答しないことである。この効果を達成するために、呼び出しコードは、まず動画を使用し、次いで動画を読み返す必要がある。次いで読み返される値は、キャッシュされ、制御のタイミングに使用することができる。次の例は、動画を制御する予定のコードが従うパターンを示す。
【０１２０】
【表５】
2006526181.tif 000007
【０１２１】
【表６】
2006526181.tif 000008
【０１２２】
グラフィカルユーザインターフェース表示などグラフィカル出力装置を含むコンピューティング環境内のグラフィカル表示要素に動画挙動を結び付け、実行するために、新しいプラットフォームの例およびそれに組み込まれるインターフェース、クラス、および構造の例について説明してきたことを分野の技術者であれば理解されよう。本発明の原理を適用できる多くの可能な環境、および上記の動画アーキテクチャを設計し、実行する柔軟性を考慮して、本明細書に記載した実施形態は、例示的なものであり、本発明の範囲を限定するものとみなされるべきではないことを理解されたい。本発明が適用される当分野の技術者は、本発明の趣旨から逸脱することなく構成および詳細について実施形態の例を変更できることを理解されよう。したがって、本明細書に記載された本発明は、添付の特許請求の範囲およびその均等物の範囲内に含まれ得るすべての実施形態を含む。
【図面の簡単な説明】
【０１２３】
【図１】本発明の一実施形態を実行するコンピュータシステムの例を示すブロック図である。
【図２】グラフィカル表示要素の動画をサポートする動画システムを含むグラフィックス管理アーキテクチャの主な構成要素を示す高レベル概略図である。
【図３】動画化されたグラフィカルユーザインターフェースを維持／レンダリングするために本発明を具現化するシステムで実行される反復ステップのシーケンスの例を概略的に示したフロー図である。
【図４】指定された要素プロパティに関して動画を実行する動画クラス定義の例を示す図である。
【図５】要素プロパティを動画化する１組の動画コンストラクタ型の例の要約を示す図である。
【図６】本発明を具現化する動画アーキテクチャの動画コレクションクラスの例の概略を示す図である。
【図７】本発明を具現化する動画アーキテクチャの動的動画コレクションクラスの例の概略を示す図である。
【図１】
2006526181.tif 000009
【図２】
2006526181.tif 000010
【図３】
2006526181.tif 000011
【図４】
2006526181.tif 000012
【図５】
2006526181.tif 000013
【図６】
2006526181.tif 000014
【図７】
2006526181.tif 000015
【手続補正書】
【提出日】平成18年5月15日(2006.5.15)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００２４
【補正方法】変更
【補正の内容】
【００２４】
上述し、図１に示したドライブおよびその関連のコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびコンピュータ１１０の他のデータの記憶を提供する。図１では例えば、ハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７を記憶するものとして示されている。これらの構成要素は、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７と同じであっても、異なっていてもよいことに注意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７は少なくとも異なるコピーであることを示すために、ここではそれらに異なる番号を付している。ユーザは、キーボード１６２、および一般にマウス、トラックボール、またはタッチパッドと呼ばれるポインティング装置１６１などの入力装置を介して、コマンドおよび情報をコンピュータ１１０に入力することができる。他の入力装置（図示せず）には、マイクロフォン、ジョイスティック、ゲームパッド、衛星アンテナ、スキャナなどがある。これらおよび他の入力装置は、しばしばシステムバスに結合されているユーザ入力インターフェース１６０を介して処理ユニット１２０に接続されるが、パラレルポート、ゲームポート、ユニバーサルシリアルバス（ＵＳＢ）など他のインターフェースおよびバス構造で接続してもよい。モニタ１９１または他のタイプの表示装置もまた、ビデオインターフェース１９０などのインターフェースを介してシステムバス１２１に接続することができる。モニタに加えて、コンピュータは、出力周辺インターフェース１９５などを介して接続できるスピーカー１９７、プリンタ１９６など他の周辺出力装置を含むこともできる。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００３８
【補正方法】変更
【補正の内容】
【００３８】
本発明の特定の実施形態では、ＭＩＬ２０４は、プレゼンタシステム２０８によってＭＩＬインターフェース２０６を介してＭＩＬ２０４に渡される可視要素を処理することができる高レベル可視ツリー２１０を含む。高レベル可視ツリー２１０は、構造化された１組の基本形状（線、四角形、画像など）を含む。構造化された１組の基本形状はアプリケーションの単一の画像フレームを示す。高レベル可視ツリー２１０は、「独立型動画（ｉｎｄｅｐｅｎｄｅｎｔ  ａｎｉｍａｔｉｏｎｓ）」と呼ばれる動画のクラスをサポートする。独立型動画は、以下で詳述するが、動画を達成するのにプレゼンタシステム２０８のレイアウト機能に依存しない。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００５０
【補正方法】変更
【補正の内容】
【００５０】
動画コレクションクラスは、動画をサポートするためのプロパティ値の型ごとに存在する（ＦｌｏａｔＡｎｉｍａｔｉｏｎＣｏｌｌｅｃｔｉｏｎ、ＢｏｘＵｎｉｔＡｎｉｍａｔｉｏｎＣｏｌｌｅｃｔｉｏｎ、ＰｏｉｎｔＡｎｉｍａｔｉｏｎＣｏｌｌｅｃｔｉｏｎ、ＣｏｌｏｒＡｎｉｍａｔｉｏｎＣｏｌｌｅｃｔｉｏｎ、ＢｏｏｌＡｎｉｍａｔｉｏｎＣｏｌｌｅｃｔｉｏｎなど）。動画コレクションクラス型のリストは、単に例として示している。当分野の技術者であれば、多種多様な動画コレクションクラス型が可能であることは容易に理解できよう。動画クラス２２２と同様、動画コレクションクラス２２４からの動画コレクションクラスのインスタンスは不変である。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００５１
【補正方法】変更
【補正の内容】
【００５１】
動的動画コレクションクラス２２６は、動画コレクションクラス２２４の機能に基づいている。動的動画コレクションクラス２２６のインスタンスは、動画コレクションクラス２２４の動画コレクションクラスインスタンスへの参照を堅持する。さらに、動的動画コレクションオブジェクトインスタンスは、要素ツリー２０２内の要素、および動的動画コレクションインスタンスが動画化している要素のプロパティへの参照を堅持する。アプリケーションの作成者は、本発明の一実施形態では、動的動画コレクションインスタンスを作成したり、それにアクセスしたりすることはできない。代わりに、プロパティシステム２２０は、アプリケーション２００からの要求を受信すると、動的動画コレクションインスタンスを作成する。
【国際調査報告】
2006526181.tif 000016
2006526181.tif 000017