(57)【要約】【課題】ドキュメントの上に電子インクを重ねることを提供すること。【解決手段】典型的なシナリオは、手書きのコメント、ドローイングなどを下にあるドキュメントの上に作成することなどにより、ドキュメントを電子インクでマークアップすることが有用である場合である。ある実施形態では、開発者は、ドキュメントの上に、透明または不透明なウィンドウなどのインキング表面を容易に画定することができる。インキング表面は、ドキュメント自体がマークアップされるように見えるようにインキング表面上にユーザが書き込むことができるような入力インターフェースとして働くことができる。【選択図】　　　　図２
2004030632.tif 000002
【特許請求の範囲】
【請求項１】
ドキュメントの上にインクを重ねる方法であって、
前記ドキュメントの上に透明なインキング表面を生成するステップと、
前記インキング表面内のインクデータを収集するステップと、
レンダリングしたインクとして前記インクデータを前記インキング表面内にレンダリングするステップと
を含むことを特徴とする方法。
【請求項２】
前記インクデータをオブジェクトとして格納するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記インキング表面は半透明であることを特徴とする請求項１に記載の方法。
【請求項４】
前記インキング表面は不透明な枠を有することを特徴とする請求項１に記載の方法。
【請求項５】
前記ドキュメントはテキストドキュメントを含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記ドキュメントはＭｉｃｒｏｓｏｆｔ　ＷＯＲＤ（登録商標）ドキュメントを含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記レンダリングするステップ中に第１イベントを生成するステップと、
前記レンダリングするステップの完了時に第２イベントを生成するステップとをさらに含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記レンダリングしたインクの少なくとも一部を削除する要求を受け取るステップと、
前記要求に応答して第１イベントを生成するステップと、
前記レンダリングしたインクの前記少なくとも一部を削除するステップと、
前記削除するステップの完了時に第２イベントを生成するステップと
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項９】
要求を受け取り、前記レンダリングしたインクの少なくとも一部を選択するステップと、
前記レンダリングしたインクの前記少なくとも一部を選択するステップと、
前記インクの前記少なくとも一部への参照を格納するステップと
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項１０】
前記レンダリングしたインクの少なくとも一部を選択するステップと、
前記レンダリングしたインクの前記少なくとも一部を変更する要求を受け取るステップと、
前記要求に応答して第１イベントを生成するステップと、
前記レンダリングしたインクの前記少なくとも一部を変更するステップと、
前記変更するステップの完了時に第２イベントを生成するステップと
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項１１】
前記変更するステップは、選択された前記レンダリングしたインクの前記少なくとも一部の量を変更することを含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記変更するステップは、前記レンダリングしたインクの前記少なくとも一部を、前記レンダリングしたインクの別の少なくとも一部に変更することを含むことを特徴とする請求項１０に記載の方法。
【請求項１３】
ドキュメントの上にインクを重ねる方法であって、
前記ドキュメントの少なくとも一部を含む背景を有するウィンドウを生成するステップと、
前記ウィンドウ内のインクデータを収集するステップと、
レンダリングしたインクとして前記インクデータを前記ウィンドウ内にレンダリングするステップと
を含むことを特徴とする方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明の態様は、一般に電子インクをオーバーレイ化する方法および装置を対象とし、より詳細には、様々なインクオーバーレイ化機能を開発者が容易に利用することを可能にするアプリケーションプログラミングインターフェースを対象とする。
【０００２】
典型的なコンピュータシステム、特にＭｉｃｒｏｓｏｆｔ　ＷＩＮＤＯＷＳ（登録商標）などのグラフィカルユーザインターフェース（ＧＵＩ）システムを使用するコンピュータシステムは、テキストを入力するためのキーボードや、ユーザインターフェースを駆動するための１つまたは複数のボタンを有するマウスなどのポインティングデバイスなどの、１つまたは複数の別個の入力装置からユーザ入力を受け入れるうに最適化されている。ユービキタスキーボードおよびマウスインターフェースにより、ドキュメント、スプレッドシート、データベースフィールド、ドローイング、写真などの高速な作成および変更が可能となる。しかし、キーボードやマウスのインターフェースによって提供されるフレキシビリティは、コンピュータでない（すなわち標準的な）ペンや紙と比べて著しいギャップがある。標準的なペンや紙を使用した場合、ユーザはドキュメントを編集し、余白にメモを書き込み、絵や他の形状などを描く。ある場合、キーボードやマウスのインターフェースに制限されずに自由にメモを取ることができるために、ユーザは、画面上でドキュメントを検討するよりも、ペンを使用してドキュメントに書き込むことを望むことがある。
【０００３】
ユーザが画面上に描画することを可能にするコンピュータシステムがある。例えば、Ｍｉｃｒｏｓｏｆｔ　ＲＥＡＤＥＲアプリケーションは、電子インク（本明細書では「インク」とも呼ぶ）をドキュメントに加えることを可能にする。このシステムは、インクを格納し、要求されたときにユーザにインクを提供する。他のアプリケーション（例えば、当技術分野で知られているドローイングアプリケーションは、Ｐａｌｍ　３．ｘおよび４．ｘオペレーティングシステム、並びにＰｏｃｋｅｔＰＣオペレーティングシステムに関連する）は、ドローイングのキャプチャおよび格納を可能にする。さらに、Ｃｏｒａｌ　Ｄｒａｗなどの様々なドローイングアプリケーションや、Ｐｈｏｔｏｓｈｏｐなどのフォト／編集アプリケーションを、Ｗａｃｏｍタブレット製品などのスタイラスベースの入力製品と共に使用することができる。これらのドローイングは、ドローイングを作成するのに使用するインクストロークに関連する他のプロパティを含む。例えば、線幅や色をインクと共に格納することができる。これらのシステムの１つの目標は、１枚の紙に付着する物理的インクのルックアンドフィールを複製することである。しかし、紙上の物理的インクは、座標の電子的集合と線分の接続ではキャプチャされない著しい情報量を有する可能性がある。この情報の一部には、（物理的インクの幅からわかるように）使用するペンチップの厚さまたは紙に対するペンの角度、ペンチップの形状、インクが付着するときの速度などが含まれる可能性がある。
【０００４】
【発明が解決しようとする課題】
電子インクに伴って別の問題も生じている。電子インクは、電子インクが書き込まれるアプリケーションの一部とみなされてきた。これにより、電子インクの豊かさを他のアプリケーションまたは環境に提供することは基本的にできない。テキストは（例えば、クリップボードを使用することによって）様々なアプリケーション間で移植（ｐｏｒｔ）することができるが、インクは、インクと対話する能力を有することができない。例えば、「８」の文字のイメージを作成し、作成したイメージをクリップボードにコピーしてドキュメントにペーストし、次いでインクをボールド体にすることができない。１つの困難は、アプリケーション間でイメージを移植することができないことである。
【０００５】
【課題を解決するための手段】
本発明の態様は、プロパティと対話し、メソッドを起動し、かつ／または電子インクに関係するイベントを受け取る、フレキシブルで効率的なインターフェースを提供し、それによって従来の装置およびシステムで識別された問題のうちの１つまたは複数を解決する。本発明のある態様は、格納されたインクの内容を改善することに関する。他の態様は、格納されたインクを変更することに関する。
【０００６】
開発者が、開発者の既存のアプリケーションおよび新規のアプリケーションにインク機能に関する最高のサポートを容易に追加することが可能となることが望ましい。インクが使用可能なアプリケーションに対して一貫したルックアンドフィールを適合させることを促進することも望ましい。例えば、通常はインク入力を受け入れることができ、または受け入れられないドキュメントに対する書込み、および／またはそのドキュメントとの対話に関するサポートを追加できることが望ましい。
【０００７】
本発明の上記その他の特徴は、以下の好ましい実施形態の詳細な説明を考慮するときに明らかとなるであろう。
【０００８】
前述の課題を解決するための手段と、以下の好ましい実施形態の詳細な説明は、添付の図面とともに読む場合に最もよく理解されよう。添付の図面は、例として含めるのであって、特許請求の範囲に記載された発明に関して限定するものではない。
【０００９】
【発明の実施の形態】
以下に、ドキュメント上に電子インクを重ねる方法を説明する。
【００１０】
一般的コンピューティングプラットフォーム
図１は、本発明の様々な態様を実装するのに使用することができる従来の汎用デジタルコンピューティング環境の一例の機能ブロック図である。図１では、コンピュータ１００は、処理装置１１０と、システムメモリ１２０と、システムメモリを含む様々なシステム構成要素を処理装置１１０に結合するシステムバス１３０とを含む。システムバス１３０は、様々なバスアーキテクチャのうちのいずれかを用いる、メモリバスまたはメモリコントローラと、周辺バスと、ローカルバスとを含むいくつかのタイプのバス構造のうちのいずれでもよい。システムメモリ１２０は、読取り専用メモリ（ＲＯＭ）１４０およびランダムアクセスメモリ（ＲＡＭ）１５０を含む。
【００１１】
起動中などにコンピュータ１００内の要素間で情報を転送する助けになる基本ルーチンを含む基本入出力システム（ＢＩＯＳ）１６０が、ＲＯＭ１４０内に格納される。コンピュータ１００はまた、ハードディスク（図示せず）を読み書きするためのハードディスクドライブ１７０と、取外し可能磁気ディスク１９０を読み書きするための磁気ディスクドライブ１８０と、ＣＤ−ＲＯＭまたは他の光媒体などの取外し可能光ディスク１９２を読み書きするための光ディスクドライブ１９１とを含む。ハードディスクドライブ１７０、磁気ディスクドライブ１８０、および光ディスクドライブ１９１は、それぞれハードディスクドライブインターフェース１９２、磁気ディスクドライブインターフェース１９３、および光ディスクドライブインターフェース１９４によってシステムバス１３０に接続される。ドライブと、付随するコンピュータ可読媒体により、パーソナルコンピュータ１００に対するコンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの不揮発性記憶が実現される。磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ、ランダムアクセスメモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）など、コンピュータがアクセス可能な、データを格納することができる他のタイプのコンピュータ可読媒体もこの例示的動作環境で使用できることを当業者は理解されよう。
【００１２】
いくつかのプログラムモジュールを、オペレーティングシステム１９５、１つまたは複数のアプリケーションプログラム１９６、他のプログラムモジュール１９７、およびプログラムデータ１９８を含むハードディスクドライブ１７０、磁気ディスク１９０、光ディスク１９２、ＲＯＭ１４０、またはＲＡＭ１５０上に格納することができる。ユーザは、キーボード１０１およびポインティングデバイス１０２などの入力装置を介して、コンピュータ１００にコマンドおよび情報を入力することができる。他の入力装置（図示せず）には、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなどを含めることができる。これらの入力装置や他の入力装置はしばしば、システムバスに結合されるシリアルポートインターフェース１０６を介して処理装置１１０に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（ＵＳＢ）などの他のインターフェースで接続することもできる。さらに、これらの装置は、適切なインターフェース（図示せず）を介してシステムバス１３０に直接接続することもできる。モニタ１０７または他のタイプのディスプレイ装置も、ビデオアダプタ１０８などのインターフェースを介してシステムバス１３０に接続される。モニタに加えて、パーソナルコンピュータは一般に、スピーカおよびプリンタなどの他の周辺出力装置（図示せず）を含む。好ましい実施形態では、フリーハンドの入力をデジタル式にキャプチャするために、ペンデジタイザ１６５と、添付のペンまたはスタイラス１６６が提供される。ペンデジタイザ１６５と処理装置１１０の間の直接接続を図示してあるが、実際には、ペンデジタイザ１６５は、シリアルポート、パラレルポート、または他のインターフェースペンデジタイザ１６５を介して処理装置１１０に接続することができ、当技術分野で周知のシステムバス１３０に接続することができる。さらに、デジタイザ１６５をモニタ１０７と別々に図示してあるが、デジタイザ１６５の使用可能入力エリアがモニタ１０７の表示エリアと同一の範囲を有することが好ましい。さらに、デジタイザ１６５をモニタ１０７に統合することができ、あるいはデジタイザ１６５は、モニタ１０７と重複するか、またはモニタ１０７に添付される独立の装置として存在することができる。
【００１３】
コンピュータ１００は、リモートコンピュータ１０９などの１つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク環境で動作することができる。リモートコンピュータ１０９は、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の共通ネットワークノードでよく、一般にコンピュータ１００に関して上記で述べた要素のうちの多くまたはすべてを含むが、図１にはメモリ記憶装置１１１だけを示してある。図１に示す論理接続は、ローカルエリアネットワーク（ＬＡＮ）１１２および広域ネットワーク（ＷＡＮ）１１３を含む。このようなネットワーキング環境は、オフィス、企業全体のコンピュータネットワーク、イントラネット、およびインターネットで一般的なものである。
【００１４】
ＬＡＮネットワーキング環境で使用する際、コンピュータ１００は、ネットワークインターフェースまたはアダプタ１１４を介してローカルネットワーク１１２に接続される。ＷＡＮネットワーキング環境で使用する際、パーソナルコンピュータ１００は一般に、インターネットなどの広域ネットワーク１１３を介して通信を確立するためのモデム１１５または他の手段を含む。モデム１１５は内蔵でも外付けでもよく、シリアルポートインターフェース１０６を介してシステムバス１３０に接続される。ネットワーク環境では、パーソナルコンピュータ１００に関して示したプログラムモジュールまたはその一部を、リモートメモリ記憶装置に格納することができる。
【００１５】
図示するネットワーク接続は例示的なものであって、コンピュータ間の通信リンクを確立する他の技法も使用できることを理解されよう。ＴＣＰ／ＩＰ、イーサネット（登録商標）、ＦＴＰ、ＨＴＴＰなどの様々な周知のプロトコルのうちのいずれの存在も想定され、このシステムは、ユーザがウェブベースのサーバからウェブページを取り出すことが可能となるようにクライアントサーバ構成で動作することができる。ウェブページ上にデータを表示し、ウェブページ上のデータを操作するのに、様々な従来型ウェブブラウザのうちのいずれも使用することができる。
【００１６】
図２に、本発明の様々な態様に従って使用することができるスタイラスベースのコンピュータ処理システム（タブレットＰＣとも呼ばれる）２０１の一例を示す。図１のシステムの特徴、サブシステム、および機能のいずれかまたはすべてを、図２のコンピュータに含めることができる。タブレットＰＣ２０１は、複数のウィンドウ２０３が表示される大表示面２０２、例えばデジタル化フラットパネルディスプレイ、好ましくは液晶ディスプレイ（ＬＣＤ）画面を含む。使用することができる他のディスプレイ技術には、限定はしないが、ＯＬＥＤディスプレイ、プラズマディスプレイなどが含まれる。スタイラス２０４のチップ（本明細書では、チップを「カーソル」とも呼ぶ）を使用して、ユーザは、デジタル化表示エリアを選択し、強調表示し、デジタル化表示エリアに対して書き込むことができる。適切なデジタル化表示パネルの例には、ＭｕｔｏｈまたはＷａｃｏｍのペンデジタイザなどの電磁ペンデジタイザが含まれる。他のタイプのペンデジタイザ、例えば光デジタイザも使用することができる。タブレットＰＣ２０１は、データを操作し、テキストを入力し、スプレッドシート、ワードプロセッシングプログラムなどの従来型コンピュータアプリケーションタスクを実行するために、スタイラス２０４を使用して作成されたマークを解釈する。
【００１７】
スタイラスは、選択機能を高めるために、ボタンまたは他の機構を備えることができる。一実施形態では、スタイラスは、一端が書込み部分を構成し、他端が、ディスプレイを移動するときに、ディスプレイの各部分を消去すべきことを指示する「イレーザ」端を構成する「鉛筆」または「ペン」として実装することができる。マウス、トラックボールなどの他のタイプの入力装置も使用することができる。加えて、タッチ検知ディスプレイまたは接近検知ディスプレイ上の表示イメージの各部分を選択また指示するために、ユーザ自身の指を使用することもできる。したがって、本明細書で使用する用語「ユーザ入力装置」は、広範な定義を有し、周知の入力装置に対する多くの変形形態を包含するものとする。
【００１８】
電子インク、およびインクオブジェクトの概念
本明細書で使用するインクは電子インクを指す。電子インクは、一続きのストロークまたは１組のストロークとして構成することができ、各ストロークは、一続きのポイントまたは１組のポイントを含む。一続きのストロークおよび／またはポイントは、キャプチャされた時間順に並べることができ、かつ／またはストロークおよび／またはポイントがページ上のどこに現れるかによって並べることができる。１組のストロークは、ストロークおよび／またはポイントの順序列、並びに／あるいは非整列のストロークおよび／またはポイントを含むことができる。ポイントは、デカルト座標（Ｘ，Ｙ）、極座標（ｒ，Θ）、および当技術分野で周知の他の技法を含む、様々な周知の技法を使用して表すことができる。あるいは、ストロークは、ポイントと、次のポイントの方向のベクトルとして表すこともできる。ストロークは、基礎となるポイントの表現、および／または何がポイントを接続するかに関わらず、インクに関するポイントまたはセグメントのどんな表現も包含するものとする。インクの集合は通常、デジタイザ（表示面２０２のデジタイザなど）で始まる。ユーザは、デジタイザ上にスタイラスを配置し、書込みまたはドローを開始する。その時点で、新しいインクパケット（すなわち、インク関係のデータのパケット）を生成することができる。ユーザはまた、デジタイザが検知するように、デジタイザに十分接近した空中でスタイラスを移動させることもできる。これが行われるとき、検知したスタイラスの空中の移動に従って、データのパケット（本明細書では「Ｉｎ−Ａｉｒパケット」と呼ぶ）を生成することができる。パケットは、位置情報だけではなく、スタイラス圧力情報および／または角度情報も含むことができる。
【００１９】
インクを格納するために、スタイラス２０４が表示面２０２および／または他の入力上に描いたインクの元のストロークを表すインクオブジェクトを生成することができる。収集されるインクのストロークは、表示面２０２上のどこからでも収集することができ、または特定のウィンドウなど、表示面２０２の画定した部分からのみ収集することができる。インクオブジェクトは、本質的にインクデータのコンテナである。インクをインクオブジェクト内に格納する具体的なフォーマットは、本発明にとって重要ではない。しかし、当初描かれたインクストロークをインクオブジェクト内に格納することが好ましい。
【００２０】
インクオブジェクトの２つの例示的タイプを定義することができる。ｔＩｎｋオブジェクト（「ｔ」は「テキスト」を意味する）は、文字またはワードを形成すると予想されるインクを表すＯＬＥオブジェクトとして実施することができる。ｔＩｎｋオブジェクトにより、手書きのインクをテキスト認識器などによってテキストに変換することが可能となる。ｔＩｎｋオブジェクトは、インクと関係し、かつテキストコンテキストを有するインクオブジェクトと呼ぶことができる。テキストインクの色および／またはフォントサイズ、並びにテンキストインクをアンダーライン、ボールド、および／またはイタリックなどにすべきかどうかなどをプログラム的に設定することができ、それらは、ｔＩｎｋオブジェクトの周りのテキストの属性に基づくことができる。言い換えれば、ｔＩｎｋオブジェクトの意図される挿入点の周囲のプロパティをｔＩｎｋオブジェクトに適用することができる。一実施形態では、ｔＩｎｋオブジェクトは、センテンスが複数のｔＩｎｋオブジェクトを含むことができるように、テキスト認識器にサブミットする単一のワードだけを含む。一方、ワードを形成するとは予想されないインクを表すオブジェクトとして、ｓＩｎｋオブジェクト（「ｓ」は「スケッチ」を意味する）も定義することができる。ｓＩｎｋオブジェクトもＯＬＥオブジェクトとすることができる。したがって、ｓＩｎｋオブジェクトは、ドローイングコンテキストまたは任意の他の非テキストコンテキストとして解釈することができる。ｓＩｎｋオブジェクトは、複数のワードを表すのにも有用であることがある。インク互換アプリケーション（および／またはユーザ）は、あるインクオブジェクトをｔＩｎｋオブジェクトとしてマークし、他のインクオブジェクトをｓＩｎｋオブジェクトとしてマークすることができる。本明細書では、この２つのタイプのインクを「ｔＩｎｋ」および「ｓＩｎｋ」として説明する。しかし、使用することができる様々なタイプのインクオブジェクトを表すのに他の名前も使用できることを理解されたい。さらに、所望のフォーマットで電子インクを格納するために別のタイプのオブジェクトを使用することもできる。
【００２１】
インク制御ＡＰＩの概要
図３を参照すると、本明細書でインク制御ＡＰＩと呼ぶＡＰＩが、様々なオブジェクトおよび制御についてのモデルを開発者に提供している。インク制御ＡＰＩは、ＭｉｃｒｏｓｏｆｔネイティブＷｉｎ３２　ＣＯＭ　ＡＰＩ、Ｍｉｃｒｏｓｏｆｔ　ＡｃｔｉｖｅＸ　ＡＰＩ、および／またはＭｉｃｒｏｓｏｆｔ　Ｍａｎａｇｅｄ　ＡＰＩなどの様々なアプリケーション開発ソフトウェアを使用する開発者が利用可能である。インク制御ＡＰＩにより、開発者は、既存のインク非互換アプリケーションおよび新規のアプリケーションに、インクに関する最高のサポートを容易に追加することが可能となる。開発者が行う必要があるのは、単に適切な制御を追加し、様々なプロパティを設定することだけである。インク制御ＡＰＩはさらに、インク使用可能なアプリケーションに対して一貫したルックアンドフィールを適合させることを促進する。インク制御ＡＰＩは、ユーザ体験を実装するための優れた開始点として働くことができる。加えて、インク制御ＡＰＩは、開発者が望む可能性が高いが、普通ならそれ自体をスクラッチから作成しなければならなかったインキングユーザインターフェース要素を提供する。
【００２２】
インク制御ＡＰＩの様々なオブジェクトおよび制御は、ＩｎｋＣｏｌｌｅｃｔｏｒ自動化オブジェクト３０２、ＩｎｋＣｏｌｌｅｃｔｏｒ管理オブジェクト３０６、ＩｎｋＯｖｅｒｌａｙ自動化オブジェクト３０３、ＩｎｋＰｉｃｔｕｒｅＡｃｔｉｖｅＸ制御３０４、ＩｎｋＯｖｅｒｌａｙ管理オブジェクト３０５、ＰｉｃｔｕｒｅＢｏｘ　ＷｉｎＦｏｒｍｓ制御３０１、および／またはＩｎｋＰｉｃｔｕｒｅ　ＷｉｎＦｏｒｍｓ制御３０７を含む。ＩｎｋＣｏｌｌｅｃｔｏｒオブジェクト３０２は、ユーザが（表示面２０２上などに）描いたインクを収集する。ＩｎｋＯｖｅｒｌａｙオブジェクトは、開発者が、アプリケーションに注釈機能を容易に追加し、ＩｎｋＣｏｌｌｅｃｔｏｒオブジェクト３０２のインク収集機能を拡張し、インクの選択、移動、消去などの基本編集のサポートを提供することを可能にする。ＩｎｋＰｉｃｔｕｒｅ制御は、ＩｎｋＯｖｅｒｌａｙオブジェクトのＡＰＩ要素の一部またはすべてを包含し、開発者がインクの収集および編集のためのウィンドウにエリアを追加することを可能にする。ＩｎｋＰｉｃｔｕｒｅ制御はさらに、開発者が背景のピクチャ、イメージ、および／または色をウィンドウに追加することを可能にする。
【００２３】
以下でさらに説明するこれらのオブジェクトおよび制御は、ＡｃｔｉｖｅＸホストアプリケーション（例えばＶＢ６）および／またはＷｉｎ３２ホストアプリケーション（３０１と総称する）、および／または共通言語ランタイム（ＣＬＲ）ホストアプリケーション（ＶＢ７／Ｃ＃）３０６などの１つまたは複数のホストアプリケーションと対話することができる。ネイティブのＷｉｎ３２／ＡｃｔｉｖｅＸ開発者は、ＩｎｋＯｖｅｒｌａｙ自動化オブジェクト３０３およびＩｎｋＰｉｃｔｕｒｅ　ＡｃｔｉｖｅＸ制御３０４を使用することができ、ＣＲＬを使用する開発者は、ＩｎｋＯｖｅｒｌａｙ管理オブジェクト３０５およびＩｎｋＰｉｃｔｕｒｅ　ＷｉｎＦｏｒｍｓ制御３０７を使用することができる。この図では、実線の矢印が例示的な継承メタファーを表し、破線の矢印が例示的な使用法メタファーを示す。
【００２４】
ＩｎｋＣｏｌｌｅｃｔｏｒオブジェクト
ＩｎｋＣｏｌｌｅｃｔｏｒオブジェクトを使用して、インク入力装置からインクをキャプチャすることができ、かつ／またはインクをアプリケーションに送達することができる。ＩｎｋＣｏｌｌｅｃｔｏｒオブジェクトはある意味で、１つまたは複数のインクストロークとしてインクを収集し、インクを１つまたは複数の関連するインクオブジェクト内に格納することによって、１つまたは複数の異なる、かつ／または別個のインクオブジェクトにインクを「注ぐ」蛇口として振る舞う。ＩｎｋＣｏｌｌｅｃｔｏｒオブジェクトは、ＩｎｋＣｏｌｌｅｃｔｏｒオブジェクト自体を周知のアプリケーションウィンドウに付加することができる。次いでＩｎｋＣｏｌｌｅｃｔｏｒオブジェクトは、任意またはすべての利用可能なタブレット装置（スタイラス２０４および／またはマウスを含めることができる）を使用することにより、そのウィンドウに対してリアルタイムインキングを提供することができる。ＩｎｋＣｏｌｌｅｃｔｏｒオブジェクトを使用するために、開発者はそれを作成し、描画されたインクを収集するウィンドウを割り当て、オブジェクトを使用可能にすることができる。ＩｎｋＣｏｌｌｅｃｔｏｒオブジェクトを使用可能にした後、インクストロークおよび／またはジェスチャを収集する様々なインク収集モードでインクを収集するようにＩｎｋＣｏｌｌｅｃｔｏｒオブジェクトを設定することができる。ジェスチャは、レンダリングされたインクとして解釈されるのではなく、あるアクションまたは機能を実施するための要求またはコマンドとして解釈される、スタイラス２０４の移動または他のアクションである。例えば、インクを選択するために特定のジェスチャを実施することができ、一方別のジェスチャは、インクをイタリックにするためのジェスチャとすることができる。デジタイザ入力上、またはその近傍でスタイラスが移動するごとに、ＩｎｋＣｏｌｌｅｃｔｏｒオブジェクトがストロークおよび／またはジェスチャを収集することになる。
【００２５】
ＩｎｋＯｖｅｒｌａｙオブジェクト
ＩｎｋＯｖｅｒｌａｙオブジェクトは、エンドユーザが必ずしもインクに対する認識を実施することに関心がないが、インクのサイズ、形状、色、および位置に関心のある可能性のある注釈シナリオに対して有用なオブジェクトである。これは、ノートを取ることや、基本的な走り書きに非常に適している。このオブジェクトの主に意図される使用法は、インクをインクとして表示することである。デフォルトユーザインターフェースは、不透明なインクを有する透明な長方形である。ＩｎｋＯｖｅｒｌａｙは、いくつかの方式でＩｎｋＣｏｌｌｅｃｔｏｒクラスを拡張する。例えば、ＩｎｋＯｖｅｒｌａｙオブジェクト（および／または以下で論じるＩｎｋＰｉｃｔｕｒｅ制御）は、インクの選択、消去、およびサイズ変更、並びに削除、カット、コピー、およびペーストの各コマンドをサポートすることができる。
【００２６】
ＩｎｋＯｖｅｒｌａｙオブジェクトが有用である典型的なシナリオは、下にあるドキュメントの上に手書きのコメント、図面などを作成することなどによってドキュメントをマークアップすることである。ＩｎｋＯｖｅｒｌａｙオブジェクトにより、このシナリオのために必要なインキング機能およびレイアウト機能を容易に実装することが可能となる。例えば、ＩｎｋＯｖｅｒｌａｙオブジェクトを扱うために、ＩｎｋＯｖｅｒｌａｙオブジェクトをインスタンス化し、別のウィンドウのｈＷｎｄにＩｎｋＯｖｅｒｌａｙを付加し、ＩｎｋＯｖｅｒｌａｙ使用可能プロパティを真に設定することができる。
【００２７】
図４を参照すると、ＩｎｋＯｖｅｒｌａｙオブジェクトの内部依存関係および外部依存関係を構成するコンポーネントパーツの高レベルブロック図が示されている。矢印は使用法メタファーを示す。ＩｎｋＯｖｅｒｌａｙオブジェクト４０１はＩｎｋＣｏｌｌｅｃｔｏｒオブジェクト４０２からインクを受け取ることができる。ＩｎｋＯｖｅｒｌａｙオブジェクト４０１は、選択管理機能４０３および／または編集機能４０４を有することができる。以下の例で論じるように、ＩｎｋＯｖｅｒｌａｙオブジェクト４０１は、別のオブジェクト、ウィンドウ、または紙をスキャンした形式などの他の表示項目を透過的に重ねるために、透過性オーバーレイウィンドウ管理機能を有することができる。外部では、ＩｎｋＯｖｅｒｌａｙオブジェクト４０１は様々なアプリケーションおよびＡＰＩと対話することができる。例えば、アプリケーションは、様々な低レベルインキング機能を実装するのにＩｎｋＯｖｅｒｌａｙオブジェクト４０１を使用することができる。一実施形態では、このようなアプリケーションはＭｉｃｒｏｓｏｆｔ　Ｗｉｎｄｏｗｓ（登録商標）ＩＮＫ　ＳＥＲＶＩＣＥＳ　ＰＬＡＴＦＯＲＭ（登録商標）（ＷＩＳＰ）４０６でよい。アプリケーション４０６はＷＩＳＰに限定されず、かつ、本明細書で論じる他の要素と同様に、Ｍｉｃｒｏｓｏｆｔ　ＷＩＮＤＯＷＳ（登録商標）環境に限定されないことに留意されたい。ＩｎｋＯｖｅｒｌａｙオブジェクト４０１はさらに、低レベルＷＩＳＰ４０６機能の多くを自動化するＡＰＩと対話することができる。この実施形態では、このようなＡＰＩは自動化ＡＰＩ４０７と呼ばれる。自動化ＡＰＩ４０７は、上記で論じたインク制御ＡＰＩを含み、かつインクオブジェクト、ＩｎｋＣｏｌｌｅｃｔｏｒオブジェクト、ＩｎｋＯｖｅｒｌａｙオブジェクト、およびＩｎｋＰｉｃｔｕｒｅオブジェクトを含むオブジェクトモデルを開発者に提供する。ＩｎｋＯｖｅｒｌａｙオブジェクト４０１はさらに、Ｍｉｃｒｏｓｏｆｔ　Ｗｉｎｄｏｗｓ（登録商標）Ｗｉｎ３２　ＡＰＩ４０８および／またはＭｉｃｒｏｓｏｆｔ．ＮＥＴ（登録商標）ＡＰＩなどの、１つまたは複数のオペレーティングシステムＡＰＩと対話することができる。
【００２８】
ＩｎｋＯｖｅｒｌａｙオブジェクト４０１の選択管理機能４０３はインクの選択をサポートする。インクは、ｌａｓｓｏツール（トレース領域中に含まれるオブジェクトの選択）などの様々な方式で選択することができる。ＩｎｋＯｖｅｒｌａｙオブジェクト４０１はまた、インクオブジェクトがクリックオンされ、かつ／またはインクオブジェクトの近くが選択されるタップ選択をサポートすることもできる。インクオブジェクトまたは１組のインクオブジェクトが選択されたとき、サイズ変更ハンドル（例えば８個のサイズ変更ハンドル）がインクのバウンディングボックスの４つのコーナと、隣接するコーナ間の１つまたは複数の中点に出現することができる。サイズ変更ハンドルを移動することにより、選択したインクをハンドルの移動に従ってサイズ変更させることができる。キーボードまたは他の修飾子を使用して、サイズ変更中に元のアスペクト比を維持するようにＩｎｋＯｖｅｒｌａｙオブジェクトに指令することができる。インクはさらに、所望の他の任意の手段を使用してサイズ変更することができる。さらに、キーボードまたは他の修飾子を使用して、ドラッグ中にインクをサイズ変更するのではなく、選択したインクをドラッグ操作中にコピーするようにＩｎｋＯｖｅｒｌａｙオブジェクトに指令することができる。選択した領域内のどこかをユーザが押下して保持する場合、インクは制御内部で移動可能となる。長方形選択メタファー、並びに／あるいはワード、センテンス、および／またはパラグラフの選択メタファーをさらに使用することができる。例えば、インクワード内部をクリックすることによりワードが選択され、インクセンテンス内部のどこかをクリックすることによりセンテンス全体が選択され、インクパラグラフ内部のどこかをクリックすることにより、同様にパラグラフ全体が選択される。選択のための他の手段には、インクストロークの選択を示すインクストローク上またはその近くでのシングルクリック、ワード全体を選択するワード上またはその近くでのダブルクリック、およびセンテンス全体を選択するトリプルクリックなどの、選択挙動を示す特定のジェスチャを使用することが含まれる。加えて、ＩｎｋＯｖｅｒｌａｙオブジェクトのＡＰＩをプログラム式に、またはエンドユーザの入力によって直接呼び出すことにより、インクを選択および／または変更することができる。
【００２９】
加えて、ＩｎｋＯｖｅｒｌａｙオブジェクトはインク消去機能を提供することができる。例えば、ＩｎｋＯｖｅｒｌａｙオブジェクトは、ストローク消去モードおよび／またはポイント消去モードを提供することができる。ストローク消去モードでは、カーソルが下降し、かつ既存のインクストロークと接触する場合、ストロークは完全に除去される。ポイント消去モードでは、カーソルが下降し、かつ既存のインクストロークと接触する場合、カーソルとインクストロークの重なる領域だけが消去される。
【００３０】
ＩｎｋＯｖｅｒｌａｙ　ＡＰＩ
次に、図５を参照しながら、ＩｎｋＯｖｅｒｌａｙオブジェクトに関する例示的アプリケーションプログラミングインターフェース（ＡＰＩ）を論じる。図５では、ＩｎｋＯｖｅｒｌａｙオブジェクト５０１がボックスで表され、ＡＰＩの様々な要素（または機能的にグループ化された要素）が、ＩｎｋＯｖｅｒｌａｙオブジェクト５０１を表すボックスから出て、かつ／またはボックスに入る、符号を付けた矢印５４２〜５５８として示されている。一般には、ＩｎｋＯｖｅｒｌａｙオブジェクト５０１ボックスに入る矢印は、大部分は（ＩｎｋＯｖｅｒｌａｙオブジェクト５０１のプロパティのうち１つを変更することによって）ＩｎｋＯｖｅｒｌａｙオブジェクト５０１を変更し、かつ／またはＩｎｋＯｖｅｒｌａｙオブジェクト５０１に情報を提供するＡＰＩ要素（または機能的にグループ化された要素）を指す。ＩｎｋＯｖｅｒｌａｙオブジェクト５０１ボックスから出る矢印は、大部分はフラグ、またはＩｎｋＯｖｅｒｌａｙオブジェクト５０１によってＩｎｋＯｖｅｒｌａｙオブジェクト５０１の環境に提供される何らかの他の情報を表すＡＰＩ要素（または機能的にグループ化された要素）を指す。しかし、矢印の方向は限定的なものではなく、したがって、ＩｎｋＯｖｅｒｌａｙオブジェクト５０１に入る矢印は、ＩｎｋＯｖｅｒｌａｙオブジェクト５０１により、ＩｎｋＯｖｅｒｌａｙオブジェクト５０１の環境に提供される情報も表すことを防げられているわけではない。同様に、ＩｎｋＯｖｅｒｌａｙオブジェクト５０１から出る矢印は、ＩｎｋＯｖｅｒｌａｙオブジェクト５０１に対する情報を変更または提供することを防げられているわけではない。図５はさらに、ＩｎｋＯｖｅｒｌａｙオブジェクト５０１の複数のプロパティ５０２〜５２０を示す。
【００３１】
例示的実施形態でのＩｎｋＯｖｅｒｌａｙ　ＡＰＩは、以下の列挙（図示せず）の一部またはすべてを、任意の組合せまたはサブコンビネーションとして有する。アプリケーションジェスチャ列挙は、１組のアプリケーション特有のジェスチャへの関心を設定する値を定義する。収集モード列挙は、ＩｎｋＯｖｅｒｌａｙオブジェクトの収集モード設定を決定する値を定義する。イベントインタレスト列挙は、ＩｎｋＯｖｅｒｌａｙオブジェクトおよび／またはＩｎｋＣｏｌｌｅｔｏｒオブジェクトを使用する開発者が受け取ることに関心のあるイベントを定義する。ＩｎｋＯｖｅｒｌａｙオブジェクトはイベントインタレスト列挙を使用して、イベントを介して開発者に提供する情報を決定する。マウスポインタ列挙は、表示すべきマウスポインタのタイプを指定する値を定義する。この列挙は、ＩｎｋＰｉｃｔｕｒｅ制御およびＩｎｋＣｏｌｌｅｃｔｏｒオブジェクトでも現れる。オーバーレイ付加モード列挙は、新しいＩｎｋＯｖｅｒｌａｙオブジェクトを付加する場所（ＩｎｋＯｖｅｒｌａｙオブジェクトが付加されるウィンドウ中の制御および／またはテキストの後ろまたは前）を指定する値を定義する。ＩｎｋＯｖｅｒｌａｙオブジェクトが前に付加される場合、ウィンドウ中の制御および／またはテキストの前にインクがレンダリングされることを意味する。ＩｎｋＯｖｅｒｌａｙオブジェクトが後に付加される場合、インクが付加されるウィンドウ中に直接インクがレンダリングされ、したがってウィンドウ階層内の他の任意の制御または子ウィンドウの後ろにレンダリングされることを意味する。オーバーレイ編集モード列挙は、ＩｎｋＯｖｅｒｌａｙオブジェクトが使用すべき編集モード（インクのドローイング、インクの削除、インクの編集）を指定する値を定義する。イレーザモード列挙は、削除するように編集モード列挙が設定されるときにインクを消去する方式を指定する値を定義する。システムジェスチャ列挙は、１組のオペレーティングシステム特有のジェスチャへの関心を設定する値を定義する。
【００３２】
例示的実施形態でのＩｎｋＯｖｅｒｌａｙ　ＡＰＩはまた、設定することができ、それが表す情報を返すことができる以下のプロパティのうちの１つまたは複数も、任意の組合せまたはサブコンビネーションとして有する。付加モードプロパティ５０２は、オブジェクトが所与のウィンドウの後ろに付加されるのか、それとも前に付加されるのかを表す。自動再描画プロパティ５０３は、ウィンドウが無効にされたときにＩｎｋＣｏｌｌｅｃｔｏｒが再ペイントされるかどうかを表す。インク収集プロパティ５０４は、オブジェクトがインクの収集でビジーであるかどうかを表す。収集モードプロパティ５０５は、オブジェクトがインクだけを収集しているのか、ジェスチャだけを収集しているのか、それともインクとジェスチャを共に収集しているのかを表す。カーソル収集関係のプロパティ５０６は、オブジェクトが直面するカーソルの集合を表す。ドローイング属性プロパティ５０７は、インクを収集および表示する際に使用するデフォルトドローイング属性を表す。このプロパティで指定されるドローイング属性は、新しいカーソルに割り合てられる属性であり、このドローイング属性を、デフォルトドローイング属性がヌルに設定されるカーソル集合中のカーソルに適用することができる。パケット記述プロパティ５０８は、ＩｎｋＯｖｅｒｌａｙオブジェクト５０１のパケット記述を表す。動的レンダリングプロパティ５０９は、インクが収集されるときにＩｎｋＯｖｅｒｌａｙオブジェクト５０１がインクを動的にレンダリングするかどうかを表す。編集モードプロパティ５１０は、オブジェクトがインクモードにあるのか、削除モードにあるのか、それとも選択／編集モードにあるのかを表す。ＩｎｋＣｏｌｌｅｃｔｏｒ使用可能プロパティは、ＩｎｋＣｏｌｌｅｃｔｏｒがペン入力（Ｉｎ−Ａｉｒパケット、レンジイベント中のカーソルなど）を収集するかどうかを表す。様々なイレーザプロパティ５１２は、インクがストロークで消去されるのか、それともポイントで消去されるのか、インクをどのように消去するのか、並びにイレーザペンチップの幅を表す。ウィンドウハンドルプロパティ５１３は、ＩｎｋＯｖｅｒｌａｙオブジェクト５０１によりＩｎｋＯｖｅｒｌａｙオブジェクト５０１自体が付加されるハンドルを表す。関連インクオブジェクトプロパティ５１４は、ＩｎｋＯｖｅｒｌａｙオブジェクトに関連するインクオブジェクトを表す。マージンプロパティ５１５は、付加されているウィンドウハンドルに関連するウィンドウ長方形の周囲のＩｎｋＯｖｅｒｌａｙオブジェクト５０１の、画面座標であることが好ましいｘ軸マージンおよびｙ軸マージンを表す。さらに、マージンプロパティ５１５は、以下で議論するウィンドウ長方形メソッド５５５に関連する挙動を達成する別の手段を提供することができる。１つまたは複数のカスタムマウスカーソルプロパティ５１６は、現在のカスタムマウスアイコン、オブジェクトのインク可能部分の上などのＩｎｋＯｖｅｒｌａｙオブジェクト５０１の上にマウスがあるときに表示されるマウスポインタのタイプ、および／またはアクティブなポインティングデバイス（例えばマウス１０２のスタイラス２０４）により、表示されるカーソルがＩｎｋＯｖｅｒｌａｙオブジェクトの上にされるときに表示されるカーソルを表す。レンダラプロパティ５１７は、画面上にインクを描画するのに使用するレンダラを表す。選択プロパティ５１８は、現在選択されているインクストロークの集合を表す。高コントラストインクプロパティ５１９は、インクが高コントラストで、例えば１色だけでレンダリングされるかどうか、およびシステムが高コントラストモードにあるとき、すべての選択ＵＩ（例えば選択バウンディングボックスおよび選択ハンドル）が高コントラストで描画されるかどうかを表す。タブレットプロパティ５２０は、カーソル入力を収集するためにオブジェクトが現在使用しているタブレットを表す。
【００３３】
例示的実施形態でのＩｎｋＯｖｅｒｌａｙ　ＡＰＩはまた、複数の関連するイベントおよびメソッドを、任意の組合せまたはサブコンビネーションとして有する。例えば、カーソル関係のイベントおよびメソッド５４２、５４４が存在する可能性がある。このようなカーソル関係のイベントは、カーソル（スタイラス２０４のチップなど）がタブレットコンテキストの物理的検出範囲内にあるかどうかに応じて、またはカーソルがデジタル化タブレット表面（例えば表面２０２）と物理的に接触していることに応答して発生する。カーソル関係のメソッドは、それぞれのカーソル関係のイベントが発生することに応答して呼び出される。これらの機能により、開発者がＩｎｋＯｖｅｒｌａｙオブジェクトのカーソル機能を拡張および上書きすることが可能となる。
【００３４】
ＩｎｋＯｖｅｒｌａｙ　ＡＰＩはさらに、カーソルボタン関係のイベントおよびメソッド５４３を有することができる。このようなカーソルボタンイベントは、カーソル（例えばスタイラス２０４）上のボタンが上がっているか、それとも押下されているかに応じて発生する。カーソルボタン関係のメソッドは、それぞれのカーソルボタン関係のイベントが発生することに応答して呼び出される。これらの機能により、開発者がＩｎｋＯｖｅｒｌａｙオブジェクトのカーソルボタン機能を拡張および上書きすることが可能となる。
【００３５】
ＩｎｋＯｖｅｒｌａｙ　ＡＰＩはさらに、ジェスチャ関係のイベントおよびメソッド５４５、５５４を有することができる。このようなジェスチャ関係のイベントは、システムジェスチャが認識されること、またはアプリケーション特有のジェスチャが認識されることに応答して発生する。あるジェスチャ関係のメソッドは、それぞれのジェスチャ関係のイベントが発生することに応答して呼び出される。別のジェスチャ関係のメソッドは、所与の１組のジェスチャへのＩｎｋＯｖｅｒｌａｙオブジェクト５０１の関心を指定し、またはその関心を取り出す。これらの機能により、開発者がＩｎｋＯｖｅｒｌａｙオブジェクトのジェスチャ機能を拡張および上書きすることが可能となる。
【００３６】
ＩｎｋＯｖｅｒｌａｙ　ＡＰＩはさらに、タブレット関係のイベントおよびメソッド５４６、５５８を有することができる。あるタブレット関係のイベントは、タブレットがシステムに追加され、またはシステムから除去されることに応答して発生する。タブレット関係のメソッドは、それぞれのタブレット関係のイベントが発生することに応答して呼び出される。他のタブレット関係のメソッド５５８は、ＩｎｋＯｖｅｒｌａｙオブジェクト５０１を、全タブレットモードまたは統合タブレットモードに設定することを指定する。全タブレットモード（デフォルトモードでよい）では、複数の装置がシステムに取り付けられる場合にすべてのタブレット装置が統合される。タブレット装置のすべてが統合されるので、利用可能なカーソルをタブレット装置のいずれにも使用することができ、各タブレットが、同じドローイング属性を使用して画面全体にマッピングされる。統合タブレットモードでは、統合タブレットスタイルコンピュータ入力面が、ディスプレイ画面と同じ表面を共有する。このことは、タブレットスタイルコンピュータ入力面全体が画面全体にマッピングされ、ウィンドウの自動更新が可能となることを意味する。
【００３７】
ＩｎｋＯｖｅｒｌａｙ　ＡＰＩはさらに、パケット関係のイベントおよびメソッド５４７を有することができる。このようなパケット関係のイベントは、新しく描画されたパケット、および新しいＩｎ−Ａｉｒパケットに応答する。パケット関係のメソッドは、それぞれのパケット関係のイベントが発生したことに応答して呼び出される。これらの機能により、開発者がＩｎｋＯｖｅｒｌａｙオブジェクトのスタイラス機能および応答性を拡張および上書きすることが可能となる。
【００３８】
ＩｎｋＯｖｅｒｌａｙ　ＡＰＩはまた、ペインティング関係のイベントおよびメソッド５４８も有することができる。このようなペインティング関係のイベントは、ＩｎｋＯｖｅｒｌａｙオブジェクト５０１がインクを選択すると共にインクをペイントする直前に発生し、それによって開発者がインクの外観を変更し、またはインク自体を変更する機会が許される。ペインティング関係のイベントはまた、ＩｎｋＯｖｅｒｌａｙオブジェクト５０１がインクのペインティングを完了したことに応答して発生することもでき、それによって開発者が、既に描画したインクに加えて何かを描画することが可能となる。ペインティング関係のメソッドは、それぞれのペインティング関係のイベントが発生したことに応答して呼び出される。この機能により、開発者がＩｎｋＯｖｅｒｌａｙオブジェクトのインクレンダリング挙動を拡張および上書きすることが可能となる。これらのペインティング関係のメソッドはまた、実際にはＩｎｋＯｖｅｒｌａｙオブジェクトの一部でなくともよく、その代わりに、開発者が、ペインティング関係のイベントがファイアされることに応答して適切に呼び出されるようにそのようなメソッドを実装し、かつそれをＩｎｋＯｖｅｒｌａｙオブジェクトに接続する目的で利用可能である。
【００３９】
ＩｎｋＯｖｅｒｌａｙ　ＡＰＩはまた、選択関係のイベントおよびメソッド５４９も有することができる。ある選択関係のイベントは、選択が変更される前に発生し、それによって発生しようとしている選択変更を変更する機会が開発者に与えられる。選択関係のイベントはまた、変更を完了した選択に、プログラム的に、またはエンドユーザアクションの結果として応答することもできる。他の選択関係のイベントは、移動しようとしている現在の選択の位置に応答して、または現在の選択の位置が変更されたときに発生する。さらに別の選択関係のイベントは、変更されようとしている現選択のサイズ、または変更された現選択のサイズに応答して発生する。選択関係のメソッドは、それぞれの選択関係のイベントが発生したことに応答して呼び出される。これらの機能により、開発者がＩｎｋＯｖｅｒｌａｙオブジェクトの選択機能および編集機能を拡張および上書きすることが可能となる。
【００４０】
ＩｎｋＯｖｅｒｌａｙ　ＡＰＩはさらに、インクストローク関係のイベントおよびメソッド５５０、５５１を有することができる。あるこのようなストローク関係のイベントは、ユーザが新しいストロークを任意のタブレット上に描画することに応答する。他のストローク関係のイベントは、削除されようとしているストローク、または削除されたストロークに応答する。ストローク関係のメソッドは、それぞれのストローク関係のイベントが発生したことに応答して呼び出される。これらの機能により、開発者がＩｎｋＯｖｅｒｌａｙオブジェクトのインク消去機能を拡張および上書きすることが可能となる。
【００４１】
ＩｎｋＯｖｅｒｌａｙ　ＡＰＩは、様々な別の多岐にわたるメソッドを有することができる。例えば、ドローメソッド５５２は、提供される装置コンテキスト（例えば画面、プリンタなど）内の指定の長方形に関するインクおよび選択Ｕｌを描画することができる。他のメソッド５５３は、特定のＩｎｋＯｖｅｒｌａｙイベントの現状態（例えば、イベントがリスニングされているか、それとも使用されているか）を設定し、その現状態を取り出す。さらに別のメソッド５５５セットは、インクが描画されるウィンドウ座標として、設定するウィンドウ長方形を指定し、またはそのウィンドウ長方形を取り出す。別のメソッド５５６は、所与の座標がサイズ変更ハンドルのうちの１つに対応するか、選択した領域の内部に対応するか、または全く選択されていないかを判定する。コンストラクタ５５７は、指定のウィンドウハンドルに付加することができ、指定のタブレット上に位置することができ、ウィンドウ入力長方形をタブレット入力長方形にマッピングすることができる新しいＩｎｋＯｖｅｒｌａｙオブジェクトの作成を指定する。
【００４２】
例示的実施形態でのＩｎｋＯｖｅｒｌａｙ　ＡＰＩはまた、様々なマージン定数（図示せず）も有することができる。第１のマージン定数はストロークがデフォルトのマージンの外側にあるとき、ストロークをクリップすべきかどうかを指定する値を返す。第２のマージン定数は、マージンプロパティによって使用されるデフォルトマージンを返す。これらの定数は、ＩｎｋＣｏｌｌｅｃｔｏｒオブジェクトおよびＩｎｋＰｉｃｔｕｒｅ制御内のプロパティとしても現れる。
【００４３】
ＩｎｋＰｉｃｔｕｒｅ制御
前述のように、インクの収集および編集のためのウィンドウを開発者が追加することを可能にする制御（本明細書ではＩｎｋＰｉｃｔｕｒｅ制御と呼ぶ）を作成することができる（例えば、ＡｃｔｉｖｅＸ制御でよい）。ＩｎｋＰｉｃｔｕｒｅ制御により、ユーザがインクを追加することができるアプリケーションまたはウェブページ内にイメージを配置することができる。イメージは、．ｊｐｇ、．ｂｍｐ、．ｐｎｇ、または．ｇｉｆフォーマットなどのどんなフォーマットでもよい。ＩｎｋＰｉｃｔｕｒｅ制御は主に、必ずしもインクをテキストとして認識する必要がなく、その代わりに、または追加でインクとして格納することができるシナリオのためのものである。例示的実施形態では、ＩｎｋＰｉｃｔｕｒｅ制御のための実行時ユーザインターフェースは、例えば、不透明または半透明なインクを含む不透明な背景（単色の背景、ピクチャの背景、またはその両方など）を有するウィンドウである。例示的実施形態では、ＩｎｋＰｉｃｔｕｒｅ制御は、ＡｃｔｉｖｅＸまたは他の制御を有するＩｎｋＯｖｅｒｌａｙオブジェクトをラッピングする。
【００４４】
ＩｎｋＰｉｃｔｕｒｅ　ＡＰＩ
図６を参照すると、例示的ＩｎｋＰｉｃｔｕｒｅ制御６０１が示されている。ＩｎｋＰｉｃｔｕｒｅ制御６０１は、ＩｎｋＯｖｅｒｌａｙオブジェクト５０１のＡＰＩ要素の一部またはすべてを公開し、加えて図６に示すＡＰＩ要素の一部またはすべてを公開する。例えば、１つの例示的実施形態では、ＩｎｋＰｉｃｔｕｒｅ制御６０１により、付加モードプロパティ５０２および／またはウィンドウハンドルプロパティ５１３を除き、ＩｎｋＯｖｅｒｌａｙ　ＡＰＩ要素のすべてにアクセスすることが可能となる。ＩｎｋＰｉｃｔｕｒｅ制御６０１は、以下で論じるように、ＩｎｋＯｖｅｒｌａｙＡＰＩの機能に追加されるＩｎｋＰｉｃｔｕｒｅ制御６０１自体のＡＰＩを有することができる。ある実施形態では、ＩｎｋＰｉｃｔｕｒｅ制御６０１はＡｃｔｉｖｅＸ制御でよく、ＩｎｋＯｖｅｒｌａｙオブジェクト５０１と比較して以下の機能を追加することができる。その機能とは、キーボードイベント、制御サイジングイベント、追加のマウスイベント、および／または背景色、およびイメージ関係のプロパティである。加えて、ＩｎｋＰｉｃｔｕｒｅ制御６０１はＭｉｃｒｏｓｏｆｔ　ＰｉｃｔｕｒｅＢｏｘを継承することができる。例えば、ＰｉｃｔｕｒｅＢｏｘは、背景イメージなど、ＩｎｋＰｉｃｔｕｒｅ制御６０１に関して本明細書で論じたプロパティの一部またはすべてを実装することができる。
【００４５】
図６では、ＩｎｋＰｉｃｔｕｒｅ制御６０１はボックスで表されており、ＡＰＩの様々な要素（または機能的にグループ化された要素）が、ＩｎｋＰｉｃｔｕｒｅ制御６０１を表すボックスから出て、かつ／またはボックスに入る、符号を付けた矢印６４０〜６５８として示されている。一般には、ＩｎｋＰｉｃｔｕｒｅ制御６０１ボックスに入る矢印は、大部分は（例えばピクチャ制御６０１のプロパティのうち１つを変更することによって）ピクチャ制御６０１を変更し、かつ／またはＩｎｋＰｉｃｔｕｒｅ制御６０１に情報を提供するＡＰＩ要素（または機能的にグループ化された要素）を指す。ＩｎｋＰｉｃｔｕｒｅ制御６０１ボックスから出る矢印は、大部分はフラグ、またはＩｎｋＰｉｃｔｕｒｅ制御６０１によってＩｎｋＰｉｃｔｕｒｅ制御６０１の環境に提供される何らかの他の情報を表すＡＰＩ要素（または機能的にグループ化された要素）を指す。しかし、矢印の方向は限定的なものではなく、したがって、ＩｎｋＰｉｃｔｕｒｅ制御６０１に入る矢印は、ＩｎｋＰｉｃｔｕｒｅ制御６０１により、ＩｎｋＰｉｃｔｕｒｅ制御６０１の環境に提供される情報も表すことを防げられているわけではない。同様に、ＩｎｋＰｉｃｔｕｒｅ制御６０１から出る矢印は、ＩｎｋＰｉｃｔｕｒｅ制御６０１に対する情報を変更または提供することを防げられているわけではない。図６はさらに、ＩｎｋＰｉｃｔｕｒｅ制御６０１の複数のプロパティ６０２〜６２６を示す。
【００４６】
例示的実施形態では、ＩｎｋＰｉｃｔｕｒｅ制御６０１に関するＡＰＩは、１つまたは複数の列挙（図示せず）を有することができる。例えば、インクピクチャサイズ列挙は、ピクチャが制御内に適合するように自動サイズ変更するか、または制御内の中心に来るか、または制御内で通常のサイズで現れるか、または制御内で広げられるかなど、背景ピクチャのＩｎｋＰｉｃｔｕｒｅ内部での振舞いを指定する値を定義する。さらに、ユーザインターフェース列挙は、フォーカスキューおよびキーボードキューの状態、フォーカス長方形がステータスの変更後に表示されるかどうか、および／またはステータスの変更後にキーボードキューにアンダーラインを引くかどうかなど、ＩｎｋＰｉｃｔｕｒｅ制御に関するユーザインターフェースの状態を指定する値を定義する。
【００４７】
例示的実施形態では、ＩｎｋＰｉｃｔｕｒｅ制御６０１に関するＡＰＩは、様々な関連するプロパティ６０２〜６２６の一部またはすべてを、任意の組合せまたはサブコンビネーションとして有することができる。例えば、１つまたは複数のアクセス可能性プロパティ６０２は、アクセス可能性クライアントアプリケーションと、ＩｎｋＰｉｃｔｕｒｅ制御のアクセス可能な役割が使用するＩｎｋＰｉｃｔｕｒｅ制御の名前および記述を表す。アンカプロパティ６０３は、ＩｎｋＰｉｃｔｕｒｅ制御のどの端部がＩｎｋＰｉｃｔｕｒｅ制御のコンテナの端部に固定されるかを表す。１つまたは複数の背景プロパティ６０４は、ＩｎｋＰｉｃｔｕｒｅ制御に関する背景色と、ＩｎｋＰｉｃｔｕｒｅ制御内に表示される背景イメージを表す。枠スタイルプロパティ６０５は、ＩｎｋＰｉｃｔｕｒｅ制御に関して使用する枠スタイルを表す。妥当性検査プロパティ６０６は、ＩｎｋＰｉｃｔｕｒｅ制御が、フォーカスを受け取ったときに、妥当性検査を必要とする何らかの制御に対して妥当性検査を実施させるかどうかを表す。コンテナプロパティ６０７は、ＩｎｋＰｉｃｔｕｒｅ制御を含むコンテナを表す。ドックプロパティ６０８は、ＩｎｋＰｉｃｔｕｒｅ制御がドッキングされる、親コンテナの１つまたは複数の端部を表す。１つまたは複数のドラッグプロパティ６０９は、ドラッグアンドドロップ操作でポインタとして表示すべきアイコンと、ドラッグアンドドロップ操作に対してマニュアルドラッグモードを使用するか、それともオートドラッグモードを使用するかを表す。使用可能プロパティ６１０は、ＩｎｋＰｉｃｔｕｒｅ制御がフォーカス可能であるかどうかを表す。１つまたは複数の寸法プロパティ６１１は、ＩｎｋＰｉｃｔｕｒｅ制御の高さ、ＩｎｋＰｉｃｔｕｒｅ制御の幅、並びにＩｎｋＰｉｃｔｕｒｅ制御の高さおよび幅の両方を表す。これらの寸法プロパティは、ピクセルなどのどんな単位でもよい。コンテキスト感応型ヘルププロパティ６１２は、ＩｎｋＰｉｃｔｕｒｅ制御の関連するコンテキスト識別を表し、このコンテキスト感応型ヘルププロパティ６１２を使用して、アプリケーションに関するコンテキスト感応型ヘルプを提供することができる。ウィンドウハンドルプロパティ６１３は、インクを描画するウィンドウのハンドルを表す。イメージプロパティ６１４は、ＩｎｋＰｉｃｔｕｒｅ制御内に表示されるイメージを表す。制御アレイインデックスプロパティ６１５は、制御アレイ中のＩｎｋＰｉｃｔｕｒｅ制御を識別する番号を表す。１つまたは複数の位置プロパティ６１６は、制御の内部の左端と制御のコンテナの左端との間の距離、並びに制御の内部の上端と制御のコンテナの上端との間の距離を表す。ロックプロパティ６１７は、ＩｎｋＰｉｃｔｕｒｅ制御の内容を編集することができるかどうかを表す。可視性プロパティ６１８は、ＩｎｋＰｉｃｔｕｒｅ制御が可視であるかどうかを表す。制御名プロパティ６１９は、ＩｎｋＰｉｃｔｕｒｅ制御の名前を表す。オブジェクトプロパティ６２０は、ＩｎｋＰｉｃｔｕｒｅ制御に対応するオブジェクトを表す。親オブジェクトプロパティ６２１は、制御がその上に位置するオブジェクトを表す。サイズモードプロパティ６２２は、ＩｎｋＰｉｃｔｕｒｅ制御がイメージの配置およびサイズ変更をどのように処理するかを表す。１つまたは複数のタブプロパティ６２３は、ＩｎｋＰｉｃｔｕｒｅ制御の親コンテナ内のＩｎｋＰｉｃｔｕｒｅ制御のタブ順序と、ユーザがタブキーを使用してＩｎｋＰｉｃｔｕｒｅ制御にフォーカスを与えることができるかどうかを表す。オブジェクトタグプロパティ６２４は、オブジェクトについての拡張プロパティ、またはカスタムデータを表す。ツールチッププロパティ６２５は、マウス（またはスタイラス）がＩｎｋＰｉｃｔｕｒｅ制御の上で停止したときに表示されるテキストを表す。ヘルププロパティ６２６は、ＩｎｋＰｉｃｔｕｒｅ制御の関連するコンテキスト番号を表す。「Ｗｈａｔ’ｓ　Ｔｈｉｓ？」ポップアップを使用する、アプリケーションに関するコンテキスト感応型ヘルプを提供するために、ヘルププロパティ６２６を使用することができる。
【００４８】
例示的実施形態でのＩｎｋＰｉｃｔｕｒｅＡＰＩはさらに、複数の関連するイベントおよびメソッドを、任意の組合せまたはサブコンビネーションとして有することができる。例えば、フォーカス設定メソッド６４０は、ＩｎｋＰｉｃｕｔｒｅ制御にフォーカスを割り当てるべきであることを指定する。１つまたは複数のフォーカスイベント６４１は、ＩｎｋＰｉｃｔｕｒｅ制御がフォーカスを失い、またはフォーカスを受け取ったことに応答して発生する。ユーザインターフェースフォーカスイベント６４２は、フォーカスキューまたはキーボードユーザインターフェースキューが変化したことに応答して発生する。ｚオーダメソッド６４３は、ＩｎｋＰｉｃｔｕｒｅ制御のグラフィカルレベル内のｚオーダの前または後ろにＩｎｋＰｉｃｔｕｒｅ制御を配置することを指定する。制御サイズイベント６４４は、ＩｎｋＰｉｃｔｕｒｅ制御がサイズ変更されたことに応答して発生する。サイズモードイベント６４５は、サイズモードプロパティ６２２が変更されたことに応答して発生する。サイズ変更／移動メソッド６４６は、ＩｎｋＰｉｃｔｕｒｅ制御の移動および／またはサイズ変更を指定する。スタイルイベント６４７は、ＩｎｋＰｉｃｔｕｒｅ制御のスタイルの変化に応答して発生する。作成メソッド６４８は、新しいＩｎｋＰｉｃｔｕｒｅ制御の作成を指定する。ドラッグメソッド６４９は、ＩｎｋＰｉｃｔｕｒｅ制御に対するドラッグ操作の開始端および／または取消しを指定する。１つまたは複数のマウス／スタイラスボタンイベント６５０は、マウス／スタイラスポインタがＩｎｋＰｉｃｔｕｒｅ制御の上にあり、マウスボタン（またはスタイラスのボタン）が押下または解放されたことに応答して発生する。１つまたは複数のクリックイベント６５１は、ＩｎｋＰｉｃｔｕｒｅ制御がクリックまたはダブルクリックされたことに応答して発生する。１つまたは複数のマウスエントリ／終了イベント６５２は、マウス／スタイラスポインタがＩｎｋＰｉｃｔｕｒｅ制御に関連する表示エリアに入り、またはそこから出ることに応答して発生する。１つまたは複数のマウス移動イベント６５３は、マウス／スタイラスポインタがＩｎｋＰｉｃｔｕｒｅ制御の上を移動し、またはＩｎｋＰｉｃｔｕｒｅ制御の上で停止することに応答して発生する。マウスホイールイベント６５４は、ＩｎｋＰｉｃｔｕｒｅ制御がフォーカスを有している間にマウスホイールが動くことに応答して発生する。ドラッグオーバイベント６５５は、オブジェクトがＩｎｋＰｉｃｔｕｒｅ制御の境界の上をドラッグされることに応答して発生する。ドラッグアンドドロップイベント６５６は、ドラッグアンドドロップ操作が完了したことに応答して発生する。１つまたは複数のハンドルメソッド６５７は、ハンドルが作成され、または破棄されたことに応答してイベントを発生する。１つまたは複数のキーイベント６５８は、ＩｎｋＰｉｃｔｕｒｅ制御がフォーカスを有している間にキーが押下され、または解放されることに応答して発生する。ＩｎｋＰｉｃｔｕｒｅ制御６０１はさらに、ＩｎｋＯｖｅｒｌａｙオブジェクト５０１に関して先に議論したイベントのいずれか、またはすべてを送ることができる。
【００４９】
電子インクのオーバーレイ化
図７を参照すると、ドキュメント７０１を生成または提供することができる。図７の例示的実施形態でのドキュメントはテキストドキュメントである。しかし本明細書では、ドキュメントという用語は、限定はしないが、ワードプロセッシングドキュメント（Ｍｉｃｒｏｓｏｆｔ　ＷＯＲＤ（登録商標）を使用して生成されるものなど）、イメージドキュメント、グラフィカルドキュメント、テキストとグラフィックスを組み合わせたドキュメント、紙をスキャンしたドキュメント、スプレッドシートドキュメント、写真、および／または複数のフィールドを有するフォームなど、他の任意のタイプのドキュメントであると広く解釈すべきである。本発明を説明する際に本明細書で使用する用語「ドキュメント（ｄｏｃｕｍｅｎｔ）」はまた、ソフトウェアアプリケーションもその範囲内に含む。ドキュメント７０１の一部またはすべての上に配置された１つまたは複数のインキング表面（ウィンドウなど）を作成するように、ＩｎｋＯｖｅｒｌａｙオブジェクトおよび／またはＩｎｋＰｉｃｔｕｒｅ制御を定義することができる。ウィンドウまたは他のインキング表面は、下にあるドキュメント７０１が閲覧可能となるように透明（完全に透明か、または半透明）であることが好ましい。しかし、ウィンドウの一部またはすべてを不透明にすることもでき、かつ／または（例示的ＩｎｋＰｉｃｔｕｒｅ制御の例示的背景プロパティ６０４のうち１つまたは複数を使用することなどによって）背景イメージおよび／または背景色を有することもできる。背景イメージを使用する場合、別々のドキュメントの上にウィンドウを重ねることの別の方法として、背景イメージをドキュメント自体とすることができる。任意選択で、ウィンドウは、枠７０２（本明細書では点線として例示的に示す）を有することができる。枠７０２は不透明でよく、または可視でよい。ユーザがスタイラス２０４を使用してウィンドウのエリア内の画面上に書き込むとき、インクデータが筆跡から収集され、インクデータをレンダリングすることができ、電子インク７０３としてウィンドウ内に表示することができる。したがって、手書きインクがドキュメント７０１上に書き込まれるかのように見える。インクデータはまた、インクオブジェクトなどのオブジェクト内に格納することもできる。さらに、ペインティング関係のイベント５４８などの１つまたは複数のイベントを、レンダリング中、および／またはレンダリングの開始時、および／またはインクのレンダリングが完了したときにトリガすることができる。
【００５０】
ユーザはさらに、既にレンダリングされたインク７０３の一部を選択し、選択した部分を様々な方式で変更することができる。（例えば、選択する部分の周りにスタイラス２０４で円を描くことによって）インク７０３の少なくとも一部を選択した場合、選択した部分への参照（ｒｅｆｅｒｅｎｃｅ）を格納することができる。選択部分を移動および／またはサイズ変更することができ、その場合に、イベント５４９などの１つまたは複数のイベントを、選択の移動中またはサイズ変更中、および／または移動またはサイズ変更の開始時、および／または選択が移動またはサイズ変更を完了したときにトリガすることができる。インク７０３の一部またはすべて（１つまたは複数のストロークなど）は、さらに削除することができる。例えばユーザおよび／またはアプリケーションは、インク７０３の少なくとも一部を削除するように要求することができ、インクが削除される間、および／またはインクの削除開始時、および／またはインクを削除したときに、イベント５５１などの１つまたは複数のイベントをトリガすることができる。
【００５１】
上記に鑑みて、アプリケーション開発者は、ＩｎｋＯｖｅｒｌａｙオブジェクトおよび／またはＩｎｋＰｉｃｔｕｒｅ制御内部のインクへのプログラム式アクセスを有することができる（すなわち、内部構造を直接変更することができ、必ずしもユーザ入力または制御ＡＰＩを介する必要がない）。開発者および／またはユーザはさらに、インクの選択および／または様々な他のプロパティを変更することができる。次いでＩｎｋＯｖｅｒｌａｙオブジェクトは、タブレットコンテキストの確立、デジタイザイベントのリスニング、および／またはその現モードに従うインクストロークの収集および解釈の内部詳細を管理することができる。
【００５２】
例えば、開発者は、新しいストロークに関連するイベントへのアクセスを容易に有することができ、新しいストロークから位置メタデータを取り出すことにより、新しいインクストロークの位置を、下にあるドキュメント７０１内のテキストおよび／またはオブジェクトと比較することができる。したがって、本明細書で説明する様々なイベントおよびメソッドへのアクセスを有することにより、アプリケーション開発者は、アプリケーションにデータ構造を追加して、アプリケーションデータへのインクのマッピングを容易にすることができる。これにより例えば、ユーザおよび／またはアプリケーションがＩｎｋＯｖｅｒｌａｙオブジェクトを介してジェスチャおよび／または他のコマンドを発行し、下にあるドキュメント７０１を変更することが可能になる。例えば、図７に示すように、ドキュメント７０１内のテキストの一部がインクで囲まれ、大きい「Ｂ」がその囲まれた部分に描かれている。これは、囲まれたドキュメント７０１内のテキストをボールド体のテキストに変更するコマンドと解釈することができる。あるいは、図７に示すように、ジェスチャおよび／または他のコマンドを使用して語を削除および／または挿入することができる（例えば、下にあるドキュメント７０１内の語「ｄｅｆｅｎｃｅ」を削除し、新しく挿入した語「ｄｅｆｅｎｓｅ」で置換する）。これらのジェスチャの結果を図８に示す。
【００５３】
開発者はさらに、ＩｎｋＯｖｅｒｌａｙオブジェクト内のインクを、下にあるドキュメント７０１内の、下にあるテキストおよび／またはオブジェクトが移動するときに再構成するように自分のアプリケーションを容易に構成することができる。このことは例えば、ＩｎｋＯｖｅｒｌａｙオブジェクトウィンドウ内にインクストロークを位置付け、ストロークを移動および／またはサイズ変更することによって実施することができる。
【００５４】
開発者はさらに、本明細書で述べた様々なイベントをリスニングし、強調表示などの様々な概念を含めることにより、ＩｎｋＯｖｅｒｌａｙオブジェクトの固有編集機能を容易に拡張することができる。このことは例えば、デフォルトドローイング属性プロパティを上書きすることによって実施することができる。開発者はまた、（特定のストロークのユーザ操作を選択的に拒否することによる）選択読取り専用ストローク、並びに（ストロークを認識器に供給することによる）解析、および／または（「ｎｅｗｃｕｒｓｏｒ」イベントをリスニングし、ＩｎｋＯｖｅｒｌａｙ制御のモードを切り換えることによる）スタイラス２０４の後退で消去するような自然なユーザジェスチャなどの機能を追加することもできる。
【００５５】
さらに、複数のＩｎｋＯｖｅｒｌａｙオブジェクトおよび／またはＩｎｋＰｉｃｔｕｒｅ制御をどんなときにもドキュメント７０１の上に配置することができ、これらの複数のオブジェクトおよび／または制御を重ねることができる。図９を参照すると、第２ＩｎｋＯｖｅｒｌａｙオブジェクト（例えば）をインスタンス化することができ、第２ＩｎｋＯｖｅｒｌａｙオブジェクトは、第２の任意選択の枠９０１を有する第２ウィンドウを有することができる。同じユーザまたは別のユーザは、第２ＩｎｋＯｖｅｒｌａｙオブジェクトウィンドウ上にインク９０２を書き込むことができ、関連するインクデータをＩｎｋＯｖｅｒｌａｙオブジェクト内に格納し、かつ／または第２ＩｎｋＯｖｅｒｌａｙオブジェクトのウィンドウ内にレンダリングすることができる。あるいは、ユーザは、第１ＩｎｋＯｖｅｒｌａｙオブジェクトウィンドウ内の第１ウィンドウと第２ウィンドウが重なる位置にインクを書き込むことができ、インクを第２ウィンドウに送ることができる。
【００５６】
本発明の様々な態様を具体化する、本明細書で説明した例示的システムおよび方法を例示的に示したが、もちろん、本発明がこれらの実施形態に限定されないことを理解されよう。特に前述の教示に照らして、当業者は修正を行うことができる。例えば、前述の実施形態の要素それぞれを単独で使用することができ、または他の実施形態の要素と組み合わせて使用することができる。頭記の特許請求の範囲を用いて本発明を定義したが、この特許請求の範囲は、本明細書に記載の要素およびステップを任意の組合せまたはサブコンビネーションとして含むように本発明が意図されるという点で例示的である。したがって、明細書から、説明、特許請求の範囲、および図面を含む１つまたは複数の要素を様々な組合せまたはサブコンビネーションとして組み込む、本発明を定義する任意の数の別の組合せが存在する。本明細書に照らして、本発明の態様の別の組合せを単独で、または本明細書で定義される１つまたは複数の要素またはステップと組み合わせ、本発明の修正または変更として、あるいは本発明の一部として使用できることは、関係のある技術分野の技術者には明らかであろう。本明細書に含まれる本発明の書面による説明は、このようなすべての修正および変更を包含するものとする。さらに、本明細書で様々な名前のオブジェクトや他のＡＰＩ要素を与えたが、このような名前は単なる例であって、本発明の範囲から逸脱することなく、どんな名前も使用できることを理解されたい。
【図面の簡単な説明】
【図１】本発明の様々な態様を実装するのに使用することができる例示的な汎用デジタルコンピューティング環境の機能ブロック図である。
【図２】本発明の様々な態様に従って使用することができる例示的なタブレットコンピュータおよびスタイラスの平面図である。
【図３】本発明の様々な態様に従って使用することができる例示的なアーキテクチャおよびインターフェースの機能ブロック図である。
【図４】本発明の様々な態様に従って使用することができる例示的なアーキテクチャおよびインターフェースの機能ブロック図である。
【図５】本発明の様々な態様に従って使用することができる例示的なアーキテクチャおよびインターフェースの機能ブロック図である。
【図６】本発明の様々な態様に従って使用することができる例示的なアーキテクチャおよびインターフェースの機能ブロック図である。
【図７】本発明の様々な態様による１つまたは複数のインクオーバーレイオブジェクトを有するドキュメントの例示的スクリーンショットを示す図である。
【図８】本発明の様々な態様による１つまたは複数のインクオーバーレイオブジェクトを有するドキュメントの例示的スクリーンショットを示す図である。
【図９】本発明の様々な態様による１つまたは複数のインクオーバーレイオブジェクトを有するドキュメントの例示的スクリーンショットを示す図である。
【符号の説明】
１００　コンピュータ
１０１　キーボード
１０２　ポインティングデバイス
１０６　シリアルポートインターフェース
１０７　モニタ
１０８　ビデオアダプタ
１０９　リモートコンピュータ
１１０　処理装置
１１１　メモリ記憶装置
１１２　ローカルエリアネットワーク（ＬＡＮ）
１１３　広域ネットワーク（ＷＡＮ）
１１４　ネットワークインターフェースまたはアダプタ
１１５　モデム
１２０　システムメモリ
１３０　システムバス
１４０　読取り専用メモリ（ＲＯＭ）
１４７　モニタ
１５０　ランダムアクセスメモリ（ＲＡＭ）
１６０　基本入出力システム（ＢＩＯＳ）
１６５　ペンデジタイザ
１６６　ペンまたはスタイラス
１７０　ハードディスクドライブ
１８０　磁気ディスクドライブ
１９０　取外し可能磁気ディスク
１９１　光ディスクドライブ
１９２　取外し可能光ディスク
１９２　ハードディスクドライブインターフェース
１９３　磁気ディスクドライブインターフェース
１９４　光ディスクドライブインターフェース
１９５　オペレーティングシステム
１９６　１つまたは複数のアプリケーションプログラム
１９７　他のプログラムモジュール
１９８　プログラムデータ
２０１　コンピュータ処理システム
２０２　表示面
２０３　ウィンドウ
２０４　スタイラス
３０１　ＷｉｎＦｏｒｍｓ制御
３０２　ＩｎｋＣｏｌｌｅｃｔｏｒ自動化オブジェクト
３０３　ＩｎｋＯｖｅｒｌａｙ自動化オブジェクト
３０４　ＩｎｋＰｉｃｔｕｒｅ　ＡｃｔｉｖｅＸ制御
３０５　ＩｎｋＯｖｅｒｌａｙ管理オブジェクト
３０６　ＩｎｋＣｏｌｌｅｃｔｏｒ管理オブジェクト
３０７　ＩｎｋＰｉｃｔｕｒｅ　ＷｉｎＦｏｒｍｓ制御
４０１　ＩｎｋＯｖｅｒｌａｙオブジェクト
４０２　ＩｎｋＣｏｌｌｅｃｔｏｒオブジェクト
４０３　選択管理機能
４０４　編集機能
４０６　アプリケーション、Ｍｉｃｒｏｓｏｆｔ　Ｗｉｎｄｏｗｓ（登録商標）ＩＮＫ　ＳＥＲＶＩＣＥＳ　ＰＬＡＴＦＯＲＭ（登録商標）（ＷＩＳＰ）
４０７　自動化ＡＰＩ
４０８　Ｍｉｃｒｏｓｏｆｔ　Ｗｉｎｄｏｗｓ（登録商標）Ｗｉｎ３２　ＡＰＩ
５０１　ＩｎｋＯｖｅｒｌａｙオブジェクト
５０２　付加モードプロパティ
５０３　自動再描画プロパティ
５０４　インク収集プロパティ
５０５　収集モードプロパティ
５０６　カーソル収集関係のプロパティ
５０７　ドローイング属性プロパティ
５０８　パケット記述プロパティ
５０９　動的レンダリングプロパティ
５１０　編集モードプロパティ
５１２　イレーザプロパティ
５１３　ウィンドウハンドルプロパティ
５１４　関連インクオブジェクトプロパティ
５１５　マージンプロパティ
５１６　カスタムマウスカーソルプロパティ
５１７　レンダラプロパティ
５１８　選択プロパティ
５１９　高コントラストインクプロパティ
５２０　タブレットプロパティ
６０１　ＩｎｋＰｉｃｔｕｒｅ制御
６０２　アクセス可能性プロパティ
６０３　アンカプロパティ
６０４　背景プロパティ
６０５　枠スタイルプロパティ
６０６　妥当性検査プロパティ
６０７　コンテナプロパティ
６０８　ドックプロパティ
６０９　ドラッグプロパティ
６１０　使用可能プロパティ
６１１　寸法プロパティ
６１２　コンテキスト感応型ヘルププロパティ
６１３　ウィンドウハンドルプロパティ
６１４　イメージプロパティ
６１５　制御アレイインデックスプロパティ
６１６　位置プロパティ
６１７　ロックプロパティ
６１８　可視性プロパティ
６１９　制御名プロパティ
６２０　オブジェクトプロパティ
６２１　親オブジェクトプロパティ
６２２　サイズモードプロパティ
６２３　１つまたは複数のタブプロパティ
６２４　オブジェクトタグプロパティ
６２５　ツールチッププロパティ
６２６　ヘルププロパティ
７０１　ドキュメント
７０２，９０１　枠
７０３，９０２　電子インク
【図１】
2004030632.tif 000003
【図２】
2004030632.tif 000004
【図３】
2004030632.tif 000005
【図４】
2004030632.tif 000006
【図５】
2004030632.tif 000007
【図６】
2004030632.tif 000008
【図７】
2004030632.tif 000009
【図８】
2004030632.tif 000010
【図９】
2004030632.tif 000011