(57)【要約】  ネイティブにサポートされたインクストロークデータ構造を保持するように構成されたプラットフォームレベルコンテナが維持される。プラットフォームレベルコンテナは、複数の異なるアプリケーションにアクセス可能である。プラットフォームレベルコンテナによって保持される各インクストロークデータ構造に対応しているインクストローク可視要素は、ディスプレイを介してレンダリングされる。プラットフォームレベルコンテナによって保持されるインクストロークデータ構造に対応しているインクストローク変更イベントが認識される。インクストロークデータ構造は、インクストローク変更イベントに従って更新されたインクストロークデータ構造へと変更される。更新されたインクストロークデータ構造に対応しているインクストローク可視要素は、変更されていないインクストロークデータ構造に対応しているインクストローク可視要素を再レンダリングすることなく、ディスプレイを介してレンダリングされる。
2018509686.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングシステム上で、インクストローク可視要素をレンダリングするための方法であって、
ネイティブにサポートされたインクストロークデータ構造を保持するように構成されたプラットフォームレベルコンテナであって、複数の異なるアプリケーションにアクセス可能なプラットフォームレベルコンテナを維持するステップと、
ディスプレイを介して、前記プラットフォームレベルコンテナによって保持される各インクストロークデータ構造に対応しているインクストローク可視要素をレンダリングするステップと、
前記プラットフォームレベルコンテナによって保持されるインクストロークデータ構造に対応しているインクストローク変更イベントを認識するステップと、
前記インクストローク変更イベントに従って、前記インクストロークデータ構造を、更新されたインクストロークデータ構造へと変更するステップと、
前記ディスプレイを介して、変更されていないインクストロークデータ構造に対応しているインクストローク可視要素を再レンダリングすることなく、前記更新されたインクストロークデータ構造に対応しているインクストローク可視要素をレンダリングするステップと
を含む方法。
【請求項２】
前記インクストロークデータ構造を、更新されたインクストロークデータ構造へと変更するステップは、前記プラットフォームレベルコンテナにインクストロークデータ構造を追加するステップと、前記プラットフォームレベルコンテナからインクストロークデータ構造を取り除くステップと、前記プラットフォームレベルコンテナのインクストロークデータ構造のパラメータを修正するステップとのうちの１つまたは複数を含む、請求項１に記載の方法。
【請求項３】
トリガに応答して、前記ディスプレイを介して、第１のプラットフォームレベルコンテナのインクストロークデータ構造に対応しているすべてのインクストローク可視要素を異なるレンダリングと置換するステップ
をさらに含む、請求項１に記載の方法。
【請求項４】
前記インクストローク変更イベントは、前記複数のアプリケーションのうちの特定のアプリケーションから受信される、請求項１に記載の方法。
【請求項５】
前記インクストローク変更イベントは、ユーザ入力に応答して認識される、請求項１に記載の方法。
【請求項６】
認識可能なジェスチャのメニューからの特定のジェスチャとして前記ユーザ入力を解釈するステップをさらに含んでおり、前記インクストロークデータ構造は、前記特定のジェスチャに基づいて、更新されたインクストロークデータ構造へと変更される、請求項５に記載の方法。
【請求項７】
前記特定のジェスチャは、消去ジェスチャであり、変更するステップは、前記プラットフォームレベルコンテナから前記インクストロークデータ構造を取り除くステップ、または前記インクストロークデータ構造に表示しないためのフラグ付けするステップを含んでおり、
前記ディスプレイを介して、前記更新されたインクストロークデータ構造に対応しているインクストローク可視要素をレンダリングするステップは、前記ディスプレイから前記インクストローク可視要素を取り除くステップを含む、請求項６に記載の方法。
【請求項８】
前記プラットフォームレベルコンテナは、グラフィカルユーザインターフェースの第１のエリアに関連する第１のプラットフォームレベルコンテナであり、前記方法は、前記第１のエリアとは異なる前記グラフィカルユーザインターフェースの第２のエリアに関連する第２のプラットフォームレベルコンテナを維持するステップをさらに含む、請求項１に記載の方法。
【請求項９】
前記第１のプラットフォームレベルコンテナのインクストロークレンダリング動作は、前記第２のプラットフォームレベルコンテナのインクストロークレンダリング動作とは異なる、請求項８に記載の方法。
【請求項１０】
前記第１のプラットフォームレベルコンテナに関連するインクストローク変更イベントは、前記第１のエリアを対象とする第１のユーザ入力タイプのユーザ入力に応答して認識され、前記第２のプラットフォームレベルコンテナに関連するインクストローク変更イベントは、前記第２のエリアを対象とする第２のユーザ入力タイプのユーザ入力に応答して認識され、前記第２のユーザ入力タイプは、前記第１のユーザ入力タイプとは異なる、請求項１に記載の方法。
【請求項１１】
ロジックマシンと、
ネイティブにサポートされたインクストロークデータ構造を保持するように構成されたプラットフォームレベルコンテナであって、複数の異なるアプリケーションにアクセス可能なプラットフォームレベルコンテナを維持し、
ディスプレイを介して、前記プラットフォームレベルコンテナによって保持される各インクストロークデータ構造に対応しているインクストローク可視要素をレンダリングし、
前記プラットフォームレベルコンテナによって保持されるインクストロークデータ構造に対応しているインクストローク変更イベントを認識し、
前記インクストローク変更イベントに従って、前記インクストロークデータ構造を、更新されたインクストロークデータ構造へと変更し、および
前記ディスプレイを介して、変更されていないインクストロークデータ構造に対応しているインクストローク可視要素を再レンダリングすることなく前記更新されたインクストロークデータ構造に対応しているインクストローク可視要素をレンダリングする
ように前記ロジックマシンによって実行可能な命令を保持するストレージマシンと
を備えているコンピューティングシステム。
【請求項１２】
前記インクストロークデータ構造を、更新されたインクストロークデータ構造へと変更するステップは、前記プラットフォームレベルコンテナにインクストロークデータ構造を追加するステップと、前記プラットフォームレベルコンテナからインクストロークデータ構造を取り除くステップと、前記プラットフォームレベルコンテナのインクストロークデータ構造のパラメータを修正するステップとのうちの１つまたは複数を含む、請求項１１に記載のコンピューティングシステム。
【請求項１３】
前記ストレージマシンは、さらに、
トリガに応答して、前記ディスプレイを介して、第１のプラットフォームレベルコンテナのインクストロークデータ構造に対応しているすべてのインクストローク可視要素を異なるレンダリングと置換する
ように、前記ロジックマシンによって実行可能な命令を保持する、請求項１１に記載のコンピューティングシステム。
【請求項１４】
前記インクストローク変更イベントは、前記複数のアプリケーションのうちの特定のアプリケーションから受信される、請求項１１に記載のコンピューティングシステム。
【請求項１５】
前記インクストローク変更イベントは、ユーザ入力に応答して認識される、請求項１１に記載のコンピューティングシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  描画器具のストロークを模倣するユーザ入力は、ディスプレイの上に提示されるデジタルインクとして、コンピューティングデバイスによってレンダリングされることがある。例えば、インクストロークユーザ入力は、指を用いてタッチセンサ（例えば、タッチパッドまたはタッチディスプレイ）にタッチすることにより、提供されることもある。別の例においては、インクストロークユーザ入力は、スタイラスやマウスなどのポインティングデバイスによって提供されてもよい。
【発明の概要】
【０００２】
[0002]  この概要は、以下詳細な説明において、さらに、説明される概念の選択を簡略化された形態で導入するために提供されている。この概要は、特許請求の範囲の主題についての重要な特徴または絶対不可欠の特徴を識別することを意図してもおらず、また特許請求の範囲の主題の範囲を限定するために使用されることを意図してもいない。さらに、特許請求の範囲の主題は、本開示のうちの任意の部分において指摘される任意の、またはすべての不利な点を解決する実装形態に限定されるものではない。
【０００３】
[0003]  ネイティブにサポートされたインクストロークデータ構造を保持するように構成されたプラットフォームレベルコンテナが維持される。プラットフォームレベルコンテナは、複数の異なるアプリケーションにアクセス可能である。プラットフォームレベルコンテナによって保持される各インクストロークデータ構造に対応しているインクストローク可視要素（ink stroke visual）が、ディスプレイを介してレンダリングされる。プラットフォームレベルコンテナによって保持されるインクストロークデータ構造に対応しているインクストローク変更イベントが認識される。インクストロークデータ構造は、インクストローク変更イベントに従って、更新されたインクストロークデータ構造へと変更される。更新されたインクストロークデータ構造に対応しているインクストローク可視要素は、変更されていないインクストロークデータ構造に対応しているインクストローク可視要素を再レンダリングすることなく、ディスプレイを介してレンダリングされる。
【図面の簡単な説明】
【０００４】
【図１】[0004]インクストローク可視要素をレンダリングするためのアーキテクチャを含む例示的なコンピューティングシステムを示す図である。
【図２】[0005]インクストローク可視要素をレンダリングするための例示的な方法を示す図である。
【図３】[0006]異なる処理モードで異なるようにインクストローク可視要素をレンダリングするための別の例示的な方法を示す図である。
【図４Ａ】[0007]更新されたインクストロークデータ構造に対応している１つまたは複数のインクストローク可視要素がレンダリングされる例示的なシナリオを示す図である。
【図４Ｂ】更新されたインクストロークデータ構造に対応している１つまたは複数のインクストローク可視要素がレンダリングされる例示的なシナリオを示す図である。
【図４Ｃ】更新されたインクストロークデータ構造に対応している１つまたは複数のインクストローク可視要素がレンダリングされる例示的なシナリオを示す図である。
【図４Ｄ】更新されたインクストロークデータ構造に対応している１つまたは複数のインクストローク可視要素がレンダリングされる例示的なシナリオを示す図である。
【図４Ｅ】更新されたインクストロークデータ構造に対応している１つまたは複数のインクストローク可視要素がレンダリングされる例示的なシナリオを示す図である。
【図４Ｆ】更新されたインクストロークデータ構造に対応している１つまたは複数のインクストローク可視要素がレンダリングされる例示的なシナリオを示す図である。
【図４Ｇ】更新されたインクストロークデータ構造に対応している１つまたは複数のインクストローク可視要素がレンダリングされる例示的なシナリオを示す図である。
【図４Ｈ】更新されたインクストロークデータ構造に対応している１つまたは複数のインクストローク可視要素がレンダリングされる例示的なシナリオを示す図である。
【図５Ａ】[0008]異なるタイプのユーザ入力に応答して異なるように振る舞う異なるプラットフォームレベルコンテナの一例を示す図である。
【図５Ｂ】異なるタイプのユーザ入力に応答して異なるように振る舞う異なるプラットフォームレベルコンテナの一例を示す図である。
【図６Ａ】[0009]同じタイプのユーザ入力に応答して異なるように振る舞う異なるプラットフォームレベルコンテナの一例を示す図である。
【図６Ｂ】同じタイプのユーザ入力に応答して異なるように振る舞う異なるプラットフォームレベルコンテナの一例を示す図である。
【図７Ａ】[0010]インクストローク変更イベントが処理モードに基づいて異なるように、インクストロークデータ構造を、更新されたインクストロークデータ構造へと変更する例示的なシナリオを示す図である。
【図７Ｂ】インクストローク変更イベントが処理モードに基づいて異なるように、インクストロークデータ構造を、更新されたインクストロークデータ構造へと変更する例示的なシナリオを示す図である。
【図７Ｃ】インクストローク変更イベントが処理モードに基づいて異なるように、インクストロークデータ構造を、更新されたインクストロークデータ構造へと変更する例示的なシナリオを示す図である。
【図８Ａ】[0011]異なるタイプのユーザ入力が処理モードに基づいて異なるようにインクストロークデータ構造を変更する例示的なシナリオを示す図である。
【図８Ｂ】異なるタイプのユーザ入力が処理モードに基づいて異なるようにインクストロークデータ構造を変更する例示的なシナリオを示す図である。
【図８Ｃ】異なるタイプのユーザ入力が処理モードに基づいて異なるようにインクストロークデータ構造を変更する例示的なシナリオを示す図である。
【図９】[0012]例示的なコンピューティングシステムを示す図である。
【発明を実施するための形態】
【０００５】
[0013]  ユーザインターフェース（UI: user interface）フレーム特有のデジタルインクレンダラは、限られた柔軟性を有する基本的な、低レベルの機能を提供する。例えば、アプリケーションが、グラフィカルユーザインターフェースのエリアにおいて複数のインクストロークを視覚的に提示することを望むときに、アプリケーションは、レンダリングするためのデジタルインクレンダラに対して、複数のインクストロークを含む全体エリアのビットマップを提供する。その後に、アプリケーションが、そのエリアにおいてインクストロークを変更することを望む場合、アプリケーションは、デジタルインクレンダラに対して全体エリアの更新されたビットマップを提供する必要がある。言い換えれば、インクストロークが変更されるたびに、すべてのインクストロークが再レンダリングされる。
【０００６】
[0014]  さらに、そのようなインクレンダラと情報をやりとりする各アプリケーションは、個別基準に基づいて、任意の追加のインクレンダリング機能を提供する必要がある。アプリケーションにそのような追加のインクレンダリング機能を提供する負担をかけることにより、アプリケーションのデータストレージサイズは増大する可能性がある。いくつかの場合には、そのような増大は、同じインクレンダリング機能が複数の異なるアプリケーションに繰り返し組み込まれていることに起因して、特に非効率的であり得る。
【０００７】
[0015]  さらに、そのようなデジタルインクレンダラは、デジタルインクレンダラが実装される特定のＵＩフレームワークにおいて実装されるアプリケーションと互換性があるだけである。そのようなデジタルインクレンダラは、異なるＵＩフレームワーク技術において実装されるアプリケーションと互換性はない。
【０００８】
[0016]  それに応じて、この説明は、開発者が、異なるＵＩフレームワーク技術を通して、高性能な、また柔軟性のある方法で、デジタルインクを操作し、編集することを可能にする、プラットフォームレベルにおける高性能デジタルインク編集のための組み込みサポートを提供することに関する。より詳細には、この説明は、レンダリングされたインクストローク可視要素に対応している、ネイティブにサポートされたインクストロークデータ構造を保持するように構成されたプラットフォームレベルコンテナを維持することに関する。プラットフォームレベルコンテナにより、変更されていないインクストロークデータ構造に対応しているインクストローク可視要素を再レンダリングすることなく、プラットフォームレベルコンテナによって保持される、変更された、または更新されたインクストロークデータ構造に対応しているインクストローク可視要素だけをレンダリングすることができる。更新されたインクストロークデータ構造に対応しているインクストローク可視要素だけをレンダリングすることにより、レンダリングを、インクストロークデータ構造が更新されるときはいつでも、すべてのインクストローク可視要素が再レンダリングされる場合のアプローチと比べて、より高性能な（例えば、メモリをあまり消費しない）方法で実行することができる。
【０００９】
[0017]  図１は、簡略された形態で、例示的なコンピューティングシステム１００を示すものである。コンピューティングシステム１００は、１つまたは複数のパーソナルコンピュータ、タブレットコンピュータ、ホームエンターテインメントコンピュータ、拡張現実または仮想現実のコンピュータ、ネットワークコンピューティングデバイス、ゲームデバイス、モバイルコンピューティングデバイス、モバイル通信デバイス（例えば、スマートフォン）、および／または他のコンピューティングデバイスの形態をとることができる。
【００１０】
[0018]  コンピューティングシステム１００は、グラフィカルユーザインターフェース１０４を視覚的に提示するように構成されたディスプレイサブシステム１０２を含んでいる。グラフィカルユーザインターフェース１０４の内部で、ディスプレイサブシステム１０２は、１つまたは複数のインクストローク可視要素１０６を視覚的に提示するように構成されていることもある。
【００１１】
[0019]  例えば、インクストローク可視要素１０６を、コンピューティングシステム１００に対するユーザ入力に基づいて、視覚的に提示することができる。ユーザ入力が、任意の適切な方法でコンピューティングシステム１００に対して提供され、インクストローク可視要素を視覚的に提示することができる。一例においては、ユーザ入力は、マウスなどの周辺ユーザ入力デバイス１０８により、コンピューティングシステム１００に対して提供されてもよい。いくつかの実装形態においては、ディスプレイサブシステム１０２は、タッチセンサを含むことができ、ユーザ入力は、タッチ入力の形式で、コンピューティングシステム１００に対して提供されてもよい。一例においては、タッチ入力は、１つまたは複数の指１１０により、コンピューティングシステム１００に対して提供されてもよい。別の例においては、タッチ入力は、スタイラス１１２により、コンピューティングシステム１００に対して提供されてもよい。タッチ入力は、コンピューティングシステム１００に対して提供されて、任意の適切な方法で、インクストローク可視要素を視覚的に提示することができる。いくつかの実装形態においては、タッチ入力は、認識可能なジェスチャのメニューから特定のジェスチャとして解釈されることもあり、特定のジェスチャを使用して、コンピューティングシステム１００のオペレーションに影響を及ぼすことができる。一例においては、インクストロークデータ構造を、以下でさらに詳細に考察されることになるように、特定のジェスチャに基づいて、更新されたインクストロークデータ構造へと変更することもできる。
【００１２】
[0020]  コンピューティングシステム１００は、コンピューティングシステム１００のハードウェアリソースとソフトウェアリソースとのオペレーションを管理するように構成されたオペレーティングシステム１１４を含んでいる。例えば、オペレーティングシステム１１４は、コンピューティングシステム１００のプロセッサリソースと、ストレージリソースと、他のリソースとの割り付けのためのタスクをスケジュールすることができる。とりわけ、オペレーティングシステム１１４は、コンピューティングシステム１００によって実行される複数のアプリケーション１１６についての仲介手段としての役割を果たして、コンピューティングシステム１００のハードウェアを介した複数のアプリケーション１１６の様々な機能を実行することができる。複数のアプリケーション１１６は、任意の適切なタイプのアプリケーションを含むことができる。複数のアプリケーション１１６は、インクストロークデータ構造を管理すること、およびそれに応じてインクストローク可視要素をレンダリングすることとの関連で考察されることになるが、複数のアプリケーション１１６は、任意の適切な機能を提供することができる。
【００１３】
[0021]  コンピューティングシステム１００は、グラフィカルユーザインターフェース１０４を表す画像を合成し、この画像を視覚的プレゼンテーションのためにディスプレイサブシステム１０２に対して送信するように構成された１つまたは複数のプラットフォームレベルレンダラ１１８を含んでいる。１つまたは複数のプラットフォームレベルレンダラ１１８は、任意の適切な処理を実行して、グラフィカルユーザインターフェース１０４の画像をレンダリングすることができる。非限定的な例示的な処理オペレーションは、ブレンディングと、フェーディングと、スケーリングと、他の２Ｄおよび３Ｄのアニメーション効果とを含むことができる。
【００１４】
[0022]  １つまたは複数のプラットフォームレベルレンダラ１１８は、１つまたは複数のネイティブにサポートされたインクストロークデータ構造１２２を保持するように構成された１つまたは複数のプラットフォームレベルコンテナ１２０を維持するように構成されていることもある。プラットフォームレベルコンテナ１２０によって保持される各インクストロークデータ構造１２２は、ディスプレイサブシステム１０２を介してレンダリングされ、グラフィカルユーザインターフェース１０４において視覚的に提示されるインクストローク可視要素１０６に対応し得る。各インクストロークデータ構造を、対応するプラットフォームレベルレンダラ１１８および／または他のロジックが、データ構造を表示可能な画像へと変換することができるように、対応するインクストローク可視要素を規定するように構成してもよい。プラットフォームレベルコンテナ１２０によって保持されるインクストロークデータ構造１２２に対する変更は、インクストロークデータ構造１２２に対応しているインクストローク可視要素１０６の視覚的プレゼンテーションに直接に影響を及ぼすことができる。
【００１５】
[0023]  いくつかの実装形態においては、プラットフォームレベルレンダラ１１８の別個のインスタンスが、各プラットフォームレベルコンテナ１２０ごとに生成されてもよい。各プラットフォームレベルレンダラ１１８は、異なる属性を用いて、および異なるタイプの入力についてインクをレンダリングするように、独立して構成されてもよい。さらに、いくつかの実装形態においては、複数のアプリケーション１１６のうちの各アプリケーションは、別個のプラットフォームレベルレンダラ１１８と通信することができる。他の実装形態においては、プラットフォームレベルレンダラ１１８は、同じ属性または異なる属性を有する複数のプラットフォームレベルコンテナ１２０を維持することができる。さらに他の実装形態においては、単一のプラットフォームレベルレンダラ１１８は、すべてのプラットフォームレベルコンテナ１２０を維持することができる。
【００１６】
[0024]  各インクストロークデータ構造１２２は、対応するインクストローク可視要素１０６を規定する複数のインクストロークパラメータ１２４を含むことができる。インクストロークパラメータ１２４は、任意の適切なタイプのパラメータを含むことができる。非限定的な例示的なインクストロークパラメータは、位置（例えば、順序づけられたシーケンスのスクリーン座標）と、経路と、接合部属性と、圧力と、カラーと、太さと、先端形状（例えば、ペン、ブラシ、蛍光ペン）と、透明性と、変換とを含む。一例においては、単一のインクストロークデータ構造は、１本の連続した線を規定するパラメータを含むことができる。例えば、タッチ入力の結果として生成されるインクストロークデータ構造は、タッチダウンイベントと、リフトアップイベントとの間の連続した線を規定することができる。別の例においては、マウスを用いたユーザ入力の結果として生成されるインクストロークデータ構造は、マウスボタンの押し下げイベントと、マウスボタンの解放イベントとの間の連続した線を規定することができる。いくつかの実装形態においては、インクストローク可視要素１０６は、１つまたは複数のベジエ曲線によって表されることもある。
【００１７】
[0025]  いくつかの実装形態においては、インクストロークデータ構造１２２は、インクストロークユーザ入力イベントの完了時に生成される「乾いた」インクストローク可視要素を表すことができる。例えば、インクストロークユーザ入力イベントは、ディスプレイ（または他のタッチセンサ）から持ち上げられるインクストロークユーザ入力を実行した指に応答して、完了されることもある。別の例においては、インクストロークユーザ入力は、ディスプレイ（または他のタッチセンサ）から持ち上げられるインクストロークユーザ入力を実行したスタイラスに応答して、完了されることもある。さらに別の例においては、インクストロークユーザ入力イベントは、押し下げられたマウスボタンが解放されることに応答して、完了されることもある。
【００１８】
[0026]  いくつかの実装形態においては、コンピューティングシステム１００は、「乾いていない」インクストローク可視要素を表すバッファデータ構造を利用することができる。さらに、バッファデータ構造が、任意選択により、プラットフォームレベルコンテナ１２０の中に含められてもよい。バッファデータ構造は、乾いていないインクストローク可視要素を、乾いたインクストローク可視要素にすぐに変換することを可能にすることができる。
【００１９】
[0027]  プラットフォームレベルコンテナ１２０は、例えば、１つまたは複数の異なるアプリケーションプログラミングインターフェース（API: application programing interfaces）を介して、複数のアプリケーション１１６にアクセスしてもよい。そのようなアクセス可能性により、複数のアプリケーション１１６は、プラットフォームレベルコンテナ１２０において直接にインクストロークデータ構造１２２を変更することができるようになる。コンテナ１２０は、プラットフォームレベルに維持されるので、特定のＵＩフレームワークにおいて実装されるアプリケーションは、プラットフォームレベルコンテナ１２０と情報をやりとりしてもよい。さらに、コンテナ１２０は、プラットフォームレベルに維持されるので、アプリケーションは、アプリケーションの内部でコンテナの状態を追跡する責任から解放されることができる。言い換えれば、コンテナ１２０は、プラットフォームレベルに維持されるので、複数のアプリケーション１１６は、プラットフォームレベルコンテナ１２０によって保持されるインクストロークデータ構造１２２について簡単に通知されることができる。
【００２０】
[0028]  いくつかの実装形態においては、グラフィカルユーザインターフェース１０４は、１つまたは複数のエリア１２６へと分割されてもよい。グラフィカルユーザインターフェース１０４は、任意の適切な大きさを有する任意の適切な数の異なるエリアへと分割されることもある。いくつかの場合においては、異なるエリア１２６は、異なるアプリケーション１１６に関連づけられてもよい。いくつかの実装形態においては、プラットフォームレベルコンテナ１２０は、グラフィカルユーザインターフェース１０４のそれぞれの異なるエリア１２６に関連づけられてもよい。いくつかの場合においては、プラットフォームレベルコンテナ１２０は、複数の異なるエリア１２６に関連づけられてもよい。
【００２１】
[0029]  さらに、各プラットフォームレベルレンダラ１１８は、プラットフォームレベルレンダラ１１８のプラットフォームレベルコンテナ１２０によって保持されるインクストロークデータ構造１２２が変更される方法に影響を及ぼす、異なる１組の属性を有することができる。言い換えれば、異なるプラットフォームレベルコンテナ／レンダラは、他のプラットフォームレベルコンテナ／レンダラのインクストロークレンダリング動作に対して異なるインクストロークレンダリング動作を有することができる。例えば、異なるプラットフォームレベルレンダラは、異なるタイプのユーザ入力に対して異なるように応答することができる。１つの特定の例においては、第１のプラットフォームレベルレンダラは、インクストローク可視要素が指を用いたタッチ入力に基づいて生成されることを指定する属性を有することができ、第２のプラットフォームレベルレンダラは、インクストローク可視要素がスタイラスを用いたタッチ入力に基づいて生成されることを指定する異なる属性を有することができる。別の例においては、異なるプラットフォームレベルレンダラは、異なるように同じタイプのユーザ入力に応答することができる。一例においては、第１のエリアに対して指を用いて加えられるタッチ入力により、第１のエリアに関連する第１のプラットフォームレベルレンダラによって管理される第１のプラットフォームレベルコンテナにインクストロークデータ構造を追加する「インキング」を引き起こすことができる。さらに、第２のエリアに対する指を用いて加えられる同じタッチ入力により、第２のエリアに関連する第２のプラットフォームレベルレンダラによって管理される第２のプラットフォームレベルコンテナからインクストロークデータ構造を取り除く「消去」を引き起こすことができる。さらに別の例においては、第１のプラットフォームレベルレンダラと、第２のプラットフォームレベルレンダラとは、同じ属性を有することができ、同じ方法でそれぞれのプラットフォームレベルコンテナによって保持されるインクストロークデータ構造を変更することができる。
【００２２】
[0030]  １つまたは複数のプラットフォームレベルレンダラ１１８は、プラットフォームレベルコンテナ１２０によって保持されるインクストロークデータ構造１２２に対応している様々なインクストローク変更イベントを認識するように構成されてもよい。インクストローク変更イベントは、コンピューティングシステム１００の様々なオペレーションに基づいて生成されてもよく、かつ／またはコンピューティングシステム１００の様々なソースから１つまたは複数のプラットフォームレベルレンダラ１１８によって受信されてもよい。一例においては、プラットフォームレベルレンダラ１１８は、複数のアプリケーション１１６のうちの特定のアプリケーションからインクストローク変更イベントを受信することができる。アプリケーション１１６は、任意の適切なオペレーションを実行して、インクストローク変更イベントを生成することができる。別の例においては、プラットフォームレベルレンダラ１１８は、コンピューティングシステム１００に対するユーザ入力に応答して、ディスプレイサブシステム１０２（または別の中間イベントハンドラコンポーネント）からインクストローク変更イベントを受信することができる。
【００２３】
[0031]  １つまたは複数のプラットフォームレベルレンダラ１１８は、認識されたインクストローク変更イベントに従って、プラットフォームレベルコンテナ１２０によって保持されるインクストロークデータ構造１２２を、更新されたインクストロークデータ構造へと変更するように構成されてもよい。１つまたは複数のプラットフォームレベルレンダラ１１８は、任意の適切な方法で、インクストローク変更イベントに従って、インクストロークデータ構造を、更新されたインクストロークデータ構造へと変更することができる。一例においては、インクストローク変更イベントは、プラットフォームレベルコンテナにインクストロークデータ構造を追加することを指定する。別の例においては、インクストローク変更イベントは、プラットフォームレベルコンテナからインクストロークデータ構造を取り除くことを指定する。さらに別の例においては、インクストローク変更イベントは、プラットフォームレベルコンテナによって保持されるインクストロークデータ構造のパラメータを修正することを指定する。インクストロークデータ構造のパラメータの非限定的な例示的な修正は、カラーを変更すること、太さを変更すること、経路を変更すること、変換を適用すること、および先端形状を変更することを含む。１つの特定の例においては、インクパラメータと、ペンの先端パラメータとは、別々に修正されてもよい。例えば、変換を先端形状に適用して、特別なペンタイプを構築することができる。別の例においては、インクパラメータは、ストロークの幅／サイズを変更して、または変更せずに修正されてもよい。インクストロークデータ構造のパラメータは、インクストローク変更イベントに従って、任意の適切な方法で修正されることができる。
【００２４】
[0032]  各インクストロークデータ構造１２２は、インクストローク可視要素１０６に対応しているので、インクストロークデータ構造１２２が更新されたインクストロークデータ構造へと変更されるときに、対応するインクストローク可視要素１０６は、レンダリングされて、更新されたインクストロークデータ構造を反映することができる。さらに、各インクストロークデータ構造１２２は、個別に処理することができ、これにより、個別のインクストローク可視要素１０６の選択的レンダリングを可能にする。言い換えれば、更新されたインクストロークデータ構造に対応しているインクストローク可視要素を、変更されていないインクストロークデータ構造に対応しているインクストローク可視要素を再レンダリングすることなく、レンダリングすることができる。このようなレンダリングアプローチは、インクストロークデータ構造が更新されるたびにすべてのインクストローク可視要素が再レンダリングされるアプローチと比べて、より高性能（例えば、メモリをあまり消費しない）である可能性がある。
【００２５】
[0033]  図２は、インクストローク可視要素をレンダリングするための例示的な方法２００を示すものである。一例においては、本方法２００は、図１に示されるコンピューティングシステム１００によって実行される。別の例においては、本方法２００は、図９に示されるコンピューティングシステム９００によって実行される。
【００２６】
[0034]  図４Ａ〜４Ｈと、５Ａ〜５Ｂと、６Ａ〜６Ｂとは、方法２００を実行する過程で、コンピューティングシステム（例えば、図１に示されるコンピューティングシステム１００、または図９に示されるコンピューティングシステム９００）によって実行され得る様々なオペレーションを示すものであり、方法２００の考察全体を通して参照されるであろう。
【００２７】
[0035]  ２０２において、方法２００は、ネイティブにサポートされたインクストロークデータ構造を保持するように構成された第１のプラットフォームレベルコンテナを維持するステップを含んでいる。２０４において、方法２００は、ディスプレイを介して、第１のプラットフォームレベルコンテナによって保持される各インクストロークデータ構造に対応しているインクストローク可視要素をレンダリングするステップを含んでいる。
【００２８】
[0036]  図４Ａは、例示的なディスプレイ４００を示すものであり、プラットフォームレベルコンテナ４０２を概略的に表示するものである。一例においては、ディスプレイ４００は、図１に示されるディスプレイサブシステム１０２を表しており、プラットフォームレベルコンテナ４０２は、図１に示されるプラットフォームレベルコンテナ１２０を表す。プラットフォームレベルコンテナ４０２は、複数のインクストロークデータ構造４０４（例えば、４０４Ａ、４０４Ｂ、４０４Ｃ、４０４Ｄ、４０４Ｅ、４０４Ｆ、４０４Ｇ、４０４Ｈ、４０４Ｉ）を含んでいる。複数のインクストロークデータ構造４０４は、ディスプレイ４００を介してレンダリングされる複数のインクストローク可視要素４０６（例えば、４０６Ａ、４０６Ｂ、４０６Ｃ、４０６Ｄ、４０６Ｅ、４０６Ｆ、４０６Ｇ、４０６Ｈ、４０６Ｉ）に対応する。とりわけ、各インクストロークデータ構造は、インクストローク可視要素との１対１の対応を有しているが、これは、すべての実装形態において必要とはされない。図に示される例においては、各インクストローク可視要素４０６は、手書きの文字を視覚的に表しており、複数のインクストローク可視要素は、一括して、「ｈｅｌｌｏ  ｗｏｒｌ」をスペリングする。複数のインクストロークデータ構造４０４と、対応する複数のインクストローク可視要素４０６とを、任意の適切な方法で生成することができる。一例においては、複数のインクストロークデータ構造４０４は、ディスプレイ４００に対する指によって入力されるタッチに応答して、プラットフォームレベルコンテナ４０２に追加される。さらに、複数のインクストローク可視要素４０６は、プラットフォームレベルコンテナ４０２に追加されている複数のインクストロークデータ構造４０４に応答して、ディスプレイ４００を介してレンダリングされる。
【００２９】
[0037]  図２を参照し続けると、いくつかの実装形態においては、２０６において、方法２００は、任意選択により、ネイティブにサポートされたインクストロークデータ構造を保持するように構成された第２のプラットフォームレベルコンテナを維持するステップを含むことができる。いくつかの場合においては、第１のプラットフォームレベルコンテナと、第２のプラットフォームレベルコンテナとは、異なるインクストロークレンダリング動作（例えば、異なる属性を有する、対応するプラットフォームレベルレンダラに基づいた）を有することができる。いくつかの場合においては、第１のプラットフォームレベルコンテナと、第２のプラットフォームレベルコンテナとは、同じインクストロークレンダリング動作（例えば、同じ属性を有する、対応するプラットフォームレベルレンダラに基づいた）を有することができる。
【００３０】
[0038]  異なるプラットフォームレベルコンテナは、異なる用途を有することができる。一例においては、異なるプラットフォームレベルコンテナは、図１に示されるグラフィカルユーザインターフェース１０４の異なるエリアに対応している。別の例においては、異なるプラットフォームレベルコンテナは、図１に示されるグラフィカルユーザインターフェース１０４の異なるウィンドウに対応している。別の例においては、異なるプラットフォームレベルコンテナは、図１に示される異なるアプリケーション１１６によって制御される。
【００３１】
[0039]  いくつかの実装形態においては、２０８において、方法２００は、任意選択により、ディスプレイを介して、第２のプラットフォームレベルコンテナによって保持される各インクストロークデータ構造に対応しているインクストローク可視要素をレンダリングするステップを含むことができる。
【００３２】
[0040]  図５Ａは、第１のエリア５０２と、第２のエリア５０４とを含む例示的なディスプレイ５００を示すものである。第１のプラットフォームレベルコンテナ５０６は、第１のエリア５０２に対応しており、第２のプラットフォームレベルコンテナ５０８は、第２のエリア５０４に対応している。第１のプラットフォームレベルコンテナ５０６は、複数のインクストロークデータ構造５１０（例えば、５１０Ａ、５１０Ｂ）を含んでいる。複数のインクストロークデータ構造５１０は、第１のエリア５０２においてレンダリングされる複数のインクストローク可視要素５１２（例えば、５１２Ａ、５１２Ｂ）に対応している。第２のプラットフォームレベルコンテナ５０８は、複数のインクストロークデータ構造５１４（例えば、５１４Ａ、５１４Ｂ、５１４Ｃ）を含んでいる。複数のインクストロークデータ構造５１４は、第２のエリア５０４においてレンダリングされる複数のインクストローク可視要素５１６（例えば、５１６Ａ、５１６Ｂ、５１６Ｃ）に対応している。
【００３３】
[0041]  図２を参照し続けると、２１０において、方法２００は、第１のプラットフォームレベルコンテナによって保持されるインクストロークデータ構造に対応している第１のインクストローク変更イベントを認識するステップを含んでいる。一例においては、インクストローク変更イベントは、図１に示される複数のアプリケーション１１６など、プラットフォームレベルコンテナ４０２にアクセスする複数のアプリケーションのうちの特定のアプリケーションから受信されてもよい。別の例においては、インクストローク変更イベントは、ユーザ入力に応答して、認識されてもよい。インクストローク変更イベントは、任意の適切な方法で認識されてもよい。
【００３４】
[0042]  ２１２において、方法２００は、第１のインクストローク変更イベントに従って、インクストロークデータ構造を、更新されたインクストロークデータ構造へと変更するステップを含んでいる。
【００３５】
[0043]  ２１４において、方法２００は、ディスプレイを介して、変更されていないインクストロークデータ構造に対応しているインクストローク可視要素を再レンダリングすることなく、第１のプラットフォームレベルコンテナによって保持される更新されたインクストロークデータ構造に対応しているインクストローク可視要素をレンダリングするステップを含んでいる。
【００３６】
[0044]  図４Ｂ〜４Ｈは、図４Ａのプラットフォームレベルコンテナ４０２のインクストロークデータ構造４０４を、更新されたインクストロークデータ構造へと変更する異なる例示的なインクストローク変更イベントを示すものであり、このインクストローク変更イベントは、ディスプレイ４００を介して、対応するインクストローク可視要素のレンダリングをもたらす。
【００３７】
[0045]  図４Ｂに示される一例においては、インクストローク変更イベントは、手書きの文字「ｄ」の形態で、ディスプレイ４００に対してタッチ入力を提供する指４０８を含んでいる。「インクを乾かす」、ディスプレイ４００から指４０８が持ち上げられることに応答して、インクストロークデータ構造４０４Ｊがプラットフォームレベルコンテナ４０２に追加される。一例においては、インクストロークデータ構造４０４Ｊは、プラットフォームレベルコンテナに含まれる、乾いていないインクバッファデータ構造に記憶される、乾いていないインクストローク情報に基づいて、生成されてもよい。さらに、対応するインクストローク可視要素４０６Ｊは、変更されていないインクストローク可視要素４０６Ａ、４０６Ｂ、４０６Ｃ、４０６Ｄ、４０６Ｅ、４０６Ｆ、４０６Ｇ、４０６Ｈ、４０６Ｉが再レンダリングされることなく、ディスプレイを介してレンダリングされる。
【００３８】
[0046]  図４Ｃに示される別の例においては、インクストローク変更イベントは、指４０８が、インクストローク可視要素４０６Ｆ、４０６Ｇ、４０６Ｈ、４０６Ｉを「取り消し線を引く」形で、ディスプレイ４００に対してタッチ入力を提供することを含んでいる。この例においては、指４０８がディスプレイ４００から持ち上げられることに応答して、インクストローク可視要素を取り消すことに基づいて、消去ジェスチャを認識することができる。消去ジェスチャによる影響を受けるインクストローク可視要素に対応しているインクストロークデータ構造を、ジェスチャに基づいて、更新されたインクストロークデータ構造へと変更することができる。とりわけ、図４Ｄに示されるように、インクストロークデータ構造４０４Ｆ、４０４Ｇ、４０４Ｈ、４０４Ｉは、消去ジェスチャに基づいて、プラットフォームレベルコンテナ４０２から取り除かれる。さらに更新されたインクストロークデータ構造に対応しているインクストローク可視要素４０６Ｆ、４０６Ｇ、４０６Ｈ、４０６Ｉは、変更されていないインクストローク可視要素４０６Ａ、４０６Ｂ、４０６Ｃ、４０６Ｄ、４０６Ｅが再レンダリングされることなく、ディスプレイから取り除かれる。いくつかの実装形態においては、プラットフォームレベルコンテナから消去ジェスチャによる影響を受けるインクストロークデータ構造を取り除く代わりに、影響を受けたデータ構造は、その代わりに、レンダリング／表示をしないようにするために、フラグが付けられてもよい。したがって、影響を受けたデータ構造を、変更されたフラグに応答して（例えば、アンドゥ消去ジェスチャ入力または他の入力に応答して）、後で簡単にレンダリングすることができる。
【００３９】
[0047]  このシナリオは、インクストローク変更イベントが、消去ジェスチャを認識すること、および消去ジェスチャに基づいて、プラットフォームレベルコンテナによって保持されるインクストロークデータ構造を変更することを含む特定の例を説明している。この例において実証される概念は、任意の適切なジェスチャに対して広範に適用可能とすることができる。したがって、いくつかの実装形態においては、方法２００は、任意選択により、認識可能なジェスチャのメニューからの特定のジェスチャとしてユーザ入力を解釈するステップと、特定のジェスチャに基づいて、インクストロークデータ構造を、更新されたインクストロークデータ構造へと変更するステップとを含むことができる。
【００４０】
[0048]  図４Ｅに示される別の例においては、インクストローク変更イベントは、スタイラス４１０が、インクストローク可視要素４０６Ｆ、４０６Ｇ、４０６Ｈ、４０６Ｉを取り囲むディスプレイ４００に対してタッチ入力を提供することを含んでいる。スタイラス入力を、後続のオペレーションのために選択されているように、インクストロークコンテナおよび／または対応する映像を識別する／にフラグを付ける選択ジェスチャとして認識することができる。したがって、スタイラス４１０がディスプレイ４００から持ち上げられることに応答して、インクストローク可視要素４０６Ｆ、４０６Ｇ、４０６Ｈ、４０６Ｉが選択され、さらに、対応するコンテナが待ち行列に入れられて、後続の入力（例えば、太線コマンド）を受信することができる。インクストローク可視要素４０６Ｆ、４０６Ｇ、４０６Ｈ、４０６Ｉに対応しているインクストロークデータ構造４０４Ｆ、４０４Ｇ、４０４Ｈ、４０４Ｉを、更新されたインクストロークデータ構造へと変更することができる。とりわけ、図４Ｆに示されるように、インクストロークデータ構造４０４Ｆ、４０４Ｇ、４０４Ｈ、４０４Ｉは、それぞれ、各インクストロークデータ構造の幅の値を、太い幅に増大することを示す「Ｂ」を有している。さらに、更新されたインクストロークデータ構造に対応しているインクストローク可視要素４０６Ｆ、４０６Ｇ、４０６Ｈ、４０６Ｉは、変更されていないインクストローク可視要素４０６Ａ、４０６Ｂ、４０６Ｃ、４０６Ｄ、４０６Ｅが再レンダリングされることなく、太く見えるように再レンダリングされる。
【００４１】
[0049]  図２に戻ると、いくつかの実装形態においては、２１６において、方法２００は、任意選択により、第２のプラットフォームレベルコンテナによって保持されるインクストロークデータ構造に対応している第２のインクストローク変更イベントを認識するステップを含むことができる。
【００４２】
[0050]  いくつかの実装形態においては、２１８において、方法２００は、第２のインクストローク変更イベントに従って、インクストロークデータ構造を、更新されたインクストロークデータ構造へと変更するステップを含んでいる。
【００４３】
[0051]  いくつかの実装形態においては、２２０において、方法２００は、任意選択により、ディスプレイを介して、変更されていないインクストロークデータ構造に対応しているインクストローク可視要素を再レンダリングすることなく、第２のプラットフォームレベルコンテナによって保持される更新されたインクストロークデータ構造に対応しているインクストローク可視要素をレンダリングするステップを含むことができる。
【００４４】
[0052]  図５Ａ〜５Ｂは、異なる属性を有する異なるプラットフォームレベルレンダラによって管理されている異なるプラットフォームレベルコンテナに基づいて、異なるタイプのユーザ入力に応答して、異なるように動作する異なるプラットフォームレベルコンテナの一例を示すものである。図５Ａに示されるように、スタイラス５１８は、第１のエリア５０２内のインクストローク可視要素５１０Ａ、５１０Ｂにオーバーラップするタッチ入力をディスプレイ５００に対して提供する。さらに、指５２０は、第２のエリア５０４内のインクストローク可視要素５１６Ａ、５１６Ｂに、５１６Ｃにオーバーラップするタッチ入力をディスプレイ５００に対して提供する。スタイラス５１８によって提供されるユーザ入力と、指５２０によって提供されるユーザ入力とを、異なる属性を有する異なるプラットフォームレベルレンダラによって管理される異なるプラットフォームレベルコンテナ５０６、５０８に対応している異なるエリア５０２、５０４に対して提供されているタッチ入力に基づいて、異なるように処理することができる。
【００４５】
[0053]  図５Ｂにおいて、第１のプラットフォームレベルコンテナ５０６は、スタイラス５１８を用いたタッチ入力が、プラットフォームレベルコンテナ５０６にインクストロークデータ構造５１０Ｃを追加するインクストローク変更イベントとして認識されるように構成されるプラットフォームレベルレンダラによって管理される。したがって、インクストロークデータ構造５１０Ｃに対応しているインクストローク可視要素５１２Ｃは、変更されていないインクストローク可視要素５１２Ａ、５１２Ｂを再レンダリングすることなく、ディスプレイ５００を介してレンダリングされる。
【００４６】
[0054]  さらに、第２のプラットフォームレベルコンテナ５０８は、指５２０を用いたタッチ入力が、第２のプラットフォームレベルコンテナ５０８からインクストロークデータ構造５１４Ａ、５１４Ｂ、５１４Ｃを取り除く（またはプラットフォームレベルコンテナから、影響を受けたインクストロークデータ構造を取り除くことなく、レンダリング／表示をしないようにするために、影響を受けたインクストロークデータ構造にフラグを付ける）インクストローク変更イベントとして認識されるように構成されるプラットフォームレベルレンダラによって管理される。したがって、インクストロークデータ構造５１４Ａ、５１４Ｂ、５１４Ｃに対応しているインクストローク可視要素５１６Ａ、５１６Ｂ、５１６Ｃは、ディスプレイから取り除かれる。この例は、異なる種類のユーザ入力に対して異なるように応答するように構成された異なるプラットフォームレベルによって管理されている異なるプラットフォームレベルコンテナの概念を実証するものである。異なるプラットフォームレベルレンダラは、任意の適切な方法で、異なるタイプのユーザ入力に対して異なるように応答するように構成されていることもある。
【００４７】
[0055]  図６Ａ〜６Ｂは、異なる属性を有する異なるプラットフォームレベルレンダラによって管理されている異なるプラットフォームレベルコンテナに基づいて、同じタイプのユーザ入力に応答して、異なるように動作する異なるプラットフォームレベルコンテナの一例を示すものである。図６Ａは、第１のエリア６０２と、第２のエリア６０４とを含む例示的なディスプレイ６００を示すものである。第１のプラットフォームレベルコンテナ６０６は、第１のエリア６０２に対応しており、第２のプラットフォームレベルコンテナ６０８は、第２のエリア６０４に対応している。第１のプラットフォームレベルコンテナ６０６は、複数のインクストロークデータ構造６１０（例えば、６１０Ａ、６１０Ｂ）を含んでいる。複数のインクストロークデータ構造６１０は、第１のエリア６０２においてレンダリングされる複数のインクストローク可視要素６１２（例えば、６１２Ａ、６１２Ｂ）に対応している。第２のプラットフォームレベルコンテナ６０８は、複数のインクストロークデータ構造６１４（例えば、６１４Ａ、６１４Ｂ）を含んでいる。複数のインクストロークデータ構造６１４は、第２のエリア６０４においてレンダリングされる複数のインクストローク可視要素６１６（例えば、６１６Ａ、６１６Ｂ）に対応している。
【００４８】
[0056]  図６Ａに示されるように、スタイラス６１８は、第１のエリア６０２内のインクストローク可視要素６１２Ａ、６１２Ｂにオーバーラップするタッチ入力をディスプレイ６００に対して提供する。さらに、スタイラス６２０は、第２のエリア６０４内のインクストローク可視要素６１６Ａ、６１６Ｂにオーバーラップするタッチ入力をディスプレイ６００に対して提供する。スタイラス６１８によって提供されるユーザ入力と、スタイラス６２０によって提供されるユーザ入力とを、異なる属性を有する異なるプラットフォームレベルレンダラによって管理される異なるプラットフォームレベルコンテナ６０６、６０８に対応している異なるエリア６０２、６０４に提供されているタッチ入力に基づいて、異なるように処理することができる。
【００４９】
[0057]  図６Ｂにおいて、第１のプラットフォームレベルコンテナ６０６は、スタイラス６１８を用いたタッチ入力が、プラットフォームレベルコンテナ６０６にインクストロークデータ構造６１０Ｃを追加するインクストローク変更イベントとして認識されるように構成されるプラットフォームレベルレンダラによって管理される。したがって、インクストロークデータ構造６１０Ｃに対応しているインクストローク可視要素６１２Ｃは、変更されていないインクストローク可視要素６１２Ａ、６１２Ｂを再レンダリングすることなく、ディスプレイ６００を介してレンダリングされる。
【００５０】
[0058]  さらに、第２のプラットフォームレベルコンテナ６０８は、スタイラス６２０を用いたタッチ入力が、第２のプラットフォームレベルコンテナ６０８からインクストロークデータ構造６１４Ａ、６１４Ｂを取り除く（またはプラットフォームレベルコンテナから、影響を受けたインクストロークデータ構造を取り除くことなく、レンダリング／表示をしないようにするために、影響を受けたインクストロークデータ構造にフラグを付ける）インクストローク変更イベントとして認識されるように構成されるプラットフォームレベルレンダラによって管理される。したがって、インクストロークデータ構造６１４Ａ、６１４Ｂに対応しているインクストローク可視要素６１６Ａ、６１６Ｂは、ディスプレイから取り除かれる。この例は、同じタイプのユーザ入力に対して異なるように応答するように構成されている異なるプラットフォームレベルコンテナの概念を実証するものである。異なるプラットフォームレベルコンテナは、任意の適切な方法で、同じタイプのユーザ入力に対して異なるように応答するように構成されていることもある。
【００５１】
[0059]  図２に戻ると、いくつかの実装形態においては、２２２において、方法２００は、任意選択により、トリガが発生したかどうかを決定するステップを含むことができる。任意の適切なトリガが任意の適切な方法で決定されることもある。一例においては、トリガは、アプリケーションがプラットフォームレベルレンダラに対してコマンドを送信することを含むことができる。別の例においては、トリガは、特定のタイプのユーザ入力を含むことができる。別の例においては、トリガは、認識可能なジェスチャのメニューからの特定のジェスチャとしてユーザ入力を解釈することを含むことができる。トリガが決定される場合、方法２００は、２２４へと進む。その他の場合、方法２００は、他のオペレーションへと戻る。
【００５２】
[0060]  いくつかの実装形態においては、２２４において、方法２００は、任意選択により、ディスプレイを介して、トリガに応答して異なるレンダリングと、第１のプラットフォームレベルコンテナのインクストロークデータ構造に対応しているすべてのインクストローク可視要素を置換するステップを含むことができる。
【００５３】
[0061]  第１のプラットフォームレベルコンテナのインクストロークデータ構造に対応しているすべてのインクストローク可視要素を、任意の適切な異なるレンダリングと置換することができる。一例においては、異なるレンダリングは、異なるインクストローク可視要素に対応している異なるインクストロークデータ構造を含む異なるプラットフォームレベルコンテナから導き出されてもよい。別の例においては、異なるレンダリングは、画像から導き出されることもあり、または画像の形態をとることができる。別の例においては、異なるレンダリングは、インクストロークデータ構造以外の１組の描画プリミティブ（例えば、形状）から導き出されてもよい。
【００５４】
[0062]  図４Ｇに示される例においては、スタイラス４１０は、複数のインクストローク可視要素４０６を取り囲むディスプレイ４００に対してタッチ入力を提供する。この例においては、ユーザ入力を監視するアプリケーションは、複数のインクストローク可視要素４０６の、タイプされた文字との置換をトリガするジェスチャとして、ユーザ入力を認識することができる。それに応じて、図４Ｈに示されるように、第１のプラットフォームレベルコンテナ４０２によって保持されるインクストロークデータ構造に対応しているすべてのインクストローク可視要素が、第２のインクストロークコンテナ４１２によって保持されるインクストロークデータ構造４１４に対応している複数のインクストローク可視要素４１６の形態の異なるレンダリングと置換される。
【００５５】
[0063]  いくつかの実装形態においては、図１に示されるプラットフォームレベルレンダラ１１８などのプラットフォームレベルレンダラは、異なる処理モードで動作するように構成されてもよい。一例においては、プラットフォームレベルレンダラは、第１の１組の属性により、インクストローク変更イベントが認識される方法、および／またはインクストロークデータ構造が、インクストローク変更イベントに基づいて、更新されたインクストロークデータ構造へと変更される方法を規定するデフォルト処理モードで動作することができる。さらに、プラットフォームレベルレンダラは、第１の組の属性とは異なる第２の組の属性により、インクストローク変更イベントが処理される方法を規定するカスタム処理モードで動作することができる。プラットフォームレベルレンダラの処理モードのタイプを、任意の適切な方法で制御することができる。一例においては、図１に示される複数のアプリケーション１１６のうちの１つは、プラットフォームレベルレンダラの処理モードを指定することができる。別の例においては、プラットフォームレベルレンダラは、それ自体、コンピューティングシステム１００の様々な動作状態に基づいて、処理モードを指定することができる。
【００５６】
[0064]  図３は、プラットフォームレベルレンダラの異なる処理モードに基づいて、インクストローク可視要素をレンダリングするための例示的な方法３００を示すものである。一例においては、方法３００は、図１に示されるコンピューティングシステム１００によって実行される。別の例においては、方法３００は、図９に示されるコンピューティングシステム９００によって実行される。いくつかの実装形態においては、方法３００は、図２に示される方法２００に従って組み込まれ、または実行され得る。
【００５７】
[0065]  ３０２において、方法３００は、プラットフォームレベルコンテナによって保持されるインクストロークデータ構造に対応しているインクストローク変更イベントを認識するステップを含んでいる。
【００５８】
[0066]  ３０４において、方法３００は、プラットフォームレベルコンテナを管理するプラットフォームレベルレンダラが、デフォルト処理モードで動作しているか、またはカスタム処理モードで動作しているかを決定するステップを含んでいる。プラットフォームレベルレンダラの処理モードを、任意の適切な方法で決定することができる。一例においては、プラットフォームレベルレンダラは、プラットフォームレベルレンダラが、デフォルト処理モードで動作しているか、またはカスタム処理モードで動作しているかを示すビットを含むことができ、このビットを、インクストローク変更イベントが認識されて、処理モードを決定するときに、チェックすることができる。プラットフォームレベルレンダラがデフォルト処理モードで動作している場合、方法３００は、３０６へと進む。その他の場合、プラットフォームレベルレンダラは、カスタム処理モードで動作しており、本方法は、３０８へと進む。
【００５９】
[0067]  ３０６において、方法３００は、インクストローク変更イベントと、デフォルト処理モードとに従って、第１の方法で、インクストロークデータ構造を、更新されたインクストロークデータ構造へと変更するステップを含んでいる。
【００６０】
[0068]  ３０８において、方法３００は、第１の方法と異なる第２の方法で、インクストローク変更イベントと、カスタム処理モードとに従って、インクストロークデータ構造を異なる更新されたインクストロークデータ構造へと変更するステップを含んでいる。
【００６１】
[0069]  ３１０において、方法３００は、ディスプレイを介して、変更されていないインクストロークデータ構造に対応しているインクストローク可視要素を再レンダリングすることなく、更新されたインクストロークデータ構造に対応しているインクストローク可視要素をレンダリングするステップを含んでいる。
【００６２】
[0070]  図７Ａ〜７Ｃは、異なる処理モードにおいて動作しているプラットフォームレベルレンダラに基づいて、異なるように処理される例示的なインクストローク変更イベントを示すものである。図７Ａは、例示的なディスプレイ７００と、プラットフォームレベルコンテナ７０２とを示すものである。一例においては、ディスプレイ７００は、図１に示されるディスプレイサブシステム１０２を表しており、プラットフォームレベルコンテナ７０２は、図１に示されるプラットフォームレベルコンテナ１２０を表す。プラットフォームレベルコンテナ７０２は、複数のインクストロークデータ構造７０４（例えば、７０４Ａ、７０４Ｂ、７０４Ｃ、７０４Ｄ、７０４Ｅ）を含んでいる。複数のインクストロークデータ構造７０４は、ディスプレイ７００を介してレンダリングされる複数のインクストローク可視要素７０６（例えば、７０６Ａ、７０６Ｂ、７０６Ｃ、７０６Ｄ、７０６Ｅ）に対応している。指７０８により、インクストローク可視要素７０６Ｃ、７０６Ｄ、７０６Ｅを取り囲むディスプレイ７００に対してタッチ入力を提供する。指７０８を用いたタッチ入力に基づいたインクストローク可視要素７０６Ｃ、７０６Ｄ、７０６Ｅの選択は、プラットフォームレベルコンテナ７０２を管理するプラットフォームレベルレンダラの処理モードに基づいて、異なるように処理され得る。
【００６３】
[0071]  図７Ｂにおいて、プラットフォームレベルコンテナ７０２を管理するプラットフォームレベルレンダラは、デフォルト処理モードで動作しており、このデフォルト処理モードは、この例においては、指７０８を用いたタッチ入力が、プラットフォームレベルコンテナ７０２にインクストロークデータ構造７０４Ｆを追加するインクストローク変更イベントとして認識されることを指定する。したがって、インクストロークデータ構造７０４Ｆに対応しているインクストローク可視要素７０６Ｆは、変更されていないインクストローク可視要素７０６Ａ、７０６Ｂ、７０６Ｃ、７０６Ｄ、７０６Ｅを再レンダリングすることなく、ディスプレイ７００を介してレンダリングされる。
【００６４】
[0072]  図７Ｃにおいて、プラットフォームレベルコンテナ７０２を管理するプラットフォームレベルレンダラは、カスタム処理モードで動作しており、このカスタム処理モードは、この例においては、指７０８を用いたタッチ入力が、プラットフォームレベルコンテナ７０２から、タッチ入力によって選択されたインクストロークデータ構造７０４Ｃ、７０４Ｄ、７０４Ｅを取り除くインクストローク変更イベントとして認識されることを指定する。したがって、インクストロークデータ構造７０４Ｃ、７０４Ｄ、７０４Ｅに対応しているインクストローク可視要素７０６Ｃ、７０６Ｄ、７０６Ｅは、ディスプレイ７００から取り除かれる。
【００６５】
[0073]  上記で説明された例は、一般化されて、指を用いたタッチ入力が、デフォルト処理モード（例えば、「インキング」モード）でディスプレイにインクストローク可視要素を追加することを示すことができる。他方では、指を用いたタッチ入力は、カスタム処理モード（「消去」モード）でディスプレイからインクストローク可視要素を取り除く。一例においては、図１に示されるコンピューティングシステム１００は、選択されているグラフィカルユーザインターフェース１０４における「消去」アフォーダンスに応答して、インキングモードから消去モードへと切り替えることができる。それに応じて、コンピューティングシステム１００は、選択されているグラフィカルユーザインターフェース１０４における「消去」アフォーダンスに応答して、消去モードからインキングモードへと切り替えることができる。別の例においては、グラフィカルユーザインターフェース１０４は、インキング、消去、およびそれぞれのモードにおけるオペレーションに切り替えるように選択され得る選択のそれぞれについてのアフォーダンスを含むことができる。
【００６６】
[0074]  さらに、いくつかの実装形態においては、プラットフォームレベルレンダラの異なる処理モードは、異なるタイプのユーザ入力が、処理モードに応答してインクストローク変更イベントを生成するかどうかを指定することができる。
【００６７】
[0075]  図８Ａ〜８Ｃは、異なる処理モードで動作するプラットフォームレベルレンダラに基づいて、インクストローク変更イベントとして選択的に認識される異なるタイプのユーザ入力を示すものである。図８Ａは、例示的なディスプレイ８００と、プラットフォームレベルコンテナ８０２とを示すものである。一例においては、ディスプレイ８００は、図１に示されるディスプレイサブシステム１０２を表しており、プラットフォームレベルコンテナ８０２は、図１に示されるプラットフォームレベルコンテナ１２０を表す。プラットフォームレベルコンテナ８０２は、複数のインクストロークデータ構造８０４（例えば、８０４Ａ、８０４Ｂ、８０４Ｃ、８０４Ｄ、８０４Ｅ）を含んでいる。複数のインクストロークデータ構造８０４は、ディスプレイ８００を介してレンダリングされる複数のインクストローク可視要素８０６（例えば、８０６Ａ、８０６Ｂ、８０６Ｃ、８０６Ｄ、８０６Ｅ）に対応している。スタイラス８０８は、インクストローク可視要素８０６Ａ、８０６Ｂにオーバーラップするタッチ入力をディスプレイ８００に対して提供する。さらに、指８１０は、インクストローク可視要素８０６Ｃ、８０６Ｄ、８０６Ｅにオーバーラップするタッチ入力をディスプレイ８００に対して提供する。スタイラス８０８によって提供されるユーザ入力と、指８１０によって提供されるユーザ入力とを、プラットフォームレベルコンテナ８０２を管理するプラットフォームレベルレンダラの処理モードに基づいて異なるように処理することができる。
【００６８】
[0076]  図８Ｂにおいて、プラットフォームレベルコンテナ８０２を管理するプラットフォームレベルレンダラは、デフォルト処理モードで動作しており、このデフォルト処理モードは、この例においては、スタイラス８０８を用いたタッチ入力が、プラットフォームレベルコンテナ８０２にインクストロークデータ構造８０４Ｆを追加するインクストローク変更イベントとして認識されることを指定する。さらに、この例においては、デフォルト処理モードは、指８１０を用いたタッチ入力が、インクストローク変更イベントとして認識されないことを指定する。言い換えれば、インキングは、デフォルト処理モードにおいては、指８１０ではなく、スタイラス８０８によって実行される。したがって、インクストロークデータ構造８０４Ｆに対応しているインクストローク可視要素８０６Ｆは、変更されていないインクストローク可視要素８０６Ａ、８０６Ｂ、８０６Ｃ、８０６Ｄ、８０６Ｅを再レンダリングすることなく、ディスプレイ８００を介してレンダリングされる。例えば、デフォルト処理モードにより、指８１０を用いたタッチ入力が、別のオペレーションのために指定され得ることを指定することができる。
【００６９】
[0077]  図８Ｃにおいて、プラットフォームレベルコンテナ８０２を管理するプラットフォームレベルレンダラは、カスタム処理モードで動作しており、このカスタム処理モードは、この例においては、指８１０を用いたタッチ入力が、プラットフォームレベルコンテナ８０２にインクストロークデータ構造８０４Ｇを追加するインクストローク変更イベントとして認識されることを指定する。さらに、この例においては、カスタム処理モードは、スタイラス８０８を用いたタッチ入力が、インクストローク変更イベントとして認識されないことを指定する。言い換えれば、インキングは、カスタム処理モードにおいては、指８１０によって実行され、スタイラス８０８によっては実行されない。したがって、インクストロークデータ構造８０４Ｇに対応しているインクストローク可視要素８０６Ｇは、変更されていないインクストローク可視要素８０６Ａ、８０６Ｂ、８０６Ｃ、８０６Ｄ、８０６Ｅを再レンダリングすることなく、ディスプレイ８００を介してレンダリングされる。例えば、カスタム処理モードにより、スタイラス８０８を用いたタッチ入力が、別のオペレーションのために指定され得ることを指定することができる。
【００７０】
[0078]  いくつかの実装形態においては、カスタム処理モードは、プラットフォームレベルレンダラによって処理されないままにされるようにいくつかのインクストローク変更イベントを指定することができる。その代わりに、インクストローク変更イベントは、特定のアプリケーションによって処理されることが可能にされることもある。例えば、プラットフォームレベルレンダラ１１８は、インクストローク変更イベントについてアプリケーションに通知することができ、アプリケーションは、プラットフォームレベルレンダラ１１８に対して変更命令を提供して、インクストロークデータ構造を変更することができる。
【００７１】
[0079]  いくつかの実施形態においては、本明細書において説明される方法およびプロセスは、１つまたは複数のコンピューティングデバイスのコンピューティングシステムに結びつけられる可能性がある。とりわけ、そのような方法およびプロセスは、コンピュータアプリケーションのプログラムもしくはサービス、アプリケーションプログラミングインターフェース（API）、ライブラリ、および／または他のコンピュータプログラム製品として実装される可能性がある。
【００７２】
[0080]  図９は、上記で説明される１つまたは複数の方法およびプロセスを実施に移すことができるコンピューティングシステム９００の非限定的な実装形態を概略的に示すものである。コンピューティングシステム９００は、簡略化された形式で示されている。コンピューティングシステム９００は、１つまたは複数のパーソナルコンピュータ、サーバコンピュータ、タブレットコンピュータ、ホームエンターテインメントコンピュータ、ネットワークコンピューティングデバイス、ゲームデバイス、モバイルコンピューティングデバイス、モバイル通信デバイス（例えば、スマートフォン）、および／または他のコンピューティングデバイスの形態をとることができる。例えば、コンピューティングシステム９００は、図１に示されるコンピューティングシステム１００に対応していることができる。
【００７３】
[0081]  コンピューティングシステム９００は、ロジックマシン９０２と、ストレージマシン９０４とを含んでいる。コンピューティングシステム９００は、任意選択により、ディスプレイサブシステム９０６、入力サブシステム９０８、通信サブシステム９１０、および／または図９に示されていない他のコンポーネントを含むことができる。
【００７４】
[0082]  ロジックマシン９０２は、命令を実行するように構成された１つまたは複数の物理的デバイスを含んでいる。例えば、ロジックマシン９０２は、１つまたは複数のアプリケーション、サービス、プログラム、ルーチン、ライブラリ、オブジェクト、コンポーネント、データ構造、あるいは他の論理的構造の一部分である命令を実行するように構成されていることもある。そのような命令は、実装されて、タスクを実行し、データタイプを実装し、１つまたは複数のコンポーネントの状態を変換し、技術的効果を達成し、またはそれ以外の方法で望ましい結果に到達することができる。
【００７５】
[0083]  ロジックマシン９０２は、ソフトウェア命令を実行するように構成された１つまたは複数のプロセッサを含むことができる。追加して、または代わりに、ロジックマシン９０２は、ハードウェア命令またはファームウェア命令を実行するように構成された１つまたは複数のハードウェアあるいはファームウェアのロジックマシンを含むことができる。ロジックマシン９０２のプロセッサは、シングルコアまたはマルチコアとすることができ、またその上で実行される命令は、逐次的処理、並列処理、および／または分散処理のために構成されていることもある。ロジックマシン９０２の個別コンポーネントは、任意選択により、２つ以上の別個のデバイスの間で分散されることもあり、これらの別個のデバイスは、リモートに位置しており、かつ／または協調された処理のために構成されていることもある。ロジックマシン９０２の態様は、クラウドコンピューティング構成の形で構成されるリモートにアクセス可能な、ネットワーク化されたコンピューティングデバイスによって仮想化され、実行される可能性がある。
【００７６】
[0084]  ストレージマシン９０４は、本明細書において説明される方法およびプロセスを実装するようにロジックマシン９０２によって実行可能な命令を保持するように構成された１つまたは複数の物理的デバイスを含んでいる。そのような方法およびプロセスが、実装されるときに、ストレージマシン９０４の状態は、変換されて、−例えば、異なるデータを保持することができる。
【００７７】
[0085]  ストレージマシン９０４は、着脱可能デバイスおよび／または組み込みデバイスを含むことができる。ストレージマシン９０４は、数ある中でも、光メモリ（例えば、CD、DVD、HD-DVD、ブルーレイディスクなど）、半導体メモリ（例えば、RAM、EPROM、EEPROMなど）、および／または磁気メモリ（例えば、ハードディスクドライブ、フロッピーディスクドライブ、テープドライブ、MRAMなど）を含むことができる。ストレージマシン９０４は、揮発性デバイス、不揮発性デバイス、ダイナミックデバイス、スタティックデバイス、リード／ライトデバイス、リードオンリーデバイス、ランダムアクセスデバイス、逐次的アクセスデバイス、ロケーションアドレッサブルデバイス、ファイルアドレッサブルデバイス、および／またはコンテントアドレッサブルデバイスを含むことができる。
【００７８】
[0086]  ストレージマシン９０４は、１つまたは複数の物理的デバイスを含むことが、正しく理解されるであろう。しかしながら、本明細書において説明される命令の態様は、代わりに、有限な持続時間にわたって物理的デバイスによって保持されない通信媒体（例えば、電磁信号、光信号など）によって伝搬される可能性がある。
【００７９】
[0087]  ロジックマシン９０２と、ストレージマシン９０４との態様は、１つまたは複数のハードウェアロジックコンポーネントへと一緒に一体化されることもある。そのようなハードウェアロジックコンポーネントは、例えば、フィールドプログラマブルゲートアレイ（FPGA: field-programmable gate arrays）と、特定プログラム向け集積回路および特定用途向け集積回路（PASIC / ASIC: program- and application-specific integrated circuits）と、特定プログラム向け標準製品および特定用途向け標準製品（PSSP / ASSP: program- and application-specific standard products）と、システムオンチップ（SOC: system-on-a-chip）と、複合プログラマブルロジックデバイス（CPLD: complex programmable logic devices）とを含むことができる。
【００８０】
[0088]  一例においては、ロジックマシン９０２と、ストレージマシン９０４とを使用して、図１に示されるオペレーティングシステム１１４と、複数のアプリケーション１１６と、プラットフォームレベルレンダラ１１８と、１つまたは複数のプラットフォームレベルコンテナ１２０とのインスタンスを作成することができる。
【００８１】
[0089]  含まれるときに、ディスプレイサブシステム９０６を使用して、ストレージマシン９０４によって保持されるデータの視覚的表現を提示することができる。この視覚的表現は、グラフィカルユーザインターフェース（GUI: graphical user interface）の形態をとることができる。本明細書において説明される方法およびプロセスは、ストレージマシン９０４によって保持されるデータを変更し、またこのようにしてストレージマシン９０４の状態を変換するので、ディスプレイサブシステム９０６の状態は、同様に変換されて、その基礎となるデータにおける変更を視覚的に表すことができる。ディスプレイサブシステム９０６は、視覚的に任意のタイプの技術を利用する１つまたは複数のディスプレイデバイスを含むことができる。そのようなディスプレイデバイスは、共用された筐体においてロジックマシン９０２および／またはストレージマシン９０４と組み合わせられることもあり、あるいはそのようなディスプレイデバイスは、周辺ディスプレイデバイスとすることができる。
【００８２】
[0090]  一例においては、ディスプレイサブシステム９０６は、図１に示されるディスプレイサブシステム１０２に対応している可能性がある。したがって、ディスプレイサブシステム９０６は、グラフィカルユーザインターフェース１０４において、１つまたは複数のインクストローク可視要素１０６をレンダリングするように構成されていることもある。
【００８３】
[0091]  含まれているときには、入力サブシステム９０８は、キーボード、マウス、タッチ画面、ゲームコントローラなど、１つまたは複数のユーザ入力デバイスを備えており、または１つまたは複数のユーザ入力とインターフェースすることができる。いくつかの実施形態においては、入力サブシステムは、選択された自然ユーザ入力（NUI: natural user input）構成部品を備えており、または選択された自然ユーザ入力（NUI）構成部品とインターフェースすることができる。そのような構成部品は、一体化されていることもあり、または周辺とすることができ、入力アクションの変換および／または処理は、オンボードもしくはオフボードで取り扱われる可能性がある。例示的なＮＵＩ構成部品は、スピーチ認識および／または音声認識のためのマイクロフォンと、マシンビジョンおよび／またはジェスチャ認識のための、赤外線カメラ、カラーカメラ、立体カメラ、および／またはデプスカメラと、運動検出および／または意図認識のための頭部トラッカー、アイトラッカー、加速度計、および／またはジャイロスコープと、脳活動を評価するための電場センシング構成部品とを含むことができる。
【００８４】
[0092]  一例においては、入力サブシステム９０８は、コンピューティングシステム９００に対するユーザ入力を認識するように構成されていることもある。さらにそのようなユーザ入力を使用して、インクストローク変更イベントを認識することができる。例えば、入力サブシステム９０８は、図１に示される周辺ユーザ入力デバイス１０８（例えば、マウス）によって提供されるユーザ入力を認識するように構成されていることもある。別の例においては、入力サブシステム９０８は、図１に示される１つまたは複数の指１１０および／またはスタイラス１１２によって提供されるタッチ入力を（例えば、タッチセンサを介して）認識するように構成されていることもある。
【００８５】
[0093]  含まれるときに、通信サブシステム９１０は、コンピューティングシステム９００を１つまたは複数の他のコンピューティングデバイスと通信するように結合するように構成されていることもある。通信サブシステム９１０は、１つまたは複数の異なる通信プロトコルと互換性のある有線通信デバイスおよび／またはワイヤレス通信デバイスを含むことができる。非限定的な例として、通信サブシステム９１０は、ワイヤレス電話ネットワーク、あるいは有線またはワイヤレスの、ローカルネットワークまたは広域ネットワークを介した通信のために構成されていることもある。いくつかの実施形態においては、通信サブシステム９１０により、コンピューティングシステム９００は、インターネットなどのネットワークを介して、他のデバイスに対してメッセージを送信し、かつ／または他のデバイスからメッセージを受信することができるようになる可能性がある。
【００８６】
[0094]  別の例示的な実装形態においては、コンピューティングシステム上で、インクストローク可視要素をレンダリングするための方法は、ネイティブにサポートされたインクストロークデータ構造を保持するように構成されたプラットフォームレベルコンテナであって、複数の異なるアプリケーションにアクセス可能なプラットフォームレベルコンテナを維持するステップと、ディスプレイを介して、プラットフォームレベルコンテナによって保持される各インクストロークデータ構造に対応しているインクストローク可視要素をレンダリングするステップと、プラットフォームレベルコンテナによって保持されるインクストロークデータ構造に対応しているインクストローク変更イベントを認識するステップと、インクストローク変更イベントに従って、インクストロークデータ構造を、更新されたインクストロークデータ構造へと変更するステップと、ディスプレイを介して、変更されていないインクストロークデータ構造に対応しているインクストローク可視要素を再レンダリングすることなく、更新されたインクストロークデータ構造に対応しているインクストローク可視要素をレンダリングするステップと、を含む。任意選択により、本明細書において説明される特徴のうちのどれかと組み合わされる可能性がある例示的な一実装形態においては、インクストロークデータ構造を、更新されたインクストロークデータ構造へと変更するステップは、プラットフォームレベルコンテナにインクストロークデータ構造を追加するステップと、プラットフォームレベルコンテナからインクストロークデータ構造を取り除くステップと、プラットフォームレベルコンテナのインクストロークデータ構造のパラメータを修正するステップとのうちの１つまたは複数を含んでいる。任意選択により、本明細書において説明される特徴のうちのどれかと組み合わされる可能性がある例示的な一実装形態においては、本方法は、トリガに応答して、ディスプレイを介して、第１のプラットフォームレベルコンテナのインクストロークデータ構造に対応しているすべてのインクストローク可視要素を異なるレンダリングと置換するステップをさらに含んでいる。任意選択により、本明細書において説明される特徴のうちのどれかと組み合わされる可能性がある例示的な一実装形態においては、インクストローク変更イベントは、複数のアプリケーションのうちの特定のアプリケーションから受信される。任意選択により、本明細書において説明される特徴のうちのどれかと組み合わされる可能性がある例示的な一実装形態においては、インクストローク変更イベントは、ユーザ入力に応答して認識される。任意選択により、本明細書において説明される特徴のうちのどれかと組み合わされる可能性がある例示的な一実装形態においては、本方法は、認識可能なジェスチャのメニューからの特定のジェスチャとしてユーザ入力を解釈するステップをさらに含んでおり、インクストロークデータ構造は、特定のジェスチャに基づいて、更新されたインクストロークデータ構造へと変更される。任意選択により、本明細書において説明される特徴のうちのどれかと組み合わされる可能性がある例示的な一実装形態においては、特定のジェスチャは、���去ジェスチャであり、変更するステップは、プラットフォームレベルコンテナからインクストロークデータ構造を取り除くステップ、またはインクストロークデータ構造に表示しないためのフラグ付けするステップを含んでおり、ディスプレイを介して、更新されたインクストロークデータ構造に対応しているインクストローク可視要素をレンダリングするステップは、ディスプレイからインクストローク可視要素を取り除くステップを含んでいる。任意選択により、本明細書において説明される特徴のうちのどれかと組み合わされる可能性がある例示的な一実装形態においては、プラットフォームレベルコンテナは、グラフィカルユーザインターフェースの第１のエリアに関連する第１のプラットフォームレベルコンテナであり、本方法は、第１のエリアとは異なるグラフィカルユーザインターフェースの第２のエリアに関連する第２のプラットフォームレベルコンテナを維持するステップをさらに含んでいる。任意選択により、本明細書において説明される特徴のうちのどれかと組み合わされる可能性がある例示的な一実装形態においては、第１のプラットフォームレベルコンテナのインクストロークレンダリング動作は、第２のプラットフォームレベルコンテナのインクストロークレンダリング動作とは異なる。任意選択により、本明細書において説明される特徴のうちのどれかと組み合わされる可能性がある例示的な一実装形態においては、第１のプラットフォームレベルコンテナに関連するインクストローク変更イベントは、第１のエリアを対象とする第１のユーザ入力タイプのユーザ入力に応答して認識され、第２のプラットフォームレベルコンテナに関連するインクストローク変更イベントは、第２のエリアを対象とする第２のユーザ入力タイプのユーザ入力に応答して認識され、第２のユーザ入力タイプは、第１のユーザ入力タイプとは異なる。
【００８７】
[0095]  別の例示的な実装形態においては、コンピューティングシステムは、ロジックマシンと、ネイティブにサポートされたインクストロークデータ構造を保持するように構成されたプラットフォームレベルコンテナであって、複数の異なるアプリケーションにアクセス可能なプラットフォームレベルコンテナを維持し、ディスプレイを介して、プラットフォームレベルコンテナによって保持される各インクストロークデータ構造に対応しているインクストローク可視要素をレンダリングし、プラットフォームレベルコンテナによって保持されるインクストロークデータ構造に対応しているインクストローク変更イベントを認識し、インクストローク変更イベントに従って、インクストロークデータ構造を、更新されたインクストロークデータ構造へと変更し、およびディスプレイを介して、変更されていないインクストロークデータ構造に対応しているインクストローク可視要素を再レンダリングすることなく更新されたインクストロークデータ構造に対応しているインクストローク可視要素をレンダリングするようにロジックマシンによって実行可能な命令を保持するストレージマシンと、を備えている。任意選択により、本明細書において説明される特徴のうちのどれかと組み合わされる可能性がある例示的な一実装形態においては、インクストロークデータ構造を、更新されたインクストロークデータ構造へと変更するステップは、プラットフォームレベルコンテナにインクストロークデータ構造を追加するステップと、プラットフォームレベルコンテナからインクストロークデータ構造を取り除くステップと、プラットフォームレベルコンテナのインクストロークデータ構造のパラメータを修正するステップとのうちの１つまたは複数を含んでいる。任意選択により、本明細書において説明される特徴のうちのどれかと組み合わされる可能性がある例示的な一実装形態においては、ストレージマシンは、さらに、トリガに応答して、ディスプレイを介して、第１のプラットフォームレベルコンテナのインクストロークデータ構造に対応しているすべてのインクストローク可視要素を異なるレンダリングと置換するように、ロジックマシンによって実行可能な命令を保持する。任意選択により、本明細書において説明される特徴のうちのどれかと組み合わされる可能性がある例示的な一実装形態においては、インクストローク変更イベントは、複数のアプリケーションのうちの特定のアプリケーションから受信される。任意選択により、本明細書において説明される特徴のうちのどれかと組み合わされる可能性がある例示的な一実装形態においては、インクストローク変更イベントは、ユーザ入力に応答して認識される。任意選択により、本明細書において説明される特徴のうちのどれかと組み合わされる可能性がある例示的な一実装形態においては、ストレージマシンは、さらに、認識可能なジェスチャのメニューからの特定のジェスチャとしてユーザ入力を解釈するようにロジックマシンによって実行可能な命令を保持し、インクストロークデータ構造は、特定のジェスチャに基づいて、更新されたインクストロークデータ構造へと変更される。任意選択により、本明細書において説明される特徴のうちのどれかと組み合���される可能性がある例示的な一実装形態においては、特定のジェスチャは、消去ジェスチャであり、変更するステップは、プラットフォームレベルコンテナからインクストロークデータ構造を取り除くステップを含んでおり、ディスプレイを介して、更新されたインクストロークデータ構造に対応しているインクストローク可視要素をレンダリングするステップは、ディスプレイからインクストローク可視要素を取り除くステップを含んでいる。
【００８８】
[0096]  別の例示的な実装形態においては、コンピューティングシステム上で、インクストローク可視要素をレンダリングするための方法は、グラフィカルユーザインターフェースの第１のエリアに関連する第１のプラットフォームレベルコンテナであって、ネイティブにサポートされたインクストロークデータ構造を保持するように構成された、複数の異なるアプリケーションにアクセス可能な第１のプラットフォームレベルコンテナを維持するステップと、グラフィカルユーザインターフェースの第２のエリアに関連する第２のプラットフォームレベルコンテナであって、ネイティブにサポートされたインクストロークデータ構造を保持するように構成された、複数の異なるアプリケーションにアクセス可能な第２のプラットフォームレベルコンテナを維持するステップと、ディスプレイを介して、グラフィカルユーザインターフェースの第１のエリアに含まれる第１のプラットフォームレベルコンテナによって保持される各インクストロークデータ構造に対応しているインクストローク可視要素をレンダリングするステップと、ディスプレイを介して、グラフィカルユーザインターフェースの第２のエリアに含まれる第２のプラットフォームレベルコンテナによって保持される各インクストロークデータ構造に対応しているインクストローク可視要素をレンダリングするステップと、第１のプラットフォームレベルコンテナによって保持される第１のインクストロークデータ構造に対応している第１のインクストローク変更イベントを認識するステップと、第１のインクストローク変更イベントに従って第１のインクストロークデータ構造を第１の更新されたインクストロークデータ構造へと変更するステップと、ディスプレイを介して、変更されていないインクストロークデータ構造に対応しているグラフィカルユーザインターフェースにおいてインクストローク可視要素を再レンダリングすることなく、グラフィカルユーザインターフェースの第１のエリアにおける第１の更新されたインクストロークデータ構造に対応している第１のインクストローク可視要素をレンダリングするステップと、第２のプラットフォームレベルコンテナによって保持される第２のインクストロークデータ構造に対応している第２のインクストローク変更イベントを認識するステップと、第２のインクストローク変更イベントに従って第２のプラットフォームレベルコンテナによって保持される第２のインクストロークデータ構造を第２の更新されたインクストロークデータ構造へと変更するステップと、ディスプレイを介して、変更されていないインクストロークデータ構造に対応しているグラフィカルユーザインターフェースにおいてインクストローク可視要素を再レンダリングすることなく、グラフィカルユーザインターフェースの第２のエリアにおける第２の更新されたインクストロークデータ構造に対応している第２のインクストローク可視要素をレンダリングするステップと、を含む。任意選択により、本明細書において説明される特徴のうちのどれかと組み合わされる可能性がある例示的な一実装形態においては、第１のプラットフォームレベルコンテナのインクストロークレンダリング動作は、第２のプラットフォームレベルコ���テナのインクストロークレンダリング動作とは異なる。任意選択により、本明細書において説明される特徴のうちのどれかと組み合わされる可能性がある例示的な一実装形態においては、第１のプラットフォームレベルコンテナに関連するインクストローク変更イベントが、第１のエリアを対象とする第１のユーザ入力タイプのユーザ入力に応答して認識され、第２のプラットフォームレベルコンテナに関連するインクストローク変更イベントが、第２のエリアを対象とする第２のユーザ入力タイプのユーザ入力に応答して認識され、第２のユーザ入力タイプは、第１のユーザ入力タイプとは異なる。
【００８９】
[0097]  本明細書において説明される構成および／またはアプローチは、性質上、例示的であること、およびこれらの特定の実施形態または例は、非常に多数の変形形態が可能であるので、限定的な意味で考察されるべきではないことが、理解されるであろう。本明細書において説明される特定のルーチンまたは方法は、任意の数の処理戦略のうちの１つまたは複数を表すことができる。したがって、示され、かつ／または説明される様々な動作は、他のシーケンスにおいて、例証され、かつ／または説明されるシーケンスで実行され、または並列に、実行され、あるいは省略されることもある。同様に、上記で説明されたプロセスの順序は変更されることもある。
【００９０】
[0098]  本開示の主題は、様々なプロセス、システムおよび構成、他の特徴、機能、動作、および／または本明細書において開示される特性、ならびにその任意の等価形態およびすべての等価形態についてのすべての新規のまた明らかでない組合せと部分的組合せとを含む。
【図１】
2018509686.tif 000003
【図２】
2018509686.tif 000004
【図３】
2018509686.tif 000005
【図４Ａ】
2018509686.tif 000006
【図４Ｂ】
2018509686.tif 000007
【図４Ｃ】
2018509686.tif 000008
【図４Ｄ】
2018509686.tif 000009
【図４Ｅ】
2018509686.tif 000010
【図４Ｆ】
2018509686.tif 000011
【図４Ｇ】
2018509686.tif 000012
【図４Ｈ】
2018509686.tif 000013
【図５Ａ】
2018509686.tif 000014
【図５Ｂ】
2018509686.tif 000015
【図６Ａ】
2018509686.tif 000016
【図６Ｂ】
2018509686.tif 000017
【図７Ａ】
2018509686.tif 000018
【図７Ｂ】
2018509686.tif 000019
【図７Ｃ】
2018509686.tif 000020
【図８Ａ】
2018509686.tif 000021
【図８Ｂ】
2018509686.tif 000022
【図８Ｃ】
2018509686.tif 000023
【図９】
2018509686.tif 000024
【国際調査報告】
2018509686.tif 000025
2018509686.tif 000026