【解決手段】ペンタブレット1は、通信部42がコンピュータ10で実行されるデバイスドライバ50aとの間で通信を要求されているか否かを判定し、デバイスドライバ50aとの間の通信を要求されている場合にホバー座標とコンタクト座標とをデバイスドライバ50aに供給するタブレットモードで動作し、デバイスドライバ50aとの間の通信を要求されていない場合にホバー座標の少なくとも一部を破棄しコンタクト座標に基づいて生成されたストロークデータをメモリ43に記録するペーパーモードで動作するセンサコントローラ40と、を含む。
前記コントローラは、前記第2のモードで動作している間に、更に、前記外部の電子機器で実行される手書きデータ描画プログラムとの間で通信を実行しているか否かを判定し、
前記手書きデータ描画プログラムから前記ストロークデータの送信を要求されている場合に、前記コンタクト座標を前記手書きデータ描画プログラムに送信する、
請求項1に記載のペンタブレット。
前記通信部は、前記デバイスドライバと通信を行う第1の通信部と、前記手書きデータ描画プログラムとの間で通信を行う第2の通信部との複数の通信部により構成される、
請求項4に記載のペンタブレット。
前記プロセッサによって前記第2のストロークデータが前記第1のグループに対応付けられた場合、前記第1及び第2のストロークデータは、外部のコンピュータにおいて同一の画素領域に重畳して表示され、
前記プロセッサによって前記第2のストロークデータが前記第2のグループに対応付けられた場合、前記第1及び第2のストロークデータは、前記外部のコンピュータにおいて互いに異なる画素領域に表示される、
請求項9に記載の手書きデータ記録装置。
前記プロセッサによって前記第2のストロークデータが前記第3のサブグループに対応付けられた場合、前記第2のストロークデータは、前記外部のコンピュータが前記第1のストロークデータに基づいて生成される第1の画像に対して前記第2のストローグテータをオーバーレイするための合成演算を実行することにより、前記外部のコンピュータにおいて前記同一の画素領域に重畳して表示される、
請求項11に記載の手書きデータ記録装置。
前記プロセッサは、前記コンタクト座標が生成された時刻を示すタイムスタンプ情報、又は、一連の前記コンタクト座標の生成順序を示す順序番号を対応付けて、前記コンタクト座標を前記記憶装置に蓄積するよう構成される、
請求項7に記載の手書きデータ記録装置。
手書きデータ記録装置から供給されるストロークデータに基づいて、スタイラスの位置に対応した座標データに基づいた描画方法を実行するコンピュータで実行される手書きデータ描画方法であって、
前記手書きデータ記録装置は、
スタイラスが近接してから離間するまでの指示位置に対応した座標データ群を検出する検出部と、
不揮発性メモリと、
前記座標データ群を1単位とするストロークデータのグループに対応する第1の操作、及び、前記グループの部分集合であるサブグループに対応する第2の操作を受け付ける操作部と、
前記検出部により検出された前記座標データ群を前記不揮発メモリに蓄積するとともに、前記不揮発メモリに蓄積した前記座標データ群に基づき、第1のグループ及び該第1のグループの部分集合である第1のサブグループに属する第1のストロークデータと、第2のストロークデータとを順次生成するプロセッサとを含み、
前記プロセッサは、
前記第1のストロークデータの生成開始後、前記第2のストロークデータの生成開始前に前記操作部によって前記第1及び第2の操作がいずれも受け付けられなかった場合、前記第2のストロークデータを前記第1のグループ及び前記第1のサブグループに対応付け、
前記第1のストロークデータの生成開始後、前記第2のストロークデータの生成開始前に前記操作部によって前記第1の操作が受け付けられた場合、前記第2のストロークデータを前記第1のグループとは異なる第2のグループ及び該第2のグループの部分集合である第2のサブグループに対応付け、
前記第1のストロークデータの生成開始後、前記第2のストロークデータの生成開始前に前記操作部によって前記第1の操作が受け付けられずかつ前記第2の操作が受け付けられた場合、前記第2のストロークデータを前記第1のグループ及び該第1のグループの部分集合でありかつ前記第1のサブグループとは異なる第3のサブグループに対応付け、
前記手書きデータ描画方法は、
前記コンピュータと前記手書きデータ記録装置との間の通信を確立するステップと、
前記コンピュータが、前記通信を用いて、前記第1及び第2のストロークデータと、該第1及び第2のストロークデータのそれぞれに対応付けられた前記グループ及び前記サブグループとを前記手書きデータ記録装置から取得するステップと、
前記コンピュータが、前記第1のストロークデータをレンダリングすることによって第1の画像データを生成するステップと、
前記コンピュータが、前記第2のストロークデータをレンダリングすることによって第2の画像データを生成するステップと、
前記コンピュータが、前記第1及び第2のストロークデータがともに前記第1のグループに属する場合、前記第1の画像データに第2の画像データがオーバーレイするように描画処理を行う一方、前記第1のストロークデータが前記第1のグループに属し、かつ、前記第2のストロークデータが前記第2のグループに属する場合、前記第1及び第2の画像データのいずれかのみの描画処理を行うステップと、
を含む手書きデータ描画方法。
前記第1の集約ステップは、前記n番目のレイヤより時間的に前に生成されたすべてのレイヤに含まれたストロークデータ群を、それぞれのレイヤにおいてそれぞれストロークデータの生成順にレンダリングすることによって、前記第1の合成画像データを生成し、
前記第2の集約ステップは、前記n番目のレイヤより時間的に後に生成されたすべてのレイヤに含まれたストロークデータ群を、それぞれのレイヤにおいてそれぞれストロークデータの生成順にレンダリングすることによって、前記第2の合成画像データを生成する、
請求項18に記載の手書きデータ描画方法。
前記編集画像データを生成するステップは、前記n番目のレイヤに含まれるストロークデータ群に含まれるストロークデータの削除、又は、前記n番目のレイヤに対する新たなストロークデータの追加のいずれかの処理を含む、
請求項19に記載の手書きデータ描画方法。
時間的に最古に生成された1番目のレイヤから時間的に最新に生成されたN番目のレイヤまでのN個のレイヤのそれぞれに属するストロークデータ群を取得するステップと、
前記N個のレイヤのうちのn番目のレイヤの指定を受け付けるレイヤ指定ステップと、
マージ操作を受け付けるマージ操作受付ステップと、
前記n番目のレイヤに含まれたストロークデータ群と、前記N個のレイヤのうちのn−1番目のレイヤに含まれたストロークデータ群とを、順序関係を維持しつつ、前記n−1番目のレイヤ及び前記n番目のレイヤのいずれか一方に対応付け、他方を削除するレイヤ合成ステップと、
を含む手書きデータ合成方法。
前記レイヤ合成ステップは、前記n番目のレイヤに含まれたストロークデータ群と、前記N個のレイヤのうちのn−1番目のレイヤに含まれたストロークデータ群とを、順序関係を維持しつつ、前記n−1番目のレイヤ及び前記n番目のレイヤのいずれか一方に対応付け、他方を削除する処理を実行した後に、前記マージ操作受付ステップにより再び前記マージ操作が受け付けられた場合に、前記n−1番目のレイヤ及び前記n番目のレイヤの前記一方に含まれたストロークデータ群と、前記N個のレイヤのうちのn−2番目のレイヤに含まれたストロークデータ群とを、順序関係を維持しつつ、前記n−2番目のレイヤ又は前記n−1番目のレイヤ及び前記n番目のレイヤの前記一方に対応付ける、
請求項21に記載の手書きデータ合成方法。
【発明を実施するための形態】
【0024】
以下、添付図面を参照しながら、本発明の好ましい実施の形態について詳細に説明する。以下の説明では、初めに本発明で使用する各機器の構成について概略的に説明し、その後、本発明に特徴的な構成について詳細に説明することとする。
【0025】
図1(a)は、本発明の実施の形態によるペンタブレット1(手書きデータ記録装置)のタブレットモードにおける使用状態を示す図であり、
図1(b)は、本発明の実施の形態によるペンタブレット1のペーパーモード(単独利用時)における使用状態を示す図であり、
図1(c)は、本発明の実施の形態によるペンタブレット1のペーパーモード(コンピュータと接続時)における使用状態を示す図である。これらの図に示すように、本発明によるペンタブレット1は、タブレットモード(第1のモード)、ペーパーモード(第2のモード)という2種類のモードのいずれかで動作するよう構成される。また、ペーパーモードに関しては、単独で利用する場合と、外部のコンピュータと接続して用いる場合とで異なる動作を行う。
【0026】
初めに、
図1に示した各デバイスの構成について簡単に説明すると、まずペンタブレット1は、タッチ面を構成するタッチセンサ2と、押しボタン3とを有して構成される。また、電子ペン5a,5bはともにペン型の端末(スタイラス)である。電子ペン5aと電子ペン5bの違いは紙媒体への筆記機能を有するか否かという点にあり、電子ペン5bは例えばボールペンのようなインク滲出機能を有するのに対し、電子ペン5aはそのような機能を有しない。
【0027】
ペンタブレット1は、静電容量方式又は電磁誘導方式により、タッチ面上における電子ペン5a,5bの位置を示す座標を検出可能に構成される。また、電子ペン5a,5bは、それぞれのペン先に加わる力を示す筆圧値、それぞれに設けられるサイドスイッチ(図示せず)のオンオフ状態を示すサイドスイッチ情報、それぞれが予め記憶しているスタイラスIDなどの各種データをペンタブレット1に対して送信可能に構成される。ペンタブレット1から電子ペン5a,5bに対してもデータを送信可能に構成してもよく、この場合、例えば電子ペン5a,5bが送信すべきデータを指定するためのコマンドが、ペンタブレット1から電子ペン5a,5bに対して送信される。
【0028】
コンピュータ10,20はともに、記憶装置(図示せず)と、該記憶装置に記憶されるプログラムに従って各種の処理を実行可能に構成された中央処理装置(図示せず)とを有する汎用のコンピュータであり、典型的には、
図1に示すように、コンピュータ10は、ディスプレイ11を含む出力装置と、キーボード12及びマウスパッド13を含む入力装置とを有するノート型のパーソナルコンピュータであり、コンピュータ20は、タッチスクリーン21を含むタブレット端末(電子機器)である。以下ではこの典型例を前提として説明を続けるが、コンピュータ10,20を他の種類のコンピュータによって構成しても構わない。具体的には、デスクトップ型のパーソナルコンピュータ、ノート型のパーソナルコンピュータ、サーバコンピュータ、タブレット端末、スマートフォンなどのコンピュータによって、コンピュータ10,20を構成することが可能である。
【0029】
コンピュータ10は、例えば
図1(a)に示すUSBケーブル14により、ペンタブレット1と接続される。また、コンピュータ20は、例えば
図1(c)に示す無線接続22(例えば、ブルートゥース(登録商標)による無線接続)により、ペンタブレット1と接続される。ただし、ペンタブレット1とコンピュータ10,20との接続は、これらの接続以外の方法によって実現されてもよい。例えば、コンピュータ10とペンタブレット1とをブルートゥース(登録商標)などの無線接続によって接続してもよいし、PS/2ケーブルのような他の種類のケーブルによって接続してもよい。また、コンピュータ20とペンタブレット1とを、USBケーブルなどのケーブルを用いて有線接続してもよい。
【0030】
次に、ペンタブレット1が
図1(a)〜
図1(c)に示した各モードで動作する場合における各端末の接続及び動作について、説明する。
【0031】
まず、
図1(a)に示すタブレットモードは、典型的には、電子ペン5aをコンピュータ10のポインティングデバイスとして使用するためのモードである。タブレットモードにあるペンタブレット1は、タッチ面上における電子ペン5aの位置を示す座標を周期的に検出し、その都度、検出した座標を含む座標データをUSBケーブル14を介してコンピュータ10に送信するよう構成される。このとき送信する座標データには、他にも、電子ペン5aから受信される筆圧値及びサイドスイッチ情報などが含まれる。コンピュータ10は、座標データが受信される都度、受信した座標データに含まれる座標に基づいてディスプレイ11内におけるマウスカーソルCの位置を決定し、その位置にマウスカーソルCを移動させる処理を行うとともに、座標データ内に含まれる筆圧値及びサイドスイッチ情報の少なくとも一方に基づき、クリック、プレス、ドラッグなどのマウスボタン操作を受け付ける処理を行う。これにより、電子ペン5aをコンピュータ10のポインティングデバイスして使用することが実現される。
【0032】
なお、ここではタブレットモードにおけるペンタブレット1の典型的な用途としてポインティングデバイスを挙げているが、他の用途で使用することも可能である。具体的な例を挙げると、コンピュータ10で実行されている描画ソフトに線を入力するために、タブレットモードにあるペンタブレット1を使用することとしてもよい。
【0033】
次に、
図1(b)及び
図1(c)に示すペーパーモードは、ユーザが電子ペン5bを利用して紙媒体PA上に記入した線を示す一連の座標データをペンタブレット1内に蓄積するためのモードである。ペーパーモードにあるペンタブレット1は、コンピュータ20と接続されている場合には、上記一連の座標データをリアルタイムでコンピュータ20に送信する処理も行う。
【0034】
紙媒体PAは例えば縦開きのレポート用紙であり、
図1(b)及び
図1(c)に示すように、ペンタブレット1のタッチ面上に載せた状態で使用される。ペンタブレット1は、紙媒体PA上における電子ペン5bの位置を示す座標を周期的に検出し、電子ペン5bのペン先が紙媒体PAに接触している場合に限り、検出した座標を含む座標データを蓄積するよう構成される。また、コンピュータ20に接続されている場合には、検出の都度、コンピュータ20に対して、検出した座標データを送信するよう構成される。ペンタブレット1が蓄積又は送信する座標データには、タブレットモードでコンピュータ10に送信する座標データと同様、電子ペン5bから受信される筆圧値及びサイドスイッチ情報などが含まれる。
【0035】
電子ペン5bのペン先が紙媒体PAに接触している否かについて、ペンタブレット1は、電子ペン5bから受信される筆圧値を確認することによって判定する。すなわち、筆圧値がゼロであれば、電子ペン5bのペン先は紙媒体PAに接触していないと判定し、筆圧値がゼロより大きければ、電子ペン5bのペン先は紙媒体PAに接触していると判定する。以下では、ペン先が紙媒体PAに接触していない電子ペン5bの状態を「ホバー状態」と称し、ペン先が紙媒体PAに接触している電子ペン5bの状態を「コンタクト状態」と称する。
【0036】
コンピュータ20は、ペンタブレット1から一連の座標データをリアルタイムで受信する場合には、受信された座標データの逐次レンダリングを行って、ユーザが電子ペン5bを用いて紙媒体PAに記入した線に対応する線をタッチスクリーン21上に描画する処理を行う。レンダリングは、ベジエ曲線やキャットマル−ロム曲線などの補間曲線によって、一連の座標データにより示される一連の座標を補間する処理を含む。タッチスクリーン21には、この補間処理によって得られた補間曲線が描画される。これによりユーザは、紙媒体PAに線を記入している最中に、その線をタッチスクリーン21上でも確認可能となる。
【0037】
コンピュータ20はまた、ペンタブレット1から受信される一連の座標データに基づいて1以上のストロークデータを含むインクデータを生成し、図示しない記憶装置に格納する処理も行う。ストロークデータは、連続するコンタクト座標(電子ペン5bがコンタクト状態である場合に検出された座標)を1単位とするデータであり、より具体的に言えば、ユーザが電子ペン5bを紙媒体PAに接触させてから電子ペン5bを紙媒体PAから離すまでの間に検出された一連の座標データを含むデータである。以下では、電子ペン5bを紙媒体PAに接触させるという動作をペンダウンと称し、電子ペン5bを紙媒体PAから離すという動作をペンアップと称し、ペンダウンとペンアップの間に電子ペン5bを紙媒体PA上で移動させるという動作をペンムーブと称する。コンピュータ20は、ユーザの指示などにより蓄積したインクデータをタッチスクリーン21上に描画する必要が生じた場合、蓄積したストロークデータを蓄積順にレンダリングするよう構成される。これにより、各ストロークデータの上下方向の位置関係を維持しつつ、インクデータをタッチスクリーン21上に描画することが可能になる。
【0038】
ペンタブレット1は、一連の座標データをリアルタイムでコンピュータ20に送信することの他に、バッチ処理により、自身の記憶装置に蓄積した一連の座標データをコンピュータ20にまとめて送信することも可能に構成される。この送信は、コンピュータ20とペンタブレット1とが新たに接続された場合や、コンピュータ20とペンタブレット1とが接続されている状態でユーザによる明示の指示があった場合などに実行される。
【0039】
まとめて送信された一連の座標データを受信したコンピュータ20は、受信した一連の座標データに基づいて上述したインクデータを生成し、図示しない記憶装置に格納するよう構成される。こうして格納したインクデータの描画については、上述した通りである。
【0040】
図2は、ペンタブレット1、電子ペン5a,5b、及びコンピュータ10,20の内部構成を示す図である。以下、この
図2を参照しながら、ペンタブレット1、電子ペン5a,5b、及びコンピュータ10,20それぞれの内部構成について、より詳しく説明する。
【0041】
まず電子ペン5a,5bはそれぞれ、キャパシタ30及びインダクタ31からなるLC共振回路を有して構成される。インダクタ31は、ペンタブレット1のタッチセンサ2から供給される磁界に応じて誘導電圧を生成し、キャパシタ30を充電する役割を果たす。タッチセンサ2からの磁界の供給が止まった後のインダクタ31は、キャパシタ30に蓄積した電圧を利用して、ペンタブレット1に対して反射信号を送信する。こうして送信される反射信号には、位置検出用の連続信号と、連続信号の終了を示すスタート信号と、電子ペン5a,5bがペンタブレット1に対して送信するデータの一部(具体的には、サイドスイッチ情報及びスタイラスID)を示すデータ信号とが、この順に含まれる。
【0042】
キャパシタ30は、電子ペン5a,5bのペン先に対して筆記面(ペンタブレット1のタッチ面又は紙媒体PAの表面)から加えられる力(=筆圧)によってその容量が変化するよう構成される。キャパシタ30の容量が変化すると共振回路の共振周波数が変化するので、上記のようにして送信される反射信号の周波数も筆圧によって変化することになる。上述した筆圧値は、この周波数の変化によって、電子ペン5a,5bからペンタブレット1に伝達される。
【0043】
次にペンタブレット1は、上述したタッチセンサ2及び押しボタン3に加え、センサコントローラ40、操作部41、通信部42、メモリ43を有して構成される。
【0044】
図3は、タッチセンサ2及びセンサコントローラ40の内部構成を示す図である。同図に示すように、タッチセンサ2は、長方形の平面領域内に複数のループコイルLCが配置された構成を有している。各ループコイルLCの一端は接地され、他端はセンサコントローラ40に接続される。
図3では、複数のループコイルLCの例として、図示したy方向に延在する40本のループコイルX
1〜X
40と、y方向に直交するx方向に延在する40本のY
1〜Y
40とを図示している。以下、この80本のループコイルX
1〜X
40,Y
1〜Y
40を前提に説明を続けるが、タッチセンサ2に設けるべきループコイルLCの本数はこれに限られない。
【0045】
センサコントローラ40は、
図3に示すように、選択回路60と、スイッチ回路61と、アンプ62と、検波回路63と、ローパスフィルタ(LPF)64と、サンプルホールド回路(S/H)65と、アナログデジタル変換回路(A/D)66と、制御部67と、発振器68と、電流ドライバ69とを有して構成される。
【0046】
選択回路60には各ループコイルLCの他端が接続されている。選択回路60は、制御部67からの制御に応じてループコイルX
1〜X
40,Y
1〜Y
40の中の1本又は複数本を選択し、選択したものをスイッチ回路61に接続する回路である。
【0047】
スイッチ回路61は、1つの共通端子と2つの選択端子とを有するスイッチであり、共通端子に接続される選択端子を制御部67からの制御に応じて切り替え可能に構成される。スイッチ回路61の共通端子には選択回路60が、一方の選択端子にはアンプ62の入力端が、他方の選択端子には電流ドライバ69の出力端がそれぞれ接続される。
【0048】
アンプ62は、スイッチ回路61を介して選択回路60から供給される電圧信号を増幅し、検波回路63に出力する回路である。検波回路63は、アンプ62から出力される電圧信号に対して包絡線検波を行うことによって包絡線信号を生成し、ローパスフィルタ64に出力する回路である。ローパスフィルタ64は、検波回路63が生成した包絡線信号から高周波成分を除去する役割を果たす。サンプルホールド回路65は、ローパスフィルタ64によって高周波成分が除去された上記包絡線信号のサンプル動作及びホールド動作を、所定時間間隔で行うよう構成される。アナログデジタル変換回路66は、サンプルホールド回路65によりホールドされている信号にアナログデジタル変換を施すことによってデジタル信号を生成し、制御部67に出力する。
【0049】
制御部67は、図示しない記憶装置に記憶されるプログラムに従って動作するプロセッサであり、
図2に示した操作部41、通信部42、及びメモリ43に接続される。制御部67は、選択回路60、スイッチ回路61、サンプルホールド回路65、及びアナログデジタル変換回路66の制御を行う他、電子ペン5a,5bがコンタクト状態又はホバー状態のいずれであるか否かを識別して検出し、ホバー状態であるときの電子ペン5a,5bの位置座標であるホバー座標と、コンタクト状態であるときの電子ペン5a,5bの位置座標であるコンタクト座標とを生成する処理(検出部)、電子ペン5a,5bが送信した各種データ(筆圧値、サイドスイッチ情報、スタイラスIDなど)を取得する処理などを実行するように構成される。
【0050】
発振器68は、所定周波数の交流信号を生成するよう構成される。電流ドライバ69は、発振器68から出力される交流信号を電流信号に変換し、スイッチ回路61に供給する役割を果たす。
【0051】
制御部67による電子ペン5a,5bの座標及び電子ペン5a,5bが送信した各種データの取得について、具体的に説明する。まず初めに、制御部67は、スイッチ回路61の他方の選択端子(電流ドライバ69に接続されている選択端子)を共通端子に接続するとともに、選択回路60にループコイルX
1〜X
40,Y
1〜Y
40の中の一本を選択させる。すると、電流ドライバ69から出力される電流信号により、選択されたループコイルLCに磁界が発生する。なお、ここでは1本のループコイルLCを選択するとしているが、例えばループコイルX
1〜X
40の中から1本、ループコイルY
1〜Y
40の中から1本の計2本を選択することとしてもよい。また、ループコイルX
1〜X
40,Y
1〜Y
40とは別に、タッチセンサ2の外周に沿って磁界発生専用のループコイルを配置し、この段階ではこの専用ループコイルのみを選択することとしてもよい。
【0052】
ループコイルLCに発生した磁界の中に電子ペン5a,5bが入ると、上述したように、電子ペン5a,5bのインダクタ31(
図2)に誘導電圧が発生し、キャパシタ30(
図2)に電荷が蓄積される。制御部67は、スイッチ回路61の他方の選択端子を共通端子に接続してから所定時間が経過した後、今度は、スイッチ回路61の一方の選択端子(アンプ62に接続されている選択端子)を共通端子に接続する。すると、ループコイルLCからの磁界の発生が終了する。これを受けて、電子ペン5a,5bは上述した反射信号の送信を開始する。
【0053】
制御部67は、アナログデジタル変換回路66から供給されるデジタル信号を復号することにより、電子ペン5a,5bが送信している反射信号の内容を判定するよう構成される。そして、電子ペン5a,5bが連続信号の送信を行っている間に、選択回路60が選択するループコイルLCを連続的に切り替えることにより、ループコイルX
1〜X
40,Y
1〜Y
40のそれぞれに発生した電圧を走査する。こうして検出される電圧は、ループコイルLCと電子ペン5a,5bのペン先との間の距離が短いほど大きくなるので、制御部67は、走査結果から電子ペン5a,5bの位置を示す座標(上述したホバー座標又はコンタクト座標)を得ることができる。
【0054】
なお、走査時間を短縮するため、上記のようにすべてのループコイルLCを走査して位置検出を行うのは初回だけ(この場合、初回の位置検出では、電子ペン5a,5bがスタート信号やデータ信号を送信している間にも、これらを連続信号とみなして位置検出を行う)とし、2回目からは、前回検出された位置の近傍に位置するループコイルLCのみを走査することとしてもよい。
【0055】
一方、電子ペン5a,5bがデータ信号を送信している間には、制御部67は、検出された電子ペン5a,5bの位置に応じていずれか1本のループコイルLC(通常は、検出した電子ペン5a,5bの位置に最も近いもの)を、選択回路60に選択させる。そして、こうして選択されたループコイルLCを通じて得られた信号の復号結果から、電子ペン5a,5bが送信したサイドスイッチ情報又はスタイラスIDを取得するよう構成される。
【0056】
また、制御部67は、電子ペン5a,5bが送信する反射信号の周波数を検出し、検出した周波数から電子ペン5a,5bが送信した筆圧値を取得するよう構成される。制御部67は、こうして取得した筆圧値に基づき、電子ペン5a,5bが上述したホバー状態及びコンタクト状態のいずれであるかを識別して検出するように構成される。
【0057】
図2に戻る。押しボタン3はペンタブレット1の表面に配置された自動復帰型のスイッチであり、操作部41は、ユーザによる押しボタン3の押下方法に応じて、ユーザ操作を検出可能に構成される。本実施の形態において操作部41が検出するユーザ操作には、少なくとも第1の操作と第2の操作とが含まれる。第1の操作は、例えば押しボタン3を所定時間内に1回だけ押す操作(いわゆるシングルクリック操作)であり、後述する改ページ操作(グループの更新操作)に相当する。第2の操作は、例えば押しボタン3を所定時間内に2回押す操作(いわゆるダブルクリック操作)であり、後述する改レイヤ操作(グループの部分集合であるサブグループの更新操作)に相当する。
【0058】
通信部42は、外部のコンピュータとの通信を実行する際の通信インターフェイスであり、具体的には、USBケーブルによる有線通信を実現するUSB通信部42a(第1の通信部)と、ブルートゥース(登録商標)による無線通信を実現するBT通信部42b(第2の通信部)とを含んで構成される。
【0059】
USB通信部42aは、USBによる通信のインターフェイスを担う機能部であり、センサコントローラ40内の制御部67(
図3参照)の制御に従って、コンピュータ10のUSB通信部52との間でUSBによる通信を確立するよう構成される。USBによる通信が確立された後には、制御部67と、コンピュータ10のプロセッサ50(より具体的には、デバイスドライバ(DD)50a及び所定のアプリケーションに基づく動作を行っているプロセッサ50)との間で、USBによる通信が実行される。
【0060】
BT通信部42bは、ブルートゥース(登録商標)による通信のインターフェイスを担う機能部であり、センサコントローラ40内の制御部67(
図3参照)の制御に従って、コンピュータ20のBT通信部57との間でのブルートゥース(登録商標)による通信を確立するよう構成される。ブルートゥース(登録商標)による通信が確立された後には、制御部67と、コンピュータ20のプロセッサ55(より具体的には、手書きデータ描画プログラムに基づく動作を行っているプロセッサ55)との間で、ブルートゥース(登録商標)による通信が実行される。
【0061】
メモリ43は、センサコントローラ40内の制御部67(
図3参照)が取得した座標及び筆圧値等の各種データを含む座標データをアペンド方式で記憶する記憶装置であり、例えば不揮発性のメモリによって構成される。制御部67は、電子ペン5a,5bの座標を取得する都度、筆圧値に基づいて検出している電子ペン5a,5bの状態(ホバー状態又はコンタクト状態)から、取得した座標がホバー座標及びコンタクト座標のいずれであるかを判定し、判定の結果がコンタクト座標であった場合には、さらに、電子ペン5a,5bの動きの種別を示す情報(ペンダウン、ペンムーブ、ペンアップのいずれか)を取得する。そして、取得した電子ペン5a,5bの動きの種別を示す情報、取得したコンタクト座標、最新の筆圧値、サイドスイッチ情報などを含む座標データを生成し、メモリ43に記憶させる。こうしてメモリ43に順次座標データを記憶させていき、ペンダウンからペンアップまでの一連の座標データを記録することにより、制御部67は、連続するコンタクト座標を1単位とするストロークデータを生成する。また、制御部67は、操作部41によって検出された操作(上述した第1及び第2の操作)の内容に応じて、メモリ43に記録した一連の座標データにより構成されるストロークデータを、ページ(グループ)及びレイヤ(サブグループ)に対応付ける処理も行う。これらの制御部67の処理及びメモリ43の記憶内容の詳細については、後述する。
【0062】
次にコンピュータ10は、上述したディスプレイ11に加え、プロセッサ50、メモリ51、及びUSB通信部52を有して構成される。なお、同図では、
図1(a)に示したキーボード12及びマウスパッド13の記載は省略している。
【0063】
プロセッサ50は、図示しない記憶装置に記憶されるプログラムを実行可能に構成される。プロセッサ50によって実行されるプログラムには、コンピュータ10のオペレーティングシステムの他、ペンタブレット1に対するインターフェイスを提供するデバイスドライバ50aが含まれる。デバイスドライバ50aを実行することにより、プロセッサ50は、ペンタブレット1との間でUSBによる通信を確立し、実行するように構成される。なお、本明細書ではデバイスドライバ50aを通信の主体として表現する場合があるが、これは、デバイスドライバ50aに従って動作しているプロセッサ50による通信を意味する。また、プロセッサ50は、ペンタブレット1から座標データが受信される都度、受信した座標データに含まれる座標に基づいてディスプレイ11内におけるマウスカーソルC(
図1(a)参照)の位置を決定し、その位置にマウスカーソルCを移動させる処理を行うとともに、座標データ内に含まれる筆圧値及びサイドスイッチ情報の少なくとも一方に基づき、クリック、プレス、ドラッグなどのマウスボタン操作を受け付ける処理を行う。
【0064】
メモリ51は、ペンタブレット1から受信した座標データを記憶する記憶装置である。タブレットモードにおけるペンタブレット1をポインティングデバイスではなく描画ソフトへの入力用に用いる場合、プロセッサ50は、ペンタブレット1から受信された座標データの逐次レンダリングを行って、電子ペン5aの移動の軌跡に対応する線をディスプレイ11上に描画するとともに、ペンタブレット1から受信された一連の座標データに基づいて1以上のストロークデータを含むインクデータを生成し、メモリ51に記憶させる処理を行う。
【0065】
USB通信部52は、USBによる通信のインターフェイスを担う機能部であり、プロセッサ50の制御に従って、ペンタブレット1のUSB通信部42aとの間でUSBによる通信を確立するよう構成される。USBによる通信が確立された後には、プロセッサ50(より具体的には、デバイスドライバ50a及び所定のアプリケーションに基づく動作を行っているプロセッサ50)と、ペンタブレット1の制御部67(
図3参照)との間で、USBによる通信が実行される。
【0066】
次にコンピュータ20は、上述したタッチスクリーン21に加え、プロセッサ55、メモリ56、及びBT通信部57を有して構成される。
【0067】
プロセッサ55は、図示しない記憶装置に記憶されるプログラムを実行可能に構成される。プロセッサ55によって実行されるプログラムには、コンピュータ20のオペレーティングシステムの他、ペンタブレット1から順次供給される座標データに従って描画処理を行うための手書きデータ描画プログラムが含まれる。この手書きデータ描画プログラムを実行することにより、プロセッサ55は、ペンタブレット1との間でブルートゥース(登録商標)による通信を確立し、実行するように構成される。なお、本明細書では手書きデータ描画プログラムを通信の主体として表現する場合があるが、これは、手書きデータ描画プログラムに従って動作しているプロセッサ55による通信を意味する。
【0068】
メモリ56は、ペンタブレット1から受信した座標データを記憶する記憶装置である。プロセッサ55は、手書きデータ描画プログラムに従って動作することにより、ペンタブレット1から受信された座標データの逐次レンダリングを行って、電子ペン5bの移動の軌跡に対応する線をタッチスクリーン21上に描画するとともに、ペンタブレット1から受信された一連の座標データに基づいて1以上のストロークデータを含むインクデータを生成し、メモリ56に記憶させる処理を行う。
【0069】
BT通信部57は、ブルートゥース(登録商標)による通信のインターフェイスを担う機能部であり、プロセッサ55の制御に従って、ペンタブレット1のBT通信部42bとの間でのブルートゥース(登録商標)による通信を確立するよう構成される。ブルートゥース(登録商標)による通信が確立された後には、プロセッサ55(より具体的には、手書きデータ描画プログラムに基づく動作を行っているプロセッサ55)と、ペンタブレット1の制御部67(
図3参照)との間で、ブルートゥース(登録商標)による通信が実行される。
【0070】
以上、本発明で使用する各機器の構成について、概略的な説明を行った。次に、本発明に特徴的な構成について、詳細に説明する。本発明に特徴的な構成は特に、
図3に示した制御部67が行う処理と、
図2に示したプロセッサ55が行う処理とに現れる。そこで以下では、まず
図5〜
図9を参照しながら前者について詳しく説明し、その後、
図10〜
図17を参照しながら後者について詳しく説明することとする。なお、以下の説明では、電子ペン5a,5bをまとめて「スタイラス」と称する場合がある。
【0071】
図4は、
図3に示した制御部67の動作を示す処理フロー図である。同図に示すように、制御部67はまず、USB通信が確立されているか否かを判定する(ステップS1)。この判定は要するに、
図2に示した通信部42がコンピュータ10で実行されるデバイスドライバ50aとの間で通信を要求されているか否かを判定する処理である。
【0072】
ステップS1でUSB通信が確立されていると判定した場合、制御部67は、USB通信による座標データの通信要求があるか否かを判定する(ステップS2)。この通信要求は、例えばデバイスドライバ50aに従って動作しているプロセッサ50(
図2参照)によってなされるものである。ステップS2で通信要求があると判定した場合、制御部67はタブレットモードにエントリし、タブレットモードでの動作(ステップS10〜S13)を開始する。ただし、ステップS2の動作はオプションであり、制御部67は、ステップS1でUSB通信が確立されていると判定した場合に直ちにタブレットモードにエントリしてもよい。
【0073】
ステップS1でUSB通信が確立されていないと判定した場合、及び、ステップS2で通信要求がないと判定した場合、制御部67は、座標データの記録要求があるか否かを判定する(ステップS3)。この記録要求は、例えばユーザ操作によってなされるものである。ステップS3で記録要求があると判定した場合、制御部67はペーパーモードにエントリし、ペーパーモードでの動作(ステップS20〜S27)を開始する。ステップS3で記録要求がないと判定した場合の制御部67は、ステップS1に戻って処理を継続する。ただし、ステップS3の動作もオプションであり、制御部67は、ステップS1でUSB通信が確立されていないと判定した場合に直ちにペーパーモードにエントリしてもよい。
【0074】
タブレットモードにエントリした制御部67は、まずスタイラス(例えば、
図1に示した電子ペン5a)が検出されるまで待機する(ステップS10)。制御部67は、タッチセンサ2により上述した反射信号が受信されているか否かによって、スタイラスの検出を行う。
【0075】
スタイラスが検出された場合、制御部67は、そのスタイラスから受信される筆圧値に基づいてその状態(ホバー状態又はコンタクト状態)を取得するとともに、その位置を示す座標を検出する(ステップS11)。そして、デバイスドライバ50aに従って動作しているプロセッサ50に対し、スタイラスから受信されている最新の筆圧値及びサイドスイッチ情報と、検出した座標とを含むレポート(座標データ)を送信する(ステップS12)。ここで送信される座標には、上述したホバー座標とコンタクト座標の両方が含まれる。レポートを受けたプロセッサ50は、上述したように、レポートに含まれる座標に基づいてディスプレイ11内におけるマウスカーソルC(
図1参照)の位置を決定し、その位置にマウスカーソルCを移動させる処理を行うとともに、レポート内に含まれる筆圧値及びサイドスイッチ情報の少なくとも一方に基づき、クリック、プレス、ドラッグなどのマウスボタン操作を受け付ける処理を行う。
【0076】
レポートを送信した制御部67は、USB通信の状態が変更されたか否かを判定する(ステップS13)。変更されていないと判定した場合、制御部67は、ステップS10に戻って処理を継続する。これにより、スタイラスが検出されている間、ペンタブレット1からコンピュータ10に対し、周期的に上記レポートが送信されることになる。一方、変更されたと判定した場合の制御部67は、ステップS1に戻って処理を継続する。
【0077】
次に、ペーパーモードにエントリした制御部67は、まずスタイラス(例えば、
図1に示した電子ペン5b)が検出されるまで待機する(ステップS20)。この処理は、ステップS10の処理と同じものである。
【0078】
スタイラスが検出された場合、制御部67は、そのスタイラスから受信される筆圧値に基づいてその状態(ホバー状態又はコンタクト状態)を取得するとともに、その位置を示す座標を検出する(ステップS21)。そして、スタイラスの状態がホバー状態であるか、コンタクト状態であるかの判定を行う(ステップS22)。
【0079】
ステップS22でホバー状態であると判定した場合、制御部67は、検出した座標を破棄する(ステップS23)。この場合、メモリ43への座標データの蓄積、及び、コンピュータ20への座標データの送信のいずれも行われない。
【0080】
一方、ステップS22でコンタクト状態であると判定した場合、制御部67は、座標データをメモリ43に記録するための座標記録処理を行う(ステップS24)。座標記録処理の詳細については、後に
図5及び
図6を参照して詳しく説明する。
【0081】
座標記録処理を行った制御部67は、続いて、ブルートゥース(登録商標)による通信要求があるか否かを判定する(ステップS25)。この通信要求は、具体的には、上述した手書きデータ描画プログラムに従って動作しているプロセッサ55(
図2参照)が行うもので、ペンタブレット1に対し、座標データをリアルタイム送信させるための要求である。ステップS25で通信要求があると判定した場合、制御部67は、ステップS24でメモリ43に記録した座標データをコンピュータ20に対して送信する処理を行う(ステップS26)。通信要求があると判定した場合の制御部67は、ステップS26の処理を行わない。なお、ステップS25,S26の動作はオプションであり、制御部67は、プロセッサ55からの通信要求の有無によらず、座標データのリアルタイム送信を行わないこととしてもよい。
【0082】
ステップS23で座標を破棄した場合、又は、ステップS26で座標データの送信を行った場合(ステップS25,S26の動作を行わない場合には、ステップS24の座標記録処理が完了した場合)、制御部67は、USB通信の状態が変更されたか否かを判定する(ステップS27)。変更されていないと判定した場合、制御部67は、ステップS20に戻って処理を継続する。これにより、スタイラスが検出されている間、座標データがメモリ43に周期的に記録されることになる。また、ステップS25,S26の動作を行う場合には、ペンタブレット1からコンピュータ20に対し、周期的に座標データが送信されることになる。一方、変更されたと判定した場合の制御部67は、ステップS1に戻って処理を継続する。
【0083】
図5は、ステップS24においてメモリ43に蓄積される座標データ群を示す図である。メモリ43には時系列で各座標データが記録されており、同図に示すように、各座標データは、典型的には、スタイラスの動きの種別を示す情報(ペンダウンDN、ペンムーブMV、ペンアップUPのいずれか)と、座標X,Yと、筆圧値PRと、第1及び第2のサイドスイッチ情報SW1,SW2と、タイムスタンプ情報Tと、ページPと、レイヤLとを含んで構成される。なお、
図5には示していないが、スタイラスID又は該スタイラスIDの一部或いはハッシュ値を座標データに含めることとしてもよい。
【0084】
上述したように、ペンダウンDNは、電子ペン5bを紙媒体PAに接触させるという動作を示し、ペンアップUPは、電子ペン5bを紙媒体PAから離すという動作を示し、ペンムーブMVは、ペンダウンとペンアップの間に電子ペン5bを紙媒体PA上で移動させるという動作を示している。したがって、ペンダウンDNに始まり、その後にペンアップUPと、これらの間に位置するペンムーブMVとのそれぞれに対応する一連の座標データにより、1つのストロークデータが構成される。
図5には、8つのストロークデータST1〜ST8を例示している。
【0085】
座標X,Yは、制御部67によって検出されたタッチ面上におけるスタイラスの座標である。筆圧値PRは、スタイラスからペンタブレット1に対して送信された筆圧値である。第1及び第2のサイドスイッチ情報SW1,SW2は、それぞれがスタイラスからペンタブレット1に対して送信されたサイドスイッチ情報である。スタイラスには2つのサイドスイッチを有するものがあるので、座標データは、2つ分のサイドスイッチ情報SW1,SW2を格納可能に構成される。タイムスタンプ情報Tは、座標データが生成された時刻を示す情報である。タイムスタンプ情報Tに代え、一連の座標データの生成順序を示す順序番号を座標データに含めることとしてもよい。
【0086】
ページP及びレイヤLはそれぞれ、ストロークデータの属するページ及び暫定レイヤを示す情報である。ペンタブレット1においては、ストロークデータの適切な管理を可能にするため、連続するストローク(一連の座標データ)を、グループ(ページ)ごと、及び、グループ(ページ)の部分集合であるサブグループ(暫定レイヤ)ごとに区別して、ストロークデータを記録する。この区別の具体的な手段として、
図5の例では、個々の座標データにページP及びレイヤLを含めるようにしている。なお、レイヤの頭に「暫定」と付けているのは、ペンタブレット1で記録されるレイヤは、ストロークデータがコンピュータ20において描画された後、後述するレイヤマージ処理によって修正される蓋然性が高いからであって、レイヤと暫定レイヤとの間に構成としての違いはない。
【0087】
図6は、
図4に示した座標記録処理(ステップS24)の詳細を示す処理フロー図である。この座標記録処理に関して、制御部67は予め、ページP及びレイヤLを変数として記憶している。ページP及びレイヤLの初期値はともに1である。
【0088】
図6に示すように、制御部67はまず、
図4のステップS21で検出したコンタクト座標と、現在のページPと、現在のレイヤLとを含む座標データをメモリ43に保存する(ステップS30)。座標データには、
図5に示したようにこれら以外の情報も含まれるが、
図6では記載を省略している。制御部67がこうしてステップS30の処理を行うことにより、メモリ43には、コンタクト座標を含む座標データが時系列で蓄積されていく。
【0089】
続いて制御部67は、操作部41が押しボタン3の操作を検出したか否かを判定し(ステップS31)、検出したと判定した場合にはさらに、検出した操作の内容が上述した第1の操作(改ページ操作)及び第2の操作(改レイヤ操作)のいずれであるかを判定する(ステップS32)。その結果、第1の操作(改ページ操作)が検出された場合であれば、制御部67は、1を加算することによってページPを更新する(P=P+1)とともに、レイヤLを1(最古のレイヤ)に設定する(ステップS33)。一方、第2の操作(改ページ操作)が検出された場合であれば、制御部67は、1を加算することによってレイヤLを更新する(L=L+1)(ステップS34)。この場合、ページPは変更されない。
【0090】
ステップS31で検出していないと判定した場合、又は、ステップS33或いはステップS34の処理を完了した場合の制御部67は、座標記録処理を終了する。この後の処理は、
図4を参照して説明したとおりである。
【0091】
以上の処理により、制御部67は、検出したコンタクト座標を含む座標データをメモリ43に蓄積していくことが可能になるとともに、ユーザ操作に応じて、座標データに含めるページP及びレイヤLを適宜更新していくことが可能になる。
【0092】
ここで、メモリ43に蓄積される座標データ群の構成、及び、制御部67が行う座標記録処理には、ここまでで説明したもの以外にも各種の変形例が考えられる。そこで以下では、座標記録処理の変形例である第1の変形例と、座標データ群の構成の変形例である第2の変形例とを説明する。
【0093】
図7は、本実施の形態の第1の変形例による座標記録処理を示す処理フロー図である。本変形例は、ユーザによって改ページ操作又は改レイヤ操作がなされたとしても、ストロークデータの形成中にはページP又はレイヤLの更新を保留し、ストロークデータの完成後にページP又はレイヤLの更新を行うようにした点で、
図6に示した例と異なっている。以下、詳しく説明する。
【0094】
制御部67はまず、
図4のステップS21で検出したコンタクト座標と、現在のページPと、現在のレイヤLとを含む座標データをメモリ43に保存する(ステップS40)。ステップS40の処理は、
図6に示したステップS30の処理と実質的に同一である。次いで制御部67は、操作部41により第1の操作(改ページ操作)が検出されたか否かを判定し(ステップS41)、検出されたと判定した場合にのみ、改ページイベント発生を一時的に記憶する(ステップS42)。また、制御部67は、操作部41により第2の操作(改レイヤ操作)が検出されたか否かを判定し(ステップS43)、検出されたと判定した場合にのみ、改レイヤイベント発生を一時的に記憶する(ステップS44)。
【0095】
次に、制御部67は、ストロークデータが完成したか否かを判定する(ステップS45)。この判定は、ステップS40でメモリ43に保存した座標データがペンアップUPを含むものであったか否かを判定することにより実行すればよい。
【0096】
ステップS45でストロークデータが完成したと判定した場合、制御部67は、ストロークデータの形成中に改ページイベントが発生していたか否かを判定する(ステップS46)。この判定の結果は、ストロークデータの形成中にステップS42を実行していた場合に肯定となり、そうでない場合に否定となる。ステップS46で改ページイベントが発生していたと判定した場合の制御部67は、1を加算することによってページPを更新する(P=P+1)とともに、レイヤLを1に設定する(ステップS47)。
【0097】
ステップS46で改ページイベントが発生していないと判定した場合の制御部67は、次にストロークデータの形成中に改レイヤイベントが発生していたか否かを判定する(ステップS48)。この判定の結果は、ストロークデータの形成中にステップS44を実行していた場合に肯定となり、そうでない場合に否定となる。ステップS48で改レイヤイベントが発生していたと判定した場合の制御部67は、1を加算することによってレイヤLを更新する(L=L+1)(ステップS49)。この場合、ページPは変更されない。
【0098】
ステップS45でストロークデータが未だ完成していないと判定した場合、又は、ステップS47或いはステップS49の処理を完了した場合の制御部67は、座標記録処理を終了する。この後の処理は、
図4を参照して説明したとおりである。
【0099】
図7の処理によれば、制御部67は、例えば第1のページ(第1のグループ)及び該第1のページの部分集合である第1のレイヤ(第1のサブグループ)に属する第1のストロークデータと、第2のストロークデータとを順次生成したとすると、第1のストロークデータの生成開始後、第2のストロークデータの生成開始前に操作部41によって第1及び第2の操作がいずれも受け付けられなかった場合、第2のストロークデータを第1のページ及び第1のレイヤに対応付け、第1のストロークデータの生成開始後、第2のストロークデータの生成開始前に操作部41によって第1の操作が受け付けられた場合、第2のストロークデータを第1のページとは異なる第2のページ(第2のグループ)及び該第2のページの部分集合である第2のレイヤ(第2のサブグループ)に対応付け、第1のストロークデータの生成開始後、第2のストロークデータの生成開始前に操作部41によって第1の操作が受け付けられずかつ第2の操作が受け付けられた場合、第2のストロークデータを第1のページ及び該第1のページの部分集合でありかつ第1のレイヤとは異なる第3のレイヤ(第3のサブグループ)に対応付けることになる。ここで、第2のページは、制御部67が第2のストロークデータを対応付ける前に存在するいずれのグループとも異なる新たなグループであり、第2のレイヤは、制御部67が第2のストロークデータを対応付ける前に存在するいずれのレイヤとも異なる新たなレイヤであり、第3のレイヤは、前記制御部67が前記第2のストロークデータを対応付ける前に存在するいずれのレイヤとも異なる新たなレイヤである。したがって、ユーザ操作に従って、第1及び第2のストロークデータのそれぞれに適切なページP及びレイヤLを割り当てることが可能になる。
【0100】
以上説明したように、本変形例によれば、ストロークデータが完成するまでページP及びレイヤLの更新を保留することができるので、ストロークデータの途中でページP又はレイヤLが更新されてしまうことの防止が可能になる。
【0101】
次に、
図8は、本実施の形態の第2の変形例においてメモリ43に蓄積される座標データ群を示す図である。また、
図9は、本変形例による座標記録処理を示す処理フロー図である。本変形例は、メモリ43内における座標データ群のデータ構造の点で、
図5に示した例と異なっている。また、
図9の座標記録処理は、基本的には
図7に示した座標記録処理と同様であるが、メモリ43内における座標データ群のデータ構造の相違に伴い、
図7に示した座標記録処理とは異なっている点がある。以下、相違点を中心に説明する。
【0102】
本変形例による座標データは、
図8に示すように、ページP及びレイヤLを含まない。その代わりに、ページの区切りを示すイベントEVENT(Page)と、レイヤの区切りを示すイベントEVENT(Layer)とが座標データ群内に時系列で配置され、これらによってページとレイヤの区切りが示されている。
【0103】
本変形例による制御部67は、
図9に示すように、ステップS40からステップS46まで、
図7と同一の処理を行う。ステップS46で改ページイベントが発生していたと判定した場合、制御部67は、改ページイベントEVENT(Page)をメモリ43に書き込む(ステップS47a)。一方、ステップS46で改ページイベントが発生していないと判定した場合の制御部67は、
図7の例と同様に、ストロークデータの形成中に改レイヤイベントが発生していたか否かを判定する(ステップS48)。そして、このステップS48で改レイヤイベントが発生していたと判定した場合、制御部67は、改レイヤイベントEVENT(Layer)をメモリ43に書き込む(ステップS49a)。
【0104】
ステップS45でストロークデータが未だ完成していないと判定した場合、又は、ステップS47a或いはステップS49aの処理を完了した場合の制御部67は、座標記録処理を終了する。この後の処理は、
図4を参照して説明したとおりである。
【0105】
図9の処理によれば、制御部67は、例えば第1のストロークデータの生成開始後、第2のストロークデータの生成開始前に操作部41によって第1の操作が受け付けられた場合、該第1の操作に対応する第1のイベント(改ページイベントEVENT(Page))をメモリ43内の第1のストロークデータに対応する一連のコンタクト座標と第2のストロークデータに対応する一連のコンタクト座標との間に記録することになる。これにより、第2のストロークデータは、第1のストロークデータとは異なるページ及びレイヤに対応付けられる。
【0106】
また、制御部67は、例えば第1のストロークデータの生成開始後、第2のストロークデータの生成開始前に操作部41によって第1の操作が受け付けられずかつ第2の操作が受け付けられた場合、第2の操作に対応する第2のイベント(改レイヤイベントEVENT(Layer))をメモリ43内の第1のストロークデータに対応する一連のコンタクト座標と第2のストロークデータに対応する一連のコンタクト座標との間に記録することになる。これにより、第2のストロークデータは、第1のストロークデータと同じページ内の異なるレイヤに対応付けられる。
【0107】
以上説明したように、本変形例によれば、座標データ群の中にイベントEVENT(Page),EVENT(Layer)を埋め込むことが可能になる。したがって、改ページ及び改レイヤの箇所が記憶されるので、本変形例によっても、コンピュータ20において、ページ及びレイヤを取得することが可能になる。また、本変形例によれば、各座標データにページP及びレイヤLを含める必要がないので、座標データのデータ量を削減することが可能になる。
【0108】
以上、
図3に示した制御部67が行う処理について、本実施の形態の第1及び第2の変形例の説明も交えながら詳しく説明した。次に、コンピュータ20のプロセッサ55(
図2参照)が行う処理について、
図10〜
図17を参照しながら詳しく説明する。
【0109】
初めに、
図10は、プロセッサ55が行う描画処理を示す処理フロー図である。この処理フローは、ペンタブレット1から座標データ群を受信したコンピュータ20が行う基本的な描画処理を示している。
【0110】
図10に示すように、プロセッサ55は、まずペンタブレット1との通信を確立する。この通信は、上述したように、例えばブルートゥース(登録商標)による通信である。そしてプロセッサ55は、確立した通信を介して、ペンタブレット1から座標データ群を受信し、メモリ56に書き込む(ステップS101)。なお、メモリ56内における座標データ群のデータ構造は、
図5又は
図8に示したものと同じであってもよいし、異なっていてもよい。
【0111】
続いて、プロセッサ55は、ユーザによるページ指定操作の発生を待機する(ステップS102)。ページ指定操作は、例えばタッチスクリーン21上に表示されたページ指定アイコン(図示せず)をユーザがタップすることによって行われる操作である。ページ指定操作が発生した場合、プロセッサ55はまず、指定されたページ内の最古のレイヤに含まれるすべてのストロークデータを生成順にレンダリングすることによって、画像データを生成する(ステップS103)。このレンダリングにおいては、上述したように、ベジエ曲線やキャットマル−ロム曲線などの補間曲線による補間処理が行われる。また、座標データに筆圧値PRが含まれている場合には、筆圧値PRに応じて線幅を変更する処理が行われる。さらに、座標データにスタイラスIDが含まれている場合には、スタイラスIDに応じて線色を変更する処理を行うことも可能である。
【0112】
ステップS103が完了した後、プロセッサ55は、指定されたページ内のすべてのレイヤ(最古のレイヤを除く)のそれぞれについて、ステップS105の処理を行う(ステップS104)。例えば、指定されたページが
図8に示したページ2であれば、プロセッサ55は、まずレイヤ2−1に含まれるすべてのストロークデータ(ストロークデータST3,ST4)を生成順にレンダリングすることによって画像データを生成し、その後、その他のレイヤ2−2,2−3のそれぞれについて、ステップS105の処理を実行する。なお、ステップS105の処理は、レイヤの生成順に実行される。
【0113】
ステップS105では、プロセッサ55は、当該レイヤに含まれるすべてのストロークデータを生成順にレンダリングするとともに、レンダリングした各ストロークデータを生成済みの画像データ(ステップS103で生成されたもの、又は、2回目以降のステップS105では、前回のステップS105で更新されたもの)に対して生成順にオーバーレイするための合成演算を実施することにより、画像データを更新する。
【0114】
ステップS104の繰り返し処理が完了した後、プロセッサ55は、最終的に得られた画像データを、タッチスクリーン21に表示する(ステップS106)。これによりユーザは、ページ指定操作によって指定したページの内容をタッチスクリーン21上で確認できるようになる。
【0115】
図11は、ステップS105における処理の説明図である。同図に示す例では、1つのページ2内に3つの暫定レイヤ2−1〜2−3が含まれる。なお、ここでは説明の簡単のために1つのページ内の暫定レイヤの数を3つとしているが、実際にはより多数(例えば1000枚以上)の暫定レイヤが含まれることが通常である。また、暫定レイヤ2−1〜2−3はそれぞれ1つのストロークデータSTa〜STcを含むものとして描いているが、実際には、それぞれより多数のストロークデータを含み得る。
【0116】
暫定レイヤ2−1〜2−3は、この順で生成されたものである。プロセッサ55は、まず最も古い暫定レイヤ2−1にかかるストロークデータSTaをレンダリングすることによって画像データを生成し、次いで、2番目に古い暫定レイヤ2−2にかかるストロークデータSTbをレンダリングして画像データにオーバーレイし、最後に、最も新しい暫定レイヤ2−3にかかるストロークデータSTcをレンダリングして画像データにオーバーレイする。これにより、
図11の右側の図に示すように、ページ2内に含まれる3つのストロークデータSTa〜STcのすべてが同一の画素領域に重畳して表示され、しかも、ストロークデータSTaの上にストロークデータSTbが位置し、ストロークデータSTbの上にストロークデータSTcが位置するように各ストロークデータSTa〜STcが描かれることになる。
【0117】
なお、
図11では、相対的に上側に位置するストロークデータ(例えばストロークデータSTc)によって、相対的に下側に位置するストロークデータ(例えばストロークデータSTb)が隠されているが、各ストロークデータに透明度を付与し、相対的に下側に位置するストロークデータが透けて見えるように合成してもよい。この場合の合成演算は、公知のアルファブレンディング技術を用いて行うことが好ましい。
【0118】
図10に戻る。ステップS105の処理を完了したプロセッサ55は、ステップS102に戻ってユーザによるページ指定操作の発生を再度待機する。これにより、ユーザがページ指定操作を行う都度、そのページに含まれるすべてのレイヤがタッチスクリーン21上に新たに描画されることになる。
【0119】
次に、
図12は、プロセッサ55が行うレイヤ編集処理を示す処理フロー図である。プロセッサ55は、
図11の処理によって描画したレイヤについて、ユーザによる編集を受け付ける機能を有している。このとき、従来であれば、編集操作の都度すべてのレイヤの合成演算を行う必要があるが、レイヤの数や各レイヤに含まれるストロークデータの数が多数に上る場合には、この演算処理によってコンピュータ20の処理負荷が過剰になってしまう。
図12に示すレイヤ編集処理によれば、このような処理負荷の増大を防止することが可能になる。以下、詳しく説明する。
【0120】
初めに、プロセッサ55は、N枚のレイヤ1〜Nを含むページを描画する(ステップS110)。この描画処理は、
図10のステップS105で実行される処理である。ステップS110の処理が完了し、ページがタッチスクリーン21上に表示されている状態で、プロセッサ55は、ユーザによるレイヤn(1≦n≦N)の指定操作の発生を待機する(ステップS111)。この指定操作は、例えばタッチスクリーン21上に表示されたレイヤ指定アイコン(図示せず)をユーザがタップすることによって行われる操作である。
【0121】
レイヤnの指定操作が発生した場合、プロセッサ55は、レイヤ1〜n−1に含まれるストロークデータ群をレンダリングすることにより、第1の合成画像データを生成する(ステップS112。第1の集約ステップ)。より具体的に言えば、プロセッサ55は、レイヤnより時間的に前に生成されたすべてのレイヤに含まれたストロークデータ群を、それぞれのレイヤにおいてそれぞれストロークデータの生成順にレンダリングすることによって、第1の合成画像データを生成する。
【0122】
プロセッサ55はまた、レイヤn+1〜Nに含まれるストロークデータ群をレンダリングすることにより、第2の合成画像データを生成する(ステップS113。第2の集約ステップ)。より具体的に言えば、プロセッサ55は、レイヤnより時間的に後に生成されたすべてのレイヤに含まれたストロークデータ群を、それぞれのレイヤにおいてそれぞれストロークデータの生成順にレンダリングすることによって、第2の合成画像データを生成する。
【0123】
次にプロセッサ55は、レイヤnの具体的な編集操作の発生を待機する(ステップS114)。ここで検出される編集操作には、レイヤnに含まれるストロークデータ群に含まれるストロークデータの削除、又は、レイヤnに対する新たなストロークデータの追加のいずれかの処理が含まれる。そしてプロセッサ55は、編集操作が発生する都度、レイヤ1〜Nの再レンダリングを行う(レンダリングステップ)。具体的に説明すると、プロセッサ55は、編集後のレイヤnに属するストロークデータ群に対し、検出された編集操作を実行することによって編集画像データを生成し(ステップS115)、さらに、第1の合成画像データに編集画像データをオーバレイし、その結果として得られる画像に第2の合成画像データをオーバレイすることによって、レイヤ1〜Nを含むページを再描画する(ステップS116)。
【0124】
図13は、
図12に示したレイヤ編集処理の説明図である。同図左側には、1つのページ含まれるN枚のレイヤ1〜Nを示している。ユーザによってレイヤnの編集が行われる場合、プロセッサ55は予め、レイヤnの下側に位置するレイヤ1〜n−1を集約することによって第1の合成画像データを生成するとともに、レイヤnの上側に位置するレイヤn+1〜Nを集約することによって第2の合成画像データを生成しておく。こうすることで、レイヤnの編集が行われる都度発生する再描画の際には、第1の合成画像データと、レイヤnを編集してなる編集画像データと、第2の合成画像データとの3枚のみを合成すればよいことになるので、N枚のレイヤの合成演算を毎回行う場合に比べ、大幅にコンピュータ20の処理負荷が軽減される。
【0125】
次に、
図14は、プロセッサ55が行うレイヤマージ処理を示す処理フロー図である。従来、押しボタン3(
図1参照)の操作によって形成された複数の暫定レイヤを1つのレイヤに結合することはできなかったが、ペンタブレット1を特に
図1(b)に示したように単独利用している場合、ユーザは、暫定レイヤの構成を確認しながら押しボタン3を押すことができない。その結果、不適切なところに暫定レイヤの区切りが挿入されてしまう場合があった。
図14に示すレイヤマージ処理によれば、不適切なところに暫定レイヤの区切りが挿入されてしまった場合であっても、事後的に簡便な方法で、区切りを削除する(すなわち、暫定レイヤを結合する)ことが可能になる。以下、詳しく説明する。
【0126】
初めに、プロセッサ55は、
図12を参照して説明したステップS110,S111を実行する。ステップS111でレイヤnの指定操作を検出したプロセッサ55は、変数kに1を代入し(ステップS120)、マージ操作の発生を待機する(ステップS121)。マージ操作は、例えばタッチスクリーン21上に表示されたマージ操作アイコン(図示せず)をユーザがタップすることによって行われる操作である。
【0127】
マージ操作が発生すると、プロセッサ55は、レイヤn−kにレイヤn−k+1をマージして、再描画を行う(ステップS122。レイヤ合成ステップ)。ここで実行されるマージ処理は、具体的には、レイヤn−kに含まれたストロークデータ群と、レイヤn−k+1のレイヤに含まれたストロークデータ群とを、順序関係を維持しつつ、レイヤn−kに対応付ける処理である。ステップS122を実行した後、プロセッサ55は、レイヤn−k+1を削除し(ステップS123)、変数kを1だけインクリメントして(ステップS124)、ステップS121に戻る。
【0128】
図15は、
図14に示したレイヤマージ処理の説明図である。同図左側には、1つのページ含まれるN枚のレイヤ1〜Nを示している。ユーザがレイヤnを指定してマージ操作を実行すると、プロセッサ55は、変数k=1という条件の下で、
図14に示したステップS122,S123を実行する。これにより、レイヤnがレイヤn−1にマージされ、レイヤnは削除されることになる。続いて、ユーザが再度マージ操作を実行すると、プロセッサ55は、変数k=2という条件の下で、
図14に示したステップS122,S123を実行する。これにより、レイヤn−1がレイヤn−2にマージされ、レイヤn−1は削除されることになる。このように、2度目以降のマージ操作においては、ユーザは、レイヤを指定することなくマージ操作を行うだけで、下へ下へとレイヤを結合していくことができる。したがって、事後的に簡便な方法で、レイヤを結合していくことが可能になる。
【0129】
なお、
図14及び
図15では、下へ下へとレイヤを結合していく例を説明したが、この方法以外の結合方法を採用することも可能である。そこで以下では、レイヤマージ処理の変形例である第3の変形例の説明を行う。
【0130】
図16は、本実施の形態の第3の変形例によるレイヤマージ処理を示す処理フロー図である。本変形例と、
図14に示した例との違いは、ステップS122,S123をステップS122a,S123aに置き換えた点にある。以下、相違点に着目して詳しく説明する。
【0131】
本変形例によるプロセッサ55は、ステップS121でマージ操作を検出した後、レイヤnにレイヤn−kをマージして、再描画を行う(ステップS122a。レイヤ合成ステップ)。ここで実行されるマージ処理は、具体的には、レイヤnに含まれたストロークデータ群と、レイヤn−kのレイヤに含まれたストロークデータ群とを、順序関係を維持しつつ、レイヤnに対応付ける処理である。ステップS122aを実行した後、プロセッサ55は、レイヤn−kを削除する(ステップS123a)。その後の処理は、
図14を参照して説明したとおりである。
【0132】
図17は、
図16に示したレイヤマージ処理の説明図である。同図左側には、1つのページ含まれるN枚のレイヤ1〜Nを示している。ユーザがレイヤnを指定してマージ操作を実行すると、プロセッサ55は、変数k=1という条件の下で、
図16に示したステップS122a,S123aを実行する。これにより、レイヤn−1がレイヤnにマージされ、レイヤn−1は削除されることになる。続いて、ユーザが再度マージ操作を実行すると、プロセッサ55は、変数k=2という条件の下で、
図16に示したステップS122a,S123aを実行する。これにより、レイヤn−2がレイヤnにマージされ、レイヤn−2は削除されることになる。このように、2度目以降のマージ操作においては、ユーザは、レイヤを指定することなくマージ操作を行うだけで、上へ上へとレイヤを結合していくことができる。したがって、本変形例によっても、事後的に簡便な方法で、レイヤを結合していくことが可能になる。
【0133】
以上説明したように、本実施の形態によれば、タブレットモードとペーパーモードとの2つの動作モードで動作するペンタブレット1に関する様々な課題を解決することが可能になる。したがって、タブレットモードとペーパーモードとの2つの動作モードで動作するペンタブレット1を提供することが可能になる。
【0134】
具体的には、
図2に示した通信部42が外部のコンピュータ10で実行されるデバイスドライバ50aとの間で通信を要求されているか否かを判定し、デバイスドライバ50aとの間の通信を要求されている場合にホバー座標とコンタクト座標とをデバイスドライバ50aに供給するタブレットモードで動作し、デバイスドライバ50aとの間の通信を要求されていない場合にホバー座標の少なくとも一部を破棄しコンタクト座標に基づいて生成されたストロークデータをメモリ43に記録するペーパーモードで動作するため、ペンタブレット1をコンピュータ10に対して手書きデータを供給する手書きデータ記録装置としても動作させる上で、ホバー座標によりメモリ43の容量を圧迫することを防ぐことが可能になる。
【0135】
また、連続するストロークをグループ(ページ)内のサブグループ(暫定レイヤ)ごとに区別してストロークデータを記録することが可能になるので、ページよりも細かい分類でストローデータ群を記録できるようになる。したがって、このストロークデータの供給を受けて手書きデータ描画方法を実行するコンピュータ20において、所定のサブグループに含まれるストロークデータを一括して削除したり、2以上のサブグループに属するストロークデータ群をマージしてレイヤを生成したり、といったユーザにとって便利な操作を実現することが可能になる。
【0136】
また、本実施の形態によるレイヤ編集処理によれば、レイヤnに対する編集操作に先立って第1及び第2の合成画像データが生成されるので、レイヤ構成を有する手書きデータを処理する際のコンピュータ20の負荷が軽減される。
【0137】
また、本実施の形態によるレイヤマージ処理によれば、コンピュータ20の側で、手書きデータを1つのページ又はレイヤに結合することが可能になる。
【0138】
以上、本発明の好ましい実施の形態について説明したが、本発明はこうした実施の形態に何等限定されるものではなく、本発明が、その要旨を逸脱しない範囲において、種々なる態様で実施され得ることは勿論である。
【0139】
例えば、上記実施の形態によるペンタブレット1は、ペーパーモードである場合にすべてのホバー座標を廃棄することとした(
図4のステップS23)が、例えばメモリ43の記憶容量に余裕がある場合などには、一部又は全部のホバー座標を記録することとしてもよい。
【0140】
また、上記実施の形態によるペンタブレット1は、検出した座標X,Yそのものを座標データの一部としてメモリ43に記録することとした。つまり、一連のコンタクト座標の集合によってストロークデータを構成したが、ペンタブレット1において補間処理を行い、その結果得られた制御点を、座標X,Yそのものに代えてメモリ43に記録することとしてもよい。この場合のストロークデータは、一連のコンタクト座標の集合を加工してなるデータの集合となる。