[第1実施例]
図1は、この発明の一実施例である情報処理装置の電気的な構成の一例を示すブロック図である。
図1を参照して、この発明の第1実施例である情報処理装置10はCPU12を含む。CPU12には、バス30を介してRAM14、タッチパネル制御回路16および描画制御回路18が接続される。また、タッチパネル制御回路16にはタッチパネル20が接続され、描画制御回路18にはディスプレイ22が接続される。
この第1実施例では、情報処理装置10がタブレット端末に適用される場合について説明するが、タブレット端末のみならず、スマートフォン、PCなどの比較的小型の情報機器ないし電子機器に適用される。ただし、電子黒板のような比較的大型の情報機器ないし電子機器に適用されてもよい。そして、情報処理装置10は、手書き入力に応じて、手書きの文字、図形、記号等がディスプレイ22に描画(表示)される。
また、この第1実施例では、入力手段の一例として、タッチパネル20が用いられる場合について説明するが、タッチパネル20以外の入力手段として、たとえばタッチパッドを用いてもよい。また、情報処理装置10には、他の入力手段として、タッチパネル20とは別に、操作パネルのようなハードウェアキーが設けられたり、ハードウェアのキーボードが接続されたりすることがある。
図1に戻って、CPU12は、情報処理装置10の全体的な制御を司る。RAM14は、CPU12のワーク領域およびバッファ領域として用いられる。
タッチパネル制御回路16は、タッチパネル20に必要な電圧などを付与するとともに、タッチパネル20のタッチ有効範囲内でのタッチ操作(タッチ入力)を検出して、そのタッチ入力の位置を示すタッチ座標データをCPU12に出力する。
タッチパネル20は、汎用のタッチパネルであり、静電容量方式、電磁誘導方式、抵抗膜方式、赤外線方式など、任意の方式のものを用いることができる。この第1実施例では、タッチパネル20としては、静電容量方式のタッチパネルがディスプレイ22の表示面上に設けられる。
描画制御回路18は、GPUおよびVRAMなどを含んでおり、CPU12の指示の下、GPUは、RAM14に記憶された手書き入力データ332および画像生成データ334(図6参照)を用いてディスプレイ22に画面(後述するタッチ画面100)を表示するための画面データをVRAMに生成し、生成した画面をディスプレイ22に表示する。ディスプレイ22としては、たとえばLCDやEL(Electro-Luminescence)ディスプレイなどを用いることができる。
このような構成の情報処理装置10では、手書き入力モードにおいて、ユーザがタッチパネル20を利用して文字、図形、記号など(以下、「文字等」ということがある。)を手書き入力(タッチ入力)すると、タッチパネル制御回路16は、そのタッチ入力を検出してタッチ位置に対応するタッチ座標データをCPU12に出力する。CPU12は、タッチパネル制御回路16から出力されたタッチ座標データに基づいてディスプレイ22に手書きの文字等を描画(表示)する。つまり、CPU12の指示の下、描画制御回路18において手書きの文字等がVRAM上に描画され、VRAM上に描画された手書きの文字
等を含む画像に対応する画像データがディスプレイ22に出力される。したがって、ユーザが手書きした文字等を含む画像がディスプレイ22に表示される。以下、この明細書においては、ユーザが文字等を手書きすることを前提とし、手書きの文字等を含む画像を「手書き画像」と呼ぶことにする。
図2(A)〜(D)は、手書き画像を拡大表示して修正する場合の操作例およびタッチ画面100の変化の一部を示す図解図である。図3(A)〜(D)は、図2(D)に後続する手書き画像を拡大表示して修正する場合の操作例およびタッチ画面100の変化の一部を示す図解図である。
たとえば、手書き入力モードでは、図2(A)〜(D)および図3(A)〜(D)に示すように、タッチ画面100がディスプレイ22に表示される。ただし、手書き入力モードが開始された時点においては、文字等はディスプレイ22に描画されていない。なお、上述したように、ディスプレイ22の表示面上にはタッチパネル20が設けられる(図8および図9についても同じ)。以下、タッチ画面100が表示される場合について同様である。
図示は省略するが、タッチ画面100には、たとえばペンアイコンや消しゴムアイコン等、それぞれ所定の機能を発揮するアイコン(機能ボタン)や描画の属性を設定するためのアイコン(属性ボタン)が表示される。ペンアイコンが選択(タッチ)されると、入力モードが設定され、ユーザの手指や専用のペンを用いて点や線を含む文字等を手書きすることができる。また、消しゴムアイコンが選択されると、手書き画像を消去するモードが設定され、手書き画像のうち、ユーザが手指や専用のペンでなぞった部分が消去される。また、属性ボタンは、線種、線色、線幅(太さ)を選択(設定)するためのボタンないしアイコンである。また、上記以外の機能(新規ページを開く、保存、元に戻すなど)を選択するためのアイコンなども表示される。
なお、これらのアイコンは、ユーザの操作に応じて、タッチ画面100に表示または非表示される。
たとえば、ユーザは、手指でタッチパネル20を操作する。タッチパネル20を用いた操作(入力)としては、タップ(短押し)、スライド(ドラッグ)、フリック、ロングタッチ(長押し)などがあり、この第1実施例では、これらを「タッチ入力」または単に「入力」のように総称することがある。また、タッチパネル20をタッチしていない状態からタッチしている状態に変化することをタッチオンと言い、タッチパネル20をタッチしている状態からタッチしていない状態に変化することをタッチオフと言う。継続的なタッチ入力つまりスライドやフリックによる入力に対しては、タッチパネル20は、現在のタッチ位置に対応するタッチ座標データを所定周期よりも短い周期で出力する。たとえば、所定周期は、1〜数フレームであり、1フレームは1/30秒または1/60秒である。
一般的なタブレット端末では、ユーザが文字、図形または記号などを手書きすると、手書きの入力についての軌跡に従う線がタッチ画面100に表示(描画)される。つまり、手書き画像がタッチ画面100に表示される。
図2(A)からも分かるように、ユーザが文字等を手書きする場合には、誤って書いてしまうことがある。この例では、ユーザがローマ字をアルファベット順に左上から書いた際に、2行目において“EFGH”と書くべきところ、誤って“EYGH”と書かれている。このような誤記を修正する場合には、一般的には、ユーザが消しゴムアイコンをタッチすることにより、消しゴム機能が実行され、ユーザが指でタッチしている位置に消しゴムカーソルが表示される。そして、ユーザが指でタッチ画面100上をなぞると、指(タ
ッチ位置)の移動に従って消しゴムカーソルが移動され、消しゴムカーソル(ユーザの手指や専用のペン)が移動された部分の点や線(手書き画像)が消去される。そして、ユーザがペンアイコンをタッチすると、再び手書き入力モードとなり、正しい内容(文字等)が手書きされる。
しかしながら、ディスプレイ22の大きさの制約等により、手書きした文字が小さく、また、文字の間隔や行間が狭い場合には、修正する必要の無い点や線までも消去してしまうことがある。
そのため、画面を拡大して手書き画像を修正する方法が一般的である。この場合、ユーザの操作によって、拡大機能を選択するステップ、拡大(拡大率を設定)するステップ、修正するための機能を選択するステップ、および拡大された画像を元の大きさに戻すステップが実行される。このように、多くのステップを実行する必要があり、ユーザの手数が多くなってしまう。つまり、操作が面倒である。
したがって、この第1実施例では、描画された手書き画像を簡単に拡大して修正し、元の大きさに戻すことができるようにしてある。以下、具体的に説明する。
簡単に説明すると、この第1実施例では、所定のスライドが検出された場合に、スライドにより指定された指定範囲に含まれる手書き画像が編集可能な状態に設定されるとともに、スライドにより指定された指定範囲の手書き画像が拡大表示される。そして、拡大表示された指定範囲の手書き画像が修正され、所定のスライドを行った手指を離す(タッチオフ)することにより、指定範囲の手書き画像が元の大きさに戻される。
図2(B)に示すように、ユーザがタッチ画面100上に2本の指でタッチ(複数のタッチ)をした後に、図2(C)に示すように、2本の指でいずれかの方向(第1方向)に沿って直線的にスライドを行う。このように複数の指で直線的なスライドが行われた場合に、拡大表示して修正するためのモード(以下、「拡大編集モード」ということがある)が設定される。これ以降では、拡大編集モードを設定するためのスライドを第1スライドと呼ぶことにする。したがって、第1スライドが検出されると、拡大編集モードが設定(に移行)される。ここでは、ユーザが左手の人差し指と中指とを用いて、タッチ画面100(ディスプレイ22の表示面)の左右方向において、右から左に向かって第1スライドを行う例が示される。つまり、左右方向が第1方向である。また、ここでは、タッチ画面100に表示された“EYGH”の行をなぞるように第1スライドが行われたとする。
なお、この第1実施例では、第1スライドする場合に、2本の指を用いるようにしてあるが、3本以上の指が用いられてもよい。また、上述した複数のタッチとは、ユーザの手指によるタッチに限定されず、専用のペン(タッチペン)等の指示具によるタッチも含まれる。さらに、ユーザがタッチ画面100上に複数のタッチをした後に、一部の指(たとえば両手の指で複数のタッチをした場合の一方の手の指)で第1方向に沿って直線的にスライドを行う場合も第1スライドとして検出する。また、複数の指で直線的なスライドが行われると第1スライドが検出されるようにしてあるのは、後述する第2スライドを検出する場合に、第1スライドとの向き(角度)の違いを検出するためである。
したがって、ユーザが1本の指でタッチし、スライドした場合には第1スライドは検出されず、ペンモード、消しゴムモード等、そのとき選択されているモードに応じて他の処理が行われる。また、複数の指でタッチ画面100(タッチパネル20)がタッチされた場合でも、直線的なスライドが行われなければ、第1スライドは検出されない。
図2(D)に示すように、上述した第1スライドに続いて、ユーザが当該第1スライド
の第1方向とは異なる方向(第2方向)にスライドを行う。このように、第1スライドに続いて、異なる方向へのスライドが行われると、拡大編集モードにおいて、拡大表示する倍率を指定するモード(以下、「倍率指定モード」ということがある)が設定される。これ以降では、倍率指定モードを設定するためのスライドを第2スライドと呼ぶことにする。したがって、第2スライドが検出されると、倍率指定モードが設定(に移行)される。ここでは、タッチ画面100(ディスプレイ22の表示面)の上下方向において、上から下に向かって第2スライドを行う例が示される。つまり、上下方向が第2方向である。
ここで、第1実施例では第1方向が左右方向であり、第2方向が上下方向である場合を例に説明したが、これに限定される必要はない。たとえば、ユーザは、右から左に第1スライドを行い、これに続けて、下から上に第2スライドを行ってもよい。また、左手で手書きするユーザは、左から右に第1スライドを行い、これに続けて、上から下に第2スライドを行ってもよい。同様に、左手で手書きするユーザは、左から右に第1スライドを行い、これに続けて、下から上に第2スライドを行ってもよい。
また、第1方向と第2方向とが90°異なる例を示したが、これに限定される必要はない。たとえば、第1方向に対して30°以上異なる方向が第2方向であっても良い。第1方向に対する第2方向の角度は、ユーザの使用態様等を考慮して適宜設定されればよい。
第2スライドが検出されると、第1スライドの軌跡に応じて、タッチ画面100に描画された手書き画像の一部または全部を含む指定範囲が設定される。この第1実施例では、指定範囲は、第1スライドの軌跡と交差したオブジェクトをすべて含むように設定される四角形の範囲である。図2(B)〜(D)に示した例では、指定範囲は、第1スライドの軌跡と交差した手書き画像の“EYGH”を全て含まれるように設定される。たとえば、第1スライドの軌跡と交差した手書き画像のうち、最上位置の点、最下位置の点、最も左に位置する点、および最も右に位置する点が検出され、これらの点を含む四角形の範囲が指定範囲に設定される。たとえば、指定範囲は、最上位置の点および最下位置の点を通るディスプレイ22の左右方向に平行な直線と、最も左に位置する点、および最も右に位置する点を通るディスプレイ22の上下方向に平行な直線で規定される四角形を少し大きくした範囲に設定される。
また、この第1実施例では、設定された指定範囲に相当する枠(以下、「拡大枠」という)200が表示され、ユーザが指定範囲を視覚的に認識できるようにしてある。ただし、ユーザに指定範囲を視覚的に認識させる方法は限定されるべきでない。図2(D)等に示ように、指定範囲は、実線の拡大枠200で表示しても良いし、タッチ画面100のうち、指定範囲以外をグレーアウト表示するようにしても良い。
また、図3(A)に示すように、第2スライドの移動量に応じた拡大率で、指定範囲が拡大される。このとき、拡大枠200も指定範囲の大きさに合わせて拡大される。
そして、第2スライドが検出された後に、その第2スライドが停止され、ユーザの指が同じ位置を所定時間(たとえば3〜5秒)継続してタッチしている場合、つまり所定時間以上のロングタップ(長押し)が検出された場合には、拡大率が固定される。たとえば、第2スライドが検出された後に検出される所定時間以上のロングタップを拡大率固定操作と呼ぶことにする。したがって、拡大率固定操作が検出されると、指定範囲の拡大率が固定される。このため、指定範囲の拡大率が固定された後は、ユーザの第1スライドおよび第2スライドした複数の指が動いたとしても、タッチオフされない限り指定範囲の拡大率が変化することはない。したがって、手振れにより、指定範囲が変動するのを防止することができる。
また、拡大率固定操作が検出された場合には、図3(B)に示すように、拡大表示された指定範囲(拡大枠200)の近傍にアイコンバー202が表示される。
ここで、アイコンバー202は、指定範囲に含まれる手書き画像を修正するために必要な機能を選択するための各種のアイコンを含む。この第1実施例では、アイコンバー202には、消しゴム機能についてのアイコン202aおよびペン機能についてのアイコン202bなどが含まれる。他のアイコンとしては、属性を設定するためのアイコンなどが該当する。
なお、消しゴム機能およびペン機能については上述したとおりであるため、重複した説明は省略する。
この指定範囲に含まれる手書き画像を修正する操作(修正操作)は、上述した第1スライドおよび第2スライドを行った指とは異なる指を用いたタッチ入力で行われる。この第1実施例では、第1スライドおよび第2スライドが左手の指を用いて行われるため、修正操作は右手の指を用いて行われる。
たとえば、アイコン202aが選択されると、消しゴム機能が実行され、指でタッチしている位置に消しゴムカーソルが表示される。この消しゴム機能を用いて、図3(B)に示すように、ユーザは、“EYGH”のうち、誤って書かれた“Y”を消す。このように、指定範囲内の手書き画像が拡大されるので、消去する操作がし易く、また、消去する必要のない手書き画像を誤って消去してしまうこともほとんどない。
続いて、アイコン202bが選択されると、ペン機能が実行され、指定範囲の範囲内において右手の指でタッチ入力を行うことにより新たに文字等が手書きされる。したがって、図3(C)に示すように、“Y”が消去されたスペースに“F”が手書きされる。つまり、手書き画像が修正される。
その後、図3(D)に示すように、左手の複数の指がタッチオフされると、指定範囲の拡大表示が解除され、指定範囲の手書き画像は元の大きさに戻される。つまり、拡大修正モードが終了される。このとき、たとえば、入力モードが設定される。ここでは、修正操作が終了した後に左手の複数の指がタッチオフされた場合に拡大表示が解除される場合についてのみ説明してあるが、修正操作の途中で、左手の複数の指がタッチオフされた場合にも指定範囲の拡大表示が解除される。つまり、修正操作を中断することもできる。
図4は図1に示したRAM14のメモリマップ300の一例を示す。図4に示すように、RAM14は、プログラム記憶領域302およびデータ記憶領域304を含む。プログラム記憶領域302には、情報処理プログラムが記憶される。情報処理プログラムは、入力検出プログラム310、画像生成プログラム312、表示プログラム314、第1スライド検出プログラム316、第2スライド検出プログラム318、範囲設定プログラム320、拡大率設定プログラム322、修正プログラム324および拡大解除プログラム326を含む。
入力検出プログラム310は、タッチパネル制御回路16から出力されたタッチパネル20におけるタッチ入力が示すディスプレイ22の表示面の位置についてのタッチ座標データを取得し、データ記憶領域304に時系列に従って記憶するためのプログラムである。ただし、入力検出プログラム310は、情報処理装置10に接続されたハードウェアのキーボードや情報処理装置10に設けられたハードウェアの操作パネルからの入力を検出するためのプログラムでもある。
画像生成プログラム312は、後述する画像生成データ334または/および修正用画像データ342を使用したり、入力検出プログラム310に従って検出されたタッチ座標データを使用したりして、タッチ画面100に対応する画像データを生成するためのプログラムである。具体的には、画像生成プログラム312が実行されると、CPU12の指示の下、描画制御回路18において、GPUがタッチ画面100に対応する画像データをVRAMに描画する。ここで、VRAMには、メイン領域400と修正用領域410とが設けられ、通常時にはメイン領域400が使用される。また、拡大編集モードが設定されると、指定範囲に含まれる手書き画像がコピーされたり、指定範囲に含まれる手書き画像が拡大されたり、指定範囲に含まれる手書き画像が修正(編集)されたりするために、修正用領域410が使用される。メイン領域400および修正用領域410並びに指定範囲の拡大等については、後で詳細に説明することにする。
表示プログラム314は、画像生成プログラム312に従って生成された画像データをディスプレイ22に出力するためのプログラムである。したがって、タッチ画面100がディスプレイ22に表示される。また、表示プログラム314は、必要に応じてアイコンバー202をタッチ画面100に表示する。
第1スライド検出プログラム316は、第1スライドを検出するためのプログラムである。具体的には、第1スライド検出プログラム316は、入力検出プログラム310に従って検出されたタッチ座標データを参照して、複数のタッチ(タッチ入力)があるかどうか、また、当該複数のタッチの一部または全部による第1方向へのスライドがあるかどうかを判断する。たとえば、第1スライド検出プログラム316は、時系列に従って検出されたタッチ座標を用いて、先に検出されたタッチ座標が示すタッチ位置を始点とし、その次に検出されたタッチ座標が示すタッチ位置を終点とするベクトルを算出する。そして、算出されたベクトルの方向が第1方向に沿っているかどうかによって、第1方向へのスライドがあるかどうかを判断する。また、第1スライド検出プログラム316は、第1スライドを検出すると、当該第1スライドについてのタッチ座標データ群(後述する第1スライドデータ336)をデータ記憶領域に記憶するためのプログラムでもある。
第2スライド検出プログラム318は、第2スライドを検出するためのプログラムである。具体的には、第2スライド検出プログラム318は、入力検出プログラム310に従って検出されたタッチ座標データを参照して、第1スライドに続いて、当該第1スライドにおける第1方向とは異なる第2方向へのスライドがあるかどうかを判断する。たとえば、第2スライド検出プログラム318は、第1スライド検出プログラム316と同様にタッチ座標を用いてベクトルを算出し、算出されたベクトルの方向が第2方向に沿っているかどうかによって、第2方向へのスライドがあるかどうかを判断する。また、第2スライド検出プログラム318は、第2スライドを検出すると、当該第2スライドについてのタッチ座標データ群(後述する第2スライドデータ338)をデータ記憶領域に記憶するプログラムでもある。
範囲設定プログラム320は、第2スライド検出プログラム318により第2スライドが検出された場合に第1スライドの軌跡に応じて、指定範囲を設定するためのプログラムである。具体的には、範囲設定プログラム320は、手書き入力データ332および第1スライドデータ336を参照して、第1スライドの軌跡と交差した手書き画像が全て含まれるように、指定範囲を設定する。ここで、範囲設定プログラム320により指定範囲が設定されると、画像生成プログラム312に従って、メイン領域400に描画(記憶)された手書き画像の画像データのうち、設定された指定範囲に含まれる画像データがコピーされ、VRAMの修正用領域410にコピーされた画像データ(修正用画像データ342)が記憶される。このとき、修正用画像データ342は、コピーされた画像データと同じサイズで記憶される。
なお、指定範囲(画像データのサイズ)が大きい場合などには、修正用画像データ342は、拡大しても修正用領域410からはみ出さないようにするために、画像データのコピーが縮小されたデータでもよい。ただし、この場合には、コピー元であるメイン領域400における指定範囲に含まれる手書き画像についての画像データのサイズと、縮小された画像データのサイズとの比率もデータ記憶領域304に記憶される。これは、指定範囲の手書き画像を元の大きさに戻す場合に必要だからである。
拡大率設定プログラム322は、第2スライド検出プログラム318により第2スライドが検出された場合に、第2スライドの移動量に応じて指定範囲の手書き画像の拡大率を設定するためのプログラムである。具体的には、拡大率設定プログラム322は、第2スライドデータ338を参照して、第2スライドの始点および終点を検出し、当該始点および終点に基づいて第2スライドの移動量を算出する。そして、算出された第2スライドの移動量に基づいて、指定範囲の拡大率を設定する。その後、拡大率設定プログラム322で設定された拡大率に基づいて、表示プログラム314が指定範囲に含まれる手書き画像を拡大表示させる。
たとえば、図5(A)はVRAMに設けられるメイン領域400の一例を示す、図5(B)はVRAMに設けられる修正用領域410の一例を示し、そして、図5(C)は修正用領域410において指定範囲に含まれる手書き画像が拡大された状態の一例を示す。
メイン領域400はたとえばディスプレイ22の表示面に相当する大きさであり、後述する手書き入力データ332に従って点や線が描画される。したがって、図2(A)等に示したタッチ画面100に対応する内容の画像データが生成される。また、図5(A)において点線の四角枠で示す範囲は指定範囲に装置し、指定範囲は後述するように点Pおよび点Qによって位置および大きさが決定される。
修正用領域410はメイン領域400と同じ大きさに設定され、上述したように、指定範囲が設定されると、指定範囲に含まれる手書き画像の画像データがコピーされ、修正用領域410の所定位置に貼り付けられる。この実施例では、修正用領域410の左上の頂点に指定範囲の点Pが重なるように、コピーされた画像データが貼り付けられる。
修正用領域410にコピーされた画像データは、第2スライドの移動量に応じて拡大される。たとえば、2倍に拡大した状態が図5(C)に示される。点Pの位置は固定され、点Qの位置が変化される。このとき、後述する編集用画像データ336も更新(拡大)される。拡大編集モードにおいては、この修正用領域410にコピーされた画像データや拡大された画像データがメイン領域400に描画された画像データの前面に貼り付けられる。このとき、コピーされた画像データや拡大された画像データは、コピー元の指定範囲の画像データと点Pの位置が重なるように貼り付けられる。
なお、第1実施例では、メイン領域400と修正用領域410を同じ大きさに設定してあるが、限定される必要はない。修正用領域410では、画像データが拡大されるため、メイン領域400よりも大きく設定されてもよい。
図4に戻って、修正プログラム324は、ユーザの操作に従って、拡大表示された手書き画像を修正するためのプログラムである。具体的には、修正プログラム324は、指定範囲に含まれる手書き画像が拡大表示された状態で、指定範囲に含まれる手書き画像の修正操作が行われると、この修正操作に応じて、修正用画像データ342が更新され、したがって、図5(C)に示した修正用領域410に記憶される画像データが更新(修正)される。修正用領域410に記憶された修正用画像データ342を変更(修正)する。具体
的には、消しゴム機能で手書き画像が消去されると、対応する一部または全部の修正用画像データ342が消去され、ペン機能で文字等が手書きされると、入力検出プログラム310に従って検出されたタッチ座標データで、修正用画像データ342が更新される。つまり、修正操作は、修正用画像データ342を用いて行われる。ただし、消しゴム機能やペン機能などはユーザによって適宜選択される。
拡大解除プログラム326は、指定範囲が拡大表示されているときに第1スライドおよび第2スライドをした指がタッチオフされた場合、指定範囲に含まれる手書き画像の拡大表示を解除する(元に戻す)ためのプログラムである。具体的には、拡大解除プログラム326は、入力検出プログラム310に従って検出されたタッチ座標データを使用して、第2スライドがされた後に、第1スライドおよび第2スライドをした指のタッチオフがあった場合に、指定範囲に含まれる手書き画像を元の大きさに戻す。第1実施例では、修正用画像データ342が指定範囲データ340に基づいて、修正用領域410にコピーされたときの元の大きさに戻され(縮小され)、これに応じて、修正用領域410に記憶(描画)された画像データも元の大きさに戻される。そして、修正用画像データ342がメイン領域の画像データにおいて指定範囲データ340で規定される位置に上書きされる。このとき、上書きされた画像データに従って手書き入力データ332が更新される。
なお、図示は省略するが、情報処理プログラムには、タッチされたアイコンを検出して、アイコンに割り当てられた機能を実行するためのプログラムや手書き画像の画像データを不揮発性のメモリに保存するためのプログラムなども記憶される。
データ記憶領域304には、タッチ座標データ330、手書き入力データ332、画像生成データ334、第1スライドデータ336、第2スライドデータ338、指定範囲データ340、修正用画像データ342および拡大率データ344などが記憶される。
タッチ座標データ330は、入力検出プログラム310に従って検出(取得)されたタッチ座標データであり、時系列に従って記憶される。
手書き入力データ332は、ユーザによって手書きた文字等、すなわち手書き画像についてのタッチ座標データの集合である。具体的には、手書き入力データ332は、タップによる点、または、スライドによる線を、点または線毎に管理するテーブルのデータである。ただし、線については、スライドにおけるタッチオンからタッチオフまでに検出された複数のタッチ入力に対応するタッチ座標データが記憶(管理)される。また、アイコン等の指示や任意のアクションの指示のためのタッチ座標データは手書き入力データ332に含まれない。
なお、詳細な説明は省略するが、点や線毎に識別情報が付されて識別可能に管理されるとともに、点や線毎に属性情報(線種、線色および線幅の情報)も管理される。
画像生成データ334は、タッチ画面100のような各種の画面に対応する画像データを生成するためのポリゴンデータやテクスチャデータなどのデータである。また、画像生成データ334には、タッチ画面100に表示される各種のアイコンについての画像データも含まれる。
第1スライドデータ336は、第1スライドの軌跡についてのタッチ座標データであり、タッチされた複数の指の各々のスライドについて記憶される。第2スライドデータ338は、第2スライドの軌跡についてのタッチ座標データあり、タッチされた複数の指の各々のスライドについて記憶される。
指定範囲データ340は、指定範囲の位置および大きさを規定するためのデータである。この第1実施例では、指定範囲データ340は、四角形の指定範囲のうちの左上の頂点(点P)と右下の頂点(点Q)についての座標データで構成される。ただし、指定範囲データ340は、四角形の指定範囲のうちの右上の頂点と左下の頂点についての座標データで構成されてもよい。
修正用画像データ342は、タッチ画面100において設定された指定範囲に含まれる画像データをコピーした画像データである。上述したように、コピーした画像データが縮小される場合には、修正用画像データ342には、サイズの比率も含まれる。
拡大率データ344は、指定範囲に含まれる手書き画像の画像データ(修正用画像データ342)を拡大させる拡大率を規定するためのデータである。拡大率設定プログラム322により設定された拡大率が拡大率データ344として一時的に記憶される。なお、修正用画像データ342が記憶された当初においては、拡大率データ344は等倍(一倍)に設定される。
なお、データ記憶領域304には、情報処理プログラムの実行に必要な他のデータが記憶されたり、情報処理プログラムの実行に必要なタイマ(カウンタ)やレジスタが設けられたりする。
図6および図7は図1に示したCPU12の拡大表示制御処理を示すフロー図である。
情報処理装置10において描画アプリケーションが起動されると、ユーザの指示によって、またはデフォルトの設定によって、CPU12は、手書き入力モードを設定する。すると、CPU12は、図6に示す情報処理を開始し、ステップS1で、複数のタッチを検出したかどうかを判断する。具体的には、CPU12は、タッチパネル制御回路16から出力されたタッチパネル20におけるタッチ入力の位置を示すタッチ座標データを取得してデータ記憶領域304に時系列に従って記憶し、同時に検出されたタッチ座標データが複数あるかどうかを判断する。
ステップS1で“NO”であれば、つまり、複数のタッチが検出されなければ、ステップS3で、他の操作に応じた処理を実行して、ステップS1に戻る。たとえば、ステップS3では、ユーザが文字等を手書きしたことに応じて、手書き画像がディスプレイ22に描画される。また、ユーザが所定のアイコンをタッチしたことに応じて、当該アイコンに設定された機能が実行される。このとき、CPU12は、取得したタッチ座標データが示す位置にアイコンが表示されていなければ、当該タッチ座標データを、手書き入力データ332としてデータ記憶領域304に記憶する。また、複数のタッチによるスライドである場合には、拡大編集モードに移行するためのアクションであるため、このとき検出されたタッチ座標データ330は手書き入力データ332として記憶されない。ただし、手書き入力データ332としてタッチ座標データを記憶(検出)する処理(タッチ入力検出処理)は、図6および図7に示す情報処理と並行して実行される。
一方、ステップS1で“YES”であれば、つまり、複数のタッチが検出されれば、ステップS5で、各タッチのタッチ位置を検出(追跡)して、ステップS7で、複数のタッチがスライドされたかどうかを検出する。具体的には、CPU12は、取得(検出)されたタッチ座標データ330を参照して、追跡している複数のタッチのタッチ位置が変化しているかどうかを判断する。
ステップS7で“NO”であれば、つまり、複数のタッチでスライドされていなければ、ステップS3に進む。一方、ステップS7で“YES”であれば、つまり、複数のタッ
チがスライドされていれば、ステップS9で、第1スライドを検出する。このとき、拡大編集モードが設定される。ただし、上述したように、複数のタッチでスライドされていても、直線的なスライドでない場合には第1スライドは検出されない。
次に、ステップS11では、CPU12は、複数のタッチが第1スライドとは異なる方向(この第1実施例では、第1スライドの向きと90°異なる向き)にスライドされたかどうかを検出する。具体的には、CPU12は、取得(検出)されたタッチ座標データ330を参照して、追跡している複数のタッチが第1スライドの第1方向とは異なる第2方向に変化しているかどうかを判断する。
ステップS11で“NO”であれば、つまり、複数のタッチが第1スライドとは異なる方向にスライドされていなければ、ステップS3に進む。一方、ステップS11で“YES”であれば、つまり、複数のタッチが第1スライドと異なる方向にスライドされていれば、ステップS13で、第2スライドを検出する。
続いて、ステップS15では、第1スライドの軌跡を記憶する。具体的には、CPU12は、ステップS1(またはS7)で“YES”と判断したときから、ステップS11で“YES”と判断する直前までのタッチ座標データ群を第1スライドデータ336として記憶する。
ステップS17では、ステップS15で検出した第1スライドの軌跡に基づいて、指定範囲を設定し、設定した指定範囲に拡大枠200を表示する。このとき、CPU12は、メイン領域に記憶(描画)された画像データのうち、指定範囲に含まれる画像データをコピーして、修正用画像データ342に記憶し、これに従ってVRAMの修正用領域410にコピーされた画像データが描画される。そして、修正用領域410に描画された画像データが、メイン領域400に描画された画像データの前面であり、指定範囲の位置に重ねられてディスプレイ22に表示される。
図7に示すように、次のステップS19では、第2スライドの移動量を検出する。具体的には、CPU12は、ステップS13で第2スライドを検出してからのタッチ座標データ群を第2スライドデータ338として記憶し、この第2スライドデータ338の始点と終点(現在の位置)とから第2スライドの移動量を計算(検出)する。続くステップS21では、ステップS19で検出した第2スライドの移動量に基づいて、指定範囲の拡大率を設定する。そして、ステップS23で、ステップS21で設定した拡大率に基づいて、指定範囲の手書き画像を拡大表示する。ここでは、ステップS21で設定された拡大率に従って、修正用領域410に記憶(描画)された指定範囲の画像データが拡大される。
次に、ステップS25では、複数のタッチが所定時間同じ位置にあるかどうかを判断する。つまり、CPU12は、タッチされた位置が移動せずに、または、ほとんど移動せずに、ロングタップされている時間が所定時間(たとえば、3〜5秒)を超えたかどうかを判断する。
ステップS25で“NO”であれば、つまり、複数のタッチが移動している場合、または、複数のタッチが同じ位置にある時間が所定時間に満たない場合には、ステップS19に戻る。一方、ステップS25で“YES”であれば、つまり、複数のタッチが所定時間同じ位置にあることが検出された場合には、ステップS27で、指定範囲の拡大率を固定する。つまり、CPU12は、タッチされた位置が移動したとしても、タッチオフされない限り、ステップS25で“YES”と判断したときの指定範囲の拡大率から変化させない。
次に、ステップS29では、指定範囲の画像データ(修正用画像データ342)に修正操作があるかどうかを判断する。ステップS29で“NO”であれば、つまり、指定範囲の画像データ(修正用画像データ342)に修正操作がなければ、同じステップS29に戻る。一方、ステップS29で“YES”であれば、つまり、指定範囲の画像データ(修正用画像データ342)に修正操作があれば、ステップS31で、指定範囲に含まれる画像データを編集する。具体的には、CPU12は、ユーザの操作に従って、修正用画像データ342を修正し、修正用領域410に描画された画像データを更新する。
次に、ステップS33では、複数のタッチを検出しているかどうかを判断する。つまり、CPU12は、ステップS33で、タッチ座標データ330を参照して、第1スライドおよび第2スライドを行った複数の指がタッチパネル20から離された(タッチオフされた)かどうかを判断する。
ステップS33で“YES”であれば、つまり、複数のタッチを検出していれば、ステップS29に戻る。一方、ステップS33で“NO”であれば、つまり、複数のタッチを検出していなければ、ステップS35で、拡大表示を解除する。このとき、CPU12は、拡大編集モードを終了し、指定範囲データ340に基づいて、修正用画像データ342の拡大率を元の大きさに戻し、この修正用画像データ342をメイン領域の画像データの指定範囲の画像データに上書きし、情報処理を終了する。
この第1実施例によれば、複数のタッチによる第1スライドに続いて、当該第1スライドとは異なる方向への第2スライドを検出した場合に、第1スライドにおいて指定された手書き画像の一部または全部を第2スライドの移動量に応じて拡大表示するので、スライドを行うだけで画面の一部を拡大して修正することができる。したがって、描画された手書き画像を簡単に修正することができる。
また、第1実施例によれば、第1スライドおよび第2スライドを行った複数の指がタッチパネル20から離れると、指定範囲に含まれる手書き画像が自動的に元の大きさに戻されるので、拡大した手書き画像を元に戻す手間を省くことができる。
さらに、第1実施例によれば、第1スライドの軌跡に応じて、指定範囲の大きさが設定されるので、拡大表示させる手書き画像をユーザのタッチ入力により自由に設定することができる。
また、第1実施例によれば、複数のタッチが同じ位置を所定時間継続して指示した場合に、拡大表示される指定範囲の拡大率を固定するので、修正操作を行っているときに、複数のタッチを行っている指が動いてしまっても、拡大枠200は変化されない。したがって、描画された手書き画像の修正をし易くなる。
さらに、拡大表示された指定範囲の近傍に、指定範囲に含まれる手書き画像を修正(編集)するための所定の機能を発揮するアイコンを表示させるので、拡大表示させる手書き画像の修正をし易くなり、情報処理装置10の使い勝手を向上させることができる。
[第2実施例]
第2実施例の情報処理装置10は、指定範囲の拡大率を固定する方法が異なる以外は、第1実施例の情報処理装置10と同じであるため、第1実施例と異なる内容について説明し、重複した説明については省略することにする。
簡単に説明すると、第2実施例では、第2スライドが検出された後に、指定範囲(拡大枠200)内において、第1スライドおよび第2スライドを行った指とは別の指によるタッチが検出された場合に、指定範囲の拡大率が固定される。
図8は、第2実施例におけるCPUの情報処理の一部を示すフロー図である。
具体的には、図8に示すように、CPU12は、図6および図7に示した情報処理において、ステップS25に代えて、ステップS41の処理が実行される。したがって、CPU12は、ステップS23の処理を実行すると、ステップS41で、指定範囲内でタッチされたかどうかを判断する。
ステップS41で“NO”であれば、つまり、指定範囲内でタッチされていなければ、ステップS19に戻る。一方、ステップS41で“YES”であれば、つまり、指定範囲内でタッチされれば、ステップS27に進む。
なお、ステップS1〜ステップS23およびステップS27〜ステップS35は、第1実施例で示した内容と同じであるため、重複した説明は省略する。
この第2実施例においても、第1実施例と同様に、描画された手書き画像の簡単に修正することができる。
なお、第2実施例においては、第2スライドが検出された後に、指定範囲(拡大枠200)内でタッチが検出された場合に、拡大率を固定するようにしたが、これに限定される必要はない。たとえば、第2スライドが検出され、拡大率が固定される前に、アイコンバー202を拡大枠200の近傍に表示するようにし、第2スライドが検出された後に、アイコンバー202のいずれかのアイコン(202a、202bなど)がタッチされた場合に、修正(編集)が開始されたと判断して、拡大率が固定されてもよい。
[第3実施例]
第3実施例の情報処理装置10は、指定範囲の設定方法が異なる以外は、第1実施例の情報処理装置10と同じであるため、第1実施例と異なる内容について説明し、重複した説明については省略することにする。
簡単に説明すると、第3実施例では、第1スライドを行う複数の指で挟んだ手書き画像を含むように指定範囲が設定される。
図9(A)、(B)は、第3実施例における手書き画像を拡大表示して修正する場合のタッチ画面100の一例を示す図解図である。
具体的には、図9(A)に示すように、ユーザがタッチ画面100上に2本の指でタッチ(複数のタッチ)する。このとき、第3実施例では、ユーザは、左手の人差し指と中指を上下方向に離してタッチしている。また、図9(A)に示す例では、第1スライドは、タッチ画面100の左右方向において右から左に向かって行われている。
たとえば、第1スライドは2本の指で行われるので、第1スライドを行った指(タッチ位置)が所定の距離以上離れている場合、第1スライドには、互いに所定の距離以上離れた2つの軌跡が含まれる。つまり、入力検出プログラム310は、第1スライドとして、タッチパネル20において所定の距離以上離れた2つのタッチ入力の位置が連続して移動した2つの軌跡を示すタッチ座標データを検出(取得)する。
そして、この第3実施例では、指定範囲は、第1スライドに含まれる2つの軌跡に基づいて設定される。基本的には、指定範囲は、第1スライドに含まれる2つの軌跡に含まれる複数の点のうち、最上位置の点および最下位置の点、最も左に位置する点、および最も右に位置する点を用いて設定される。具体的には、指定範囲は、最上位置の点および最下
位置の点を通るディスプレイ22の左右方向に平行な直線と、最も左に位置する点、および最も右に位置する点を通るディスプレイ22の上下方向に平行な直線で規定される四角形の範囲に設定される。
ただし、上記のようにして指定範囲を設定した場合に、この指定範囲を規定する四角形の辺と交差する手書き画像(点または線)がある場合は、当該手書き画像をすべて含むように、四角形の辺が平行移動されて拡大した範囲が指定範囲に設定される。
なお、指定範囲が設定された後の動作は、第1実施例で示した内容と同じであるため、重複した説明は省略する。
この第3実施例によれば、第1スライドが上下方向において所定距離以上離れた2本の指で行われた場合、当該2本の指の間の距離に応じて指定範囲の大きさが決まるので、ユーザが第1スライドを行うときに設定したい範囲に合わせてタッチする2本の指の距離を調整するだけで、指定範囲の大きさを自由に設定することができる。したがって、第1実施例の効果に加えて、情報処理装置10の使い勝手を向上させることができる。
なお、上述の実施例では、指定範囲に含まれる画像データを修正用画像データ342としてコピーし、VRAMの修正用領域410に貼り付けて(描画して)修正するように説明したが、これに限定される必要はない。たとえば、情報処理装置10が文字認識機能を有する場合は、手書き画像に含まれる文字が文字認識される。そして、指定範囲において文字認識された文字が含まれる場合は、メイン領域400に描画された手書き画像の画像データに加えて、文字の表示位置、文字の種類(どの文字であるかを示す情報)、文字の大きさ等を示すオブジェクト情報データが修正用画像データ342としてコピーされるようにしてもよい。この場合、指定範囲に含まれる画像データが拡大表示されると、同じ拡大率でオブジェクト情報データに含まれる文字の大きさを示すデータが更新されるとともに、文字の表示位置のデータも更新される。また、修正操作により、文字の表示位置を示すデータおよび文字の種類を示すデータの少なくとも一方が更新される。そして、修正操作が終了した後に、文字の表示位置を示すデータおよび文字の大きさを示すデータが更新され(元に戻され)、メイン領域400における文字の表示位置および文字の種類の少なくとも一方が変更される。つまり、修正(編集)された内容で、手書き入力データ332が更新(上書き)される。この場合、現在のオブジェクト情報データのみならず、過去複数世代のオブジェクト情報データを記憶するようにしておけば、Undo機能(一つ前に戻す機能)を実行することにより、修正前の状態に戻すことができる。
また、拡大編集モードが設定された場合は、VRAMのメイン領域400に描画された手書き画像の画像データ(手書き入力データ332)をロックして、編集できないようにしてもよい。このようにすれば、拡大編集モードにおいて誤ってメイン領域400に描画された画像データが編集されるのを防止することができる。
また、第1実施例および第2実施例に示した態様に、第3実施例を組み合わせて採用することも可能である。この場合、第1実施例で示した指定範囲の設定方法と、第3実施例で示した指定範囲の設定方法とが、第1スライドを行った指の間隔に応じて使い分けられる。
さらに、上述の実施例で挙げた具体的な数値、画面構成等は一例であり、実際の製品に応じて適宜変更することが可能である。