(57)【要約】【課題】電子インクのエントリ、インクの編集および操作、および／またはインクの認識を可能にする制御部と、関連するプログラミングインターフェースとを提供すること。【解決手段】電子インクは、アプリケーションによって後で取り出すことを可能にするインクオブジェクトなどのデータ構造に格納することができる。ボールド、アンダーライン、イタリックなどにすることができるテキストと同様に、制御部と、そのプログラミングインターフェースとにより、手書きインクの豊かさを提供すると同時に、インク情報をテキストと同様に容易に操作することが可能となる。【選択図】　　　　図２
2004005656.tif 000002
【特許請求の範囲】
【請求項１】
制御機器において、電子インクを操作する方法であって、
データを受け取るステップと、
前記データをインクとして解釈するステップと、
前記インクを少なくとも１つのプロパティと関連付けるステップと、
前記少なくとも１つのプロパティを有する前記インクをインクオブジェクトとして格納するステップとを含むことを特徴とする方法。
【請求項２】
前記インクは複数のストロークを含み、前記複数のストロークを、複数のそれぞれのストロークオブジェクトとして格納するステップを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記ストロークの終了に応答して、イベントを生成するステップをさらに含むことを特徴とする請求項２に記載の方法。
【請求項４】
前記少なくとも１つのプロパティは、ボールド、イタリック、および色のうちの少なくとも１つを含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記少なくとも１つのプロパティを前記インクに付加するコマンドを受け取るステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記インクを表示するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記インクを表示する前記ステップは、前記少なくとも１つのプロパティに従って前記インクを表示するステップを含むことを特徴とする請求項６に記載の方法。
【請求項８】
制御機器において、インクを操作する方法であって、
表示エリア内でデータを受け取るステップと、
前記データをインクとして解釈するステップと、
前記表示エリア内に前記インクを表示するステップと、
前記インクをテキストとして認識するステップと、
前記表示されたインクを前記テキストで差し替えるステップとを含むことを特徴とする方法。
【請求項９】
少なくとも１つのプロパティをテキストと関連付けるステップと、前記少なくとも１つのプロパティに従って前記テキストを表示するステップとをさらに含むことを特徴とする請求項８に記載の方法。
【請求項１０】
前記少なくとも１つのプロパティは、ボールド、イタリック、および色のうちの少なくとも１つであることを特徴とする請求項９に記載の方法。
【請求項１１】
認識する前記ステップは、所定の認識コンテキストに基づいて前記インクを認識するステップを含むことを特徴とする請求項９に記載の方法。
【請求項１２】
制御部とユーザを橋渡しするように構成されたグラフィカルユーザインターフェースであって、
電子インクを受信するように構成された第１表示スペースと、
第１モードスイッチを有し、前記第１モードスイッチが第１設定の状態にあるときに、前記インクを格納するように構成され、また前記第１モードスイッチが第２設定の状態にあるときに、前記インクをテキストとして認識させる制御機器と、
前記第１モードスイッチの設定に応じて、前記インクまたは前記テキストのいずれかを自己の表示スペース内に表示するように構成された第２表示スペースと
を有することを特徴とするグラフィカルユーザインターフェース。
【請求項１３】
前記第１モードスイッチが前記第１設定の状態にあるときに、前記制御機器が、前記インクをインクオブジェクトとして格納するように構成されていることを特徴とする請求項１２に記載のグラフィカルユーザインターフェース。
【請求項１４】
前記第１表示スペースおよび第２表示スペースは同一の表示スペースであることを特徴とする請求項１２に記載のグラフィカルユーザインターフェース。
【請求項１５】
前記第１表示スペースが接触感応ディスプレイ上に広げられ、前記インクが、前記第１表示スペース内の前記接触感応ディスプレイに対してのスタイラスの移動に従って受け取られることを特徴とする請求項１２に記載のグラフィカルユーザインターフェース。
【請求項１６】
前記第１モードスイッチが前記第１設定の状態にあるときに、少なくとも１つのプロパティを前記インクに適用し、前記第１モードスイッチが前記第２設定の状態にあるときに、前記少なくとも１つのプロパティを前記テキストに付加するプロパティ機能をさらに含むことを特徴とする請求項１２に記載のグラフィカルユーザインターフェース。
【請求項１７】
前記少なくとも１つのプロパティは、ボールド、イタリック、および色のうちの少なくとも１つであることを特徴とする請求項１６に記載のグラフィカルユーザインターフェース。
【請求項１８】
前記制御機器は第２スイッチをさらに含み、前記制御機器が、前記第２スイッチの設定に応じて、前記第１表示スペースに対してインク入力を受け付け、または受け付けないようにさらに構成されていることを特徴とする請求項１２に記載のグラフィカルユーザインターフェース。
【請求項１９】
前記第１スイッチが前記第２設定の状態にあるときに、前記制御機器が、前記インクをテキストとして認識させるまでのの時間だけ待機するようにさらに構成されていることを特徴とする請求項１２に記載のグラフィカルユーザインターフェース。
【請求項２０】
前記所定の時間は、約１００ミリ秒から約５０００ミリ秒の範囲にあることを特徴とする請求項１９に記載のグラフィカルユーザインターフェース。
【請求項２１】
前記制御機器は、少なくとも１つのプロパティを前記インクに適用する手段をさらに含み、前記第２表示スペースが、前記少なくとも１つのプロパティに従って前記インクを表示するように構成されていることを特徴とする請求項１２に記載のグラフィカルユーザインターフェース。
【請求項２２】
前記制御機器は第３スイッチをさらに含み、前記制御機器が、前記第３スイッチの設定に応じて、複数の認識器のうちの少なくとも１つを呼び出すことにより、前記インクをテキストとして認識させるように構成されていることを特徴とする請求項１２に記載のグラフィカルユーザインターフェース。
【請求項２３】
前記第１モードスイッチが表示成分と関連付けられることを特徴とする請求項１２に記載のグラフィカルユーザインターフェース。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般に、ソフトウェアアプリケーションおよび／またはデータ構造間のインターフェースに関する。より詳細には、本発明は、電子インクを用いて情報を交換し、かつ／または電子インクのエントリおよび／または編集を可能にする方法およびグラフィカルユーザインターフェースに関する。
【０００２】
【従来の技術】
典型的なコンピュータシステム、特にＭｉｃｒｏｓｏｆｔ　ＷＩＮＤＯＷＳ（登録商標）などのグラフィカルユーザインターフェース（ＧＵＩ）システムを使用するコンピュータシステムは、テキストを入力するためのキーボードや、ユーザインターフェースを駆動するための１つまたは複数のボタンを有するマウスなどのポインティングデバイスなどの、１つまたは複数の別個の入力装置からユーザ入力を受け付けるように最適化されている。どこにでもあるキーボードおよびマウスインターフェースにより、文書、スプレッドシート、データベースフィールド、描画、写真などの高速な作成および変更が可能となる。しかし、キーボードやマウスのインターフェースによって与えられる自由度は、非コンピュータの（すなわち普通の）ペンや紙と比べて著しいギャップがある。普通のペンや紙を使用した場合には、ユーザは文書を編集し、余白にメモを書き込み、絵や他の形状などを描く。この場合、キーボードやマウスのインターフェースに制限されずに、自由にメモを取ることができるので、ユーザは、画面上で文書を見直すよりも、普通のペンを使用して文書に書き込むことを望むことがある。
【０００３】
幾つかのコンピュータシステムでは、ユーザが画面上に描画することを可能にする。例えば、Ｍｉｃｒｏｓｏｆｔ　ＲＥＡＤＥＲアプリケーションは、電子インク（本明細書では単に「インク」とも呼ぶ）を文書に加えることを可能にしている。このシステムは、インクを格納し、要求されたときにユーザにインクを供給している。他のアプリケーション（例えば、当技術分野で知られている描画アプリケーションは、Ｐａｌｍ　３．ｘおよび４．ｘオペレーティングシステム、ならびにＰｏｃｋｅｔＰＣオペレーティングシステムに関連する）は、描画の取り込みおよび格納を可能にする。さらに、Ｃｏｒａｌ　Ｄｒａｗなどの様々な描画アプリケーションや、Ｐｈｏｔｏｓｈｏｐなどのフォト／編集アプリケーションを、Ｗａｃｏｍタブレット製品などのスタイラスベース入力製品と共に使用することができる。これらの描画は、描画を作成するのに使用するインクストロークに関連する他のプロパティを含む。例えば、線幅や色をインクと共に格納することができる。これらのシステムの１つの目標は、１枚の紙に付着する物理的インクの外観と雰囲気（見た感じ）を複製することである。しかし、紙上の物理的インクは、座標の電子的集合と線分の接続では捕らえきれない著しい情報量を有する可能性がある。この情報の一部には、（物理的インクの幅からわかるように）使用したペン先の厚さ、または紙に対するペンの角度、ペン先の形状、インクが沈着するときの速度などが含まれる可能性がある。
【０００４】
【発明が解決しようとする課題】
電子インクに伴う別の問題も生じている。電子インクは、電子インクが書き込まれるアプリケーションの一部とみなされてきた。これにより、電子インクの豊かさを他のアプリケーションまたは環境に提供することは基本的にできない。テキストは（例えば、クリップボードを使用することによって）様々なアプリケーション間で移植することができるが、インクは、インクと対話する能力を有することができない。例えば、図８のイメージを作成し、作成したイメージをクリップボードによってコピーして文書に貼り付けし、次いでインクをボールドにするということはできない。１つの困難は、アプリケーション間でイメージを移植することができないことである。
【０００５】
【課題を解決するための手段】
ソフトウェア開発者は一般に、ユーザがフォーマット済みテキストを入力および編集することを可能にする従来のＷｉｎ３２　ＲｉｃｈＥｄｉｔ制御部に精通している。本発明の一態様では、ＲｉｃｈＥｄｉｔ制御部の機能を拡張し、手書き電子インクの筆跡を受け付ける能力をさらに提供することを対象とする。さらにこの筆跡を、ある時間遅延の後に自動的に、または後の要求時に認識し、テキスト（文書；文字列のみのデータ）に変換することができる。インクをテキストに変換しない場合には、オブジェクトタイプデータ構造などでオリジナルの電子インクを格納することができる。したがって、本発明の一態様では、既存のアプリケーションおよび将来のアプリケーションに対して助けとなる電子インクを追加することができる。
【０００６】
本発明の別の態様は、プロパティとやりとりし、メソッドを呼び出し、かつ／または電子インクに関係するイベント（事象）を受け取る、自由つ効率的なインターフェースを提供し、それによって従来の装置およびシステムで識別された問題のうちの１つまたは複数を解決する。本発明のある態様は、格納されたインクの内容を改善することに関する。他の態様は、格納されたインクを変更することに関する。さらに別の態様は、インクとテキストの相互操作性を提供することに関する。
【０００７】
本発明の上記その他の特徴は、以下の好ましい実施形態の詳細な説明を考慮するときに明らかとなるであろう。
【０００８】
前述の発明の概要と、以下の好ましい実施形態の詳細な説明は、添付の図面と一緒に読むときに最もよく理解されよう。添付の図面は、例として含めるのであって、特許請求の範囲に記載された発明に関して限定するものではない。
【０００９】
【発明の実施の形態】
以下に、電子インクを取り込みし、認識し、電子インクと対話し、電子インクを編集または操作し、かつ／または表示する方法を説明する。
【００１０】
［一般的コンピューティングプラットフォーム］
図１は、本発明の様々な態様を実装するのに使用することができる従来の汎用デジタル計算機環境の一例を示す機能ブロック図である。図１では、コンピュータ１００は、処理装置１１０と、システムメモリ１２０と、システムメモリを含む様々なシステム構成要素を処理装置１１０に結合するシステムバス１３０とを含む。システムバス１３０は、様々なバスアーキテクチャのうちのいずれかを用いる、メモリバスまたはメモリコントローラと、周辺バスと、ローカルバスとを含むいくつかのタイプのバス構造のうちのいずれでもよい。システムメモリ１２０は、読取り専用メモリ（ＲＯＭ）１４０およびランダムアクセスメモリ（ＲＡＭ）１５０を含む。
【００１１】
立ち上げ中などにコンピュータ１００内の要素間で情報を転送する助けになる基本ルーチンを含む基本入出力システム（ＢＩＯＳ）１６０が、ＲＯＭ　１４０内に格納される。コンピュータ１００はまた、ハードディスク（図示せず）を読み書きするためのハードディスクドライブ（駆動装置）１７０と、取外し可能磁気ディスク１９０を読み書きするための磁気ディスクドライブ１８０と、ＣＤ　ＲＯＭまたは他の光媒体などの取外し可能光ディスク１９２を読み書きするための光ディスクドライブ１９１とを含む。ハードディスクドライブ１７０、磁気ディスクドライブ１８０、および光ディスクドライブ１９１は、それぞれハードディスクドライブインターフェース１９２、磁気ディスクドライブインターフェース１９３、および光ディスクドライブインターフェース１９４によってシステムバス１３０に接続される。ドライブと、関連するコンピュータ可読媒体により、パーソナルコンピュータ１００に対するコンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの不揮発性記憶が実現される。磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ、ランダムアクセスメモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）など、コンピュータがアクセス可能な、データを格納することができる他のタイプのコンピュータ可読媒体もこの例示的動作環境で使用できることを当業者は理解されよう。
【００１２】
いくつかのプログラムモジュールを、オペレーティングシステム１９５、１つまたは複数のアプリケーションプログラム１９６、他のプログラムモジュール１９７、およびプログラムデータ１９８を含むハードディスクドライブ１７０、磁気ディスク１９０、光ディスク１９２、ＲＯＭ１４０、またはＲＡＭ１５０上に格納することができる。ユーザは、キーボード１０１およびポインティングデバイス１０２などの入力装置を介して、コンピュータ１００にコマンドおよび情報を入力することができる。他の入力装置（図示せず）には、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなどを含めることができる。これらの入力装置や他の入力装置はしばしば、システムバスに結合されるシリアルポートインターフェース１０６を介して処理装置１１０に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（ＵＳＢ）などの他のインターフェースで接続することもできる。さらに、これらの装置は、適切なインターフェース（図示せず）を介してシステムバス１３０に直接接続することもできる。モニタ１０７または他のタイプのディスプレイ装置も、ビデオアダプタ１０８などのインターフェースを介してシステムバス１３０に接続される。モニタに加えて、パーソナルコンピュータは一般に、スピーカおよびプリンタなどの他の周辺出力装置（図示せず）を含む。好ましい実施形態では、手書きの入力をデジタル式に取り込みするために、ペンデジタイザ１６５と、添付のペンまたはスタイラス１６６を備える。ペンデジタイザ１６５と処理装置１１０の間の直接接続を図示してあるが、実際には、ペンデジタイザ１６５は、シリアルポート、パラレルポート、または他のインターフェースペンデジタイザ１６５を介して処理装置１１０に接続することができ、当技術分野で周知のシステムバス１３０に接続することができる。さらに、デジタイザ１６５をモニタ１０７と別々に図示してあるが、デジタイザ１６５の使用可能入力エリアがモニタ１０７の表示エリアと同一の広がりを持つことが好ましい。さらに、デジタイザ１６５をモニタ１０７に統合することができ、あるいはデジタイザ１６５は、モニタ１０７に重なるか、またはモニタ１０７に添付される別々の装置として存在することができる。
【００１３】
コンピュータ１００は、リモートコンピュータ１０９などの１つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク環境で動作することができる。リモートコンピュータ１０９は、サーバ、ルータ、ネットワークＰＣ、ピア装置、または他の共通ネットワークノードでよく、一般にコンピュータ１００に関して上記で述べた要素のうちの多くまたはすべてを含むが、図１にはメモリ記憶装置１１１だけを示してある。図１に示す論理接続は、ローカルエリアネットワーク（ＬＡＮ）１１２および広域ネットワーク（ＷＡＮ）１１３を含む。このようなネットワーク環境は、オフィス、企業全体のコンピュータネットワーク、イントラネット、およびインターネットで一般的なものである。
【００１４】
ＬＡＮネットワーク環境で使用する際、コンピュータ１００は、ネットワークインターフェースまたはアダプタ１１４を介してローカルネットワーク１１２に接続される。ＷＡＮネットワーク環境で使用する際、パーソナルコンピュータ１００は一般に、インターネットなどの広域ネットワーク１１３を介して通信を確立するためのモデム１１５または他の手段を含む。モデム１１５は内蔵でも外付けでもよく、シリアルポートインターフェース１０６を介してシステムバス１３０に接続される。ネットワーク環境では、パーソナルコンピュータ１００に関して示したプログラムモジュールまたはその一部を、リモートメモリ記憶装置に格納することができる。
【００１５】
図１の図示するネットワーク接続は例示的なものであって、コンピュータ間の通信リンクを確立する他の技法も使用できることを理解されよう。ＴＣＰ／ＩＰ、イーサネット（登録商標）、ＦＴＰ、ＨＴＴＰなどの様々な周知のプロトコルのうちのいずれの存在も想定され、このシステムは、ユーザがウェブベースのサーバからウェブページを取り出すことが可能となるようにクライアントサーバ構成で動作することができる。ウェブページ上にデータを表示し、ウェブページ上のデータを操作するのに、様々な従来型ウェブブラウザのうちのいずれも使用することができる。
【００１６】
図２に、本発明の様々な態様に従って使用することができるスタイラスベースのコンピュータ処理システム（タブレットＰＣとも呼ばれる）２０１の一例を示す。図１のシステムの特徴、サブシステム、および機能のいずれかまたはすべてを、図２のコンピュータに含めることができる。タブレットＰＣ　２０１は、複数のウィンドウ２０３が表示される大表示面２０２、例えばデジタル化フラットパネルディスプレイ、好ましくは液晶ディスプレイ（ＬＣＤ）画面を含む。使用することができる他のディスプレイ技術には、限定はしないが、ＬＥＤディスプレイ、プラズマディスプレイなどが含まれる。スタイラス（触針）２０４のチップ（先端部）（本明細書では、チップを「カーソル（位置表示機構）」とも呼ぶ）を使用して、ユーザは、デジタル化表示エリアを選択し、強調表示し、デジタル化表示エリアに対してインクを書き込むことができる。適切なデジタル化表示パネルの例には、武蔵工業（株）または（株）ワコム製のペンデジタイザなどの電磁ペンデジタイザが含まれる。他のタイプのペンデジタイザ、例えば光デジタイザも使用することができる。タブレットＰＣ　２０１は、データを操作し、テキストを入力し、スプレッドシート、ワードプロセッシングプログラムなどの従来型コンピュータアプリケーションタスクを実行するために、スタイラス２０４を使用して作成されたマークを解釈する。
【００１７】
スタイラスは、選択機能を高めるために、ボタンまたは他の機構を備えることができる。一実施形態では、スタイラスは、一端が書込み部分を構成し、他端が、ディスプレイを移動するときに、ディスプレイの各部分を消去すべきことを指示する「イレーザ（消しゴム、字消し）」端を構成する「鉛筆」または「ペン」として実装することができる。マウス、トラックボールなどの他のタイプの入力装置も使用することができる。加えて、接触感応ディスプレイまたは接近検知ディスプレイ上の表示イメージの各部分を選択また指示するために、ユーザ自身の指を使用することもできる。したがって、本明細書で使用する用語「ユーザ入力装置」は、広範な定義を有し、周知の入力装置に対する多くの変形形態を包含するものとする。
【００１８】
［電子インク、およびインクオブジェクトの概念］
本明細書で使用するインクは電子インクを指す。電子インクは、一続きのストロークまたは１組のストロークとして構成することができ、各ストロークは、一続きのポイントまたは１組のポイントを含む。一続きのストロークおよび／またはポイントは、取り込みされた時間順に並べることができ、かつ／またはストロークおよび／またはポイントがページ上のどこに現れるかによって並べることができる。１組のストロークは、ストロークおよび／またはポイントの順序列、ならびに／あるいは非整列のストロークおよび／またはポイントを含むことができる。ポイントは、デカルト座標（Ｘ，Ｙ）、極座標（ｒ，Θ）、および当技術分野で周知の他の技法を含む、様々な周知の技法を使用して表すことができる。あるいは、ストロークは、ポイントと、次のポイントの方向のベクトルとして表すこともできる。ストロークは、基礎となるポイントの表現、および／または何がポイントを接続するかに関わらず、インクに関するポイントまたはセグメントのどんな表現も包含するものとする。インクの集合は通常、デジタイザ（表示面２０２のデジタイザなど）で始まる。ユーザは、デジタイザ上にスタイラスを配置し、書込みまたはドローを開始する。その時点で、新しいインクパケット（すなわち、インク関係のデータのパケット）を生成することができる。ユーザはまた、デジタイザが検知するように、デジタイザに十分接近した空中でスタイラスを移動させることもできる。これが行われるとき、検知したスタイラスの空中の移動に従って、データのパケット（本明細書では「空中パケット」と呼ぶ）を生成することができる。パケットは、位置情報だけではなく、スタイラス圧力情報および／または角度情報も含むことができる。
【００１９】
インクを格納するために、スタイラス２０４が表示面２０２および／または他の入力上に描いたインクの元のストロークを表すインクオブジェクトを生成することができる。収集されるインクのストロークは、表示面２０２上のどこからでも収集することができ、または特定のウィンドウなど、表示面２０２の画定した部分からのみ収集することができる。インクオブジェクトは、本質的にインクデータのコンテナ（容器）である。インクをインクオブジェクト内に格納する具体的なフォーマットは、本発明にとって重要ではない。しかし、当初描かれたインクストロークをインクオブジェクト内に格納することが好ましい。
【００２０】
インクオブジェクトの２つの例示的タイプを定義することができる。ｔＩｎｋオブジェクト（「ｔ」は「テキスト」を意味する）は、文字またはワードを形成すると予期されるインクを表すＯＬＥ（ｏｂｊｅｃｔ　ｌｉｎｋｉｎｇ　ｅｍｂｅｄｄｉｎｇ）オブジェクトとして実施することができる。ｔＩｎｋオブジェクトにより、手書きのインクをテキスト認識器などによってテキストに変換することが可能となる。ｔＩｎｋオブジェクトは、インクと関係し、かつテキストコンテキストを有するインクオブジェクトと呼ぶことができる。テキストインクの色および／またはフォントサイズ、ならびにテンキストインクをアンダーライン、ボールド、および／またはイタリックなどにすべきかどうかなどをプログラム的に設定することができ、それらは、ｔＩｎｋオブジェクトの周りのテキストの属性に基づくことができる。
言い換えれば、ｔＩｎｋオブジェクトの意図される挿入点の周囲のプロパティ（特性、属性）をｔＩｎｋオブジェクトに適用（付加）することができる。一実施形態では、ｔＩｎｋオブジェクトは、センテンスが複数のｔＩｎｋオブジェクトを含むことができるように、テキスト認識器にサブミットする単一のワードだけを含む。一方、ワードを形成するとは予期されないインクを表すオブジェクトとして、ｓＩｎｋオブジェクト（「ｓ」は「スケッチ」を意味する）も定義することができる。ｓＩｎｋオブジェクトもＯＬＥオブジェクトとすることができる。
したがって、ｓＩｎｋオブジェクトは、描画コンテキストまたは任意の他の非テキストコンテキストとして解釈することができる。ｓＩｎｋオブジェクトは、複数のワードを表すのにも有用であることがある。インク互換アプリケーション（および／またはユーザ）は、あるインクオブジェクトをｔＩｎｋオブジェクトとしてマークし、他のインクオブジェクトをｓＩｎｋオブジェクトとしてマークすることができる。本明細書では、この２つのタイプのインクを「ｔＩｎｋ」および「ｓＩｎｋ」として説明する。しかし、使用することができる様々なタイプのインクオブジェクトを表すのに他の名前も使用できることを理解されたい。さらに、所望のフォーマットで電子インクを格納するために代替タイプのオブジェクトを使用することもできる。
【００２１】
［ＩｎｋＣｏｌｌｅｃｔｏｒオブジェクト］
インク入力装置からインクを取り込みし、かつ／またはアプリケーションにインクを送達するために、オブジェクト（本明細書では「ＩｎｋＣｏｌｌｅｃｔｏｒ」オブジェクトと呼ぶ）を定義し、使用することができる。ＩｎｋＣｏｌｌｅｃｔｏｒオブジェクトはある意味で、１つまたは複数のインクストロークとしてインクを収集し、インクを１つまたは複数の関連するインクオブジェクト内に格納することによって、１つまたは複数の異なる、かつ／または別個のインクオブジェクトにインクを「注ぐ」蛇口として振る舞う。ＩｎｋＣｏｌｌｅｃｔｏｒオブジェクトは、ＩｎｋＣｏｌｌｅｃｔｏｒオブジェクト自体を周知のアプリケーションウィンドウに付加することができる。次いでＩｎｋＣｏｌｌｅｃｔｏｒオブジェクトは、利用可能な任意またはすべてのタブレット装置（スタイラス２０４および／またはマウスを含めることができる）を使用することにより、そのウィンドウに対してリアルタイムインキング（ペンで字や絵を描く）を提供することができる。ＩｎｋＣｏｌｌｅｃｔｏｒオブジェクトを使用するために、開発者はそれを作成し、描画されたインクを収集するウィンドウを割り当て、オブジェクトを使用可能にすることができる。ＩｎｋＣｏｌｌｅｃｔｏｒオブジェクトを使用可能にした後、インクストロークおよび／またはジェスチャ（ペン入力の基本操作）が収集される様々なインク収集モードでインクを収集するようにＩｎｋＣｏｌｌｅｃｔｏｒオブジェクトを設定することができる。ジェスチャは、レンダリングされたインクとして解釈されるのではなく、あるアクションまたは機能を実施するための要求またはコマンドとして解釈されるスタイラス２０４の移動または他のアクションである。例えば、インクを選択するために特定のジェスチャを実施することができ、一方別のジェスチャは、インクをイタリックにするためのジェスチャとすることができる。デジタイザ入力上、またはその近傍でスタイラスが移動するごとに、ＩｎｋＣｏｌｌｅｃｔｏｒオブジェクトがストロークおよび／またはジェスチャを収集することになる。
【００２２】
［ＩｎｋＥｄｉｔ制御］
本明細書で「ＩｎｋＥｄｉｔ」制御と呼ぶ、（例えばテキスト形式で）インクを取り込みし、認識し、かつ／または表示するための容易な方法を提供する制御を定義することができる。ＩｎｋＥｄｉｔ制御は、ボールド、アンダーライン、イタリック、上付き、下付き、位置調整などのインクフォーマット機能および／またはテキストフォーマット機能を有する埋込みオブジェクトとして（例えば、インク選択プロパティを介してプログラム的にアクセス可能なｔＩｎｋ埋込みオブジェクトとして）インクを表示することをさらにサポートすることができる。この制御の主な使用法は、インクのエントリを可能にし、インク、またはインクから認識されたテキストを表示することである。この制御はさらに、インクおよび／または認識されたテキストの編集および／またはフォーマットを可能にする。
【００２３】
周知のＭｉｃｒｏｓｏｆｔ　ＷＩＮＤＯＷＳ（登録商標）ユーザインターフェースは、編集制御（すなわち、ＲｉｃｈＥｄｉｔおよびＲｉｃｈＴｅｘｔＢｏｘ）である。ＩｎｋＥｄｉｔ制御の実施形態は、開発者が既に通じており、開発者のアプリケーションで既に使用している可能性の高いこれらの制御の拡張インクバージョンを開発者に提供し、キーボードからテキストを受け入れる既存の能力に加えて、スタイラス、マウス、および／または他のポインタからテキストを受け入れるための様々な機能を既存のＲｉｃｈＥｄｉｔ制御に加える。例えば、一実施形態では、ＩｎｋＥｄｉｔ制御は、電子インクの筆跡を受け付けし、そのインクを認識し、テキストに変換する能力を提供する。ＩｎｋＥｄｉｔ制御はさらに、後で認識するために筆跡をインクとして受け付けし、それによって筆跡自体を編集可能にする能力を提供することができる。
【００２４】
ＩｎｋＥｄｉｔ制御を使用するために必要なのは、開発者が単にＩｎｋＥｄｉｔ制御をインスタンス化することだけである。開発者および／または実行時ユーザはさらに、１つまたは複数のモードをＩｎｋＥｄｉｔ制御の様々な機能に適用することができる。例えば、あるモードは、インクをインクとして挿入すべきか、それともテキストとして挿入すべきかを示すことができる。ＩｎｋＥｄｉｔ制御は、タブレットコンテキストの確立、デジタイザイベントのリスニング、ストロークの収集、認識器へのストロークの供給、および／または表示や後の持続のためのＩｎｋＥｄｉｔ制御への認識の結果（例えばＯＬＥ埋込みオブジェクトでよい）の供給といった、内部の日常的な細部の多くを管理することができる。
【００２５】
１つの例示的実施形態では、ＩｎｋＥｄｉｔ制御をＡｃｔｉｖｅＸおよびＷｉｎ３２で実装することができ、ＩｎｋＥｄｉｔ制御は、従来のＭｉｃｒｏｓｏｆｔ　Ｗｉｎ３２　Ｒｉｃｈ　Ｅｄｉｔ制御に基づくことができる。別の例示的実施形態では、ＩｎｋＥｄｉｔ制御をＭｉｃｒｏｓｏｆｔ　．ＮＥＴで実装することができ、ＩｎｋＥｄｉｔ制御は、Ｗｉｎ３２　ＩｎｋＥｄｉｔ制御およびＲｉｃｈＥｄｉｔ制御、ならびにＭｉｃｒｏｓｏｆｔ　．ＮＥＴ　ＲｉｃｈＴｅｘｔＢｏｘ制御に基づくことができる。良く知られているように、Ｍｉｃｒｏｓｏｆｔ　ＲｉｃｈＥｄｉｔ制御およびＲｉｃｈＴｅｘｔＢｏｘ制御により、様々な先進のフォーマット機能（テキストフォント、色、フォーマットなど）が提供されると同時に、ユーザがテキストを入力、編集、フォーマット、プリント、保存することが可能となる。したがって、本発明のＩｎｋＥｄｉｔ制御は、ＲｉｃｈＥｄｉｔおよびＲｉｃｈＴｅｘｔＢｏｘ制御によって提供される機能を今やインクと従来のテキストに適用できることを除いて、ＲｉｃｈＥｄｉｔおよびＲｉｃｈＴｅｘｔＢｏｘ制御によって提供される機能の多くを有することができる。インクは、それ自体本質的に第１クラスシチズン（ｆｉｒｓｔ−ｃｌａｓｓ　ｃｉｔｉｚｅｎ：一流市民）となることができる。ボールド、アンダーライン、イタリックなどにすることができるテキストと同様に、ＩｎｋＥｄｉｔ制御とそのプログラミングインターフェースは、手書きインクの豊かさを提供すると同時に、インク情報をテキストと同様に容易に操作できるようにする。
【００２６】
ある実施形態では、ＩｎｋＥｄｉｔ制御は、単一の線と複数の線のテキストエントリおよび編集のためのフォームシナリオで十分動作するように設計される。ＩｎｋＥｄｉｔ制御は、ユーザからインク入力をテキストの筆跡の形で取得することができる。インク入力を認識することができ、プリントされたテキストをその場所に挿入することができる。ＩｎｋＥｄｉｔのためのデフォルトユーザインターフェースは、ユーザがインク中のときを除き、従来のＲｉｃｈＴｅｘｔＢｏｘ制御と同様にすることができる。ＩｎｋＥｄｉｔ制御は、元のインクまたは認識したテキスト（あるいはその両方）を表示することができる。表示されるインクは、ＩｎｋＥｄｉｔ制御の現入力フォントサイズにすることができ、他のテキストと共にインライン表示することができ、かつ／または位置、サイズ、および／または色を変更することができる。あるいは、表示されるインクは、元の位置、サイズ、および／または色を保持することもできる。
【００２７】
１つの例示的実施形態では、ＩｎｋＥｄｉｔ制御に関するデフォルトの挙動は、短時間の認識タイムアウトが満了した後、インクを認識し、テキストに変換することである。この認識タイムアウトは、約２０００ミリ秒、または約１００ミリ秒から約５０００ミリ秒の範囲、または約２００ミリ秒から約２０００ミリ秒の範囲など、望まれるどんな時間量でもよい。この場合、認識タイムアウトを０に設定すると、自動認識が使用不能にされる。ＩｎｋＥｄｉｔ制御はＲｉｃｈ　Ｅｄｉｔのスーパークラスであるので、ＩｎｋＥｄｉｔ制御は、ＩｎｋＥｄｉｔ制御内にディスプレイインクを組み込むことがさらに可能である。各インクワードは、インクオブジェクト（例えばｔＩｎｋオブジェクト）として制御内に挿入することができる。インクオブジェクトは、インクと、そのインクに関連する１つまたは複数のプロパティを含むことができる。
【００２８】
インクが挿入されるとき、インクを現在のフォントサイズにすることができ、イタリックまたはボールドなどの他の周囲のプロパティが適用される。ユーザがインクオブジェクトのテキストの編集を選んだ場合、ユーザはまず、インクをテキストに変換することができる。
【００２９】
図３を参照すると、ＩｎｋＥｄｉｔ制御は、グラフィカルユーザインターフェース３０１に関連してディスプレイ上に出現することができる。グラフィカルユーザインターフェース３０１は、描画されたインクデータを受け取り、かつ／またはインクおよび／またはテキストを表示する１つまたは複数の表示スペース３０２を含むことができる。グラフィカルユーザインターフェースは、スタイラス２０４によって表示スペース３０２内に描画されたインクデータデータを受け取ることができ、ＩｎｋＥｄｉｔはデータをインクとして解釈することができる。
ＩｎｋＥｄｉｔ制御はさらに、アプリケーション開発者、ユーザによって選ばれ、かつ／または自動的に選ばれたボールド、アンダーライン、イタリック、上付き、下付き、位置調整、色、サイズなどの１つまたは複数のプロパティとインクとを関連付けることができる。図３および４に示すように、インクの一部を選択し、プロパティを与えることができる。この場合、例えば、手書きのインクワード「ｃｏｎｃｅｉｖｅｄ　ｉｎ　ｌｉｂｅｒｔｙ」が選択され、次いでイタリックにされ、手書きのインクワード「ｃｒｅａｔｅｄ　ｅｑｕａｌ」が選択され（図３の破線のボックスで示す）、次いでサイズが拡大される。ＩｎｋＥｄｉｔ制御はさらに、インクと、関連するプロパティとをインクオブジェクトとして格納させることができる。したがって例えば、表示スペース３０２内のインクを１つまたは複数のインクオブジェクト内に格納することができ、ワード「ｃｏｎｃｅｉｖｅｄ　ｉｎ　ｌｉｂｅｒｔｙ」を、イタリックプロパティと関連付けるべきインクオブジェクト内に格納することができる。受け取るインクデータに応答して、ＩｎｋＥｄｉｔ制御はインクを表示させることができる。一実施形態では、インクは、表示スペース３０２内の、例えばインクデータを受け取った表示スペース３０２内の同じ位置で表示される。
【００３０】
表示スペース３０２内にインクを表示したままにする（すなわち、持続させる）ことができ、またはインクを認識し、かつ／またはテキストに変換することができる。認識および／または変換は、認識タイムアウトの後に、かつ／または（ユーザまたはアプリケーションからの）コマンドに対して即座に行うことができる。この場合、インクは、タイムアウト条件に応答して、認識され、かつ／またはテキストに変換され、認識タイムアウトは、約２０００ミリ秒、または約１００ミリ秒から約５０００ミリ秒の範囲、または約２００ミリ秒から約２０００ミリ秒の範囲など、望まれるどんな時間量でもよい。認識タイムアウトを決定するタイマは、スタイラス２０４が表示面２０２から上昇することに応答して、かつ／またはストロークが終了することに応答してスタートすることができ、タイムアウト条件が生じる前にスタイラス２０４が表示面２０２に戻ったときにタイマをキャンセルすることができる。タイマをスタートさせることができる他のイベントには、スタイラス２０４が表示面２０２上で移動を停止すること、スタイラス２０４からのジェスチャ、ボタンなどの別の入力が含まれる。１つまたは複数のモードスイッチの設定に応じて、インクを認識することもしないこともでき、かつ／またはプリントされたテキストとして表示することができる。１つまたは複数のモードスイッチは、１つまたは複数の表示要素（例えば表示要素３０３）に関連付けることができ、またはユーザから隠すことができる（すなわち、ディスプレイ上に表示しない）。この場合、スイッチは第１設定の状態にあり、インクは、テキストとして認識または表示されない。ある実施形態では、特定のコマンドに応答して、インクを依然としてテキストとして認識および／または表示することができる。この場合、スイッチは第２設定の状態にあり、（即座に、タイムアウトの後に、または本明細書で論じるコマンドに対して）インクをテキストとして認識および／または表示することができる。この場合、インクはテキストとして表示され、認識の結果として得られるテキストを表示して、表示スペース３０２内のインクを置換し、それによって置換されるインクが表示スペース３０２内にもはや表示されないようにすることができる。図５に、認識され、テキストに変換された表示スペース３０２内のインクの部分を示し、図６に、認識され、テキストに変換された表示スペース３０２内のインクのすべてを示す。これらの例示的な図では、手書き文字は元の手書きインクを表し、プリントされたフォントは認識されたテキストを表す。
【００３１】
インクは、単一の認識器、または認識器の集合などの複数の認識器によって認識することができる。認識器は、１つまたは複数のジェスチャ認識器および／またはテキスト認識器を含むことができる。認識すべきインクの選択はさらに、特定の認識コンテキストと関連付けることができ、その特定の認識コンテキストは、１つまたは複数の様々な認識プロパティと共に、いわゆる「擬似事実（ｆａｃｔｏｉｄ）」プロパティを含むことができる。擬似事実プロパティは、インクのより正確なコンテキストの認識を助けるために認識コンテキストに提供される１組の「ヒント」とみなすことができる。リンク認識を実施し、認識結果を取り出し、かつ／または代替認識結果を取り出す能力を表す認識器コンテキストオブジェクトを定義することができる。認識器コンテキストオブジェクトは、システム上にインストールされた様々な認識器が、インク認識を実施することにより適切に入力を処理することを可能にする。バックグラウンド認識またはフォアグラウンド認識を含む少なくとも２つのタイプの認識を実施することができる。バックグラウンド認識は、システムのバックグラウンド処理で行われ、（ユーザまたはユーザ以外によって作成された）他のシステムイベントにより停止される可能性がある。一方、フォアグラウンド認識は一般に、ユーザによって開始され、認識が完了するまで停止しない。認識コンテキストオブジェクトは、認識すべきインクストロークを受け取ることができ、擬似事実プロパティは、入力インクおよび所望の認識出力に関する制約および／または他のパラメータを定義することができる。例えば、設定することのできる制約には、認識中に使用すべき言語、辞書、および／または文法が含まれる。ＩｎｋＥｄｉｔ制御をフォームと共に使用する場合、フォーム中のデータエントリフィールドごとに、異なる認識器コンテキストおよび／または擬似事実を設定することができる。様々なデータエントリフィールドは、番号に加えて符号、ダッシュ、および括弧を有する電話番号フィールド、数字およびダッシュだけを有する郵便番号フィールド、大文字だけを有する州の略号、ユニバーサルリソースロケータ（ＵＲＬ）など、ある情報のセットに固有のものとすることができる。
【００３２】
様々な認識器コンテキストおよび／または擬似事実を有することの１つの潜在的な利点は、ある実施形態で、認識が行われる時間フレーム、または認識をトリガするものを調節できることである。例えば、フォーム中の名前フィールドまたはコメントフィールドの場合、各ワードの終わりに認識を行うことが望ましい。
しかし、（例えば）州フィールド、街路／部屋番号フィールド、または郵便番号フィールドを使用するときは、各文字が書き込まれた後に認識を行うことが望ましい。ある場合、この文字ごとの認識を使用して、１群の文字を一緒に認識することによって達成することができる認識精度よりも高い精度を実現することができる。
【００３３】
ＩｎｋＥｄｉｔ制御はさらに、ジェスチャサポートを提供することができ、ジェスチャに応答してイベントを生成することができる。図７を参照すると、図示されている例示的ジェスチャ７０１〜７０４などの様々なジェスチャをサポートすることができる。例えば、ジェスチャ７０１は改行を表すことができ、ジェスチャ７０２はタブコマンドを表すことができ、ジェスチャ７０３は間隔文字を表すことができ、ジェスチャ７０４はバックスペースコマンドを表すことができる。他の多くのジェスチャも可能である。
【００３４】
ＩｎｋＥｄｉｔ制御はさらに、ユーザが望み通りに代替認識結果を見、オンスクリーンキーボード（ソフトウエアキーボード）を使用し、かつ／または文字認識器、字体認識器、および／またはブロックテキスト認識器を使用することを可能にする補正ユーザインターフェースを提供することができる。さらにＩｎｋＥｄｉｔ制御は、従来のＷｉｎｄｏｗｓ（登録商標）　Ｆｏｒｍｓ　ＲｉｃｈＴｅｘｔｂｏｘ制御と同じ保存機構およびロード機構を使用して、ＩｎｋＥｄｉｔ制御のデータの持続およびロードを可能にすることができる。
【００３５】
［ＩｎｋＥｄｉｔ　ＡＰＩ］
ＩｎｋＥｄｉｔ制御は、ＩｎｋＥｄｉｔ制御のアプリケーションプログラミングインターフェース（ＡＰＩ）を介して、ユーザに対して様々な機能を公開する。ホストアプリケーションに応じて、様々なフレーバのＩｎｋＥｄｉｔ　ＡＰＩを提供することができる。図８を参照すると、例示的システムは、ＡｃｔｉｖｅＸホストアプリケーション８０１、Ｗｉｎ３２ホストアプリケーション８０２、および／または共通言語ランタイム（ＣＬＲ）ホストアプリケーション８０３のうち１つまたは複数を含むことができる。加えて、ＩｎｋＥｄｉｔ　ＡｃｔｉｖｅＸ制御部８０４を定義することができ、ＩｎｋＥｄｉｔ　ＡｃｔｉｖｅＸ制御部８０４は、ＡｃｔｉｖｅＸホストアプリケーション８０１とインターフェースすることができる。ＩｎｋＥｄｉｔ　Ｗｉｎ３２制御部８０５をさらに定義することができ、ＩｎｋＥｄｉｔ　Ｗｉｎ３２制御部８０５は、Ｗｉｎ３２ホストアプリケーション８０２とインターフェースすることができる。ＩｎｋＥｄｉｔ　ＷｉｎＦｏｒｍｓ制御部８０６を定義することができ、ＩｎｋＥｄｉｔ　ＷｉｎＦｏｒｍｓ制御部８０６は、ＣＬＲホストアプリケーション８０３とインターフェースすることができる。最後に、様々なフレーバのＩｎｋＥｄｉｔ制御部８０４、８０５、８０６のいずれかまたはすべてとインターフェースするＲｉｃｈＥｄｉｔ４．５　Ｗｉｎ３２制御部８０７を定義することができる。ＩｎｋＥｄｉｔ　Ｗｉｎ３２制御部８０５は、他の２つの制御部（ＡｃｔｉｖｅＸ制御部８０４およびＷｉｎｆｏｒｍｓ制御部８０６）に対する基礎とすることができる。一実施形態では、インクの集合、認識器との対話、および／またはＲｉｃｈＥｄｉｔＷｉｎ３２制御部８０７のサブクラス分けなどの主な機能をＷｉｎ３２制御部８０５内に実装することができる。ＡｃｔｉｖｅＸ　ＩｎｋＥｄｉｔ制御部８０４は、Ｗｉｎ３２　ＩｎｋＥｄｉｔ制御部８０５によって定義されたＣ＋＋クラスを使用することができ、その機能を基礎としてＡｃｔｉｖｅＸサポートを生成することができる。Ｗｉｎｆｏｒｍｓ　ＩｎｋＥｄｉｔ制御部８０６は、Ｗｉｎｆｏｒｍｓ　ＲｉｃｈＴｅｘｔＢｏｘ８０８から派生することができ、本明細書で論じたインキング機能を用いてＲｉｃｈＴｅｘｔＢｏｘ８０８を拡張することができる。Ｗｉｎｆｏｒｍ　ＩｎｋＥｄｉｔ制御部８０６は、例えば、ＲｉｃｈＥｄｉｔ制御部の代わりにＷｉｎ３２　ＩｎｋＥｄｉｔ制御部をまずロードし、ＲｉｃｈＴｅｘｔＢｏｘ８０８で提供される既存のＡＰＩ要素に加えて、新しいメソッド、プロパティ、および／またはイベントを望み通りに追加することによって機能を拡張することができる。図８は、様々なホスティング環境での制御部間の例示的な１組の関係を示し、したがって制御部間の矢印は、決して限定を意図するものではない。
【００３６】
次に、図９を参照しながら、ＩｎｋＥｄｉｔ制御部のための例示的ＡＰＩを論じる。図９では、ＩｎｋＥｄｉｔ制御部９０１がボックスで表されており、ＡＰＩの様々な要素（または機能的にグループ化された要素）が、ＩｎｋＥｄｉｔ制御部９０１を表すボックスから出て、かつ／またはボックスに入る、符号を付けた矢印９４０〜９６０として示されている。一般には、ＩｎｋＥｄｉｔ制御部９０１ボックスに入る矢印は、大部分は（ＩｎｋＥｄｉｔ制御部９０１のプロパティのうち１つを変更することによって）ＩｎｋＥｄｉｔ制御部９０１を変更し、かつ／またはＩｎｋＥｄｉｔ制御部９０１に情報を提供するＡＰＩ要素（または機能的にグループ化された要素）を指す。ＩｎｋＥｄｉｔ制御部９０１ボックスから出る矢印は、大部分はフラグ、またはＩｎｋＥｄｉｔ制御部９０１によってＩｎｋＥｄｉｔ制御部９０１の環境に提供される何らかの他の情報を表すＡＰＩ要素（または機能的にグループ化された要素）を指す。しかし、矢印の方向は例であって、限定的なものではなく、したがって、ＩｎｋＥｄｉｔ制御部９０１に入る矢印は、ＩｎｋＥｄｉｔ制御部９０１により、ＩｎｋＥｄｉｔ制御部９０１の環境に提供される情報も表すことを防げられているわけではない。同様に、ＩｎｋＥｄｉｔ制御部９０１から出る矢印は、ＩｎｋＥｄｉｔ制御部９０１に対する情報を変更または提供することを防げられているわけではない。図９はさらに、ＩｎｋＥｄｉｔ制御部９０１の複数のプロパティ９０２〜９２１を示す。以下で論じるＡＰＩ要素は、本明細書で論じるＷｉｎ３２、ＡｃｔｉｖｅＸ、および．ＮＥＴフレーバを含む任意のフレーバのＩｎｋＥｄｉｔタイプ制御部に関する任意の組合せまたはサブコンビネーションで使用することができる。
【００３７】
例示的実施形態でのＩｎｋＥｄｉｔ　ＡＰＩは、以下の列挙および構造（図示せず）の一部またはすべてを、任意の組合せまたはサブコンビネーションとして有する。例えば、外観列挙は、ＩｎｋＥｄｉｔ制御部９０１が表示されるとき、外観がフラットか、それとも３次元かを指定する１つまたは複数の値を定義する。枠スタイル列挙は、ＩｎｋＥｄｉｔ制御部９０１が枠を有するかどうかを指定する１つまたは複数の値を定義する。インクモード列挙は、描画されるインクに関する収集モード設定−インク収集が使用不能にされるか、インクだけを収集すべきか、それともインクとジェスチャを共に収集すべきか−を指定する１つまたは複数の値を定義する。挿入モード列挙は、インクをＩｎｋＥｄｉｔ制御部９０１上にインクとして挿入するか、それとも認識したテキストとして挿入するかを指定する１つまたは複数の値を定義する。ＩｎｋＥｄｉｔステータス列挙は、ＩｎｋＥｄｉｔ制御部９０１がアイドル状態であるか、インクを収集しているか、それともインクを認識しているかを指定する１つまたは複数の値を定義する。ロード／保存列挙は、ファイルをリッチテキストフォーマット（ＲＴＦ）ファイルとしてロードおよび／または保存するか、テキストファイルとしてロード／保存するか、それとも他のフォーマットのファイルとしてロード／保存するかを指定する１つまたは複数の値を定義する。マウスボタン列挙は、マウスボタンがどれであるか、またはどのマウスボタンが押下されているかを指定する１つまたは複数の値を定義する。別段の指定がない限り、本明細書でのマウスまたはマウスボタンへの参照はすべて、スタイラスおよびスタイラスボタンにも同様に当てはまることに留意されたい。スクロールバー列挙は、ＩｎｋＥｄｉｔ制御部が水平スクロールバーおよび／または垂直スクロールバーを有するかどうかを指定する１つまたは複数の値を定義する。位置合せ列挙は、表示されるパラグラフをＩｎｋＥｄｉｔ制御部の左マージンまたは右マージンに沿って位置合せするか、それとも左マージンと右マージンの間に位置合せするかを指定する１つまたは複数の値を定義する。ストローク情報構造は、どのカーソルを使用してストロークを生成したか、（例えば特定のストロークオブジェクトとして）どこにストロークが格納されているかなど、特定のストロークについての情報を含む。ジェスチャ情報構造は、どのカーソルを使用してジェスチャを生成したか、ジェスチャを構成するストローク、および／または（特定のジェスチャオブジェクトとして）どこにジェスチャが格納されているかなど、特定のジェスチャについての情報を含む。
ＩｎｋＥｄｉｔ制御部のＷｉｎ３２フレーバで、ストローク情報およびジェスチャ情報構造を特定のサクセス（ｓｕｃｃｅｓｓ）と共に使用することができる。認識結果構造は、テキスト認識の結果に関する情報を含み、認識結果構造は、レディー状態の認識結果に応答して送られる。本明細書で議論するこれらの構造の一部またはすべてがどこで使用されるかに関する通知は、例えば別々の通知メッセージを介して提供することができる。
【００３８】
例示的実施形態でのＩｎｋＥｄｉｔ　ＡＰＩはまた、設定することができ、それが表す情報を返すことができる以下のプロパティのうちの１つまたは複数も、任意の組合せまたはサブコンビネーションとして有する。例えば、外観プロパティ９０２は、ＩｎｋＥｄｉｔ制御部９０１をフラットなものとして表示するか、それとも３次元として表示するかを表す。背景色プロパティ９０３は、ＩｎｋＥｄｉｔ制御部９０１に関する背景色を表す。罫線スタイルプロパティ９０４は、ＩｎｋＥｄｉｔ制御部９０１が罫線や枠を有するかどうかを表す。作成パラメータプロパティ９０５は、ＩｎｋＥｄｉｔ制御部９０１ハンドルが作成されたときの作成パラメータを表す。カーソルプロパティ９０６は、マウスポインタがＩｎｋＥｄｉｔ制御部９０１の上にあるときに表示されるカーソルを表す。描画属性プロパティ９０７は、ＩｎｋＥｄｉｔ制御部９０１内のインク（テキストとしてまだ認識されていないインク）を描画し、表示するときに使用するデフォルト描画属性、またはインクが描画されるときにインクに適用される描画属性を表す。
スクロールバー機能停止プロパティ９０８は、ＩｎｋＥｄｉｔ制御部９０１内のスクロールバーが使用可能にされるか、それとも機能停止にされるかを表す。ドラッグアイコンプロパティ９０９は、ドラッグアンドドロップ操作で、ポインタとして表示すべきアイコンを表す。擬似事実プロパティ９１０は、認識結果を求める認識器の検索を制限するのに認識器が使用する擬似事実（本明細書でさらに論じる）を表す。様々なフォント／テキストプロパティ９１１は、ＩｎｋＥｄｉｔ制御部９０１によって表示されるテキストのフォント、ならびに現在選択しているテキストのフォント名およびサイズ、または挿入点でのフォント名およびサイズを表す。他のフォント／テキストプロパティ９１１は、現在選択しているテキスト（または挿入点）がボールド、イタリック、アンダーラインであるかどうかを表す。さらに別のフォント／テキストプロパティ９１１は、現在選択しているテキスト（または挿入点）がベースライン上に現れるのか、上付きとして現れるのか、または下付きとして現れるのか、現在選択しているテキスト（または挿入点）の位置合せ、ならびに現在選択しているテキストまたは挿入点の色を表す。様々なインクモードプロパティ９１２は、インクが制御部に対して描画されるときインクをどのように収集するか、インク収集が使用不能にされているかどうか、インクだけを収集すべきか、それともインクとジェスチャを共に収集すべきかを表す。ロック済み制御プロパティ９１３は、ＩｎｋＥｄｉｔ制御部９０１の内容を編集することができるかどうかを表す。様々なマウスプロパティ９１４は、表示すべき現カスタムマウスアイコンと、マウスポインタがＩｎｋＥｄｉｔ制御部９０１のグラフィカル表現の上にあるときのマウスポインタのタイプを表す。マルチラインプロパティ９１５は、ＩｎｋＥｄｉｔ制御部９０１がマルチライン制御であるかどうかを表す。様々な認識器プロパティ９１６は、認識するためにどの認識器を使用すべきか、およびインクストロークが終了した後、テキスト認識を開始すべき時間量を表す。スクロールバープロパティ９１７は、ＩｎｋＥｄｉｔ制御部９０１内で表示するスクロールバーのタイプを表す。インクオブジェクトプロパティ９１８は、現在選択しているテキスト内にあるインクオブジェクトを表す。このインクオブジェクトプロパティを設定することにより、現在の選択が、渡されたインクオブジェクトのリストを認識することによる認識の結果で置換される。様々な選択テキストプロパティ９１９は、ＩｎｋＥｄｉｔ制御部９０１内で現在選択されているテキスト、選択されている文字数、選択されたリッチテキストフォーマット（ＲＴＦ）フォーマットテキスト、および選択されているテキストの開始点を表す。様々な制御内テキストプロパティ９２０は、ＩｎｋＥｄｉｔ制御部９０１のテキストボックス内に表示されている現テキスト、およびすべてのＲＴＦフォーマットコードを含むＩｎｋＥｄｉｔ制御部９０１内のテキストを表す。制御状態プロパティ９２１は、ＩｎｋＥｄｉｔ制御部９０１がアイドル状態であるか、インクを収集しているか、それともインクを認識しているかを表す。
【００３９】
例示的実施形態でのＩｎｋＥｄｉｔ　ＡＰＩはまた、複数の関連するメッセージ、イベント、およびメソッドを、任意の組合せまたはサブコンビネーションとして有する。ＩｎｋＥｄｉｔ制御はＲｉｃｈＥｄｉｔ制御のスーパークラスであるので、あらゆるＲｉｃｈＥｄｉｔメッセージが、（ほとんどの場合）ＲｉｃｈＥｄｉｔと同じ効果を有するように直接渡される。これは、ＩｎｋＥｄｉｔ制御の親ウィンドウに特定のイベントが発生したことを通知するイベント通知メッセージにも当てはまる。
【００４０】
例えば、カーソルチップ（例えばスタイラス２０４のチップ）がデジタル化表面（例えば表面２０２）に物理的に接触することに応答して、カーソルダウンメッセージ９４０が送られる。ストローク完了メッセージ９４１が送られ、ストロークの完了に応答して、ストローク完了イベントが発生する。ストローク完了イベントの発生に応答して、ストローク完了メソッドが発生する。ジェスチャの完了に応答して、ジェスチャ完了メッセージ９４２が送られる。ジェスチャの完了は、ジェスチャ完了イベントによって示すことができる。
【００４１】
ＩｎｋＥｄｉｔ　ＡＰＩはさらに、認識関係のイベント、メソッド、およびメッセージ９４３を有することができる。このような認識関係のメッセージは、認識が行われ、あるいは、使用される認識器を取得または設定することに応答して送られる。別の認識関係のメッセージは、普通なら認識タイムアウトにより認識が行われるよりも前に、認識を強制的に行う。認識関係のイベントは、アプリケーション固有のジェスチャを認識したことに応答して、または一般には認識に応答して発生する。認識関係のメソッドは、認識イベントが生じたことに応答して発生し、またはストロークの集合を認識すべきであること、および認識結果を返すべきであることを指定する。
【００４２】
ＩｎｋＥｄｉｔ　ＡＰＩはさらに、ＩｎｋＥｄｉｔ制御部９０１がクリックされたことに応答して発生するイベント９４４と、キーが押下または解放されたことに応答して発生するイベント９４５と、マウスポインタおよび／またはスタイラスがＩｎｋＥｄｉｔ制御部９０１の上にあり、かつ押下され、解放され、またはダブルクリックされたことに応答して発生するイベント９４６と、マウスポインタがＩｎｋＥｄｉｔ制御部９０１の上に移動したことに応答して発生するイベント９４７とを有する。
【００４３】
ＩｎｋＥｄｉｔ　ＡＰＩはさらに、インク編集ステータス列挙で定義される値に基づいてＩｎｋＥｄｉｔ制御部９０１のステータスを取り出すのに使用するメッセージ９４８と、特定のタイプのファイルをＩｎｋＥｄｉｔ制御部９０１にロードし、またはＩｎｋＥｄｉｔ制御部９０１の内容を特定のタイプのファイルに保存するメソッド９４９と、ウィンドウメッセージを処理するメソッド９５０とを有することができる。
【００４４】
ＩｎｋＥｄｉｔ　ＡＰＩはさらに、インクモード列挙で定義される値に基づいてＩｎｋＥｄｉｔ制御部９０１のインキングモードを取り出し、または設定するメッセージ９５１と、インク挿入モード列挙で定義される値に基づいてＩｎｋＥｄｉｔ制御部９０１のインク挿入モードを取り出し、または設定するメッセージ９５２とを有することができる。
【００４５】
ＩｎｋＥｄｉｔ　ＡＰＩはさらに、現描画属性を取り出し、ＩｎｋＥｄｉｔ制御部９０１で使用する将来の描画属性を設定するメッセージ９５３と、ＩｎｋＥｄｉｔ制御部９０１の認識タイムアウトを取り出し、または設定するメッセージ９５４とを有することができる。認識タイムアウトは、例えばミリ秒単位で測定することができる。
【００４６】
ＩｎｋＥｄｉｔ　ＡＰＩはまた、ジェスチャステータス関係のメッセージおよびメソッド９５５も有することができる。ジェスチャステータス関係のメッセージは、ＩｎｋＥｄｉｔ制御部９０１に関するジェスチャステータスを取り出し、または設定するように定義される。ジェスチャステータス関係のメソッドは、ジェスチャステータスの状態を使用して、ＩｎｋＥｄｉｔ制御部９０１が認識することのできるジェスチャのセットを制限する。
【００４７】
ＩｎｋＥｄｉｔ　ＡＰＩはまた、ＩｎｋＥｄｉｔ制御部９０１が使用すべき認識器を取り出し、または設定するメッセージ９５６と、認識のために使用する擬似事実を取り出し、または設定するメッセージ９５７と、現在選択されているインクを取り出し、または設定するメッセージ９５８と、表示されるマウスアイコンを取り出し、または設定するメッセージ９５９と、表示すべきマウスポインタを取り出し、または設定するメッセージ９６０とを有することができる。
【００４８】
ＩｎｋＥｄｉｔ　ＡＰＩはさらに、新しいＩｎｋＥｄｉｔ制御を作成するコンストラクタ９６１と、ハンドル（ｈａｎｄｌｅ）がＩｎｋＥｄｉｔ制御部９０１に対して作成されるときに発生するメソッド９６２とを有する。ＩｎｋＥｄｉｔ制御の．ＮＥＴフレーバでは、このメソッドは、コンストラクタとみなすことができる。ＩｎｋＥｄｉｔ　ＡＰＩはさらに、制御変更内のテキストの選択に応答して発生する選択変更イベントも有することができる。
【００４９】
本発明の様々な態様を具体化する、本明細書で説明した例示的なシステムおよび方法は例として示したのであって、本発明はもちろんこれらの実施形態に限定されないことを理解されよう。特に前述の教示に照らして、当業者は修正を行うことができる。例えば、前述の実施形態の要素それぞれを単独で使用することができ、または他の実施形態の要素と組み合わせて使用することができる。頭記の特許請求の範囲を用いて本発明を定義したが、この特許請求の範囲は、本明細書に記載の要素およびステップを任意の組合せまたはサブコンビネーションとして含むように本発明が意図されるという点で例示的である。したがって、明細書から説明、特許請求の範囲、および図面を含む１つまたは複数の要素を様々な組合せまたはサブコンビネーションとして組み込む、本発明を定義する任意の数の代替の組合せが存在する。本明細書に照らして、本発明の態様の代替の組合せを単独で、または本明細書で定義される１つまたは複数の要素またはステップと組み合わせ、本発明の修正または変更として、あるいは本発明の一部として使用できることは、関係のある技術分野の技術者には明らかであろう。本明細書に含まれる本発明の書面による説明は、このようなすべての修正および変更を包含するものとする。さらに、本明細書で様々な名前のオブジェクトや他のＡＰＩ要素を与えたが、このような名前は単なる例であって、本発明の範囲から逸脱することなく、どんな名前も使用できることを理解されたい。
【図面の簡単な説明】
【図１】本発明の様々な態様を実装するのに使用することができる例示的な汎用デジタル計算機環境の機能ブロック図である。
【図２】本発明の様々な態様に従って使用することができる例示的なタブレットコンピュータおよびスタイラスの平面図である。
【図３】本発明の様々な態様によるグラフィカルユーザインターフェースの例示的スクリーンショットを示す図である。
【図４】本発明の様々な態様によるグラフィカルユーザインターフェースの例示的スクリーンショットを示す図である。
【図５】本発明の様々な態様によるグラフィカルユーザインターフェースの例示的スクリーンショットを示す図である。
【図６】本発明の様々な態様によるグラフィカルユーザインターフェースの例示的スクリーンショットを示す図である。
【図７】本発明の様々な態様に従って使用することができる様々な例示的ジェスチャを示す図である。
【図８】本発明の様々な態様による例示的システム環境を示す機能ブロック図である。
【図９】本発明の様々な態様による例示的アプリケーションプログラミングインターフェースの機能ブロック図である。
【符号の説明】
１００　コンピュータ
１０１　キーボード
１０２　ポインティングデバイス
１０６　シリアルポートインターフェース
１０７　モニタ
１０８　ビデオアダプタ
１０９　リモートコンピュータ
１１０　処理装置
１１１　メモリ記憶装置
１１２　ローカルエリアネットワーク（ＬＡＮ）
１１３　広域ネットワーク（ＷＡＮ）
１１４　ネットワークインターフェースまたはアダプタ
１１５　モデム
１２０　システムメモリ
１３０　システムバス
１４０　読取り専用メモリ（ＲＯＭ）
１４７　モニタ
１５０　ランダムアクセスメモリ（ＲＡＭ）
１６０　基本入出力システム（ＢＩＯＳ）
１６５　ペンデジタイザ
１６６　ペンまたはスタイラス
１７０　ハードディスクドライブ
１８０　磁気ディスクドライブ
１９０　取外し可能磁気ディスク
１９１　光ディスクドライブ
１９２　取外し可能光ディスク
１９２　ハードディスクドライブインターフェース
１９３　磁気ディスクドライブインターフェース
１９４　光ディスクドライブインターフェース
１９５　オペレーティングシステム
１９６　１つまたは複数のアプリケーションプログラム
１９７　他のプログラムモジュール
１９８　プログラムデータ
２０１　コンピュータ処理システム
２０２　表示面
２０３　ウィンドウ
２０４　スタイラス
３０１　グラフィカルユーザインターフェース
３０２　表示スペース
３０３　表示要素
８０１　ＡｃｔｉｖｅＸホストアプリケーション
８０２　Ｗｉｎ３２ホストアプリケーション
８０３　共通言語ランタイム（ＣＬＲ）ホストアプリケーション
８０４　ＩｎｋＥｄｉｔ　ＡｃｔｉｖｅＸ制御部
８０５　ＩｎｋＥｄｉｔ　Ｗｉｎ３２制御部
８０６　ＩｎｋＥｄｉｔ　ＷｉｎＦｏｒｍｓ制御部
８０７　ＲｉｃｈＥｄｉｔ４．５　Ｗｉｎ３２制御部
８０８　Ｗｉｎｆｏｒｍｓ　ＲｉｃｈＴｅｘｔＢｏｘ
９０１　ＩｎｋＥｄｉｔ制御部
９０２　外観プロパティ
９０３　背景色プロパティ
９０４　罫線スタイルプロパティ
９０５　作成パラメータプロパティ
９０６　カーソルプロパティ
９０７　描画属性プロパティ
９０８　スクロールバー機能停止プロパティ
９１０　擬似事実プロパティ
９１１　フォント／テキストプロパティ
９１２　インクモードプロパティ
９１３　ロック済み制御プロパティ
９１４　マウスプロパティ
９１５　マルチラインプロパティ
９１６　認識器プロパティ
９１７　スクロールバープロパティ
９１８　インクオブジェクトプロパティ
９１９　選択テキストプロパティ
９２０　制御内テキストプロパティ
９２１　制御状態プロパティ
【図１】
2004005656.tif 000003
【図２】
2004005656.tif 000004
【図３】
2004005656.tif 000005
【図４】
2004005656.tif 000006
【図５】
2004005656.tif 000007
【図６】
2004005656.tif 000008
【図７】
2004005656.tif 000009
【図８】
2004005656.tif 000010
【図９】
2004005656.tif 000011