Of creating and running the video behavior for Gui

申请号 JP2004569234 申请日 2003-05-15 公开(公告)号 JP4268586B2 公开(公告)日 2009-05-27
申请人 マイクロソフト コーポレーション; 发明人 ケイ.ウォング ギルマン; ガロ ケビン; ステファン ベダ ザ サード ジョセフ; カルキンズ マット; エステバン ブランコ レオナルオド;
摘要
权利要求
  • 表示されるオブジェクトに対応する1組の要素を維持する表示構造を使用して当該オブジェクトを表示するグラフィカル動画表示システムであって、前記1組の要素の各々が当該要素の表示特性に影響を与える可変プロパティ値を 含み前記グラフィカル動画表示システムは、
    前記表示構造によって維持される要素に関連付けられるプロパティ であって、時間の経過に伴って変化することができる動的プロパティ含むプロパティを維持するプロパティシステムと、
    前記動的プロパティに割り当てられた値に影響を与える時間的に変化する値を提供する動画オブジェクト インスタンス化される複数の動画クラス であって、当該動画クラスオブジェクトのインスタンスである動画オブジェクトインスタンスが前記動画クラスオブジェクトに関連付けられたタイムラインに基づいて前記動的プロパティの値を変更する方法を定義する動画クラスと、
    前記動的プロパティに割り当てられた値に従って、前記表示されるオブジェクトの表示状態を更新するレンダリングシステムと
    を含むことを特徴とするグラフィカル動画表示システム。
  • 1つまたは複数の動画オブジェクトを前記表示構造内の要素の動的プロパティに関連付け る動的動画コレクションクラス
    をさらに含むことを特徴とする請求項1に記載のグラフィカル動画表示システム。
  • 1組の動画クラスオブジェクトをグループ化する動画コレクションクラスをさらに含み、前記動画コレクションクラスのインスタンスは前記1組の動画クラスオブジェクトを基底値に適用することによって構成された出力値を提供する ことを特徴とする請求項1に記載のグラフィカル動画表示システム。
  • 前記動画クラスはそれぞれ内部タイムラインを指定することを特徴とする請求項1に記載のグラフィカル動画表示システム。
  • 動画オブジェクトインスタンスは、前記内部タイムラインによって定義されたタイミングシーケンスのコンテキストを提供する親タイムラインに結び付けられることを特徴とする請求項4に記載のグラフィカル動画表示システム。
  • 前記親タイムラインは前記動画オブジェクトインスタンスのコンテナによって指定されることを特徴とする請求項5に記載のグラフィカル動画表示システム。
  • 前記複数の動画クラスのうちの1つまたは複数は、それらが時間可変値を提供する特定のデータ型に関連付けられることを特徴とする請求項1に記載のグラフィカル動画表示システム。
  • 前記複数の動画クラスのうちの1つの動画クラスは浮動小数点値を提供することを特徴とする請求項7に記載のグラフィカル動画表示システム。
  • 前記複数の動画クラスのうちの1つの動画クラスはプレゼンタボックスの寸法を提供することを特徴とする請求項7に記載のグラフィカル動画表示システム。
  • 前記複数の動画クラスのうちの1つの動画クラスは四角形の左上の位置を提供することを特徴とする請求項7に記載のグラフィカル動画表示システム。
  • 前記複数の動画クラスのうちの1つの動画クラスは時間変化するカラー値を提供することを特徴とする請求項7に記載のグラフィカル動画表示システム。
  • 前記複数の動画クラスのうちの1つの動画クラスはブール値を提供することを特徴とする請求項7に記載のグラフィカル動画表示システム。
  • 実行プログラムによって生成される1組のランタイムの表示要素を維持する表示構造および前記表示要素に関連するプロパティを管理するプロパティシステムを含むグラフィカル表示システムにおいて表示要素を動画化するための方法であって、
    時間の経過に応答して表示要素 プロパティ値を変更することによって表示要素のうちの1つまたは複数の動画化が達成され る、該方法は、
    変更可能なプロパティを含むグラフィカル表示要素を作成するステップと、
    前記変更可能なプロパティに割り当て可能な動画挙動を定義するステップと、
    ランタイム時にプログラムからの要求に従って前記動画挙動を前記 グラフィカル表示要素の前記変更可能なプロパティに関連付けるステップと、
    前記動画挙動に従って時間変化する値のシーケンスを前記変更可能なプロパティに提供するステップと
    前記変更可能な プロパティに割り当てられた値に従って、前記表示要素の表示状態を更新するステップと
    を含むことを特徴とする 方法
  • 前記変更可能なプロパティに割り当て可能な動画挙動を定義するステップは、動画挙動をそれぞれ定義する1組の動画クラスを提供するステップを含むことを特徴とする請求項13に記載の方法。
  • 前記1組の動画クラスは動画型を指定し、動画型は動画クラスのインスタンスによって処理されるデータの型に対応することを特徴とする請求項 14に記載の方法。
  • 前記提供するステップは前記動画挙動を具現化する動画クラスからインスタンス化される動画オブジェクトによって 実行されることを特徴とする請求項13に記載の方法。
  • 前記動画挙動を定義するステップは、動画コレクションクラス内の1組の動画クラスインスタンスをグループ化することを含み、前記動画コレクションクラスのインスタンスは、前記1組の動画クラスインスタンスを基底値に適用することによって構成された出力値を提供することを特徴とする請求項13に記載の方法。
  • 前記関連付けるステップは、1つまたは複数の動画オブジェクトを前記要素の前記変更可能なプロパティに結び付ける動的動画クラスをインスタンス化することを含むことを特徴とする請求項13に記載の方法。
  • 前記時間変化する値のシーケンスの進行のタイミングは、前記動画挙動を定義する1つまたは複数の動画オブジェクトに関連するタイミングツリーノードに従って指定されることを特徴とする請求項13に記載の方法。
  • 前記方法は、親タイムラインを動画オブジェクトに結び付け、それによって内部タイムラインによって定義されるローカルタイミングシーケンスのグローバルタイミングコンテキストを提供する ステップをさらに含むことを特徴とする請求項13に記載の方法。
  • 前記動画オブジェクトの前記親タイムラインは、動画オブジェクトインスタンスの集合のコンテナによって指定されることを特徴とする請求項20に記載の方法。
  • 時間変化する値のシーケンスを提供する前記ステップは、アクティブな動画期間にわたり、現在の時間および基底プロパティ値を、前記動画挙動を具現化する動画値ジェネレータに数回適用して、前記変更可能なプロパティの現在値を提供し、
    前記変更可能なプロパティの前記現在値に従って更新されたレイアウトを生成すること を特徴とする請求項13に記載の方法。
  • 表示されるオブジェクトの要素プロパティ 値へ の時間の経過に伴う連続した変更を実施して、プロパティシステムによって維持される 前記要素プロパティに動画挙動を適用するための方法であって、
    基本の動画挙動を指定する動画クラス をインスタンス化して動画オブジェクトのインスタンスである動画オブジェクトインスタンスを 生成することと、
    構成体の動画オブジェクトのリストを指定する動画コレクションクラス をインスタンス化して動画コレクションオブジェクト のインスタンスである動画コレクションオブジェクトインスタンス生成することと、
    前記動画コレクションオブジェクトを前記プロパティシステムによって維持される前記要素プロパティに関連付ける動的動画コレクションクラスをインスタンス化して動的動画コレクションを生成することと、
    を含むことを特徴とする方法。
  • 前記動画オブジェクトインスタンスを生成することは、前記動画オブジェクトクラスのインスタンスに親タイムラインを割り当てることを含むことを特徴とする請求項23に記載の方法。
  • 前記方法は、
    現在の時間および基底プロパティ値を、前記動画コレクションオブジェクトの前記構成体の動画オブジェクトに適用して、前記要素プロパティの現在のプロパティ値を提供することと、
    前記要素プロパティの前記現在のプロパティ値に従って更新されたレイアウトを生成することと をさらに含むことを特徴とする請求項23に記載の方法。
  • 表示されるオブジェクトの要素プロパティ の指定時刻における変更をサポートするグラフィカル動画表示システムを提供するコンピュータ実行可能命令を含むコンピュータ可読 記録媒体であって、該グラフィカル動画表示システムは、
    要素の表示特性に影響を与える可変プロパティ値をそれぞれ含む1組の要素を維持する表示構造 を使用して当該オブジェクトを表示するグラフィカル動画表示システムであって
    前記表示構造によって維持される要素に関連付けられるプロパティ であって、時間の経過に伴って変化することができる動的プロパティを含むプロパティを維持するプロパティシステムと、
    前記動的プロパティに割り当てられた値に影響を与える時間的に変化する値を提供する動画オブジェクトがインスタンス化される 複数の動画クラス であって、当該動画クラスオブジェクトのインスタンスである動画オブジェクトインスタンスが前記動画クラスオブジェクトに関連付けられたタイムラインに基づいて前記動的プロパティの値を変更する方法を定義する動画クラス
    前記動的プロパティに割り当てられた値に従って、前記オブジェクトの表示状態を更新するレンダリングシステムと
    を含むことを特徴とする コンピュータ可読記録媒体
  • 前記グラフィカル動画表示システムは、
    1つまたは複数の動画オブジェクトを前記表示構造内の要素の動的プロパティに関連付ける動的動画 コレクションクラス をさらに含むことを特徴とする請求項 26に記載のコンピュータ可読 記録媒体。
  • 前記グラフィカル動画表示システムは、
    1組の動画クラスオブジェクトをグループ化する動画コレクションクラスをさらに含み、前記動画コレクションクラスのインスタンスは前記1組の動画クラスオブジェクトを基底値に適用することによって構成された出力値を提供する ことを特徴とする請求項 26に記載のコンピュータ可読 記録媒体。
  • 前記動画クラスはそれぞれ内部タイムラインを指定することを特徴とする請求項 26に記載のコンピュータ可読 記録媒体。
  • 前記動画オブジェクトインスタンスは、前記内部タイムラインによって定義されたタイミングシーケンスのコンテキストを提供する親タイムラインに結び付けられることを特徴とする請求項 29に記載のコンピュータ可読 記録媒体。
  • 前記親タイムラインは前記動画オブジェクトインスタンスのコンテナによって指定されることを特徴とする請求項 30に記載のコンピュータ可読 記録媒体。
  • 前記複数の動画クラスのうちの1つまたは複数は、それらが時間可変値を提供する特定のデータ型に関連付けられることを特徴とする請求項 26に記載のコンピュータ可読 記録媒体。
  • 前記複数の動画クラスのうちの1つの動画クラスは浮動小数点値を提供することを特徴とする請求項 32に記載のコンピュータ可読 記録媒体。
  • 前記複数の動画クラスのうちの1つの動画クラスはプレゼンタボックスの寸法を提供することを特徴とする請求項 32に記載のコンピュータ可読 記録媒体。
  • 前記複数の動画クラスのうちの1つの動画クラスは四角形の左上の位置を提供することを特徴とする請求項 32に記載のコンピュータ可読 記録媒体。
  • 前記複数の動画クラスのうちの1つの動画クラスは時間変化するカラー値を提供することを特徴とする請求項 32に記載のコンピュータ可読 記録媒体。
  • 前記複数の動画クラスのうちの1つの動画クラスはブール値を提供することを特徴とする請求項 32に記載のコンピュータ可読 記録媒体。
  • 说明书全文

    本発明は一般にコンピュータ装置に関する。 より詳細には、本発明は、オペレーティングシステムおよび/またはアプリケーションからのデータおよび命令入によって駆動されるグラフィカルユーザインターフェースのビューを維持し、提供するコンピューティングシステムの構成要素およびサブシステムに関する。

    グラフィカルユーザインターフェースは、本質的に極めて視覚的である。 ユーザおよびグラフィカルユーザインターフェースを伴う一般の対話式セッションは、ユーザが表示された要素に対してアクション(例えばポインタの移動やアイコンまたはコントロールの選択)を行ってある操作を呼び出し、次いで操作の結果を視覚的に確認するという複数の場合を含む。 アクティブ状況、または変更状況を示すためにグラフィカルユーザインターフェース上の特定の要素にユーザの関心を引き寄せる1つの方法には、グラフィカル要素の動画によるものがある。 動画は、本明細書で使用する場合、時間の経過に伴って表示要素に適用される漸進的な一連の変化によってグラフィカル表示要素(例えばアイコン、コントロール、ウィンドウ)の外観および位置を変更することを含む。 しかし動画は、非視覚的に表示された要素への時間ベースの変化も含む。 したがって動画は、本明細書で言及する場合、視覚的(すなわち視覚表示パラメータ値を変更する)および非視覚的(すなわち視覚表示要素に影響を与えることなく時間の経過に伴ってパラメータ値を変更する)動画を含む。

    動画には、コンピュータシステムおよびアプリケーションの有用性および美感を向上させる可能性がある。 ユーザインターフェース、より詳細にはグラフィカルユーザインターフェースは、コンピュータ/ユーザの対話において重要な役割を占める。 動画は、ユーザにコンピュータプログラムまたはその構成要素の状況を伝える別のタイプの情報または方法を提供することによってコンピュータ/ユーザの対話経験を向上させる。 例えば、選択した項目を単に消す、または即座に変更する代わりに、動画によって変化の進行を表示することができ、これによって、認識上の状況との組合せにより、何が起こっているか(例えば削除されたファイルが浮動してゴミ箱に入るなど)をユーザに知らせる。 さらに、多くの人々は、動画がコンピュータシステムとの対話をより面白くし、より効果的にユーザの注意を引くことを認めている。 さらに、動画は、プロパティ値への自動的な変更も可能にする。 特にユーザモードのアプリケーションは、手動タイマを設定し、次いでこうしたタイマに応答して値を変更する。

    動画は、こうした動画がユーザにとって有益となる多くのユーザインターフェースにたいてい組み込まれていない。 1つの理由は、単にユーザインターフェース要素の動画化のコストである。 動画化は、一般に時間がかかる/面倒な作業である。 グラフィカルユーザインターフェースに動画を実装するのに費用/便益手段を採ると、動画を組み込むメリットはそのコストを超えるはずである。 現在動画プログラミングのコストが比較的高額であるために、動画からメリットを得るであろう多くのアプリケーションは、その比較的高額な実装コストのために動画化されていない。

    動画化のコストを低減する1つの方法は、複数の独自用途の動画プログラミングを再利用することである。 しかし、一般に動画コードは再利用されない。 代わりに、単一(アプリケーション)用途の動画コードは、開発時にプログラミングツールを使用してアプリケーション自体の中で完全にプログラム化される。 動画挙動は、コンパイルされたプログラムコード内で明示的に定義される。 ランタイム中、あらかじめプログラムされているコードセグメントを単に実行することによって動画が実行される。 時間がかかる試みである上に、動画をプログラムに組み込むことによって、表示要素で所望の動画挙動を実行するのに詳細なデータおよび命令が使用されるため、プログラムが過度に大きくなってしまう。

    ユーザインターフェースにおいて動画のプログラマビリティを向上させようとする取り組みによって、所望の動画挙動を提供するために実行可能なスクリプトセグメントがそこから参照される編集不可/モノシリック動画スクリプトシーケンスが設計され、提供された。 こうした既知の動画プログラミング方法は、例えば同期マルチメディア統合言語(SMIL)標準に基づいてキーフレーミングを組み込む。 キーフレーミング方法は、モノシリックで編集不可の動画スクリプトの特定のセグメントの参照に依存する。

    従来の既知のキーフレーミング手法には、グラフィカルユーザインターフェースでの新しい動画挙動のプログラミングに関する柔軟性の相対的な欠如が見られる。 キーフレーミングスクリプトは、指定された始点と終点の間で表示要素(または要素の組合せ)をモーフィングするコンパイル済みの編集不可の動画命令シーケンスを含む。 動画シーケンスにおいて2つの点を選択し、次いでこれら2つの点の間でプログラムスクリプトを実行する既知のキーフレーミング動画手法は、プログラマが以前に作成された/コンパイルされた動画スクリプト内に組み込まれる動画挙動を実施しようとするのを助ける。 しかし、キーフレーミング手法では、サポートされている動画の範囲は、既存の基本動画スクリプトによって定義されている直線的な進行に限られる。 動画スクリプトをユーザ/開発者に出荷する前に、サポートされているすべての動画挙動を識別し、コード化する必要があり、このことが基本動画スクリプトの開発の障害となっている。 動画スクリプトの耐用年限中に、所望の動画挙動がスクリプトに含まれていない多くの場合が生じる可能性がある。 しかし、ユーザ/開発者はスクリプトを編集することはできず、したがってそのスクリプトを使用して、コンパイルされた動画スクリプトにあらかじめコード化されていない所望の新しい動画挙動を実行することはできない。

    したがって、興味深く報知的で有意味な動画挙動をグラフィカルユーザインターフェースの表示に実装するためのより効率的で柔軟性が高く費用のかからない方法が必要である。

    一例として本明細書で以下に記載し、請求する動画システムは、グラフィカルユーザインターフェース表示要素および非視覚パラメータ値のための動画挙動を定義し、作成し、実行する枠組みを提供する。 動画挙動が要素に適用されると、動画挙動がアクティブなときに時間の経過に伴ってプロパティに関連付けられている値が変化する。

    動画システムは、コンピュータシステムのグラフィカルユーザインターフェースの表示ウィンドウなど、あるシーン内に表示されるオブジェクトに対応する1組の要素を維持する表示構造を使用するシステムに組み込まれる。 要素は、要素の表示特性に影響を与える可変プロパティ値を含む。 こうした可変プロパティの例には、位置、寸法、色、不透明度などがある。

    また、動画システムは、プロパティシステムを使用する。 プロパティシステムは、表示構造によって維持される要素に関連するプロパティを維持する。 プロパティシステムは、時間の経過に伴って変化することができる動的プロパティをサポートする。

    また、動画システムは、基底値に基づいて実行可能な特定の動画挙動を指定する動画クラスも含む。 動画オブジェクトは、動画クラスからインスタンス化される。 こうした動画オブジェクトのインスタンスは、動的プロパティに割り当てられた値に影響を与える時間変化する値を提供する。 こうした動画オブジェクトが作成され、関連の動画オブジェクトに従って時間の経過に伴って変化する要素を含む表示を駆動しているアプリケーションの指揮下でプロパティシステムによって維持されるプロパティに結び付けられる。

    添付の特許請求の範囲は本発明の特徴を詳細に記載しているが、本発明およびその利点は、以下の詳細な説明を添付の図面と併せ読めば、最もよく理解できる。

    動画システム、プロパティシステム、および表示要素編成構造を含むグラフィカルユーザインターフェースアーキテクチャについて説明する。 これらの構成要素は、組み合わせて、グラフィカルユーザインターフェースの表示要素、さらに非表示値のプロパティベースの動画をサポートする。 開示した動画アーキテクチャは、要素によって所望の動画挙動を達成するために様々なグラフィカル表示(および非表示)要素(例えばアイコン、ダイアログボックス、スクロールバー)に結び付けられる動画インスタンスを容易に作成し、追跡できるようにする動画クラス、インターフェース、およびコレクションを含む動画システムを含む。 表示要素の動画化は、表示要素のプロパティ値の変更によって達成される。 本発明の一実施形態では、プロパティ値に対する変更は、動画クラスからインスタンス化され、プロパティに結び付けられる動画オブジェクトによって駆動される。

    本発明の一実施形態では、要素ツリー内の特定の要素に対するレンダリング操作に動画コレクションを関連付けることによってグラフィカル動画が達成される。 動画化された要素が最初に描かれると、レンダリングシステムは、指定された動画クラスからインスタンス化された動画オブジェクトの構成要素によって定義された動画挙動に従って、ある時間間隔で要素の表示状態を更新する。

    本発明の一実施形態では、動画は、異なるリフレッシュサイクルを有するグラフィカル表示システムにおいて複数のレベルで指定される。 容易に計算される一部の動画は、比較的高いリフレッシュ速度で更新される。 他のグラフィカル表示オブジェクトに影響を与えるものなどより複雑な他の動画は、比較的低いリフレッシュ速度で更新される。

    全体として見ると、本明細書に記載した動画アーキテクチャは、新しい様々な動画挙動を実行するための柔軟性の高いプラットフォームを提供し、新しい挙動を表示要素に結び付け、新しく極めて人を引き付ける動画化された表示インターフェースを作成する。

    図1は、本発明を具現化する動画アーキテクチャを実行するのに適した動作環境100の例を示している。 動作環境100は、適した動作環境の一例にすぎず、本発明の使用または機能の範囲に関する限定を示唆するものではない。 本発明との使用に適した他のよく知られているコンピューティングシステム、環境、および/または構成には、それだけには限定されないが、パーソナルコンピュータ、サーバコンピュータ、ラップトップ/ポータブルコンピューティング装置、ハンドヘルドコンピューティング装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記の任意のシステムまたは装置を含む分散コンピューティング環境などがある。

    本発明は、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令によって実行される1組のステップおよびプロセスの一般的な文脈で説明する。 一般にプログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。 実施形態の例は、単一のコンピュータシステム上でローカルに実行されるプロセスに関連して説明するが、本発明は、通信ネットワークを介して接続された複数のリモート処理装置によってタスクが実行される分散コンピューティング環境で動作するネットワークノード内に組み込まれる可能性がある。 分散コンピューティング環境では、一般に、メモリ記憶装置を含むローカルおよびリモートのコンピュータ記憶媒体にプログラムモジュールを置くことができる。

    引き続き図1を参照すると、本発明を実施するシステムの例は、汎用コンピューティング装置をコンピュータ110の形で含んでいる。 コンピュータ110の構成要素は、それだけには限定されないが、処理ユニット120、システムメモリ130、およびシステムメモリを含む様々なシステム構成要素を処理ユニット120に結合するシステムバス121を含み得る。 システムバス121は、様々なバスアーキテクチャのうちの任意のものを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造のうちどんなものでもよい。 こうしたアーキテクチャには、それだけには限定されないが一例として、業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ電子装置規格化協会(VESA)ローカルバス、およびメザニンバスとしても知られている周辺部品相互接続(PCI)バスなどがある。

    コンピュータ110は、一般に様々なコンピュータ可読媒体を含む。 コンピュータ可読媒体は、コンピュータ110からアクセスできる使用可能な任意の媒体とすることができ、揮発性および不揮発性媒体、リムーバブルおよび非リムーバブル媒体を含む。 コンピュータ可読媒体は、それだけには限定されないが一例として、コンピュータ記憶媒体および通信媒体を含み得る。 コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、他のデータなど、情報を記憶するための任意の方法または技術で実施される揮発性および不揮発性のリムーバブルおよび非リムーバブル媒体がある。 コンピュータ記憶媒体には、それだけには限定されないが、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、または所望の情報の格納に使用でき、コンピュータ110からアクセスできる他の任意の媒体などがある。 通信媒体は一般に、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを搬送波または他の移送機構などの変調されたデータ信号に組み込む。 これには任意の情報配信媒体がある。 「変調されたデータ信号」という用語は、信号内の情報を符号化するようにして設定または変更された1つまたは複数のその特徴を有する信号を意味する。 通信媒体には、それだけには限定されないが一例として、有線ネットワーク、直接配線された接続などの有線媒体、および音響、RF、赤外線、その他の無線媒体などの無線媒体がある。 また、上記の任意の組合せもコンピュータ可読媒体の範囲内に含まれるものとする。

    システムメモリ130は、読取り専用メモリ(ROM)131やランダムアクセスメモリ(RAM)132など、揮発性および/または不揮発性メモリの形のコンピュータ記憶媒体を含む。 基本入出力システム133(BIOS)は、例えば起動中など、コンピュータ110内の要素間での情報の転送を助ける基本ルーチンを含み、ROM131に格納されることもある。 RAM132は一般に、処理ユニット120から直接アクセス可能な、かつ/または処理ユニット120が現在処理しているデータおよび/またはプログラムモジュールを含む。 図1は、それだけには限定されないが一例として、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137を示している。

    コンピュータ110は、他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピュータ記憶媒体を含むこともできる。 一例にすぎないが、図1は、非リムーバブル不揮発性磁気媒体から読み取り、あるいはそこに書き込むハードディスクドライブ140、リムーバブル不揮発性磁気ディスク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)など他のインターフェースおよびバス構造で接続してもよい。 モニタ191または他のタイプの表示装置もまた、ビデオインターフェース190などのインターフェースを介してシステムバス121に接続することができる。 モニタに加えて、コンピュータは、出力周辺インターフェース195などを介して接続できるスピーカー197、プリンタ196など他の周辺出力装置を含むこともできる。

    コンピュータ110は、リモートコンピュータ180など1つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク環境で動作する可能性がある。 リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルーター、ネットワークPC、ピア装置、または他の一般のネットワークノードでよく、一般にコンピュータ110に関連して上述した多くまたはすべての要素を含むが、図1には、メモリ記憶装置181のみを示している。 図1に示した論理接続は、ローカルエリアネットワーク(LAN)171および広域エリアネットワーク(WAN)173を含むが、他のネットワークを含んでいてもよい。 こうしたネットワーキング環境は、オフィス規模、全社規模のコンピュータネットワーク、イントラネット、およびインターネットではごく一般的である。

    LANネットワーキング環境で使用する場合、コンピュータ110は、ネットワークインターフェースまたはアダプタ170を介してLAN171に接続される。 WANネットワーキング環境で使用する場合、コンピュータ110は一般に、インターネットなどWAN173を介して通信を確立するモデム172または他の手段を含む。 モデム172は、内蔵のものでも外付けのものでもよく、ユーザ入力インターフェース160または他の適切な機構を介してシステムバス121に接続することができる。 ネットワーク環境では、コンピュータ110に関連して示したプログラムモジュール、またはその一部をリモートメモリ記憶装置に格納することができる。 図1は、それだけには限定されないが一例として、リモートアプリケーションプログラム185をメモリ記憶装置181上に存在するものとして示している。 図示したネットワーク接続は例であり、コンピュータ間の通信リンクを確立する他の手段を使用してもよいことは理解されよう。

    図2は、本発明を具現化し、動画システムの1組の相互作用する機能的構成要素を組み込むグラフィカル表示アーキテクチャの構成要素を識別する高レベルの概略図である。 図2に示すグラフィカル表示アーキテクチャは、本発明の実施形態の例の説明を助けるために1組の機能的構成要素に分割している。 本発明は、例で示したような構成要素の構成に限定されない。 代わりに、本明細書で後述する構成要素の機能は、本発明の代替実施形態において異なるようにグループ分けされる。

    動画システムは、いくつかの副構成要素を含み、組み合わせて、アプリケーション200によってサブミットされる高レベルの命令に基づいてグラフィカル表示オブジェクト(および非視覚パラメータ)の動画化を容易にする。 アプリケーション200は、オペレーティングシステムの内部または外部に存在する任意のアプリケーションまたはコントロールとすることができる。 本明細書に記載した動画インフラストラクチャによって、動画のプログラミングおよび実行をかなりの程度まで汎用の動画構成要素に委任することができる。 本発明の一実施形態では、アプリケーション200は、更新されたビットマップを計算するのではなく、1つまたは複数の表示オブジェクトに動画を指定/定義するコマンドを動画システムにサブミットする。

    アプリケーション200のコマンドによれば、動画システムは、動画オブジェクトを構築する。 動画オブジェクトは、インスタンス化されると、要素ツリー202に関連付けることができる。 要素ツリー202は、アプリケーション200によって生成されたイベントに応答して作成される。 こうしたイベントの例には、アプリケーション200の開始、または新しいビューの作成をもたらす他の何らかの実行されたコマンドを含む。 その後アプリケーションは、要素ツリー202において新しい要素を作成し、後に要素を削除する。

    要素ツリー202は、階層的に並べられた1組の要素を含む。 本発明の一実施形態では、要素ツリー202は、ドキュメントを構造的に定義する。 各要素は、ほとんどの場合、例えばグラフィカルユーザインターフェース上に表示可能な可視画像に対応するオブジェクトを表す。 要素の例には、ボタン、テーブル、テーブルセル、リストコントロール、フレーム、イメージ、およびパラグラフ(フローパネル)などがある。 要素ツリー202内の要素は一般に、1つまたは複数のプロパティ(色、高さ、幅、位置、透過性など)を含む。 要素のプロパティに割り当てられる値は、要素の表示状態の定義に貢献する。 本発明の一実施形態では、動画オブジェクトは、1つまたは複数の要素/プロパティの組合せに割り当てられる。 その後、動画オブジェクトインスタンスは、各動画オブジェクトインスタンスが関連付けられるタイムラインに従って要素のプロパティに関する動画挙動をレンダリングするよう実行される。

    「タイムライン」
    タイミングおよびタイムラインは、本明細書に記載した動画システムを駆動する。 本明細書に記載されている動画システムのタイミングの側面は、W3Cの同期マルチメディア統合言語(SMIL2.0)仕様から派生したものである。 各動画オブジェクトは、作成されると、実行前に、動画オブジェクトの定義された挙動に関連付けられる一連の変化の進行を制御するタイムライン(例えば時間系列定義など)に関連付けられる。 さらに上記のタイムラインは、動画挙動のローカルな/相対的な時間系列(動画、反復、加速などの期間など)のみを定義する。 したがって動画オブジェクトは、動画オブジェクトに「親」タイムラインが(直接に、または別のオブジェクトを介して間接的に)割り当てられるまで実行することができない。 したがって、動画オブジェクトを実行するために、動画オブジェクトの相対的なタイミング定義を親タイムラインによって定義された実際の実行時間に結び付ける「親」タイミング定義(「親タイムライン」)に相対的なタイムラインが割り当てられる。 したがって親タイムラインは、動画オブジェクトの動画挙動を管理しない。 代わりに、親タイムラインは、例えば動画が実際に始まるときなど、外部挙動を管理する。 タイムラインは、階層型のタイミングツリー構造で維持され、個々のタイムラインは、親タイムラインを基準にして挙動を定義する属性を有する。 最上位のタイムラインは、ルート(ドキュメント、ページ、フレームなど)タイムラインを基準にして定義される。

    親タイムラインを、そのローカルの動画タイミング挙動を定義するそれ自体の内部タイムラインを有する動画オブジェクトに関連付けるいくつかの方法がある。 一例として、親タイムラインは、動画オブジェクトが結び付けられるタイミング定義である。 タイムラインを指定するモードの一例では、動画オブジェクトの作成を要求するエンティティ(アプリケーションなど)は、動画オブジェクトのタイムラインが結び付けられる親タイムラインを指定する。 この場合、動画オブジェクトのタイムラインは、作成時に親タイムラインを識別し、作成された動画オブジェクトは、(コピーとは異なり)動画オブジェクトがその後関連付けられる1つまたは複数の要素/プロパティの組合せによって使用される実際に実行される動画オブジェクトである。

    動画オブジェクトにタイムラインを指定する別のモードの例では、それ自体のタイムラインを含み、しかし親タイムラインは含んでいない未完成の動画オブジェクトクラスが作成される。 (親タイムラインを欠く)動画オブジェクト定義のこの未完成の形式を、本明細書では「動画テンプレート」と呼ぶ。 動画テンプレートは実行されず、代わりに動画テンプレートのコピー(またはクローン)が作成され、新しい動画インスタンスにはそれぞれ、新しい動画が結び付けられる要素の動画の親タイムラインが割り当てられる。 こうした場合、クローン化された動画オブジェクトの親タイムラインは、クローン化された動画オブジェクトが結び付けられる要素によって指定される親タイムラインである。 特定の親タイムラインのタイミング定義がないことによって、単一の動画テンプレートから複数のクローンを作成することができ、「クローン化された」各動画オブジェクトは、それが結び付けられる要素によって定義される要素指定の動画実行(開始、一時停止など)タイミングを採用する。 本システムは、親タイムラインを後から指定することを可能にするため、要素ツリー202上に配置されるように作成された動画オブジェクトは、作成時に親タイムラインの明示的な指定を必要としない。 しかし、こうしたタイミング情報が完成されて、動画が実行可能をなる。

    あるいは、アプリケーション200は、動画オブジェクトをメディア統合レイヤ(MIL)インターフェース206を介して直接メディア統合レイヤ(media integration layer:MIL)204に渡す。 MIL204は、一例として、Beda他による2002年6月27日に出願した「Multiple-Level Graphics Processing System and Method」という名称の米国特許出願第10/184795号明細書に記載されている。 この内容を、そこに含まれるすべての参照の内容を含めて、参照により本明細書に明示的に組み込む。 本発明の一実施形態では、アプリケーション200からMILインターフェース206に直接渡された動画オブジェクトは、親タイムラインの明示的な指定が必要である。 そうでなければ動画オブジェクトは実行されない。

    MIL204は、MILインターフェース206を介してアクセスされる1組のグラフィカル表示オブジェクトのレンダリングおよびコントロール構成要素を含む。 MILインターフェース206は、一例として、Beda他による2002年6月27日に出願した「Generic Parameterization for a Scene Graph」という名称の米国特許出願第10/184796号明細書に記載されている。 この内容を、そこに含まれるすべての参照の内容を含めて、参照により本明細書に明示的に組み込む。 MILインターフェース206は、アプリケーションの表示フレームの低レベル記述を構築するためにアプリケーション200またはプレゼンタシステム208(後述)が依存するインターフェースである。 MILインターフェース206は、DrawLine(...)、PushTransform(...)、PopTransform(...)など1組のメソッドの呼び出しを含む。 MILインターフェース206によって提供される呼び出しは、シーン/ドキュメント/またはグラフィカルユーザインターフェースを記述する。

    本明細書で取り組んだ本発明は、時間の経過に伴って変化するグラフィカルオブジェクトおよび任意のパラメータ値に対して動画を定義するインフラストラクチャを提供する。 したがって、実際の動画は、一例として本明細書で概説したMIL204を含む様々なグラフィックスレンダリングエンジンの内のいずれかで実行することができる。

    要素ツリー202によって維持される要素は、高レベルグラフィカル項目(ボタン、スクロールバーなど)を表す。 本発明の一実施形態では、こうしたグラフィカルオブジェクトは、MIL204構成要素によって直接使用することのできない高レベルで記載される。 したがってプレゼンタシステム208内のプレゼンタは、プレゼンタが関連付けられる要素ツリー202の構成体を、要素ツリー202の要素を構成する可視要素(線、塗りつぶした四形など)にコンパイル/変換する。 プレゼンタシステム208は、可視要素を、MILインターフェース206を介してMIL204に渡す。 プレゼンタシステム208の機能を実行する多くの方法がある。 プレゼンタシステム208の実施形態の例は、Parikh他による2003年5月9日に出願した(速達郵便EV329734584US)の「SYSTEM FOR HOSTING GRAPHICAL LAYOUT/PRESENTATION OBJECTS」という名称の米国特許出願第10/(出願番号未割当)号明細書に詳細が記載されている。 この内容は、そこに含まれるすべての参照を含めて、参照により本明細書に明示的に組み込む。

    本発明の特定の実施形態では、MIL204は、プレゼンタシステム208によってMILインターフェース206を介してMIL204に渡される可視要素を処理することができる高レベル可視ツリー210を含む。 高レベル可視ツリー210は、構造化された1組の基本形状(線、四角形、画像など)を含む。 構造化された1組の基本形状はアプリケーションの単一の画像フレームを示す 。 高レベル可視ツリー210は、「独立型動画(independent animations)」と呼ばれる動画のクラスをサポートする。 独立型動画は、以下で詳述するが、動画を達成するのにプレゼンタシステム208のレイアウト機能に依存しない。

    低レベル可視ツリー212は、高レベル可視ツリー210を平たくしたものである。 低レベル可視ツリー212は、高レベル可視ツリー210を介して低レベル可視ツリー212に渡された独立型動画を迅速にレンダリングし、実行するように構成されている。 低レベル可視ツリー212は、例えば高レベル可視ツリー210からその構造への更新の間の複数のフレームを実行する可能性がある。

    低レベル可視ツリー212は、出力ドライバとのインターフェースをとるように構成されている。 リモートマシンネットワーク通信ドライバ214は、アプリケーション200が出力をレンダリングするマシンに対応するオブジェクトである。 マシンは、アプリケーション200が実行されるマシンとは異なるマシンである可能性がある。 こうした場合、アプリケーション200は、アプリケーション200のユーザのために、その可視出力をリモートマシンの表示出力にネットワーク通信を介して伝える。

    あるいは、低レベル可視ツリー212は、グラフィカル表示ドライバ216に出力をレンダリングする。 グラフィカル表示ドライバ216は、ローカルユーザのためにアプリケーション200を現在実行しているマシンの出力表示装置(可視表示画面など)にフレームを描画するよう働くローカルマシン上のハードウェアへのフレーム表示データの通信を代行する。

    オブジェクトが動画化されているとき、レンダーキュー項目213は、複数の動画が確実に他との同期状態を保つようにする。 レンダーキュー項目213は、例えば要素ツリー202への変更が行われたとき、動画オブジェクトによって値が変更されたときなど、新しいフレームのレンダリングの必要があるたびに作成される。 レンダーキュー項目213は、完全に処理されるとすぐに消滅する。 レンダーキュー項目213は、その同期の役割を実行する際、タイミングツリー228(後述)をティック(tick)し、その結果、従属的に動画化されたプロパティを無効にし、ティック手順が完了した後、プレゼンタシステム208を呼び出してレイアウトを完成させ、高レベル可視ツリー210を更新し、プレゼンタシステム208がレイアウトを完成させた後、変更をコンパイルし、低レベル可視ツリー212に伝達するよう可視ツリー210に要求する処理を構成する。 レンダーキュー項目213の機能を実行するステップについて、図3を参照して本明細書で後述する。

    提供された動画化の値に従ってデータのフレームを維持し、生成するいくつかの機能ブロックの例を説明してきたが、次に要素ツリー202内の動画化されたプロパティのソースおよび時間で駆動される変化に注目する。 プロパティシステム220は、プロパティの値を維持するよう働く。 プロパティシステム220は、プレゼンタシステム208が値を使用して高レベル可視ツリー210を作成できるように、値を要素に格納し、それを計算する。 プロパティシステム220は、特定のプロパティの要素の値がその要素の1組の子によって継承されるプロパティ値の継承モデルをサポートする。

    図2で例示的に示すように、プロパティシステム220は、多くのソースから入力値を受信する。 アプリケーション220は、プロパティシステム220によって維持される動的プロパティの基底値を設定(および現在値を取得)する。 要素ツリー202は、プレゼンタシステム208に提供するための要素ツリー202内の要素のプロパティの値をプロパティシステム220に要求する。 プレゼンタシステム208は、プロパティ値を使用して、呼び出しのためのMILインターフェース206への入力を生成する。 要素ツリー202の要素を処理する過程の間、プレゼンタシステム208は、動的プロパティの基底値および要素に関連する他の情報をプロパティシステム220に要求して、値を整理し、プレゼンタシステム208が関連付けられる特定のビューを構成する要素に割り当てる。

    プロパティシステム220は、異なるソースからの値に優先順位を付ける。 例えば、プロパティシステム220によって、ローカルに指定されたプロパティ値が、プロパティシートで指定された値または親から継承された値より優先されるようにすることができる。 プロパティシステム220は、様々なソースによって提供される値をソートし、受信した値のいずれかに最高優先順位の値を戻すロジックを含む。 プロパティシステム220は、プロパティの現在値を計算するときにプロパティに結び付けられる任意のアクティブな動画を考慮に入れる。 ユーザが特定のソースからの値を要求した場合、プロパティシステム220は、こうした要求を扱う。

    プロパティシステム220によって維持されるプロパティ値への変更を行う動画オブジェクトは、動画オブジェクトインスタンス(またはその親)に関連付けられるタイムラインに基づいてプロパティ値を変更する方法を定義し、実行する動画クラス222からインスタンス化される。 動画クラスオブジェクトインスタンスは、アプリケーション200によって作成される。 また、アプリケーション200は、動画クラス222からインスタンス化された動画オブジェクトに値を設定する。 また、アプリケーション200は、特定の動画クラスオブジェクトについての現在値を要求することもできる。 動画クラスオブジェクトは、動画クラスオブジェクトのための参照が存在しないときは削除される。 動画クラス222はそれぞれ、特定の動画挙動を記載するFrom、To、Durationなどの指定可能なプロパティを有する。

    動画クラスは、異なる動画挙動およびその対応するデータ型のために異なるクラスが存在するように類別される。 動画クラスの例には FloatAnimation−浮動小数点を提供 BoxUnitAnimation−プレゼンタボックスの寸法を提供 PointAnimation−四角形の左上位置を提供 ColorAnimation−時間変化するカラー値を提供 BoolAnimation−ブール値を提供 などがある。 動画クラス220のインスタンスは不変である。 したがって、これらをいったん作成すると、そのプロパティ値を変更することはできない。 このことは、アプリケーションの作成者が、その定義済みの挙動が変更されることを気にすることなく、動画インスタンスを複数の場所で使用することができることを意味する。

    動画コレクションクラス224は、動画クラス222を整理する。 動画コレクションクラスは、アプリケーション200によって作成される。 アプリケーション200は、動画コレクションクラス内に含まれる1つまたは複数の動画クラス222を指定する。 次いでアプリケーション200は、動画コレクションクラスを、プロパティシステム220で動的プロパティを動画化する動画の集合として設定する。 また、アプリケーション200は、動画コレクションクラスインスタンスを、要素ツリー202の特定の要素のいずれかに関連付けられた任意の動的プロパティに関連付けることもできる。 アプリケーション200は、動画コレクションクラス224の特定の動画コレクションクラス内に含まれている動的クラスを列挙し、構成済みの動画値を動画コレクションクラスに要求することができる。 動画コレクションクラスインスタンスは、特定の動画コレクションクラスインスタンスについての参照が存在しないときに不要データとして処理される。

    動画コレクションは、同じデータ型を処理する動画オブジェクトの集合である。 動画コレクションクラスは、そのリスト内の動画クラスの相対的優先度、および動画コレクションクラスインスタンスに渡された基底値に従って動画クラスをどのように構成するかを認識しており、動画クラスは現在の値を戻す。 本発明の一実施形態では、動画クラスは、ともに動画コレクションクラスにおいて連鎖される。 動画コレクションの入力は、基本プロパティ値を受信する。 第1の段階(動画オブジェクト)は、同じ型の変更されたプロパティ値(動画コレクションクラスオブジェクト内に複数の動画オブジェクトがある場合)を、次の可能性のある段階への入力として提供する。 動画コレクションのパイプライン化された動画オブジェクトによる基底値のパイプライン処理によって、動画化されるプロパティの現在の値を提供する。 こうしたパイプライン化の結果、連続的に実行される複合動画機能が作成される。

    動画コレクションクラスは、動画をサポートするためのプロパティ値の型ごとに存在する(FloatAnimationCollection、BoxUnitAnimationCollection、PointAnimationCollection、ColorAnimationCollection、BoolAnimationCollectionなど)。 動画コレクションクラス型のリストは、単に例として示している。 当分野の技術者であれば、多種多様な動画コレクションクラス型が可能であることは容易に理解できよう。 動画クラス222と同様、動画コレクションクラス224からの動画コレクションクラスのインスタンスは不変である。

    動的動画コレクションクラス226は、動画コレクションクラス224の機能に基づいている。 動的動画コレクションクラス226のインスタンスは、動画コレクションクラス224の動画コレクションクラスインスタンスへの参照を堅持する。 さらに、動的動画コレクションオブジェクトインスタンスは、要素ツリー202内の要素、および動的動画コレクションインスタンスが動画化している要素のプロパティへの参照を堅持する。 アプリケーションの作成者は、本発明の一実施形態では、動的動画コレクションインスタンスを作成したり、それにアクセスしたりすることはできない。 代わりに、プロパティシステム220は、アプリケーション200からの要求を受信すると、動的動画コレクションインスタンスを作成する。

    動画コレクションクラスインスタンスが動的プロパティに関連付けられると、動的動画コレクションオブジェクトインスタンスがプロパティシステム220によって作成される。 動的プロパティは、幅、高さ、上、左、または他の任意の定義プロパティなど、要素ツリー202の要素の単一の定義プロパティに関連付けられる値を保持し、かつ/または計算する。 また、動的動画コレクションは、動画コレクションクラス224の動画クラスからインスタンス化された動画コレクションを保持し、したがって動画コレクションクラスを要素ツリー202の特定の要素/プロパティの組合せに関連付ける。 プロパティシステム220は、動的プロパティの現在値を求められると、動的プロパティが動的動画コレクションクラス226からインスタンス化された関連する動的動画コレクションオブジェクトを有しているかどうかを決定し、動的動画コレクション内の現在アクティブな任意の動画クラスによって基底値を処理して動画化された現在値を提供する。 本発明の一実施形態では、プロパティシステム220が特定の動的動画コレクションオブジェクトに現在値を要求すると、指定された動的動画コレクションは、要求を動画コレクションクラス224の1つからインスタンス化された適切な動画コレクションオブジェクトに渡す。 動画コレクションオブジェクトは、動画クラス222からインスタンス化された動画オブジェクトのその組の中をループして進み、現在値を提供して、その呼び出し側の動的動画コレクションに、動画コレクションオブジェクトが最終値を提供するための基礎を提供する。

    アプリケーション220によって作成された動画の一部は、親タイムラインを指定せず、要求された動画に適した親タイムラインの選択を動画システムに期待するものがある。 関連付けプロセス中、プロパティシステム220は、最初に、動画コレクションクラス内の各動画クラスが親タイムラインを有しているかどうかを決定する。 動画クラスが親タイムラインに関連付けられていない場合、動的動画コレクションが関連付けられている表示要素の親タイムラインに関連付けられた新しい動画クラスが作成される。 さらに、表示要素に関連付けられている親タイムラインが変更された場合、動的動画コレクションは再構築されて、親タイムラインの変更を反映することに注意されたい。

    適切に機能するために、動画コレクションクラス内のすべての動画クラスは、最終的に、その実行のタイミングを管理する親タイムラインを指定する必要がある。 指定された動画コレクションクラス内のすべての動画クラスが親タイムラインに関連付けられている場合、動的動画コレクションは、指定された動画コレクションクラスを使用する。 そうでない場合、動画クラスおよび動画コレクションクラスの不変性を考慮して、プロパティシステム220は、新しい動画コレクションクラスを作成する。 新しい動画コレクションクラスは、割り当てられた親タイムラインをそれぞれ有する複数の新しい動画クラスを含む。 プロパティシステム220は、各動画オブジェクトが親タイムラインを有する新しい動画コレクションクラスを作成すると、動画コレクションクラスを、要素/動的プロパティの対に関連付けられた動的動画コレクションに提供する。 この対に関連付けられた動的動画コレクションがまだ存在しない場合、プロパティシステムは、新しいもの226を作成する。

    上記で何度も述べたように、タイミングは、要素ツリー202内の要素のプロパティに結び付けられた動画オブジェクトに関連する動画挙動を駆動する。 本明細書で使用する場合、タイムラインは、1組のタイミング属性に従ってランタイム状態を維持するタイミングエンティティのインスタンスである。 タイミングツリー228は、本発明の一実施形態では、階層的に配列されているタイミングノード(タイムライン)を含むデータ構造である。 タイミングノード間の関係は、継承ルール、およびタイミングツリー228のタイミングノードに対応する各タイムラインのノード固有のタイミング属性によって定義される。 継承ルールは、親開始時間に関連する子開始時間のオフセットの定義を含む。 さらに、継承関係は、制御関係を指定する。 例えば、親が再起動、繰り返し、一時停止、再開、シーク、または終了すると、すべての子(およびその子など)もそのように行う。 こうした関係によって単一の親タイムラインに対するアクションを介して子タイムラインのグループ全体を開始させることができる。 タイミングツリー228は、(1)動画クラスインスタンスの値への変更を潜在的に駆動するタイムライン、および(2)他のタイムラインを含むコンテナタイムラインを堅持する。 タイムラインから導出される進行値(progress value)を使用して、所与の動画オブジェクトの現在値を算出する。 タイミングツリー228は、アプリケーション200の起動時に作成される。

    タイミングツリー228は、図2に示した動画インフラストラクチャに対するタイミングイベント通知の役割を実行する。 最初に、動的動画コレクションがインスタンス化されると、その動的コレクションクラスオブジェクトにおける動的インスタンスが進行したかどうかの通知を発行せよとの要求が動的動画コレクションからタイミングツリー228に発行される。 動的動画コレクションがタイミングツリー228から、その動画の1つが進行したとの通知を受信すると、動的動画コレクションインスタンスは、それが関連付けられる表示要素の動的プロパティが現在無効であることをプロパティシステム220に通知する。 次に表示要素プロパティの無効化によって、本明細書では依存型動画(dependent animation)と呼ばれるプロセスが開始する。 依存型動画処理中、プレゼンタシステム208は、動画に関連する値の変更に従って高レベル可視ツリー210を構築するよう要求される。

    また、タイミングツリー228は、動画クラス222のインスタンスについて進度の測定および報告の役割を行う。 無効化に応答して、動画クラス222のインスタンスは、その現在値を報告するよう要求される。 動画クラス222は、それぞれが関連付けられているタイムライン進行値について、タイミングツリー228に照会する。 その後動画クラス222は、タイミングツリーによって提供される進行値に基づいて各現在値を計算し、現在値を任意の要求側エンティティに提供する。

    レンダーキュー項目213は、タイミングツリー228と相互作用する。 レンダーキュー項目は、実行されると、アプリケーション200によって生成されたアプリケーション/ページ/シーンが低レベル可視ツリー212までコンパイルされ、最終的に表示装置上にレンダリングされるようにするオペレーティングシステムキューのキュー項目である。 呼び出されると、レンダーキュー項目が行う最初のことは、タイミングツリー228を「ティックする」ことである。 これには、タイミングツリーにそのタイムラインを現在の時間に更新させる効果がある。 その結果、タイミングツリー228は、プロパティシステム220において多くの無効化を引き起こす通知を送信する。 独立型動画の進行値も、ティックが実行されたときに更新される。 レンダーキュー項目213の進行中、タイミングツリー228は変更され、レンダーキュー項目は、タイミングツリー228が安定するまで繰り返し、同時に「再ティック」を行う。

    独立型/依存型動画 独立型動画および依存型動画については上述した。 本発明の一実施形態では、図2に示した動画システムは、少なくともこれら2つの型の動画インスタンスをサポートする。 その分類は、他の動画インスタンスとの関係に基づいている。 独立型動画インスタンスは、ビューのレイアウトに影響を与えず、したがってより高速でリフレッシュすることができる。 独立型動画の例は、色の動画である。 オブジェクトの色は、その幅または高さを変更せず、したがって色が変化する動画は、色が変化する動画要素がページにどのように配置されるか(サイズや位置など)に影響を与えない。

    依存型動画は、一般に依存型動画が関連付けられた要素のレイアウトを変更し、したがって、グラフィックユーザインターフェースレイアウトの再計算が必要となる。 依存型動画インスタンスは、要素ツリー202構造内に格納されて、影響を受けるすべての表示要素プロパティの適切な処理を確実にする。 潜在的にかなり大きい計算およびメモリアクセスが必要となるため、MIL204は、依存型動画をより低いリフレッシュ速度で計算する可能性がある。

    「動画」クラスの3つのレベル/段階 本発明の一実施形態では、表示要素プロパティに適用される動画挙動は、3つのレベルのクラスおよびその対応するインスタンスによって実施される。 引き続き図2を参照すると、動画クラス222は、プロパティ値に関する特定の定義済み動画操作(一般に単一の動画挙動)を計算することができるオブジェクトを定義する1組のオブジェクトクラスを含む。

    次のレベルでは、動画コレクションクラス224は、動画クラス222からの1つまたは複数の個々の動画クラスを単一の動画クラス定義にグループ化し/割り当て、それによって単一の要素プロパティに関する複合動画挙動の作成をサポートする1組のオブジェクトを定義する。

    次のレベルでは、動的動画コレクション226は、動画コレクションクラス224のうちの1つによって定義される動画挙動を、要素ツリー202内の要素のプロパティ関して実行するオブジェクト型を定義する。 こうした機能は、動画コレクションクラス224の動画コレクションクラスインスタンスへの参照、および要素ツリー202内の要素および動的動画コレクションクラスインスタンスが動画化している要素のプロパティへの参照を堅持する動的動画コレクション226のインスタンスによって容易になる。 動画コレクションクラスインスタンスが動的プロパティに関連付けられると、プロパティシステム220によって動的動画コレクションが作成される。 動的プロパティは、幅、高さ、上、左、または任意の要素の他の任意の定義プロパティなど、要素ツリー202内の要素の単一の定義プロパティに関連する値を保持し、かつ/または計算する。 また、動的動画コレクションは、動画コレクションクラス224のうちの1つからインスタンス化された動画コレクションクラスオブジェクトへの参照を保持し、このようにして動画コレクションクラスオブジェクトを、要素ツリー202内の特定の要素/プロパティの組合せに関連付ける。

    図3を参照すると、図2のレンダーキュー項目213によって実行されるレンダリングシーケンスの例の1組のステップの概要を示している。 上述したように、レンダーキュー項目213は、実行されると、アプリケーション200によって生成されたアプリケーション/ページ/シーンが低レベル可視ツリー212までコンパイルされて表示装置によってレンダリングされるようにする。 この一連のステップは例であり、レンダーキュー項目操作は、本発明の他の実施形態では変更されることに注意されたい。

    最初に、ステップ300中、レンダーキュー項目213によって、タイミングツリー228のティックが引き起こされる。 タイミングツリー228のティックは、タイミングツリー228にそのタイムラインを現在の時間に更新させる効果がある。 その結果、タイミングツリー228は、プロパティシステム220において多くの無効化(依存的に動画化されるプロパティの無効化など)を引き起こす通知を送信する。 本発明の一実施形態では、更新された時間によって影響を受けた動画オブジェクトによってChangeイベントが生成される。 これらのイベントは、動画オブジェクトの関連のDynamic Animation Collectionオブジェクトインスタンスによって収集され、処理される。 Dynamic Animation Collectionオブジェクトは、要素のその動的プロパティを無効にする。 独立型動画の進行値も、ステップ300でティックが実行されたときに更新される。

    タイミングツリー228のティックを行った後、ステップ310中に、レンダーキュー項目213によってレイアウトプロセスが行われる。 レイアウトプロセス310中に、レンダーキュー項目の最後の実行以降の要素ツリー202への任意の変更に従って高レベル可視ツリー210が更新される。 本発明の一実施形態では、(時間のティックの結果)プロパティ値を変更したグラフィカル要素をビューに配置するよう働くプレゼンタが無効になる。 これは、プレゼンタは、そのレイアウトを再計算し、影響を受けた動的プロパティへの変更を組み込む新しい高レベル可視ツリーを作成する必要があることを意味する。 また、ステップ310の間、表示システムは、レイアウトに影響を与える可能性のあるアプリケーション、オペレーティングシステムシェルなどからの要求を送受信する。 こうした要求の例には、ヒットテスト、ユーザプログラムへのコールバック、グラフィカル表示に影響を与える一般のアプリケーションアクションなどがある。

    レイアウトプロセス310中、タイミングツリー228構造は、変化する可能性がある(新しいタイミングノードが追加された、既存のノードが削除された、既存のタイミングノードに新しい参照が設定されたなど)。 ステップ320で、タイミングツリー構造が変化したと決定されると、制御はステップ300に戻され、その新しい形式のタイミングツリー228構造に対してタイミングのティックが再実行される。

    タイミングツリー228の構造が変化していない場合、制御はステップ320からレンダリングステップ330に進み、ここで高レベル可視ツリー210は、新しい/更新されたグラフィカル表示データをコンパイルし、低レベル可視ツリー212に伝える。 低レベル可視ツリー212は、受信された変化に基づいて、再計算された出力をドライバ262および/または264へレンダリングする。

    その後、ステップ340の間、ティックの必要がある次の時間(最も近いイベント)を決定するために、動的動画コレクションに関連するタイムラインに照会する。 ティックがそれ以上必要でない場合、制御は終了360に進む。 ツリーのティックがさらに必要な場合、制御はステップ350に進み、レンダーキュー項目213の新しいインスタンスが、動画化された要素プロパティの動的動画コレクションインスタンスのために作成される。 新しいレンダーキュー項目は、実行の必要があるときを指定する。 指定された実行時間がまだ到達していないある時間である場合、レンダーキュー項目は最初に非アクティブリストに配置される。 そのときになると、レンダーキュー項目は、アクティブキューに配置され、図3に示したステップに従って実行される。 新しいレンダーキュー項目を作成した後、制御は終了360に進む。

    要素プロパティの動画挙動は、動画クラス222からインスタンス化された1つまたは複数の動画オブジェクトによって実行される。 各動画オブジェクトは、(少なくとも現在のタイムライン値を含む)第1の組の入力を取得し、動画化される表示要素をレンダリングするのに適した型の出力を生成する動画機能を含む。 複数の動画クラス222のうちの様々なもの(PointAnimationなど)は、タイムライン進行値を、要素プロパティに適切なデータ型(点など)に変換する。

    図4を参照すると、高レベル動画クラス構造の例の概要を示している。 様々な動画クラスは、共通のパターンに従い、同様の1組のインスタンスを実装する。 主に、プロパティのデータ型、および計算された進行値を考慮して現在値を入力値に割り当てるために(浮動小数点、ブール値、点など特定のデータ型を考慮して)実行された計算に違いが生じる。 本明細書に含まれる動画クラスの機能の例および説明を考慮すると、こうした変更は当分野の技術者であれば十分実現できる。

    本発明の一実施形態では、動画クラス構造は、1組の動画プロパティ400を含む。 Fromプロパティは、動画開始値を指定する。 Toプロパティは、動画終了値を指定する。 Byプロパティは、動画の終了時の変更(デルタ)値を指定する。 Toプロパティで明示的な終了値を指定する代わりに、Byプロパティが動画終了値と初期の動画値との間の差を指定する。

    動画クラスは、各セグメント内の異なるタイミングパラメータを使用する複数のセグメントを含むことができる。 KeyValuesプロパティは、動画の値のリストを指定する。 InterpolationMethodプロパティは、KeyValuesプロパティで指定された2つのキー値の間を補間する方法を指定する。 InterpolationMethodの例には、離散、線形、ペース、スプラインなどがある。 KeyTimesプロパティは、動画の間隔の制御に使用する時間値のリストを指定する。 このリストは、KeyValuesリストと同じ数の要素を含む。 このリストでは、時間値が昇順に配列され、このリストの最初の値は0、最後の値は1である(ただし、InterpolationMethodがDiecreteに設定されている場合、最後の値は1以下の任意の数字となり得る)。 KeySplinesプロパティは、KeyTimesリストに関連する1組のベジェ制御点を指定する。 ベジェ制御点は、動画の間隔を制御する3次関数を定義する。 このリストは、KeyTimesリストより1つ少ない要素を含む。 このリストは、InterpolationMethod属性がSplineに設定されている場合にのみ使用される。

    動画クラス構造内の動画プロパティは、ブール値属性をいくつか含む。 動画オブジェクトのタイムラインがアクティブであるか、充填期間(fill period)である場合、IsOverridingBaseValueプロパティがTrueに設定される。 さらに、IsAccumulatingプロパティによって、繰り返される動画シーケンスが要素のプロパティに累積的な効果を及ぼすことができる。 IsAccumulatingプロパティをTrueに設定すると、繰り返される動画シーケンスのすべての反復時に同じ道筋を繰り返すのではなく、動画は、各反復の効果を蓄積し、本質的にそれ自体で構成し、前の動画により誘導された要素のプロパティの変更に基づいて構築する。

    動画オブジェクトのGetValue(1組のメソッド402との関連で後述する)の戻り値が基底値(動画オブジェクトに提供される)に依存する場合、UsesBaseValueプロパティはTrueを戻す。 UsesBaseValueプロパティがFalseを戻す場合、動画オブジェクトは、基底値を完全に無視する。 動画オブジェクトがリスト内にある場合、場合によっては、UsesBaseValueプロパティによって、動画オブジェクトの一部のみを評価する必要があるものの最適化が可能になる。

    動画クラス構造は、1組のタイミングプロパティ410も含む。 CurrentTimeプロパティは、動画オブジェクトのタイムラインにとって局所的な現在の時間を提供する。 ParentTimelineプロパティは、動画オブジェクトのタイムラインのタイミングの親であるタイムラインを指定する。 ParentTimelineプロパティは、他の任意のタイムライン、またはTimeline. VisualParentまたはTimeline. RootTimelineという2つの特別な参照値の一方を参照することができる。 ParentTimelineプロパティがTimeline. VisualParentに設定されている場合、タイムラインは、それが使用される可視要素に関連するタイムラインを使用時に自動的に親とする。 可視要素が関連するDefaultTimelineを有していない場合、親の可視要素は、繰り返し検査される。 ParentTimelineプロパティがTimeline. RootTimelineに設定されている場合、このタイムラインは、タイミングツリー228の「ルート」を使用時に自動的に親とする。

    タイミングプロパティの組は、特定の動画オブジェクトのタイムラインが開始すべき時間を指定するBeginプロパティも含む。 デフォルトでは、開始時間値は、親タイムラインの開始時間に関連しているが、他の何らかのタイムラインの開始または終了時間に関連する時間を提供するオフセットも潜在的に指定される。 後者の場合、他のタイムラインは、この特定の動画オブジェクトのタイムラインと同じタイムラインに対する親でなければならない。 動画オブジェクトのDurationプロパティは、開始から終了までの単一の期間を指定する。 Progressプロパティは、タイムラインの現在の進行値を指定する。 IsOverridingBaseValue(本明細書で後述)がfalseである場合、Progressプロパティは0を戻す。 いかなる場合でも、Progressプロパティの戻り値は、常に0から1までの間の値である。

    本発明の一実施形態では、動画の繰り返しがサポートされている。 RepeatCountプロパティは、この動画オブジェクトの寿命中、開始から終了までの期間が繰り返される回数を指定する。 RepeatCountプロパティ値は、分数値である可能性がある。 特殊な値、float. Positivelnfinityは、タイムラインは連続的に繰り返す必要があることを示す。 CurrentRepeatプロパティは、繰り返す場合、タイムラインの現在の反復を指定する。 最初の反復は反復1である。 IsOverridingBaseValue動画プロパティがfalseの場合、CurrentRepeatプロパティは0を戻す。

    RepeatDurationプロパティは、開始から終了までの期間が繰り返される必要がある時間の長さを指定する。 これによって、部分的な実行(反復回数)が引き起こされる可能性がある。 Time. IndefiniteのRepeatDurationプロパティ値は、タイムラインが常時繰り返す必要があることを示す。 IsOverridingBaseValueプロパティがfalseの場合、このプロパティは、Time. Unspecifiedを戻す。 値がRepeatCountプロパティおよびRepeatDurationプロパティに指定されている場合、総アクティブ期間は、2つの指定されたプロパティの最小値である。

    動画クラスのタイミングプロパティは、時間の加速段階で費やされる単一の期間の一部を表す0から1の間の値を指定するaccelerationプロパティも含む。 decelerationプロパティは、時間減速段階で費やされる単一の期間の一部を表す0から1の間の値を指定する。 動画は、同時に加速、減速することはできないため、accelerationプロパティ値およびdecelerationプロパティ値の合計は1(単一の期間)を超えない。

    Autoreverseプロパティは、動画が開始から終了まで進み、次いで戻るかどうかを指定する。 Autoreverseプロパティが「True」の値を有している場合、タイムラインは開始から終了まで進み、次いですぐに終了から開始まで逆向きに進む。 タイムラインは、動画オブジェクトのDurationプロパティによって指定されている時間量の2倍の間アクティブである。

    Endプロパティは、動画オブジェクトのタイムラインに最大の終了時間を指定する値を維持する。 Endプロパティ値がBeginおよびDurationのプロパティ値の合計より小さい場合、アクティブ期間は、Endプロパティ値によって短縮される。 さらに、指定された動画の開始(スケジュールされている、または対話式)で、End属性によって指定された時間を過ぎたものはすべて無視される。

    EndSyncプロパティ値は、タイムラインの暗黙の期間を定義する。 EndSyncプロパティによって指定された暗黙の期間は、Durationプロパティが明示的に設定されていない場合に使用される。 タイムラインの暗黙の期間は、それが制御する時間調節されたオブジェクトによって、またはそれの親となり得る他のタイムラインによって定義することができる。

    Fillプロパティは、終了時間が経過した後の動画オブジェクトのタイムラインの挙動を指定する。 デフォルトでは、タイムラインが「オン」となるのは、開始から終了までだけであるが、Fillプロパティが「Freeze」に設定されている場合、タイムラインは、終了時間を過ぎてもオンのままである。 この場合、終了時間後の動画オブジェクトの進行値は、終了時間にあった値に等しい。 Fillプロパティ値の設定値は、Remove(グローバルデフォルト)、Freeze、およびHoldである。 FillDefaultプロパティは、Fillプロパティのデフォルトの値を指定する。 Fillプロパティ値が指定されていない場合、DefaultFillプロパティの値は、Fillの挙動を指定する。 さらに、これを親とするタイムラインのそれぞれのFillDedault属性が設定されていない限り、このデフォルトはそれらによって継承される。 DefalutFillプロパティの可能な値は、Fill属性と同じである。

    Restartプロパティは、第2の(または後の)開始時間に到達したときの動画オブジェクトのタイムラインの挙動を指定する。 デフォルトでは、開始時間は、任意のアクティブ期間を中断し、タイムラインの時間t=0に戻す。 しかし、RestartプロパティがWhenNotActiveに設定されている場合、アクティブ期間を中断する開始時間は無視される。 Restartプロパティの可能な値は、Always、WhenNotActive、およびNeverである。 Restart Defaultプロパティは、Restartプロパティのデフォルトの値を指定する。

    Speedプロパティは、動画オブジェクトのタイムラインの時間が(その親のタイムラインに比較して)経過すべき相対速度を指定する。 例えば、値1は通常の速度、値2は2倍の速度で時間が経過する(したがって知覚される期間は、Duration属性によって指定された時間のわずか半分になる)ことを意味する。 この値は負でもよく、この場合時間は、このタイムラインにおいて、親タイムラインが逆方向であるかのように終了時間から開始時間に逆方向に流れる。

    動画オブジェクトの動画の状態を識別するために、1組のBooleanプロパティが含まれている。 IsForwardProgressingプロパティは、このタイムラインでの進行が、実時間(wall−clock time)に対して0から1に移動するかどうかを識別する。 IsForwardProgressingプロパティは、潜在的に逆方向のタイムラインにおいてネストされる影響を考慮に入れる。 IsOverridingBaseValueがfalseの場合、IsForwardProgressingは、このタイムラインの親タイムラインが戻すものと同じ値を戻す。 IsReversedプロパティは、タイムライン自体の局所基準の視点から、タイムラインが逆方向の期間内であるかどうかを識別する。 このプロパティは、IsForwardProgressingプロパティとは対照的に、潜在的に逆方向のタイムラインでネストされる影響を考慮に入れない。 IsOverridingBaseValueプロパティ値がfalseの場合、Is Reversedプロパティはfalseを戻す。

    他のプロパティは、動画のアクティビティ状態の状態に関するものである。 IsChangingプロパティは、動画オブジェクトのタイムラインがアクティブかどうかを識別する。 これに対して、IsPausedプロパティは、タイムラインがアクティブである場合Trueを戻し、しかし動画は一時停止する。

    動画クラスは、1組のメソッド420も含む。 特定の動画クラス内の1組のコンストラクタメソッドは、特定の動画クラス型(浮動小数点、ブール値、点など)の特定の動画挙動を組み込む動画オブジェクトを作成する。 特定の動画挙動に対応する1組の動画コンストラクタメソッドの型は、一例として、本明細書で後述する図5で識別される。

    BeginInメソッドは、オフセット時間値を入力として受信する。 BeginInメソッドは、オフセット値に対応する将来または過去におけるある時点での相互作用の開始をトリガする。 入力オフセットパラメータは、動画オブジェクトの親タイムラインに関連する時間を指定する。 親タイムラインが非アクティブである場合、このメソッドは効果がない。

    同様に、EndInメソッドは、別の関連の時間値を入力として受信する。 EndInメソッドは、将来または過去における指定された時点での相互作用の終了をトリガする。 パラメータは、動画オブジェクトの親タイムラインの参照のフレーム内にある。 親タイムラインが非アクティブである場合、このメソッドは効果がない。

    アクティブである間に動画オブジェクトの進行を停止/開始するメソッドが提供されている。 pauseメソッドは、動画オブジェクトのタイムライン、および動画オブジェクトのタイムラインを参照する子を一時停止する。 このタイムラインが非アクティブである場合、このメソッドは効果がない。 逆に、resumeメソッドは、動画オブジェクトのタイムラインおよびその子のすべてのタイムラインを再開する。 このタイムラインが非アクティブであり、一時停止されている場合、このメソッドは効果がない。

    seekメソッドは、指定されているオフセット値に基づいて動画実行シーケンスの特定のポイントに直接移動できるようにする。 seekメソッドは、このタイムラインの現在の時間を変更する。 このことによって、そのすべての子のタイムラインに影響を与える可能性がある。 タイムラインが非アクティブである場合、このメソッドは効果がない。

    GetUniquelnstanceメソッドは、タイムラインを入力として受信し、他のインスタンスから切り離してそれ自体のランタイム状態を維持することができる動画オブジェクトのインスタンスを戻す。 動画オブジェクトが、自動的に親が割り当てられるタイムラインを含む場合、戻されたインスタンスは、パラメータとして渡されたタイムラインを親とするタイムラインを有する。

    GetValueメソッドは、ある型の基底値を入力として取得し、入力された基底値と同じ型の別の値を戻す。 出力の値は、入力(基底値)およびそれが渡された変更子(動画オブジェクト/コレクションなど)の内部状態によって決まる。 特にこれは、同じ入力で複数回GetValueを呼び出しても同じ出力を戻すことは保証されておらず、実際、動画シーケンスの過程の間の変更が予測されることを意味する。 動画オブジェクトクラス222の場合、GetValueメソッドは、渡された基底値を受信し、進行値のその内部変更子定義計算に基づいて値を戻す。

    最後に、動画クラス構造は、1組のイベントをサポートする。 動画オブジェクトの内部状態が変化した場合はいつでもChangedイベント430が生成される。 Changedイベント430フラグは、再レンダリングが必要(位置または寸法について何かが変更された)であることを示すために使用する。 Begunイベント信号は、オブジェクトがその内部状態が連続的に変化している期間に入るときに生成される。 Endedイベント信号は、オブジェクトがその内部状態が連続的に変化している期間を離れるときはいつでも生成される。 Repeatedイベントは、動画オブジェクトのタイムラインがその純然たる期間を繰り返すときにはいつでも生成される。 Reversedイベントは、動画オブジェクトのタイムラインでの時間の方向が変化したときに常に生成される。 Paused、Resume、およびSeekedのイベントは、動画オブジェクトのタイムラインでの対応するPause、Resume、およびSeekメソッドの完了に応答して生成される。

    図5を参照すると、1組の動画オブジェクト挙動が識別されている。 識別された挙動のそれぞれは、適切な場合、本明細書で上述した動画クラス型のそれぞれによってサポートされている特定のコンストラクタクラスに対応する。 Fromコンストラクタ型500は、渡された「From」値をその初期値として取得し、関連するプロパティに指定された基底値に進む動画オブジェクトを作成する。 Toコンストラクタ型510は、関連するプロパティに対して指定された基底値をその初期値として取得し、渡された「To」値に進む動画オブジェクトを作成する。 From−Toコンストラクタ型520は、動画オブジェクトにFromおよびToのプロパティ値を指定する渡されたパラメータを受信する。 動画化された要素のプロパティに関する基底値は、動画中には使用されない。 しかし、動画オブジェクトのFillタイミングプロパティが「Freeze」でない場合は、動画シーケンスが終了すると、要素プロパティは基底値に戻る。

    動画の終点を指定する代わりに、動画値範囲は、終点および変化量(デルタ)値によって指定することができる。 Byコンストラクタ530は、デルタ値を受信し、基底値で動画を開始し、動画サイクルの過程中デルタ値によって指定された量分だけ基底値の変更を進める。 From−byコンストラクタ540は、その入力として「From」開始値を受信して、動画サイクル中渡されたデルタ値分だけ「From」初期値の変更を進める。 動画オブジェクトの1組の基本的なコンストラクタについて説明してきたが、本発明は、上記の挙動の複合/組合せを含む様々な動画挙動(および対応するコンストラクタ)を含むことに注意されたい。

    動画クラス構造の例について説明してきたが、次に動画オブジェクトのコンテナ、動画コレクションクラス224に注目する。 図6を参照すると、動画コレクションクラスの構造の例を示している。 動画コレクションオブジェクトは、動画クラス224からインスタンス化された動画オブジェクトのリストを維持する。 まず、動画コレクションクラスによってサポートされる1組のメソッド600を参照すると、GetUniqueInstanceメソッドは、渡されたタイムラインの識別に対応するデフォルトの親タイムラインとともに動画コレクションインスタンスを戻す。 また、動画コレクションクラスは、動画コレクションクラスに対してDefaultParentTimelineプロパティを設定するインターフェースをサポートする。 本発明の実施形態の例では、プロパティシステム220は、GetUniqueInstanceメソッドを呼び出して、動的動画コレクションオブジェクトの特定の動画コレクションのコピーを取得する。 動画コレクションオブジェクトは、動画オブジェクトのリストを含む。 ビルダ機能/エンティティは、作成された動画コレクションインスタンスに動画オブジェクトを追加する。 動画コレクション内の動画オブジェクトは、インデックスが付され、(配列と同様に)リスト内の特定の位置を指定することによって、参照/アクセスされる。

    GetValueメソッドは、ある型の基底値を入力として取得し、入力された基底値とおなじ型の別の値を戻す。 出力の値は、入力(基底値)およびそれが渡された変更子(動画オブジェクト/コレクションなど)の内部状態によって決まる。 特にこれは、同じ入力で複数回GetValueを呼び出しても同じ出力を戻すことは保証されておらず、実際、動画シーケンスの過程の間の変更が予測されることを意味する。 動画コレクションクラスの場合、GetValueメソッドは、渡された基底値をそのコレクションの第1の動画オブジェトに提供する。 第1の動画オブジェクトの出力は、動画コレクション内の次の動画オブジェクト(存在する場合)への入力基底値となる。 このプロセスは、動画コレクション内の最後の動画オブジェクトが出力を算出するまで繰り返される。 GetValueメソッドは、動画コレクション内の動画オブジェクトのパイプライン内の最後の動画オブジェクトによって提供された出力値を戻す。

    動画コレクションクラスは、1組のプロパティ610も含む。 IsChangingプロパティおよびIsOvenidingBaseValueプロパティは、それに応じて指定された動画オブジェクトのプロパティと類似している。 しかし、動画コレクションクラスの場合、動画オブジェクトの対応するプロパティのいずれかが「True」を戻す場合、動画コレクションの対応するプロパティが「True」を戻すように、プロパティがマージされる。 Animations(array)プロパティは、動画コレクション内の動画オブジェクトのリストを維持する。

    動画コレクションは、1組のイベント620もサポートする。 Changedイベントは、動画コレクションの構造体の動画オブジェクトから放出され、合体し、本明細書で上述した対応するイベントを報告する。

    次に図7を参照すると、動的動画コレクションクラス226について、1組のメソッドおよびプロパティが識別されている。 1組のメソッド700は、動的動画コレクションコンストラクタメソッドを含む。 動的動画コレクションコンストラクタメソッドは、入力として、(要素ツリー202上の)要素参照、要素の動的プロパティ、および動的コレクションインスタンスを受信し、コンストラクタは、渡された動画コレクションオブジェクト内の動画オブジェトへのタイムラインにより引き起こされた変更と、要素ツリー202内に含まれる要素の動的プロパティの間のインターフェースとして動作する動的動画コレクションオブジェクトを戻す。

    動的動画コレクションオブジェクトのインターフェースは、動的動画コレクションオブジェクトが関連付けられる動画コレクションオブジェクトの設定/取得をサポートする。 SetDefaultParentTimelineメソッドは、動的動画コレクションオブジェクトが結び付けられる要素が要素ツリー202内で再配置された場合、そうでない場合は要素のタイミングが変更された場合、タイムラインの接続を修正する。

    GetValueメソッドは、(動的動画コレクションが結び付けられた動画コレクションによって提供される)要素の動画化されたプロパティの現在値を戻す。

    OnChangedメソッドは、動画コレクション内の任意の動画オブイジェクトの進行が変更されたときに呼び出される。 呼び出されると、OnChangedメソッドは、動的プロパティの無効化を引き起こす。 これは、影響を受けた要素の再レンダリングを呼び出す。

    プロパティ710を参照すると、OriginalDynamicPropertyプロパティは、動的動画コレクションが関連付けられる動的プロパティへの参照を戻す。 Elementプロパティは、動的動画コレクションが関連付けられる要素を戻す。 IsOveridingBaseValueは、それが関連付けられた動画コレクションに関してそれに応じて指定されたプロパティへの呼び出しに基づいて値を戻す。

    動画アーキテクチャについて説明してきたが、要素のプロパティに時間変化する値を提供することによって要素のプロパティを動画化するために記載したアーキテクチャを使用することを一例として説明する。 一般に、動画化されたすべてのリソース、メソッドまたはオブジェクトは、エンティティの動画機能、そのデフォルトの親タイムライン、それが変更されたかどうか、オブジェクトの現在値、およびエンティティが変化しているかどうかの通知を可能にするインターフェースを含む。 特定の例では、動画可能なエンティティのインスタンスは、オブジェクトが時間に応じて変化し得る場合、Trueを戻すDoesChangeプロパティを含む。 一般に、DoesChangeプロパティは、オブジェクトは任意の動画コレクションを保持している場合、Trueである。 DefaultParentTimelineプロパティは、自動的に親が割り当てられる任意のタイムラインの親であるタイムラインへの参照を戻す。 DefaultParentTimelineプロパティが設定されると、自動的に親が割り当てられる任意のタイムラインは再度親になり、しかしタイムライン、またはこの動画可能なオブジェクトについての新しいクローンは作成されない。 IsChangingプロパティは、動画可能なオブジェクトの任意の動画が変化する場合、Trueを戻す。 IsOverridingBaseValueプロパティは、動画可能なオブジェクトの任意のタイムラインがアクティブである、または充填期間である場合、Trueである。 Changedイベントは、動画可能なエンティティの値が変化したときはいつでも生成される。

    さらに、動画可能なエンティティは、プロパティの値として使用されるオブジェクトを戻すCurrentValueメソッドを含む。 値は、オブジェクトの瞬時の値であるが、いったん設定されると、変更されない。 特定のタイムラインを指定するGetUniquelnstanceメソッドは、プロパティの値として使用することができるオブジェクトを戻す。 オブジェクトは、自動的に親が割り当てられる任意のタイムラインを参照する場合、戻されたインスタンスは、指定されたデフォルトの親タイムラインを親とするタイムラインを有する。

    また、動画可能なエンティティは、動画可能なプロパティごとに、動画コレクション型への対応する参照を指定して、プロパティシステムによる動的動画コレクションの作成を容易にする。 本発明の一実施形態では、基本的な動画オブジェクトの使用では、動画の複合が排除されるため、動画コレクションが使用される。

    動画コレクションを個々のプロパティに追加することによってリソースが動画化される。 次の例は、色の動画でSolidColorBrushをどのように作成するかを示す。

    動画リソースは、レンダリング操作に使用する、または要素プロパティの値として使用することができる。 レンダリング操作は、一例では、動画コレクションを描画コンテキストメソッドの呼び出しに追加することによって、または動画リソースを使用することによって動画化される。 次の例は、動画化された不透明値を描画コンテキストにどのようにプッシュするかを示している。

    要素は、動画コレクションをElementプロパティに追加することによって動画化することができる。 次の例は、C#でボタンの幅をどのように動画化するかを示す。

    次は、XAMLでの同じ例を示す。

    動画(または動画化されたリソース)が使用されるときはいつでも、動画(またはリソース)はクローン化されて、宛先に一意の独立した制御可能なタイムラインを提供する。 プロパティに対して動画を実装するこの特定の方法の結果は、元の動画は決して可視のシーンの一部ではなく、したがって動画オブジェクトのタイミングインターフェースを介した制御呼び出しに応答しないことである。 この効果を達成するために、呼び出しコードは、まず動画を使用し、次いで動画を読み返す必要がある。 次いで読み返される値は、キャッシュされ、制御のタイミングに使用することができる。 次の例は、動画を制御する予定のコードが従うパターンを示す。

    グラフィカルユーザインターフェース表示などグラフィカル出力装置を含むコンピューティング環境内のグラフィカル表示要素に動画挙動を結び付け、実行するために、新しいプラットフォームの例およびそれに組み込まれるインターフェース、クラス、および構造の例について説明してきたことを分野の技術者であれば理解されよう。 本発明の原理を適用できる多くの可能な環境、および上記の動画アーキテクチャを設計し、実行する柔軟性を考慮して、本明細書に記載した実施形態は、例示的なものであり、本発明の範囲を限定するものとみなされるべきではないことを理解されたい。 本発明が適用される当分野の技術者は、本発明の趣旨から逸脱することなく構成および詳細について実施形態の例を変更できることを理解されよう。 したがって、本明細書に記載された本発明は、添付の特許請求の範囲およびその均等物の範囲内に含まれ得るすべての実施形態を含む。

    本発明の一実施形態を実行するコンピュータシステムの例を示すブロック図である。

    グラフィカル表示要素の動画をサポートする動画システムを含むグラフィックス管理アーキテクチャの主な構成要素を示す高レベル概略図である。

    動画化されたグラフィカルユーザインターフェースを維持/レンダリングするために本発明を具現化するシステムで実行される反復ステップのシーケンスの例を概略的に示したフロー図である。

    指定された要素プロパティに関して動画を実行する動画クラス定義の例を示す図である。

    要素プロパティを動画化する1組の動画コンストラクタ型の例の要約を示す図である。

    本発明を具現化する動画アーキテクチャの動画コレクションクラスの例の概略を示す図である。

    本発明を具現化する動画アーキテクチャの動的動画コレクションクラスの例の概略を示す図である。

    QQ群二维码
    意见反馈