(57)【要約】レイアウトエンジンは、そのコンテンツが１または複数の表示領域にレンダリングされることになる文書の視覚的記述ツリーの視覚的レイアウトツリーを生成する。視覚的記述ツリーは、文書のコンテンツを、そのコンテンツのフォーマッティングおよび論理配列とともに記述する。視覚的記述ツリーの視覚的記述ノードは、文書の構成要素の編成を階層的に表す。視覚的レイアウトツリーは、１または複数の表示領域内の文書のレイアウトを規定する。視覚的レイアウトツリーの視覚的レイアウトノードは、文書のコンテンツのレイアウトを階層的に表す。レイアウトエンジンは、入力として視覚的記述ツリーを受け取り、対応する視覚的レイアウトツリーを生成する。レンダリングエンジンは、次いで、視覚的レイアウトツリーを入力し、視覚的レイアウトツリーによって規定される文書のレイアウトを表す画素を含むグラフィックスバッファを生成する。
2017532667.tif 000002
【特許請求の範囲】
【請求項１】
そのコンテンツがレンダリングされることになる文書の視覚的記述ツリーの視覚的レイアウトツリーを生成するための、コンピューティングデバイスによって実行される方法であって、前記視覚的記述ツリーが、コンテンツのフォーマッティングおよび論理配列ととともに前記文書のコンテンツを記述し、前記視覚的記述ツリーが、前記文書のコンテンツの階層編成を表す視覚的記述ノードを有し、各視覚的記述ノードがタイプを有する、方法において、
視覚的記述ノードの各タイプについて、そのタイプの視覚的記述ノードによって表されるコンテンツをレンダリングするためのレイアウトを示す１または複数の視覚的レイアウトノードを生成するレイアウトオブジェクトを提供するステップと、
遭遇された各視覚的記述ノードについて、
その視覚的記述ノードのタイプを決定し、
前記決定されたタイプのレイアウトオブジェクトをインスタンス化し、
前記レイアウトオブジェクトの機能を呼び出して、その視覚的記述ノードによって表されるコンテンツをレンダリングするための前記視覚的レイアウトツリーの１または複数の視覚的レイアウトノードを生成し、前記視覚的レイアウトノードが、階層的に配列され、表示領域内の前記文書の前記レイアウトを規定しており、
その視覚的記述ノードの各子視覚的記述ノードについて、その子視覚的記述ノードを再帰的に処理することによって
その視覚的記述ノードを処理することにより、
前記視覚的記述ツリーの縦型トラバースを実行するステップとを含むことを特徴とする方法。
【請求項２】
前記コンテンツの要素を表す視覚的記述ノードが、前記要素のフォーマッティングを規定する子視覚的記述ノードを有することを特徴とする請求項１に記載の方法。
【請求項３】
前記視覚的レイアウトツリーが、前記コンテンツの一部分がレンダリングされることになる各表示領域に対応するサブツリーを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記視覚的レイアウトツリーから、前記文書の前記レイアウトを表す画素を有するグラフィックスバッファを生成するステップを含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記グラフィックスバッファを出力するステップを含むことを特徴とする請求項４に記載の方法。
【請求項６】
視覚的レイアウトノードが、その視覚的レイアウトノードへの参照および位置決め情報を含むハンドルによって参照されることを特徴とする請求項１に記載の方法。
【請求項７】
前記位置決め情報が、親視覚的レイアウトノードの座標系内の前記視覚的レイアウトノードのコンテンツの位置を示して、前記位置が前記視覚的レイアウトノードを再作成する必要なく変更され得るようにすることを特徴とする請求項６に記載の方法。
【請求項８】
前記視覚的記述ツリーの前記トラバースを実行するときに、視覚的記述ノードのレイアウト動作が、前記視覚的記述ノードのコンテンツが表示領域内に収まらない結果として中断されたときに、レイアウト中断記録を生成して状態をトラッキングすることを特徴とする請求項１に記載の方法。
【請求項９】
前記文書が修正されたときに、前記修正によって影響される前記視覚的記述ツリーの部分をアプリケーションによって再生するステップを含むことを特徴とする請求項１に記載の方法。
【請求項１０】
前記アプリケーションが前記修正によって影響される前記視覚的記述ツリーの部分を再生した後で、前記視覚的レイアウトツリーの視覚的レイアウトノードを再生するステップを含むことを特徴とする請求項９に記載の方法。
【請求項１１】
前記アプリケーションによる前記再生するステップが、前記アプリケーションが、修正された視覚的記述ノードに、修正されているものとして注釈を付けるステップを含む、ことを特徴とする請求項９に記載の方法。
【請求項１２】
前記アプリケーションによる再生ステップが、それ自体は修正されていないが修正された子孫視覚的記述ノードを有する視覚的記述ノードに、修正された子孫を有するものとして注釈を付けるステップをさらに含むことを特徴とする請求項１１に記載の方法。
【請求項１３】
そのコンテンツがレンダリングされることになる文書の視覚的記述ツリーの視覚的レイアウトツリーを生成するようにコンピューティングデバイスを制御するコンピュータ実行可能命令を記憶するコンピュータ可読記憶媒体であって、前記コンピュータ実行可能命令が、
特定のタイプの視覚的記述ノードによって表されるコンテンツをレンダリングするためのレイアウトを示す１または複数の視覚的レイアウトノードを生成するレイアウトオブジェクト、および
前記視覚的記述ノードのうちの一部を、
その視覚的記述ノードの前記タイプを決定し、
前記決定されたタイプのレイアウトオブジェクトを呼び出して、その視覚的記述ノードによって表されるコンテンツをレンダリングするための前記視覚的レイアウトツリーの１または複数の視覚的レイアウトノードを生成する
ことによって処理することによって前記視覚的記述ツリーを処理する構成要素
の命令を含むことを特徴とするコンピュータ可読記憶媒体。
【請求項１４】
前記処理する構成要素が、視覚的記述ノードの各子視覚的記述ノードについて、その子視覚的記述ノードをさらに再帰的に処理することを特徴とする請求項１３に記載のコンピュータ可読記憶媒体。
【請求項１５】
前記コンテンツの要素を表す視覚的記述ノードが、前記要素のフォーマッティングを規定する子視覚的記述ノードを有することを特徴とする請求項１３に記載のコンピュータ可読記憶媒体。
【請求項１６】
前記視覚的レイアウトツリーが、前記コンテンツの一部分がレンダリングされることになる各表示領域に対応するサブツリーを含むことを特徴とする請求項１３に記載のコンピュータ可読記憶媒体。
【請求項１７】
前記コンピュータ実行可能命令が、前記視覚的レイアウトツリーから、前記文書のレイアウトを表す画素を有するグラフィックスバッファを生成する構成要素をさらに含むことを特徴とする請求項１３に記載のコンピュータ可読記憶媒体。
【請求項１８】
前記コンピュータ実行可能命令が、前記グラフィックスバッファを出力する構成要素をさらに含むことを特徴とする請求項１７に記載のコンピュータ可読記憶媒体。
【請求項１９】
視覚的レイアウトノードが、その視覚的レイアウトノードへの参照および位置決め情報を含むハンドルによって参照されることを特徴とする請求項１３に記載のコンピュータ可読記憶媒体。
【請求項２０】
前記位置決め情報が、親視覚的レイアウトノードの座標系内の前記視覚的レイアウトノードのコンテンツの位置を示して、前記位置が前記視覚的レイアウトノードを再作成する必要なく変更され得るようにすることを特徴とする請求項１９に記載のコンピュータ可読記憶媒体。
【請求項２１】
前記視覚的記述ツリーをトラバースする前記構成要素が、視覚的記述ノードのレイアウト動作が、前記視覚的記述ノードのコンテンツが表示領域内に収まらない結果として中断されたときに、レイアウト中断記録を生成して状態をトラッキングすることを特徴とする請求項１３に記載のコンピュータ可読記憶媒体。
【請求項２２】
処理する前記構成要素が、前記視覚的記述ツリーの一部分が再生されたときに、前記再生によって影響される前記視覚的記述ノードの前記部分をさらに処理することを特徴とする請求項１３に記載のコンピュータ可読記憶媒体。
【請求項２３】
そのコンテンツがレンダリングされることになる文書の視覚的記述ツリーの視覚的レイアウトツリーを生成するコンピューティングデバイスであって、
特定のタイプの視覚的記述ノードによって表されるコンテンツをレンダリングするためのレイアウトを示す１または複数の視覚的レイアウトノードを生成するレイアウトオブジェクト、および
前記視覚的記述ツリーの視覚的記述ノードに遭遇し、遭遇された各視覚的記述ノードについて、
その視覚的記述ノードの前記タイプを決定し、
前記決定されたタイプの前記レイアウトオブジェクトを呼び出して、その視覚的記述ノードによって表されるコンテンツをレンダリングするための前記視覚的レイアウトツリーの１または複数の視覚的レイアウトノードを生成する構成要素
のコンピュータ実行可能命令を記憶するコンピュータ可読記憶媒体と、
前記コンピュータ可読記憶媒体に記憶された前記コンピュータ実行可能命令を実行するプロセッサとを含むことを特徴とするコンピューティングデバイス。
【請求項２４】
トラバースする前記構成要素が、さらに、視覚的記述ノードの各子視覚的記述ノードについて、その子視覚的記述ノードのタイプを決定し、その決定されたタイプの前記レイアウトオブジェクトを呼び出すことを特徴とする請求項２３に記載のコンピューティングデバイス。
【請求項２５】
前記コンピュータ可読記憶媒体が、前記視覚的レイアウトツリーから、前記文書のレイアウトを表す画素を有するグラフィックスバッファを生成する構成要素のコンピュータ実行可能命令をさらに記憶することを特徴とする請求項２３に記載のコンピューティングデバイス。
【請求項２６】
遭遇する前記構成要素が、さらに、前記視覚的記述ツリーの一部分が再生されたときに、前記再生によって影響される各視覚的記述ノードのそれぞれについて、
その視覚的記述ノードの前記タイプを決定し、
前記決定されたタイプの前記レイアウトオブジェクトを呼び出して、その視覚的記述ノードによって表されるコンテンツをレンダリングするための前記視覚的レイアウトツリーの１または複数の視覚的レイアウトノードを生成することを特徴とする請求項２３に記載のコンピューティングデバイス。
【請求項２７】
前記再生によって影響される前記視覚的記述ノードが、前記視覚的記述ノードを再生するアプリケーションによって修正されたものとして注釈を付けられることを特徴とする請求項２６に記載のコンピューティングデバイス。
【請求項２８】
そのコンテンツが複数の表示領域にわたって断片化されることになる文書の視覚的記述ツリーの視覚的レイアウトツリーを生成するための、コンピューティングデバイスによって実行される方法であって、前記視覚的記述ツリーが、視覚的記述ノードを有し、前記視覚的レイアウトツリーが、視覚的レイアウトノードを有する、方法において、
その処理が中断されている視覚的記述ノードを識別するためのレイアウト中断記録を提供するステップと、
前記文書のコンテンツを含むことになる各表示領域について、
前記レイアウト中断記録の視覚的記述ノードについて、
その視覚的記述ノードについての前記レイアウト中断記録によって示される状態に基づいて前記視覚的記述ノードを処理するように現在の状態を設定し、
前記現在の状態で前記表示領域に含まれることになる前記視覚的記述ノードのコンテンツを表す１または複数の視覚的レイアウトノードを前記視覚的記述ツリーにポピュレートし、
前記表示領域について前記視覚的記述ノードの前記コンテンツの処理が中断されたときに、次の表示領域についてのレイアウト中断記録に、前記視覚的記述ノードの処理のその時点で最新の状態および前記視覚的記述ノードの識別子を追加して、前記次の表示領域について、前記表示領域について処理が中断されたところから前記仮想記述ツリーの処理が継続することができるようにすることによって、
前記視覚的記述ツリーを処理するステップとを含むことを特徴とする方法。
【請求項２９】
前記視覚的レイアウトツリーが、各表示領域のサブツリーを含むことを特徴とする請求項２８に記載の方法。
【請求項３０】
レイアウト中断記録によって識別される前記視覚的記述ノードを通る縦型トラバースを実行するステップとを含むことを特徴とする請求項２８に記載の方法。
【請求項３１】
視覚的記述ノードの前記レイアウト中断記録が、その視覚的記述ノードを処理するための状態情報を、子視覚的記述ノードの識別子およびその子視覚的記述ノードのレイアウト中断記録とともに含むことを特徴とする請求項２８に記載の方法。
【請求項３２】
視覚的レイアウトノードを前記レイアウト中断記録に示される状態情報とともにキャッシュして、その後に視覚的レイアウトツリーを生成するときに前記視覚的レイアウトノードが再使用され得るようにするステップをさらに含むことを特徴とする請求項２８に記載の方法。
【請求項３３】
各表示領域について、その表示領域内に、視覚的記述ノードのコンテンツを表す前記１または複数の視覚的レイアウトノードに従ってコンテンツを表示するステップをさらに含むことを特徴とする請求項２８に記載の方法。
【請求項３４】
そのコンテンツが複数の表示領域にわたって断片化されることになる視覚的記述ツリーの視覚的レイアウトツリーを生成するようにコンピューティングデバイスを制御するコンピュータ実行可能命令を記憶するコンピュータ可読記憶媒体であり、前記視覚的記述ツリーが、視覚的記述ノードを有し、前記視覚的レイアウトツリーが、視覚的レイアウトノードを有する、コンピュータ可読記憶媒体であって、前記コンピュータ実行可能命令が、
前記複数の表示領域のそれぞれについて、
そのレイアウトが中断された視覚的記述ノードと関連付けられた状態を記憶するレイアウト中断記録によって示されるようにその表示領域の視覚的記述ノードのコンテンツをレイアウトする前記視覚的記述ツリーの視覚的記述ノードをトラバースする命令と、
そのレイアウトが中断された視覚的記述ノードと関連付けられた任意の状態に基づいて前記視覚的記述ノードのコンテンツの前記視覚的記述ツリーの視覚的レイアウトノードを生成することによって前記トラバース中に遭遇された前記視覚的記述ノードの前記コンテンツをレイアウトする命令とを含むことを特徴とするコンピュータ可読記憶媒体。
【請求項３５】
前記コンピュータ実行可能命令が、前記表示領域のコンテンツのレイアウト動作が中断されたときに、そのコンテンツのレイアウトが中断された前記視覚的記述ノードと関連付けられた状態を有するレイアウト中断記録を生成する命令をさらに含むことを特徴とする請求項３４に記載のコンピュータ可読記憶媒体。
【請求項３６】
前記視覚的レイアウトツリーが、各表示領域のサブツリーを含むことを特徴とする請求項３４に記載のコンピュータ可読記憶媒体。
【請求項３７】
コンテンツの前記レイアウト動作が、視覚的記述ノードの前記コンテンツの全てが表示領域内に収まるわけではないことの結果として中断されることを特徴とする請求項３４に記載のコンピュータ可読記憶媒体。
【請求項３８】
視覚的記述ノードの前記レイアウト中断記録が、その視覚的記述ノードを処理するための状態情報を、子視覚的記述ノードの識別子およびその子視覚的記述ノードのレイアウト中断記録とともに含むことを特徴とする請求項３４に記載のコンピュータ可読記憶媒体。
【請求項３９】
前記視覚的記述ノードの前記レイアウト中断記録が、そのレイアウトが中断された各子視覚的記述ノードについての識別子およびレイアウト中断記録を含むことを特徴とする請求項３８に記載のコンピュータ可読記憶媒体。
【請求項４０】
前記コンピュータ実行可能命令が、視覚的レイアウトノードを前記レイアウト中断記録に示される状態情報とともにキャッシュして、その後に視覚的レイアウトツリーを生成するときに前記視覚的レイアウトノードが再使用され得るようにする命令をさらに含むことを特徴とする請求項３４に記載のコンピュータ可読記憶媒体。
【請求項４１】
前記コンピュータ実行可能命令が、各表示領域について、その表示領域内に、視覚的記述ノードのコンテンツを表す１または複数の視覚的レイアウトノードに従ってコンテンツを表示する命令をさらに含むことを特徴とする請求項３４に記載のコンピュータ可読記憶媒体。
【請求項４２】
視覚的記述ツリーの視覚的レイアウトツリーを生成するコンピューティングシステムであって、
実行されたときに、
表示領域の前記視覚的記述ノードのコンテンツをレイアウトするように前記視覚的記述ツリーの視覚的記述ノードを処理し、
視覚的記述ノードのコンテンツの前記レイアウト動作が中断されたときに、そのコンテンツのレイアウト動作が中断された前記視覚的記述ノードと関連付けられた状態情報を有するレイアウト中断記録を生成して、別の表示領域の前記視覚的記述ノードのコンテンツの前記レイアウト動作が、前記視覚的記述ノードと関連付けられた前記状態情報に基づいて継続することができるようにする
コンピュータ実行可能命令を記憶するメモリと、
前記メモリに記憶された前記コンピュータ実行可能命令を実行するプロセッサとを含むことを特徴とするコンピューティングシステム。
【請求項４３】
前記視覚的レイアウトツリーが、各表示領域のサブツリーを含むことを特徴とする請求項４２に記載のコンピューティングシステム。
【請求項４４】
コンテンツの前記レイアウト動作が、前記視覚的記述ノードの前記コンテンツの全てが前記表示領域内に収まるわけではないことの結果として中断されることを特徴とする請求項４２に記載のコンピューティングシステム。
【請求項４５】
視覚的記述ノードの前記レイアウト中断記録が、その視覚的記述ノードを処理するための状態情報を、子視覚的記述ノードの識別子およびその子視覚的記述ノードのレイアウト中断記録とともに含むことを特徴とする請求項４２に記載のコンピューティングシステム。
【請求項４６】
前記視覚的記述ノードの前記レイアウト中断記録が、そのレイアウトが中断された各子視覚的記述ノードについての識別子およびレイアウト中断記録を含むことを特徴とする請求項４５に記載のコンピューティングシステム。
【請求項４７】
前記メモリが、実行されたときに、視覚的レイアウトノードを前記レイアウト中断記録に示される状態情報とともにキャッシュして、その後に視覚的レイアウトツリーを生成するときに前記視覚的レイアウトノードが再使用され得るようにするコンピュータ実行可能命令をさらに記憶することを特徴とする請求項４２に記載のコンピューティングシステム。
【請求項４８】
視覚的レイアウトノードを有する視覚的レイアウトツリーを生成するための、コンピューティングデバイスによって実行される方法であって、
第１の視覚的レイアウトツリーを、
前記第１の視覚的レイアウトツリーの視覚的レイアウトノードを作成し、生成される各視覚的レイアウトノードがノード文脈に基づき、
前記作成された視覚的レイアウトノードを前記視覚的レイアウトノードの前記ノード文脈とともにキャッシュすることによって
生成するステップと、
第２の視覚的レイアウトツリーを、
前記第２の視覚的レイアウトツリーの視覚的レイアウトノードを、
前記第２の視覚的レイアウトツリーの視覚的レイアウトノードの前記ノード文脈がキャッシュされた視覚的レイアウトノードの前記ノード文脈と一致するときには、前記キャッシュされた視覚的レイアウトノードを前記第２の視覚的レイアウトツリーのために再使用し、
前記第２の視覚的レイアウトツリーの視覚的レイアウトノードの前記ノード文脈がキャッシュされた視覚的レイアウトノードの前記ノード文脈と一致しないときには、前記第２の視覚的レイアウトノードの前記ノード文脈に基づいて前記第２の視覚的レイアウトツリーのための視覚的レイアウトノードを作成する
ことによって生成することによって
生成するステップとを含むことを特徴とする方法。
【請求項４９】
前記第２の視覚的レイアウトツリーが、文書の変更に基づいて前記第１の視覚的レイアウトツリーと異なることを特徴とする請求項４８に記載の方法。
【請求項５０】
前記第２の視覚的レイアウトツリーが、表示領域の変更に基づいて前記第１の視覚的レイアウトツリーと異なることを特徴とする請求項４８に記載の方法。
【請求項５１】
前記ノード文脈が、視覚的レイアウトノードを作成するときに使用される入力パラメータを識別することを特徴とする請求項４８に記載の方法。
【請求項５２】
前記入力パラメータがレイアウト中断記録を含むことを特徴とする請求項５１に記載の方法。
【請求項５３】
前記入力パラメータがレイアウト制約を含むことを特徴とする請求項５１に記載の方法。
【請求項５４】
前記第２の視覚的レイアウトツリーのための前記作成された視覚的レイアウトノードを前記ノード文脈とともにキャッシュするステップを含むことを特徴とする請求項４８に記載の方法。
【請求項５５】
視覚的レイアウトノードを有する視覚的レイアウトツリーを生成するようにコンピューティングデバイスを制御するコンピュータ実行可能命令を記憶するコンピュータ可読記憶媒体であって、前記コンピュータ実行可能命令が、
視覚的レイアウトノードの目標ノード文脈を識別し、
キャッシュが前記目標ノード文脈と一致するノード文脈を有するキャッシュされた視覚的レイアウトノードを含むかどうかを決定し、
前記キャッシュが前記目標ノード文脈と一致するノード文脈を有するキャッシュされた視覚的レイアウトノードを含むときには、前記視覚的レイアウトノードを再作成することなく、前記キャッシュされた視覚的レイアウトノードを前記視覚的レイアウトツリーのために使用し、
前記キャッシュが前記目標ノード文脈と一致するノード文脈を有するキャッシュされた視覚的レイアウトノードを含まないときには、前記目標ノード文脈に基づいて前記視覚的レイアウトツリーのための視覚的レイアウトノードを作成する
命令を含むことを特徴とするコンピュータ可読記憶媒体。
【請求項５６】
前記コンピュータ実行可能命令が、前記作成された視覚的レイアウトノードを、前記目標ノード文脈を示す指示とともに前記キャッシュに記憶する命令をさらに含むことを特徴とする請求項５５に記載のコンピュータ可読記憶媒体。
【請求項５７】
前記視覚的レイアウトツリーが、文書の現在のバージョンを表し、前記キャッシュされた視覚的レイアウトノードが、前記文書の以前のバージョンを表す視覚的レイアウトツリーのために作成されたことを特徴とする請求項５５に記載のコンピュータ可読記憶媒体。
【請求項５８】
前記目標ノード文脈が、親視覚的レイアウトノード内の前記視覚的レイアウトノードのポジションを含まないことを特徴とする請求項５５に記載のコンピュータ可読記憶媒体。
【請求項５９】
前記目標ノード文脈が、スケーリング、回転、またはｚ次情報を含まないことを特徴とする請求項５５に記載のコンピュータ可読記憶媒体。
【請求項６０】
前記ノード文脈が、視覚的レイアウトノードを作成するときに使用される入力パラメータを識別することを特徴とする請求項５５に記載のコンピュータ可読記憶媒体。
【請求項６１】
前記入力パラメータがレイアウト中断記録を含むことを特徴とする請求項６０に記載のコンピュータ可読記憶媒体。
【請求項６２】
前記入力パラメータがレイアウト制約を含むことを特徴とする請求項６０に記載のコンピュータ可読記憶媒体。
【請求項６３】
前記キャッシュ中の視覚的レイアウトノードが、ノード文脈に基づいて索引付けされることを特徴とする請求項５５に記載のコンピュータ可読記憶媒体。
【請求項６４】
視覚的レイアウトノードを有する視覚的レイアウトツリーを生成するコンピューティングシステムであって、
文書をレンダリングするときに以前に作成されたキャッシュされた視覚的レイアウトノードのキャッシュであり、各キャッシュされた視覚的レイアウトノードがそのキャッシュされた視覚的レイアウトノードが作成された文脈を表すノード文脈を有するキャッシュ、および
実行されたときに、
目標視覚的レイアウトノードの目標ノード文脈を識別し、
前記キャッシュが前記目標ノード文脈と一致するノード文脈を有するキャッシュされた視覚的レイアウトノードを含むかどうかを決定し、
前記キャッシュが前記目標ノード文脈と一致するノード文脈を有するキャッシュされた視覚的レイアウトノードを含むときには、そのキャッシュされた視覚的レイアウトノードを前記目標視覚的レイアウトノードとして使用し、
前記キャッシュが前記目標ノード文脈と一致するノード文脈を有するキャッシュされた視覚的レイアウトノードを含まないときには、前記目標ノード文脈に基づいて前記視覚的レイアウトツリーのための前記目標視覚的レイアウトノードを作成する
コンピュータ実行可能命令
を記憶するメモリと、
前記メモリに記憶された前記コンピュータ実行可能命令を実行するプロセッサと
を含むことを特徴とするコンピューティングシステム。
【請求項６５】
前記コンピュータ実行可能命令が、実行されたときに、前記作成された目標視覚的レイアウトノードを、前記目標ノード文脈を示す指示とともに前記キャッシュにさらに記憶することを特徴とする請求項６４に記載のコンピューティングシステム。
【請求項６６】
前記視覚的レイアウトツリーが、文書の現在のバージョンを表し、前記目標ノード文脈と一致する前記ノード文脈を有する前記キャッシュされた視覚的レイアウトノードが、前記文書の以前のバージョンを表す視覚的レイアウトツリーのために作成されたことを特徴とする請求項６４に記載のコンピューティングシステム。
【請求項６７】
前記目標ノード文脈が、親視覚的レイアウトノード内の前記視覚的レイアウトノードのポジション、スケーリング、回転、またはｚ次情報を含まないことを特徴とする請求項６４に記載のコンピューティングシステム。
【請求項６８】
文書のコンテンツの位置の変化をアニメーション化するための、コンピューティングデバイスにおける方法であって、
前記文書を表す視覚的レイアウトツリーを提供するステップであり、前記視覚的レイアウトツリーが、視覚的レイアウトノード、および視覚的レイアウトノード同士の間の親／子関係を指定する視覚的レイアウトハンドルを有し、視覚的レイアウトハンドルが、子視覚的レイアウトノードへの参照を有し、前記子視覚的レイアウトノードのそれの親視覚的レイアウトノードの座標空間内でのポジションを示す位置決め情報を有するステップと、
視覚的レイアウトノードが前記視覚的レイアウトツリーの以前のバーション内のその視覚的レイアウトノードの位置と異なる前記視覚的レイアウトツリー内の前記位置にあることを検出したときに、開始位置から行き先位置までの位置の経路に沿った位置決め情報の生成を初期化し、前記異なる位置にある前記視覚的レイアウトノードの前記視覚的レイアウトハンドルを、アニメーションが進行中であることを示すように設定するステップであり、前記開始位置が、前記視覚的レイアウトツリーの前記以前のバージョン内の前記視覚的レイアウトノードの位置に基づき、前記行き先位置が、前記視覚的レイアウトツリー内の前記視覚的レイアウトノードの位置に基づくステップと、
前記開始位置から前記行き先位置までの前記経路に沿った位置を示す新たな視覚的レイアウトハンドルを有する前記視覚的レイアウトツリーに基づいて前記文書の連続的なレンダリングを生成するステップとを含むことを特徴とする方法。
【請求項６９】
前記開始位置および前記行き先位置が、同じ親視覚的レイアウトノードの座標空間内にあることを特徴とする請求項６８に記載の方法。
【請求項７０】
前記開始位置および前記行き先位置が、異なる親視覚的レイアウトノードの前記座標空間内にあることを特徴とする請求項６８に記載の方法。
【請求項７１】
視覚的レイアウトツリーの視覚的レイアウトノードの位置の変化を検出するための、コンピューティングデバイスにおける方法であって、
視覚的レイアウトノード、および視覚的レイアウトノード同士の間の親／子関係を指定する視覚的レイアウトハンドルを有する前記視覚的レイアウトツリーを記憶するステップであり、視覚的レイアウトハンドルが、子視覚的レイアウトノードへの参照を有し、前記子視覚的レイアウトノードのそれの親視覚的レイアウトノードの座標空間内でのポジションを示す位置決め情報を有し、各子視覚的レイアウトノードが、それを参照する前記視覚的レイアウトハンドルへのバック参照を有するステップと、
移動された子視覚的レイアウトノードがそれの親視覚的レイアウトノードの座標空間内の開始位置からそれの親視覚的レイアウトノードの座標空間内の行き先位置まで移動された修正された視覚的レイアウトツリーを生成するステップであり、前記生成が、
前記移動された子視覚的レイアウトノードへの参照を有し、前記行き先位置を指定する新たな位置決め情報を有する新たな視覚的レイアウトハンドルを生成するステップ、および
前記移動された子視覚的レイアウトノードの前記バック参照が前記新たに生成された視覚的レイアウトハンドルと異なる視覚的レイアウトハンドルを参照することを検出したときに、前記移動された視覚的レイアウトノードが移動されたことを示すステップを含むステップと
を含むことを特徴とする方法。
【請求項７２】
前記移動された視覚的レイアウトノードが移動されたことを示したときに、前記開始位置から前記行き先位置までの位置の経路に沿った位置決め情報の生成を初期化するステップと、前記新たな視覚的レイアウトハンドルをアニメーションが進行中であることを示すように設定するステップとをさらに含むことを特徴とする請求項７１に記載の方法。
【請求項７３】
前記ポジション情報が、ポジション、配向、およびスケール情報を含むことを特徴とする請求項７２に記載の方法。
【請求項７４】
視覚的レイアウトツリーの視覚的レイアウトノードの位置の変化を検出するための、コンピューティングデバイスにおける方法であって、
視覚的レイアウトノード、および視覚的レイアウトノード同士の間の親／子関係を指定する視覚的レイアウトハンドルを有する前記視覚的レイアウトツリーを記憶するステップであり、視覚的レイアウトハンドルが、子視覚的レイアウトノードへの参照を有し、前記子視覚的レイアウトノードのそれの親視覚的レイアウトノードの座標空間内でのポジションを示す位置決め情報を有し、各子視覚的レイアウトノードが、それを参照する前記視覚的レイアウトハンドルへのバック参照を有し、各視覚的レイアウトハンドルが、親視覚的レイアウトノードへのバック参照を有するステップ、ならびに
移動された子視覚的レイアウトノードがそれの親視覚的レイアウトノードの前記座標空間内の開始位置から行き先親視覚的レイアウトノードの前記座標空間内の行き先位置まで移動された修正された視覚的レイアウトツリーを生成するステップであり、前記生成が、
前記移動された子視覚的レイアウトノードへの参照を有し、前記行き先親視覚的レイアウトノード内の前記行き先位置を指定する新たな位置決め情報を有する新たな視覚的レイアウトハンドルを生成するステップと、
前記移動された子視覚的レイアウトノードの前記バック参照が前記新たな視覚的レイアウトハンドルと異なる視覚的レイアウトハンドルを参照すること、および前記新たな視覚的レイアウトハンドルの前記バック参照が前記新たな親視覚的レイアウトノードとは異なる親視覚的レイアウトノードを参照することを検出したときに、前記移動された視覚的レイアウトノードがリパレンティングされていることを示すステップとを含むステップ
を含むことを特徴とする方法。
【請求項７５】
前記移動された視覚的レイアウトノードがリパレンティングされたことを示したときに、前記親視覚的レイアウトノードと前記行き先親視覚的レイアウトノードの共通の先祖視覚的レイアウトノードに別の視覚的レイアウトノードを追加するステップと、前記開始位置から前記行き先位置までの前記別の視覚的レイアウトノード内の位置の経路の生成を初期化するステップと、前記新たな視覚的レイアウトハンドルをアニメーションが進行中であることを示すように設定するステップとをさらに含むことを特徴とする請求項７４に記載の方法。
【請求項７６】
レイアウトエンジンが前記新たな視覚的レイアウトハンドルについての位置決め情報を要求するときに、前記経路に沿った位置を取り出すステップをさらに含むことを特徴とする請求項７５に記載の方法。
【請求項７７】
文書のコンテンツの位置の変化をアニメーション化するコンピューティングシステムであって、
前記文書の視覚的レイアウトツリー表現であり、前記視覚的レイアウトツリーが視覚的レイアウトノードを有する視覚的レイアウトツリー表現、および
視覚的レイアウトノードが前記視覚的レイアウトツリーの以前のバーション内の前記視覚的レイアウトノードの開始位置とは異なる前記視覚的レイアウトツリー内の行き先位置にあることを検出したときに、前記開始位置から前記行き先位置までの位置の経路に沿った位置決め情報の生成を初期化し、前記開始位置から前記行き先位置までの前記経路に沿った前記視覚的レイアウトツリーに基づいて前記文書の連続的なレンダリングを生成するコンピュータ実行可能命令
を記憶するコンピュータ可読記憶媒体と、
前記コンピュータ可読記憶媒体に記憶された前記コンピュータ実行可能命令を実行するプロセッサとを含むことを特徴とするコンピューティングシステム。
【請求項７８】
前記視覚的レイアウトノードが、前記視覚的レイアウトノードを参照する視覚的レイアウトハンドルを有し、親視覚的レイアウトノードの文脈を有する前記視覚的レイアウトノードの位置を示すことを特徴とする請求項７７に記載のコンピューティングシステム。
【請求項７９】
前記コンピュータ実行可能命令が、前記視覚的レイアウトハンドルの位置の違いに基づいて、前記視覚的レイアウトノードが異なる位置にあることをさらに検出することを特徴とする請求項７８に記載のコンピューティングシステム。
【請求項８０】
前記コンピュータ実行可能命令が、視覚的レイアウトノードが前記視覚的レイアウトツリーの前記以前のバージョンの開始親視覚的レイアウトノードとは異なる行き先親視覚的レイアウトノード内にあるときに、別の視覚的レイアウトノードをさらに作成し、前記経路が、前記別の視覚的レイアウトノードの前記文脈内にあることを特徴とする請求項７８に記載のコンピューティングシステム。
【請求項８１】
前記別の視覚的レイアウトノードが、前記行き先親視覚的レイアウトノードと前記開始親視覚的レイアウトノードの共通の先祖であることを特徴とする請求項８０に記載のコンピューティングシステム。
【請求項８２】
前記コンピュータ実行可能命令が、前記視覚的レイアウトツリーおよび前記視覚的レイアウトツリーの前記以前のバージョンの前記視覚的レイアウトハンドル内の親視覚的レイアウトノードへのバック参照の違いに基づいて、前記視覚的レイアウトノードがリパレンティングされているとさらに決定することを特徴とする請求項７８に記載のコンピューティングシステム。
【請求項８３】
文書のコンテンツの位置の変化をアニメーション化するコンピュータ実行可能命令を記憶するコンピュータ可読記憶媒体であって、前記コンピュータ実行可能命令が、
視覚的レイアウトノードが視覚的レイアウトツリーの以前のバージョン内の前記視覚的レイアウトノードの開始位置とは異なる前記視覚的レイアウトツリー内の行き先位置にあることを検出し、
前記開始位置から前記行き先位置までの位置の経路を生成し、
前記開始位置から前記行き先位置までの前記経路に沿った前記視覚的レイアウトツリーから前記文書の連続的なレンダリングを生成する
命令を含むことを特徴とするコンピュータ可読記憶媒体。
【請求項８４】
前記視覚的レイアウトノードが、前記視覚的レイアウトノードを参照する視覚的レイアウトハンドルを有し、親視覚的レイアウトノードの文脈を有する前記視覚的レイアウトノードの位置を示すことを特徴とする請求項８３に記載のコンピュータ可読記憶媒体。
【請求項８５】
前記コンピュータ実行可能命令が、前記視覚的レイアウトハンドルの前記位置の違いに基づいて、前記視覚的レイアウトノードが異なる位置にあることを検出することを特徴とする請求項８４に記載のコンピュータ可読記憶媒体。
【請求項８６】
前記コンピュータ実行可能命令が、前記視覚的レイアウトツリーおよび前記視覚的レイアウトツリーの前記以前のバージョンの前記視覚的レイアウトハンドル内の親視覚的レイアウトノードへのバック参照の違いに基づいて、前記視覚的レイアウトノードがリパレンティングされているとさらに決定することを特徴とする請求項８４に記載のコンピュータ可読記憶媒体。
【請求項８７】
前記コンピュータ実行可能命令が、前記視覚的レイアウトノードがリパレンティングされているときに、前記視覚的レイアウトツリーの前記以前のバージョン内の親視覚的レイアウトノードと前記視覚的レイアウトツリーの親視覚的レイアウトノードの共通の先祖である一時的視覚的レイアウトノードを作成する命令をさらに含むことを特徴とする請求項８４に記載のコンピュータ可読記憶媒体。
【請求項８８】
位置決めポインタを使用する文書の視覚的レイアウトツリーを生成するための、コンピューティングデバイスによって実行される方法であって、
前記視覚的レイアウトツリーの視覚的レイアウトノードを作成するステップと、
前記視覚的レイアウトノード同士をリンクして前記視覚的レイアウトツリーを形成する前記視覚的レイアウトノードの位置決めポインタを生成するステップであり、各位置決めポインタが、子視覚的レイアウトノードを指すポインタ、および前記子視覚的レイアウトノードを親視覚的レイアウトノードの文脈内で位置決めするための位置決め情報を有して、前記親視覚的レイアウトノードの前記文脈内の前記子視覚的レイアウトノードの前記ポジションが前記子視覚的レイアウトノードを再作成する必要なく変更され得るようになっているステップとを含むことを特徴とする方法。
【請求項８９】
前記位置決めポインタが、前記子視覚的レイアウトノードについての色情報をさらに含むことを特徴とする請求項８８に記載の方法。
【請求項９０】
前記位置決めポインタが、前記子視覚的レイアウトノードについてのｚ次情報をさらに含むことを特徴とする請求項８８に記載の方法。
【請求項９１】
前記位置決めポインタが、前記子視覚的レイアウトノードについての回転情報をさらに含むことを特徴とする請求項８８に記載の方法。
【請求項９２】
前記位置決めポインタが、前記子視覚的レイアウトノードについてのスケーリング情報をさらに含むことを特徴とする請求項８８に記載の方法。
【請求項９３】
前記視覚的レイアウトノードを、前記文書が修正されて前記親視覚的レイアウトノードの文脈内の前記子視覚的レイアウトノードの位置決め情報が変更されたときに前記文書の第２の視覚的レイアウトツリーを生成するときに再使用するためにキャッシュするステップをさらに含むことを特徴とする請求項８８に記載の方法。
【請求項９４】
前記変更された位置決め情報が、前記子視覚的レイアウトノードのポジション、スケーリング、配向、および回転からなる一群から選択されることを特徴とする請求項９３に記載の方法。
【請求項９５】
視覚的レイアウトハンドルを使用する文書の視覚的レイアウトツリーをレンダリングするようにコンピューティングデバイスを制御するコンピュータ実行可能命令を記憶するコンピュータ可読記憶媒体であって、前記コンピュータ実行可能命令が、
前記視覚的レイアウトツリーの視覚的レイアウトノードの視覚的レイアウトハンドルを取り出し、前記視覚的レイアウトノードが、コンテンツを有し、前記視覚的レイアウトハンドルが、前記視覚的レイアウトノードへの参照、および前記視覚的レイアウトノードについてのフォーマッティング情報を有し、
前記視覚的レイアウトハンドルの前記フォーマッティング情報に従ってフォーマッティングされた前記視覚的レイアウトノードの前記コンテンツを出力し、前記文書が、前記視覚的レイアウトノードの前記コンテンツを変更することなく修正されて、前記視覚的レイアウトノードの前記コンテンツについての前記フォーマッティング情報が変更され得る
命令を含むことを特徴とするコンピュータ可読記憶媒体。
【請求項９６】
前記フォーマッティング情報が、位置決め情報を含むことを特徴とする請求項９５に記載のコンピュータ可読記憶媒体。
【請求項９７】
前記位置決め情報が、親視覚的レイアウトノードの文脈内の前記視覚的レイアウトノードの前記コンテンツのポジションを含むことを特徴とする請求項９６に記載のコンピュータ可読記憶媒体。
【請求項９８】
前記位置決め情報が、前記視覚的レイアウトノードの前記コンテンツについてのｚ次情報を含むことを特徴とする請求項９６に記載のコンピュータ可読記憶媒体。
【請求項９９】
前記位置決め情報が、前記視覚的レイアウトノードの前記コンテンツについての回転情報を含むことを特徴とする請求項９６に記載のコンピュータ可読記憶媒体。
【請求項１００】
前記位置決め情報が、前記視覚的レイアウトノードの前記コンテンツについてのスケーリング情報を含むことを特徴とする請求項９６に記載のコンピュータ可読記憶媒体。
【請求項１０１】
前記視覚的レイアウトノードの前記コンテンツが、前記文書が修正されて前記視覚的レイアウトノードのフォーマッティング情報が変更されたときに前記文書の第２の視覚的レイアウトツリーをレンダリングするときに再使用するためにキャッシュされることを特徴とする請求項９５に記載のコンピュータ可読記憶媒体。
【請求項１０２】
前記フォーマッティング情報が、色情報を含むことを特徴とする請求項９６に記載のコンピュータ可読記憶媒体。
【請求項１０３】
視覚的レイアウトハンドルを使用する文書の視覚的レイアウトツリーを生成するコンピューティングシステムであって、
前記視覚的レイアウトツリーの視覚的レイアウトノードを作成し、
前記視覚的レイアウトノード同士をリンクして前記視覚的レイアウトツリーを形成する前記視覚的レイアウトノードの視覚的レイアウトハンドルであり、各視覚的レイアウトハンドルが、コンテンツを有する子視覚的レイアウトノードへの参照、および親視覚的レイアウトノードの文脈内の前記子視覚的レイアウトノードの前記コンテンツをフォーマッティングするためのフォーマッティング情報を有して、前記親視覚的レイアウトノードの前記文脈内の前記子視覚的レイアウトノードの前記コンテンツの前記フォーマットが前記子視覚的レイアウトノードの前記コンテンツを再作成する必要なく変更され得るようになっている視覚的レイアウトハンドルを生成する
ように前記コンピューティングシステムを制御するためのコンピュータ実行可能命令を記憶するメモリと、
前記メモリに記憶された前記コンピュータ実行可能命令を実行するプロセッサとを含むことを特徴とするコンピューティングシステム。
【請求項１０４】
フォーマッティング情報が、位置決め情報を含むことを特徴とする請求項１０３に記載のコンピューティングシステム。
【請求項１０５】
前記位置決め情報が、前記親視覚的レイアウトノードの文脈内の前記子視覚的レイアウトノードの前記コンテンツのポジションを含むことを特徴とする請求項１０４に記載のコンピューティングシステム。
【請求項１０６】
前記位置決め情報が、前記子視覚的レイアウトノードの前記コンテンツについてのｚ次情報、回転情報、またはスケーリング情報を含むことを特徴とする請求項１０４に記載のコンピューティングシステム。
【請求項１０７】
前記子視覚的レイアウトノードのコンテンツについての前記フォーマッティング情報が、前記子視覚的レイアウトノードの前記コンテンツを再作成することなく修正され得ることを特徴とする請求項１０３に記載のコンピューティングシステム。
【請求項１０８】
文書のコンテンツをレンダリングする際に使用されるように仮想化された視覚的レイアウトツリーを生成するための、コンピューティングデバイスによって実行される方法であって、前記文書が、視覚的記述ノードを有する視覚的記述ツリーによって表され、前記仮想化された視覚的レイアウトツリーが視覚的レイアウトノードを有する方法において、
前記文書内のアンカ点を受け取るステップであり、前記アンカ点が、前記視覚的記述ツリー内のアンカ視覚的記述ノードを識別するステップと、
前記アンカ点と関連付けられたコンテンツが位置決めされることになる表示領域内の目標位置を受け取るステップと、
前記視覚的記述ツリーのルートから前記アンカ視覚的記述ノードまでの経路に沿って視覚的記述ノードの視覚的レイアウトノードを生成するステップと、
前記アンカ視覚的記述ノードの視覚的レイアウトノードを生成するステップであり、前記視覚的レイアウトノードが、前記表示領域内の前記目標位置に位置決めされることになる前記アンカ点の前記アンカ視覚的記述ノードのコンテンツのレイアウトを指定するステップと、
前記アンカ視覚的記述ノードの前記視覚的レイアウトノードを生成した後で、前記視覚的記述ツリーの前記ルートから前記アンカ視覚的記述ノードまでの前記経路に沿った視覚的記述ノードの子孫である視覚的記述ノードが前記表示領域内に出現するコンテンツを有さないときには、その子孫の視覚的記述ノードの視覚的レイアウトノードを生成しないステップとを含むことを特徴とする方法。
【請求項１０９】
特定のタイプの視覚的記述ノードを処理するときに、その特定のタイプの視覚的記述ノードを処理するためのレイアウトオブジェクトを呼び出すステップをさらに含むことを特徴とする請求項１０８に記載の方法。
【請求項１１０】
レイアウトオブジェクトが仮想化に対応しているときには、前記レイアウトオブジェクトが、子視覚的記述ノードが前記表示領域内に出現するコンテンツを有さないときには前記子視覚的記述ノードの視覚的レイアウトノードを生成しないことを特徴とする請求項１０９に記載の方法。
【請求項１１１】
レイアウトオブジェクトが仮想化に対応していないときには、前記レイアウトオブジェクトが、子視覚的記述ノードが前記表示領域内に出現するコンテンツを有さなくても、子視覚的記述ノードの視覚的レイアウトノードを生成することを特徴とする請求項１０９に記載の方法。
【請求項１１２】
レイアウトオブジェクトが仮想化に対応していないときには、子視覚的記述ノードのコンテンツが前記表示領域に含まれるかどうかを決定し、含まれない場合には、前記子視覚的記述ノードのレイアウトオブジェクトを呼び出さないことを特徴とする請求項１０９に記載の方法。
【請求項１１３】
レイアウトエンジンが、前記表示領域がコンテンツのための余白を有するかどうかについて、レイアウトオブジェクトに指示を提供することを特徴とする請求項１０９に記載の方法。
【請求項１１４】
レイアウトオブジェクトが、視覚的記述ノードのコンテンツをレイアウトするときに使用される前記表示領域の前記量を示す指示を前記レイアウトエンジンに提供することを特徴とする請求項１１３に記載の方法。
【請求項１１５】
前記アンカ点が、前記アンカ視覚的記述ノード内の名前付きの点であることを特徴とする請求項１０８に記載の方法。
【請求項１１６】
前記識別された視覚的記述ノードの前記コンテンツが前記表示領域を埋めないときに、１または複数の視覚的記述ノードの視覚的レイアウトノードを生成して、前記表示領域をコンテンツで埋めるステップをさらに含むことを特徴とする請求項１０８に記載の方法。
【請求項１１７】
前記視覚的記述ツリーが仮想化されて、前記表示領域中にレンダリングするための視覚的レイアウトノードの前記生成に対応する必要に応じて前記仮想化された視覚的レイアウトツリーの生成中に視覚的記述ノードが生成されるようになっていることを特徴とする請求項１０８に記載の方法。
【請求項１１８】
前記文書の前記コンテンツに基づいて前記視覚的記述ツリーを生成するアプリケーションが、必要に応じて視覚的記述ノードを生成するように通知されることを特徴とする請求項１１７に記載の方法。
【請求項１１９】
文書のコンテンツをレンダリングする際に使用されるように仮想化された視覚的レイアウトツリーを生成するコンピューティングデバイスであり、前記文書が、視覚的記述ノードを有する視覚的記述ツリーによって表され、前記仮想化された視覚的レイアウトツリーが視覚的レイアウトノードを有するコンピューティングデバイスであって、
前記文書内のアンカ点を受け取り、前記アンカ点が、前記視覚的記述ツリー内のアンカ視覚的記述ノードを識別し、
前記アンカ点と関連付けられたコンテンツが位置決めされることになる表示領域内の目標位置を受け取り、
前記視覚的記述ツリーのルートから前記アンカ視覚的記述ノードも含む前記アンカ視覚的記述ノードまでの経路に沿った視覚的記述ノード、および前記表示領域内に出現するコンテンツを有する他の視覚的記述ノードについては視覚的レイアウトノードを生成するが、前記アンカ点が前記目標位置に位置する前記表示領域内に出現するコンテンツを有さない他の視覚的記述ノードについては生成しない
コンピュータ実行可能命令を記憶するコンピュータ可読記憶媒体と、
前記コンピュータ可読記憶媒体に記憶された前記コンピュータ実行可能命令を実行するプロセッサとを含むことを特徴とするコンピューティングデバイス。
【請求項１２０】
前記視覚的記述ツリーが仮想化されて、前記表示領域中にレンダリングするための視覚的レイアウトノードの前記生成に対応する必要に応じて前記仮想化された視覚的レイアウトツリーの生成中に視覚的記述ノードが生成されるようになっていることを特徴とする請求項１１９に記載のコンピューティングデバイス。
【請求項１２１】
アプリケーションが、前記文書の前記コンテンツに基づいて前記視覚的記述ツリーを生成し、前記コンピュータ可読記憶媒体が、前記表示領域中のコンテンツのレンダリングに対応する必要に応じて視覚的記述ノードを生成するように前記アプリケーションに通知するコンピュータ実行可能命令をさらに記憶することを特徴とする請求項１２０に記載のコンピューティングデバイス。
【請求項１２２】
前記コンピュータ可読記憶媒体が、特定のタイプの視覚的記述ノードを処理するレイアウトオブジェクトを呼び出すコンピュータ実行可能命令をさらに記憶し、前記レイアウトオブジェクトが仮想化されるときには、前記レイアウトオブジェクトが、前記表示領域内に出現するコンテンツを有さない視覚的レイアウトノードを生成しないことを特徴とする請求項１１９に記載のコンピューティングデバイス。
【請求項１２３】
前記コンピュータ可読記憶媒体が、特定のタイプの視覚的記述ノードを処理するレイアウトオブジェクトを呼び出すコンピュータ実行可能命令をさらに記憶し、前記レイアウトオブジェクトが仮想化されないときには、レイアウトエンジンが、前記表示領域内に出現するコンテンツを有さない視覚的記述ノードの子視覚的記述ノードのレイアウトオブジェクトを呼び出さないことを特徴とする請求項１１９に記載のコンピューティングデバイス。
【請求項１２４】
文書のコンテンツをレンダリングする際に使用されるように仮想化された視覚的レイアウトツリーを生成するようにコンピューティングデバイスを制御するコンピュータ実行可能命令を記憶するコンピュータ可読記憶媒体であり、前記文書が、視覚的記述ノードを有する視覚的記述ツリーによって表され、前記仮想化された視覚的レイアウトツリーが視覚的レイアウトノードを有するコンピュータ可読記憶媒体であって、前記コンピュータ実行可能命令が、
前記視覚的記述ツリー内のアンカ視覚的記述ノードの識別を受け取り、
前記アンカ視覚的記述ノードを含む視覚的記述ノード、前記表示領域内に出現するコンテンツを有する他の視覚的記述ノードについては視覚的レイアウトノードを生成するが、前記表示領域内に出現するコンテンツを有さない他の視覚的記述ノードについては生成しない
命令を含むことを特徴とするコンピュータ可読記憶媒体。
【請求項１２５】
前記アンカ点が、前記表示領域内の目標位置に位置決めされることを特徴とする請求項１２４に記載のコンピュータ可読記憶媒体。
【請求項１２６】
前記コンピュータ実行可能命令が、前記表示領域中にレンダリングするための視覚的レイアウトノードの前記生成に対応する必要に応じて前記仮想化された視覚的レイアウトツリーの生成中に視覚的記述ノードを生成するように前記アプリケーションに通知する命令をさらに含むことを特徴とする請求項１２４に記載のコンピュータ可読記憶媒体。
【請求項１２７】
前記コンピュータ実行可能命令が、特定のタイプの視覚的記述ノードを処理するレイアウトオブジェクトを呼び出す命令をさらに含み、前記レイアウトオブジェクトが仮想化されるときには、前記レイアウトオブジェクトが、前記表示領域内に出現するコンテンツを有さない視覚的レイアウトノードを生成しないことを特徴とする請求項１２４に記載のコンピュータ可読記憶媒体。
【請求項１２８】
文書のコンテンツをレンダリングする際に使用される視覚的レイアウトツリーを生成するための、コンピューティングデバイスによって実行される方法であって、前記文書が、視覚的記述ノードを有する視覚的記述ツリーによって表される方法において、
前記文書内のアンカ点を受け取るステップであり、前記アンカ点が、前記視覚的記述ツリー内のアンカ視覚的記述ノードおよび前記アンカ視覚的記述ノード内の名前付きの点を識別するステップと、
前記アンカ点と関連付けられたコンテンツが位置決めされることになる表示領域内の目標位置を受け取るステップと、
レイアウトオブジェクトに前記アンカ視覚的記述ノードについて問い合わせて、前記アンカ視覚的記述ノードの座標空間内の前記名前付きの点の位置を提供するステップと、
前記アンカ視覚的記述ノードの前記座標空間内の前記名前付きの点の前記位置が前記表示領域内の前記目標位置に位置決めされるように視覚的レイアウトツリーを生成するステップとを含むことを特徴とする方法。
【請求項１２９】
視覚的記述ノードがタイプを有し、カスタムに名付けられた点が、そのタイプの視覚的記述ノードについて規定されることを特徴とする請求項１２８に記載の方法。
【請求項１３０】
複数のカスタムに名付けられた点が、そのタイプの視覚的記述ノードについて規定されることを特徴とする請求項１２９に記載の方法。
【請求項１３１】
前記視覚的レイアウトツリーを生成する前記ステップが、
前記視覚的レイアウトツリーの各視覚的レイアウトノードについて視覚的レイアウトハンドルを生成するステップであり、視覚的レイアウトハンドルが、視覚的レイアウトノード、および前記識別された視覚的レイアウトノードのコンテンツを親視覚的レイアウトノードの座標空間内で位置決めするための位置決め情報を識別するステップと、
前記名前付きの点が前記表示領域の前記目標位置に位置決めされるように、ルート視覚的レイアウトノードから前記アンカ視覚的記述ノードのコンテンツを表す視覚的レイアウトノードまでの経路上の視覚的レイアウトノードの視覚的レイアウトハンドルの前記位置決め情報を設定するステップと
をさらに含むことを特徴とする請求項１２８に記載の方法。
【請求項１３２】
前記アンカ視覚的レイアウトノードの前記コンテンツが、前記アンカ視覚的レイアウトノードの前記視覚的レイアウトハンドルおよび各先祖視覚的レイアウトノードの前記位置決め情報に基づいて前記表示領域内で位置付けられ、前記位置決め情報が、位置、配向、およびスケーリング情報を含むことを特徴とする請求項１３１に記載の方法。
【請求項１３３】
前記アンカ視覚的記述ノードが、前記アンカ視覚的記述ノードを有する様々な名前付きの点に基づいて位置決めされ得ることを特徴とする請求項１２８に記載の方法。
【請求項１３４】
各視覚的記述ノードが、その視覚的記述ノードの前記座標空間の前記原点を表す名前付きの点を有することを特徴とする請求項１２８に記載の方法。
【請求項１３５】
視覚的記述ノードが、その視覚的記述ノードのコンテンツの前記外接長方形の左上、中央上、右上、中央左、中央、中央右、左下、中央下、および右下の点からなる一群から選択される点を表す名前付きの点を有することを特徴とする請求項１２８に記載の方法。
【請求項１３６】
文書のコンテンツをレンダリングする際に使用される視覚的レイアウトツリーを生成するコンピューティングシステムであり、前記文書が、視覚的記述ノードを有する視覚的記述ツリーによって表されるコンピューティングシステムであって、
前記視覚的記述ツリー内のアンカ視覚的記述ノードおよび前記アンカ視覚的記述ノードの名前付きの点を示す指示を受け取り、
表示領域内の目標位置を示す指示を受け取り、
前記アンカ視覚的記述ノードの座標空間内の前記名前付きの点の位置を識別し、
前記アンカ視覚的記述ノードの前記座標空間内の前記名前付きの点の前記位置が前記表示領域内の前記目標位置に位置決めされるように視覚的レイアウトツリーを生成する
コンピュータ実行可能命令を記憶するコンピュータ可読記憶媒体と、
前記コンピュータ可読記憶媒体に記憶された前記コンピュータ実行可能命令を実行するプロセッサとを含むことを特徴とするコンピューティングシステム。
【請求項１３７】
視覚的記述ノードがタイプを有し、カスタムに名付けられた点が、そのタイプの視覚的記述ノードについて規定されることを特徴とする請求項１３６に記載のコンピューティングシステム。
【請求項１３８】
複数のカスタムに名付けられた点が、そのタイプの視覚的記述ノードについて規定されることを特徴とする請求項１３７に記載のコンピューティングシステム。
【請求項１３９】
前記視覚的レイアウトツリーを生成する前記コンピュータ実行可能命令が、
前記視覚的レイアウトツリーの各視覚的レイアウトノードについて視覚的レイアウトハンドルを生成し、視覚的レイアウトハンドルが、視覚的レイアウトノード、および前記識別された視覚的レイアウトノードのコンテンツを親視覚的レイアウトノードの前記座標空間内で位置決めするための位置決め情報を識別し、
前記名前付きの点が前記表示領域の前記目標位置に位置決めされるように、ルート視覚的レイアウトノードから前記アンカ視覚的記述ノードのコンテンツを表す前記視覚的レイアウトノードまでの経路上の視覚的レイアウトノードの視覚的レイアウトハンドルの前記位置決め情報を設定する
コンピュータ実行可能命令をさらに含むことを特徴とする請求項１３６に記載のコンピューティングシステム。
【請求項１４０】
前記アンカ視覚的レイアウトノードの前記コンテンツを、前記アンカ視覚的レイアウトノードの前記視覚的レイアウトハンドルおよび各先祖視覚的レイアウトノードの前記位置決め情報に基づいて前記表示領域内でレンダリングするコンピュータ実行可能命令をさらに含み、前記位置決め情報が、位置、配向、およびスケーリング情報を含むことを特徴とする請求項１３９に記載のコンピューティングシステム。
【請求項１４１】
前記アンカ視覚的記述ノードが、前記アンカ視覚的記述ノードを有する様々な名前付きの点に基づいて位置決めされ得ることを特徴とする請求項１３６に記載のコンピューティングシステム。
【請求項１４２】
各視覚的記述ノードが、その視覚的記述ノードの前記座標空間の前記原点を表す名前付きの点を有することを特徴とする請求項１３６に記載のコンピューティングシステム。
【請求項１４３】
視覚的記述ノードが、その視覚的記述ノードのコンテンツの外接長方形の左上、中央上、右上、中央左、中央、中央右、左下、中央下、および右下の点からなる一群から選択される点を表す名前付きの点を有することを特徴とする請求項１３６に記載のコンピューティングシステム。
【請求項１４４】
視覚的記述ツリー内のアンカ視覚的記述ノードおよび前記アンカ視覚的記述ノードの名前付きの点を示す指示を受け取り、
表示領域内の目標位置を示す指示を受け取り、
前記アンカ視覚的記述ノードの座標空間内の前記名前付きの点の位置を識別し、
前記アンカ視覚的記述ノードの前記座標空間内の前記名前付きの点の前記位置が前記表示領域内の前記目標位置に位置決めされるように視覚的レイアウトツリーを生成する
コンピュータ実行可能命令を記憶するコンピュータ可読記憶媒体。
【請求項１４５】
前記視覚的レイアウトツリーを生成する前記命令が、
前記視覚的レイアウトツリーの各視覚的レイアウトノードについて視覚的レイアウトハンドルを生成し、視覚的レイアウトハンドルが、視覚的レイアウトノード、および前記識別された視覚的レイアウトノードのコンテンツを親視覚的レイアウトノードの座標空間内で位置決めするための位置決め情報を識別し、
前記名前付きの点が前記表示領域の前記目標位置に位置決めされるように、ルート視覚的レイアウトノードから前記アンカ視覚的記述ノードのコンテンツを表す前記視覚的レイアウトノードまでの経路上の視覚的レイアウトノードの視覚的レイアウトハンドルの前記位置決め情報を設定する
命令をさらに含むことを特徴とする請求項１４４に記載のコンピュータ可読記憶媒体。
【請求項１４６】
前記アンカ視覚的レイアウトノードの前記コンテンツを、前記アンカ視覚的レイアウトノードの前記視覚的レイアウトハンドルおよび各先祖視覚的レイアウトノードの前記位置決め情報に基づいて前記表示領域内でレンダリングする命令をさらに記憶し、前記位置決め情報が、位置、配向、およびスケーリングを含むことを特徴とする請求項１４５に記載のコンピュータ可読記憶媒体。
【請求項１４７】
視覚的記述ノードがタイプを有し、カスタムに名付けられた点が、そのタイプの視覚的記述ノードについて規定されることを特徴とする請求項１４５に記載のコンピュータ可読記憶媒体。
【請求項１４８】
文書のコンテンツをレンダリングする際に使用される視覚的レイアウトツリーの視覚的レイアウトノードを生成するための、コンピューティングデバイスによって実行される方法であって、前記文書が、視覚的記述ノードを有する視覚的記述ツリーによって表される方法において、前記視覚的記述ツリーの視覚的記述ノードを、
その視覚的記述ノードのタイプを決定し、
前記決定された視覚的記述ノードのタイプの視覚的記述ノードを処理するレイアウトオブジェクトの制御下で、
その視覚的記述ノードによって表されるコンテンツをレンダリングするための前記視覚的レイアウトツリーの視覚的レイアウトノードを生成し、
前記視覚的記述ツリーに追加の視覚的記述ノードを追加し、前記追加の視覚的記述ノードが、前記文書の前記コンテンツとともにレンダリングされることになる追加のコンテンツを有し、
前記追加のコンテンツのコンテンツをレンダリングするための前記視覚的レイアウトツリーの視覚的レイアウトノードを生成することによって前記追加の視覚的記述ノードを処理する
ことによって処理するステップを含むことを特徴とする方法。
【請求項１４９】
前記追加の視覚的記述ノードを前記処理することが、前記一時的視覚的記述ノードのタイプを決定することを含み、前記追加の視覚的記述ノードを前記処理することが、前記決定されたタイプの前記追加の視覚的記述ノードのレイアウトオブジェクトの制御下であることを特徴とする請求項１４８に記載の方法。
【請求項１５０】
前記追加の視覚的記述ノードを前記処理することが、前記決定されたタイプの前記追加の視覚的記述ノードのレイアウトオブジェクトをインスタンス化することを含むことを特徴とする請求項１４９に記載の方法。
【請求項１５１】
前記追加のコンテンツが、前記文書を修正するグラフィカルユーザインタフェースウィジェットであることを特徴とする請求項１４８に記載の方法。
【請求項１５２】
前記文書が修正されたときに、前記修正によって影響される前記視覚的記述ツリーの部分をアプリケーションによって再生するステップを含むことを特徴とする請求項１５１に記載の方法。
【請求項１５３】
前記アプリケーションが前記修正によって影響される前記視覚的記述ツリーの部分を再生した後で、前記視覚的レイアウトツリーの視覚的レイアウトノードを再生するステップを含むことを特徴とする請求項１５２に記載の方法。
【請求項１５４】
前記アプリケーションによって再生する前記ステップが、修正された視覚的記述ノードに修正されているものとしてアプリケーションが注釈を付けるステップを含むことを特徴とする請求項１５２に記載の方法。
【請求項１５５】
前記アプリケーションによって再生するステップが、それ自体は修正されていないが修正された子孫視覚的記述ノードを有する視覚的記述ノードに修正された子孫を有するものとして注釈を付けるステップをさらに含むことを特徴とする請求項１５４に記載の方法。
【請求項１５６】
前記文書の前記修正が、前記視覚的記述ノードのコンテンツが表示されることになる領域のサイズ変更を含むことを特徴とする請求項１５１に記載の方法。
【請求項１５７】
前記追加のコンテンツが、複数の表示領域に表示されることになる重複コンテンツであり、前記重複コンテンツを表す各表示領域ごとに追加の視覚的記述ノードが追加されることを特徴とする請求項１４８に記載の方法。
【請求項１５８】
視覚的記述ツリーの視覚的記述ノードによって表されるコンテンツをレンダリングする視覚的レイアウトツリーの視覚的レイアウトノードを生成し、前記視覚的記述ツリーが文書のコンテンツを表し、
前記視覚的記述ツリーに追加の視覚的記述ノードを追加し、前記追加の視覚的記述ノードが、前記文書の前記コンテンツとともにレンダリングされる追加のコンテンツを有し、
前記追加のコンテンツのコンテンツをレンダリングするための前記視覚的レイアウトツリーの視覚的レイアウトノードを生成することによって前記一時的視覚的記述ノードを処理する
コンピュータ実行可能命令を記憶するコンピュータ可読記憶媒体と、
前記コンピュータ可読記憶媒体に記憶された前記コンピュータ実行可能命令を実行するプロセッサとを含むことを特徴とするコンピューティングデバイス。
【請求項１５９】
前記コンピュータ実行可能命令が、前記視覚的記述ノードの前記タイプを決定する命令をさらに含み、生成し、追加し、処理する前記コンピュータ実行可能命令が、前記決定されたタイプの視覚的記述ノードのレイアウトオブジェクトの命令であることを特徴とする請求項１５８に記載のコンピューティングデバイス。
【請求項１６０】
前記追加の視覚的記述ノードを処理する前記コンピュータ実行可能命令が、前記追加の視覚的記述ノードのタイプを決定するコンピュータ実行可能命令をさらに含み、前記追加の視覚的記述ノードを処理するコンピュータ実行可能命令が、前記決定されたタイプの前記追加の視覚的記述ノードのレイアウトオブジェクトの命令であることを特徴とする請求項１５９に記載のコンピューティングデバイス。
【請求項１６１】
前記一時的視覚的記述ノードを処理する前記コンピュータ実行可能命令が、前記決定されたタイプの前記追加の視覚的記述ノードのレイアウトオブジェクトをインスタンス化する命令をさらに含むことを特徴とする請求項１６０に記載のコンピューティングデバイス。
【請求項１６２】
前記追加のコンテンツが、前記文書を修正するグラフィカルユーザインタフェースであることを特徴とする請求項１５８に記載のコンピューティングデバイス。
【請求項１６３】
前記コンピュータ実行可能命令が、前記文書が修正されたときに、前記修正によって影響される前記視覚的記述ツリーの部分をアプリケーションによって再生する命令をさらに含むことを特徴とする請求項１６２に記載のコンピューティングデバイス。
【請求項１６４】
視覚的記述ツリーの視覚的記述ノードによって表されるコンテンツをレンダリングするための視覚的レイアウトツリーの視覚的レイアウトノードを生成し、前記視覚的記述ツリーが文書のコンテンツを表し、
前記視覚的記述ツリーに追加の視覚的記述ノードを追加し、前記追加の視覚的記述ノードが、前記文書の前記コンテンツとともにレンダリングされることになる追加のコンテンツを有し、
前記追加のコンテンツのコンテンツをレンダリングするための前記視覚的レイアウトツリーの視覚的レイアウトノードを生成することによって前記追加の視覚的記述ノードを処理する
命令を含むコンピュータ実行可能命令を記憶するコンピュータ可読記憶媒体。
【請求項１６５】
前記追加のコンテンツが、複数の表示領域に表示されることになる重複コンテンツであり、前記重複コンテンツを表す各表示領域ごとに追加の視覚的記述ノードが追加されることを特徴とする請求項１６４に記載のコンピュータ可読記憶媒体。
【請求項１６６】
前記視覚的記述ノードの前記タイプを決定するコンピュータ実行可能命令をさらに記憶し、生成し、追加し、処理する前記コンピュータ実行可能命令が、前記決定されたタイプの視覚的記述ノードのレイアウトオブジェクトの命令であることを特徴とする請求項１６４に記載のコンピュータ可読記憶媒体。
【請求項１６７】
前記一時的視覚的記述ノードを処理する前記コンピュータ実行可能命令が、前記一時的視覚的記述ノードのタイプを決定するコンピュータ実行可能命令をさらに含み、前記追加の視覚的記述ノードを処理するコンピュータ実行可能命令が、前記決定されたタイプの前記追加の視覚的記述ノードのレイアウトオブジェクトの命令であることを特徴とする請求項１６６に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、レイアウトエンジンに関する。
【背景技術】
【０００２】
ゲームアプリケーション、提示アプリケーション、電子書籍リーダアプリケーション、コンピュータ支援設計アプリケーション、および編集アプリケーションなどのアプリケーションプログラムは、コンピューティングデバイスのディスプレイに提示されるますます複雑で洗練されたコンテンツを生成している。例えば、ゲームアプリケーションは、燃えている建物の中の消防士の動きを示すコンテンツを生成することがある。提示アプリケーションは、ディスプレイの一部分にテキストおよびグラフィックスを有し、ディスプレイの別の部分にフラグのはためきを有する複雑な文書を含むスクロールの巻戻しを示すコンテンツを生成することがある。電子書籍リーダアプリケーションは、１枚のページをめくる、または多数のページを素早く連続してめくることをアニメーション化すること、および文書の連続していないページを異なるディスプレイ領域に同時に表示することなどの特殊効果を用いて文書のページを示すコンテンツを生成することがある。コンピュータ支援設計アプリケーションは、車のエンジンまたは機械式腕時計など複雑な機械の内部の動きをアニメーション化するコンテンツを生成することがある。編集アプリケーションは、削除されたページが回転しながらゴミ箱に入っていく様子を示す、または文書中の現在位置から新たな位置への画像の動きをアニメーション化するなどの特殊効果を編集プロセスに適用するコンテンツを生成することがある。
【０００３】
このような複雑で洗練されたコンテンツの提示は、かなりの量の計算資源を必要とする可能性がある。その結果として、電子書籍リーダおよびスマートフォンなど、多数の低計算パワーデバイスは、このようなコンテンツを提示することができない。より複雑なコンテンツは、相当な計算パワーを有するハイエンドワークステーションのディスプレイにしか効果的に提示されない可能性もある。そのような相当の計算パワーがあっても、数千万画素の壁面または広告板の大きさなど非常に大型のディスプレイには、複雑なコンテンツを表示することができない可能性もある。このようなコンテンツを提示するためのより効率的な技術があることが望ましいであろう。
【図面の簡単な説明】
【０００４】
【図１】例示的な文書のコンテンツ全体を表示するのに十分に大きい表示領域内における例示的な文書の表示を示す図である。
【図２】例示的な文書のコンテンツ全体を表示するのに十分な大きさでない表示領域内の例示的な文書の表示を示す図である。
【図３】例示的な文書のコンテンツ全体を表示するのに十分な大きさでない表示領域内の修正された例示的な文書の表示を示す図である。
【図４】いくつかの実施形態における例示的な文書の編成を示す図である。
【図５】いくつかの実施形態における例示的な文書に対応する例示的なツリーを示す図である。
【図６】図２の表示領域の視覚的レイアウトツリーを示す図である。
【図７】図３の表示領域の視覚的レイアウトツリーを示す図である。
【図８】いくつかの実施形態におけるコンテンツの流れを示すブロック図である。
【図９】いくつかの実施形態におけるレイアウトエンジンの構成要素を示すブロック図である。
【図１０】いくつかの実施形態におけるレイアウトエンジンのコントローラのレイアウト構成要素の処理を示す流れ図である。
【図１１】いくつかの実施形態における通常のレイアウトオブジェクトのレイアウト構成要素の処理を示す流れ図である。
【図１２】いくつかの実施形態における視覚的レイアウトノードキャッシュを示す図である。キャッシュ１２００は、キャッシュストア１２１０およびキャッシュインデックス１２２０を含む。
【図１３】いくつかの実施形態における視覚的レイアウトノードを作成する構成要素の処理を示す流れ図である。
【図１４Ａ】いくつかの実施形態におけるレイアウト中断記録のレイアウトを示すブロック図である。
【図１４Ｂ】レイアウトハンドルの編成を示す図である。
【図１５】いくつかの実施形態におけるレイアウト中断を取り扱うレイアウトオブジェクトのレイアウト構成要素の処理を示す流れ図である。
【図１６】開始位置から行き先位置までのチェスの駒の移動を示す図である。
【図１７】いくつかの実施形態におけるアニメーションに対応するＶＬノードの位置の変化を示すブロック図である。
【図１８】いくつかの実施形態におけるＶＬツリーのアニメーションをセットアップするパスの処理を示す流れ図である。
【図１９】いくつかの実施形態におけるアニメーションを初期化構成要素の処理を示す流れ図である。
【図２０】いくつかの実施形態における視覚的レイアウトハンドルの座標取得構成要素の処理を示す流れ図である。
【図２１】いくつかの実施形態におけるコンテンツのリパレンティングを示す図である。
【図２２】名前付きの点を有する例示的な視覚的記述ツリーを示す図である。
【図２３】数字でない分子および分母を有する分数を示す図である。
【図２４】ＶＤツリーについて生成された例示的なＶＬツリーを示す図である。
【図２５】表示領域における分数のレンダリングを示す図である。
【図２６】いくつかの実施形態における部分再生構成要素の処理を示す流れ図である。
【発明を実施するための形態】
【０００５】
いくつかの実施形態では、レイアウトエンジンは、そのコンテンツが１または複数の表示領域にレンダリングされることになる文書の視覚的記述ツリーの視覚的レイアウトツリーを生成する。視覚的記述ツリーは、文書のコンテンツを、そのコンテンツのフォーマッティングおよび論理的配列とともに記述する。例えば、視覚的記述ツリーは、文書のあるチャプタが、テキストのパラグラフと埋め込まれた画像とを含むと指定することがある。視覚的記述ツリーの視覚的記述ノードは、文書の構成要素の編成を階層的に表す。例えば、視覚的記述ツリーは、そのチャプタの各構成要素（例えばパラグラフまたは画像）についての子視覚的記述ノードを有する、チャプタを表す視覚的記述ノードを含むことがある。パラグラフを表す視覚的記述ノードは、フォーマッティング（例えばフォントタイプ、ズームレベル、および色）を規定する子視覚的記述ノードを有することがある。視覚的レイアウトツリーは、１または複数の表示領域内の文書のレイアウトを規定する。例えば、視覚的レイアウトツリーは、あるチャプタのある画像が、ある表示領域内のある特定の位置（例えば座標（１０、２０））に位置決めされると指定することができる。視覚的レイアウトツリーの視覚的レイアウトノードは、文書のコンテンツのレイアウトを階層的に表す。例えば、視覚的レイアウトツリーは、チャプタの１または複数のパラグラフを含む表示領域を表すコンテナ視覚的レイアウトノードを含むことができる。コンテナ視覚的レイアウトノードは、それが含む各パラグラフについての子視覚的レイアウトノードを有することができ、各パラグラフのテキストがコンテナの表示領域内のどこに位置決めされることになるかを示す位置決め情報を有することができる。レイアウトエンジンは、視覚的記述ツリーを入力として受信し、対応する視覚的レイアウトツリーを生成する。次いで、レンダリングエンジンが、この視覚的レイアウトツリーを入力し、視覚的レイアウトツリーによって規定される文書のレイアウトを表す画素を含むグラフィックスバッファを生成する。
【０００６】
いくつかの実施形態では、レイアウトエンジンは、断片化されていると呼ばれる複数の表示領域にそのコンテンツが表示されることになる視覚的記述ツリーの視覚的レイアウトツリーを生成する。例えば、アプリケーションは、レイアウトエンジンに対して、２つの横に並んだ表示領域に文書が表示されることになると指定することがある。レイアウトエンジンは、この視覚的記述ツリーと表示領域を示す指示とを入力し、各表示領域のサブツリーを有する視覚的レイアウトツリーを生成する。視覚的記述ノードと関連付けられたコンテンツが別個の表示領域に表示されることになる場合には、レイアウトエンジンは、各表示領域の視覚的記述ツリーをトラバースして、そのトラバース（例えば視覚的記述ツリーを下る経路）中のどこで現在の表示領域の処理が終了したかということを、その処理が終了したときの状態を記述する状態情報とともに記録する。これは、レイアウト中断記録と呼ばれる。レイアウトエンジンは、次いで、１つの表示領域についてのレイアウト中断記録を使用して、次の表示領域のレイアウトが開始するはずの視覚的記述ツリー内の始点を示す。最初に、レイアウトエンジンは、文書の始まりである視覚的記述ノードの開始経路を示すようにレイアウト中断記録を設定することができる。文書のコンテンツを含むことになる各表示領域について、レイアウトエンジンは、レイアウト中断記録の経路沿いの視覚的記述ノードから始めて視覚的記述ノードの視覚的記述ツリーを処理し、その視覚的記述ノードについてのレイアウト中断記録によって示される状態に基づいて視覚的記述ノードを処理するための現在の状態を設定する。レイアウトエンジンは、次いで、視覚的レイアウトツリーに、現在の状態下で表示領域に含まれることになる視覚的記述ノードのコンテンツを表す１または複数の視覚的レイアウトノードをポピュレートする。その表示領域で視覚的記述ノードのコンテンツの処理が中断されたときには、レイアウトエンジンは、次の表示領域のレイアウト中断記録に、その視覚的記述ノードの処理のその時点での最新の状態と、その視覚的記述ノードの識別子とを追加する。したがって、視覚的記述ツリー内の経路は、その表示領域で視覚的記述ツリーの処理がどこで中断されたかということの、次の表示領域についてのレイアウト中断記録中に形成される。この経路が、次の表示領域についての処理がどこで開始することになるかを規定する。
【０００７】
いくつかの実施形態では、レイアウトエンジンは、キャッシュされた情報に基づいて文書の視覚的記述ツリーの視覚的レイアウトツリーを生成する。レイアウトエンジンは、文書を表す第１の視覚的レイアウトツリーの視覚的レイアウトノードを作成することによって、第１の視覚的レイアウト文脈に基づいて第１の視覚的レイアウトツリーを生成する。レイアウトエンジンは、視覚的レイアウトノードのコンテンツがレイアウトされることになる領域のサイズ（例えばレイアウト制約）を含むことがあるノード文脈に基づいて生成された視覚的レイアウトノードを生成する。レイアウトエンジンは、作成された視覚的レイアウトノードを、それらのノード文脈とともにキャッシュする。レイアウトエンジンは、次いで、第２の視覚的レイアウト文脈（例えば肖像画書式か風景画書式か）に基づいて、第２の視覚的レイアウトツリーを生成することができる。レイアウトエンジンは、第２の視覚的レイアウトの視覚的レイアウトノードのノード文脈がキャッシュされた視覚的レイアウトノードのノード文脈と一致するときには、そのキャッシュされた視覚的レイアウトノードを第２の視覚的レイアウトツリーに再使用することによって、第２の視覚的レイアウトツリーの視覚的レイアウトノードを生成する。第２の視覚的レイアウトの視覚的レイアウトノードのノード文脈がキャッシュされた視覚的レイアウトノードのノード文脈と一致しないときには、レイアウトエンジンは、その新たなノード文脈の、第２の視覚的レイアウトツリー用の視覚的レイアウトノードを作成する。いくつかの実施形態では、キャッシュされた情報は、レイアウト中断記録も含み、視覚的レイアウトノードが、矛盾のないレイアウト中断記録の文脈で生成されたときにのみ再使用されるようにすることもできる。
【０００８】
いくつかの実施形態では、レイアウトエンジンは、位置決めポインタ（例えば視覚的レイアウトハンドル）を使用する文書の視覚的レイアウトツリーを生成する。レイアウトエンジンは、視覚的レイアウトツリーの視覚的レイアウトノードを作成する。各視覚的レイアウトノードについて、レイアウトエンジンは、視覚的レイアウトノード同士をリンクして視覚的レイアウトツリーを形成する視覚的レイアウトノードの位置決めポインタを生成する。各位置決めポインタは、子視覚的レイアウトノードを指すポインタと、その子視覚的レイアウトノードを親視覚的レイアウトノードの文脈（例えば座標空間）内で位置決めするための位置決め情報とを有し、親視覚的レイアウトノードの文脈内での子視覚的レイアウトノードのポジションが、視覚的レイアウトノードを再作成する必要なく変更され得るようになっている。
【０００９】
いくつかの実施形態では、レイアウトエンジンは、視覚的レイアウトツリーの視覚的レイアウトノードの位置決め情報の変更を検出し、その変更を使用して、表示領域内の開始位置からその表示領域内の行き先位置までの視覚的レイアウトノードのコンテンツの移動をアニメーション化することができる。レイアウトエンジンは、視覚的レイアウトノードと、視覚的レイアウトノード同士の間の親／子関係を指定する視覚的レイアウトハンドルとを有する視覚的レイアウトツリーを記憶する。視覚的レイアウトハンドルは、子視覚的レイアウトノードおよびそれの親視覚的レイアウトノードへの参照を、子視覚的レイアウトノードのそれの親視覚的レイアウトノードの座標空間内での位置を示す位置決め情報とともに有する。各子視覚的レイアウトノードは、それを参照する視覚的レイアウトハンドルへのバック参照を有する。レイアウトエンジンは、移動された子視覚的レイアウトノードがそれの親視覚的レイアウトノードの座標空間内の開始位置からそれの親視覚的レイアウトノードの座標空間内の行き先位置まで移動されている修正された視覚的レイアウトツリーを生成する。レイアウトエンジンは、移動された子視覚的レイアウトノードおよび同じ親視覚的レイアウトノードへの参照を、行き先位置を指定する新たな位置決め情報とともに有する、新たな視覚的レイアウトハンドルを生成する。移動された子視覚的レイアウトノードのバック参照が新たに生成された視覚的レイアウトハンドルとは異なる視覚的レイアウトハンドルを参照することを検出すると、レイアウトエンジンは、移動された視覚的レイアウトノードが移動されていることを示す。両視覚的レイアウトハンドルが同じ親視覚的レイアウトノードへの参照を有するので、レイアウトエンジンは、開始位置と行き先位置とが同じ親視覚的レイアウトノードの座標空間内にあることを検出することができる。
【００１０】
いくつかの実施形態では、レイアウトエンジンは、ストーリーボードを初期化して開始位置から行き先位置までの座標の経路を生成し、新たな視覚的レイアウトハンドルをアニメーションが進行中であることを示すように設定することによって、コンテンツの移動をアニメーション化する。レンダリングエンジンが、新たな視覚的レイアウトハンドルについての位置決め情報を要求するときには、レンダリングエンジンは、ストーリーボードにアクセスして、開始位置から行き先位置までの経路沿いの点の座標を取り出す。したがって、レンダリングエンジンが表示されることになるフレームを連続的に生成するときには、視覚的レイアウトノードについての様々な位置決め情報が生成され、レンダリングエンジンが、グラフィックスバッファ内の連続的な異なる位置にコンテンツをレンダリングすることができるようにする。
【００１１】
いくつかの実施形態では、レイアウトエンジンは、文書のコンテンツをレンダリングする際に使用されるように仮想化された視覚的レイアウトツリーを生成する。レイアウトエンジンは、文書内のアンカ点を受け取る。アンカ点は、視覚的記述ツリー内の視覚的記述ノード、および識別された視覚的記述ノードのコンテンツ内の名前付きの点を識別する。名前付きの点は、例えば、測定されたサイズの右下の隅など、測定されたサイズの四角形（例えばコンテンツの外接長方形）上にあることがある。名前点は、また、コンテンツのタイプに特有であることもある。例えば、時計の面を表すコンテンツは、１２時間のそれぞれについて名前付きの点を有することもある。レイアウトエンジンは、またアンカ点と関連付けられたコンテンツがその中に位置決めされることになる表示領域内の目標位置を受け取る。電子書籍リーダアプリケーションを使用して文書を読んでいる人が、図面のインデックスから時計の図面を選択することもあり、電子書籍リーダアプリケーションが、レイアウトエンジンに、「１０時」という名前を付けられた点を表示領域内の特定の位置に置いて文書の一部分を表示領域上にレンダリングするための視覚的レイアウトツリーを生成するように指示することもある。レイアウトエンジンは、視覚的記述ツリーのルートから識別された視覚的記述ノードまでの経路に沿って視覚的記述ツリーをトラバースする。トラバースしている間に、レイアウトエンジンは、その経路に沿った視覚的記述ノードの視覚的レイアウトノード、および識別された視覚的記述ノードのコンテンツを表す識別された視覚的記述ノードの視覚的レイアウトノードを生成する。レイアウトエンジンは、次いで、ルート視覚的レイアウトノードから識別された視覚的記述ノードについて生成された視覚的レイアウトノードまでの経路に沿った視覚的レイアウトノードについての位置決め情報を生成して、コンテンツの名前点が表示領域内の目標位置に位置決めされるようにする。識別された視覚的記述ノードのコンテンツが表示領域を埋めないときには、レイアウトエンジンは、識別された視覚的記述ノードに隣接する視覚的記述ノードの視覚的レイアウトノードを生成して、文書全体の視覚的レイアウトノードを生成する必要なく、表示領域をコンテンツで埋める。
【００１２】
いくつかの実施形態では、文書のコンテンツは、３次元オブジェクトとして表されることがある。例えば、文書が三角柱を含む場合には、その文書の視覚的記述ツリーは、三角柱を指定する視覚的記述ノードを含むことがある。視覚的レイアウトノードについての位置決め情報は、ピッチ、ロール、およびヨーなどの三角柱の３次元回転、および三角柱の３次元平行移動を指定することがある。レンダリングエンジンが三角柱をレンダリングするときには、レンダリングエンジンは、指定された回転を適用し、２次元表面上への投影を生成する。文書が三角柱の３つの側面の上にレンダリングされることになるテキストを含む場合には、視覚的記述ツリーは、それらの側面のためのテキストを表す３つのパラグラフの視覚的記述ノードを含むことがある。視覚的レイアウトツリーを生成するときには、レイアウトエンジンは、三角柱の視覚的レイアウトノードと、３つのパラグラフが２次元テクスチャとして三角柱のそれらの側面に適用されることになることを示す視覚的レイアウトノードとを生成する。三角柱は、３つの側面および２つの端面のそれぞれについての子視覚的記述ノードを有する三角柱の視覚的記述ノードを有する視覚的記述ツリーに表されることがある。３つの側面のそれぞれに対応する視覚的記述ノードは、その側面上に出現することになるパラグラフを表す子視覚的記述ノードを有する。レンダリングエンジンは、ピッチ、ロール、およびヨーに従って、その柱の目に見える側面に基づいて、対応するテクスチャを有する三角柱をレンダリングする。いくつかの実施形態では、文書のコンテンツは、２次元オブジェクトの３次元回転を指定することがある。例えば、テキストを含むパラグラフが、４５度のピッチ（すなわちｘ軸周りの回転）を示す位置決め情報を有することがある。このような場合には、レンダリングエンジンは、そのパラグラフのテキストを、表示領域に対して４５度の角度をなす表面上に配置されているかのようにレンダリングする。
【００１３】
いくつかの実施形態では、視覚的レイアウトツリーは、ディスプレイ上の指定された位置に対応するコンテンツを識別するための３次元ヒットテストに対応するように使用されることがある。例えば、その側面上にテキストを有する三角柱を含む文書を編集するときに、ユーザが、ディスプレイ上のテキストのある文字の外接長方形内の位置を指すことがある。選択された文字を含む三角柱の対応する面、およびその面内の指された位置のポジションは、その柱の回転を含む位置決め情報から決定され得る。
【００１４】
図１は、例示的な文書のコンテンツ全体を表示するのに十分に大きな表示領域内の例示的な文書の表示を示す図である。この例示的な文書は、パラグラフ１、２および３を含む。パラグラフ１は、テキスト１．１、画像１．２、およびテキスト１．３を含み、パラグラフ２は、テキスト２．１および画像２．２を含み、パラグラフ３は、テキスト３．１を含む。ディスプレイデバイス１００は、ディスプレイデバイスの表示可能領域全体（例えばスマートフォンのスクリーン）、またはディスプレイデバイスの一部分（例えば例示的な文書を表示するウィンドウ）に対応する可能性がある表示領域１１０を含む。この表示領域１１０のサイズにより、パラグラフ１、２および３（すなわち文書全体）は、同時に表示される。
【００１５】
図２は、例示的な文書のコンテンツ全体を表示するのに十分な大きさではない表示領域内の例示的な文書の表示を示す図である。ディスプレイデバイス２００は、表示領域２１０および２２０を含む。表示領域は、ページが水平にスクロールする、例示的な文書のスクロール可能なページビューに対応することがある。例示的な文書の第１の部分は、表示領域２１０に表示され、第２の部分は、表示領域２２０に表示され、第３の部分は、表示されない。パラグラフ１は表示領域２１０内に収まることができないので、パラグラフ１の第１の部分は表示領域２１０に表示され、パラグラフ１の残りの第２の部分は、表示領域２２０に表示される。テキスト１．１は表示領域２１０内に収まることができないので、テキスト１．１．１と呼ばれるテキスト１．１の第１の部分が、表示領域２１０に表示される。テキスト１．１．２と呼ばれるテキスト１、１の残りの第２の部分は、パラグラフ１の残りとともに表示領域２２０に表示される。表示領域２１０および２２０がディスプレイデバイス２２０上に同時に表示されるものとして示されているが、表示領域は、例示的な文書の一部分のみが一度に表示され得る小型のディスプレイデバイスの全領域（例えば表示領域を１つしか有さないスクロール可能なビュー）を表すこともある。
【００１６】
図３は、例示的な文書のコンテンツ全体を表示するのに十分な大きさではない表示領域内の修正された例示的な文書の表示を示す図である。この例示的な文書は、画像１．２が９０度回転されるように修正されている。ディスプレイデバイス３００は、表示領域３１０および３２０を含む。表示領域３１０は、表示領域２１０のコンテンツと同じコンテンツを表示する。表示領域３２０は、テキスト１．１．２および回転された画像１．２を表示する。画像１．２が回転されているので、テキスト１．３は、テキスト１．１．２および画像１．２と同じ表示領域に収まることができなくなる。ディスプレイデバイスが表示領域３３０も含む場合には、テキスト１．３は、破線で示されるように、表示領域３３０の一部としてレイアウトされることになる。
【００１７】
図４は、いくつかの実施形態における例示的な文書の編成を示す図である。レイアウトエンジンによって入力される文書は、その文書のコンテンツおよびフォーマッティングを含む、視覚的記述ツリーまたはＶＤツリーと呼ばれるツリーデータ構造として記憶される。ＶＤツリー４００は、それらがＶＤツリーのノードであることを示すＶＤノードと呼ばれるノード４０１〜４１２を含む。各ＶＤノードは、文書の編成ユニットまたは編成ユニットと関連付けられたフォーマッティングの関連付けられたタイプを有する。編成ユニットのタイプは、ポータル、水平リスト、垂直リスト、チャプタ、インデックス、パラグラフ、テキスト、画像、グラフ、マップ、脚注などを含み得る。フォーマッティングタイプは、ＶＤノードがそれの親編成ユニットについてのフォーマッティング情報を含むことを示す。ＶＤノード４０１は、ルートタイプであり、文書全体を表す。ＶＤノード４０２は、ポータルタイプであり、それの子ノードが単一のポータルにレイアウトされることになることを表す。ＶＤノード４０３は、それの子ノードの水平リストタイプである。ＶＤノード４０４は、ページタイプであり、それの子ノード（すなわち非フォーマッティングノード）がページとしてレイアウトされることになることを表す。ＶＤノード４０５および４０６は、パラグラフタイプであり、それらの子ノードが別個のパラグラフとしてレイアウトされることになることを表す。ＶＤノード４０５は、例示的な文書のパラグラフ１に対応する。ＶＤノード４０７および４０９は、テキストタイプであり、ＶＤノード４０５によって表されるパラグラフのテキストを表す。パラグラフのテキストが様々なフォーマッティング特徴（例えば強調表示）を有する場合には、そのパラグラフのＶＤノードは、同じフォーマッティングを有するテキストの範囲のそれぞれについて、子ＶＤノードを有することができる。ＶＤノード４０８は、画像タイプであり、ＶＤノード４０５によって表されるパラグラフ内の画像を表す。ＶＤノード４０７、４０８および４０９は、テキスト、テキストへの参照、または対応するテキストへのその他の何らかのマッピングを含むことによって、テキストを表すことができる。ＶＤノード４１０、４１１および４１２は、フォーマッティングタイプであり、それらの親ノードに適用されるフォーマッティングを表す。例えば、ＶＤノード４１０は、各ページが特定のタイプの境界またはマージン幅を有することになると示すことがある。ＶＤノード４１１は、ＶＤノード４０５によって表されるパラグラフについての第１行目の字下げ、行間隔、フォントタイプなどを示すことがある。ＶＤノード４１２は、ＶＤノード４０７によって表されるテキストについてのフォントタイプを示すことがあり、このフォントタイプは、ＶＤノード４１１によって示されるフォントタイプをオーバライドすることができる。
【００１８】
レイアウトエンジンは、ＶＤツリーを入力し、そのコンテンツを表示領域内に表示するためのレイアウト情報を有する文書のコンテンツを含む、ＶＬツリーと呼ばれる視覚的レイアウトツリーを生成する。次いで、レンダリングエンジンが、このＶＬツリーを入力し、ＶＬツリーのレイアウト情報に従ってＶＬツリーのコンテンツをレンダリングする。ＶＤツリーは、文書が全体としてどのようにレイアウトされるかを概念的に記述する。それに対して、ＶＬツリーは、特定の表示領域へのコンテンツの実際のレイアウトを記述する。ＶＬツリーは、それらがＶＬツリーのノードであることを示すＶＬノードと呼ばれる視覚的レイアウトノードを含む。ＶＬノードは、コンテンツが位置付けられることになる場所の座標を指定する。親ＶＬノードは、座標空間（例えば１０２４×１０２４）を有し、各子ＶＬノードのコンテンツがその座標空間内で位置決めされることになる場所を指定する。各子ＶＬノードも、それ自体の座標空間（例えば２５６×２５６）を有し、この座標空間は、それの子ＶＬノードのそれぞれのコンテンツがどこに位置決めされることになるかを順番に指定する。レイアウトエンジンは、その座標空間の間のマッピングを行う。
【００１９】
図５は、いくつかの実施形態における例示的な文書に対応する例示的なツリーを示す図である。レイアウトエンジンは、ＶＤツリー４００によって表される例示的な文書を表示領域１１０内にレンダリングするためのＶＬツリー５００を生成する。ＶＬツリー５００は、コンテナタイプ、グラフィックスタイプ、グラフィカルオブジェクトタイプ（「ｇｏｂ」）などである可能性があるＶＬノードを含む。コンテナタイプのＶＬノードは、子ＶＬノードのグループ化を表し、グラフィックスタイプのＶＬノードは、コンテンツのタイプ（例えばテキストまたは画像）を表し、グラフィカルオブジェクトタイプのＶＬノードは、それの親ＶＬノードのコンテンツを表す。ＶＬノード５０１〜５０６は、ＶＤノード４０１〜４０６に対応するコンテナノードである。ＶＬノード５０７および５１０は、ＶＤノード４０７に対応し、ＶＬノード５０８および５１１は、ＶＤノード４０８に対応し、ＶＬノード５０９および５１２は、ＶＤノード４０８に対応する。ＶＬノード５０７〜５０９は、テキストまたは画像コンテンツのグラフィックスノードである。ＶＬ５１０〜５１２は、文書のコンテンツを表す。ＶＬノード５０５は、パラグラフＶＤノード４０５に対応するので、ＶＬノード５１０〜５１２は、そのパラグラフ（すなわちパラグラフ１）のコンテンツを表す。いくつかの実施形態では、ＶＬノード５０７〜５０９は、それらの子ＶＬノードとマージされ得る。そのような場合には、ＶＬノード５０７〜５０９は、コンテンツ、またはそのコンテンツへの参照を含むことができる。
【００２０】
ＶＬツリーのＶＬノード同士の間の有向リンクは、視覚的レイアウトハンドルと呼ばれるオブジェクトによって表される。視覚的レイアウトハンドルは、子ＶＬノードへの参照を、その子ＶＬノードについての位置決め情報および色情報などの何らかのフォーマッティング情報とともに含む。図１４Ｂは、視覚的レイアウトハンドルの編成を示す図である。位置決め情報は、ＶＬノードによって表されるコンテンツを親ＶＬノードの座標空間内に配置するためのｘ、ｙおよびｚ座標を含むことができる。位置決め情報は、コンテンツをどのように配向するかについての配向情報（例えば９０度回転させる）、コンテンツを親ＶＬノードの座標空間内でどのようにスケーリングするかについてのスケーリング情報（例えば１５０％）、およびｚ次関連情報も含むことができる。例えば、ＶＬノード５０４からＶＬノード５０５を指す視覚的レイアウトハンドルは、パラグラフ１が、ＶＬノード５０４の座標空間内の座標（１２０、１０）に位置決めされ、ゼロ度回転されることになることを示すことができる。
【００２１】
文書が複数の表示領域にレンダリングされることになるときには、レイアウトエンジンは、各表示領域に文書の一部分をレンダリングするためのＶＬノードを含む各表示領域ごとのサブツリーを有するＶＬツリーを生成することができる。図６は、図２の表示領域の視覚的レイアウトツリーを示す図である。ＶＬツリー６００は、ＶＬノード５０１〜５０４に対応するＶＬノード６０１〜６０４を含む。ＶＬノード６０５は、表示領域２１０のコンテンツに対応するサブツリーのルートノードであり、ＶＬノード６０６は、表示領域２２０のコンテンツに対応するサブツリーのルートノードである。パラグラフ１が表示領域２１０内に収まらないので、ＶＬノード６０５のコンテンツは、テキスト１．１．１のコンテンツのみを含み、ＶＬノード６０６のコンテンツが、パラグラフ１の残りの部分を含む。
【００２２】
図７は、図３の表示領域の視覚的レイアウトツリーを示す図である。この例では、画像１．２は、９０度回転されている。ＶＬツリー７００は、ＶＬノード５０１〜５０４に対応するＶＬノード７０１〜７０４を含む。ＶＬノード７０５は、表示領域３１０のコンテンツに対応するサブツリーのルートノードであり、ＶＬノード７０６は、表示領域３２０のコンテンツに対応するサブツリーのルートノードであり、ＶＬノード７０７は、図３には表示されていない表示領域３３０のコンテンツに対応するサブツリーのルートノードである。ＶＬノード７１０および７１４は、ＶＬノード６１０および６１４のコンテンツと同じコンテンツを有することができるが、９０度の回転が、ＶＬノード７０６からＶＬノード７１０の視覚的レイアウトハンドルによって表されている。レンダリングエンジンがＶＬノード７１０を処理するときには、それは、視覚的レイアウトハンドルによって示されるようにコンテンツを回転させる。
【００２３】
図８は、いくつかの実施形態におけるコンテンツの流れを示すブロック図である。アプリケーション８０１は、レンダリングされることになるコンテンツを表すＶＤツリーを生成する。レイアウトエンジン８０２は、このＶＤツリーを入力し、対応するＶＬツリーを生成する。各ＶＤノードごとに、レイアウトエンジンは、そのＶＤノードのタイプの視覚的レイアウトオブジェクトをインスタンス化する。例えば、レイアウトエンジンは、パラグラフを表すＶＤノードのパラグラフタイプの視覚的レイアウトオブジェクトをインスタンス化する。次いで、レイアウトエンジンは、視覚的レイアウトオブジェクトのレイアウト構成要素を呼び出して、対応するＶＬノードを生成する。ＶＤノードの新たなタイプが規定される、または既存のレイアウトオブジェクトの挙動が変更されるときには、その所望の挙動を実施する新たな視覚的レイアウトオブジェクトが、レイアウトエンジンに提供されることができる。レイアウトエンジンは、ＶＤツリーのトラバース中に視覚的レイアウトオブジェクトのレイアウト構成要素を再帰的に呼び出すことができる。レイアウトエンジンは、最初に、ＶＤツリーのルートＶＤノードの視覚的レイアウトオブジェクトのレイアウト構成要素を呼び出す。このレイアウト構成要素は、レイアウトエンジンに、ルートＶＮノードの子ＶＤノードの視覚的レイアウトオブジェクトのレイアウト構成要素を呼び出すように要求する。親ＶＤノードの代わりにレイアウト構成要素を呼び出すときには、レイアウトエンジンは、その領域のサイズに対応する四角形を表示領域内に提供する。レイアウト構成要素は、対応するＶＬノードを生成し、それがそれのコンテンツをレイアウトするために使用した四角形の量をレイアウトエンジンに戻す。レイアウトエンジンは、残りの四角形のサイズを、親ＶＤノードのレイアウト構成要素に戻して、他の子ＶＤノードに対応するレイアウト構成要素を呼び出すか、またはそのサイズをそれの親ＶＤノードのレイアウト構成要素に戻すかを、そのレイアウト構成要素が決定することができるようにする。レンダリングエンジン８０３は、ＶＬツリーを入力し、対応するコンテンツをディスプレイ８０４に出力するためにグラフィックスバッファに対してレンダリングする。
【００２４】
図９は、いくつかの実施形態におけるレイアウトエンジンの構成要素を示すブロック図である。レイアウトエンジン９００は、コントローラレイアウト構成要素９０１、Ｌオブジェクトレイアウト構成要素９０２、部分再生構成要素９０３、ＶＬノードを作成する構成要素９０４、アニメーションをセットアップする構成要素９０５、アニメーション初期化構成要素９０６、およびＶＬノードキャッシュ９０７を含む。コントローラレイアウト構成要素は、ＶＤツリーのＶＬツリーを生成するために呼び出される。各Ｌオブジェクトレイアウト構成要素は、ＶＬノードに対応するＶＬノードを生成するために呼び出される。部分再生構成要素は、どのＶＤノードが修正されているかを示すＶＤノードについての注釈に基づいてＶＬツリーの一部分を再生するために呼び出される。ＶＬノード作成構成要素は、ＶＬノードを作成する、またはキャッシュされたＶＬノードへの参照を戻す。アニメーションセットアップ構成要素およびアニメーション初期化構成要素は、ＶＬツリーのレンダリングのアニメーションを制御する。
【００２５】
レイアウトエンジンが実装され得るコンピューティングデバイスおよびシステムは、中央処理装置、入力デバイス、出力デバイス（例えばディスプレイデバイスおよびスピーカ）、記憶デバイス（例えばメモリおよびディスクドライブ）、ネットワークインタフェース、グラフィック処理ユニット、加速度計、セルラ無線リンクインタフェース、全地球測位システムデバイスなどを含み得る。入力デバイスは、キーボード、ポインティングデバイス、タッチスクリーン、ジェスチャ認識デバイス（例えば空中ジェスチャ用）、ヘッドおよびアイトラッキングデバイス、音声認識用のマイクロフォンなどを含み得る。コンピューティングデバイスは、デスクトップコンピュータ、ラップトップ、タブレット、電子書籍リーダ、携帯情報端末、スマートフォン、ゲームデバイス、サーバ、および超並列システムなどのコンピュータシステムを含み得る。コンピューティングデバイスは、コンピュータ可読記憶媒体およびデータ伝送媒体を含むコンピュータ可読媒体にアクセスすることができる。コンピュータ可読記憶媒体は、一時的な伝搬信号を含まない有形記憶手段である。コンピュータ可読記憶媒体の例は、一時メモリ、キャッシュメモリ、および２次メモリ（例えばＤＶＤ）などのメモリを含み、その他の記憶手段も含む。コンピュータ可読記憶媒体は、レイアウトエンジンを実装するコンピュータ実行可能命令または論理を記録している、またはレイアウトエンジンを実装するコンピュータ実行可能命令または論理で符号化されていることもある。データ伝送媒体は、有線または無線の接続を介して一時的な伝搬信号または搬送波（例えば電磁気）を介してデータを伝送するために使用される。
【００２６】
レイアウトエンジンは、１または複数のコンピュータ、プロセッサ、またはその他のデバイスによって実行されるプログラムモジュールおよび構成要素など、コンピュータ実行可能命令の一般的文脈で説明され得る。一般に、プログラムモジュールまたは構成要素は、特定のタスクを実行する、または特定のデータタイプを実装する、ルーチン、プログラム、オブジェクト、データ構造などを含む。通常は、プログラムモジュールの機能性は、様々な実施態様で望ましいように結合または分散され得る。レイアウトエンジンの態様は、例えば特定用途向け集積回路（「ＡＳＩＣ」）を使用して、ハードウェアで実装され得る。
【００２７】
図１０は、いくつかの実施形態におけるレイアウトエンジンのコントローラのレイアウト構成要素の処理を示す流れ図である。レイアウト構成要素１０００は、ＶＤツリーのＶＬツリーが生成されるときに呼び出される。例えば、文書を修正し、したがってＶＤツリーを修正するアプリケーションは、この構成要素を呼び出して、修正された文書をレンダリングするためのＶＬツリーを再生することができる。このレイアウト構成要素は、この文書および表示領域のＶＤツリーへのアクセスを有する。この図示される処理では、この構成要素は、表示領域が文書全体を含むのに十分に大きいと仮定する。ブロック１００１で、この構成要素は、ルートＶＤノードを取り出す。ブロック１００２で、この構成要素は、ルートＶＤノードのＬオブジェクトを作成する。Ｌオブジェクトは、特定のタイプのＶＤノードのＶＬノードを生成する挙動を実施する。例えば、パラグラフのＬオブジェクトは、パラグラフに特有の挙動を実施する。ブロック１００３で、この構成要素は、このＬオブジェクトをルートＶＤノードを指すように設定する。各Ｌオブジェクトは、最終的に、それの対応するＶＤノードおよびＶＬノードを指すことになる。ブロック１００４で、この構成要素は、作成されたＬオブジェクトのレイアウト構成要素を呼び出し、完了する。
【００２８】
図１１は、いくつかの実施形態における通常のレイアウトオブジェクトのレイアウト構成要素の処理を示す流れ図である。構成要素１１００は、このＬオブジェクトのＶＤノードに対応するサブツリーのＶＬノードを生成する。ブロック１１０１〜１１０４で、この構成要素は、ＶＬノードを作成し、このＶＬノードをＶＬツリー内にリンクする。ブロック１１０１で、この構成要素は、このＬオブジェクトのＶＤノードに特有のＶＬノードを作成する。例えば、ＶＤノードがテキストタイプである場合には、この構成要素は、テキストを表すグラフィックスＶＬノードを作成する。ブロック１１０２で、この構成要素は、このレイアウトオブジェクトを、ＶＬノードを参照するように設定して、このレイアウトオブジェクトがＶＤノードおよびそれの対応するＶＬノードの両方を参照するようにする。ブロック１１０３で、この構成要素は、このＶＬノードの視覚的レイアウトハンドルを作成する。ブロック１１０４で、この構成要素は、そのＶＬノードがＶＬツリーのルートであるとき以外は、この視覚的レイアウトハンドルを親ＶＬノードに追加する。ブロック１１０５〜１１１０で、この構成要素は、このＬオブジェクトのＶＤノードの各子の処理をループする。ブロック１１０５で、この構成要素は、次の子ＶＤノードを選択する。判定ブロック１１０６で、全ての子ＶＤノードが既に選択されている場合には、この構成要素は完了し、そうでない場合には、この構成要素は、ブロック１１０７に進む。ブロック１１０７で、この構成要素は、その子ＶＤノードのタイプのＬオブジェクトを作成する。ブロック１１０８で、この構成要素は、作成されたＬオブジェクトを、選択されたＶＤノードを指すように設定する。ブロック１１０９で、この構成要素は、Ｌオブジェクトのタイプに特有の処理を実行する。例えば、ＬオブジェクトがテキストＶＤノードを表す場合には、この構成要素は、テキストのグリフを生成し、グラフィカルオブジェクトタイプのＶＬノードを追加し、それらのグリフへの参照をＶＬノードに追加することができる。グリフを生成するときには、この構成要素は、ＶＤノードおよびそれの先祖ＶＤノードのフォーマッティング情報を考慮に入れる。この構成要素は、オペレーティングシステムの標準的な機能を呼び出して、グリフを生成することができる。ブロック１１１０で、この構成要素は、新たに作成されたＬオブジェクトのレイアウト構成要素を呼び出して、ＶＬツリーの選択された子ＶＤノードに対応する部分を生成し、次いで、ブロック１１０６にループして、次の子ＶＤノードを選択する。レイアウト構成要素は、それの子Ｌオブジェクトのレイアウト構成要素を直接呼び出すものとして示されているが、その代わりに、レイアウト構成要素は、それに代わってそれの子Ｌオブジェクトのレイアウト構成要素を呼び出すようにレイアウトエンジンに要求してもよい。このような要求は、レイアウトエンジンが、レイアウトプロセスの制御権を有し、レイアウトプロセスの全体的な制御を提供し、他の状態では各タイプのＬオブジェクトによって実行される必要があるはずの処理を実行することを可能にする。例えば、レイアウトエンジンは、視覚的レイアウトハンドル内の位置決め情報を更新することができる。
【００２９】
図１２は、いくつかの実施形態における視覚的レイアウトノードキャッシュを示す図である。キャッシュ１２００は、キャッシュストア１２１０およびキャッシュインデックス１２２０を含む。キャッシュストアは、作成されているＶＬノードに対応するエントリを含む。ＶＬツリーが再生されたとき（例えば表示が肖像画ビューから風景画ビューに回転されたとき）には、新たに生成されたＶＬツリーの複数の部分が、以前のＶＬツリーと同じであることがある。このような場合には、レイアウトエンジンは、キャッシュのそれらのＶＬノードを、再生する必要なく、再使用することができる。レイアウトエンジンは、キャッシュストア内にＶＬノードを作成する。レイアウトエンジンは、ＶＬノードを作成するレイアウト構成要素が呼び出されたときに、レイアウトプロセスの現在の状態に基づいてそのＶＬノードを作成する。例えば、現在の状態は、対応するＶＤノードを識別する情報、要求四角形、レイアウト文脈（例えばフォーマッティング情報）、レイアウト中断記録などの組合せであることがある。レイアウトエンジンは、それぞれのキャッシュされたＶＬノードに、そのＶＬノードが作成されたときの現在の状態を識別するキャッシュキーを割り当てる。ＶＬツリーが再生されたときには、キャッシュは、同じ状態を有するＶＬノードがないか探索され得る。このようなＶＬノードが見つかった場合には、それが再使用され得る。そうでない場合には、レイアウトエンジンは、キャッシュ中に新たなＶＬノードを生成する。一致するキャッシュキーを有するＶＬノードの探索を容易にするために、レイアウトエンジンは、キャッシュキーをキャッシュストア（またはキャッシュ記憶装置）内の対応するＶＬノードにマッピングするキャッシュインデックスに、キャッシュキーを記憶する。キャッシュインデックスは、ハッシュテーブル、ツリーデータ構造など、様々なデータ構造を使用して編成され得る。
【００３０】
図１３は、いくつかの実施形態における視覚的レイアウトノードを作成する構成要素の処理を示す流れ図である。構成要素１３００は、キャッシュを確認して、同じ状態についてＶＬノードが既に作成されているかどうかを調べる。既に作成されている場合には、この構成要素は、そのＶＬノードを再使用し、そうでない場合には、この構成要素は、キャッシュ内にＶＬノードを作成する。ブロック１３０１で、この構成要素は、レイアウト処理の現在の状態に基づいてキャッシュキーを作成する。ブロック１３０２で、この構成要素は、一致するキャッシュキーがないかキャッシュを確認する。判定ブロック１３０３で、一致するキャッシュキーが見つかった場合には、この構成要素は、キャッシュ内のそのＶＬノードを指す対応するポインタを戻し、そうでない場合には、この構成要素は、ブロック１３０４に進む。ブロック１３０４で、この構成要素はキャッシュ内にＶＬノードを作成する。ブロック１３０５で、この構成要素は、キャッシュキーを新たに作成されたＶＬノードオブジェクトを指すポインタにマッピングするようにキャッシュインデックスを更新し、次いで、ポインタを戻す。
【００３１】
レイアウト中断
図１４Ａは、いくつかの実施形態におけるレイアウト中断記録のレイアウトを示すブロック図である。レイアウト中断記録１４００は、現在の表示領域内に完全に収まることができないＶＤツリー中の経路の現在の状態を含む。各Ｌオブジェクトは、それのＶＤノードのどの部分がレイアウトされたかを示すレイアウト停止記録を戻す。レイアウト停止記録は、ＶＤノードが完全にレイアウトされたときに「終了」を示すことができ、またはレイアウトが停止したときの現在の状態を示すレイアウト中断記録であってもよい。親Ｌオブジェクトが、子ＶＤノードが完全にレイアウトされていないことを示す停止レイアウト中断記録を受け取ったときには、親Ｌオブジェクトは、その子ＶＤノードの識別子およびそれ自体の現在の状態を、レイアウト中断停止記録に追加し、レイアウト停止記録をそれの親Ｌオブジェクトに戻す。レイアウト中断記録は、子状態１４０１、子識別子１４０２、非子状態１４０３、親識別子１４０４、および非子状態１４０５を含む。子状態１４０１は、親Ｌオブジェクトに戻され、親Ｌオブジェクトは、子識別子１４０２と、親Ｌオブジェクトの現在の状態である非子状態１４０３とを追加した。親状態１４０６は、祖父母Ｌオブジェクトに戻され、祖父母Ｌオブジェクトは、親識別子１４０４と、祖父母の現在の状態である非子状態１４０５とを追加した。祖父母状態１４０７は、次いで曾祖父母Ｌオブジェクトに戻され、以下同様のことが、ルートノードに対応するＬオブジェクトが遭遇されるまで行われた。いくつかの実施形態では、子ＶＤノードのレイアウトが完了されていないことを示す指示を受け取ったときに、親Ｌオブジェクトは、それの他の子ＶＤノードを処理し続けることができる。このような場合には、各子Ｌオブジェクトは、それ自体の現在の状態を戻すことができ、親Ｌオブジェクトは、そのレイアウトが完了されなかった各子Ｌオブジェクトの子識別子および状態を含むレイアウト中断記録を生成する。
【００３２】
Ｌオブジェクトが呼び出されたときに、それの親Ｌオブジェクトは、対応するＶＤノード中のどこでレイアウトが開始すべきであるのかを示すレイアウト開始記録を渡す。通常は、レイアウト開始記録は、ＶＤノードの開始を示すことになる。レイアウト開始記録がレイアウト中断記録である場合には、呼び出されたＬオブジェクトは、それの状態をレイアウト中断記録の状態に設定し、それが最後に中断したところから引き続きＶＤノードをレイアウトする。
【００３３】
図１５は、いくつかの実施形態におけるレイアウト中断を取り扱うレイアウトオブジェクトのレイアウト構成要素の処理を示す流れ図である。この流れ図は、この例ではレイアウト中断記録であるレイアウト開始記録を取り扱うだけのレイアウト構成要素の処理を示している。１５００構成要素は、レイアウト中断記録を渡され、レイアウトが中断された場合にはレイアウト中断記録であるレイアウト停止記録を戻す。ブロック１５０１〜１５０９で、この構成要素は、各子ＶＤノードの選択をループする。ブロック１５０１で、この構成要素は、次の子ＶＤノードを選択する。判定ブロック１５０２で、全ての子ＶＤノードが既に選択されている場合には、この構成要素は完了し、そうでない場合には、この構成要素は、ブロック１５０３に進む。判定ブロック１５０３で、ＶＤノードの識別子がレイアウト開始記録中にある場合には、この構成要素は、ブロック１５０４に進み、そうでない場合には、この構成要素は、ブロック１５０６に進む。ブロック１５０４で、この構成要素は、レイアウト開始記録からＶＤノードの状態を抽出する。ブロック１５０５で、この構成要素は、子ＶＤノードのレイアウト開始記録を、抽出された状態に設定する。ブロック１５０６で、この構成要素は、子ＶＤノードのレイアウト開始記録を、始めから開始するように指示するように設定する。ブロック１５０７で、この構成要素は、子ＶＤノードのレイアウト構成要素を呼び出して、子ＶＤノードのレイアウト開始記録を渡す。判定ブロック１５０８で、呼び出されたレイアウト構成要素が、レイアウトが子ＶＤノードの終端で停止したことを示すレイアウト停止記録を戻す場合には、この構成要素は、ブロック１５０１にループして、次の子ＶＤノードを選択し、そうでない場合には、この構成要素は、ブロック１５０９に進む。ブロック１５０９で、この構成要素は、子ＶＤノードの識別子と、任意選択で、その構成要素が子ＶＤノードのレイアウトを再開する必要がある可能性があるという任意の状態情報とを、レイアウト停止記録に追加する。この構成要素は、次いで、ブロック１５０１にループして、次の子ＶＤノードを選択する。
【００３４】
アニメーション
いくつかの実施形態では、レイアウトエンジンは、文書の第１のバージョンからその文書の第２のバージョンへの動きのレンダリングにおいて自動アニメーションを提供する。例えば、チェスゲームアプリケーションは、チェス盤上のチェスの駒の現在のポジションに対応する、文書の様々なバージョンを生成することができる。プレイヤが、あるチェスの駒を１つの位置から別の位置に移動することを示したときに、レイアウトエンジンは、その動きが自動的にアニメーション化されて、単にそのチェスの駒がその別の位置に突然現れるようにするのではなく、そのチェスの駒がその別の位置に徐々に移動するように示すことができる。このアプリケーションが文書の第２のバージョンを生成すると、レイアウトエンジンは、そのチェスの駒の変化された位置を検出し、現在の位置から行き先位置への経路を生成するストーリーボードを初期化し、そのストーリーボードを参照するそのチェスの駒の視覚的レイアウトハンドルを生成する。レンダリング中に、次のフレームをレンダリングするためにその視覚的レイアウトハンドルがレンダリングエンジンによってアクセスされると、視覚的レイアウトハンドルは、ストーリーボードの現在の状態、すなわち現在の位置から行き先位置への経路沿いのポジションに基づいて、位置決め情報を提供する。このようにして、レイアウトエンジンは、アプリケーションがアニメーションの各フレームの視覚的レイアウトツリーを再生する必要なく、アニメーションを提供することができる。
【００３５】
図１６は、開始位置から行き先位置へのチェスの駒の動きを示す図である。チェスゲームアプリケーションは、位置１６１１にルークを含み、開始位置１６１２にナイトを含む、表示領域１６１０のＶＤツリーを生成することができる。チェスプレイヤがナイトを異なる位置に動かすことを示すと、チェスゲームアプリケーションは、表示領域１６３０の視覚的記述ツリーを生成することができる。表示領域１６３０は、ルークが同じ位置１６３１にあるが、ナイトは行き先位置１６３３に移動していることを示す。レイアウトエンジンは、各フレームについての位置決め情報を生成する、ナイトを表すＶＬノードの視覚的レイアウトハンドルを生成して、開始位置１６１２から行き先位置１６３３へのナイトの移動のアニメーションを実現する。表示領域１６２０は、アニメーションの間のナイトの動きを示す。レイアウトエンジンは、レンダリングエンジンが、それが連続したフレームをグラフィックスバッファにレンダリングするときにナイトの動きをアニメーション化することができるように、位置１６２２から位置１６２３までの経路を規定する。
【００３６】
レイアウトエンジンは、行き先位置にＶＬノードを有するＶＬツリーを生成するときの中間パス中のＶＬツリーの検査に基づいて、ＶＬノードが開始位置から行き先位置に動かされたときを検出する。図１７は、いくつかの実施形態でアニメーションに対応するＶＬノードの位置の変化を示すブロック図である。サブツリー１７１０は、表示領域１６１０のＶＬツリーの一部分を表し、ＶＬノード１７１１、１７１２、および１７１３を含む。ＶＬノード１７１１は、コンテナタイプであり、チェスの駒のそれぞれを含む。ＶＬノード１７１２は、ルークに対応し、ＶＬノード１７１３は、ナイトに対応する。ＶＬノード１７１１は、視覚的レイアウトハンドル（「ＶＬｈ」）１７１４および視覚的レイアウトハンドル１７１５を指す。視覚的レイアウトハンドル１７１４は、ＶＬノード１７１２を指し、ＶＬノード１７１２の位置決め情報を含み、ＶＬノード１７１１を指す。視覚的レイアウトハンドル１７１５は、ＶＬノード１７１３を指し、ＶＬノード１７１３の位置決め情報を含み、ＶＬノード１７１１を指す。ＶＬノード１７１２および１７１３は、それらを指す視覚的レイアウトハンドルを指すバックポインタを含む。サブツリー１７２０は、表示領域１６２０のＶＬツリーの一部分を表し、それぞれＶＬノード１７１１、１７１２、および１７１３に対応するＶＬノード１７２１、１７２２、および１７２３を含む。ルークの位置決め情報は変化していないので、ＶＬノード１７２１は、サブツリー１７１０内と同じ視覚的レイアウトハンドル１７１４を指す。しかし、ＶＬノード１７２１は、サブツリー１７１０の視覚的レイアウトハンドル１７１５とは異なる視覚的レイアウトハンドル１７２５を指す。視覚的レイアウトハンドル１７２５は、行き先位置１６３３についての位置決め情報を含む。ＶＬノードの視覚的レイアウトハンドルが生成された後で、レイアウトエンジンは、位置の変化がないか確認し、バックポインタをこの視覚的レイアウトハンドルに設定する。レイアウトエンジンは、ＶＬノード１７２３のバックポインタが、現在それを指している視覚的レイアウトハンドル１７２５とは異なる視覚的レイアウトハンドル１７１５を指すことを検出し、ＶＬノード１７２３のポジションの変化を示す。アニメーションがイネーブルにされた場合には、レイアウトエンジンは、ストーリーボードを初期化して、視覚的レイアウトハンドル１７１５に示される開始位置１６１２から視覚的レイアウトハンドル１７２５によって示される行き先位置１６２２までの経路を生成する。レイアウトエンジンは、次いで、ＶＬノード１７２３のバックポインタを、視覚的レイアウトハンドル１７２５を指すように設定する。サブツリー１７２０が、フレームのシーケンスについて繰り返しレンダリングされるにつれて、視覚的レイアウトハンドル１７２５は、ストーリーボードによって指定される経路に従って様々な位置決め情報を戻して、アニメーションを実現する。
【００３７】
図１８は、いくつかの実施形態におけるアニメーションをセットアップするＶＬツリーのパスの処理を示す流れ図である。構成要素１８００は、ＶＬノードの親視覚的レイアウトハンドルを渡され、そのＶＬノードについてアニメーションが初期化されるべきかどうかを決定し、そのＶＬノードの子ＶＬノードの構成要素を再帰的に呼び出す。ブロック１８０１で、この構成要素は、そのＶＬノードのバック視覚的レイアウトハンドルを取り出す。判定ブロック１８０２で、バック視覚的レイアウトハンドルが親視覚的レイアウトハンドルと同じである場合には、ＶＬノードはその位置を変化させておらず、この構成要素は、ブロック１８０５に進み、そうでない場合には、ＶＬノードはその位置を変化させており、この構成要素は、ブロック１８０３に進む。ブロック１８０３で、この構成要素は、アニメーション構成要素を初期化して、親視覚的レイアウトハンドルおよびバック視覚的レイアウトハンドルを示す指示を渡す。ブロック１８０４で、この構成要素は、バック視覚的レイアウトハンドルを、正しい視覚的レイアウトハンドルを指すように設定する。ブロック１８０５〜１８０７で、この構成要素は、各子ＶＬノードのアニメーションセットアップ構成要素の再帰的な呼出しをループする。ブロック１８０５で、この構成要素は、次の子ＶＬノードを選択する。判定ブロック１８０６で、全ての子ノードが既に選択されている場合には、この構成要素は完了し、そうでない場合には、この構成要素は、ブロック１８０７に進む。ブロック１８０７で、この構成要素は、アニメーションセットアップ構成要素を呼び出して、子視覚的レイアウトハンドルを示す指示を渡し、次いで、ブロック１８０５にループして、次の子ＶＬノードを選択する。
【００３８】
図１９は、いくつかの実施形態におけるアニメーション初期化構成要素の処理を示す流れ図である。構成要素１９００は、親視覚的レイアウトハンドルおよびバック視覚的レイアウトハンドルを示す指示を渡され、バック視覚的レイアウトハンドルの位置から親視覚的レイアウトハンドルの位置へのアニメーションを初期化する。ブロック１９０１で、この構成要素は、ストーリーボードを作成する。ブロック１９０２で、この構成要素は、バック視覚的レイアウトハンドルに基づいて、ストーリーボードの開始位置を設定する。ブロック１９０３で、この構成要素は、親視覚的レイアウトハンドルに基づいて、行き先位置を設定する。ブロック１９０４で、この構成要素は、開始位置から行き先位置まで移動するときに辿る経路を設定する。ブロック１９０５で、この構成要素は、開始位置から行き先位置までの経路に沿ってアニメーションを示すために生成されることになるインターバルまたはフレームの数を設定する。ブロック１９０６で、この構成要素は、作成されたストーリーボードを指し、その親視覚的レイアウトハンドルについてアニメーションがイネーブルにされたことを示すアニメーションポインタを親視覚的レイアウトハンドル内に設定する。次いで、この構成要素は完了する。
【００３９】
図２０は、いくつかの実施形態における視覚的レイアウトハンドルの座標取得構成要素の処理を示す流れ図である。構成要素２０００は、視覚的レイアウトハンドルと関連付けられた座標を取り出すために、レンダリングエンジンによって呼び出される。判定ブロック２００１で、視覚的レイアウトハンドルのアニメーションポインタが設定されている場合には、この構成要素は、ブロック２００３に進み、そうでない場合には、この構成要素は、ブロック２００２に進む。ブロック２００２で、この構成要素は、視覚的レイアウトハンドルの静止座標を取り出し、次いで、それらの座標を戻す。ブロック２００３で、この構成要素は、視覚的レイアウトハンドルのストーリーボードの次の座標を取得する構成要素を呼び出して、開始位置から行き先位置までの経路沿いの次の座標を取り出し、次いで、それらの座標を戻す。
【００４０】
開始位置から行き先位置までのポジションの変化のアニメーションは、ポジションを変化させるＶＬノードが異なる親を有するときには、これよりやや複雑である。例えば、チェスの駒が取られたときには、チェスゲームアプリケーションは、そのチェスの駒をチェス盤上の位置からチェス盤外の取られた駒の領域に位置に移動させることができる。対応するＶＬツリーは、現在チェス坂内に位置付けられている駒のコンテナと、現在取られている駒のコンテナとを含むことができる。１つのコンテナから別のコンテナへのコンテンツの移動は、「リパレンティング」と呼ばれる。コンテンツはそれの親コンテナの領域内にしか表示され得ないので、１つの親コンテナから新たな親コンテナへの移動のアニメーションは、そのコンテンツを古い親コンテナまたは新たな親コンテナのいずれかに置くことによって容易に表現され得ない。
【００４１】
レイアウトエンジンが、行き先コンテナ内のＶＬノードがリパレンティングされていることを検出すると、レイアウトエンジンは、そのＶＬノードの視覚的レイアウトハンドルにフラグを立てて、それがリパレンティングされていることを示す。レイアウトエンジンは、また、開始コンテナと行き先コンテナの最も近い共通の先祖ＶＬノードに、一時的ＶＬノードを追加する。レイアウトエンジンは、次いで、ストーリーボードを初期化して、上述のように開始位置から行き先位置までの一時的ＶＬノードのアニメーションをサポートする。最も近い共通の先祖ＶＬノードの座標空間は、開始コンテナおよび行き先コンテナの両方の座標空間を包含するので、視覚的レイアウトハンドルは、開始コンテナ内の開始位置から開始し、行き先コンテナ内の行き先位置で終端する座標経路を戻すことができる。レンダリングエンジンが、行き先コンテナ内のＶＬノードがリパレンティングされていることを検出すると、それは、そのＶＬノードについてのいかなるコンテンツも生成することを抑制することができる。アニメーションの最後に、１次ノードの視覚的レイアウトハンドルの座標取得構成要素は、一時的ＶＬノードを取り除き、行き先コンテナのＶＬノードのリパレンティングフラグをリセットして、次のレンダリングが、そのＶＬノードが行き先コンテナ内のそれの行き先位置にあることに基づいて行われるようにすることができる。いくつかの実施形態では、レイアウトエンジンは、移動したＶＤノードの一時的ＶＤノードをそれの元の親ＶＤノードの子として追加することによって、ＶＤツリーを一時的に増強してアニメーションを実現することもできる。アニメーションプロセス中に、レイアウトエンジンは、一時的ＶＤノードを、先祖ＶＤノードの経路を最も近い共通の先祖まで遡るように、また子孫ＶＤノードの経路をそれの最終位置まで下るように、上手く移動させることができる。このようにして、アニメーションが進行する際に、ＶＬツリーは、一時的ＶＤノードの現在の親ＶＤノードの特徴に基づいて再生され得る。
【００４２】
図２１は、いくつかの実施形態におけるコンテンツのリパレンティングを示す図である。ＶＬツリーのサブツリー２１１０は、チェス盤コンテナ内のチェスの駒を表す。サブツリー２１１０は、コンテナＶＬノード２１１１、チェス盤コンテナＶＬノード２１１２、取られた駒コンテナＶＬノード２１１３、ルークＶＬノード２１１４、およびナイトＶＬノード２１１５を含む。チェス盤コンテナＶＬノード２１１２は、ルークＶＬノード２１１４を指す視覚的レイアウトハンドル２１１６、およびナイトＶＬノード２１１５を指す視覚的レイアウトハンドル２１１７を含む。ルークＶＬノード２１１４は、視覚レイアウト２１１６へのバックポインタを含み、ナイトＶＬノード２１１５は、視覚的レイアウトハンドル２１１７へのバックポインタを含む。サブツリー２１２０は、コンテナＶＬノード２１２１、チェス盤コンテナＶＬノード２１２２、取られた駒コンテナＶＬノード２１２３、ルークＶＬノード２１２４、およびナイトＶＬノード２１２５を含む。サブツリー２１２０は、ナイトＶＬノード２１２５がチェス盤コンテナＶＬノード２１１２の子である状態から取られた駒コンテナ２１２３の子である状態に移動されていると示している。取られた駒コンテナ２１２３は、ナイトＶＬノード２１２５を指す視覚的レイアウトハンドル２１２７を含む。初期処理の後、ナイトＶＬノード２１２５のバックポインタは、視覚的レイアウトハンドル２１１７を指し、視覚的レイアウトハンドル２１１７は、今度はチェス盤コンテナＶＬノード２１１２を指す。レイアウトエンジンは、リパレンティングを示す指示として、ナイトＶＬノード２１２５のバックポインタがそれの現在の視覚的レイアウトハンドル２１２７を指さなくなったことだけでなく、視覚的レイアウトハンドル２１１７が異なる親ＶＬノードを指すことも検出する。レイアウトエンジンがこのようなリパレンティングを検出すると、レイアウトエンジンは、コンテナＶＬノード２１２１である最も近い共通のコンテナの子ＶＬノードとして一時的ナイトＶＬノード２１２６を作成し、ストーリーボードを初期化して、チェス盤コンテナＶＬノード２１２２内の開始位置から行き先位置までの座標経路を生成する。
【００４３】
仮想化
いくつかの実施形態では、レイアウトエンジンは、ＶＬツリーのうち、表示領域を埋めるのに必要とされるだけの量のみを生成する。例えば、大きな文書をレビューしているユーザは、その文書内の図面のインデックスをレビューし、特定の図面が表示されるように要求することがある。このような場合には、レイアウトエンジンは、その図面のＶＬノード、およびその図面の上下または左右の表示領域を埋めるのに十分なテキストのＶＬノードを含むＶＬツリーを生成することができる。ユーザがその図面を選択したら、アプリケーションは、レイアウトエンジンに、その図面の中心が表示領域内の特定のポジションに位置決めされたＶＬツリーを生成するように指示することができる。ディスプレイの特定のポジションに位置決めされることになるＶＤツリー（例えば図面の中心）の部分は、ＶＬツリーの「アンカ点」と呼ばれる。アンカ点は、アンカＶＤノードと、そのアンカＶＤノードの座標空間内のアンカ座標とを識別する。ＶＬツリーのうち、表示領域を埋めるのに必要とされるだけの量のみを生成するプロセスは、文書全体のＶＬツリーが存在せず、仮想的に生成されるだけであるので、「仮想化」と呼ばれる。いくつかの実施形態では、ＶＤツリーは、アプリケーションが表示領域内にレンダリングするのに必要とされるＶＬツリーの生成をサポートするＶＤツリーの部分のみを生成するように、仮想化されることもある。ＶＤノードのＬオブジェクトが子ＶＤノードを取り出そうと試みると、レイアウトエンジンは、アプリケーションに通知することができる。アプリケーションは、次いで、Ｌオブジェクトに戻すための子ＶＤノードを生成することができる。同様に、子ＶＤノードのＬオブジェクトがそれの子ＶＤノードを取り出そうと試みると、レイアウトエンジンは、この場合もアプリケーションに通知し、アプリケーションは、それらの子ＶＤノードの子ＶＤノードを生成する。
【００４４】
コンテンツの位置決めを容易にするために、レイアウトエンジンは、コンテンツ内の様々な点が名付けられることを可能にすることがあり、これらは、「名前付きの点」と呼ばれる。レイアウトエンジンは、コンテンツの外接長方形または測定されたサイズに関する名前付きの点のセットを認識することができる。例えば、名前付きの点は、コンテンツの外接長方形または測定されたサイズの左上、中央上、右上、左中央、中心、中央右、左下、中央下、および右下の点を含み得る。様々なタイプのＶＤノードも、そのタイプのコンテンツに特有のカスタムに名付けられた点を規定することができる。例えば、コンテンツが人の線棒画を表す線棒画タイプである場合には、線棒画タイプは、その線棒画の外接長方形または測定されたサイズ内の鼻の位置に対応する「鼻」のカスタムに名付けられた点を有することができる。レイアウトエンジンがＬオブジェクトに「鼻」の名前付きの点の線棒画座標について問い合わせると、Ｌオブジェクトは、その線棒画の座標空間内の鼻の座標を戻す。
【００４５】
アプリケーションが、ディスプレイ上の特定の位置に特定のアンカ点を表示することを要求するとき、アプリケーションは、そのアンカ点および位置を、レイアウトエンジンに提供する。このアンカ点から、レイアウトエンジンは、ルートからアンカＶＤノードまでのＶＤノードの経路を識別することができる。レイアウトエンジンは、その経路沿いのＶＤノードのＬオブジェクトの呼出しを指示する。図２２は、名前付きの点を有する例示的な視覚的記述ツリーを示す図である。ＶＤツリー２２００は、外側リスト内の項目としてリストを有する文書を表すＶＤノード２２０１〜２２１４を含む。内側リストは、「分数」項目を含む。分数は、分子、線、および分母を含む。この例では、分子および分母は、数字でない画像（例えばハッピーフェイス）である。図２３は、数字でない分子および分母を有する分数を示す図である。分数２３００は、ＶＤノード２２０６に対応し、分子であるサッドフェイス２３１０、線２３２０、および分母であるハッピーフェイス２３３０を含む。ＶＤノード２２１１は、ハッピーフェイスタイプであり、「右目」のカスタムに名付けられた点を有する。ハッピーフェイスのＬオブジェクトが、名前点「右目」の座標について問い合わせされると、それは、ハッピーフェイスの座標空間内のハッピーフェイスの右目の座標を戻す。例えば、ハッピーフェイス２３３０は、それの座標空間の原点を、それの外接長方形または測定されたサイズの左上の隅２３３１に有することがある。右目は、ハッピーフェイスの座標空間内の位置（５０、５０）に位置する。分数２３００は、それの原点が線２３２０の中心２３２１にあるとみなし、それの外接長方形または測定されたサイズの座標が、（−８０、−１７０）および（８０、１８０）であるとみなす。分子２３１０は、それの原点がそれの外接長方形または測定されたサイズの左上の隅２３３１にあるとみなし、線２３２０は、それの原点が中心２３２１にあるとみなし、分母２３３０は、それの原点が左上の隅２３３１にあるとみなす。分母２３１０の外接長方形または測定されたサイズは、１５０×１５０のサイズの正方形であり、分子２３３０の外接長方形または測定されたサイズは、１６０×１６０のサイズの正方形である。ベクトル２３５４は、分数２３００が、それの中央上の点が分数２３００の座標空間内の（０、２０）にあるように、分母２３３０を位置決めしたことを示している。ベクトル２３５５は、分数２３００が、それの中央下の点が分数２３００の座標空間内（０、−２０）にあるように、分子２３１０を位置決めしたことを示している。ベクトル２３５１は、分母２３３０の原点が、分数２３００の座標空間内の（−８０、２０）にあることを示している。ベクトル２３５２は、分母２３３０の右目が、分母２３３０の座標空間内の（５０、５０）にあることを示している。ベクトル２３５３は、分母２３３０の右目が、分数２３００の座標空間内の（−３０、７０）にあることを示している。
【００４６】
アプリケーションは、レイアウトエンジンに、ハッピーフェイスの右目であるアンカ点を表示領域内の（１１０、１１０）など特定の位置に表示するように要求することがある。図２４は、ＶＤツリーについて生成された例示的なＶＬツリーを示す図である。ＶＬツリー２４００は、ＶＬノード２４０１〜２４１８を含む。ＶＬノード同士の間のリンクは、視覚的レイアウトハンドルの位置決め情報を示すように注釈が付けられた視覚的レイアウトハンドルを表す。例えば、視覚的レイアウトハンドル２４２３の位置決め情報は、（１１０、１１０）である。視覚的レイアウトハンドル２４２３は、ＶＬノード２４０３の原点を、ＶＬノード２４０２の座標空間内の（１１０、１１０）にレンダリングするように指示する。視覚的レイアウトハンドル２４２４は、ＶＬノード２４０４の原点を、ＶＬノード２４０３の座標空間内の（０、０）にレンダリングするように指示する。視覚的レイアウトハンドル２４２６は、ＶＬノード２４０６の原点を、ＶＬノード２４０４の座標空間内の（３０、−７０）にレンダリングするように指示する。視覚的レイアウトハンドル２４３１は、ＶＬノード２４１１の原点を、ＶＬノード２４０６の座標空間内の（−８０、２０）にレンダリングするように示す。視覚的レイアウトハンドル２４３６は、ＶＬノード２４１６の原点を、ＶＬノード２４１１の座標空間内の（５０、５０）にレンダリングするように示す。
【００４７】
ＶＬツリーをレンダリングするときに、レンダリングエンジンは、そのＶＬツリーをトラバースして、各ＶＬノードに、それのコンテンツをそれの原点を表示領域内の特定の位置に置いた状態でレンダリングするように要求する。レンダリングエンジンは、ＶＬノード２４０３に、それのコンテンツをそれの原点をＶＬノード２４０２の座標空間内の（１１０、１１０）に置いた状態でレンダリングするように要求する。レンダリングエンジンは、ＶＬノード２４０４に、それのコンテンツをそれの原点が（１１０、１１０）、すなわち（１１０、１１０）とポジション情報（０、０）の和に位置決めされた状態でレンダリングするように要求する。レンダリングエンジンは、ＶＬノード２４０６に、それのコンテンツをそれの原点が（１４０、４０）、すなわち（１１０、１１０）と位置決め情報（３０、−７０）の和に位置決めされた状態でレンダリングするように要求する。レンダリングエンジンは、ＶＬノード２４１１に、それのコンテンツをそれの原点のポジションが（５０、５０）、すなわち（１３０、３０）と位置決め情報（−８０、２０）の和に置いた状態でレンダリングするように要求する。
【００４８】
図２５は、表示領域内の分数のレンダリングを示す図である。表示領域２５００は、（１３０、３０）に位置決めされた分数の原点を有し、これにより、分母の原点は（５０、５０）にあることになり、これにより、右目は、ディスプレイ内のアンカ点の要求された位置である（１１０、１１０）にあることになる。この右目の位置決めにより、分子はわずかな部分２５０１しか表示領域内にレンダリングされない。
【００４９】
レイアウトエンジンは、ＶＬツリー２４００を以下のように生成する。名前付きの点までの経路沿いのポータルＶＤノード２２０２に対応するＬオブジェクトは、アンカ点がそれの座標空間内の（１１０、１１０）となることを示す指示とともに呼び出される。リストＶＤノード２２０３は、アンカ点までの経路沿いにあるので、レイアウトエンジンは、ＶＤノード２２０３のＬオブジェクトを呼び出して、アンカ点がＶＤノード２２０２の座標空間内の（１００、１００）となることを示す指示を渡すように指示される。レイアウトエンジンは、ＶＤノード２２０３のＬオブジェクトを呼び出して、アンカ点がＶＤノード２２０３の座標空間内の（０、０）となることを示す指示を渡す。ＶＤノード２２０３のＬオブジェクトの呼出しが戻すと、レイアウトエンジンは、ＶＬツリー内のＶＬノード２４０３のレイアウトハンドルを、ＶＬノード２４０２の座標空間内にある（１００、１００）に位置決めされるように設定する。
【００５０】
ＶＤノード２２０３のＬオブジェクトを呼び出した後で、レイアウトエンジンは、ＶＤノード２２０４のＬオブジェクトを呼び出して、アンカ点がＶＤノード２２０３の座標空間内の（０、０）となることを示す指示を渡す。ＶＤノード２２０４のＬオブジェクトの呼出しが戻すと、レイアウトエンジンは、ＶＬツリー内のＶＬノード２４０３のレイアウトハンドルを、ＶＬノード２４０３の座標空間内にある（０、０）に位置決めされるように設定する。
【００５１】
ＶＤノード２２０４のＬオブジェクトを呼び出した後で、レイアウトエンジンは、ＶＤノード２２０６のＬオブジェクトを呼び出して、アンカ点がＶＤノード２２０４の座標空間内の（０、０）となることを示す指示を渡す。ＶＤノード２２０６のＬオブジェクトは、最終的に、レイアウトエンジンに、ＶＤノード２２１１のＬオブジェクトを呼び出すように要求し、ＶＬノード２４１１の原点をＶＬノード２４０６の座標空間内の（−８０、２０）に位置決めする。ＶＤノード２４０６のＬオブジェクトの呼出しが戻したとき、レイアウトエンジンは、アンカ点がＶＬノード２４０４の座標空間内の（−３０、７０）にあると決定している。レイアウトエンジンは、ＶＬノード２４０６のレイアウトハンドルを、ＶＬノード２４０４の座標空間内の（３０、−７０）に位置決めされるように設定する。この位置決めの正味の効果は、アンカ点がＶＬノード２４０４の座標空間内の（０、０）にあるというものとなる。
【００５２】
ＶＤノード２２０６のＬオブジェクトを呼び出した後、レイアウトエンジンは、最終的に、ＶＤノード２２１１のＬオブジェクトを呼び出して、それのＶＬノードを生成する。ＶＤノード２２１１はアンカ点を含むので、レイアウトエンジンは、また、ＶＤノード２２１１のＬオブジェクトに、（５０、５０）であるＶＤノード２２１１の座標空間内のそれの右目のポジションについて問い合わせる。ＶＤノード２２１１のＬオブジェクトの呼び出しが戻すと、レイアウトエンジンは、ＶＬノード２４１１のレイアウトハンドルを、ＶＬノード２４０６の座標空間内の（−８０、２０）に設定する。レイアウトエンジンは、また、アンカ点がＶＬノード２４０６の座標空間内の（−３０、７０）、すなわち（−８０、２０）と（５０、５０）の和にあると決定する。上述のように、レイアウトエンジンは、アンカ点のこのポジションを使用して、アンカ点がＶＬノード２４０４の座標空間内の（０、０）に位置決めされるようにＶＬノード２４０６のレイアウトハンドル内の位置決め情報を設定する。
【００５３】
図２２〜図２５の例では、リストＶＤノードのＬオブジェクトは仮想化に対応しているが、他のＬオブジェクトは対応していない。ＶＤノード２２０６のＬオブジェクトが戻すとき、それは、それの外接長方形または測定されたサイズを戻す。分数２３００の外接長方形または測定されたサイズは、左上の隅および右下の隅に対応する分数２３００の座標空間内の座標（−８０、１７０）および（８０、１８０）によって表されることがある。このＶＬノードのポジションにより、分数２３００の原点が表示領域内の（１３０、３０）に位置決めされることになるので、レイアウトエンジンは、図２５に示すように、分数２３００の上方には表示領域の余白がないが、分数２３００の下方には表示領域の余白があると、ＶＤノード２２０４のＬオブジェクトに通知する。ＶＤノード２２０４のＬオブジェクトは仮想化に対応しているので、アンカ点のレンダリングをサポートするＶＬノードを生成した後で、それは、それの他の子ＶＤノードのＬオブジェクトに、それらのＶＬノードを生成するように要求することができる。表示領域の最上部に余白がある場合には、ＶＤノード２２０４のＬオブジェクトは、ＶＤノード２２０６のすぐ左側のＶＤノードから開始して、表示領域が最上部まで埋められるまで左に進むような子ＶＤノードの呼出しを要求することになる。表示領域の最下部に余白がある場合には、ＶＤノード２２０４のＬオブジェクトは、ＶＤノード２２０６のすぐ右側のＶＤノードから開始して、表示領域が最下部まで埋められるまで右に進むような子ＶＤノードの呼出しを要求する。
【００５４】
いくつかの実施形態では、レイアウトエンジンは、アンカ点が、ｘ座標を１つのＶＤノードの名前付きの点に固定し、ｙ座標を表示領域内の特定の位置の別のＶＤノードの名前付きの点に固定することを可能にすることができる。図２２の例では、アプリケーションは、ＶＤノード２２０６の左側が表示領域内のｘ座標１０に位置決めされること、およびＶＤノード２２１４の右目がｙ座標１１０に位置決めされることを指定することができる。Ｌオブジェクトは、仮想化に参加し、それら自体の座標系を選ぶときにアプリケーションの指定を考慮に入れることができる。Ｌオブジェクトは、それ自体の裁量で、または子ノードをフォーマッティングする指示の下で、子同士の間または子と割り当てられた表示領域の縁部との間の間隔を追加することができる。ＶＤノード２２０２のＬオブジェクトは、ＶＤノード２２０６の左側がｘ座標１０に位置決めされ、ＶＤノード２２１４の右目がｙ座標１１０に位置決めされるように、それのローカル座標空間内でのそれの子ＶＤノード２２０３の配置を指定することができる。ＶＤノード２２０３のＬオブジェクトは、ＶＤノード２２０５の左側がｘ座標１５（水平マージンを含む）に位置決めされ、ＶＤノード２２１４の右目がｙ座標０（垂直マージンを含まない）に位置決めされるように、それのローカル座標空間内でのそれの子ＶＤノード２２０４の配置を指定することができる。
【００５５】
いくつかの実施形態では、ＶＤツリーは、修正されたＶＤノードに基づいてＶＬツリーが再生され得るように、どのＶＤノードが修正されているかを示すように注釈が付けられている。修正されたＶＤノードは、修正されているものとして注釈が付けられ、それ自体は修正されていないが修正された子孫ＶＤノードを有するＶＤノードは、修正された子孫を有するものとして注釈が付けられている。ＶＤノードが修正されているものとして注釈が付けられているときには、レイアウトエンジンは、そのＶＤノードに対応するＶＬツリーのサブツリーを再生する。ＶＤノードが修正された子孫を有するものとして注釈が付けられているときには、レイアウトエンジンは、そのＶＤノードに対応するＶＬツリーのサブツリー全体を再生するか、または特定の子ＶＤノードのサブツリーを再生するかを決定することができる。そのＶＤノードのＬオブジェクトは、どの子ＶＤノードが再生される必要があるかを判定することができる。子ＶＤノードのサブツリーが再生される必要がない場合でも、レイアウトエンジンは、その子ＶＤノードのレイアウトハンドルの位置決め情報を修正する必要があることがある。例えば、リスト内の子ＶＤノードのサイズが変更された場合には、リスト内のさらに下方の子ＶＤノードのレイアウトハンドル内の位置決め情報が、変更される必要があることがある。
【００５６】
図２６は、いくつかの実施形態における部分再生構成要素の処理を示す流れ図である。構成要素２６００は、ＶＤノードを示す指示を渡され、ＶＬツリーの対応するサブツリーおよびそれの子ＶＤノードのいずれかのサブツリーを再生するかどうかを決定する。判定ブロック２６０１で、ＶＤノードが修正されているものとして注釈が付けられている場合には、この構成要素は、ブロック２６０２に進み、そうでない場合には、この構成要素は、ブロック２６０３に進む。ブロック２６０２で、この構成要素は、ＶＤノードのＬオブジェクトのレイアウト構成要素を呼び出して、ＶＬツリー内の対応するサブツリーを再生し、次いで完了する。判定ブロック２６０３で、ＶＤノードが修正された子孫を有するものとして注釈が付けられている場合には、この構成要素は、ブロック２６０４に進み、そうでない場合には、この構成要素は完了する。ブロック２６０４〜２６０７で、この構成要素は、この構成要素の再帰的な呼出しをループする。ブロック２６０４で、この構成要素は、次の子ＶＤノードを選択する。判定ブロック２６０５で、全ての子ＶＤノードが既に選択されている場合には、この構成要素は完了し、そうでない場合には、この構成要素は、ブロック２６０６に進む。ブロック２６０６で、この構成要素は、部分再生構成要素を再帰的に呼び出して、選択された子ＶＤノードを示す指示を渡す。判定ブロック２６０７で、再生された子ＶＬノードの測定されたサイズが変化した場合には、この構成要素は、ブロック２６０２に進んで、親ＶＤノードのＶＬツリー内の対応するサブツリー全体を再生し、そうでない場合には、この構成要素は、ブロック２６０４にループして、次の子ＶＤノードを選択する。ＶＬノードの測定されたサイズが変化する場合には、兄弟子ＶＬノードについての位置決め情報および測定されたサイズが変化する可能性がある。
【００５７】
Ｌオブジェクトは、追加のコンテンツがＶＤツリーに一時的に追加されることを可能にする挙動を提供することができる。例えば、ＶＤツリーは、サイズ変更可能なパラグラフのＶＤノードを含むことがある。このタイプのＶＤノードのＬオブジェクトは、選択されたときにパラグラフを１つの次元または両方の次元でサイズ変更するように移動させられ得るグラフィカルユーザインタフェースウィジェットを表すＶＤノードを各隅に一時的に追加することによって、パラグラフのサイズ変更に対応することができる。レイアウトエンジンは、ウィジェットの対応するＶＬノードを生成することによって、一時的に追加されたＶＤノードを処理する。ウィジェットが移動されるにつれて、パラグラフの表示領域のサイズが変化し、アプリケーションは、そのサイズ変化に影響されるＶＤツリーの部分を再生する。レイアウトエンジンは、次いで、ＶＬツリーを再生し、このＶＬツリーが次いでレンダリングされる。
【００５８】
いくつかの実施形態では、同じコンテンツが、同時に複数の表示領域に表示されることもある。例えば、スライド提示では、各スライドで同じヘッダが表示されることがある。このような場合には、提示のＶＤツリーは、その提示のヘッダを表す子ＶＤノードおよびヘッダなしコンテンツを表す子ＶＤノードを有する提示に対応するＶＤノードを含むことができる。複数のスライドが同時に表示されるときには、ヘッダは、複数回表示される。表示されているスライド中でヘッダが選択されると、アプリケーションは、選択されたスライド内の選択された部分について１つのタイプの強調表示を行い、表示されている他の各スライドの選択された部分については異なるタイプの強調表示を行う挙動を提供することができる。したがって、ヒットテストは、選択されたヘッダの部分だけでなく、選択されたスライドも識別する。提示のＬオブジェクトは、ヘッダのコンテンツを表す各スライドの一時的ＶＤノードを生成することができる。レイアウトエンジンは、各一時的ＶＤノードの対応するＶＬノードを生成する。ヘッダが選択されると、選択されたスライドのヘッダに対応するＶＬノードが識別され、アプリケーションに提供される。ヘッダを表す非一時的ＶＤノードは、「１次」および「２次」選択強調表示またはスタイリングを示す子ノード、ならびにコピーのうちのどれが「１次」であるかを示す指示を有することができ、Ｌオブジェクトが各コピーについて正しくスタイリングされたＶＤノードを生成することができるようになっている。
【００５９】
例示的な実施形態
本セクションは、様々な方法で結合され得るレイアウトエンジンの様々な態様の番号が付された例示的な実施形態を提供する。これらの実施形態は、方法、コンピュータ可読記憶媒体、およびコンピューティングデバイスのタイプの実施形態として表現されている。これらの実施形態は、独立形態および従属形態で記載されるが、従属実施形態は、それが従属する別の実施形態を参照する。ある実施形態に直接従属する実施形態の任意の組合せは、それらが従属する実施形態と組み合わされて、別の実施形態を規定することもできる。さらに、各タイプの実施形態ごとに、そのタイプの実施形態は、そのタイプの別の実施形態と組み合わされることも可能である。
【００６０】
レイアウトエンジン
実施形態１。そのコンテンツがレンダリングされることになる文書の視覚的記述ツリーの視覚的レイアウトツリーを生成するための、コンピューティングデバイスによって実行される方法であって、視覚的記述ツリーが、コンテンツのフォーマッティングおよび論理配列とともに文書のコンテンツを記述し、視覚的記述ツリーが、文書のコンテンツの階層編成を表す視覚的記述ノードを有し、各視覚的記述ノードがタイプを有する、方法において、
視覚的記述ノードの各タイプについて、そのタイプの視覚的記述ノードによって表されるコンテンツをレンダリングするためのレイアウトを示す１または複数の視覚的レイアウトノードを生成するレイアウトオブジェクトを提供するステップと、
遭遇された各視覚的記述ノードについて、
その視覚的記述ノードのタイプを決定し、
決定されたタイプのレイアウトオブジェクトをインスタンス化し、
レイアウトオブジェクトの機能を呼び出して、その視覚的記述ノードによって表されるコンテンツをレンダリングするための視覚的レイアウトツリーの１または複数の視覚的レイアウトノードを生成し、視覚的レイアウトノードが、階層的に配列され、表示領域内の文書のレイアウトを規定しており、
その視覚的記述ノードの各子視覚的記述ノードについて、その子視覚的記述ノードを再帰的に処理することによって
その視覚的記述ノードを処理することにより、
視覚的記述ツリーの縦型トラバースを実行するステップとを含むことを特徴とする方法。
【００６１】
実施形態２。コンテンツの要素を表す視覚的記述ノードが、要素のフォーマッティングを規定する子視覚的記述ノードを有することを特徴とする実施形態１に記載の方法。
【００６２】
実施形態３。視覚的レイアウトツリーが、コンテンツの一部分がレンダリングされることになる各表示領域に対応するサブツリーを含むことを特徴とする実施形態１に記載の方法。
【００６３】
実施形態４。視覚的レイアウトツリーから、文書のレイアウトを表す画素を有するグラフィックスバッファを生成するステップを含むことを特徴とする実施形態１に記載の方法。
【００６４】
実施形態５。グラフィックスバッファを出力するステップを含むことを特徴とする実施形態４に記載の方法。
【００６５】
実施形態６。視覚的レイアウトノードが、その視覚的レイアウトノードへの参照および位置決め情報を含むハンドルによって参照されることを特徴とする実施形態１に記載の方法。
【００６６】
実施形態７。位置決め情報が、親視覚的レイアウトノードの座標系内の視覚的レイアウトノードのコンテンツの位置を示して、位置が視覚的レイアウトノードを再作成する必要なく変更され得るようにすることを特徴とする実施形態６に記載の方法。
【００６７】
実施形態８。視覚的記述ツリーのトラバースを実行するときに、視覚的記述ノードのレイアウト動作が、視覚的記述ノードのコンテンツが表示領域内に収まらない結果として中断されたときに、レイアウト中断記録を生成して状態をトラッキングすることを特徴とする実施形態１に記載の方法。
【００６８】
実施形態９。文書が修正されたときに、修正によって影響される視覚的記述ツリーの部分をアプリケーションによって再生するステップを含むことを特徴とする実施形態１に記載の方法。
【００６９】
実施形態１０。アプリケーションが修正によって影響される視覚的記述ツリーの部分を再生した後で、視覚的レイアウトツリーの視覚的レイアウトノードを再生するステップを含むことを特徴とする実施形態９に記載の方法。
【００７０】
実施形態１１。アプリケーションによる再生するステップが、アプリケーションが、修正された視覚的記述ノードに、修正されているものとして注釈を付けるステップを含む、ことを特徴とする実施形態９に記載の方法。
【００７１】
実施形態１２。アプリケーションによる再生ステップが、それ自体は修正されていないが修正された子孫視覚的記述ノードを有する視覚的記述ノードに、修正された子孫を有するものとして注釈を付けるステップをさらに含むことを特徴とする実施形態１１に記載の方法。
【００７２】
実施形態１３。そのコンテンツがレンダリングされることになる文書の視覚的記述ツリーの視覚的レイアウトツリーを生成するようにコンピューティングデバイスを制御するコンピュータ実行可能命令を記憶するコンピュータ可読記憶媒体であって、コンピュータ実行可能命令が、
特定のタイプの視覚的記述ノードによって表されるコンテンツをレンダリングするためのレイアウトを示す１または複数の視覚的レイアウトノードを生成するレイアウトオブジェクト、および
視覚的記述ノードのうちの一部を、
その視覚的記述ノードのタイプを決定し、
決定されたタイプのレイアウトオブジェクトを呼び出して、その視覚的記述ノードによって表されるコンテンツをレンダリングするための視覚的レイアウトツリーの１または複数の視覚的レイアウトノードを生成する
ことによって処理することによって視覚的記述ツリーを処理する構成要素
の命令を含むことを特徴とするコンピュータ可読記憶媒体。
【００７３】
実施形態１４。処理する構成要素が、視覚的記述ノードの各子視覚的記述ノードについて、その子視覚的記述ノードをさらに再帰的に処理することを特徴とする実施形態１３に記載のコンピュータ可読記憶媒体。
【００７４】
実施形態１５。コンテンツの要素を表す視覚的記述ノードが、要素のフォーマッティングを規定する子視覚的記述ノードを有することを特徴とする実施形態１３に記載のコンピュータ可読記憶媒体。
【００７５】
実施形態１６。視覚的レイアウトツリーが、コンテンツの一部分がレンダリングされることになる各表示領域に対応するサブツリーを含むことを特徴とする実施形態１３に記載のコンピュータ可読記憶媒体。
【００７６】
実施形態１７。コンピュータ実行可能命令が、視覚的レイアウトツリーから、文書のレイアウトを表す画素を有するグラフィックスバッファを生成する構成要素をさらに含むことを特徴とする実施形態１３に記載のコンピュータ可読記憶媒体。
【００７７】
実施形態１８。コンピュータ実行可能命令が、グラフィックスバッファを出力する構成要素をさらに含むことを特徴とする実施形態１７に記載のコンピュータ可読記憶媒体。
【００７８】
実施形態１９。視覚的レイアウトノードが、その視覚的レイアウトノードへの参照および位置決め情報を含むハンドルによって参照されることを特徴とする実施形態１３に記載のコンピュータ可読記憶媒体。
【００７９】
実施形態２０。位置決め情報が、親視覚的レイアウトノードの座標系内の視覚的レイアウトノードのコンテンツの位置を示して、位置が視覚的レイアウトノードを再作成する必要なく変更され得るようにすることを特徴とする実施形態１９に記載のコンピュータ可読記憶媒体。
【００８０】
実施形態２１。視覚的記述ツリーをトラバースする構成要素が、視覚的記述ノードのレイアウト動作が、視覚的記述ノードのコンテンツが表示領域内に収まらない結果として中断されたときに、レイアウト中断記録を生成して状態をトラッキングすることを特徴とする実施形態１３に記載のコンピュータ可読記憶媒体。
【００８１】
実施形態２２。処理する構成要素が、視覚的記述ツリーの一部分が再生されたときに、再生によって影響される視覚的記述ノードの部分をさらに処理することを特徴とする実施形態１３に記載のコンピュータ可読記憶媒体。
【００８２】
実施形態２３。そのコンテンツがレンダリングされることになる文書の視覚的記述ツリーの視覚的レイアウトツリーを生成するコンピューティングデバイスであって、
特定のタイプの視覚的記述ノードによって表されるコンテンツをレンダリングするためのレイアウトを示す１または複数の視覚的レイアウトノードを生成するレイアウトオブジェクト、および
視覚的記述ツリーの視覚的記述ノードに遭遇し、遭遇された各視覚的記述ノードについて、
その視覚的記述ノードのタイプを決定し、
決定されたタイプのレイアウトオブジェクトを呼び出して、その視覚的記述ノードによって表されるコンテンツをレンダリングするための視覚的レイアウトツリーの１または複数の視覚的レイアウトノードを生成する構成要素
のコンピュータ実行可能命令を記憶するコンピュータ可読記憶媒体と、
コンピュータ可読記憶媒体に記憶されたコンピュータ実行可能命令を実行するプロセッサとを含むことを特徴とするコンピューティングデバイス。
【００８３】
実施形態２４。トラバースする構成要素が、さらに、視覚的記述ノードの各子視覚的記述ノードについて、その子視覚的記述ノードのタイプを決定し、その決定されたタイプのレイアウトオブジェクトを呼び出すことを特徴とする実施形態２３に記載のコンピューティングデバイス。
【００８４】
実施形態２５。コンピュータ可読記憶媒体が、視覚的レイアウトツリーから、文書のレイアウトを表す画素を有するグラフィックスバッファを生成する構成要素のコンピュータ実行可能命令をさらに記憶することを特徴とする実施形態２３に記載のコンピューティングデバイス。
【００８５】
実施形態２６。遭遇する構成要素が、さらに、視覚的記述ツリーの一部分が再生されたときに、再生によって影響される各視覚的記述ノードのそれぞれについて、
その視覚的記述ノードのタイプを決定し、
決定されたタイプのレイアウトオブジェクトを呼び出して、その視覚的記述ノードによって表されるコンテンツをレンダリングするための視覚的レイアウトツリーの１または複数の視覚的レイアウトノードを生成することを特徴とする実施形態２３に記載のコンピューティングデバイス。
【００８６】
実施形態２７。再生によって影響される視覚的記述ノードが、視覚的記述ノードを再生するアプリケーションによって修正されたものとして注釈を付けられることを特徴とする実施形態２６に記載のコンピューティングデバイス。
【００８７】
レイアウト中断
実施形態２８。そのコンテンツが複数の表示領域にわたって断片化されることになる文書の視覚的記述ツリーの視覚的レイアウトツリーを生成するための、コンピューティングデバイスによって実行される方法であって、視覚的記述ツリーが、視覚的記述ノードを有し、視覚的レイアウトツリーが、視覚的レイアウトノードを有する、方法において、
その処理が中断されている視覚的記述ノードを識別するためのレイアウト中断記録を提供するステップと、
文書のコンテンツを含むことになる各表示領域について、
レイアウト中断記録の視覚的記述ノードについて、
その視覚的記述ノードについてのレイアウト中断記録によって示される状態に基づいて視覚的記述ノードを処理するように現在の状態を設定し、
現在の状態で表示領域に含まれることになる視覚的記述ノードのコンテンツを表す１または複数の視覚的レイアウトノードを視覚的記述ツリーにポピュレートし、
表示領域について視覚的記述ノードのコンテンツの処理が中断されたときに、次の表示領域についてのレイアウト中断記録に、視覚的記述ノードの処理のその時点で最新の状態および視覚的記述ノードの識別子を追加して、次の表示領域について、表示領域について処理が中断されたところから仮想記述ツリーの処理が継続することができるようにすることによって、
視覚的記述ツリーを処理するステップとを含むことを特徴とする方法。
【００８８】
実施形態２９。視覚的レイアウトツリーが、各表示領域のサブツリーを含むことを特徴とする実施形態２８に記載の方法。
【００８９】
実施形態３０。レイアウト中断記録によって識別される視覚的記述ノードを通る縦型トラバースを実行するステップとを含むことを特徴とする実施形態２８に記載の方法。
【００９０】
実施形態３１。視覚的記述ノードのレイアウト中断記録が、その視覚的記述ノードを処理するための状態情報を、子視覚的記述ノードの識別子およびその子視覚的記述ノードのレイアウト中断記録とともに含むことを特徴とする実施形態２８に記載の方法。
【００９１】
実施形態３２。視覚的レイアウトノードをレイアウト中断記録に示される状態情報とともにキャッシュして、その後に視覚的レイアウトツリーを生成するときに視覚的レイアウトノードが再使用され得るようにするステップをさらに含むことを特徴とする実施形態２８に記載の方法。
【００９２】
実施形態３３。各表示領域について、その表示領域内に、視覚的記述ノードのコンテンツを表す１または複数の視覚的レイアウトノードに従ってコンテンツを表示するステップをさらに含むことを特徴とする実施形態２８に記載の方法。
【００９３】
実施形態３４。そのコンテンツが複数の表示領域にわたって断片化されることになる視覚的記述ツリーの視覚的レイアウトツリーを生成するようにコンピューティングデバイスを制御するコンピュータ実行可能命令を記憶するコンピュータ可読記憶媒体であり、視覚的記述ツリーが、視覚的記述ノードを有し、視覚的レイアウトツリーが、視覚的レイアウトノードを有する、コンピュータ可読記憶媒体であって、コンピュータ実行可能命令が、
複数の表示領域のそれぞれについて、
そのレイアウトが中断された視覚的記述ノードと関連付けられた状態を記憶するレイアウト中断記録によって示されるようにその表示領域の視覚的記述ノードのコンテンツをレイアウトする視覚的記述ツリーの視覚的記述ノードをトラバースする命令と、
そのレイアウトが中断された視覚的記述ノードと関連付けられた任意の状態に基づいて視覚的記述ノードのコンテンツの視覚的記述ツリーの視覚的レイアウトノードを生成することによってトラバース中に遭遇された視覚的記述ノードのコンテンツをレイアウトする命令とを含むことを特徴とするコンピュータ可読記憶媒体。
【００９４】
実施形態３５。コンピュータ実行可能命令が、表示領域のコンテンツのレイアウト動作が中断されたときに、そのコンテンツのレイアウトが中断された視覚的記述ノードと関連付けられた状態を有するレイアウト中断記録を生成する命令をさらに含むことを特徴とする実施形態３４に記載のコンピュータ可読記憶媒体。
【００９５】
実施形態３６。視覚的レイアウトツリーが、各表示領域のサブツリーを含むことを特徴とする実施形態３４に記載のコンピュータ可読記憶媒体。
【００９６】
実施形態３７。コンテンツのレイアウト動作が、視覚的記述ノードのコンテンツの全てが表示領域内に収まるわけではないことの結果として中断されることを特徴とする実施形態３４に記載のコンピュータ可読記憶媒体。
【００９７】
実施形態３８。視覚的記述ノードのレイアウト中断記録が、その視覚的記述ノードを処理するための状態情報を、子視覚的記述ノードの識別子およびその子視覚的記述ノードのレイアウト中断記録とともに含むことを特徴とする実施形態３４に記載のコンピュータ可読記憶媒体。
【００９８】
実施形態３９。視覚的記述ノードのレイアウト中断記録が、そのレイアウトが中断された各子視覚的記述ノードについての識別子およびレイアウト中断記録を含むことを特徴とする実施形態３８に記載のコンピュータ可読記憶媒体。
【００９９】
実施形態４０。コンピュータ実行可能命令が、視覚的レイアウトノードをレイアウト中断記録に示される状態情報とともにキャッシュして、その後に視覚的レイアウトツリーを生成するときに視覚的レイアウトノードが再使用され得るようにする命令をさらに含むことを特徴とする実施形態３４に記載のコンピュータ可読記憶媒体。
【０１００】
実施形態４１。コンピュータ実行可能命令が、各表示領域について、その表示領域内に、視覚的記述ノードのコンテンツを表す１または複数の視覚的レイアウトノードに従ってコンテンツを表示する命令をさらに含むことを特徴とする実施形態３４に記載のコンピュータ可読記憶媒体。
【０１０１】
実施形態４２。視覚的記述ツリーの視覚的レイアウトツリーを生成するコンピューティングシステムであって、
実行されたときに、
表示領域の視覚的記述ノードのコンテンツをレイアウトするように視覚的記述ツリーの視覚的記述ノードを処理し、
視覚的記述ノードのコンテンツのレイアウト動作が中断されたときに、そのコンテンツのレイアウト動作が中断された視覚的記述ノードと関連付けられた状態情報を有するレイアウト中断記録を生成して、別の表示領域の視覚的記述ノードのコンテンツのレイアウト動作が、視覚的記述ノードと関連付けられた状態情報に基づいて継続することができるようにする
コンピュータ実行可能命令を記憶するメモリと、
メモリに記憶されたコンピュータ実行可能命令を実行するプロセッサとを含むことを特徴とするコンピューティングシステム。
【０１０２】
実施形態４３。視覚的レイアウトツリーが、各表示領域のサブツリーを含むことを特徴とする実施形態４２に記載のコンピューティングシステム。
【０１０３】
実施形態４４。コンテンツのレイアウト動作が、視覚的記述ノードのコンテンツの全てが表示領域内に収まるわけではないことの結果として中断されることを特徴とする実施形態４２に記載のコンピューティングシステム。
【０１０４】
実施形態４５。視覚的記述ノードのレイアウト中断記録が、その視覚的記述ノードを処理するための状態情報を、子視覚的記述ノードの識別子およびその子視覚的記述ノードのレイアウト中断記録とともに含むことを特徴とする実施形態４２に記載のコンピューティングシステム。
【０１０５】
実施形態４６。視覚的記述ノードのレイアウト中断記録が、そのレイアウトが中断された各子視覚的記述ノードについての識別子およびレイアウト中断記録を含むことを特徴とする実施形態４５に記載のコンピューティングシステム。
【０１０６】
実施形態４７。メモリが、実行されたときに、視覚的レイアウトノードをレイアウト中断記録に示される状態情報とともにキャッシュして、その後に視覚的レイアウトツリーを生成するときに視覚的レイアウトノードが再使用され得るようにするコンピュータ実行可能命令をさらに記憶することを特徴とする実施形態４２に記載のコンピューティングシステム。
【０１０７】
キャッシュ
実施形態４８。視覚的レイアウトノードを有する視覚的レイアウトツリーを生成するための、コンピューティングデバイスによって実行される方法であって、
第１の視覚的レイアウトツリーを、
第１の視覚的レイアウトツリーの視覚的レイアウトノードを作成し、生成される各視覚的レイアウトノードがノード文脈に基づき、
作成された視覚的レイアウトノードを視覚的レイアウトノードのノード文脈とともにキャッシュすることによって
生成するステップと、
第２の視覚的レイアウトツリーを、
第２の視覚的レイアウトツリーの視覚的レイアウトノードを、
第２の視覚的レイアウトツリーの視覚的レイアウトノードのノード文脈がキャッシュされた視覚的レイアウトノードのノード文脈と一致するときには、キャッシュされた視覚的レイアウトノードを第２の視覚的レイアウトツリーのために再使用し、
第２の視覚的レイアウトツリーの視覚的レイアウトノードのノード文脈がキャッシュされた視覚的レイアウトノードのノード文脈と一致しないときには、第２の視覚的レイアウトノードのノード文脈に基づいて第２の視覚的レイアウトツリーのための視覚的レイアウトノードを作成する
ことによって生成することによって
生成するステップとを含むことを特徴とする方法。
【０１０８】
実施形態４９。第２の視覚的レイアウトツリーが、文書の変更に基づいて第１の視覚的レイアウトツリーと異なることを特徴とする実施形態４８に記載の方法。
【０１０９】
実施形態５０。第２の視覚的レイアウトツリーが、表示領域の変更に基づいて第１の視覚的レイアウトツリーと異なることを特徴とする実施形態４８に記載の方法。
【０１１０】
実施形態５１。ノード文脈が、視覚的レイアウトノードを作成するときに使用される入力パラメータを識別することを特徴とする実施形態４８に記載の方法。
【０１１１】
実施形態５２。入力パラメータがレイアウト中断記録を含むことを特徴とする実施形態５１に記載の方法。
【０１１２】
実施形態５３。入力パラメータがレイアウト制約を含むことを特徴とする実施形態５１に記載の方法。
【０１１３】
実施形態５４。第２の視覚的レイアウトツリーのための作成された視覚的レイアウトノードをノード文脈とともにキャッシュするステップを含むことを特徴とする実施形態４８に記載の方法。
【０１１４】
実施形態５５。視覚的レイアウトノードを有する視覚的レイアウトツリーを生成するようにコンピューティングデバイスを制御するコンピュータ実行可能命令を記憶するコンピュータ可読記憶媒体であって、コンピュータ実行可能命令が、
視覚的レイアウトノードの目標ノード文脈を識別し、
キャッシュが目標ノード文脈と一致するノード文脈を有するキャッシュされた視覚的レイアウトノードを含むかどうかを決定し、
キャッシュが目標ノード文脈と一致するノード文脈を有するキャッシュされた視覚的レイアウトノードを含むときには、視覚的レイアウトノードを再作成することなく、キャッシュされた視覚的レイアウトノードを視覚的レイアウトツリーのために使用し、
キャッシュが目標ノード文脈と一致するノード文脈を有するキャッシュされた視覚的レイアウトノードを含まないときには、目標ノード文脈に基づいて視覚的レイアウトツリーのための視覚的レイアウトノードを作成する
命令を含むことを特徴とするコンピュータ可読記憶媒体。
【０１１５】
実施形態５６。コンピュータ実行可能命令が、作成された視覚的レイアウトノードを、目標ノード文脈を示す指示とともにキャッシュに記憶する命令をさらに含むことを特徴とする実施形態５５に記載のコンピュータ可読記憶媒体。
【０１１６】
実施形態５７。視覚的レイアウトツリーが、文書の現在のバージョンを表し、キャッシュされた視覚的レイアウトノードが、文書の以前のバージョンを表す視覚的レイアウトツリーのために作成されたことを特徴とする実施形態５５に記載のコンピュータ可読記憶媒体。
【０１１７】
実施形態５８。目標ノード文脈が、親視覚的レイアウトノード内の視覚的レイアウトノードのポジションを含まないことを特徴とする実施形態５５に記載のコンピュータ可読記憶媒体。
【０１１８】
実施形態５９。目標ノード文脈が、スケーリング、回転、またはｚ次情報を含まないことを特徴とする実施形態５５に記載のコンピュータ可読記憶媒体。
【０１１９】
実施形態６０。ノード文脈が、視覚的レイアウトノードを作成するときに使用される入力パラメータを識別することを特徴とする実施形態５５に記載のコンピュータ可読記憶媒体。
【０１２０】
実施形態６１。入力パラメータがレイアウト中断記録を含むことを特徴とする実施形態６０に記載のコンピュータ可読記憶媒体。
【０１２１】
実施形態６２。入力パラメータがレイアウト制約を含むことを特徴とする実施形態６０に記載のコンピュータ可読記憶媒体。
【０１２２】
実施形態６３。キャッシュ中の視覚的レイアウトノードが、ノード文脈に基づいて索引付けされることを特徴とする実施形態５５に記載のコンピュータ可読記憶媒体。
【０１２３】
実施形態６４。視覚的レイアウトノードを有する視覚的レイアウトツリーを生成するコンピューティングシステムであって、
文書をレンダリングするときに以前に作成されたキャッシュされた視覚的レイアウトノードのキャッシュであり、各キャッシュされた視覚的レイアウトノードがそのキャッシュされた視覚的レイアウトノードが作成された文脈を表すノード文脈を有するキャッシュ、および
実行されたときに、
目標視覚的レイアウトノードの目標ノード文脈を識別し、
キャッシュが目標ノード文脈と一致するノード文脈を有するキャッシュされた視覚的レイアウトノードを含むかどうかを決定し、
キャッシュが目標ノード文脈と一致するノード文脈を有するキャッシュされた視覚的レイアウトノードを含むときには、そのキャッシュされた視覚的レイアウトノードを目標視覚的レイアウトノードとして使用し、
キャッシュが目標ノード文脈と一致するノード文脈を有するキャッシュされた視覚的レイアウトノードを含まないときには、目標ノード文脈に基づいて視覚的レイアウトツリーのための目標視覚的レイアウトノードを作成する
コンピュータ実行可能命令
を記憶するメモリと、
メモリに記憶されたコンピュータ実行可能命令を実行するプロセッサと
を含むことを特徴とするコンピューティングシステム。
【０１２４】
実施形態６５。コンピュータ実行可能命令が、実行されたときに、作成された目標視覚的レイアウトノードを、目標ノード文脈を示す指示とともにキャッシュにさらに記憶することを特徴とする実施形態６４に記載のコンピューティングシステム。
【０１２５】
実施形態６６。視覚的レイアウトツリーが、文書の現在のバージョンを表し、目標ノード文脈と一致するノード文脈を有するキャッシュされた視覚的レイアウトノードが、文書の以前のバージョンを表す視覚的レイアウトツリーのために作成されたことを特徴とする実施形態６４に記載のコンピューティングシステム。
【０１２６】
実施形態６７。目標ノード文脈が、親視覚的レイアウトノード内の視覚的レイアウトノードのポジション、スケーリング、回転、またはｚ次情報を含まないことを特徴とする実施形態６４に記載のコンピューティングシステム。
【０１２７】
アニメーション
実施形態６８。文書のコンテンツの位置の変化をアニメーション化するための、コンピューティングデバイスにおける方法であって、
文書を表す視覚的レイアウトツリーを提供するステップであり、視覚的レイアウトツリーが、視覚的レイアウトノード、および視覚的レイアウトノード同士の間の親／子関係を指定する視覚的レイアウトハンドルを有し、視覚的レイアウトハンドルが、子視覚的レイアウトノードへの参照を有し、子視覚的レイアウトノードのそれの親視覚的レイアウトノードの座標空間内でのポジションを示す位置決め情報を有するステップと、
視覚的レイアウトノードが視覚的レイアウトツリーの以前のバーション内のその視覚的レイアウトノードの位置と異なる視覚的レイアウトツリー内の位置にあることを検出したときに、開始位置から行き先位置までの位置の経路に沿った位置決め情報の生成を初期化し、異なる位置にある視覚的レイアウトノードの視覚的レイアウトハンドルを、アニメーションが進行中であることを示すように設定するステップであり、開始位置が、視覚的レイアウトツリーの以前のバージョン内の視覚的レイアウトノードの位置に基づき、行き先位置が、視覚的レイアウトツリー内の視覚的レイアウトノードの位置に基づくステップと、
開始位置から行き先位置までの経路に沿った位置を示す新たな視覚的レイアウトハンドルを有する視覚的レイアウトツリーに基づいて文書の連続的なレンダリングを生成するステップとを含むことを特徴とする方法。
【０１２８】
実施形態６９。開始位置および行き先位置が、同じ親視覚的レイアウトノードの座標空間内にあることを特徴とする実施形態６８に記載の方法。
【０１２９】
実施形態７０。開始位置および行き先位置が、異なる親視覚的レイアウトノードの座標空間内にあることを特徴とする実施形態６８に記載の方法。
【０１３０】
実施形態７１。視覚的レイアウトツリーの視覚的レイアウトノードの位置の変化を検出するための、コンピューティングデバイスにおける方法であって、
視覚的レイアウトノード、および視覚的レイアウトノード同士の間の親／子関係を指定する視覚的レイアウトハンドルを有する視覚的レイアウトツリーを記憶するステップであり、視覚的レイアウトハンドルが、子視覚的レイアウトノードへの参照を有し、子視覚的レイアウトノードのそれの親視覚的レイアウトノードの座標空間内でのポジションを示す位置決め情報を有し、各子視覚的レイアウトノードが、それを参照する視覚的レイアウトハンドルへのバック参照を有するステップと、
移動された子視覚的レイアウトノードがそれの親視覚的レイアウトノードの座標空間内の開始位置からそれの親視覚的レイアウトノードの座標空間内の行き先位置まで移動された修正された視覚的レイアウトツリーを生成するステップであり、生成が、
移動された子視覚的レイアウトノードへの参照を有し、行き先位置を指定する新たな位置決め情報を有する新たな視覚的レイアウトハンドルを生成するステップ、および
移動された子視覚的レイアウトノードのバック参照が新たに生成された視覚的レイアウトハンドルと異なる視覚的レイアウトハンドルを参照することを検出したときに、移動された視覚的レイアウトノードが移動されたことを示すステップを含むステップと
を含むことを特徴とする方法。
【０１３１】
実施形態７２。移動された視覚的レイアウトノードが移動されたことを示したときに、開始位置から行き先位置までの位置の経路に沿った位置決め情報の生成を初期化するステップと、新たな視覚的レイアウトハンドルをアニメーションが進行中であることを示すように設定するステップとをさらに含むことを特徴とする実施形態７１に記載の方法。
【０１３２】
実施形態７３。ポジション情報が、ポジション、配向、およびスケール情報を含むことを特徴とする実施形態７２に記載の方法。
【０１３３】
実施形態７４。視覚的レイアウトツリーの視覚的レイアウトノードの位置の変化を検出するための、コンピューティングデバイスにおける方法であって、
視覚的レイアウトノード、および視覚的レイアウトノード同士の間の親／子関係を指定する視覚的レイアウトハンドルを有する視覚的レイアウトツリーを記憶するステップであり、視覚的レイアウトハンドルが、子視覚的レイアウトノードへの参照を有し、子視覚的レイアウトノードのそれの親視覚的レイアウトノードの座標空間内でのポジションを示す位置決め情報を有し、各子視覚的レイアウトノードが、それを参照する視覚的レイアウトハンドルへのバック参照を有し、各視覚的レイアウトハンドルが、親視覚的レイアウトノードへのバック参照を有するステップ、ならびに
移動された子視覚的レイアウトノードがそれの親視覚的レイアウトノードの座標空間内の開始位置から行き先親視覚的レイアウトノードの座標空間内の行き先位置まで移動された修正された視覚的レイアウトツリーを生成するステップであり、生成が、
移動された子視覚的レイアウトノードへの参照を有し、行き先親視覚的レイアウトノード内の行き先位置を指定する新たな位置決め情報を有する新たな視覚的レイアウトハンドルを生成するステップと、
移動された子視覚的レイアウトノードのバック参照が新たな視覚的レイアウトハンドルと異なる視覚的レイアウトハンドルを参照すること、および新たな視覚的レイアウトハンドルのバック参照が新たな親視覚的レイアウトノードとは異なる親視覚的レイアウトノードを参照することを検出したときに、移動された視覚的レイアウトノードがリパレンティングされていることを示すステップとを含むステップ
を含むことを特徴とする方法。
【０１３４】
実施形態７５。移動された視覚的レイアウトノードがリパレンティングされたことを示したときに、親視覚的レイアウトノードと行き先親視覚的レイアウトノードの共通の先祖視覚的レイアウトノードに別の視覚的レイアウトノードを追加するステップと、開始位置から行き先位置までの別の視覚的レイアウトノード内の位置の経路の生成を初期化するステップと、新たな視覚的レイアウトハンドルをアニメーションが進行中であることを示すように設定するステップとをさらに含むことを特徴とする実施形態７４に記載の方法。
【０１３５】
実施形態７６。レイアウトエンジンが新たな視覚的レイアウトハンドルについての位置決め情報を要求するときに、経路に沿った位置を取り出すステップをさらに含むことを特徴とする実施形態７５に記載の方法。
【０１３６】
実施形態７７。文書のコンテンツの位置の変化をアニメーション化するコンピューティングシステムであって、
文書の視覚的レイアウトツリー表現であり、視覚的レイアウトツリーが視覚的レイアウトノードを有する視覚的レイアウトツリー表現、および
視覚的レイアウトノードが視覚的レイアウトツリーの以前のバーション内の視覚的レイアウトノードの開始位置とは異なる視覚的レイアウトツリー内の行き先位置にあることを検出したときに、開始位置から行き先位置までの位置の経路に沿った位置決め情報の生成を初期化し、開始位置から行き先位置までの経路に沿った視覚的レイアウトツリーに基づいて文書の連続的なレンダリングを生成するコンピュータ実行可能命令
を記憶するコンピュータ可読記憶媒体と、
コンピュータ可読記憶媒体に記憶されたコンピュータ実行可能命令を実行するプロセッサとを含むことを特徴とするコンピューティングシステム。
【０１３７】
実施形態７８。視覚的レイアウトノードが、視覚的レイアウトノードを参照する視覚的レイアウトハンドルを有し、親視覚的レイアウトノードの文脈を有する視覚的レイアウトノードの位置を示すことを特徴とする実施形態７７に記載のコンピューティングシステム。
【０１３８】
実施形態７９。コンピュータ実行可能命令が、視覚的レイアウトハンドルの位置の違いに基づいて、視覚的レイアウトノードが異なる位置にあることをさらに検出することを特徴とする実施形態７８に記載のコンピューティングシステム。
【０１３９】
実施形態８０。コンピュータ実行可能命令が、視覚的レイアウトノードが視覚的レイアウトツリーの以前のバージョンの開始親視覚的レイアウトノードとは異なる行き先親視覚的レイアウトノード内にあるときに、別の視覚的レイアウトノードをさらに作成し、経路が、別の視覚的レイアウトノードの文脈内にあることを特徴とする実施形態７８に記載のコンピューティングシステム。
【０１４０】
実施形態８１。別の視覚的レイアウトノードが、行き先親視覚的レイアウトノードと開始親視覚的レイアウトノードの共通の先祖であることを特徴とする実施形態８０に記載のコンピューティングシステム。
【０１４１】
実施形態８２。コンピュータ実行可能命令が、視覚的レイアウトツリーおよび視覚的レイアウトツリーの以前のバージョンの視覚的レイアウトハンドル内の親視覚的レイアウトノードへのバック参照の違いに基づいて、視覚的レイアウトノードがリパレンティングされているとさらに決定することを特徴とする実施形態７８に記載のコンピューティングシステム。
【０１４２】
実施形態８３。文書のコンテンツの位置の変化をアニメーション化するコンピュータ実行可能命令を記憶するコンピュータ可読記憶媒体であって、コンピュータ実行可能命令が、
視覚的レイアウトノードが視覚的レイアウトツリーの以前のバージョン内の視覚的レイアウトノードの開始位置とは異なる視覚的レイアウトツリー内の行き先位置にあることを検出し、
開始位置から行き先位置までの位置の経路を生成し、
開始位置から行き先位置までの経路に沿った視覚的レイアウトツリーから文書の連続的なレンダリングを生成する
命令を含むことを特徴とするコンピュータ可読記憶媒体。
【０１４３】
実施形態８４。視覚的レイアウトノードが、視覚的レイアウトノードを参照する視覚的レイアウトハンドルを有し、親視覚的レイアウトノードの文脈を有する視覚的レイアウトノードの位置を示すことを特徴とする実施形態８３に記載のコンピュータ可読記憶媒体。
【０１４４】
実施形態８５。コンピュータ実行可能命令が、視覚的レイアウトハンドルの位置の違いに基づいて、視覚的レイアウトノードが異なる位置にあることを検出することを特徴とする実施形態８４に記載のコンピュータ可読記憶媒体。
【０１４５】
実施形態８６。コンピュータ実行可能命令が、視覚的レイアウトツリーおよび視覚的レイアウトツリーの以前のバージョンの視覚的レイアウトハンドル内の親視覚的レイアウトノードへのバック参照の違いに基づいて、視覚的レイアウトノードがリパレンティングされているとさらに決定することを特徴とする実施形態８４に記載のコンピュータ可読記憶媒体。
【０１４６】
実施形態８７。コンピュータ実行可能命令が、視覚的レイアウトノードがリパレンティングされているときに、視覚的レイアウトツリーの以前のバージョン内の親視覚的レイアウトノードと視覚的レイアウトツリーの親視覚的レイアウトノードの共通の先祖である一時的視覚的レイアウトノードを作成する命令をさらに含むことを特徴とする実施形態８４に記載のコンピュータ可読記憶媒体。
【０１４７】
ハンドル
実施形態８８。位置決めポインタを使用する文書の視覚的レイアウトツリーを生成するための、コンピューティングデバイスによって実行される方法であって、
視覚的レイアウトツリーの視覚的レイアウトノードを作成するステップと、
視覚的レイアウトノード同士をリンクして視覚的レイアウトツリーを形成する視覚的レイアウトノードの位置決めポインタを生成するステップであり、各位置決めポインタが、子視覚的レイアウトノードを指すポインタ、および子視覚的レイアウトノードを親視覚的レイアウトノードの文脈内で位置決めするための位置決め情報を有して、親視覚的レイアウトノードの文脈内の子視覚的レイアウトノードのポジションが子視覚的レイアウトノードを再作成する必要なく変更され得るようになっているステップとを含むことを特徴とする方法。
【０１４８】
実施形態８９。位置決めポインタが、子視覚的レイアウトノードについての色情報をさらに含むことを特徴とする実施形態８８に記載の方法。
【０１４９】
実施形態９０。位置決めポインタが、子視覚的レイアウトノードについてのｚ次情報をさらに含むことを特徴とする実施形態８８に記載の方法。
【０１５０】
実施形態９１。位置決めポインタが、子視覚的レイアウトノードについての回転情報をさらに含むことを特徴とする実施形態８８に記載の方法。
【０１５１】
実施形態９２。位置決めポインタが、子視覚的レイアウトノードについてのスケーリング情報をさらに含むことを特徴とする実施形態８８に記載の方法。
【０１５２】
実施形態９３。視覚的レイアウトノードを、文書が修正されて親視覚的レイアウトノードの文脈内の子視覚的レイアウトノードの位置決め情報が変更されたときに文書の第２の視覚的レイアウトツリーを生成するときに再使用するためにキャッシュするステップをさらに含むことを特徴とする実施形態８８に記載の方法。
【０１５３】
実施形態９４。変更された位置決め情報が、子視覚的レイアウトノードのポジション、スケーリング、配向、および回転からなる一群から選択されることを特徴とする実施形態９３に記載の方法。
【０１５４】
実施形態９５。視覚的レイアウトハンドルを使用する文書の視覚的レイアウトツリーをレンダリングするようにコンピューティングデバイスを制御するコンピュータ実行可能命令を記憶するコンピュータ可読記憶媒体であって、コンピュータ実行可能命令が、
視覚的レイアウトツリーの視覚的レイアウトノードの視覚的レイアウトハンドルを取り出し、視覚的レイアウトノードが、コンテンツを有し、視覚的レイアウトハンドルが、視覚的レイアウトノードへの参照、および視覚的レイアウトノードについてのフォーマッティング情報を有し、
視覚的レイアウトハンドルのフォーマッティング情報に従ってフォーマッティングされた視覚的レイアウトノードのコンテンツを出力し、文書が、視覚的レイアウトノードのコンテンツを変更することなく修正されて、視覚的レイアウトノードのコンテンツについてのフォーマッティング情報が変更され得る
命令を含むことを特徴とするコンピュータ可読記憶媒体。
【０１５５】
実施形態９６。フォーマッティング情報が、位置決め情報を含むことを特徴とする実施形態９５に記載のコンピュータ可読記憶媒体。
【０１５６】
実施形態９７。位置決め情報が、親視覚的レイアウトノードの文脈内の視覚的レイアウトノードのコンテンツのポジションを含むことを特徴とする実施形態９６に記載のコンピュータ可読記憶媒体。
【０１５７】
実施形態９８。位置決め情報が、視覚的レイアウトノードのコンテンツについてのｚ次情報を含むことを特徴とする実施形態９６に記載のコンピュータ可読記憶媒体。
【０１５８】
実施形態９９。位置決め情報が、視覚的レイアウトノードのコンテンツについての回転情報を含むことを特徴とする実施形態９６に記載のコンピュータ可読記憶媒体。
【０１５９】
実施形態１００。位置決め情報が、視覚的レイアウトノードのコンテンツについてのスケーリング情報を含むことを特徴とする実施形態９６に記載のコンピュータ可読記憶媒体。
【０１６０】
実施形態１０１。視覚的レイアウトノードのコンテンツが、文書が修正されて視覚的レイアウトノードのフォーマッティング情報が変更されたときに文書の第２の視覚的レイアウトツリーをレンダリングするときに再使用するためにキャッシュされることを特徴とする実施形態９５に記載のコンピュータ可読記憶媒体。
【０１６１】
実施形態１０２。フォーマッティング情報が、色情報を含むことを特徴とする実施形態９６に記載のコンピュータ可読記憶媒体。
【０１６２】
実施形態１０３。視覚的レイアウトハンドルを使用する文書の視覚的レイアウトツリーを生成するコンピューティングシステムであって、
視覚的レイアウトツリーの視覚的レイアウトノードを作成し、
視覚的レイアウトノード同士をリンクして視覚的レイアウトツリーを形成する視覚的レイアウトノードの視覚的レイアウトハンドルであり、各視覚的レイアウトハンドルが、コンテンツを有する子視覚的レイアウトノードへの参照、および親視覚的レイアウトノードの文脈内の子視覚的レイアウトノードのコンテンツをフォーマッティングするためのフォーマッティング情報を有して、親視覚的レイアウトノードの文脈内の子視覚的レイアウトノードのコンテンツのフォーマットが子視覚的レイアウトノードのコンテンツを再作成する必要なく変更され得るようになっている視覚的レイアウトハンドルを生成する
ようにコンピューティングシステムを制御するためのコンピュータ実行可能命令を記憶するメモリと、
メモリに記憶されたコンピュータ実行可能命令を実行するプロセッサとを含むことを特徴とするコンピューティングシステム。
【０１６３】
実施形態１０４。フォーマッティング情報が、位置決め情報を含むことを特徴とする実施形態１０３に記載のコンピューティングシステム。
【０１６４】
実施形態１０５。位置決め情報が、親視覚的レイアウトノードの文脈内の子視覚的レイアウトノードのコンテンツのポジションを含むことを特徴とする実施形態１０４に記載のコンピューティングシステム。
【０１６５】
実施形態１０６。位置決め情報が、子視覚的レイアウトノードのコンテンツについてのｚ次情報、回転情報、またはスケーリング情報を含むことを特徴とする実施形態１０４に記載のコンピューティングシステム。
【０１６６】
実施形態１０７。子視覚的レイアウトノードのコンテンツについてのフォーマッティング情報が、子視覚的レイアウトノードのコンテンツを再作成することなく修正され得ることを特徴とする実施形態１０３に記載のコンピューティングシステム。
【０１６７】
仮想化
実施形態１０８。文書のコンテンツをレンダリングする際に使用されるように仮想化された視覚的レイアウトツリーを生成するための、コンピューティングデバイスによって実行される方法であって、文書が、視覚的記述ノードを有する視覚的記述ツリーによって表され、仮想化された視覚的レイアウトツリーが視覚的レイアウトノードを有する方法において、
文書内のアンカ点を受け取るステップであり、アンカ点が、視覚的記述ツリー内のアンカ視覚的記述ノードを識別するステップと、
アンカ点と関連付けられたコンテンツが位置決めされることになる表示領域内の目標位置を受け取るステップと、
視覚的記述ツリーのルートからアンカ視覚的記述ノードまでの経路に沿って視覚的記述ノードの視覚的レイアウトノードを生成するステップと、
アンカ視覚的記述ノードの視覚的レイアウトノードを生成するステップであり、視覚的レイアウトノードが、表示領域内の目標位置に位置決めされることになるアンカ点のアンカ視覚的記述ノードのコンテンツのレイアウトを指定するステップと、
アンカ視覚的記述ノードの視覚的レイアウトノードを生成した後で、視覚的記述ツリーのルートからアンカ視覚的記述ノードまでの経路に沿った視覚的記述ノードの子孫である視覚的記述ノードが表示領域内に出現するコンテンツを有さないときには、その子孫の視覚的記述ノードの視覚的レイアウトノードを生成しないステップとを含むことを特徴とする方法。
【０１６８】
実施形態１０９。特定のタイプの視覚的記述ノードを処理するときに、その特定のタイプの視覚的記述ノードを処理するためのレイアウトオブジェクトを呼び出すステップをさらに含むことを特徴とする実施形態１０８に記載の方法。
【０１６９】
実施形態１１０。レイアウトオブジェクトが仮想化に対応しているときには、レイアウトオブジェクトが、子視覚的記述ノードが表示領域内に出現するコンテンツを有さないときには子視覚的記述ノードの視覚的レイアウトノードを生成しないことを特徴とする実施形態１０９に記載の方法。
【０１７０】
実施形態１１１。レイアウトオブジェクトが仮想化に対応していないときには、レイアウトオブジェクトが、子視覚的記述ノードが表示領域内に出現するコンテンツを有さなくても、子視覚的記述ノードの視覚的レイアウトノードを生成することを特徴とする実施形態１０９に記載の方法。
【０１７１】
実施形態１１２。レイアウトオブジェクトが仮想化に対応していないときには、子視覚的記述ノードのコンテンツが表示領域に含まれるかどうかを決定し、含まれない場合には、子視覚的記述ノードのレイアウトオブジェクトを呼び出さないことを特徴とする実施形態１０９に記載の方法。
【０１７２】
実施形態１１３。レイアウトエンジンが、表示領域がコンテンツのための余白を有するかどうかについて、レイアウトオブジェクトに指示を提供することを特徴とする実施形態１０９に記載の方法。
【０１７３】
実施形態１１４。レイアウトオブジェクトが、視覚的記述ノードのコンテンツをレイアウトするときに使用される表示領域の量を示す指示をレイアウトエンジンに提供することを特徴とする実施形態１１３に記載の方法。
【０１７４】
実施形態１１５。アンカ点が、アンカ視覚的記述ノード内の名前付きの点であることを特徴とする実施形態１０８に記載の方法。
【０１７５】
実施形態１１６。識別された視覚的記述ノードのコンテンツが表示領域を埋めないときに、１または複数の視覚的記述ノードの視覚的レイアウトノードを生成して、表示領域をコンテンツで埋めるステップをさらに含むことを特徴とする実施形態１０８に記載の方法。
【０１７６】
実施形態１１７。視覚的記述ツリーが仮想化されて、表示領域中にレンダリングするための視覚的レイアウトノードの生成に対応する必要に応じて仮想化された視覚的レイアウトツリーの生成中に視覚的記述ノードが生成されるようになっていることを特徴とする実施形態１０８に記載の方法。
【０１７７】
実施形態１１８。文書のコンテンツに基づいて視覚的記述ツリーを生成するアプリケーションが、必要に応じて視覚的記述ノードを生成するように通知されることを特徴とする実施形態１１７に記載の方法。
【０１７８】
実施形態１１９。文書のコンテンツをレンダリングする際に使用されるように仮想化された視覚的レイアウトツリーを生成するコンピューティングデバイスであり、文書が、視覚的記述ノードを有する視覚的記述ツリーによって表され、仮想化された視覚的レイアウトツリーが視覚的レイアウトノードを有するコンピューティングデバイスであって、
文書内のアンカ点を受け取り、アンカ点が、視覚的記述ツリー内のアンカ視覚的記述ノードを識別し、
アンカ点と関連付けられたコンテンツが位置決めされることになる表示領域内の目標位置を受け取り、
視覚的記述ツリーのルートからアンカ視覚的記述ノードも含むアンカ視覚的記述ノードまでの経路に沿った視覚的記述ノード、および表示領域内に出現するコンテンツを有する他の視覚的記述ノードについては視覚的レイアウトノードを生成するが、アンカ点が目標位置に位置する表示領域内に出現するコンテンツを有さない他の視覚的記述ノードについては生成しない
コンピュータ実行可能命令を記憶するコンピュータ可読記憶媒体と、
コンピュータ可読記憶媒体に記憶されたコンピュータ実行可能命令を実行するプロセッサとを含むことを特徴とするコンピューティングデバイス。
【０１７９】
実施形態１２０。視覚的記述ツリーが仮想化されて、表示領域中にレンダリングするための視覚的レイアウトノードの生成に対応する必要に応じて仮想化された視覚的レイアウトツリーの生成中に視覚的記述ノードが生成されるようになっていることを特徴とする実施形態１１９に記載のコンピューティングデバイス。
【０１８０】
実施形態１２１。アプリケーションが、文書のコンテンツに基づいて視覚的記述ツリーを生成し、コンピュータ可読記憶媒体が、表示領域中のコンテンツのレンダリングに対応する必要に応じて視覚的記述ノードを生成するようにアプリケーションに通知するコンピュータ実行可能命令をさらに記憶することを特徴とする実施形態１２０に記載のコンピューティングデバイス。
【０１８１】
実施形態１２２。コンピュータ可読記憶媒体が、特定のタイプの視覚的記述ノードを処理するレイアウトオブジェクトを呼び出すコンピュータ実行可能命令をさらに記憶し、レイアウトオブジェクトが仮想化されるときには、レイアウトオブジェクトが、表示領域内に出現するコンテンツを有さない視覚的レイアウトノードを生成しないことを特徴とする実施形態１１９に記載のコンピューティングデバイス。
【０１８２】
実施形態１２３。コンピュータ可読記憶媒体が、特定のタイプの視覚的記述ノードを処理するレイアウトオブジェクトを呼び出すコンピュータ実行可能命令をさらに記憶し、レイアウトオブジェクトが仮想化されないときには、レイアウトエンジンが、表示領域内に出現するコンテンツを有さない視覚的記述ノードの子視覚的記述ノードのレイアウトオブジェクトを呼び出さないことを特徴とする実施形態１１９に記載のコンピューティングデバイス。
【０１８３】
実施形態１２４。文書のコンテンツをレンダリングする際に使用されるように仮想化された視覚的レイアウトツリーを生成するようにコンピューティングデバイスを制御するコンピュータ実行可能命令を記憶するコンピュータ可読記憶媒体であり、文書が、視覚的記述ノードを有する視覚的記述ツリーによって表され、仮想化された視覚的レイアウトツリーが視覚的レイアウトノードを有するコンピュータ可読記憶媒体であって、コンピュータ実行可能命令が、
視覚的記述ツリー内のアンカ視覚的記述ノードの識別を受け取り、
アンカ視覚的記述ノードを含む視覚的記述ノード、表示領域内に出現するコンテンツを有する他の視覚的記述ノードについては視覚的レイアウトノードを生成するが、表示領域内に出現するコンテンツを有さない他の視覚的記述ノードについては生成しない
命令を含むことを特徴とするコンピュータ可読記憶媒体。
【０１８４】
実施形態１２５。アンカ点が、表示領域内の目標位置に位置決めされることを特徴とする実施形態１２４に記載のコンピュータ可読記憶媒体。
【０１８５】
実施形態１２６。コンピュータ実行可能命令が、表示領域中にレンダリングするための視覚的レイアウトノードの生成に対応する必要に応じて仮想化された視覚的レイアウトツリーの生成中に視覚的記述ノードを生成するようにアプリケーションに通知する命令をさらに含むことを特徴とする実施形態１２４に記載のコンピュータ可読記憶媒体。
【０１８６】
実施形態１２７。コンピュータ実行可能命令が、特定のタイプの視覚的記述ノードを処理するレイアウトオブジェクトを呼び出す命令をさらに含み、レイアウトオブジェクトが仮想化されるときには、レイアウトオブジェクトが、表示領域内に出現するコンテンツを有さない視覚的レイアウトノードを生成しないことを特徴とする実施形態１２４に記載のコンピュータ可読記憶媒体。
【０１８７】
名前付きの点
実施形態１２８。文書のコンテンツをレンダリングする際に使用される視覚的レイアウトツリーを生成するための、コンピューティングデバイスによって実行される方法であって、文書が、視覚的記述ノードを有する視覚的記述ツリーによって表される方法において、
文書内のアンカ点を受け取るステップであり、アンカ点が、視覚的記述ツリー内のアンカ視覚的記述ノードおよびアンカ視覚的記述ノード内の名前付きの点を識別するステップと、
アンカ点と関連付けられたコンテンツが位置決めされることになる表示領域内の目標位置を受け取るステップと、
レイアウトオブジェクトにアンカ視覚的記述ノードについて問い合わせて、アンカ視覚的記述ノードの座標空間内の名前付きの点の位置を提供するステップと、
アンカ視覚的記述ノードの座標空間内の名前付きの点の位置が表示領域内の目標位置に位置決めされるように視覚的レイアウトツリーを生成するステップとを含むことを特徴とする方法。
【０１８８】
実施形態１２９。視覚的記述ノードがタイプを有し、カスタムに名付けられた点が、そのタイプの視覚的記述ノードについて規定されることを特徴とする実施形態１２８に記載の方法。
【０１８９】
実施形態１３０。複数のカスタムに名付けられた点が、そのタイプの視覚的記述ノードについて規定されることを特徴とする実施形態１２９に記載の方法。
【０１９０】
実施形態１３１。視覚的レイアウトツリーを生成するステップが、
視覚的レイアウトツリーの各視覚的レイアウトノードについて視覚的レイアウトハンドルを生成するステップであり、視覚的レイアウトハンドルが、視覚的レイアウトノード、および識別された視覚的レイアウトノードのコンテンツを親視覚的レイアウトノードの座標空間内で位置決めするための位置決め情報を識別するステップと、
名前付きの点が表示領域の目標位置に位置決めされるように、ルート視覚的レイアウトノードからアンカ視覚的記述ノードのコンテンツを表す視覚的レイアウトノードまでの経路上の視覚的レイアウトノードの視覚的レイアウトハンドルの位置決め情報を設定するステップと
をさらに含むことを特徴とする実施形態１２８に記載の方法。
【０１９１】
実施形態１３２。アンカ視覚的レイアウトノードのコンテンツが、アンカ視覚的レイアウトノードの視覚的レイアウトハンドルおよび各先祖視覚的レイアウトノードの位置決め情報に基づいて表示領域内で位置付けられ、位置決め情報が、位置、配向、およびスケーリング情報を含むことを特徴とする実施形態１３１に記載の方法。
【０１９２】
実施形態１３３。アンカ視覚的記述ノードが、アンカ視覚的記述ノードを有する様々な名前付きの点に基づいて位置決めされ得ることを特徴とする実施形態１２８に記載の方法。
【０１９３】
実施形態１３４。各視覚的記述ノードが、その視覚的記述ノードの座標空間の原点を表す名前付きの点を有することを特徴とする実施形態１２８に記載の方法。
【０１９４】
実施形態１３５。視覚的記述ノードが、その視覚的記述ノードのコンテンツの外接長方形の左上、中央上、右上、中央左、中央、中央右、左下、中央下、および右下の点からなる一群から選択される点を表す名前付きの点を有することを特徴とする実施形態１２８に記載の方法。
【０１９５】
実施形態１３６。文書のコンテンツをレンダリングする際に使用される視覚的レイアウトツリーを生成するコンピューティングシステムであり、文書が、視覚的記述ノードを有する視覚的記述ツリーによって表されるコンピューティングシステムであって、
視覚的記述ツリー内のアンカ視覚的記述ノードおよびアンカ視覚的記述ノードの名前付きの点を示す指示を受け取り、
表示領域内の目標位置を示す指示を受け取り、
アンカ視覚的記述ノードの座標空間内の名前付きの点の位置を識別し、
アンカ視覚的記述ノードの座標空間内の名前付きの点の位置が表示領域内の目標位置に位置決めされるように視覚的レイアウトツリーを生成する
コンピュータ実行可能命令を記憶するコンピュータ可読記憶媒体と、
コンピュータ可読記憶媒体に記憶されたコンピュータ実行可能命令を実行するプロセッサとを含むことを特徴とするコンピューティングシステム。
【０１９６】
実施形態１３７。視覚的記述ノードがタイプを有し、カスタムに名付けられた点が、そのタイプの視覚的記述ノードについて規定されることを特徴とする実施形態１３６に記載のコンピューティングシステム。
【０１９７】
実施形態１３８。複数のカスタムに名付けられた点が、そのタイプの視覚的記述ノードについて規定されることを特徴とする実施形態１３７に記載のコンピューティングシステム。
【０１９８】
実施形態１３９。視覚的レイアウトツリーを生成するコンピュータ実行可能命令が、
視覚的レイアウトツリーの各視覚的レイアウトノードについて視覚的レイアウトハンドルを生成し、視覚的レイアウトハンドルが、視覚的レイアウトノード、および識別された視覚的レイアウトノードのコンテンツを親視覚的レイアウトノードの座標空間内で位置決めするための位置決め情報を識別し、
名前付きの点が表示領域の目標位置に位置決めされるように、ルート視覚的レイアウトノードからアンカ視覚的記述ノードのコンテンツを表す視覚的レイアウトノードまでの経路上の視覚的レイアウトノードの視覚的レイアウトハンドルの位置決め情報を設定する
コンピュータ実行可能命令をさらに含むことを特徴とする実施形態１３６に記載のコンピューティングシステム。
【０１９９】
実施形態１４０。アンカ視覚的レイアウトノードのコンテンツを、アンカ視覚的レイアウトノードの視覚的レイアウトハンドルおよび各先祖視覚的レイアウトノードの位置決め情報に基づいて表示領域内でレンダリングするコンピュータ実行可能命令をさらに含み、位置決め情報が、位置、配向、およびスケーリング情報を含むことを特徴とする実施形態１３９に記載のコンピューティングシステム。
【０２００】
実施形態１４１。アンカ視覚的記述ノードが、アンカ視覚的記述ノードを有する様々な名前付きの点に基づいて位置決めされ得ることを特徴とする実施形態１３６に記載のコンピューティングシステム。
【０２０１】
実施形態１４２。各視覚的記述ノードが、その視覚的記述ノードの座標空間の原点を表す名前付きの点を有することを特徴とする実施形態１３６に記載のコンピューティングシステム。
【０２０２】
実施形態１４３。視覚的記述ノードが、その視覚的記述ノードのコンテンツの外接長方形の左上、中央上、右上、中央左、中央、中央右、左下、中央下、および右下の点からなる一群から選択される点を表す名前付きの点を有することを特徴とする実施形態１３６に記載のコンピューティングシステム。
【０２０３】
実施形態１４４。視覚的記述ツリー内のアンカ視覚的記述ノードおよびアンカ視覚的記述ノードの名前付きの点を示す指示を受け取り、
表示領域内の目標位置を示す指示を受け取り、
アンカ視覚的記述ノードの座標空間内の名前付きの点の位置を識別し、
アンカ視覚的記述ノードの座標空間内の名前付きの点の位置が表示領域内の目標位置に位置決めされるように視覚的レイアウトツリーを生成する
コンピュータ実行可能命令を記憶するコンピュータ可読記憶媒体。
【０２０４】
実施形態１４５。視覚的レイアウトツリーを生成する命令が、視覚的レイアウトツリーの各視覚的レイアウトノードについて視覚的レイアウトハンドルを生成し、視覚的レイアウトハンドルが、視覚的レイアウトノード、および識別された視覚的レイアウトノードのコンテンツを親視覚的レイアウトノードの座標空間内で位置決めするための位置決め情報を識別し、
名前付きの点が表示領域の目標位置に位置決めされるように、ルート視覚的レイアウトノードからアンカ視覚的記述ノードのコンテンツを表す視覚的レイアウトノードまでの経路上の視覚的レイアウトノードの視覚的レイアウトハンドルの位置決め情報を設定する
命令をさらに含むことを特徴とする実施形態１４４に記載のコンピュータ可読記憶媒体。
【０２０５】
実施形態１４６。アンカ視覚的レイアウトノードのコンテンツを、アンカ視覚的レイアウトノードの視覚的レイアウトハンドルおよび各先祖視覚的レイアウトノードの位置決め情報に基づいて表示領域内でレンダリングする命令をさらに記憶し、位置決め情報が、位置、配向、およびスケーリングを含むことを特徴とする実施形態１４５に記載のコンピュータ可読記憶媒体。
【０２０６】
実施形態１４７。視覚的記述ノードがタイプを有し、カスタムに名付けられた点が、そのタイプの視覚的記述ノードについて規定されることを特徴とする実施形態１４５に記載のコンピュータ可読記憶媒体。
【０２０７】
変形ウィジェットのルーピング
実施形態１４８。文書のコンテンツをレンダリングする際に使用される視覚的レイアウトツリーの視覚的レイアウトノードを生成するための、コンピューティングデバイスによって実行される方法であって、文書が、視覚的記述ノードを有する視覚的記述ツリーによって表される方法において、視覚的記述ツリーの視覚的記述ノードを、
その視覚的記述ノードのタイプを決定し、
決定された視覚的記述ノードのタイプの視覚的記述ノードを処理するレイアウトオブジェクトの制御下で、
その視覚的記述ノードによって表されるコンテンツをレンダリングするための視覚的レイアウトツリーの視覚的レイアウトノードを生成し、
視覚的記述ツリーに追加の視覚的記述ノードを追加し、追加の視覚的記述ノードが、文書のコンテンツとともにレンダリングされることになる追加のコンテンツを有し、
追加のコンテンツのコンテンツをレンダリングするための視覚的レイアウトツリーの視覚的レイアウトノードを生成することによって追加の視覚的記述ノードを処理する
ことによって処理するステップを含むことを特徴とする方法。
【０２０８】
実施形態１４９。追加の視覚的記述ノードを処理することが、一時的視覚的記述ノードのタイプを決定することを含み、追加の視覚的記述ノードを処理することが、決定されたタイプの追加の視覚的記述ノードのレイアウトオブジェクトの制御下であることを特徴とする実施形態１４８に記載の方法。
【０２０９】
実施形態１５０。追加の視覚的記述ノードを処理することが、決定されたタイプの追加の視覚的記述ノードのレイアウトオブジェクトをインスタンス化することを含むことを特徴とする実施形態１４９に記載の方法。
【０２１０】
実施形態１５１。追加のコンテンツが、文書を修正するグラフィカルユーザインタフェースウィジェットであることを特徴とする実施形態１４８に記載の方法。
【０２１１】
実施形態１５２。文書が修正されたときに、修正によって影響される視覚的記述ツリーの部分をアプリケーションによって再生するステップを含むことを特徴とする実施形態１５１に記載の方法。
【０２１２】
実施形態１５３。アプリケーションが修正によって影響される視覚的記述ツリーの部分を再生した後で、視覚的レイアウトツリーの視覚的レイアウトノードを再生するステップを含むことを特徴とする実施形態１５２に記載の方法。
【０２１３】
実施形態１５４。アプリケーションによって再生するステップが、修正された視覚的記述ノードに修正されているものとしてアプリケーションが注釈を付けるステップを含むことを特徴とする実施形態１５２に記載の方法。
【０２１４】
実施形態１５５。アプリケーションによって再生するステップが、それ自体は修正されていないが修正された子孫視覚的記述ノードを有する視覚的記述ノードに修正された子孫を有するものとして注釈を付けるステップをさらに含むことを特徴とする実施形態１５４に記載の方法。
【０２１５】
実施形態１５６。文書の修正が、視覚的記述ノードのコンテンツが表示されることになる領域のサイズ変更を含むことを特徴とする実施形態１５１に記載の方法。
【０２１６】
実施形態１５７。追加のコンテンツが、複数の表示領域に表示されることになる重複コンテンツであり、重複コンテンツを表す各表示領域ごとに追加の視覚的記述ノードが追加されることを特徴とする実施形態１４８に記載の方法。
【０２１７】
実施形態１５８。視覚的記述ツリーの視覚的記述ノードによって表されるコンテンツをレンダリングする視覚的レイアウトツリーの視覚的レイアウトノードを生成し、視覚的記述ツリーが文書のコンテンツを表し、
視覚的記述ツリーに追加の視覚的記述ノードを追加し、追加の視覚的記述ノードが、文書のコンテンツとともにレンダリングされる追加のコンテンツを有し、
追加のコンテンツのコンテンツをレンダリングするための視覚的レイアウトツリーの視覚的レイアウトノードを生成することによって一時的視覚的記述ノードを処理する
コンピュータ実行可能命令を記憶するコンピュータ可読記憶媒体と、
コンピュータ可読記憶媒体に記憶されたコンピュータ実行可能命令を実行するプロセッサとを含むことを特徴とするコンピューティングデバイス。
【０２１８】
実施形態１５９。コンピュータ実行可能命令が、視覚的記述ノードのタイプを決定する命令をさらに含み、生成し、追加し、処理するコンピュータ実行可能命令が、決定されたタイプの視覚的記述ノードのレイアウトオブジェクトの命令であることを特徴とする実施形態１５８に記載のコンピューティングデバイス。
【０２１９】
実施形態１６０。追加の視覚的記述ノードを処理するコンピュータ実行可能命令が、追加の視覚的記述ノードのタイプを決定するコンピュータ実行可能命令をさらに含み、追加の視覚的記述ノードを処理するコンピュータ実行可能命令が、決定されたタイプの追加の視覚的記述ノードのレイアウトオブジェクトの命令であることを特徴とする実施形態１５９に記載のコンピューティングデバイス。
【０２２０】
実施形態１６１。一時的視覚的記述ノードを処理するコンピュータ実行可能命令が、決定されたタイプの追加の視覚的記述ノードのレイアウトオブジェクトをインスタンス化する命令をさらに含むことを特徴とする実施形態１６０に記載のコンピューティングデバイス。
【０２２１】
実施形態１６２。追加のコンテンツが、文書を修正するグラフィカルユーザインタフェースであることを特徴とする実施形態１５８に記載のコンピューティングデバイス。
【０２２２】
実施形態１６３。コンピュータ実行可能命令が、文書が修正されたときに、修正によって影響される視覚的記述ツリーの部分をアプリケーションによって再生する命令をさらに含むことを特徴とする実施形態１６２に記載のコンピューティングデバイス。
【０２２３】
実施形態１６４。視覚的記述ツリーの視覚的記述ノードによって表されるコンテンツをレンダリングするための視覚的レイアウトツリーの視覚的レイアウトノードを生成し、視覚的記述ツリーが文書のコンテンツを表し、
視覚的記述ツリーに追加の視覚的記述ノードを追加し、追加の視覚的記述ノードが、文書のコンテンツとともにレンダリングされることになる追加のコンテンツを有し、
追加のコンテンツのコンテンツをレンダリングするための視覚的レイアウトツリーの視覚的レイアウトノードを生成することによって追加の視覚的記述ノードを処理する
命令を含むコンピュータ実行可能命令を記憶するコンピュータ可読記憶媒体。
【０２２４】
実施形態１６５。追加のコンテンツが、複数の表示領域に表示されることになる重複コンテンツであり、重複コンテンツを表す各表示領域ごとに追加の視覚的記述ノードが追加されることを特徴とする実施形態１６４に記載のコンピュータ可読記憶媒体。
【０２２５】
実施形態１６６。視覚的記述ノードのタイプを決定するコンピュータ実行可能命令をさらに記憶し、生成し、追加し、処理するコンピュータ実行可能命令が、決定されたタイプの視覚的記述ノードのレイアウトオブジェクトの命令であることを特徴とする実施形態１６４に記載のコンピュータ可読記憶媒体。
【０２２６】
実施形態１６７。一時的視覚的記述ノードを処理するコンピュータ実行可能命令が、一時的視覚的記述ノードのタイプを決定するコンピュータ実行可能命令をさらに含み、追加の視覚的記述ノードを処理するコンピュータ実行可能命令が、決定されたタイプの追加の視覚的記述ノードのレイアウトオブジェクトの命令であることを特徴とする実施形態１６６に記載のコンピュータ可読記憶媒体。
【０２２７】
前述より、本明細書では例示を目的として本発明の特定の実施形態について説明されていること、および本発明の範囲を逸脱することなく様々な修正が加えられ得ることは理解されるであろう。したがって、本発明は、添付の特許請求の範囲以外には制限されない。
【図１】
2017532667.tif 000003
【図２】
2017532667.tif 000004
【図３】
2017532667.tif 000005
【図４】
2017532667.tif 000006
【図５】
2017532667.tif 000007
【図６】
2017532667.tif 000008
【図７】
2017532667.tif 000009
【図８】
2017532667.tif 000010
【図９】
2017532667.tif 000011
【図１０】
2017532667.tif 000012
【図１１】
2017532667.tif 000013
【図１２】
2017532667.tif 000014
【図１３】
2017532667.tif 000015
【図１４Ａ】
2017532667.tif 000016
【図１４Ｂ】
2017532667.tif 000017
【図１５】
2017532667.tif 000018
【図１６】
2017532667.tif 000019
【図１７】
2017532667.tif 000020
【図１８】
2017532667.tif 000021
【図１９】
2017532667.tif 000022
【図２０】
2017532667.tif 000023
【図２１】
2017532667.tif 000024
【図２２】
2017532667.tif 000025
【図２３】
2017532667.tif 000026
【図２４】
2017532667.tif 000027
【図２５】
2017532667.tif 000028
【図２６】
2017532667.tif 000029
【国際調査報告】
2017532667.tif 000030
2017532667.tif 000031
2017532667.tif 000032
2017532667.tif 000033
2017532667.tif 000034
2017532667.tif 000035