(58)【調査した分野】(Int.Cl.,DB名)
請求項1記載の方法において、前記アニメーションが、前記異なるウィンドウに跨がって視覚エレメントを動かすウィンドウ間アニメーションと、前記異なるウィンドウの内少なくとも1つのサイズを変更すること、および前記異なるウィンドウの内少なくとも1つを動かすことの内少なくとも1つを含むウィンドウ移行アニメーションと、の内少なくとも1つを含む、方法。
請求項1記載の方法であって、更に、前記アニメーションによる影響を受ける前記異なるウィンドウを登録し、前記アニメーションの間前記登録されたウィンドウからのコンテンツが前記オーバーレイ・ウィンドウにレンダリングされるようにするステップを含む、方法。
請求項2記載の方法であって、更に、前記ウィンドウ移行アニメーションにおいて影響を受ける前記異なるウィンドウについての情報を指定するヒントを受けるステップを含み、前記ヒントが、初期ウィンドウ位置、初期ウィンドウ・サイズ、最終ウィンドウ位置、最終ウィンドウ・サイズ、初期ウィンドウ可視性、最終ウィンドウ可視性、およびオーバーレイ・ウィンドウにおけるクリッピング領域を含む、方法。
請求項1記載の方法であって、更に、前記アニメーションが完了したと決定すること、およびアニメーションが所定の時間期間を超えたときを決定することの内少なくとも1つまで、ユーザー・インターフェース・スレッドを遮断するステップを含む、方法。
【発明を実施するための形態】
【0006】
[0011] これより図面を参照して、種々の実施形態について説明する。図面では、同様の番号は同様のエレメントを表す。具体的には、
図1および対応する説明は、実施形態を実現することができる適した計算環境の端的で全体的な説明を行うことを意図している。
【0007】
[0012] 一般に、プログラム・モジュールは、ルーチン、プログラム、コンポーネント、データー構造、および他のタイプの構造を含み、特定のタスクを実行するかまたは特定の抽象データー型を実装する。他のコンピューター・システム構成を使用することもでき、ハンドヘルド・デバイス、マルチプロセッサー・システム、マイクロプロセッサー・ベースまたはプログラマブル消費者用電子機器、ミニコンピューター、メインフレーム・コンピューター等が含まれる。分散型計算環境も使用することができ、この場合、タスクは、通信ネットワークを介してリンクされたリモート処理デバイスによって実行される。分散型計算環境では、プログラム・モジュールはローカルおよびリモート双方のメモリー記憶デバイスに配置されてもよい。
【0008】
[0013] これより
図1を参照して、種々の実施形態において利用されるコンピューター100の例示的なコンピューター・アーキテクチャーについて説明する。
図1に示すコンピューター・アーキテクチャーは、サーバー計算デバイス、デスクトップ計算デバイス、移動体計算デバイス(例えば、スマート・フォン、ノートブック、タブレット...)として構成することもでき、中央処理ユニット5(「CPU」)、ランダム・アクセス・メモリー9(「RAM」)およびリード・オンリー・メモリー(「ROM」)10を含むシステム・メモリー7、ならびにこのメモリーを中央処理ユニット(「CPU」)5に結合するシステム・バス12を含む。
【0009】
[0014] 起動中のように、コンピューター内部においてエレメント間で情報を移すのに役立つ基本的なルーチンを含む基本入力/出力システムが、ROM10に格納される。更に、コンピューター100は、オペレーティング・システム16、アプリケーション(1つまたは複数)24、プレゼンテーション(1つまたは複数)/文書(1つまたは複数)27、ならびにウェブ・ブラウザー25およびアニメーション・マネージャー26のような他のプログラム・モジュールを格納する大容量記憶デバイス14も含む。これらの他のプログラム・モジュールについては、後に更に詳しく説明する。
【0010】
[0015] 大容量記憶デバイス14は、バス12に接続された大容量記憶コントローラ(図示せず)を介してCPU5に接続される。大容量記憶デバイス14およびその関連するコンピューター読み取り可能媒体は、コンピューター100に不揮発性ストレージを設ける。ここに含まれるコンピューター読み取り可能媒体の説明は、ハード・ディスクまたはCD−ROMドライブのような大容量記憶デバイスに言及するが、コンピューター読み取り可能媒体は、コンピューター100によってアクセスすることができる任意の入手可能な媒体とすることができる。
【0011】
[0016] 一例として、そして限定ではなく、コンピューター読み取り可能媒体は、コンピューター記憶媒体および通信媒体を含むことができる。コンピューター記憶媒体は、揮発性および不揮発性、リムーバブルおよび非リムーバブル媒体を含み、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、または他のデーターというような情報の格納のための任意の方法または技術で実現される。コンピューター記憶媒体は、RAM、ROM、消去可能プログラマブル・リード・オンリー・メモリー(「EPROM」)、電気的消去可能プログラマブル・リード・オンリー・メモリー(「EEPROM」)、フラッシュ・メモリーまたは他のソリッド・ステート・メモリー技術、CD−ROM、ディジタル・バーサタイル・ディスク(「DVD」)、あるいは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージまたは他の磁気記憶デバイス、あるいは所望の情報を格納するために使用することができ、更にコンピューター100によってアクセスすることができる任意の他の媒体を含むが、これらに限定されるのではない。
【0012】
[0017] 種々の実施形態によれば、コンピューター100は、インターネットのようなネットワーク18を介してリモート・コンピューターへの論理接続を使用するネットワーク接続環境においても動作することができる。コンピューター100は、バス12に接続されたネットワーク・インターフェース・ユニット20を介してネットワーク18に接続することができる。このネットワーク接続は、ワイヤレスおよび/または有線でもよい。ネットワーク・インターフェース・ユニット20は、他のタイプのネットワークおよびリモート・コンピューター・システムに接続するためにも利用することができる。また、コンピューター100は、タッチ入力デバイスのような複数の他のデバイスから入力を受けて処理するために入力/出力コントローラー22も含むことができる。タッチ入力デバイスは、1回/複数回のタッチ入力を認識することを可能にする(タッチ/タッチなし)任意の技術を利用することができる。例えば、この技術は、熱、指圧、高キャプチャ・レート・カメラ、赤外線光、光取り込み、同調電磁誘導、超音波受信機、変換マイクロフォン(transducer microphone)、レーザ距離計、シャドー・キャプチャ(shadow capture)等を含むことがえきるが、これらに限定されるのではない。一実施形態によれば、タッチ入力デバイスは、一実施形態によれば、タッチ入力デバイスは近接(near touch)を検出するように構成することもできる(即ち、タッチ入力デバイスからある距離以内にあるが、タッチ入力デバイスには物理的に接触しない)。また、タッチ入力デバイス28は、ディスプレイとして機能することもできる。また、入力/出力コントローラー22は、1つ以上の表示画面、プリンター、または他のタイプの出力デバイスに出力を供給することもできる。
【0013】
[0018] カメラおよび/または一部の他の検知デバイスは、1人以上のユーザーを記録し、計算デバイスのユーザーによって行われる動き(motion)および/またはジェスチャーを取り込むように動作することができる。更に、検知デバイスは、マイクロフォンによってというように、発話された単語を取り込むように、および/またはキーボードおよび/またはマウス(図示せず)によってというように、ユーザーから他の入力を取り込むように動作することもできる。検知デバイスは、ユーザーの動き(movement)を検出することができる任意の動き検出デバイス(motion detection device)を含むことができる。例えば、カメラは、複数のカメラと複数のマイクロフォンとを含むMICROSOFT KINECT(登録商標)モーション・キャプチャ・デバイスを含むことができる。
【0014】
[0019] 本発明の実施形態は、チップ上システム(SOC)によって実施することもでき、その場合、図に示されるコンポーネント/プロセスの各々または多くを、1つの集積回路上に集積することができる。このようなSOCデバイスは、1つ以上の処理ユニット、グラフィクス・ユニット、通信ユニット、システム仮想化ユニット、および種々のアプリケーション機能を含むことができ、これらの全てが、単一集積回路としてのチップ基板上に集積される(または「焼かれる」(burned))。SOCによって動作するとき、本明細書において説明する機能の全部/一部は、単一集積回路(チップ)に計算デバイス/システム100の他のコンポーネントと共に集積されてもよい。
【0015】
[0020] 先に端的に述べたように、複数のプログラム・モジュールおよびデーター・ファイルを、コンピューター100の大容量記憶デバイス14およびRAM9に格納することができ、その中には、ワシントン州RedmondのMICROSOFT CORPORATION(マイクロソフト社)からのWINDOWS SERVER(登録商標)、WINDOWS7(登録商標)オペレーティング・システムのような、ネットワーク接続されたパーソナル・コンピューターの動作を制御するのに適したオペレーティング・システム16を含む。
【0016】
[0021] また、大容量記憶デバイス14およびRAM9は、1つ以上のプログラム・モジュールも格納することができる。具体的には、大容量記憶デバイス14およびRAM9は、アニメーション・マネージャー26、生産性アプリケーション24(例えば、MICROSOFT POWERPOINTのようなプレゼンテーション・アプリケーション、MICROSOFT WORDのようなワープロ・アプリケーション、MICROSOFT OUTLOOKのようなメッセージング・アプリケーション、MICROSOFT EXCELのようなスプレッドシート・アプリケーション等)のような1つ以上のアプリケーションを格納することができ、1つ以上のウェブ・ブラウザー25も格納することができる。ウェブ・ブラウザー25は、ウェブ・ページ、ビデオ、文書等のような電子コンテンツを要求する、受信する、レンダリングする、そして電子コンテンツとの対話処理を設けるように動作する。一実施形態によれば、ウェブ・ブラウザーは、MICROSOFT CORPORATIONからのINTERNET EXPLORERウェブ・ブラウザー・アプリケーション・プログラムを含む。
【0017】
[0022] アニメーション・マネージャー26は、クライアント・デバイスおよび/またはサーバー・デバイス(例えば、サービス19内部)に配置されてもよい。ナビゲーション・マネージャー26は、アプリケーション/プロセスとして、および/またはリソース(例えば、サービス、データー...)を異なるテナント(例えば、MICROSOFT OFFICE365、MICROSOFT WEB APPS、MICROSOFT SHAREPOINT ONLINE)に提供するクラウド・ベース・マルチテナント・サービスの一部として構成することもできる。
【0018】
[0023] 概して言うと、アニメーション・マネージャー26は、異なるウィンドウを跨ぐアニメーションを実行するように構成される。これらのクロス・ウィンドウ・アニメーションは、ウィンドウ間アニメーションおよび/またはウィンドウ移行アニメーションを含むことができる。ウィンドウ間アニメーションは、ウィンドウを跨いでエレメントを動かす(animate)ときに使用され、および/またはウィンドウ移行は、複数のウィンドウを同時に動かす(move)/サイズを変更する/示す/隠すために使用される。ウィンドウ間アニメーションは、通常、視覚エレメントまたはレイヤーが1つのウィンドウから他のウィンドウに動かされるときに使用される。ウィンドウ間アニメーションを実行するには、透過オーバーレイ・ウィンドウを、視覚エレメントが動くウィンドウの上に配置することができる。次いで、透過オーバーレイ・ウィンドウにおいて、視覚エレメントを2つのウィンドウを跨いで動かす。ウィンドウ移行は、通常、ウィンドウを動かす、サイズを変更する、または示す/隠すためにアニメーションを使用したいときに使用される。ウィンドウ移行アニメーションを実行するには、動かそうとする下地ウィンドウの上にオーバーレイ・ウィンドウを配置することができ、これらのウィンドウのコンテンツは、そのコンテンツを動かすために、オーバーレイ・ウィンドウ内にリディレクトされる。アニメーションの一部として動かすことができる画像または視覚エレメントを表すためにレイヤーを使用することができる。これらのレイヤーは、下地ウィンドウを跨いで視覚エレメントを動かすために、アニメーション・オーバーレイ・ウィンドウ内に配置することができる。アニメーションの時間中、サポートされる下地ウィンドウは、オーバーレイ・ウィンドウに直接コンテンツをドローすることを指示される(direct)。下地ウィンドウがサポートされないとき、下地ウィンドウがアニメーション内に含まれるように、下地ウィンドウの画像がアニメーション・オーバーレイ・ウィンドウにドローされる。アニメーションが完了したとき、アニメーション・オーバーレイ・ウィンドウを除去することができる。アニメーション・マネージャー26の動作についての追加の詳細を以下で示す。
【0019】
[0024]
図2は、クロス・ウィンドウ・アニメーションを実行するシステム例を示す。図示のように、システム200は、サービス210、アニメーション・マネージャー240、ストア245、タッチ・スクリーン入力デバイス/ディスプレイ250(例えば、スレート)、およびスマート・フォン230を含む。
【0020】
[0025] 図示のように、サービス210はクラウド・ベースおよび/または企業ベース・サービスであり、生産性サービス(例えば、MICROSOFT OFFICE 365, MICROSOFT WEB APPS, MICROSOFT POWERPOINT)を提供するように構成することができる。サービス210によって提供されるサービス/アプリケーションの内1つ以上の機能が、クライアント・ベース・アプリケーションとして構成されてもよい。例えば、クライアント・デバイスが、異なるウィンドウに跨がることができるアニメーションを実行するアプリケーションを含むのでもよい。システム200は生産性サービスを示すが、他のサービス/アプリケーションがクロス・ウィンドウ・アニメーションを実行するように構成されてもよい。
【0021】
[0026] 図示のように、サービス210は、リソース215およびサービスを任意の数のテナント(例えば、テナント1〜N)に提供するマルチテナント・サービスである。一実施形態によれば、マルチテナント・サービス210は、クラウド・ベース・サービスであり、このサービスに登録したテナントにリソース/サービス215を提供し、各テナントのデーターを別個に、他のテナント・データーから保護して維持する。
【0022】
[0027] 図示するシステム200は、タッチ入力が受けられたときを検出する(例えば、指がタッチ・スクリーンにタッチしたまたはほぼタッチしたとき)タッチ・スクリーン入力デバイス/ディスプレイ250(例えば、スレート/タブレット・デバイス)および移動体電話機230を含む。ユーザーのタッチ入力を検出する任意のタイプのタッチ・スクリーンを利用することができる。例えば、タッチ・スクリーンは、タッチ入力を検出する1層以上の容量性材料を含むことができる。他のセンサーも、容量性材料に加えてまたはその代わりに、使用することができる。例えば、赤外線(IR)センサーも使用することができる。一実施形態によれば、タッチ・スクリーンは、タッチ可能面と接触している物体またはその上方にある物体を検出するように構成される。「上方」(above)という用語を本説明では使用するが、タッチ・パネル・システムの向きは関係ないことは言うまでもない。「上方」という用語は、このような向きの全てに適用可能であることを意図している。タッチ・スクリーンは、タッチ入力を受けた位置を判定するように構成することができる(例えば、開始点、中間点、および終了点)。タッチ可能な表面と物体との間における実際の接触は、任意の適した手段によって検出することができる。例えば、この手段には、タッチ・パネルに結合された振動センサーまたはマイクロフォンが含まれる。接触を検出するセンサーについて非網羅的な例のリストには、圧力ベース・メカニズム、微細加工加速度計、圧電デバイス、容量性センサー、抵抗性センサー、誘導性センサー、レーザ振動計、およびLED振動計が含まれる。
【0023】
[0028] 図示のように、タッチ・スクリーン入力デバイス/ディスプレイ250および移動体デバイス230は、プレゼンテーション・スライドの表示例252/232を示す。移動体電話機230は、ユーザー・インターフェース・エレメント256の表示の前に表示232を示す。アニメーション・マネージャー240は、ウィンドウ間アニメーションおよび/またはウィンドウ移行アニメーションを含むことができるクロス・ウィンドウ・アニメーションを実行するように構成される。ウィンドウ間アニメーションは、1つ以上の視覚エレメントを異なるウィンドウ(例えば、メニューを開く、オブジェクトを異なるウィンドウ間で動かす等)を跨いで動かす。ウィンドウ移行は、通常、アニメーションを動かす、サイズを変更する、または示す/隠すことを望むときに使用される。本例では、ユーザー264が、ユーザー・インターフェース・エレメントをウィンドウ256内に表示するために、ユーザー・インターフェース・ウィンドウ254においてファイル・メニュー選択肢を選択したところである。このフィアル・メニュー選択肢を選択したことに応答して、ウィンドウ移行アニメーションが実行され、ユーザー・インターフェース・ウィンドウを元のサイズ254から拡大サイズ256に滑らかにサイズ変更するように現れ、一方文書表示ウィンドウ258をそれよりも小さい文書表示ウィンドウ252に縮小する。下地ウィンドウは、アニメーションの最中/その前の任意の時点において、ウィンドウを位置付ける/サイズ変更することができる。
【0024】
[0029] アニメーション・マネージャー240は、アニメーションが行われようとする異なるウィンドウの部分(アニメーション・エリア)を覆うオーバーレイ・ウィンドウを作る。このアニメーション・エリアは、異なるウィンドウの一部を含むように構成すること、または表示エリア全体を覆うように構成することもできる。例えば、アニメーション・エリアが、1つ以上のアプリケーション、ならびにデスクトップ・エリアおよび他のユーザー・インターフェース・エレメント(例えば、開始バー)に関連するアプリケーション・ウィンドウを含むように構成されるのでもよい。一般に、アニメーション・エリアは、アニメーションが実行されるときにそのアニメーション・エリアに収容されるようなサイズに設定される。一部のウィンドウが、コンテンツをオーバーレイ・ウィンドウ(サポート・ウィンドウ)にドローすることをサポートするレンダリング方法を使用してもよい。他のウィンドウは、直接オーバーレイ・ウィンドウにコンテンツをドローすることができなくてもよい(非サポート・ウィンドウ)。アニメーション・エリア内にあるサポート・ウィンドウは、アニメーションの間オーバーレイ・ウィンドウに直接コンテンツをドローすることを指示される。このように、下地ウィンドウにおいて実行されているエフェクト/アニメーションはいずれも、そのアニメーションにおいてはっきり見える(例えば、カーソルの点滅、下地コンテンツに提供されるテキスト・エフェクト、...)。非サポート・ウィンドウがアニメーション内に含まれるように、任意の非サポート・ウィンドウの画像が、アニメーション・オーバーレイにドローされてもよい。アニメーションが完了したとき、オーバーレイ・ウィンドウを除去することができ、下地ウィンドウはユーザーによって見ることができる。
【0025】
[0030]
図3は、ウィンドウ間アニメーションおよびウィンドウ移行アニメーションを示す表示例を示す。
[0031] 表示310は、2つの異なる下地ウィンドウに跨がるウィンドウ間アニメーションを示す。図示のように、表示310は、ユーザー・インターフェース・ウィンドウ302、アプリケーション・ウィンドウ304、文書ウィンドウ306、アプリケーション・ウィンドウ308、およびオーバーレイ・ウィンドウ320を含む。クロス・ウィンドウ・アニメーションは、1つ以上のウィンドウ間アニメーションおよび/または1つ以上のウィンドウ移行画像を含むことができる。
【0026】
[0032] 表示310に示される本例では、エレメント312のアニメーションがアプリケーション・ウィンドウ304において開始するように見え、文書ウィンドウ306を横切って動かし続ける。このアニメーションは、1つ以上のアプリケーションに跨がることができる(例えば、エレメントをゴミ箱に移すことが、デスクトップ上でアプリケーションから表示される)。また、アニメーションは、他のエフェクト(例えば、サイズ変更、フェード・イン/アウト、1つ以上の表示特性の変更等)を実行することを含んでもよい。
【0027】
[0033] オーバーレイ・ウィンドウ320は、異なるウィンドウに跨がるアニメーション・エリアを覆うように作られる。オーバーレイ・ウィンドウ320は、アニメーションがオーバーレイ・ウィンドウ320のサイズ内に収容されるように、サイズが決められる。下地ウィンドウを跨いで視覚エレメント(例えば、エレメント312)を動かすために、1つ以上のレイヤーをオーバーレイ・ウィンドウ上に配することができる。先に説明したように、サポート下地ウィンドウは、アニメーションの時間中オーバーレイ・ウィンドウに直接コンテンツをドローすることを指示される。一実施形態によれば、アニメーションの時間中に下地ウィンドウからのレイヤーのペアレント(parent)が、オーバーレイ・ウィンドウに変更される。非サポート・ウィンドウがアニメーション内に含まれるように、任意の非サポート・ウィンドウの画像をアニメーション・オーバーレイにドローすることができる。一実施形態によれば、アニメーションが完了したとき、オーバーレイ・ウィンドウ320が除去される。ウィンドウ間アニメーションに関する更なる詳細は、
図3および以下で示される。
【0028】
[0034] 表示350は、ウィンドウ移行アニメーションの一例を示す。図示のように、表示350は、ユーザー・インターフェース・ウィンドウ352/352’、文書ウィンドウ356/356’、オーバーレイ・ウィンドウ360、アプリケーション・ウィンドウ368、UIエレメント362、およびユーザー・インターフェース・ウィンドウ364を含む。オーバーレイ・ウィンドウ360は、ユーザー・インターフェース・ウィンドウ352、文書ウィンドウ356、およびアプリケーション・ウィンドウ368を含むアニメーション・エリアを覆うような大きさとされる。本例は、ユーザー・インターフェース・ウィンドウ352のサイズをもっと大きなサイズ(ウィンドウ352’)に変更し、文書ウィンドウ356のサイズをもっと小さく変更して異なる位置(ウィンドウ356’)に動かし、ユーザー・インターフェース・ウィンドウ364を表示するというアニメーションを示す。一実施形態によれば、このアニメーションの表示によって影響を受けるウィンドウがアニメーション・マネージャーに登録される。ウィンドウの登録は、種々のアニメーション動作においてアニメーションによって影響を受けないウィンドウを除外することによって、アニメーションおよびシステムの性能を向上させることを目的とする。プロセス/アプリケーションが、アニメーション・マネージャーに、アニメーション・パラメータ(例えば、初期/最終ウィンドウ・サイズ/位置/可視性、クリッピング領域、コンテンツ統計等)を設定するときに補助になるヒントを与えることもできる。先に説明したように、下地ウィンドウがサポートされるときに、オーバーレイ・ウィンドウ360に直接ドローすることを指示することもできる。一実施形態によれば、アニメーションが再生している間、ウィンドウはユーザーから入力を受けることを禁止される。ウィンドウ間アニメーションに関する更なる詳細は、
図4および以下で示される。
【0029】
[0035]
図4および
図5は、クロス・ウィンドウ・アニメーションのプロセス例を示す。ここで提示する説明を読むとき、種々の実施形態の論理動作(logical operation)は(1)計算システムにおいて実行するコンピューター実施動作またはプログラム・モジュールのシーケンスとして、(2)計算システム内において相互接続されたマシン論理回路または回路モジュールとして実現されることは認められてしかるべきである。実現例は、本発明を実現する計算システムの性能要件に依存する選択事項である。したがって、本明細書において例示され実施形態を構成する論理動作は、動作(operation)、構造的デバイス、アクト(act)、またはモジュールと様々に呼ばれる。これらの動作、構造的デバイス、アクト、およびモジュールは、ソフトウェア、ファームウェア、特殊目的ディジタル・ロジック、およびその任意の組み合わせで実現することができる。動作は特定の順序で示されるが、動作の順序は、変更すること、および他の順序で実行することもできる。
【0030】
[0036]
図4は、異なるウィンドウ間でレイヤーを動かすためにオーバーレイ・ウィンドウを使用するクロス・ウィンドウ・アニメーション・プロセスを示す。
[0037] 開始動作の後、本プロセスは動作410に進み、アニメーション・エリアを決定する。アニメーション・エリアは、クロス・ウィンドウ・アニメーションの間使用されるウィンドウの部分を覆うようなサイズに決められる。アニメーション・エリアは、1つ以上のアプリケーション/プロセスからのウィンドウを含むことができる。例えば、アニメーション・エリアが、同じアプリケーションおよび/または異なるアプリケーションからの2つ以上のウィンドウに跨がるのでもよい。アニメーション・エリアは、表示の全部/一部を含むこともできる。
【0031】
[0038] 動作420に進み、オーバーレイ・ウィンドウを作り、決定したアニメーション・エリアに基づいてサイズを決める。一実施形態によれば、オーバーレイ・ウィンドウは、アニメーション・エリアにおいてウィンドウの上に表示される透過背景を含む。
【0032】
[0039] 動作430に進み、下地ウィンドウのレイヤーに対するペアレントをオーバーレイ・ウィンドウに変更する。ペアレントは、アニメーションの実行期間の間変更される。
【0033】
[0040] 動作440に移り、実行するアニメーション(1つまたは複数)をスケジューリングし実行する。一実施形態によれば、直下にあるウィンドウを跨ぐように、レイヤーをオーバーレイ・ウィンドウ内に動かし、オーバーレイ・ウィンドウを横切って動かし、次いで、このレイヤーを、アニメーションが終了する下地ウィンドウに戻す(例えば、ペアレントを下地ウィンドウに変更する)。
【0034】
[0041] 動作450に進み、本プロセスは、アニメーションが完了するのを待つ。一実施形態によれば、アニメーションがモダル(modal)になるようにすることもでき、および/またはアニメーション完了通知ハンドラが、オーバーレイにおけるアニメーションが完了したときに通知を供給するために使用されるように構成される。アニメーション時間中、下地ウィンドウに対するユーザー・インターフェース・スレッドを遮断する。この時間中に出されて受け取られた命令はいずれも、格納され、アニメーションが完了してから実行することができる。一実施形態によれば、オペレーティング・システムからのメッセージはアニメーション中にも処理され続ける。アニメーションが完了するのをユーザーがじっと待ち続けないように、応答する(responsive)ユーザー・インターフェースを確保し易くするために、タイミング・パラメータを使用してもよい。例えば、計算デバイスが、素早くアニメーションを表示することができないグラフィクス・カードを有する場合もある。一実施形態によれば、アニメーションが完了するのに所定の時間よりも長くかかりそうであることが推定されると(例えば、200、300、400、500ミリ秒)、クロス・ウィンドウ・アニメーションが取り消される。
【0035】
[0042] 動作460に進み、下地ウィンドウのレイヤーのペアレントを、オーバーレイ・ウィンドウから下地ウィンドウに戻るように変更する。
[0043] 動作470に移り、オーバーレイ・ウィンドウを表示から除去する。
【0036】
[0044] 次いで、本プロセスは終了動作に進み、他のアクション(action)の処理に戻る。
[0045]
図5は、オーバーレイ・ウィンドウを使用して異なるウィンドウを動かす/サイズ変更することを含むクロス・ウィンドウ・アニメーション・プロセスを示す。
【0037】
[0046] 開始動作の後、本プロセスは動作510に進み、アニメーション・エリアを決定する。アニメーション・エリアは、クロス・ウィンドウ・アニメーションの間使用されるウィンドウの部分を覆うようなサイズに決められる。アニメーション・エリアは、1つ以上のアプリケーション/プロセスからのウィンドウを含むことができる。例えば、アニメーション・エリアが、同じアプリケーションおよび/または異なるアプリケーションからの2つ以上のウィンドウに跨がるのでもよい。アニメーション・エリアは、表示の全部/一部を含むこともできる。
【0038】
[0047] 動作520に移り、オーバーレイ・ウィンドウを作り、決定したアニメーション・エリアに基づいてサイズを決める。オーバーレイ・ウィンドウは、不透明な背景または透過性の背景を含むことができ、この背景はアニメーション・エリアにおいてウィンドウの上に表示される。
【0039】
[0048] 動作530に進み、クロス・ウィンドウ・アニメーションによって影響を受けるウィンドウを登録する。一実施形態によれば、ウィンドウが登録されたか否かには関係なく、アニメーションの間見ることができるウィンドウを自動的にオーバーレイ・ウィンドウにリディレクトする。これは、オーバーレイが下地ウィンドウ・ツリーの正確な画像を描画することを確保するのに役立つ。特定のウィンドウを登録することにより、クライアントが、アニメーションにおいてどのウィンドウを含ませるか特定することが可能になる。これは、動作の間に処理されるウィンドウ数を減らすことによって、処理時間を節約するのに役立つ。登録されたウィンドウ毎に、ウィンドウをオーバーレイ・ウィンドウにリディレクトする時間、および/またはオーバーレイ・ウィンドウに入れるためにこれらの画像を取り込む時間がかかる。ウィンドウは、クロス・ウィンドウ・アニメーションの前および/または最中に登録することもできる。例えば、アニメーション中に、ウィンドウが見えるようになるときに、登録することもできる。
【0040】
[0049] 動作540に移り、ヒントを供給する/受けることができる。ヒントは、正しく行われていないあらゆる行為を正すときに補助するために使用することができる。また、ヒントを与えること(hinting)は、既存のウィンドウ・レイアウト・コードに対する変更を回避するときにも補助するために使用することができる。例えば、ウィンドウを示すまたは隠すときにスライド・イン/アウト・エフェクトを行うために、クライアントは、ウィンドウに対して初期位置および最終位置を定めるヒントを供給する。ヒントを与えることは、不要なウィンドウ・イベントの誘起を回避するのに役立つこともあり、ウィンドウ移行ロジックと既存のレイアウト・コードとの間における独立性を除くこともできる。多くの異なるタイプのヒントをアニメーション・マネージャーに供給することができる。一実施形態によれば、ヒントは、ウィンドウの初期位置、ウィンドウの最終位置、ウィンドウの初期サイズ、ウィンドウの最終サイズ、ウィンドウの初期可視性状態、ウィンドウの最終可視性状態、ウィンドウ・コンテンツが全体にわたって同じ色(solid color)であることを指定するヒント、ウィンドウの内容が初期および最終状態間で変化しない(ウィンドウのサイズが変化しないことを指定しないが、交差するときに、クライアント・エリア内に着色される(paint)内容が同じであることを指定する)ことを指定するヒント、ウィンドウが制御手段であることを指定するヒント(例えば、ActiveX制御)、ウィンドウが見られないヒント(これは、ウィンドウの画像がアニメーションの間にリディレクトされず、これによって、不経済な量になる可能性がある作業を回避することを確保するのに役立つ)、オーバーレイ領域に余分なエリアを追加するサイズ変更ヒント(例えば、クライアントが、リディレクトされたレイヤーに手作業で適用される回転または他の変形を考慮してより多くのエリアを追加したい場合がある)、およびウィンドウを移行するときにクリッピング・エフェクトを行うために使用されるクリッピング・ヒントを含む。
【0041】
[0050] 動作550に移り、ウィンドウのレイアウトおよびアニメーションを実行する。アニメーションを実行するために、レイヤーおよびこれらのレイヤーのプロパティを設定する。
【0042】
[0051] 動作530に進み、余分なレイヤーをオーバーレイ・ウィンドウに追加することができ、および/または既存のレイヤーを変更することができる。例えば、追加のアニメーション・エフェクトを与えるために、余分なレイヤーを追加することができる。例えば、アニメーション中にあるポイントにおいて画像を表示し、光源を追加し、閃光エフェクトを追加すること等ができる。他の所望のアニメーション・エフェクトを作る/変えるために、既存のレイヤーを変更することもできる。
【0043】
[0052] 動作570に移り、オーバーレイ・ウィンドウを使用してクロス・ウィンドウ・アニメーションを実行する。
[0053] 動作580に移り、オーバーレイ・ウィンドウを除去する。
【0044】
[0054] 次いで、本プロセスは終了動作に移り、他のアクションの処理に戻る。
[0055]
図6は、本明細書において説明したような、クロス・ウィンドウ・アニメーションにおいて使用されるシステム・アーキテクチャーを示す。アプリケーション(例えば、アプリケーション1020)によって使用および表示されるコンテンツ、ならびにアニメーション・マネージャー26は異なる位置に格納することができる。例えば、アプリケーション1020は、ディレクトリー・サービス1022、ウェブ・ポータル1024、メールボックス・サービス1026、インスタント・メッセージング・ストア1028、およびソーシャル・ネットワーキング・サイト1030を使用して、データーを使用/格納することができる。アプリケーション1020は、これらのタイプのシステム等の内任意のものを使用することができる。サーバー1032は、ソースにアクセスするため、そしてクロス・ウィンドウ・アニメーションを準備し表示するために使用することができる。例えば、サーバー1032は、アプリケーション1020がクライアント(例えば、ブラウザーまたは何らかの他のウィンドウ)において表示するためにクロス・ウィンドウ・アニメーションを生成することができる。一例として、サーバー1032が、生産性サービス(例えば、プレゼンテーション、スプレッドシート、文書処理、メッセージング、文書協調等)を1人以上のユーザーに提供するように構成されたウェブ・サーバーであってもよい。サーバー1032が、ウェブを使用してネットワーク1008を介してクライアントと相互作用することもできる。また、サーバー1032がアプリケーション・プログラム(例えば、プレゼンテーション・アプリケーション、アニメーションを使用するアプリケーション、...)を含むのでもよい。サーバー1032およびプレゼンテーション・アプリケーションと相互作用することができるクライアントの例には、任意の汎用パーソナル・コンピューターを含む計算デバイス1002、タブレット計算デバイス1004、および/またはスマート・フォンを含むことができる移動体計算デバイス1006を含む。これらのデバイスの内任意のものがストア1016からコンテンツを得ることができる。
【0045】
[0056]
図7から
図10は、クロス・ウィンドウ・アニメーションを例示する表示例を示す。
[0057]
図7は、クロス・ウィンドウ・アニメーションを表示する例示のランドスケープ・スレートを示す。
【0046】
[0058] 表示710は、プレゼンテーション・スライド712を表示するスレートを示す。表示710は1つのウィンドウ内に表示されるように見えるが、多くのウィンドウがこの表示において使用される。例えば、ウィンドウ720は、ユーザー・インターフェース・エレメントを表示するために使用することができ、ウィンドウ714は、プレゼンテーションのスライドのサムネイルを表示するために使用することができ、ウィンドウ716はスライド712を表示するために使用される。任意のアニメーションが1つのウィンドウから他のウィンドウに動くように見えるとき、このアニメーションはクロス・ウィンドウ・アニメーションとなる。本例では、クロス・ウィンドウ・アニメーションは、ユーザー・インターフェース760が表示されるときに実行される。表示710は、アニメーションの前における初期状態を示し、表示750は、クロス・ウィンドウ・アニメーションが実行された後の最終状態を示す。
【0047】
[0059] クロス・ウィンドウ・アニメーションが実行されない場合、異なるエレメントの位置変更がユーザーにはぎくしゃくして見える可能性がある。例えば、ユーザー・インターフェース・ウィンドウおよび文書ウィンドウの円滑なサイズ変更を見る代わりに、決定されたサイズで表示されるときには、ウィンドウがユーザーにとってぎくしゃくして見えるであろう。先に説明したように、クロス・ウィンドウ・アニメーションはオーバーレイ・ウィンドウにおいて実行される。オーバーレイ・ウィンドウの直下において、ウィンドウは既にサイズ/位置が変わっているかもしれないが、オーバーレイ・ウィンドウにおけるアニメーションはこれらの位置/サイズ変更を円滑に示す。オーバーレイ・ウィンドウは、再位置付け/サイズ変更を円滑に進める(animate)。オーバーレイ・ウィンドウにおいてアニメーションが行われるに連れて登録された下地ウィンドウにおいて変化が生じても、ユーザーは下地ウィンドウ内でコンテンツのアニメーションを見続けるように、登録されたウィンドウ内で起こる変化もリアル・タイムでリディレクトすることができる。
【0048】
[0060]
図8は、クロス・ウィンドウ・アニメーションを表示する横向きスレートの一例を示す。
[0061] 表示810は、プレゼンテーション・スライド820を表示するスレートを示す。表示810は1つのウィンドウ内に表示されるように見えるが、多くのウィンドウがこの表示において使用される。例えば、ユーザー・インターフェース・エレメントを表示するためにウィンドウを使用することができ、他のエレメントを表示するためにウィンドウを使用することができ、文書を表示するためにウィンドウを使用することができる等である。本例では、ユーザーの対話処理に応答して、クロス・ウィンドウ・アニメーションが実行される。表示810は、アニメーションの前における初期状態を示し、表示850は、クロス・ウィンドウ・アニメーションが実行された後の最終状態を示す。
【0049】
[0062] 見てわかるように、スライド820は、異なるウィンドウ/位置に現れるように、収縮され動かされており、文書ウィンドウの内容はコンテンツ860と置き換えられている。初期表示810から最終表示850に実行されるアニメーションは、異なるアニメーション・エフェクトを含むことができる。例えば、スライド820は、表示850内に示すように、円滑に縮んで、スライド位置820’に動くように現れることができる。また、スライド820は、コンテンツ860が表示850内に現れる間に、フェードするように現れることもできる。一般に、移行の間には任意のアニメーション・エフェクトを適用することができる。
【0050】
[0063]
図9は、クロス・ウィンドウ・アニメーションを表示する横向きスレートの一例を示す。
[0064] 表示910は、コンテンツ915を表示するスレートを示す。表示910は1つのウィンドウ内に表示されるように見えるが、多くのウィンドウがこの表示において使用される。例えば、ウィンドウ912は、ユーザー・インターフェース・エレメントを表示するために使用することができ、ウィンドウ920は、タスクを表示するために使用することができ、ウィンドウ930は説明(discussion)を表示するために使用することができ、ウィンドウ940はソーシャル・コネクター(social connector)を表示するために使用することができる等である。本例では、クロス・ウィンドウ・アニメーションは、ユーザー・インターフェース760が表示されるときに実行される。表示910は、アニメーションの前における初期状態を示し、表示950は、クロス・ウィンドウ・アニメーションが実行された後の最終状態を示す。
【0051】
[0065] 図示のように、ユーザーがウィンドウ912においてタスクUIエレメントを選択したことに応答して、ウィンドウ960が表示され、ウィンドウ930および940が位置付けし直され、ウィンドウ920が表示から除去される。クロス・ウィンドウ・アニメーションの間1つ以上のアニメーションを適用することもできる。
【0052】
[0066]
図10は、クロス・ウィンドウ・アニメーションを表示する横向きスレートの一例を示す。
[0067] 表示950は、
図9に例示したようなスレートを示す。表示950は1つのウィンドウ内に表示されるように見えるが、多くのウィンドウがこの表示において使用される。例えば、ウィンドウ912は、ユーザー・インターフェース・エレメントを表示するために使用することができ、ウィンドウ930は説明(discussion)を表示するために使用することができ、ウィンドウ940はソーシャル・コネクター(social connector)を表示するために使用することができ、ウィンドウ960は選択肢を示すために表示することができる等である。本例では、クロス・ウィンドウ・アニメーションは、ウィンドウ960に示されるエレメントとのユーザー対話処理に応答して実行される。表示950は、アニメーションの前における初期状態を示し、表示1000は、クロス・ウィンドウ・アニメーションが実行された後の最終状態を示す。
【0053】
[0068] 図示のように、ユーザーがウィンドウ960におけるフライ・アウト・エレメント962を選択したことに応答して、ウィンドウ1060が表示され、ウィンドウ930および940が位置付けし直され、ウィンドウ960は表示から除去される。クロス・ウィンドウ・アニメーションの間1つ以上のアニメーションを適用することもできる。
【0054】
[0069] 以上、本発明のある種の実施形態について説明したが、他の実施形態も存在することができる。更に、本発明の実施形態は、メモリーおよび他の記憶媒体内に格納されたデーターと関連付けられると説明したが、データーは、ハード・ディスク、フロッピー・ディスク、またはCD−ROMのような他のタイプのコンピューター読み取り可能媒体、インターネットからの搬送波、あるいは他の形態のRAMまたはROMのような、二次的記憶デバイスというような、他のタイプのコンピューター読み取り可能媒体に格納すること、またはこれらから読み出すこともできる。更に、開示した方法の段階は、任意のやり方で変更することもでき、本発明から逸脱することなく、段階の順序を付け直す、および/または段階を挿入または削除することを含む。
【0055】
[0070] 以上の明細書、例、およびデーターは、本発明の組成(composition)の製造および使用の完全な説明に考慮している。本発明の主旨および範囲から逸脱することなく 本発明の多くの実施形態を作ることができるので、本発明は、以下に添付する特許請求の範囲に存在するものとする。