(57)【要約】【課題】インクファイルを再生する際に、メタデータとストロークデータとを容易に対応付けられるようにする。【解決手段】デジタルインクファイル生成方法は、第１のストロークデータ及び前記第１のストロークデータと異なる第２のストロークデータを生成し、第１の入力デバイスに関連付けられる情報を示す第１のメタデータ及び第１の入力デバイスと異なる第２の入力デバイスに関連付けられる情報を示す第２のメタデータを生成し、第１のストロークデータと第１のメタデータとを対応付ける第１のメタデータブロックを生成するとともに、第２のストロークデータと第２のメタデータとを対応付ける第２のメタデータブロックを生成し、第１のストロークデータ、第２のストロークデータ、第１のメタデータブロック、及び第２のメタデータブロックを含むデジタルインクファイルを生成することを特徴とする。【選択図】図１３
2020035452.tif 000002
【特許請求の範囲】
【請求項１】
第１のストロークデータ及び前記第１のストロークデータと異なる第２のストロークデータを生成し、
第１の入力デバイスに関連付けられる情報を示す第１のメタデータ及び前記第１の入力デバイスと異なる第２の入力デバイスに関連付けられる情報を示す第２のメタデータを生成し、
前記第１のストロークデータと前記第１のメタデータとを対応付ける第１のメタデータブロックを生成するとともに、前記第２のストロークデータと前記第２のメタデータとを対応付ける第２のメタデータブロックを生成し、
前記第１のストロークデータ、前記第２のストロークデータ、前記第１のメタデータブロック、及び前記第２のメタデータブロックを含むデジタルインクファイルを生成する
ことを特徴とするデジタルインクファイル生成方法。
【請求項２】
前記デジタルインクファイルは、前記第１のストロークデータ及び前記第２のストロークデータの相対的な描画順番を示す順序情報を有する
ことを特徴とする請求項１に記載のデジタルインクファイル生成方法。
【請求項３】
前記順序情報は、前記第１のストロークデータ及び前記第２のストロークデータが交差する場合に交差する位置における前記第１のストロークデータ及び前記第２のストロークデータの先後関係を示す情報を含む
ことを特徴とする請求項２に記載のデジタルインクファイル生成方法。
【請求項４】
前記第１のメタデータは文字列で構成される情報であり、または、前記第２のメタデータは文字列で構成される情報である
ことを特徴とする請求項１に記載のデジタルインクファイル生成方法。
【請求項５】
前記第１のメタデータブロックは、前記第１のメタデータに、複数のストロークデータを含む前記第１のストロークデータを対応付け、
前記第２のメタデータブロックは、前記第２のメタデータに、複数のストロークデータを含む前記第２のストロークデータを対応付ける、
ことを特徴とする請求項１に記載のデジタルインクファイル生成方法。
【請求項６】
第１のストロークデータ及び前記第１のストロークデータと異なる第２のストロークデータを生成するストロークデータ生成部と、
第１の入力デバイスに関連付けられる情報を示す第１のメタデータ及び前記第１の入力デバイスと異なる第２の入力デバイスに関連付けられる情報を示す第２のメタデータを生成するメタデータ生成部と、
前記第１のストロークデータと前記第１のメタデータとを対応付ける第１のメタデータブロックを生成するとともに、前記第２のストロークデータと前記第２のメタデータとを対応付ける第２のメタデータブロックを生成し、さらに、前記第１のストロークデータ、前記第２のストロークデータ、前記第１のメタデータブロック、及び前記第２のメタデータブロックを含むデジタルインクファイルを生成するインクファイル生成部と、
を有することを特徴とするデジタルインクファイル生成装置。
【請求項７】
前記デジタルインクファイルは、前記第１のストロークデータ及び前記第２のストロークデータの相対的な描画順番を示す順序情報を有する
ことを特徴とする請求項６に記載のデジタルインクファイル生成装置。
【請求項８】
前記順序情報は、前記第１のストロークデータ及び前記第２のストロークデータが交差する場合に交差する位置における前記第１のストロークデータ及び前記第２のストロークデータの先後関係を示す情報を含む
ことを特徴とする請求項７に記載のデジタルインクファイル生成装置。
【請求項９】
前記第１のメタデータは文字列で構成される情報であり、または、前記第２のメタデータは文字列で構成される情報である
ことを特徴とする請求項６に記載のデジタルインクファイル生成装置。
【請求項１０】
前記第１のメタデータブロックは、前記第１のメタデータに、複数のストロークデータを含む前記第１のストロークデータを対応付け、
前記第２のメタデータブロックは、前記第２のメタデータに、複数のストロークデータを含む前記第２のストロークデータを対応付ける、
ことを特徴とする請求項６に記載のデジタルインクファイル生成装置。
【請求項１１】
デジタルインクファイル生成装置としてコンピュータを機能させるプログラムであって、
前記コンピュータを、
第１のストロークデータ及び前記第１のストロークデータと異なる第２のストロークデータを生成するストロークデータ生成部、
第１の入力デバイスに関連付けられる情報を示す第１のメタデータ及び前記第１の入力デバイスと異なる第２の入力デバイスに関連付けられる情報を示す第２のメタデータを生成するメタデータ生成部、及び
前記第１のストロークデータと前記第１のメタデータとを対応付ける第１のメタデータブロックを生成するとともに、前記第２のストロークデータと前記第２のメタデータとを対応付ける第２のメタデータブロックを生成し、さらに、前記第１のストロークデータ、前記第２のストロークデータ、前記第１のメタデータブロック、及び前記第２のメタデータブロックを含むデジタルインクファイルを生成するインクファイル生成部、
として機能させるプログラム。
【請求項１２】
前記デジタルインクファイルは、前記第１のストロークデータ及び前記第２のストロークデータの相対的な描画順番を示す順序情報を有する
ことを特徴とする請求項１１に記載のプログラム。
【請求項１３】
前記順序情報は、前記第１のストロークデータ及び前記第２のストロークデータが交差する場合に交差する位置における前記第１のストロークデータ及び前記第２のストロークデータの先後関係を示す情報を含む
ことを特徴とする請求項１１に記載のプログラム。
【請求項１４】
前記第１のメタデータは文字列で構成される情報であり、または、前記第２のメタデータは文字列で構成される情報である
ことを特徴とする請求項１１に記載のプログラム。
【請求項１５】
前記第１のメタデータブロックは、前記第１のメタデータに、複数のストロークデータを含む前記第１のストロークデータを対応付け、
前記第２のメタデータブロックは、前記第２のメタデータに、複数のストロークデータを含む前記第２のストロークデータを対応付ける、
ことを特徴とする請求項１１に記載のプログラム。
【請求項１６】
第１のストロークデータ、第２のストロークデータ、前記第１のストロークデータと第１の入力デバイスに関連付けられる情報を示す第１のメタデータとを対応付ける第１のメタデータブロック、及び、前記第２のストロークデータと前記第１の入力デバイスと異なる第２の入力デバイスに関連付けられる情報を示す第２のメタデータとを対応付ける第２のメタデータブロックを含むデジタルインクファイルを取得し、
前記デジタルインクファイルから前記第１のメタデータまたは前記第２のメタデータを取得し、
前記取得した前記第１のメタデータに基づいて前記デジタルインクファイルから前記第１のストロークデータを再生し、または、前記取得した前記第２のメタデータに基づいて前記デジタルインクファイルから前記第２のストロークデータを再生する
ことを特徴とするデジタルインクファイル再生方法。
【請求項１７】
前記取得した前記第１のメタデータに基づいて前記第１のストロークデータの符号化方式を特定し、または、前記取得した前記第２のメタデータに基づいて前記第２のストロークデータの符号化方式を特定し、
前記特定した第１のストロークデータの符号化方式に基づいて前記デジタルインクファイルから前記第１のストロークデータを再生し、または、前記特定した第２のストロークデータの符号化方式に基づいて前記デジタルインクファイルから前記第２のストロークデータを再生する
ことを特徴とする請求項１６に記載のデジタルインクファイル再生方法。
【請求項１８】
前記再生した前記第１のストロークデータ及び前記第２のストロークデータの相対的な描画順番を示す順序情報に基づいて、前記第１のストロークデータまたは前記第２のストロークデータの画像を生成する
ことを特徴とする請求項１６に記載のデジタルインクファイル再生方法。
【請求項１９】
前記第１のメタデータブロックは、前記第１のメタデータに、複数のストロークデータを含む前記第１のストロークデータを対応付け、
前記第２のメタデータブロックは、前記第２のメタデータに、複数のストロークデータを含む前記第２のストロークデータを対応付ける、
ことを特徴とする請求項１６に記載のデジタルインクファイル再生方法。
【請求項２０】
第１のストロークデータ、第２のストロークデータ、前記第１のストロークデータと第１の入力デバイスに関連付けられる情報を示す第１のメタデータとを対応付ける第１のメタデータブロック、及び、前記第２のストロークデータと前記第１の入力デバイスと異なる第２の入力デバイスに関連付けられる情報を示す第２のメタデータとを対応付ける第２のメタデータブロックを含むデジタルインクファイルを取得するインクファイル受付部と、
前記デジタルインクファイルから前記第１のメタデータまたは前記第２のメタデータを取得するメタデータ復号部と、
前記取得した前記第１のメタデータに基づいて前記デジタルインクファイルから前記第１のストロークデータを再生し、または、前記取得した前記第２のメタデータに基づいて前記デジタルインクファイルから前記第２のストロークデータを再生する画像生成処理部と、
を有することを特徴とするデジタルインクファイル再生装置。
【請求項２１】
前記メタデータ復号部は、前記取得した前記第１のメタデータに基づいて前記第１のストロークデータの符号化方式を特定し、または、前記取得した前記第２のメタデータに基づいて前記第２のストロークデータの符号化方式を特定し、
前記画像生成処理部は、前記特定した第１のストロークデータの符号化方式に基づいて前記デジタルインクファイルから前記第１のストロークデータを再生し、または、前記特定した第２のストロークデータの符号化方式に基づいて前記デジタルインクファイルから前記第２のストロークデータを再生する
ことを特徴とする請求項２０に記載のデジタルインクファイル再生装置。
【請求項２２】
前記画像生成処理部は、前記再生した前記第１のストロークデータ及び前記第２のストロークデータの相対的な描画順番を示す順序情報に基づいて、前記第１のストロークデータまたは前記第２のストロークデータの画像を生成する
ことを特徴とする請求項２０に記載のデジタルインクファイル再生装置。
【請求項２３】
前記第１のメタデータブロックは、前記第１のメタデータに、複数のストロークデータを含む前記第１のストロークデータを対応付け、
前記第２のメタデータブロックは、前記第２のメタデータに、複数のストロークデータを含む前記第２のストロークデータを対応付ける、
ことを特徴とする請求項２０に記載のデジタルインクファイル再生装置。
【請求項２４】
デジタルインクファイル再生装置としてコンピュータを機能させるプログラムであって、
前記コンピュータを、
第１のストロークデータ、第２のストロークデータ、前記第１のストロークデータと第１の入力デバイスに関連付けられる情報を示す第１のメタデータとを対応付ける第１のメタデータブロック、及び、前記第２のストロークデータと前記第１の入力デバイスと異なる第２の入力デバイスに関連付けられる情報を示す第２のメタデータとを対応付ける第２のメタデータブロックを含むデジタルインクファイルを取得するインクファイル受付部、
前記デジタルインクファイルから前記第１のメタデータまたは前記第２のメタデータを取得するメタデータ復号部、及び、
前記取得した前記第１のメタデータに基づいて前記デジタルインクファイルから前記第１のストロークデータを再生し、または、前記取得した前記第２のメタデータに基づいて前記デジタルインクファイルから前記第２のストロークデータを再生する画像生成処理部、
として機能させるプログラム。
【請求項２５】
前記メタデータ復号部は、前記取得した前記第１のメタデータに基づいて前記第１のストロークデータの符号化方式を特定し、または、前記取得した前記第２のメタデータに基づいて前記第２のストロークデータの符号化方式を特定し、
前記画像生成処理部は、前記特定した第１のストロークデータの符号化方式に基づいて前記デジタルインクファイルから前記第１のストロークデータを再生し、または、前記特定した第２のストロークデータの符号化方式に基づいて前記デジタルインクファイルから前記第２のストロークデータを再生する
ことを特徴とする請求項２４に記載のプログラム。
【請求項２６】
前記画像生成処理部は、前記再生した前記第１のストロークデータ及び前記第２のストロークデータの相対的な描画順番を示す順序情報に基づいて、前記第１のストロークデータまたは前記第２のストロークデータの画像を生成する
ことを特徴とする請求項２４に記載のプログラム。
【請求項２７】
前記第１のメタデータブロックは、前記第１のメタデータに、複数のストロークデータを含む前記第１のストロークデータを対応付け、
前記第２のメタデータブロックは、前記第２のメタデータに、複数のストロークデータを含む前記第２のストロークデータを対応付ける、
ことを特徴とする請求項２４に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はインクファイルの検索方法、検索装置、及びプログラムに関し、特に、検索条件のひとつとして入力デバイスを指定可能なインクファイルの検索を実現できるインクファイルの検索方法、検索装置、及びプログラムに関する。
【背景技術】
【０００２】
電子ペンやスタイラス等の入力デバイスを用いてタブレット等の位置検出器上に書いた文字や画像をベクタデータとして保持し、後に再生することを可能とするデジタルインクが知られている。デジタルインクは、紙に描かれた手書きの軌跡（ストローク）を模擬するように、入力デバイスを位置検出器上で動かした軌跡を電子データ化してなるデータである。デジタルインクには、通常、（１）座標点や制御点などの集合により手書きの軌跡を再現するためのデータ、及び、（２）色情報やペン先のタイプなどの手書きの軌跡を描画するスタイルを記述するデータ、及び、（３）座標変換行列など軌跡に関するデータの幾何的な変換規則を記述するデータ等が含まれる。デジタルインクの具体的なフォーマットとして数種のものが提唱されており、非特許文献１〜４にはその例が開示されている。
【０００３】
非特許文献１記載のＩｎｋＭＬは、最も知られたデジタルインクのデータフォーマットである。ＩｎｋＭＬにおいて、上記（１）の「手書きの軌跡を再現するためのデータ」は、＜ｔｒａｃｅ＞要素と呼ばれる。＜ｔｒａｃｅ＞要素には、１ストローク（指示体を位置検出装置のセンサ面に接触させてから離すまでの動作）の軌跡を構成する複数のポイントデータ（入力センサによって所定の時間間隔で検出されるデータ。ポイントデータ（ｘ，ｙ）、筆圧データ、時刻データなど、入力センサ依存の属性（入力センサ属性）を示すデータを含む）の集合が記述される。また、上記（２）の「軌跡の描画スタイルを指定するデータ」として例えば＜ｂｒｕｓｈ＞要素などのデータが規定される。上記（３）の「軌跡に関するデータの変換規則を記述するデータ」として＜ｍａｐｐｉｎｇ＞要素などのデータが規定されている。また、＜ｉｎｋＳｏｕｒｃｅ＞要素により、インクデータを供給したハードウェアデバイスの製造者、モデル、シリアル番号などを記述することが可能なことが示されている。
【０００４】
非特許文献２記載のＩＳＦ(Ink Serialized Format)は、マイクロソフト社のアプリケーション上で利用されるデジタルインクのデータフォーマットである。上記（１）の「手書きの軌跡を再現するためのデータ」は、ＩＳＦではＳｔｒｏｋｅＤｅｓｃｒｉｐｔｏｒＢｌｏｃｋと呼ばれる。ＳｔｒｏｋｅＤｅｓｃｒｉｐｔｏｒＢｌｏｃｋには、ストロークの軌跡を再現するためのポイント（ポイントはｘ，ｙ座標値である）や筆圧値等が記述される。上記（２）の「軌跡の描画スタイルを指定するデータ」としてはＤｒａｗｉｎｇＡｔｔｒｉｂｕｔｅＢｌｏｃｋが規定される。上記（３）の「軌跡に関するデータの変換規則を記述するデータ」としてはＴｒａｎｓｆｏｒｍＢｌｏｃｋが規定されている。
【０００５】
非特許文献３記載のＳＶＧは、二次元グラフィックスアプリケーション及び画像、並びにグラフィックスクリプトのセットを記述するためのマークアップ言語である。ＳＶＧにおいては、上記（１）の「手書きの軌跡を再現するためのデータ」として＜ｐａｔｈ＞要素が存在する。＜ｐａｔｈ＞要素中には曲線補間に用いる複数の制御点（座標データ）が含まれ、これらの複数の制御点に基づくベジエ曲線により軌跡が再現される。
【０００６】
非特許文献４記載のＨＴＭＬ５には、上記（１）の「手書きの軌跡を再現するためのデータ」として、Ｃａｎｖａｓ  Ｐａｔｈクラスとよばれるデータ型が規定されている。Ｃａｎｖａｓ  Ｐａｔｈクラスには、軌跡を複数のベジエ曲線のセグメントの連結で再現する上で、各々のセグメントを生成するための３次曲線を生成するために必要な制御点が与えられる。
【０００７】
特許文献１には、デジタルインクの圧縮に関する技術が記載される。手書きを行っている間の座標検出により得られた生データのデータ量を圧縮するために、曲線補間アルゴリズムを用いて必要なポイントデータの数を削減し、データを圧縮することが記載されている。
【０００８】
以下では、非特許文献１の＜ｔｒａｃｅ＞要素、非特許文献２のＳｔｒｏｋｅＤｅｓｃｒｉｐｔｏｒＢｌｏｃｋ、非特許文献３の＜ｐａｔｈ＞要素、非特許文献４記載のＣａｎｖａｓ  Ｐａｔｈクラスや特許文献１の圧縮されたデジタルインクなどを総称し、一連のポイントデータにより位置検出器を用いて入力した手書きの軌跡を再現するためのベクタデータをストロークデータと呼ぶ。
【０００９】
また、電子ペン等の入力デバイスには、いわゆるペン識別情報ＰＩＤなどの固有の識別情報を保持するものがある。この種の入力デバイスは、内部に固有の識別情報を記憶するＲＯＭを有しており、タブレット等の位置検出器に対して出力可能に構成される。
【００１０】
位置検出器が取得したペン識別情報ＰＩＤは、位置検出器の機能に対応したドライバあるいはライブラリのＡＰＩを通じてアプリケーションから取得することができる。非特許文献５には、ｗｉｎｔａｂとよばれるドライバあるいはライブラリＡＰＩの例が記載されている。同文献Ｃ．４節には、ワコム社の位置検出器であるＩｎｔｕｏｓ（登録商標）を位置検出器とした場合に、ｗｉｎｔａｂと呼ばれるＡＰＩが出力するペン識別情報ＰＩＤであるＵｎｉｑｕｅＩＤの仕様が記載される。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００３−１４１１００号公報
【特許文献２】国際公開第２０１５／０１９８８３号
【非特許文献】
【００１２】
【非特許文献１】Yi-Min Chee、外１１名、"Ink Markup Language (InkML) W3C Recommendation 20 September 2011"、［online］、平成23年9月20日、Ｗ３Ｃ、［平成26年11月19日検索］、インターネット〈URL：http://www.w3.org/TR/InkML/〉
【非特許文献２】"Ink Serialized Format Specification"、［online］、Microsoft Corporation、［平成26年12月11日検索］、インターネット〈URL：http://download.microsoft.com/download/0/B/E/0BE8BDD7-E5E8-422A-ABFD-4342ED7AD886/InkSerializedFormat(ISF)Specification.pdf〉
【非特許文献３】Erik Dahlstrom、外９名、"Scalable Vector Graphics (SVG) 1.1 (Second Edition) W3C Recommendation 16 August 2011"、［online］、平成23年8月16日、Ｗ３Ｃ、［平成26年12月11日検索］、インターネット〈URL：http://www.w3.org/TR/SVG/〉
【非特許文献４】Ian Hickson、外６名、"A vocabulary and associated APIs for HTML and XHTML W3C Recommendation 28 October 2014"、［online］、平成26年10月28日、Ｗ３Ｃ、［平成26年12月11日検索］、インターネット〈URL：http://www.w3.org/TR/html5/〉
【非特許文献５】ＷＤＮ  Ｂｅｔａ  "Ｗｉｎｔａｂ"の説明、［online］、株式会社ワコム、［平成27年3月25日検索］、インターネット〈URL:http://wdnet.jp/library/windows/wintab/〉
【発明の概要】
【発明が解決しようとする課題】
【００１３】
ところで、近年クラウドコンピューティングが注目を集めており、デジタルインクのコンテナファイル（複数のストロークデータを含むファイル。以下、「インクファイル」と称する）についても、写真や画像などの共有サービスのごとく、クラウド上に保存したり、保存した画像をクラウド上で共有したり、といった使い方がされることが期待される。
【００１４】
ファイル単位の検索としては所定のタグが付された画像ファイル検索などは行われていることである。これと同様に、何らかの検索条件を指定してインクファイルを検索することができれば便利であり、特にインクファイルに関しては、検索条件のひとつとして入力デバイスや入力デバイスに対応したユーザ名等の情報を指定できれば非常に便利である。
【００１５】
しかしながら、従前のインクファイルの生成方法により生成されたインクファイルではこのような入力デバイスに対応した情報による検索を簡易に行うことは不可能であった。
【００１６】
したがって、本発明の目的の一つは、検索条件のひとつとして入力デバイスを指定可能なインクファイルの検索を実現するインクファイルの検索方法、検索装置、及びプログラムを提供することにある。
【００１７】
また、１つのキャンバスに複数のユーザが絵を書くような場合や、１つのキャンバスに赤ペンと鉛筆などペンを持ち替えて絵を書くような場合がある。このような場合に、自分が入力したストロークデータや特定のデバイスを用いて入力されたストロークデータのみを抽出し、抽出されたストロークデータのみを描画することができれば便利である。
【００１８】
しかしながら、従前行われている検索処理では、検索にヒットした画像全体を表示することしかできず、部分的にストロークを抽出して出力することはできなかった。
【００１９】
したがって、本発明の目的の一つは、検索条件に該当したストロークデータのみを抽出し、抽出されたストロークデータのみを描画処理するインクデータの検索方法、検索装置、及びプログラムを提供することにある。
【課題を解決するための手段】
【００２０】
第１の発明は、インクファイルの検索方法であって、それぞれ複数の座標データを含むＭ個のストロークデータと、前記Ｍ個のストロークデータのそれぞれにＮ（Ｎ≦Ｍ）種類の入力デバイスのうちいずれの入力デバイスで入力されたかを示す情報に対応したメタデータを関連付けるメタデータブロックとをそれぞれ含む複数のインクファイルを取得するステップと、メタデータの指定を含む検索条件を取得するステップと、前記複数のインクファイルの中から、前記検索条件により指定された前記メタデータに関連付けられた前記ストロークデータを含む１以上のインクファイルを選択するステップと、前記１以上のインクファイルのそれぞれについて、ストロークデータを含む描画処理を行うステップとを備えることを特徴とするインクファイルの検索方法、である。
【００２１】
第２の発明は、第１の発明において、前記描画処理を行うステップは、前記１以上のインクファイルのそれぞれについて、前記検索条件により指定された前記メタデータに関連付けられた前記ストロークデータのみを前記描画処理の対象とすることを特徴とするインクファイルの検索方法、である。
【００２２】
尚、上記いずれかの発明において、前記１以上のストロークデータはそれぞれ、複数のフォーマットの中から選択される一のフォーマットにより符号化された状態で、対応する前記インクファイル内に格納され、前記インクファイルは、前記一のフォーマットを識別する情報を前記ストロークデータのフォーマットから独立したフォーマットにより前記ストロークデータが格納される領域とは異なる領域に保持し、前記検索条件は、前記フォーマットの指定を含み、前記１以上のインクファイルを選択するステップは、前記１以上のインクファイルの中から、前記検索条件により指定された前記フォーマットで符号化された前記ストロークデータを含むインクファイルを前記ストロークデータが格納される領域とは異なる領域に保持された前記一のフォーマットを識別する情報により選択する、としても良い。
【００２３】
尚、上記いずれかの発明において、前記複数のインクファイルはそれぞれ、前記Ｍ個のストロークデータ間の相対的な描画順を表す情報である順序情報を格納し、前記描画処理を行うステップは、前記１以上のインクファイルのそれぞれについて、前記検索条件により指定された前記メタデータに関連付けられたストロークデータに付与された前記順序情報により示される描画順で、抽出されたストロークデータのそれぞれに格納される複数のポイントデータの描画を行う、としてもよい。
【発明の効果】
【００２４】
第１の発明によれば、検索条件のひとつとして入力デバイスや入力デバイスを利用したユーザ名などの文字列等を検索条件として指定可能なインクファイルの検索が実現される。
【００２５】
第２の発明によれば、自分が入力したストロークデータや特定のデバイスを用いて入力されたストロークデータのみを抽出し、抽出されたストロークデータのみを描画することができ、ストロークデータを画像データ（ラスタデータ）化せず、ベクタデータとして保持するという利点を活用したインクデータの検索方法を実現できる。
【００２６】
また、上記いずれかの発明において、ストロークデータが格納される領域とは異なる領域に保持された前記一のフォーマットを識別する情報により、１のインクファイルを選択する構成によれば、検索方法を実行するサーバが対応していないようなストロークデータのフォーマットを保持するインクファイルを抽出可能としたり、ユーザが自己の環境で復号化できるストロークデータを含むインクファイルを取得したりすることができ、画像フォーマットのように広く普及したフォーマットが存在しないストロークデータの検索に好適である。
【００２７】
また、上記いずれかの発明において、ストロークデータ間の相対的な描画順を表す情報である順序情報をインクファイルに格納し、この順序情報により示される描画順でストロークデータのそれぞれに格納される複数のポイントデータの描画を行うため、１以上の検索条件により選択したストロークデータ群を合成して描画する上で、複数回先後関係が入れ替わるような単純なオブジェクトの前景背景では表現できないようなストロークデータの重畳関係を再現して提示する、検索方法を実現することが可能となる。
【図面の簡単な説明】
【００２８】
【図１】本発明の第１の実施の形態によるコンピュータ１のシステム構成を示す図である。
【図２】図１に示したデジタルインク生成装置３０の機能ブロック図である。
【図３】インクファイル４０を生成する処理のメインルーチン（前半部分）を示す処理フロー図である。
【図４】インクファイル４０を生成する処理のメインルーチン（後半部分）を示す処理フロー図である。
【図５】図２に示した入力処理部３１及びメタデータ生成部３３の内部構成を示す図である。
【図６】図４のステップＳ１１に示したメタデータ生成処理の処理フロー図である。
【図７】ペン識別情報ＰＩＤから論理識別情報ＬＩＤを生成する処理の説明図である。
【図８】（ａ）は論理名ＬＮが文字列である場合における論理識別情報ＬＩＤと論理名ＬＮの例を示す図であり、（ｂ）は論理名ＬＮがハッシュ値である場合における論理識別情報ＬＩＤと論理名ＬＮの例を示す図であり、（ｃ）は論理名ＬＮがＵＲＮである場合における論理識別情報ＬＩＤと論理名ＬＮの例を示す図である。
【図９】図３のステップＳ２３に示した順序確認処理の処理フロー図である。
【図１０】（ａ）は２つの電子ペンＰＡ，ＰＢのそれぞれによって描画された図形の一例を示す図であり、（ｂ）は（ａ）を離散的なポイントデータに置換してなる図であり、（ｃ）は（ｂ）に示した一連の座標に対応付けられる順序情報Ｕｏｒｄｅｒ（ＰＩＤ）を示す図である。
【図１１】（ａ）は２つの電子ペンＰＡ，ＰＢのそれぞれによって描画された図形の他の一例を示す図であり、（ｂ）は（ａ）を離散的なポイントデータに置換してなる図であり、（ｃ）は（ｂ）に示した一連の座標に対応付けられる順序情報Ｕｏｒｄｅｒ（ＰＩＤ）を示す図である。
【図１２】（ａ）は、図１１に示したストロークデータを含む１つのインクファイル内に格納される一連の情報を例示する図であり、（ｂ）は、（ａ）に示した一連の情報を順序情報Ｕｏｒｄｅｒ（ＰＩＤ）によりソートしたものである。
【図１３】図４のステップＳ４０に示したインクファイル生成処理の処理フロー図である。
【図１４】ＲＩＦＦによって生成されるインクファイルの構造を示す図である。
【図１５】（ａ）はＷＩＬＬ形式のストロークデータのフォーマットを定義するためのストロークデータフォーマットを示す図であり、（ｂ）は（ａ）に示した各属性の具体的な表現形式を示す図であり、（ｃ）は階層構造を有するストローク属性の具体的な表現形式を示す図である。
【図１６】図１３のステップＳ４０４に示したストロークデータ符号化処理の処理フロー図である。
【図１７】ＩｎｋＭＬ形式で記述したストロークデータの例を示す図である。
【図１８】図１３のステップＳ４０６に示したストロークデータグループ化処理の処理フロー図である。
【図１９】ＸＭＰ形式で記述したメタデータチャンクの例を示す図である。
【図２０】図１に示したデジタルインク再生装置５０の機能ブロック図である。
【図２１】図２０に示したフィルタ情報に従って画像を生成する処理のメインルーチンを示す処理フロー図である。
【図２２】図２１のステップＳ５１に示した画像生成処理の処理フロー図である。
【図２３】本発明の第２の実施の形態によるコンピュータシステム９０のシステム構成を示す図である。
【図２４】図２３に示したストレージ７１に格納されるインクテーブルの例を示す図である。
【図２５】図２３に示したインクサーバ７０の機能ブロック図である。
【図２６】図２３に示したインクサーバ７０によるインクファイル再生処理のメインルーチンを示す処理フロー図である。
【図２７】本発明の第３の実施の形態によるコンピュータシステム９１のシステム構成を示す図である。
【図２８】図２７に示したストレージ７１に格納されるインクテーブルの例を示す図である。
【図２９】図２に示した入力処理部３１及びメタデータ生成部３３の内部構成の変形例を示す図である。
【発明を実施するための形態】
【００２９】
以下、添付図面を参照しながら、本発明の好ましい実施の形態について詳細に説明する。
【００３０】
初めに、本発明の第１の実施の形態によるインクファイルの出力方法について説明する。図１は、本実施の形態によるインクファイルの出力方法を実現するコンピュータ１のシステム構成を示す図である。同図に示すように、コンピュータ１は、位置検出器２０と、デジタルインク生成装置３０（インクファイルの出力装置）と、デジタルインク再生装置５０と、ディスプレイ６０とを有して構成される。コンピュータ１は、これらの構成がすべて一体化された装置であってもよいし、これらの構成の一部が外部装置として他の構成に接続される装置であってもよい。前者の例としては、コンピュータ１がいわゆるタブレットＰＣである場合が挙げられる。後者の例としては、コンピュータ１の本体がパーソナルコンピュータであり、このパーソナルコンピュータに、外部装置として位置検出器２０及びディスプレイ６０が接続される例が挙げられる。いずれの場合においても、コンピュータ１は、ＣＰＵ、通信回路、記憶装置などの通常のコンピュータが備える構成（図示せず）を備えている。記憶装置は、主メモリなどの主記憶装置と、ハードディスクなどの補助記憶装置とを含んで構成される。コンピュータ１の各機能は、ＣＰＵが記憶装置に記憶されるプログラムに従って動作することによって実現される。
【００３１】
位置検出器２０は、平板状のパネル面と、その直下に配置されたセンサとを有する装置であり、１以上の電子ペンＰとともに用いられる。図１には、電子ペンＰの例として、２つの電子ペンＰＡ，ＰＢを図示している。電子ペンＰＡ，ＰＢの符号の右下に付しているＡ，Ｂの下付き文字は複数の電子ペンを区別するための記号であり、本明細書においては、複数の電子ペンを特に区別する必要がない場合、単に電子ペンＰと表記する。電子ペンＰＡ，ＰＢは、一人のユーザにより交互に利用される場合もあれば、図１０や図１１を用いて後述するように複数のユーザにより同時に利用され、図１中でＷＡ及びＷＢで示す２つのストロークのように先後（上下）関係が部分的に入れ替わるストロークを出力する場合がある。
【００３２】
電子ペンＰはペン状の入力デバイスであり、通常、ユーザの手に保持された状態で使用される。ユーザは、電子ペンＰのペン先を位置検出器２０上で移動させることにより、文字や絵の入力を行う。図示していないが、電子ペンＰは、電子ペンＰごとにユニークなペン識別情報ＰＩＤ（入力デバイス識別情報）が予め格納される記憶装置と、電子ペンＰが位置検出器２０のパネル面を押す力、すなわち筆圧を検出する筆圧検出装置と、オン又はオフのいずれかの状態を取り得るサイドスイッチと、電子ペンＰから位置検出器２０に対して各種の信号を送信するための送信装置とを有して構成される。送信装置が送信する信号には、ペン識別情報ＰＩＤを表す信号、筆圧検出装置によって検出された筆圧を表す信号、サイドスイッチの状態を表す信号などが含まれる。送信装置は、これらの信号を一定の周期で送信するように構成される。
【００３３】
位置検出器２０は、パネル面内における各電子ペンＰの位置を検出する機能と、各電子ペンＰが送信した上記各情報を受信する機能とを有して構成される。位置の検出について具体的に説明すると、位置検出器２０を構成するセンサは、それぞれｘ方向（位置検出器２０の表面内の一方向）に延在する複数の線状導体と、それぞれｙ方向（位置検出器２０の表面内においてｘ方向と直交する方向）に延在する複数の線状導体とがそれぞれ等間隔で配置された構成を有している。位置検出器２０は、パネル面に電子ペンＰが近づいたことによって生ずるこれらの線状導体の電位の変化に基づき、パネル面内における電子ペンＰの位置を示すポイントデータＰＤを検出する。ポイントデータＰＤは、ｘ座標とｙ座標の組み合わせ（ｘ，ｙ）からなるデータである。この検出は、電子ペンＰの信号送信周期と同じ周期で行われる。位置検出器２０は、ＵＳＢやＩ２Ｃなどのインターフェイスによってデジタルインク生成装置３０と接続されており、このインターフェイスを介して、検出したポイントデータＰＤ及び受信した各種の情報を検出又は受信の都度、デジタルインク生成装置３０に出力するよう構成される。
【００３４】
デジタルインク生成装置３０は、位置検出器２０から供給されるポイントデータＰＤ及び各種の情報に基づき、インクファイル４０を生成する装置である。デジタルインク生成装置３０は、コンピュータ１のＣＰＵ上で実行される、アプリケーション１００により動的あるいは静的にリンクされるライブラリ、又は、アプリケーション１００から利用されるサービスとして実現される。インクファイル４０の詳細は後述するが、インクファイル４０には、電子ペンＰの移動軌跡を再現するための一連のポイントデータＰＤをそれぞれ含む１以上のストロークデータと、ストロークデータの生成に用いられた電子ペンＰのペン識別情報ＰＩＤに対応するメタデータ（後述する論理名ＬＮ）とが含まれる。メタデータはストロークデータごとに生成されるもので、対応するストロークデータと対応付けてインクファイル４０内に格納される。インクファイル４０はコンピュータ１の図示しない記憶装置に格納され、必要に応じて、各種のサーバへのアップロード、電子メールによる送信などの対象となる。
【００３５】
デジタルインク再生装置５０は、デジタルインク生成装置３０が生成したインクファイル４０を再生する装置である。デジタルインク再生装置５０は、実体的にはデジタルインク再生装置３０同様、コンピュータ１のＣＰＵ上で実行される、アプリケーション１００により動的あるいは静的にリンクされるライブラリ、又は、サービスとして実現される。具体的には、アプリケーション１００からの指示を受け、インクファイル４０から所望のストロークデータを選択的に取り出して復号化し、復号化されたストロークデータの描画処理を行うことにより、ディスプレイ６０に表示される映像信号や、ラスタデータである画像ファイル６１を生成するよう構成される。画像ファイル６１は、例えばＪＰＥＧやＰＮＧのファイルである。本実施の形態によるデジタルインク再生装置５０は特に、インクファイル４０内のメタデータを参照することにより、特定の電子ペンＰで生成されたストロークデータのみを抽出して復号化し、描画処理の対象とする機能を有している。この点については、後ほど別途詳しく説明する。
【００３６】
図２は、デジタルインク生成装置３０の機能ブロック図である。同図に示すように、デジタルインク生成装置３０は、機能的に、入力処理部３１、ストロークデータ生成部３２、メタデータ生成部３３、インクデータ保持部３４、及びインクファイル生成部３７を有して構成される。このうちインクファイル生成部３７は、内部構成として、複数のストロークデータ符号化部３５−１〜３５−ｎ及びメタデータ符号化部３６を有して構成される。
【００３７】
ここで、図２に示すアプリケーション１００は、コンピュータ１のＣＰＵ上で実行されるソフトウェアであり、インクファイル４０の生成及び再生にかかるコンピュータ１の動作を制御する役割を果たす。アプリケーション１００は、例えば、手書きノートアプリケーション、プレゼンテーションアプリケーション、ホワイトボード共有アプリケーションなど様々なアプリケーションが考えられる。アプリケーション１００は、デジタルインク生成装置３０及びデジタルインク再生装置５０（図１参照）との間で、コンピュータ１のメモリを介し後述するメタデータ情報Ｍ＿ｉｎｆやテーブルＭ＿Ｔｂｌなどの各種の情報を互いに供給可能に構成される。
【００３８】
入力処理部３１は、位置検出器２０から各種の情報（ポイントデータＰＤ、ペン識別情報ＰＩＤ、筆圧を示す情報、サイドスイッチの状態を示す情報など）が受信される都度、受信された情報に基づいてイベントデータを生成し、ストロークデータ生成部３２、メタデータ生成部３３、及びアプリケーション１００に分配供給する機能部である。入力処理部３１は、典型的には、コンピュータ１上で動作するオペレーティングシステムに組み込まれた位置検出器２０に対応するデバイスドライバとして実現される。入力処理部３１からストロークデータ生成部３２に供給されるデータには、ポイントデータＰＤが含まれる。また、メタデータ生成部３３に供給されるデータには、ペン識別情報ＰＩＤが含まれる。一方、アプリケーション１００には、ストロークデータＳＤの処理状況を示す情報Ｄ＿ｉｎｆの供給を行う。アプリケーション１００は、この情報Ｄ＿ｉｎｆに応じてデジタルインク生成装置３０の動作を制御するよう、構成される。
【００３９】
入力処理部３１によって生成されるイベントデータには、位置検出器２０から供給される情報の他、電子ペンＰの状態を示すイベントタイプ識別情報ＥＴＹＰＥ（図示せず）が含まれる。イベントタイプ識別情報ＥＴＹＰＥは、位置検出器２０から入力されたポイントデータＰＤにより示されるポイントが一連のストロークのうちどの部分かを識別するための情報であり、図２には示していないが、電子ペンＰがパネル面に接触したことを示すペンダウン状態Ｐｄｏｗｎ、電子ペンＰがパネル面内で移動したことを示すペンムーブト状態Ｐｍｖｄ、電子ペンＰがパネル面から離れたことを示すペンアップ状態Ｐｕｐなどの値を取る。
【００４０】
入力処理部３１は、位置検出器２０から受信される情報に基づき、電子ペンＰが位置検出器２０に接触（ペンダウン）したこと、及び、電子ペンＰが位置検出器２０から離れた（ペンアップした）ことを検出可能に構成される。入力処理部３１は、電子ペンＰが位置検出器２０に接触（ペンダウン）したことを検出すると、次に生成するイベントデータ内のイベントタイプ識別情報ＥＴＹＰＥの値をペンダウン状態Ｐｄｏｗｎとする。その後、電子ペンＰが位置検出器２０のパネル面に触れている間（すなわち、位置検出器２０から各種の情報が供給され続けている間）、入力処理部３１は、イベントデータ内のイベントタイプ識別情報ＥＴＹＰＥの値にペンムーブト状態Ｐｍｖｄを設定し続ける。最後に入力処理部３１は、電子ペンＰが位置検出器２０から離れた（ペンアップした）ことを検出すると、次に生成するイベントデータ内のイベントタイプ識別情報ＥＴＹＰＥの値をペンアップ状態Ｐｕｐとする。こうして入力処理部３１は、ペンダウン状態Ｐｄｏｗｎで始まり、ペンアップ状態Ｐｕｐで終わる一連のイベントデータを生成する。
【００４１】
ストロークデータ生成部３２は、入力処理部３１からポイントデータＰＤの供給を受け、１以上のポイントデータＰＤを包含するストロークデータＳＤを生成する機能部である。ストロークデータ生成部３２は、典型的には、コンピュータ１のＣＰＵで実行されるライブラリあるいはサービスと呼ばれるプログラムで実現される。ストロークデータ生成部３２は、入力処理部３１から供給されるイベントタイプ識別情報ＥＴＹＰＥの値を参照することにより、ペンダウン状態Ｐｄｏｗｎを示すイベントデータからペンアップ状態Ｐｕｐを示すイベントデータまでの間の各イベントデータに含まれる一連のポイントデータＰＤを包含する１つのストロークデータＳＤを生成する。
【００４２】
ここで、ストロークデータＳＤに包含されるポイントデータＰＤには、様々なタイプが存在する。ストロークデータ生成部３２は、入力処理部３１から供給されるポイントデータＰＤの値をそのままストロークデータＳＤに含めることとしてもよいし、重み付け平均あるいは指数平滑法等のスムージング処理や間引き処理、又は特許文献１記載のデジタルインクのように圧縮処理等を行うことによって間引かれたポイントデータＰＤの値をストロークデータＳＤに含めることとしてもよい。また、ベジエ曲線等補間曲線の曲線形状を決定する上で再現される軌跡上に存在しない外部の制御点の位置あるいは２次元ベクトルをポイントデータＰＤの値としてストロークデータＳＤに加えることとしてもよい。ストロークデータ生成部３２は、生成したストロークデータＳＤをインクデータ保持部３４に格納するよう構成される。
【００４３】
メタデータ生成部３３は、入力処理部３１から供給されるペン識別情報ＰＩＤに基づいて、メタデータである論理名ＬＮを生成する機能部である。メタデータ生成部３３も、典型的には、コンピュータ１のＣＰＵで実行されるライブラリあるいはサービスと呼ばれるプログラムで実現される。メタデータ生成部３３は、入力処理部３１から供給されるイベントデータにペンダウン状態Ｐｄｏｗｎを示すイベントタイプ識別情報ＥＴＹＰＥが含まれていた場合に、そのイベントデータに含まれるペン識別情報ＰＩＤに対応する論理名ＬＮを生成する。論理名ＬＮの具体的な内容は、後ほど説明する図８に示すように、文字列、ハッシュ値、ＵＲＮという３種類の形式の中からアプリケーション１００によって選択される一の形式によって記述されたものとなる。アプリケーション１００は、メタデータ生成部３３に対して、論理名ＬＮの出力形式を記述したメタデータ情報Ｍ＿ｉｎｆ、並びに、単一のフォーマットで記述された１以上の論理識別情報ＬＩＤと論理名ＬＮとの組を記述したテーブルＭ＿Ｔｂｌを供給することにより、論理名ＬＮの形式の選択、並びに、各々の論理識別情報ＬＩＤに対応する論理名ＬＮの指定を行う。メタデータ生成部３３は、生成した論理名ＬＮをインクデータ保持部３４に格納するよう構成される。
【００４４】
インクデータ保持部３４は、メタデータ生成部３３から供給される論理名ＬＮと、ストロークデータ生成部３２から供給されるストロークデータＳＤとを関連付けて記憶するよう構成される。具体的には、ある電子ペンＰがペンダウン状態Ｐｄｏｗｎとなったことに応じてメタデータ生成部３３から供給される論理名ＬＮと、その電子ペンＰが次にペンアップ状態Ｐｕｐとなったことに応じてストロークデータ生成部３２から供給されるストロークデータＳＤとを関連付けて記憶する。
【００４５】
インクファイル生成部３７は、インクデータ保持部３４に保持されるストロークデータＳＤ及び論理名ＬＮに基づき、インクファイル４０を生成する機能部である。インクファイル生成部３７により生成されるインクファイル４０は、後に説明する図１４に示されるように、ストロークデータＳＤを含むインクチャンクと、メタデータである論理名ＬＮを含むメタデータチャンクとを含んで構成される。
【００４６】
ストロークデータＳＤは、それぞれ互いに異なるフォーマット（データ構造、及び、符号化方式）に対応するストロークデータ符号化部３５−１〜３５−ｎの中からアプリケーション１００によって選択される一のフォーマットに対応するストロークデータ符号化部３５によって符号化された状態で、インクチャンク内に格納される。ストロークデータ符号化部３５−１〜３５−ｎが対応するストロークデータのフォーマットの例としては、ＩｎｋＭＬ、ＩＳＦなど非特許文献１~４に記載したフォーマットや、図１５、図１６を参照して説明する本発明に係るフォーマットなどが挙げられる。
【００４７】
アプリケーション１００は、インクファイル生成部３７に対してストロークのデータフォーマットを指定する情報であるストロークデータフォーマットＳ＿Ｆｍｔを供給することにより、ストロークデータ符号化部３５の選択を行う。ストロークデータフォーマットＳ＿Ｆｍｔの詳細については、後ほど図１５を参照しながら詳しく説明する。
【００４８】
一方、論理名ＬＮは、当該論理名ＬＮに１以上のストロークデータＳＤを対応付けるための記述を含むメタデータブロックの一部として、メタデータチャンクに格納される。メタデータブロックは、ＸＭＬフォーマットにより記述される。より特定的には、ＸＭＰ(Extensible Metadata Platform)形式のフォーマットにより記述される。記述されたメタデータブロックは、ＵＴＦ−８などの符号化方式により、メタデータ符号化部３６によって符号化（バイナリ化）されメタデータチャンク内に格納される。
【００４９】
図３及び図４は、インクファイル４０を生成する処理のメインルーチンを示す処理フロー図である。以下、デジタルインク生成装置３０が行う処理について、これらの図を参照しながら、再度より詳しく説明する。
【００５０】
この処理では、図３に示すように、まず初めに変数ｓｔｒｏｋｅ＿ｉｄに数値「１」が、変数ｕｏｒｄｅｒ及び変数ＣＳに数値「０」が、それぞれ設定される（ステップＳ１）。変数ｓｔｒｏｋｅ＿ｉｄは、ペン識別情報ＰＩＤによる区別なく、ストロークをユニークに識別するために付与される識別情報（ストローク識別子）である。また、変数ｕｏｒｄｅｒは、ストローク又はストロークの部分的なセグメントが生成された順序を記憶するために使用する変数（順序情報）であり、変数ＣＳは、あるストロークが入力されている間に位置検出器２０によって同時に検出されている電子ペンＰの本数を示す数字データである。
【００５１】
次に、入力処理部３１によって電子ペンＰの状態が検出される（ステップＳ２）。ステップＳ２において電子ペンＰがペンダウン状態Ｐｄｏｗｎとなったことが検出された場合、入力処理部３１は、位置検出器２０からペン識別情報ＰＩＤを取得し（ステップＳ１０）、メタデータ生成部３３に供給する。メタデータ生成部３３は、供給されたペン識別情報ＰＩＤに基づき、ｓｔｒｏｋｅ＿ｉｄ番目の論理名ＬＮの生成を行う（ステップＳ１１）。この論理名ＬＮの生成処理については、後ほど図５〜図８を参照しながら、より詳しく説明する。
【００５２】
次いで、入力処理部３１は、筆圧を示す情報を含む位置検出器２０からの入力情報に基づいて線幅などのスタイル情報を取得する（ステップＳ１２）とともに、位置検出器２０からポイントデータＰＤを取得する（ステップＳ１３）。ステップＳ１３で取得されるポイントデータＰＤは、１つのストロークの開始点を示す開始座標（ｘ０，ｙ０）となる。なお、ステップＳ１０，Ｓ１２，Ｓ１３における各種情報の取得の順序は、ここに記載したものに限られない。
【００５３】
次に、入力処理部３１は、ストローク識別子Ｓｔｒｏｋｅ＿ｉｄ（ＰＩＤ）に、その時点での変数ｓｔｒｏｋｅ＿ｉｄの値を設定する（ステップＳ１４）。ストローク識別子Ｓｔｒｏｋｅ＿ｉｄ（ＰＩＤ）は、変数ｓｔｒｏｋｅ＿ｉｄと同様に各々のストロークを識別するための情報であるが、ペン識別情報ＰＩＤによる区別を行うために、ペン識別情報ＰＩＤをインデックス（あるいはキー）とする連想配列の形式で保持される。この連想配列はステップＳ１０で取得したペン識別情報ＰＩＤにより示される電子ペンＰによってこれから生成されるストロークデータＳＤに付与されるべき変数ｓｔｒｏｋｅ＿ｉｄを一時的に保存するために使用される。このように各種の変数（ｓｔｒｏｋｅ＿ｉｄ，ｕｏｒｄｅｒ等）を通常の変数に加えて別に連想配列の形式でも保持するのは、複数の異なる電子ペンＰにより同時にストロークデータが入力されている間に、入力されている最中の複数のストロークにそれぞれ付与されたｓｔｒｏｋｅ＿ｉｄやｕｏｒｄｅｒの値をインデクス（あるいはキー）により区別して取り出し可能にするためである。
【００５４】
また、入力処理部３１は、順序情報Ｕｏｒｄｅｒ（ＰＩＤ）に、その時点での変数ｕｏｒｄｅｒの値を代入する（ステップＳ１５）。順序情報Ｕｏｒｄｅｒ（ＰＩＤ）も、ペン識別情報ＰＩＤをインデックスとする連想配列である。順序情報Ｕｏｒｄｅｒ（ＰＩＤ）は、複数の電子ペンＰのそれぞれについて検出される複数のポイントデータＰＤ間（あるいはポイントデータＰＤのセグメント間）の相対的な検出順（描画順）を表す情報であり、検出されたポイントデータＰＤと対応付けて記憶される（後述するステップＳ１６，Ｓ２４，Ｓ３４）。順序情報Ｕｏｒｄｅｒ（ＰＩＤ）の値は、後述するステップＳ２３，Ｓ３３で実行される順序確認処理によって更新される場合がある。順序確認処理の詳細については、後ほど図９〜図１１を参照しながら説明する。
【００５５】
次いで、デジタルインク生成装置３０は、ステップＳ１０で取得したペン識別情報ＰＩＤ、ステップＳ１３で取得したポイントデータＰＤ、及び、最新の順序情報Ｕｏｒｄｅｒ（ＰＩＤ）を対応付けて記憶する（ステップＳ１６）。この後、変数ｓｔｒｏｋｅ＿ｉｄ、変数ＣＳ、変数ｕｏｒｄｅｒがそれぞれ１ずつインクリメントされ（ステップＳ１７）、ステップＳ２に処理が戻される。
【００５６】
次に、ステップＳ２において電子ペンＰがペンムーブト状態Ｐｍｖｄであることを検出した入力処理部３１は、まず位置検出器２０からペン識別情報ＰＩＤ及びポイントデータＰＤを取得する（ステップＳ２０，Ｓ２１）。ステップＳ２１で取得されるポイントデータＰＤは、１つのストロークの途中点を示す移動座標（ｘ１，ｙ１）〜（ｘｎ−１，ｙｎ−１）となる。なお、ステップＳ２０，Ｓ２１における各種情報の取得の順序も、ここに記載したものに限られない。
【００５７】
次いで、入力処理部３１は、変数ＣＳが２以上となっているか否かを判定し（ステップＳ２２）、２以上であれば、順序確認処理を行う（ステップＳ２３）。続いて入力処理部３１は、ステップＳ２０で取得したペン識別情報ＰＩＤ、ステップＳ２１で取得したポイントデータＰＤ、及び、最新の順序情報Ｕｏｒｄｅｒ（ＰＩＤ）を対応付けて記憶する（ステップＳ２４）。この後、ステップＳ２に処理が戻される。
【００５８】
次に、ステップＳ２において電子ペンＰがペンアップ状態Ｐｕｐであることを検出した入力処理部３１は、まず位置検出器２０からペン識別情報ＰＩＤ及びポイントデータＰＤを取得する（ステップＳ３０，Ｓ３１）。ステップＳ３１で取得されるポイントデータＰＤは、１つのストロークの終了点を示す終了座標（ｘｎ，ｙｎ）となる。なお、ステップＳ３０，Ｓ３１における各種情報の取得の順序も、ここに記載したものに限られない。
【００５９】
次に、入力処理部３１は、同時に入力されているストロークが存在するか否かを判定するため、変数ＣＳが２以上となっているか否かを判定し（ステップＳ３２）、２以上であれば、ステップＳ２３と同様の順序確認処理を行う（ステップＳ３３）。続いて入力処理部３１は、ステップＳ３０で取得したペン識別情報ＰＩＤ、ステップＳ３１で取得したポイントデータＰＤ、及び、最新の順序情報Ｕｏｒｄｅｒ（ＰＩＤ）を対応付けて記憶する（ステップＳ３４）。この後、変数ＣＳの値が１デクリメントされる（ステップＳ３５）。
【００６０】
続いて、ストロークデータ生成部３２により、ステップＳ３０で取得したペン識別情報ＰＩＤに対応付けて記憶している一連のポイントデータＰＤ及び順序情報Ｕｏｒｄｅｒ（ＰＩＤ）に基づいて、Ｓｔｒｏｋｅ＿ｉｄ（ＰＩＤ）番目のストロークデータＳＤが生成される（ステップＳ３６）。なお、ストローク識別子Ｓｔｒｏｋｅ＿ｉｄ（ＰＩＤ）の値は、ステップＳ１４で設定されたものである。ここで生成されるストロークデータＳＤには、上記一連のポイントデータＰＤ及び順序情報Ｕｏｒｄｅｒ（ＰＩＤ）の他、Ｓｔｒｏｋｅ＿ｉｄ（ＰＩＤ）番目のストロークデータＳＤであることを示す情報、及び、ステップＳ１２で取得したスタイル情報が含まれる。ステップＳ３６で生成したストロークデータＳＤは、ステップＳ３０で取得したペン識別情報ＰＩＤに関してステップＳ１１で生成した論理名ＬＮと対応付けて、インクデータ保持部３４に保持される（ステップＳ３７）。
【００６１】
以上の処理が、アプリケーション１００から上述したストロークデータフォーマットＳ＿Ｆｍｔが供給されるまでの間、繰り返し実行される（ステップＳ３８の否定判定）。アプリケーション１００からストロークデータフォーマットＳ＿Ｆｍｔが供給されると、インクファイル生成部３７はインクファイル４０の出力が指示されたと判定し（ステップＳ３８の肯定判定）、ステップＳ４０に示すインクファイル生成処理を実行する。これにより、ここまでに生成された一連のストロークデータＳＤを含むインクファイル４０が生成される。インクファイル生成処理の詳細については、後ほど図１３〜図１９を参照しながら、詳しく説明する。
【００６２】
デジタルインク生成装置３０は、以上のようにして、インクファイル４０の生成を行う。以下、後ほど説明するとした各処理について、順次説明する。
【００６３】
初めに、論理名ＬＮの生成処理について、図５〜図８を参照しながら説明する。
【００６４】
図５は、図２に示した入力処理部３１及びメタデータ生成部３３の内部構成を示す図である。同図には、電子ペンＰ及び位置検出器２０の４つのタイプＴＹ１〜ＴＹ４も示している。このように、電子ペンＰ及び位置検出器２０にはいくつかのタイプ（デバイス種別）があるが、いずれのタイプでも、電子ペンＰのポイントデータＰＤは位置検出器２０によって検出され、入力処理部３１に供給される。
【００６５】
一方、ペン識別情報ＰＩＤなどの電子ペンＰが送信する各種の情報については、タイプＴＹ１，ＴＹ２では位置検出器２０が一旦受信して入力処理部３１に供給するが、タイプＴＹ３では電子ペンＰから入力処理部３１に直接送信される。タイプＴＹ３の電子ペンＰとして特許文献２記載の電子ペンのようなペンが挙げられる。電子ペンＰのポイントデータＰＤは静電容量式のタッチパネルである位置検出器２０よって検出され内部のインタフェースにより供給される一方で、筆圧などのポイントデータＰＤではないデータは、Ｂｌｕｅｔｏｏｔｈ（登録商標）等を利用した別の通信チャネルを経由して入力処理部３１に供給される。
【００６６】
タイプＴＹ４の電子ペンＰは、典型的には、静電容量方式のタッチパネルで用いられるタッチペンのような入力デバイスである。タイプＴＹ４の電子ペンＰは、位置入力を行うためのマウスデバイスのようなデバイスである場合もある。タイプＴＹ４の電子ペンＰは、ペン識別情報ＰＩＤを記憶しておらず、したがって、このタイプの電子ペンＰを用いる場合、入力処理部３１にペン識別情報ＰＩＤは供給されない。以下では、電子ペンＰ又は位置検出器２０の符号の末尾に（ＴＹｎ）と付記した場合、その電子ペンＰ又は位置検出器２０がタイプＴＹｎ（ｎは１〜４の整数）のものであることを示す。また、タイプＴＹ１〜ＴＹ３にかかるペン識別情報ＰＩＤをそれぞれペン識別情報ＰＩＤ１〜ＰＩＤ３と表記する。
【００６７】
入力処理部３１は、入出力インターフェイス（Ｉ／Ｏ）３１０と、ドライバ３１１〜３１５とを有して構成される。入出力インターフェイス３１０は、ＵＳＢやＩ２Ｃ、あるいはＢｌｕｅＴｏｏｔｈ（登録商標）などの通信規格に従って構成された通信回路であり、入力処理部３１が各タイプの位置検出器２０及びタイプＴＹ３の電子ペンＰ（ＴＹ３）との間で行う通信を実現する役割を果たす。
【００６８】
ドライバ３１１は、位置検出器２０（ＴＹ１）を制御・操作するためのソフトウェア（デバイスドライバ）である。ドライバ３１１は、位置検出器２０（ＴＹ１）からポイントデータＰＤ及びペン識別情報ＰＩＤ１を含む各種の情報を受信し、ポイントデータＰＤをストロークデータ生成部３２に、ペン識別情報ＰＩＤ１をメタデータ生成部３３にそれぞれ出力する機能を有する。
【００６９】
第１のペン識別情報ＰＩＤであるペン識別情報ＰＩＤ１は、非特許文献５記載のＵｎｉｑｕｅＩＤの例による情報である。ペン識別情報ＰＩＤ１は、ＫビットのＩＤ空間を利用するものであって、Ｋビット中にＫ１ビットの電子ペンＰごとに異なる番号情報を含むユニーク情報ＵＩＤと、Ｋ２ビットのペン先識別ビットとが混在するフォーマット（第１フォーマット）により記述されている。より具体的に説明すると、ペン識別情報ＰＩＤ１は、図７に示すように、タイプＴＹ１であることを含む電子ペンＰ（ＴＹ１）の各種の属性を示す１２ビットの属性情報ＣＳＲ＿ＴＹＰＥと、電子ペンＰ（ＴＹ１）のシリアル番号を示す３２ビットのシリアル番号情報ＣＳＲ＿ＰＨＹＳＩＤとからなるＫビット（４４ビット）によって構成される。属性情報ＣＳＲ＿ＴＹＰＥによって示される属性には、例えば、電子ペンＰ（ＴＹ１）のペン先の種類（ペン、エアブラシなど）や、電子ペンＰ（ＴＹ１）が有する複数のペン先を相互に区別するための情報などが含まれる。後者の属性は電子ペンＰ（ＴＹ１）が例えば両端にペン先を有する場合に必要となる属性であり、属性情報ＣＳＲ＿ＴＹＰＥ内の１以上のビット（Ｋ２ビット、例では２ビット）（以下、「ペン先識別ビット」と称する）により示される。このペン先識別ビットにより、入力処理部３１は、現在入力されているポイントデータＰＤの入力が、あるスタイラスのペンｔｉｐ側でなされているか、又は、同じスタイラスのペンｔａｉｌ側（典型的にはイレーサなどの機能が対応付けられる）であるかを識別することができる。シリアル番号情報ＣＳＲ＿ＰＨＹＳＩＤは、後述するペン識別情報ＰＩＤ２内のユニーク情報ＵＩＤなどとは異なり、それ自体では電子ペンＰごとに異なる情報とはなっておらず、属性情報ＣＳＲ＿ＴＹＰＥの一部（上記ペン先識別ビットを除く部分）と組み合わせることによって、電子ペンＰごとに異なる情報となる。
【００７０】
ドライバ３１２は、位置検出器２０（ＴＹ２）を制御・操作するためのソフトウェア（デバイスドライバ）である。ドライバ３１２は、位置検出器２０（ＴＹ２）からポイントデータＰＤ及びペン識別情報ＰＩＤ２を含む各種の情報を受信し、ポイントデータＰＤをストロークデータ生成部３２に、ペン識別情報ＰＩＤ２をメタデータ生成部３３にそれぞれ出力する機能を有する。
【００７１】
第２のペン識別情報ＰＩＤであるペン識別情報ＰＩＤ２は、ＬビットのＩＤ空間を利用するものであってＬ２ビット（１６ビット）のデバイス情報ＤＩＤと電子ペンの各々の筐体をユニークに識別するために設けられたＬ１ビット（３５ビット）のユニーク情報ＵＩＤとが単純に連結されるフォーマット（第２フォーマット）により記述されている。具体的には、図７に示すように、タイプＴＹ２であることを含む電子ペンＰ（ＴＹ２）の各種の属性を示す１６ビットのデバイス情報ＤＩＤと、電子ペンＰごとに異なる番号情報を含む３５ビットのユニーク情報ＵＩＤとによって構成される。デバイス情報ＤＩＤによって示される属性は、上述した属性情報ＣＳＲ＿ＴＹＰＥの場合と基本的に同様であるが、上述したペン先識別ビットを含まないこととしてもよい。
【００７２】
ドライバ３１３は、電子ペン（ＴＹ３）を制御・操作するためのソフトウェアである。ドライバ３１３は、電子ペン（ＴＹ３）からペン識別情報ＰＩＤ３を含む各種の情報を受信し、メタデータ生成部３３に出力する機能を有する。
【００７３】
第３のペン識別情報ＰＩＤであるペン識別情報ＰＩＤ３は、ＭビットのＩＤ空間を利用するものであってＭビット全部で電子ペンの各々の筐体を識別するフォーマット（第３フォーマット）により記述されている。具体的には、図７に示すように、電子ペンＰごとに異なる番号情報を含む４８ビットのユニーク情報ＵＩＤによって構成される。ＩＤ付与の体系としては、例えば、４８ビットのＢｌｕｅＴｏｔｈアドレスやＩＥＥＥ  ＥＵＩ−４８などのベンダＩＤを含むアドレスが利用される。ペン識別情報ＰＩＤ２のデバイス情報ＤＩＤに相当する情報は、ペン識別情報ＰＩＤ３には含まれない。
【００７４】
ドライバ３１４は、位置検出器２０（ＴＹ３）を制御・操作するためのソフトウェア（デバイスドライバ）である。ドライバ３１４は、位置検出器２０（ＴＹ３）からポイントデータＰＤを含む各種の情報を受信し、受信したポイントデータＰＤをストロークデータ生成部３２に出力する機能を有する。
【００７５】
ドライバ３１５は、位置検出器２０（ＴＹ４）を制御・操作するためのソフトウェア（センサドライバ）である。ドライバ３１５は、位置検出器２０（ＴＹ４）からポイントデータＰＤを含む各種の情報を受信し、受信したポイントデータＰＤをストロークデータ生成部３２に出力する機能を有する。
【００７６】
メタデータ生成部３３は、アドレス空間統合部３３０と、ＬＩＤ変換部３３１と、デバイスタイプ記録部３３２とを有して構成される。このうちアドレス空間統合部３３０は、内部構成として、ＵＩＤ抽出部３３００，３３０１と、Ｎビット空間マッピング処理部３３０２とを有して構成される。また、ＬＩＤ変換部３３１は、内部構成として、切替部３３１０、名前導出部３３１１、ハッシュ部３３１２、及びＵＲＮ化部３３１３を有して構成される。以下、図６の処理フロー図に沿ってメタデータ生成部３３の処理を説明しつつ、これらの各部の機能について説明する。
【００７７】
まず、メタデータ生成部３３は、デジタルインク生成装置３０に接続されている電子ペンＰ及び位置検出器２０のデバイス種別（上述したタイプＴＹ１〜ＴＹ４）を取得する（ステップＳ１１０）。そして、取得したデバイス種別に応じて特定されるペン識別情報ＰＩＤのフォーマットに応じた処理を行う（ステップＳ１１１の各選択肢）。以下、タイプごとに説明する。
【００７８】
まずデバイス種別がタイプＴＹ１であった場合、ペン識別情報ＰＩＤのフォーマットは第１フォーマットであると特定される。第１フォーマットは、Ｋビット中に電子ペンＰごとに異なる番号情報を含むユニーク情報ＵＩＤとペン先識別ビットとが混在するフォーマットであるため、ＵＩＤ抽出部３３００により、対応するドライバ３１１を通じて供給されるペン識別情報ＰＩＤ１から、電子ペンＰごとに異なる番号情報を含むユニーク情報ＵＩＤを抽出する処理を行う（ステップＳ１１１）。この抽出は具体的には、図７に示すように、属性情報ＣＳＲ＿ＴＹＰＥのうち上述したペン先識別ビットに相当する部分を「０」ビットによってマスクすることによって行う。ＵＩＤ抽出部３３００は、図５に示すように、抽出されたユニーク情報ＵＩＤをタイプＴＹ１に対応するユニーク情報ＵＩＤ１として、Ｎビット空間マッピング処理部３３０２に供給する。また、ＵＩＤ抽出部３３００は、マスクしたペン先識別ビットの内容を、デバイス情報ＤＩＤ１としてデバイスタイプ記録部３３２に供給する処理も行う。
【００７９】
次に、デバイス種別がタイプＴＹ２であった場合、ドライバより得られるペン識別情報ＰＩＤ２のフォーマットは、第２フォーマットである。第２フォーマットでは、Ｌ１ビットのデバイス情報ＤＩＤと電子ペンの各々の筐体をユニークに識別するために設けられたＬ２ビットのユニーク情報ＵＩＤとが連結されている。従って、ＵＩＤ抽出部３３０１により、対応するドライバ３１２を通じて供給されるペン識別情報ＰＩＤ２から、電子ペンＰごとに異なる番号情報を含むユニーク情報ＵＩＤを抽出する処理を行う（ステップＳ１１１）。この抽出は、図７に示すように、ペン識別情報ＰＩＤ２内のユニーク情報ＵＩＤを単純に取り出す処理である。ＵＩＤ抽出部３３０１は、図５に示すように、抽出されたユニーク情報ＵＩＤをタイプＴＹ２に対応するユニーク情報ＵＩＤ２として、Ｎビット空間マッピング処理部３３０２に供給する。また、ＵＩＤ抽出部３３０１は、ペン識別情報ＰＩＤ２に含まれるデバイス情報ＤＩＤを、デバイス情報ＤＩＤ２としてデバイスタイプ記録部３３２に供給する処理も行う。
【００８０】
次に、デバイス種別がタイプＴＹ３であった場合には、得られるペン識別情報ＰＩＤは第３フォーマットである。第３フォーマットは、ＭビットのＩＤ空間を利用するものであってＭビット全部で電子ペンの各々の筐体を識別するフォーマットにより記述されている。従って、ペン識別情報ＰＩＤ３の全体が、タイプＴＹ３に対応するユニーク情報ＵＩＤ３としてＮビット空間マッピング処理部３３０２に供給される（ステップＳ１１２）。
【００８１】
最後に、デバイス種別がタイプＴＹ４であった場合、得られるペン識別子が存在しない。得られるペン識別子が存在しない場合、Ｎビット空間マッピング処理部３３０２により、タイプＴＹ４に対応するユニーク情報ＵＩＤ４としてＮＵＬＬ（所定のダミーデータ）が設定される（ステップＳ１１３）。これは、ペン識別情報ＰＩＤを記憶していないタイプＴＹ４の電子ペンＰ（ＴＹ４）ついても他のタイプの電子ペンＰと同様に取り扱えるようにするための措置であり、ユニーク情報ＵＩＤ４は、電子ペンＰを一意に識別する機能を有しない。
【００８２】
ステップＳ１１１〜Ｓ１１４によりユニーク情報ＵＩＤを取得した後には、Ｎビット空間マッピング処理部３３０２により、ユニーク情報ＵＩＤをＮビット空間にマッピングする処理が行われる（ステップＳ１１５）。このマッピング処理の結果、論理識別情報ＬＩＤが得られる。以下、図７を参照しながら詳しく説明する。
【００８３】
マッピング対象となる空間のビット数は特に限定されないが、図７では６４ビットとしている。マッピング処理は、次の第１ステップと第２ステップを含む。
【００８４】
まず、第１ステップでは、ペン識別子のフォーマットによって異なるビット数のユニーク情報ＵＩＤ（第１フォーマットではＫ１（４２）ビット、第２フォーマットではＬ１（３５）ビット、第３フォーマットではＭ（４８）ビット、タイプＴＹ４のデバイスについては０ビット）のうち最長のビット数（４８ビット）以上の１つのビット数ＬＬＥＮ（例では５２ビット）が決定される。この決定は事前に１回実行されればよい。マスク処理あるいは分離処理により得られたユニーク情報ＵＩＤに対し、ビット数ＬＬＥＮになるように先頭に「０」であるパディングデータを付加することによって、各種フォーマットで得られたユニーク情報ＵＩＤをＬＬＥＮビット（５２ビット）の情報に統一する。
【００８５】
次に、第２ステップにおいて、ＬＬＥＮビットのユニーク情報の先頭に、デバイス種別あるいはフォーマット種別を示すためのＰＬＥＮビット（例では１２ビット）の情報を付加する。図７の例では、４種類のデバイス種別を示す情報に対して、タイプＴＹ１については「１」、タイプＴＹ１については「２」、タイプＴＹ３については「３」、タイプＴＹ４については「４」を１２ビットで設定している。尚、４つの情報を区別する場合は２ビットで足るが、１２ビットとしているのはＩＤ空間ビット数として６４ビットや１２８ビットなど２のべき乗に合わせるためである。
【００８６】
上記２つのステップを含むマッピング処理により、最終的に得られたＬＬＥＮビット（５２ビット）＋ＰＬＥＮビット（１２ビット）のＮビット（６４ビット）の情報が論理識別情報ＬＩＤとなる。タイプＴＹ１〜ＴＹ４のそれぞれについて得られた論理識別情報ＬＩＤは、それぞれ論理識別情報ＬＩＤ１〜ＬＩＤ４として、Ｎビット空間マッピング処理部３３０２からＬＩＤ変換部３３１内の切替部３３１０に供給される。
【００８７】
切替部３３１０は、アプリケーション１００（図２参照）から供給されるメタデータ情報Ｍ＿ｉｎｆに基づき、名前導出部３３１１、ハッシュ部３３１２、及びＵＲＮ化部３３１３のいずれかを選択する（ステップＳ１２０）。この選択は、ユーザあるいはアプリケーション１００の開発者のペン識別情報の公開に関する嗜好により事前に決定されるものである。そして、選択した機能部に対し、供給された論理識別情報ＬＩＤを出力するよう構成される。
【００８８】
名前導出部３３１１は、論理識別情報ＬＩＤを文字列に変換し、得た文字列を論理名ＬＮとして出力する機能部である（ステップＳ１２１，Ｓ１２２）。アプリケーション１００は、論理識別情報ＬＩＤと文字列とを対応付けるテーブルＭ＿Ｔｂｌを名前導出部３３１１に対して１つ供給する。ペン識別子のフォーマットとして、複数のフォーマットが混在する環境であったとしても、論理識別ＬＩＤは上述マッピング処理により単一の空間にマッピングされているため、アプリケーション１００から供給するテーブルとしては１つのテーブルを供給することで足りる。名前導出部３３１１は、論理識別情報ＬＩＤと文字列との組が列挙されたテーブルＭ＿Ｔｂｌを受け付け、切替部３３１０から供給された論理識別情報ＬＩＤに対応する文字列をこのテーブルＭ＿Ｔｂｌから読み出すことにより、上記の変換を行う。尚、アプリケーション１００側で名前導出部３３１１の変換を行う場合であっても、同様にアプリケーション１００は、単一のフォーマットで記述した論理識別情報ＬＩＤのみを処理するルーチンのみを実装すればよいことになる。
【００８９】
図８（ａ）は、名前導出部３３１１に供給されるテーブルＭ＿Ｔｂｌの例を示す図である。同図に示すように、この場合の論理名ＬＮを構成する文字列としては、ユーザ名を用いることができる。後にインクファイル４０を再生する際に、人名によるストロークデータＳＤのフィルタリングを行うことが可能になる。また、複数の電子ペンＰ（論理識別情報ＬＩＤ）に同一のユーザ名を対応付けることで、一人の人間が複数の電子ペンＰを使用して描いた複数のストロークデータＳＤを、１つのフィルタ条件によるフィルタリングでまとめて抽出することが可能になる。また、ペン識別情報がインクデータに含められ公開されることに抵抗を感じるユーザや、数値の羅列されたペン識別情報よりも、ペン識別情報を名前化した文字列を好むユーザの嗜好に対し、ペン識別情報とは異なる情報を出力することができる。
【００９０】
ハッシュ部３３１２は、図８（ｂ）に示すように、所定の一方向関数により論理識別情報ＬＩＤをハッシュ値に変換し、得たハッシュ値を論理名ＬＮとして出力する機能部である（ステップＳ１２３，Ｓ１２４）。この場合、インクファイル４０を再生する際にストロークデータＳＤのフィルタリングを行うためには、ハッシュ値によるフィルタ条件を指定することになる。こうすることで、論理識別情報ＬＩＤがユーザの目に触れなくなるため、ユーザに対して論理識別情報ＬＩＤを隠蔽することが可能になる。なお、ハッシュ部３３１２が用いる一方向関数としては、１つのハッシュ値に対して複数の論理識別情報ＬＩＤが対応する可能性（すなわち、いわゆる衝突が発生する可能性）を実用上ゼロにすることができるように設計されたものを用いることが好ましい。
【００９１】
ＵＲＮ化部３３１３は、図８（ｃ）にも示すように、所定のヘッダを付加することによって論理識別情報ＬＩＤをＵＲＮ(Uniform Resource Name)に変換し、得たＵＲＮを論理名ＬＮとして出力する機能部である（ステップＳ１２５，Ｓ１２６）。図８（ｃ）の例では、本発明の論理識別情報ＬＩＤの体系に適合した電子ペンＰであることを示す「ｕｒｎ：ｄｅｖ：ｗｃｍ：」というヘッダを付している。このようにすることにより、論理識別情報ＬＩＤによって識別されるべき電子ペンＰの範囲を限定することができ、本発明に係る論理識別情報ＬＩＤが付与されたインクデータであることを他の発明に係る論理識別情報が付与されたインクデータから区別可能になる。
【００９２】
デバイスタイプ記録部３３２は、アドレス空間統合部３３０から供給されるデバイス情報ＤＩＤに基づいてデバイス情報Ｄ＿ｄｓｃｒを生成し、外部に出力する機能を有する。このデバイス情報Ｄ＿ｄｓｃｒは、例えば論理名ＬＮに付加されることにより、後段の処理において論理名ＬＮの一部として取り扱うことができる。こうすることで、後述するインクファイル４０の再生の際、フィルタ情報の一部としてデバイス情報ＤＩＤを使用することが可能になる。
【００９３】
以上、論理名ＬＮの生成処理について説明した。次に、図３のステップＳ２３に示した順序確認処理について、図９〜図１１を参照しながら説明する。なお、ステップＳ３３で行われる順序確認処理も同様の処理である。
【００９４】
＜順序確認処理＞
以下では、図１０の例を参照しながら、順序確認処理を説明する。２つのストロークの先後関係は２つの図形オブジェクトのどちらを前景とするかどちらを背景と定めるかのように単純な話ではない。ストロークの重畳関係においては、２つのストロークが交差する図中破線枠ＩＳ１で示す交差する位置での重畳関係を調べる必要がある。図１０の例では、２種類の電子ペンＰＡ，ＰＢが同時に使用される。図１０（ｂ）に示すように、電子ペンＰＡの軌跡は座標Ａ１〜Ａ４によって表され、電子ペンＰＢの軌跡は座標Ｂ１〜Ｂ４によって表される。図１０（ａ）に示すように、電子ペンＰＡの軌跡と電子ペンＰＢの軌跡は交差しており、その交点では、電子ペンＰＡの軌跡が最前面に配置されている。このような配置は、電子ペンＰＡが交点を通過するタイミングが、電子ペンＰＢが交点を通過するタイミングに比べて後の時刻になった場合に発生する。
【００９５】
図３に示す処理フローにおいて、２本の電子ペンＰＡ，ＰＢがともにペンダウン状態Ｐｄｏｗｎになったとすると、何個のストロークが同時に開始されているかを示す変数ＣＳが２となる。すると、電子ペンＰＡ，ＰＢがともにペンムーブト状態Ｐｍｖｄを維持している間、ステップＳ２２の判定結果が肯定となるため、電子ペンＰＡ，ＰＢのそれぞれについてステップＳ２１で新たなポイントデータＰＤが取得される都度、ステップＳ２３の順序確認処理が行われることになる。
【００９６】
図９には、図３のステップＳ２１において電子ペンＰＡのｉ番目の座標Ａｉが取得された場合を示している（ステップＳ２３１）。この場合、入力処理部３１は、新たに取得された座標Ａｉと、電子ペンＰＡに関してひとつ前に取得されていた座標Ａｉ−１とを結ぶ線分によって示されるストロークセグメント（ストロークの一部分）が、現在同時に入力されている他のストロークについて既に入力されたストロークセグメントと交差するか否かを判定する（ステップＳ２３２）。この判定は、既存の全てのストロークと現在のストロークとが交差するかの判定ではなく、現在同時に入力されている他のストロークに限って行われる。図１０の例では、ｉ＝２，４の場合には判定結果が否定となる一方、ｉ＝３の場合には、座標Ｂ２と座標Ｂ３を結ぶ線分によって示されるストロークセグメントが既に存在し、このストロークセグメントと座標Ａ３と座標Ａ２を結ぶ線分によって示されるストロークセグメントとが交差しているため、判定結果は肯定となる。
【００９７】
ステップＳ２３２で否定判定が得られた場合には、順序確認処理が終了する。一方、ステップＳ２３２で肯定判定が得られた場合には、変数ｕｏｒｄｅｒが１インクリメントされ（ステップＳ２３３）、さらに、新たな変数ｕｏｒｄｅｒにより順序情報Ｕｏｒｄｅｒ（ＰＩＤ）が更新される（ステップＳ２３４）。この場合のペン識別情報ＰＩＤは、電子ペンＰＡのペン識別情報ＰＩＤである。
【００９８】
図１０（ｃ）は、以上の順序確認処理の結果、図３のステップＳ２４で各座標に対応付けられる順序情報Ｕｏｒｄｅｒ（ＰＩＤ）の値を示している。図３のステップＳ１５の処理により、同図に示すように、座標Ａ１には「０」である順序情報Ｕｏｒｄｅｒ（ＰＩＤ）が対応付けられ、座標Ｂ１には「１」である順序情報Ｕｏｒｄｅｒ（ＰＩＤ）が対応付けられる。その後、電子ペンＰＢの軌跡を示す座標Ｂ１〜Ｂ４については、いずれも「１」である変数ｕｏｒｄｅｒ｛ＰＩＤ）が対応付けられる。これに対し、電子ペンＰＡの軌跡については、座標Ａ３に至った時点以降、「２」である順序情報Ｕｏｒｄｅｒ（ＰＩＤ）が対応付けられることになる。これにより、座標Ａ１，Ａ２、座標Ｂ１〜Ｂ４、座標Ａ３，Ａ４の順で描画されたことが整数値により保存されることになる。
【００９９】
なお、こうして保存される描画順に描画すると、必ずしも入力された時刻順を反映しない場合がある。例えば、本実施の形態による順序確認処理では、座標Ｂ４と座標Ａ４のいずれが先に描画されたかについては検出されない。
【０１００】
これに対し、例えば各座標に対応付けて、その座標に電子ペンＰが到達した時刻（絶対時刻、又は、描画開始からの相対時刻）を示す情報を記憶することも可能である。この方法によれば、すべての座標間の先後関係を確実に保存することが可能になり、かつ、描画処理をアニメーションのように画面上で再現することも可能になる。尚、ストロークデータＳＤの先後関係をできる限り少ないデータ量で、適切に復元するという観点からは、上記のようにして順序情報Ｕｏｒｄｅｒ（ＰＩＤ）を保存すれば十分である。これらはアプリケーション１００の指定によって選択することも可能である。
【０１０１】
図１１に示す他の例を参照しながら、再度、順序確認処理について説明する。この例は、２以上のストロークが同時に生成され、図中破線枠ＩＳ２、ＩＳ３で示す位置において、先後（上下）関係を入れ替えながら複数回交差する、複雑な例を示している。
【０１０２】
この例において同時に使用される電子ペンＰは、図１０の例と同じく、電子ペンＰＡ，ＰＢの２本である。図１１（ｂ）に示すように、電子ペンＰＡの軌跡は座標Ａ１〜Ａ９によって表され、電子ペンＰＢの軌跡は座標Ｂ１〜Ｂ５によって表される。図１１（ａ）に示すように、電子ペンＰＡの軌跡と電子ペンＰＢの軌跡は、２箇所で交差している。１つ目は、座標Ａ２と座標Ａ３を結ぶ線分によって示されるストロークセグメントと、座標Ｂ２と座標Ｂ３を結ぶ線分によって示されるストロークセグメントとによって実現される交差であり、２つ目は、座標Ａ７と座標Ａ８を結ぶ線分によって示されるストロークセグメントと、座標Ｂ４と座標Ｂ５を結ぶ線分によって示されるストロークセグメントとによって実現される交差である。前者では電子ペンＰＡの軌跡が最前面に配置され、後者では電子ペンＰＢの軌跡が最前面に配置されている。
【０１０３】
図１０の例と同様、座標Ａ１には「０」である順序情報Ｕｏｒｄｅｒ（ＰＩＤ）が対応付けられ、座標Ｂ１には「１」である順序情報Ｕｏｒｄｅｒ（ＰＩＤ）が対応付けられる。その後、電子ペンＰＢについては座標Ｂ４まで、「１」である順序情報Ｕｏｒｄｅｒ（ＰＩＤ）が対応付けられ続ける。これは、座標Ｂ４までの描画が行われる間に、電子ペンＰＢのストロークセグメントが他の既存のストロークセグメントと交差する状態が発生しないからである。
【０１０４】
一方、電子ペンＰＡの軌跡については、座標Ａ３に至った時点以降、「２」である順序情報Ｕｏｒｄｅｒ（ＰＩＤ）が対応付けられることになる。これは、座標Ａ２と座標Ａ３を結ぶ線分によって示されるストロークセグメントが描画された時点で、その直下に、座標Ｂ２と座標Ｂ３を結ぶ線分によって示されるストロークセグメントが存在しているからである。その後、電子ペンＰＡの軌跡を示す座標Ａ３〜Ａ９については、いずれも「２」である順序情報Ｕｏｒｄｅｒ（ＰＩＤ）が対応付けられることになる。
【０１０５】
電子ペンＰＢの座標Ｂ５については、「３」である順序情報Ｕｏｒｄｅｒ（ＰＩＤ）が対応付けられる。これは、座標Ｂ４と座標Ｂ５を結ぶ線分によって示されるストロークセグメントが描画された時点で、その直下に、座標Ａ７と座標Ａ８を結ぶ線分によって示されるストロークセグメントが存在しているからである。
【０１０６】
以上の処理により、図１１（ｃ）に示すように、座標Ａ１，Ａ２、座標Ｂ１〜Ｂ４、座標Ａ３〜Ａ９、座標Ｂ５の順で描画されたことが保存される。
【０１０７】
上記のようにして保存される先後関係は、描画処理の重畳関係（どちらが上でどちらが下のレイヤで表示されるか）が発生する場合に限って、セグメント単位での重畳関係を表現するように簡易化されている。出力されたＵｏｒｄｅｒ（ＰＩＤ）は、多くの場合でストローク単位に与えられ、２つのストロークが同時発生した場合であってセグメント間が交差する稀な場合に限って順序情報が付加される。また、その値は交差した場合に限りインクリメントされる値をとるため、ポイントデータＰＤの符号化同様に差分符号を行うことでデータ量を小さくすることができる。
【０１０８】
図１２（ａ）は、図１１に示したストロークデータを含む１つのインクファイル内に格納される一連の情報を例示する図である。また、図１２（ｂ）は、（ａ）に示した一連の情報を順序情報Ｕｏｒｄｅｒ（ＰＩＤ）によりソートしたものである。
【０１０９】
図１２（ｂ）に示すように、１つのインクファイル内には、順序情報Ｕｏｒｄｅｒ（ＰＩＤ）ごとに、ストローク識別子Ｓｔｒｏｋｅ＿ｉｄ（ＰＩＤ）、順序情報の保存単位、一連のポイントデータＰＤ、及び論理名ＬＮ（入力デバイスを識別するための情報）が対応付けて格納される。なお、詳しくは後述するが、このうち論理名ＬＮとストローク識別子Ｓｔｒｏｋｅ＿ｉｄ（ＰＩＤ）の対応付けはメタデータブロック内に格納されるもので、その他の情報はストロークデータとしてインクファイル内に格納される。また、図１２（ａ）（ｂ）において黒太枠で囲った部分は、図１１に示したストロークデータに対応する部分である。ここで、図１１（ｃ）ではＵｏｒｄｅｒ（ＰＩＤ）として「０」〜「３」の数字を利用していたが、図１２では、前後に他のストロークデータが存在することを示すため、それぞれ「１００」〜「１０３」としている。
【０１１０】
図１２において順序情報の保存単位が「ストローク」となっているレコードは、ユーザによって１回分のストロークが実行される間に順序情報Ｕｏｒｄｅｒ（ＰＩＤ）の変更がなかったストロークデータを示している。一方、順序情報の保存単位が「ストロークセグメント」となっているレコードは、ユーザによって１回分のストロークが実行される間に順序情報Ｕｏｒｄｅｒ（ＰＩＤ）の変更があったストロークデータを示している。後者の場合、図１２に示すように、順序情報Ｕｏｒｄｅｒ（ＰＩＤ）が変更になる前の一連のポイントデータＰＤと後の一連のポイントデータＰＤとが、インクファイル内に別レコードとして格納される。
【０１１１】
以上、順序確認処理について説明した。次に、図４のステップＳ４０に示したインクファイル生成処理について、図１３〜図１９を参照しながら説明する。
【０１１２】
＜インクファイル生成処理＞
図１３は、図２に示したインクファイル生成部３７が行うインクファイル生成処理の処理フロー図である。本発明では、インクファイル４０は例えばＲＩＦＦ(Resource Interchange File Format)などの汎用メタファイル形式によって生成される。また、以下の例では、ストロークデータＳＤは、ポイントデータＰＤに差分符号化を行う第１の符号化方式によって符号化され、上述したメタデータブロックは、ＵＴＦ−８などメタデータチャンクに含まれたＸＭＬフォーマットが指定する文字列（文字）の符号化方式によって符号化される。
【０１１３】
図１３に示すように、インクファイル生成部３７はまず、空のインクファイル４０を生成する（ステップＳ４０１）。
【０１１４】
図１４は、ＲＩＦＦによって生成されるインクファイル４０の構造を示している。同図に示すように、ＲＩＦＦによるインクファイル４０は、先頭から末尾にかけて、それぞれ４バイトの整数倍のサイズを有する領域Ａ１〜Ａ９が順に並べられた構造を有している。
【０１１５】
領域Ａ１〜Ａ９に格納されるデータの具体的な内容は次のとおりである。すなわち、まず領域Ａ１には、このインクファイル４０がＲＩＦＦによって生成されたものであることを示す「Ｒ」「Ｉ」「Ｆ」「Ｆ」の４文字が配置される。また、領域Ａ２には、このインクファイル４０のサイズを示す数値が配置される。領域Ａ１，Ａ２のサイズはそれぞれ４バイトである。領域Ａ２内に配置されるファイルサイズは、インクファイル４０の再生装置（例えば、図１に示したデジタルインク再生装置５０）がインクファイル４０の終端位置を把握するために利用される。
【０１１６】
領域Ａ３には、領域Ａ４〜Ａ９に格納されているインクデータの全体が、本発明のインクデータ出力方法によって記述されたものであることを示す４文字（例えば「Ｗ」「Ｉ」「Ｌ」「Ｌ」）の４文字が配置される。領域Ａ３のサイズも４バイトである。領域Ａ４〜Ａ９内のデータを例えばＩｎｋＭＬなどの他の形式で記述する際には、領域Ａ３の格納内容は当然、上記とは異なるものとなる。
【０１１７】
領域Ａ４には、領域Ａ５，Ａ６に格納されているデータが図１５、図１６で説明するストロークデータフォーマットで生成されたインクチャンクに関するものであることを示す文字列（例えば「Ｉ」「Ｎ」「Ｋ」「１」）の４文字が配置される。領域Ａ４のサイズも４バイトである。
【０１１８】
領域Ａ５には、領域Ａ６のサイズを示すデータであるインクチャンクサイズが格納される。領域Ａ５のサイズも４バイトである。このインクチャンクサイズは、インクファイル４０の再生装置（例えば、図１に示したデジタルインク再生装置５０）が領域Ａ６の終端位置を把握するために利用される。
【０１１９】
領域Ａ６には、１以上のストロークデータＳＤを含むインクチャンクが格納される。領域Ａ９のサイズは、４バイトの整数倍である。インクチャンクのデータ量がちょうど４バイトの整数倍でない場合には、末尾に所定のパディングデータが挿入される。領域Ａ６の具体的な格納内容については、後ほど図１５〜図１７を参照しながら詳しく説明する。
【０１２０】
領域Ａ７には、領域Ａ８，Ａ９に格納されているデータがＸＭＬ形式のうち特にＸＭＰ形式で記述されたものであることを示す「Ｘ」「Ｍ」「Ｐ」「−」の４文字が配置される。領域Ａ７のサイズも４バイトであり、「−」は、領域Ａ７のサイズを４バイトにするためのパディングデータである。
【０１２１】
領域Ａ８には、領域Ａ９のサイズを示すデータであるメタデータチャンクサイズが格納される。領域Ａ８のサイズも４バイトである。このメタデータチャンクサイズは、インクファイル４０の再生装置（例えば、図１に示したデジタルインク再生装置５０）が領域Ａ９の終端位置を把握するために利用される。
【０１２２】
領域Ａ９には、上述したメタデータブロックを含むメタデータチャンクが格納される。領域Ａ９のサイズは、４バイトの整数倍である。メタデータチャンクのデータ量がちょうど４バイトの整数倍でない場合には、末尾に所定のパディングデータが挿入される。領域Ａ９の具体的な格納内容については、後ほど図１８及び図１９を参照しながら詳しく説明する。
【０１２３】
図１３に戻る。インクファイル生成部３７は、ステップＳ４０１で空のインクファイル４０を生成した後、本発明に係るインクデータ出力方法が実行されたことを示す４文字「Ｗ」「Ｉ」「Ｌ」「Ｌ」を含めるとともに、図２に示すように、供給されたストロークデータフォーマットＳ＿Ｆｍｔのタイプを識別するための４文字「Ｉ」「Ｎ」「Ｋ」「１」をＡＳＣＩＩ符号により含める（ステップＳ４０２）。
【０１２４】
図１５（ａ）は、ストロークデータフォーマットＳ＿Ｆｍｔの値として「Ｉ」「Ｎ」「Ｋ」「１」により識別される第１のフォーマット（符号化方法）の一例を示す図である。この例によるストロークデータフォーマットＳ＿Ｆｍｔは、ドキュメント(Document)、スタイル(Style)、ストローク(Stroke)の３つのメッセージオブジェクトを有して構成される。ドキュメントであるメッセージオブジェクトは１つのインクチャンクを表しており、ビューボックス(viewBox)、整数化精度情報(decimalPrecision)、スタイル(Styles)、ストローク(Strokes)の各属性と、それぞれのキーを表す数字（「１」〜「４」）を含んで構成される。スタイルであるメッセージオブジェクトは、ドキュメントであるメッセージオブジェクト内のスタイル属性の具体的な内容を表しており、ここでは線幅(strokeWidth)属性と、そのキーを表す数字を含んで構成される。ストロークであるメッセージオブジェクトは、ドキュメントであるメッセージオブジェクト内のストローク属性の具体的な内容を表しており、ポイントデータＰＤに対応するポイント(point)、ストロークをユニーク識別するためのストローク識別情報(stroke_id)の各属性と、それぞれのキーを表す数字を含んで構成される。なお、これらの属性のうち「repeated」と付記されているものは、同じ属性を複数個含んでよいことを示している。
【０１２５】
図１５（ｂ）は、各属性の具体的な表現形式を示す図である。同図に示すように、各属性は、キーを表す８ビットのビット列と、値を表す可変長（ただし、８ビットの整数倍）のビット列とによって表される。キーを表すビット列は、キー（この例では「１」）を表す５ビットのビット列ａと、データタイプを示す３ビットのビット列ｂとにより構成される。値を表すビット列は、値を表現するために必要な数の可変長バイト数で示される。整数型の場合、値の絶対値が大きい程大きなバイト数が必要となる符号化方法が利用される。値を表すビット列は、格納すべきビット列を先頭から順に７ビットずつのビット列に分解し、これらの順番を入れ替えて後ろ側から順に並べてなるビット列ｃによって構成される。なお、７ビットずつのビット列それぞれの先頭には、ビット列ｃの終了を示すためのビットｃ１が付加される。ビットｃ１は、「０」である場合にビット列ｃの終了を示す。
【０１２６】
ストローク属性のように階層構造を有する属性については、図１５（ｃ）に示すように、値の中にキー（ｋ）と値（Ｖ）の対が複数個配置される、という構造により記述される。例えば図１５（ｃ）の例では、キーが「４」であるストローク属性の値に、複数のポイント属性（キー＝「１」）と、１つのストローク識別情報属性（キー＝「２」）とが含まれている。
【０１２７】
図１３に戻る。インクファイル生成部３７は、図１４のＡ４の部分にストロークデータフォーマットＳ＿Ｆｍｔを識別する文字列をＡＳＣＩＩ符号により含めた後、このストロークデータフォーマットＳ＿Ｆｍｔに従う符号化方式（第１のフォーマット）により、インクデータ保持部３４に蓄積されている一連のストロークデータＳＤを符号化する処理を行う（ステップＳ４０３，Ｓ４０４）。図３及び図４に示した処理フローから明らかなように、インクデータ保持部３４内には、１番目からｓｔｒｏｋｅ＿ｉｄ−１番目までのストロークデータＳＤが格納されている。インクファイル生成部３７は、これらのストロークデータＳＤを、ストロークデータフォーマットＳ＿Ｆｍｔに従って順次符号化する。
【０１２８】
第１のフォーマットによるストロークデータＳＤの符号化について、より詳しく説明する。図１６は、図１３のステップＳ４０４に示したストロークデータ符号化処理の処理フロー図である。同図に示すように、ストロークデータ符号化処理を行うインクファイル生成部３７は、まず初めに、図２に示したアプリケーション１００からビューボックス属性の値を取得し、ビューボックス属性のキー（１）とともに、図１５（ｂ）に示した形式で符号化する（ステップＳ４０４１）。続いて、インクファイル生成部３７は、アプリケーション１００から整数化精度情報属性の値を取得し、整数化精度情報属性のキー（２）とともに、図１５（ｂ）に示した形式で符号化する（ステップＳ４０４２）。
【０１２９】
次に、インクファイル生成部３７は、スタイル属性のキー（３）と値を符号化する（ステップＳ４０４３）。ここで、スタイル属性は、ストロークデータフォーマットＳ＿Ｆｍｔ内の記述（図１５（ａ）参照）から理解されるように、階層構造を有している。したがって、スタイル属性の値には、図１５（ｃ）に示した例と同様、下層に位置する線幅属性のキー（１）と値が格納される。線幅属性の値としては、図３のステップＳ１２において入力処理部３１が取得したスタイル情報が使用される。
【０１３０】
続いて、インクファイル生成部３７は、ストローク属性のキー（４）を符号化した後（ステップＳ４０４４）、ストローク属性の値の符号化を実施する（ステップＳ４０４５〜Ｓ４０５２）。具体的に説明すると、まずストロークデータＳＤ内に含まれる一例の座標のそれぞれに関して、ポイント属性のキー（１）を符号化し（ステップＳ４０４５）、次いで、ポイント属性の値の符号化を行う（ステップＳ４０４６〜Ｓ４０４８）。ポイント属性の値は、ポイントデータＰＤ及び順序情報Ｕｏｒｄｅｒ（ＰＩＤ）の組み合わせによって構成される。
【０１３１】
ポイント属性の値の符号化は、具体的には次のようにして実行される。すなわち、まず、ステップＳ４０４２で取得した整数化精度情報属性の値を用いる次の式（１）によって、ｘ座標及びｙ座標のそれぞれを整数値に変換する（ステップＳ４０４６）。なお、式（１）中のｘｆｌｏａｔ，ｙｆｌｏａｔはそれぞれ、浮動小数点数型である変換前のｘ座標及びｙ座標を示し、ｘｉｎｔ，ｙｉｎｔはそれぞれ、整数型である変換後のｘ座標及びｙ座標を示し、ｄｅｃｉｍａｌＰｒｅｃｉｓｉｏｎは、整数化精度情報属性の値を示している。また、右辺の先頭にある（ｉｎｔ）の表記は、整数部のみを取り出す関数を表している。
【０１３２】
【数１】
2020035452.tif 000003
【０１３３】
続いて、ｘ座標及びｙ座標のそれぞれの差分値を導出する（ステップＳ４０４７）。この差分値の導出は、次の式（２）及び式（３）に示すように、０番目の座標についてはその座標の値を差分値として出力し、ｉ番目の座標については、１つ前に位置するｉ−１番目の座標からｉ番目の座標の値を減じてなる値を差分値として出力することによって行う。なお、式（２）及び式（３）中のｘｄｉｆｆ，ｙｄｉｆｆは、ｘ座標及びｙ座標のそれぞれについて導出される差分値を示している。このように整数値化したうえで差分値を求めて符号化するのは、図１５（ｂ）で説明した可変バイト符号など可変長符号化方法をもちいることにより、ある符号（例えば０）の発生確率に偏りをもたせたエントロピー符号化を行うことでストロークデータＳＤのデータ量を削減するためである。
【０１３４】
【数２】
2020035452.tif 000004
【０１３５】
差分値の導出が完了したら、インクファイル生成部３７は、導出した差分値及び順序情報Ｕｏｒｄｅｒ（ＰＩＤ）の符号化を行う（ステップＳ４０４８）。この符号化の詳細は、図１５（ｂ）（ｃ）を参照して説明したとおりである。
【０１３６】
インクファイル生成部３７は、ステップＳ４０４５〜Ｓ４０４８の処理を、ストロークデータＳＤ内の全ポイントデータＰＤについて繰り返す（ステップＳ４０５０）。そして、全ポイントデータＰＤについて処理が完了した後、ストローク識別情報属性のキー（２）を符号化し（ステップＳ４０５１）、さらに、ストローク識別情報属性の値として、を符号化する（ステップＳ４０５２）。これにより、ストローク識別情報属性の値は、インクファイル４０内においてストロークデータＳＤを一意に識別する情報となる。以上の処理により、ストローク属性のキーと値の符号化が完了する。その後、インクファイル生成部３７は、符号化した一連のデータを出力する（ステップＳ４０５３）。
【０１３７】
図１３に戻る。すべてのストロークデータＳＤの符号化が完了した後、インクファイル生成部３７は、ステップＳ４０２，Ｓ４０４での符号化処理によって得られた一連のデータをインクファイル４０の領域Ａ６（図１４参照）内に書き込む（ステップＳ４０５）。これにより、インクチャンクの生成が完了する。
【０１３８】
ここで、図１５及び図１６で説明した第１のフォーマット（第１の符号化方法）と異なるフォーマット（符号化方法）の例として、図１７に、ＩｎｋＭＬ形式を用いた場合のストロークデータＳＤを示す。この場合、図１４に示した領域Ａ４には、例えば「Ｉ」「Ｎ」「Ｋ」「２」のように、第１のフォーマットを利用する場合とは異なる文字列が格納される。ＩｎｋＭＬ形式のストロークデータＳＤは、ＸＭＬ形式で記述され、図１７に示すように、ｔｒａｃｅタグ内に一連のポイントデータＰＤを順に配置することによって記述される。なお、ｔｒａｃｅタグ内の各ポイントデータＰＤはカンマ（，）によって区切られており、各ポイントデータＰＤは、Ｘ座標、Ｙ座標、スタイル情報（この例では筆圧情報）、及び順序情報Ｕｏｒｄｅｒ（ＰＩＤ）がスペースで区切られた形式で記述される。ただし、図１７の例では、順序情報Ｕｏｒｄｅｒ（ＰＩＤ）については図示していない。図１７には、それぞれのストローク識別情報属性が「ｓｄ０」〜「ｓｄ４」である５つのストロークデータＳＤ０〜ＳＤ４を示している。ＩｎｋＭＬ形式のストロークデータＳＤは、ＸＭＬを構成する文字がＵＴＦ−８等の符号化処理によって符号化された状態で、インクファイル４０の領域Ａ６内に格納される。
【０１３９】
図１３に戻る。インクチャンクの生成が完了した後、インクファイル生成部３７は、論理名ＬＮによってストロークデータＳＤをグループ化する処理を行う（ステップＳ４０６）。なお、このグループ化処理は、メタデータチャンクのデータ量を削減するために行うものである。
【０１４０】
＜グループ化処理＞
図１８は、図１３のステップＳ４０６に示したストロークデータグループ化処理の処理フロー図である。この処理は、同図に示すように、インクデータ保持部３４に蓄積されている１番目からｓｔｒｏｋｅ＿ｉｄ−１番目までの論理名ＬＮのそれぞれについて、順次行われる（ステップＳ４０６１）。具体的に説明すると、インクファイル生成部３７はまず、インクデータ保持部３４からｉ番目の論理名ＬＮを取得し（ステップＳ４０６２）、その論理名ＬＮにグループを割り当て済みか否かを判定する（ステップＳ４０６３）。割り当て済みでなければ（ステップＳ４０６３の否定判定）、インクファイル生成部３７は新たなグループを生成し、ステップＳ４０６２で取得した論理名ＬＮに割り当てる（ステップＳ４０６４）。ステップＳ４０６３で割り当て済みと判定した場合、及び、ステップＳ４０６４の処理が終了した場合には、ステップＳ４０６２で取得した論理名ＬＮに割り当てられたグループに、インクデータ保持部３４に保持されるｉ番目のストロークデータＳＤを関連付ける（ステップＳ４０６５）。以上の処理をｓｔｒｏｋｅ＿ｉｄ−１番目の論理名ＬＮまで終了した後には、各ストロークデータＳＤがいずれかのグループに関連付けられた状態となる。
【０１４１】
図１３に戻る。ストロークデータグループ化処理が終了した後、インクファイル生成部３７は、ステップＳ４０６で生成した各グループについて、論理名ＬＮに１又は複数のストロークデータＳＤを対応付けるメタデータブロックの生成を行う（ステップＳ４０７，Ｓ４０８）。
【０１４２】
図１９は、メタデータチャンクの一例を示す図である。このメタデータチャンクはＸＭＬ形式を応用したＸＭＰ形式によって記述されたものである。同図に示すように、２つのメタデータブロックＢ１，Ｂ２を含んで構成される。図１３のステップＳ４０８では、グループごとに、このようなメタデータブロックの生成が行われる。
【０１４３】
＜メタデータブロックの生成＞
メタデータブロックは、ストロークデータ生成部３２が生成したＭ個（Ｍは１以上の整数）のストロークデータを、メタデータ生成部３３が生成した電子ペンなどの入力デバイスを特定するＮ種類（Ｎは１以上Ｍ以下の整数）のメタデータにＮ：Ｍで対応付けるために、ストロークデータチャンクとは別のメタデータチャンクに保持される情報である。
【０１４４】
図１９に示す、メタデータブロックＢ１内の記述Ｂ１ａは、対応する論理名ＬＮ（ここでは「Ｄａｖｉｄ  Ｓｍｉｔｈ」）を示している。また、メタデータブロックＢ１内の記述Ｂ１ｂは、論理名ＬＮ「Ｄａｖｉｄ  Ｓｍｉｔｈ」に対応する１以上のストロークデータＳＤのそれぞれに割り当てられたストローク識別情報属性の値（ここでは１番目〜５番目）を示している。この例では、２種類（Ｎ＝２）のメタデータが存在する。また、これらの記述Ｂ１ａ，Ｂ１ｂにより、メタデータブロックＢ１は、電子ペンＰＡ（第１の入力デバイス）を特定する論理名ＬＮ（第１のメタデータ）を、電子ペンＰＡによって生成された１以上のストロークデータＳＤ（第１のストロークデータ）をグループ化してなる第１のグループ（記述Ｂ１ｂ内に記述されるストローク識別情報属性の値によって特定されるグループ）に対応付ける情報として機能する。
【０１４５】
同様に、メタデータブロックＢ２内の記述Ｂ２ａは、対応する論理名ＬＮ（ここでは「Ｇｒｅｇ  Ｎｅｌｓｏｎ」）を示しており、メタデータブロックＢ２内の記述Ｂ２ｂは、論理名ＬＮ「Ｇｒｅｇ  Ｎｅｌｓｏｎ」に対応する１以上のストロークデータＳＤのそれぞれに割り当てられたストローク識別情報属性の値（ここでは６番目〜９番目）を示している。これらの記述Ｂ２ａ，Ｂ２ｂにより、メタデータブロックＢ２は、電子ペンＰＢ（第２の入力デバイス）を特定する論理名ＬＮ（第２のメタデータ）を、電子ペンＰＢによって生成された１以上のストロークデータＳＤ（第２のストロークデータ）をグループ化してなる第２のグループ（記述Ｂ２ｂ内に記述されるストローク識別情報属性の値によって特定されるグループ）に対応付ける情報として機能する。
【０１４６】
ここで、図１９に示したメタデータブロックＢ１，Ｂ２では、上述した第１及び第２のグループのそれぞれを、対応する１以上のストロークデータＳＤのそれぞれに割り当てられたストローク識別情報属性の開始番号と終了番号によって特定している。このような特定方法は、各グループに対応する１以上のストロークデータＳＤのそれぞれに割り当てられるストローク識別情報属性が連番の数字からなるデータであることによって、実現されるものである。各グループに対応する１以上のストロークデータＳＤのそれぞれに割り当てられるストローク識別情報属性がバラバラな数字からなるデータである場合には、連番となるように対応するストローク識別情報属性をリナンバリングするか、あるいは列挙することによってグループを特定すればよい。
【０１４７】
図１３に戻る。すべてのグループについてメタデータブロックの生成が完了した後、インクファイル生成部３７は、生成したメタデータブロックに基づいて図１９に例示したメタデータチャンクの全体を生成し、第１のフォーマットとは異なる第２のフォーマットにより符号化したうえで、インクファイル４０の領域Ａ９（図１４参照）内に書き込む（ステップＳ４０９）。以上の処理により、インクファイル４０の生成が完了する。
【０１４８】
以上説明したように、本実施の形態によるインクファイルの出力方法によれば、インクファイル４０内に、論理名ＬＮとストロークデータＳＤとを対応付けて格納することができる。したがって、インクファイル４０を再生する際に、インクファイル４０内に書き込まれた情報に基づき、論理名ＬＮとストロークデータＳＤとを対応付けることができるので、論理名ＬＮすなわち電子ペンＰに応じたインクファイル４０の再生処理を実現することが可能になる。
【０１４９】
また、ストロークデータの符号化方法に対応していない場合であっても、特定の入力デバイスによって書かれたストロークデータがインクファイルに含まれているか否かをストロークデータの復号化を行う前に判別することが可能となる。
【０１５０】
以下、上記のようなインクファイル４０の再生について、図２０〜図２２を参照しながら説明する。
【０１５１】
＜インクファイル４０の再生処理＞
図２０は、図１に示したデジタルインク再生装置５０の機能ブロック図である。同図に示すように、デジタルインク再生装置５０は機能的に、インクファイル受付部５１、メタデータ復号部５２、ストロークデータ復号部５３−１〜５３−ｎ、インクデータ保持部５４、及び画像生成処理部５５を有して構成される。
【０１５２】
インクファイル受付部５１は、デジタルインク生成装置３０によって生成されたインクファイル４０の入力を受け付ける機能部である。インクファイル受付部５１は、インクファイル４０に含まれるメタデータチャンクＭＣ及びインクチャンクＩＣを、それぞれメタデータ復号部５２及びストロークデータ復号部５３−１〜５３−ｎに出力するよう構成される。
【０１５３】
メタデータ復号部５２は、メタデータチャンクＭＣを復号するとともに、アプリケーション１００からフィルタ情報の入力を受け付ける機能部である。フィルタ情報は１以上の論理名ＬＮを特定する情報であり、例えばユーザによって指定される。メタデータ復号部５２は、フィルタ情報に従い、復号したメタデータチャンクＭＣの中から再生すべきストローク識別情報ｓｔｒｏｋｅ＿ｉｄを抽出する。また、メタデータチャンクＭＣ中の記述から、インクチャンクＩＣの符号化方式を特定する。そして、特定した符号化方式に対応するストロークデータ復号部５３に対して、抽出したストローク識別情報ｓｔｒｏｋｅ＿ｉｄを供給するよう構成される。
【０１５４】
メタデータ復号部５２による上記処理について具体的な例を参照して説明すると、例えば図１９に示したメタデータチャンクを有するインクファイル４０に対してフィルタ情報「Ｄａｖｉｄ  Ｓｍｉｔｈ」が指定された場合、メタデータ復号部５２により抽出されるストローク識別情報ｓｔｒｏｋｅ＿ｉｄは、１番目から５番目のものとなる。また、図１９に示したメタデータチャンク内の記述からインクチャンクＩＣがＷＩＬＬによって符号化されていることが理解できるので、メタデータ復号部５２は、ＷＩＬＬに対応するストロークデータ復号部５３に、抽出した１番目から５番目のストローク識別情報ｓｔｒｏｋｅ＿ｉｄを供給する。
【０１５５】
その他、メタデータ復号部５２は、フィルタ情報によって指定された１以上の論理名ＬＮをインクデータ保持部５４に供給する処理も行う。
【０１５６】
ストロークデータ復号部５３−１〜５３−ｎは、図２に示したストロークデータ符号化部３５−１〜３５−ｎと同様、それぞれ互いに異なるフォーマット（符号化方式）に対応している。各ストロークデータ復号部５３は、メタデータ復号部５２から１以上のストローク識別情報ｓｔｒｏｋｅ＿ｉｄが供給されたことに応じて、対応する符号化方式により、インクファイル受付部５１から供給されるインクチャンクＩＣを復号するよう構成される。このとき、インクチャンクＩＣ内のストロークデータＳＤに相当する部分については、メタデータ復号部５２から供給された１以上のストローク識別情報ｓｔｒｏｋｅ＿ｉｄに対応するストロークデータＳＤのみを復号処理の対象とする。これは、復号処理のオーバーヘッドを削減するためである。そして、ストロークデータ復号部５３は、復号した１以上のストロークデータＳＤのそれぞれについて、復号結果をインクデータ保持部５４に出力するよう構成される。
【０１５７】
インクデータ保持部５４は、ストロークデータ復号部５３から供給されるストロークデータＳＤから一連のポイントデータＰＤ及び順序情報Ｕｏｒｄｅｒ（ＰＩＤ）を抽出し、画像生成処理部５５に供給するよう構成される。画像生成処理部５５は、こうして供給された一連のポイントデータＰＤ及び順序情報Ｕｏｒｄｅｒ（ＰＩＤ）に基づき、ディスプレイ６０に表示される映像信号や、ラスタデータである画像ファイル６１を生成するよう構成される。
【０１５８】
図２１は、インクファイル４０を再生する処理のメインルーチンを示す処理フロー図である。以下、デジタルインク再生装置５０が行う処理について、同図を参照しながら、再度より詳しく説明する。
【０１５９】
図２１に示すように、デジタルインク再生装置５０は、まず１以上の論理名ＬＮを指定するフィルタ情報を受け付ける（ステップＳ５０）。続いて、このフィルタ情報に基づいて、画像生成処理（ステップＳ５１）を行う。
【０１６０】
図２２は、図２１のステップＳ５１に示した画像生成処理の処理フロー図である。同図に示すように、この処理では、まず初めにインクファイル受付部５１によって、インクファイル４０からインクチャンクＩＣ及びメタデータチャンクＭＣが分離される（ステップＳ５１０）。次いで、メタデータ復号部５２によりＵＴＦ−８で符号化されたメタデータチャンクＭＣが復号される（ステップＳ５１１）。その後、メタデータ復号部５２は、復号したメタデータチャンクＭＣからインクチャンクＩＣの符号化方式を取得する（ステップＳ５１２）とともに、復号したメタデータチャンクＭＣから、フィルタ情報によって指定された論理名ＬＮに対応するストロークデータＳＤのストローク識別情報ｓｔｒｏｋｅ＿ｉｄを取得する（ステップＳ５１３）。
【０１６１】
次に、ステップＳ５１２で取得した符号化方式に対応するストロークデータ復号部５３により、インクチャンクの復号が行われる（ステップＳ５１４）。ここで復号される部分は、例えば図１３のステップＳ４０２で符号化したストロークデータフォーマットＳ＿Ｆｍｔに相当する部分である。続いて、ストロークデータ復号部５３は、ステップＳ５１３で取得した一連のストローク識別情報ｓｔｒｏｋｅ＿ｉｄに対応する１以上のストロークデータＳＤについて、ステップＳ５１２で取得した符号化方式による復号を実施する（ステップＳ５１５，Ｓ５１６）。最後に、こうして復号された一連のストロークデータＳＤについて、画像生成処理部５５が描画を行う。このとき、画像生成処理部５５は、ストロークデータＳＤを１つずつ描画していくのではなく、各ストロークデータＳＤ内にポイントデータＰＤと対応付けて格納されている順序情報Ｕｏｒｄｅｒ（ＰＩＤ）（図１２（ｂ）を参照）の小さいものから順に、各座標の描画を行う。以上により、図２１のステップＳ５１に示した画像生成処理が終了する。
【０１６２】
以上説明したように、本実施の形態によるインクファイルの再生方法によれば、本実施の形態によるインクファイルの出力方法によって生成されたインクファイル４０を再生する際に、フィルタ情報によって指定された論理名ＬＮに対応するストロークデータＳＤのみを描画の対象とすることが可能になる。
【０１６３】
また、本実施の形態によるインクファイルの出力方法によって生成されたインクファイル４０を再生する際に、フィルタ情報によって指定された論理名ＬＮに対応するストロークデータが含まれるか否かを事前に判定することができる。
【０１６４】
また、ストロークデータ復号部５３は、フィルタ情報によって指定された論理名ＬＮに対応するストロークデータＳＤのみを復号するので、インクチャンクＩＣの全体を復号してから、フィルタ情報によって指定される論理名ＬＮに対応するストロークデータＳＤのみを選択する場合に比べて、復号に要する処理のオーバーヘッドを縮小することが可能になる。
【０１６５】
また、インクファイルを生成する際、ストロークデータＳＤ内に各座標と対応付けて順序情報Ｕｏｒｄｅｒ（ＰＩＤ）を格納することにより座標の描画順をストロークデータＳＤ内に保存し、インクファイルの再生時には、この描画順に従って各座標の描画を行うので、図１１に例示したような複数のストロークデータＳＤ間の複雑な先後関係を再現することが可能になる。
【０１６６】
次に、本発明の第２の実施の形態によるインクファイルの管理方法について説明する。図２３は、本実施の形態によるインクファイルの管理方法を実現するコンピュータシステム９０のシステム構成を示す図である。同図に示すように、コンピュータシステム９０は、複数のコンピュータ１と、インクサーバ７０（インクファイルの管理装置）とを備えて構成される。
【０１６７】
各コンピュータ１は第１の実施の形態で説明したものと同様のものであり、位置検出器２０やディスプレイ６０と接続され、インクファイル４０を生成及び再生可能に構成される。ただし、本実施の形態ではインクサーバ７０がインクファイル４０の再生を行うので、各コンピュータ１は図１に示したデジタルインク再生装置５０を必ずしも備える必要はない。また、図２３に示すように、本実施の形態によるコンピュータ１は、インクファイル４０の検索条件をインクサーバ７０に出力し、その結果としてインクサーバ７０から画像ファイル６１の供給を受けるように構成される。この画像ファイル６１は、図１に示したものと同じものである。なお、図２３では、上側の２台のコンピュータ１のみに位置検出器２０を接続し、下側の２台のコンピュータ１のみにディスプレイ６０を接続するように描いているが、これは説明のための便宜上の描画であり、位置検出器２０が接続されたコンピュータ１にディスプレイ６０が接続されていてもよいし、ディスプレイ６０が接続されたコンピュータ１に位置検出器２０が接続されていてもよい。
【０１６８】
インクサーバ７０は、いわゆるクラウドサービスを実現するサーバであり、ＣＰＵ、通信回路、記憶装置などの通常のサーバコンピュータが備える構成（図示せず）を備えている。記憶装置は、主メモリなどの主記憶装置と、ハードディスクなどの補助記憶装置とを含んで構成される。インクサーバ７０の各機能は、ＣＰＵが記憶装置に記憶されるプログラムに従って動作することによって実現される。
【０１６９】
インクサーバ７０には、外部記憶装置としてのストレージ７１が接続されている。コンピュータ１におけるユーザ操作によりコンピュータ１からインクサーバ７０にインクファイル４０が送信（アップロード）されると、インクサーバ７０はこのストレージ７１に、受信したインクファイル４０を格納する。
【０１７０】
ストレージ７１は、こうして格納されるインクファイル４０の他に、図２４に例示するインクテーブルを記憶している。インクテーブルは、図２４に示すように、インクファイル４０ごとに、そのインクファイル４０のファイル名（インクファイル４０を特定する情報）と、そのインクファイル４０をアップロードしたユーザのアカウントを示す情報（例えば、インクサーバ７０のログインアカウント）と、そのインクファイル４０に格納されているメタデータチャンク内に記述されている１以上の論理名ＬＮと、この１以上の論理名ＬＮにそれぞれ対応する１以上の論理識別情報ＬＩＤと、そのインクファイル４０に格納されているストロークデータＳＤの符号化方式（ＷＩＬＬ、ＩｎｋＭＬなど）とを記憶するテーブルである。
【０１７１】
インクサーバ７０は、コンピュータ１からインクファイル４０を受信すると、これを一旦復号することにより、メタデータチャンク内に記述されている１以上の論理名ＬＮと、ストロークデータＳＤの符号化方式とを取得する。そして、これらをファイル名及びユーザのアカウントを示す情報とともに、インクテーブルに追記する。
【０１７２】
ここで、第１の実施の形態で説明したインクファイル４０は論理識別情報ＬＩＤの記述を含まないので、インクサーバ７０は、インクファイル４０を復号しても論理識別情報ＬＩＤを得ることができない。したがって、第１の実施の形態で説明したインクファイル４０を使用する場合、インクサーバ７０は、インクファイル４０とは別に、コンピュータ１から論理名ＬＮごとの論理識別情報ＬＩＤを取得する必要がある。論理識別情報ＬＩＤの記述を含むインクファイル４０を使用する場合には、インクサーバ７０は、上述した論理名ＬＮの場合と同様にして、インクファイル４０内の記述から論理識別情報ＬＩＤを得ればよい。
【０１７３】
なお、論理名ＬＮ及び論理識別情報ＬＩＤの一方又は両方を取得できない場合、インクサーバ７０は、インクテーブルの該当欄を空白にしておけばよい。また、インクテーブルに論理識別情報ＬＩＤの列を設けることは必須ではなく、論理識別情報ＬＩＤを検索条件のひとつとして使用する必要がない場合には、インクテーブルから論理識別情報ＬＩＤの列を除去することとしてもよい。
【０１７４】
図２５は、インクサーバ７０の機能ブロックを示す図である。同図に示すように、インクサーバ７０は機能的に、インクファイル選択部７３、メタデータ復号部７４、切替部７５、ストロークデータ復号部７６−１〜７６−ｎ、インクデータ保持部７７、及び画像生成処理部７８を有して構成される。
【０１７５】
インクファイル選択部７３は、ストレージ７１に格納済みの１以上のインクファイル４０の中から１以上のインクファイル４０を選択する機能部である。また、受付部７２は、コンピュータ１より、図２４に示したファイル名、アカウント、論理名ＬＮ、論理識別情報ＬＩＤ、及び符号化方式のうちのいずれか１つ以上を指定する検索条件の入力を受け付ける機能部である。
【０１７６】
受付部７２は、ストレージ７１内のインクテーブルを参照することにより、検索条件によって指定された条件に合致するインクファイル４０を特定し、インクファイル選択部７３にそのインクファイル４０を選択させるための処理を行う。また、受付部７２は、特定したインクファイル４０に対応するインクチャンクの符号化方式を切替部７５に通知する処理を行うとともに、論理名ＬＮ又は論理識別情報ＬＩＤが指定された場合には、メタデータ復号部７４に対し、指定された論理名ＬＮ又は論理識別情報ＬＩＤを特定するフィルタ情報を出力する処理も行うよう構成される。このフィルタ情報は、図２０で説明したフィルタ情報と同様のものである。なお、検索条件において論理名ＬＮ及び論理識別情報ＬＩＤがいずれも指定されていない場合には、フィルタ情報の出力は不要である。また、インクファイル選択部７３は、選択したインクファイル４０に含まれるメタデータチャンクＭＣ及びインクチャンクＩＣを、それぞれメタデータ復号部７４及び切替部７５に出力するよう構成される。
【０１７７】
メタデータ復号部７４は、インクファイル選択部７３から供給されるメタデータチャンクＭＣを復号するとともに、受付部７２からフィルタ情報が供給された場合には、そのフィルタ情報に従い、復号したメタデータチャンクＭＣの中から再生すべきストローク識別情報ｓｔｒｏｋｅ＿ｉｄのみを抽出する機能部である。メタデータ復号部７４の機能は図２０に示したメタデータ復号部５２と同様であるので、詳しい説明は省略する。
【０１７８】
ここで、第１の実施の形態で説明したインクファイル４０は、メタデータ内に論理識別情報ＬＩＤを含んでいない。したがって、フィルタ情報によって論理識別情報ＬＩＤが指定されていても、メタデータ復号部７４は、適切にストローク識別情報ｓｔｒｏｋｅ＿ｉｄを抽出することができない。フィルタ情報による論理識別情報ＬＩＤの指定は、インクファイル４０のメタデータ内に論理識別情報ＬＩＤが格納されている場合に限って有効となる。
【０１７９】
切替部７５は、インクファイル選択部７３から供給されるインクチャンクＩＣを、ストロークデータ復号部７６−１〜７６−ｎのうち受付部７２から通知された符号化方式に対応するものに供給する機能部である。インクチャンクＩＣの供給を受けたストロークデータ復号部７６は、対応する符号化方式により、インクファイル選択部７３から供給されるインクチャンクＩＣを復号する。このとき、インクチャンクＩＣ内のストロークデータＳＤに相当する部分については、メタデータ復号部７４から供給された１以上のストローク識別情報ｓｔｒｏｋｅ＿ｉｄに対応するストロークデータＳＤのみを復号処理の対象とする。これは、上述したストロークデータ復号部５３の場合と同様、復号処理のオーバーヘッドを削減するためである。そして、ストロークデータ復号部７６は、復号した１以上のストロークデータＳＤをインクデータ保持部７７に出力するよう構成される。
【０１８０】
インクデータ保持部７７は、図２０に示したインクデータ保持部５４と同様、ストロークデータ復号部７６から供給されるストロークデータＳＤから一連のポイントデータＰＤ及び順序情報Ｕｏｒｄｅｒ（ＰＩＤ）を抽出し、画像生成処理部７８に供給するよう構成される。画像生成処理部７８は、こうして供給された一連のポイントデータＰＤ及び順序情報Ｕｏｒｄｅｒ（ＰＩＤ）に基づいて描画処理を行うことにより、インクファイル４０ごとに、ラスタデータである画像ファイル６１を生成するよう構成される。
【０１８１】
インクサーバ７０は、以上のようにして生成された１以上の画像ファイル６１を、検索条件に対する返信としてコンピュータ１に送信する。これにより、コンピュータ１のユーザは、検索条件で指定した内容に合致する１以上のインクファイル４０のそれぞれにかかる画像ファイル６１を、取得ないしディスプレイ６０で閲覧することが可能になる。また、検索条件において論理名ＬＮ又は論理識別情報ＬＩＤを指定した場合には、各画像ファイル６１を、指定した論理名ＬＮ又は論理識別情報ＬＩＤに対応するストロークデータＳＤのみによって構成されたものとすることが可能になる。
【０１８２】
図２６は、インクサーバ７０がインクファイル４０を再生する処理のメインルーチンを示す処理フロー図である。以下、インクサーバ７０が行う処理について、同図を参照しながら、再度より詳しく説明する。なお、図２６では、検索条件において論理識別情報ＬＩＤが指定される場合を考慮していない。
【０１８３】
図２６に示すように、インクサーバ７０は、まずコンピュータ１から検索条件の入力を受け付ける（ステップＳ６０）。そして、検索条件が論理名ＬＮの指定を含む場合、その論理名ＬＮを指定するフィルタ情報を生成する（ステップＳ６１）。
【０１８４】
続いてインクサーバ７０は、ストレージ７１内のインクテーブルを参照し、検索条件に合致する１以上のインクファイル４０それぞれのファイル名を取得する。そして、ストレージ７１内に格納されている１以上のインクファイル４０の中から、取得したファイル名に対応する１以上のインクファイル４０を選択する（ステップＳ６２）。
【０１８５】
その後、ステップＳ６２で選択した一連のインクファイル４０のそれぞれについて、図２２を参照して説明した画像生成処理を実行する（ステップＳ６３，Ｓ５１）。これにより、検索条件の指定内容に合致する１以上のインクファイル４０のそれぞれにかかる画像ファイル６１が生成される。また、検索条件において論理名ＬＮ又は論理識別情報ＬＩＤが指定されている場合の各画像ファイル６１は、指定された論理名ＬＮ又は論理識別情報ＬＩＤに対応するストロークデータＳＤのみによって構成されたものとなる。
【０１８６】
以上説明したように、本実施の形態によるインクファイルの管理方法によれば、インクファイル４０の検索を行う際の検索条件として、論理名ＬＮ又は論理識別情報ＬＩＤといった入力デバイスを指定することが可能になる。したがって、検索条件のひとつとして入力デバイスを指定可能なインクファイル４０の検索が実現される。
【０１８７】
また、本実施の形態によるインクファイルの管理方法によれば、検索条件として論理名ＬＮ又は論理識別情報ＬＩＤを指定することにより、検索の結果として出力される各画像ファイル６１を、指定した論理名ＬＮ又は論理識別情報ＬＩＤに対応するストロークデータＳＤのみによって構成されたものとすることが可能になる。
【０１８８】
次に、本発明の第３の実施の形態によるインクファイルの出力方法について説明する。図２７は、本実施の形態によるコンピュータシステム９１のシステム構成を示す図である。同図を図２３と比較すると理解されるように、本実施の形態によるコンピュータシステム９１は、第２の実施の形態によるコンピュータシステム９０と同様、複数のコンピュータ１と、インクサーバ７０とを備えて構成される。ただし、本実施の形態によるコンピュータシステム９１は、コンピュータ１の内部でインクファイル４０の生成工程をすべて行うのではなく、各コンピュータ１でストロークデータＳＤ及び論理名ＬＮの生成までを実施し、符号化を含むその後の工程はインクサーバ７０内で行うよう構成される。また、複数のコンピュータ１のユーザが、１つのインクファイル４０を同時に生成できるように構成される。その他、図２７には図示していないが、各コンピュータ１は、検索条件の指定及び画像ファイル６１の受信に関して、第２の実施の形態で説明したコンピュータ１と同様の機能を有している。以下、第１及び第２の実施の形態との相違点を中心に、詳しく説明する。
【０１８９】
各コンピュータ１は、図２に示したインクファイル生成装置３０の機能ブロックのうちインクデータ保持部３４に保持するストロークデータＳＤを、対応する論理名ＬＮとともに所定の時間間隔でインクサーバ７０に送信するよう構成される。
【０１９０】
インクサーバ７０は、転送フィルタ８０と、インクファイル生成部８１とを有して構成される。転送フィルタ８０は、１つのインクファイル４０を同時に生成しようとする複数のコンピュータ１の間に設けられるもので、各コンピュータ１からの上り回線と、他の各コンピュータ１への下り回線との間にスイッチが挿入された構成を有して構成される。このスイッチがオンとなっている場合、各コンピュータ１からアップロードされたストロークデータＳＤ及び論理名ＬＮは、リアルタイムで他のコンピュータ１に転送される。各コンピュータ１は、こうして転送されたストロークデータＳＤ及び論理名ＬＮを、自身で生成しているストロークデータＳＤ及び論理名ＬＮとともに、リアルタイムでディスプレイ６０に表示するよう構成される。これにより、各コンピュータ１のユーザは、遠隔地にいるユーザと同時に１つのインクファイル４０を生成するという体験を得ることができる。また、ストロークデータＳＤとともに論理名ＬＮを表示することで、各コンピュータ１のユーザは、表示されているストロークデータＳＤの描画主体を把握可能となる。
【０１９１】
各コンピュータからアップロードされたストロークデータＳＤ及び論理名ＬＮは、インクサーバ７０内のインクファイル生成部８１に供給される。インクファイル生成部８１は、供給されたストロークデータＳＤ及び論理名ＬＮを一時的に保持し、いずれかのコンピュータ１よりインクファイル４０の出力指示が入力されたことを契機として、保持していたストロークデータＳＤ及び論理名ＬＮに基づいてインクファイル４０の生成を開始するよう構成される。
【０１９２】
インクファイル生成部８１によるインクファイル４０の生成処理は、基本的には図２に示したインクファイル生成部３７による処理と同様である。ただし、インクファイル生成部８１は、各ユーザからストロークデータＳＤの符号化方式の入力を受け付け、それに従ってストロークデータＳＤを符号化することとしてもよい。この場合、１つのインクファイル４０の中に、互いに異なる符号化方式によって符号化されたストロークデータＳＤが混在することになる。
【０１９３】
図２８は、本実施の形態において生成されるインクテーブルの例を示す図である。ファイル名＃Ｆ１〜＃Ｆ３に対応する３つのファイルは図２４のインクテーブルにも格納されていたものであり、ファイル名＃Ｆ４，＃Ｆ５に対応する２つのファイルが本実施の形態に特有のファイルとなっている。
【０１９４】
例えばファイル名＃Ｆ４に関するインクテーブル内の記述は、Ｄａｖｉｄ  Ｓｍｉｔｈが、アカウント＃ＡＣ１によりインクサーバ７０にログインしているコンピュータ１上で、それぞれ論理識別情報ＬＩＤが「Ｐｉｄ＃１」「Ｐｉｄ＃２」である２つの電子ペンＰを用いてストロークデータＳＤの生成を行い、同時に、Ｇｒｅｇ  Ｎｅｌｓｏｎが、アカウント＃ＡＣ２によりインクサーバ７０にログインしている他のコンピュータ１上で、論理識別情報ＬＩＤが「Ｐｉｄ＃３」である電子ペンＰを用いてストロークデータＳＤの生成を行い、さらに、ストロークデータＳＤの符号化方式として、Ｄａｖｉｄ  ＳｍｉｔｈがＷＩＬＬを、Ｇｒｅｇ  ＮｅｌｓｏｎがＩｎｋＭＬをそれぞれ指定した場合に得られるものである。インクテーブルをこのように構成することで、インクファイル４０の再生時には、複数のユーザが互いに異なるコンピュータ１上で同時に生成した１つのインクファイル４０を、アカウント、論理名ＬＮ、論理識別情報ＬＩＤ、ストロークデータＳＤの符号化方式などの検索条件によって適切に検索することが可能になる。
【０１９５】
以上説明したように、本実施の形態によるインクファイルの出力方法によれば、各コンピュータ６０のユーザに、遠隔地にいるユーザと同時に１つのインクファイル４０を生成するという体験を提供することが可能になる。また、インクファイル４０の再生時には、そうして生成されたインクファイル４０を、アカウント、論理名ＬＮ、論理識別情報ＬＩＤ、ストロークデータＳＤの符号化方式などの検索条件によって適切に検索することが可能になる。
【０１９６】
以上、本発明の好ましい実施の形態について説明したが、本発明はこうした実施の形態に何等限定されるものではなく、本発明が、その要旨を逸脱しない範囲において、種々なる態様で実施され得ることは勿論である。
【０１９７】
例えば、図５では、アドレス空間統合部３３０をメタデータ生成部３３の機能の一部として実現したが、図２９に示すように、アドレス空間統合部３３０を入力処理部３１の一部として実現することも可能である。こうすることで、アドレス空間統合部３３０をデバイスドライバ側で実現することが可能になる。
【０１９８】
また、図３及び図４を参照して説明したインクファイル４０の生成処理では筆圧情報を使用していなかったが、筆圧情報を使用してもよいことは勿論である。この場合、筆圧情報は位置検出器２０からポイントデータＰＤ等とともに送信されるので、デジタルインク生成装置３０は、図１５（ａ）に示したポイント属性(point)の値の一部として、ストロークデータＳＤ内に筆圧情報を埋め込むこととすればよい。
【０１９９】
また、第３の実施の形態で説明したインクファイル４０の描画に関して、フィルタ情報にストロークデータＳＤの符号化方式の指定も含め得るようにしてもよい。つまり、第３の実施の形態では、互いに異なる符号化方式によって符号化された複数のストロークデータＳＤを含むインクファイル４０について説明したが、このようなインクファイル４０を再生するにあたり、第１の実施の形態で説明したデジタルインク再生装置５０（図２０参照）や第２の実施の形態で説明したインクサーバ７０の再生機能（図２５参照）では、１つのインクファイル４０から特定の符号化方式によって符号化されたストロークデータＳＤのみを抽出して再生する、といった処理を行うことはできない。これは、第１及び第２の実施の形態で説明したフィルタ情報には論理名ＬＮや論理識別情報ＬＩＤといったメタデータの指定のみが含まれ、ストロークデータＳＤの符号化方式の指定が含まれないからである。フィルタ情報にストロークデータＳＤの符号化方式の指定を含められるようにすることにより、互いに異なる符号化方式によって符号化された複数のストロークデータＳＤを含むインクファイル４０を再生する際に、フィルタ情報によって指定された特定の符号化方式により符号化されたストロークデータＳＤのみを抽出して、描画処理の対象とすることが可能になる。
【符号の説明】
【０２００】
１                  コンピュータ
２０                位置検出器
３０                デジタルインク生成装置
３１                入力処理部
３２                ストロークデータ生成部
３３                メタデータ生成部
３４                インクデータ保持部
３５−１〜３５−ｎ  ストロークデータ符号化部
３６                メタデータ符号化部
３７                インクファイル生成部
４０                インクファイル
５０                デジタルインク再生装置
５１                インクファイル受付部
５２                メタデータ復号部
５３−１〜５３−ｎ  ストロークデータ復号部
５４                インクデータ保持部
５５                画像生成処理部
６０                ディスプレイ
６１                画像ファイル
７０                インクサーバ
７１                ストレージ
７２                受付部
７３                インクファイル選択部
７４                メタデータ復号部
７５                切替部
７６−１〜７６−ｎ  ストロークデータ復号部
７７                インクデータ保持部
７８                画像生成処理部
８０                転送フィルタ
８１                インクファイル生成部
９０，９１          コンピュータシステム
１００              アプリケーション
３１０              入出力インターフェイス
３１１〜３１５      ドライバ
３３０              アドレス空間統合部
３３１              ＬＩＤ変換部
３３２              デバイスタイプ記録部
３３００，３３０１  ＵＩＤ抽出部
３３０２            Ｎビット空間マッピング処理部
３３１０            切替部
３３１１            名前導出部
３３１２            ハッシュ部
３３１３            ＵＲＮ化部
Ｂ１，Ｂ２          メタデータブロック
Ｐ                  電子ペン
【図１】
2020035452.tif 000005
【図２】
2020035452.tif 000006
【図３】
2020035452.tif 000007
【図４】
2020035452.tif 000008
【図５】
2020035452.tif 000009
【図６】
2020035452.tif 000010
【図７】
2020035452.tif 000011
【図８】
2020035452.tif 000012
【図９】
2020035452.tif 000013
【図１０】
2020035452.tif 000014
【図１１】
2020035452.tif 000015
【図１２】
2020035452.tif 000016
【図１３】
2020035452.tif 000017
【図１４】
2020035452.tif 000018
【図１５】
2020035452.tif 000019
【図１６】
2020035452.tif 000020
【図１７】
2020035452.tif 000021
【図１８】
2020035452.tif 000022
【図１９】
2020035452.tif 000023
【図２０】
2020035452.tif 000024
【図２１】
2020035452.tif 000025
【図２２】
2020035452.tif 000026
【図２３】
2020035452.tif 000027
【図２４】
2020035452.tif 000028
【図２５】
2020035452.tif 000029
【図２６】
2020035452.tif 000030
【図２７】
2020035452.tif 000031
【図２８】
2020035452.tif 000032
【図２９】
2020035452.tif 000033