以下、本発明の実施の形態について図面を参照して説明する。以下の説明では同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
図1は、本実施の形態の一つにおけるMFPの外観を示す斜視図である。図2は、操作パネルの一例を示す平面図である。図1および図2を参照して、MFP100は、原稿を読み取るための原稿読取部130と、原稿を原稿読取部130に搬送するための自動原稿搬送装置120と、原稿読取部130が原稿を読み取って出力する画像データに基づいて用紙等に画像を形成するための画像形成部140と、画像形成部140に用紙を供給するための給紙部150と、ユーザーインターフェースとしての操作パネル160とを含む。
操作パネル160は、MFP100の上面に設けられる。操作パネル160は、表示部161と、タッチパネル165と、ハードキー部167とを含む。表示部161は、例えば、液晶表示装置(LCD)であり、ユーザーに対する指示メニューや取得した画像データに関する情報等を表示する。ハードキー部167は、「BOX」、「FAX」、「COPY」、「ECO」の文字がそれぞれ表された4つのハードキー167A〜167Dを含む。タッチパネル165は、表示部161の上面または下面に表示部161に重畳して設けられたマルチタッチ対応のタッチパネルであり、表示部161の表示面中でユーザーにより指示された位置を検出する。ユーザーがタッチパネル165を指示する操作は、タッチパネル165を、同時に複数個所を指で指示するマルチタッチ操作と、一度に1つの個所を指で指示するシングルタッチ操作と、を含む。
自動原稿搬送装置120は、原稿給紙トレイ上にセットされた複数枚の原稿を1枚ずつ自動的に原稿読取部130のプラテンガラス上に設定された所定の原稿読み取り位置まで搬送し、原稿読取部130により原稿画像が読み取られた原稿を原稿排紙トレイ上に排出する。原稿読取部130は、原稿読取位置に搬送されてきた原稿に光を照射する光源と、原稿で反射した光を受光する光電変換素子とを含み、原稿のサイズに応じた原稿画像を走査する。光電変換素子は、受光した光を電気信号である画像データに変換して、画像形成部140に出力する。給紙部150は、給紙トレイに収納された用紙を画像形成部140に搬送する。
画像形成部140は、周知の電子写真方式により画像を形成するものであって、原稿読取部130から入力される画像データにシェーディング補正などの各種のデータ処理を施した、データ処理後の画像データまたは、外部から受信された画像データに基づいて、給紙部150により搬送される用紙に画像を形成する。
図3は、MFPのハードウェア構成の概要の一例を示すブロック図である。図3を参照して、MFP100は、メイン回路110を含む。メイン回路110は、CPU111と、通信インターフェース(I/F)部112と、ROM(Read Only Memory)113と、RAM(Random Access Memory)114と、大容量記憶装置としてのハードディスクドライブ(HDD)115と、ファクシミリ部116と、外部記憶装置117と、を含む。CPU111は、自動原稿搬送装置120、原稿読取部130、画像形成部140、給紙部150および操作パネル160と接続され、MFP100の全体を制御する。
ROM113は、CPU111が実行するプログラム、またはそのプログラムを実行するために必要なデータを記憶する。RAM114は、CPU111がプログラムを実行する際の作業領域として用いられる。また、RAM114は、原稿読取部130から連続的に送られてくる読取画像を一時的に記憶する。
ファクシミリ部116は、公衆交換電話網(PSTN)に接続され、PSTN(Public Switched Telephone Networks)にファクシミリデータを送信する、またはPSTNからファクシミリデータを受信する。ファクシミリ部116は、受信したファクシミリデータを、HDD115に記憶するか、または、画像形成部140でプリント可能なプリントデータに変換して、画像形成部140に出力する。これにより、画像形成部140は、ファクシミリ部116により受信されたファクシミリデータを用紙に画像を形成する。また、ファクシミリ部116は、原稿読取部130によって読み取られたデータ、またはHDD115に記憶されたデータをファクシミリデータに変換して、PSTNに接続されたファクシミリ装置に送信する。
通信I/F部112は、ネットワークにMFP100を接続するためのインターフェースである。通信I/F部112は、TCP(Transmission Control Protocol)またはFTP(File Transfer Protocol)等の通信プロトコルで、ネットワークに接続された他のコンピューターと通信する。なお、通信のためのプロトコルは、特に限定されることはなく、任意のプロトコルを用いることができる。また、通信I/F部112が接続されるネットワークは、例えば、ローカルエリアネットワーク(LAN)であり、接続形態は有線または無線を問わない。またネットワークは、LANに限らず、ワイドエリアネットワーク(WAN)、公衆交換電話網を用いたネットワーク等であってもよい。さらに、ネットワークは、インターネットに接続されている。このため、MFP100は、インターネットに接続されたサーバー等のコンピューターと通信が可能である。
外部記憶装置117は、CPU111により制御され、CD−ROM(Compact Disk Read Only Memory)118、または半導体メモリが装着される。CPU111は、外部記憶装置117を介してCD−ROM118または半導体メモリにアクセス可能である。CPU111は、外部記憶装置117に装表されたCD−ROM118または半導体メモリに記録されたプログラムをRAM114にロードして実行する。なお、CPU111が実行するプログラムは、CD−ROM118に記録されたプログラムに限られず、HDD115に記憶されたプログラムをRAM114にロードして実行するようにしてもよい。この場合、通信I/F部112に接続されるネットワークを介して、ネットワークに接続された他のコンピューターが、MFP100のHDD115に記憶されたプログラムを書換える、または、新たなプログラムを追加して書き込むようにしてもよい。さらに、MFP100が、ネットワークに接続された他のコンピューターからプログラムをダウンロードして、そのプログラムをHDD115に記憶するようにしてもよい。ここでいうプログラムは、CPU111が直接実行可能なプログラムだけでなく、ソースプログラム、圧縮処理されたプログラム、暗号化されたプログラム等を含む。
なお、CPU111が実行するプログラムを記憶する媒体としては、CD−ROM118に限られず、光ディスク(MO(Magnetic Optical Disc)/MD(Mini Disc)/DVD(Digital Versatile Disc))、ICカード、光カード、マスクROM、EPROM(Erasable Programable ROM)、EEPROM(Electrically EPROM)などの半導体メモリであってもよい。
操作パネル160は、表示部161と操作部163とを含む。表示部161は、液晶表示装置(LCD)、有機ELD(Electro−Luminescence Display)等のディスプレイであり、ユーザーに対する指示メニューや取得した画像データに関する情報等を表示する。操作部163は、タッチパネル165と、複数のキーからなるハードキー部167と、を含む。ハードキー部167が含む複数のキーそれぞれは、接点スイッチを含み、CPU111に接続される。ハードキーは、操作ユーザーにより押下されると接点を閉じて、CPU111に接続される回路を閉じる。ハードキーは、MFP100を操作する操作ユーザーにより押下されている間は回路を閉じ、操作ユーザーにより押下されていない間は回路を開く。
操作部163は、ハードキー部167が有する複数のキーが押下されると、押下されたキーに対応する指示、文字、数字などのデータの入力を受け付ける。タッチパネル165は、表示部161の上面または下面に設けられ、操作ユーザーにより指示された位置の座標をCPU111に出力する。タッチパネル165は、操作ユーザーが指またはスタイラスペンで指示した位置を検出し、検出した位置の座標をCPU111に出力する。タッチパネル165は、マルチタッチ対応のタッチパネルであり、ユーザーがマルチタッチ操作を入力する場合、ユーザーにより同時に指示された複数の位置にそれぞれ対応する複数の座標をCPU111に出力する。また、タッチパネル165は、ユーザーがシングルタッチ操作を入力する場合に、ユーザーにより指示された単一の位置に対応する座標をCPU111に出力する。
タッチパネル165は、表示部161の表示面と同じまたはそれ以上のサイズであるのが好ましい。タッチパネル165は、表示部161に重畳して設けられるので、タッチパネル165は、操作ユーザーが表示部161の表示面を指示すれば、表示部161の表示面中で操作ユーザーが指示した位置の座標をCPU111に出力する。タッチパネル165は、例えば、抵抗膜方式、表面弾性波方式、赤外線方式、電磁誘導方式、静電容量方式を用いることができ、その方式は限定されない。
操作部163が受け付け可能な操作は、ハードキー部167が有する複数のキーを押下する操作、タッチパネル165を指示するシングルタッチ操作およびマルチタッチ操作を含む。さらに、ハードキー部167は、「BOX」、「FAX」、「COPY」、「ECO」の文字がそれぞれ表された4つのハードキー167A〜167Dを含む。「BOX」、「FAX」、「COPY」の文字がそれぞれ表された3つのハードキー167A,167B,167Cは、MFP100に実行させる処理の切り換えを指示するための処理切換操作が割り当てられた処理切換キーである。「ECO」の文字が表されたハードキー167Dは、MFP100を、通常モードから通常モードよりも消費電力の低い省電力モードへの切換を指示するためのモード切換操作が割り当てられたモード切換キーである。操作部163は、ハードキー167A,167B,167Cのいずれかが押下される場合、処理切換操作を受け付け、ハードキー167Dが押下される場合、モード切換操作を受け付ける。
図4は、MFPが備えるCPUのソフトウェアアーキテクチャの一例を示す図である。図4を参照して、CPU111には、オペレーティングシステム(OS)層が形成され、その上の階層に、MFPプロセス層が形成される。MFPプロセス層の上層に、アプリケーションプラットフォーム(PF)層、アプリケーション層の順に形成される。
OS層は、CPU111がOSプログラムを実行するタスクが属する。OS層に属するタスクは、MFP100のハードウェア資源を制御する処理を実行する。ハードウェア資源は、ここでは、通信I/F部112、ROM113、RAM114、HDD115、ファクシミリ部116、外部記憶装置117、自動原稿搬送装置120、原稿読取部130、画像形成部140、給紙部150、操作パネル160を含む。OS層に属するタスクは、MFPプロセス層から入力されるオペレーティングコマンドに従って、ハードウェア資源を制御する。また、OS層は、MFPプロセス層との間で、ハードウェア資源の1つである操作部163が受け付け可能な複数種類の操作それぞれを識別するための操作識別情報を共有しており、OS層に属するタスクは、操作部163によって操作ユーザーによる操作が検出されることに応じて、検出された操作を示す操作識別情報をMFPプロセス層に出力する。
アプリケーション層は、CPU111がアプリケーションプログラムを実行するタスクが属する。複数種類のアプリケーションプログラムがMFP100にインストールされる場合、アプリケーション層に、複数種類のアプリケーションプログラムをそれぞれ実行する複数のタスクが属する場合がある。
アプリケーションプログラムを実行するタスクは、アプリケーションプログラムによって定められた複数種類の処理を実行する。複数種類の処理は、MFPプロセス層において実行される処理をMFPプロセス層に属するタスクに実行させる処理を含む。アプリケーションプログラムを実行するタスクは、MFPプロセス層に属するタスクに処理を実行させる場合、アプリコマンドを出力する。アプリコマンドは、API(Application Program Interface)として、公開されたコマンドである。このため、MFP100に処理を実行させるアプリケーションプログラムを容易に作成することができる。公開とは、MFP100を製造するメーカー以外の第三者が使用可能な状態をいう。このため、第三者は、アプリコマンドを用いてMFP100にインストール可能なアプリケーションプログラムを開発することができる。
さらに、アプリケーションプログラムを実行するタスクは、MFP100を操作する操作ユーザーが入力する操作に基づいて、アプリケーションプログラムによって定められた複数種類の処理のうちから実行する処理を特定し、処理を実行する。MFP100を操作する操作ユーザーが入力する操作は、操作ユーザーが操作部163を操作して入力することにより、OS層において受け付けられる。
アプリケーションPF層は、アプリケーション層とMFPプロセス層との間に配置され、アプリケーション層に属する複数のタスクを調停するとともに、アプリケーション層に属する複数のタスクが出力するアプリコマンドを制御するタスクが属する。具体的には、アプリケーションPF層は、アプリケーション層に属する複数のタスクそれぞれが出力するアプリコマンドを受け付け、受け付けられたアプリコマンドを、予め定められた規則に従って内部コマンドに変換することにより標準化し、内部コマンドをMFPプロセス層に出力する。このため、複数のアプリケーションプログラム間で、バージョンが異なる場合等に対応することができる。また、アプリケーションPF層は、アプリケーション層に属する複数のタスクのいずれか1つをカレント状態に決定する。そして、OS層において受け付けられ、MFPプロセス層に属するタスクから入力される操作を、アプリケーション層に属する複数のタスクのうちカレント状態に決定したカレントタスクに出力する。
OS層において受け付けられるユーザーが入力する操作は、1本の指でタッチパネル165を指示するシングルタッチ操作と、2本以上の指で同時にタッチパネル165を指示するマルチタッチ操作とを含む。シングルタッチ操作およびマルチタッチ操作は、それぞれタッチイベントとしてオペレーティングシステムによって検出され、アプリケーションPF層からアプリケーション層に属する複数のタスクのうちカレントタスクに入力される。また、1以上のタッチイベントは、MFPプロセス層においてジェスチャーイベントに変換され、アプリケーションPF層からアプリケーション層に属する複数のタスクのうちカレントタスクに入力される。このため、アプリケーション層は、MFPプロセス層との間で、アプリケーションプログラムにより受け付け可能な1以上のジェスチャーイベントを共有しており、アプリケーションプログラムを実行するタスクは、アプリケーションPF層に属するタスクからアプリケーションプログラムにより受け付け可能な1以上のジェスチャーイベントが入力される。アプリケーションプログラムを実行するタスクは、複数種類の処理のうちジェスチャーイベントまたはタッチイベントのいずれかに対応する処理を実行する。
アプリコマンドと内部コマンドとは予め対応付けられている。例えば、アプリコマンドと内部コマンドとを対応付けたコマンド対応テーブルを記憶しておくようにすればよい。アプリコマンドと内部コマンドとは、1対1に対応してもよいし、1つのアプリコマンドに2以上の内部コマンドの組が対応していてもよい。さらに、バージョンの異なる複数のアプリコマンドに対して、1つの内部コマンド、または複数の内部コマンドからなる1組が対応していてもよい。このため、複数のアプリケーションプログラム間で、バージョンが異なる場合等に対応することができる。内部コマンドは、MFP100のハードウェア資源に依存するコマンドである。内部コマンドは、通常は、公開されていないが、公開されていてもよい。
MFPプロセス層は、アプリケーションPF層とOS層との間に配置され、CPU111がMFPプロセスプログラムを実行するタスクが属する。MFPプロセス層は、アプリケーションPF層に属するタスクが出力する内部コマンドを、OS層に属するタスクが解釈可能なオペレーティングコマンドに変換し、ハードウェア資源を制御するためにオペレーティングコマンドをOS層に属するタスクに出力する。なお、実際には、内部コマンドを、OS層に属するタスクが実行可能な1以上のオペレーティングコマンドに変換する場合があるが、ここでは説明のために、内部コマンドとOS層に属するタスクが実行可能な1以上のオペレーティングコマンドとの関係は1対1として、説明する。
上述したように、アプリケーションプログラムは、MFP100に、ブラウジング処理、コピー処理、スキャン処理、プリント処理、ファクシミリ送受信処理、データ送信処理等を実行させるためのアプリケーションプログラムであるが、以下の説明では、アプリケーションプログラムがCPU111に実行させる処理のうちで、操作パネル160を制御する処理に関連する部分を主に説明する。
図5は、MFPが備えるCPUが有する機能の一例を、HDDに記憶される情報とともに示すブロック図である。図5に示す機能は、MFP100が備えるCPU111が、ROM113、HDD115またはCD−ROM118に記憶されたプログラムを実行することにより、CPU111により実現される機能である。具体的には、CPU111が、OSプログラム、MFPプロセスプログラム、操作受付プログラム、およびアプリケーションプログラムを実行することにより、CPU111により実現される。
図5を参照して、CPU111は、アプリケーション部51と、調停部53と、操作変換部55と、オペレーティング部57と、を含む。アプリケーション部51は、図4に示したソフトウェアアーキテクチャにおいて、アプリケーション層に属する。アプリケーション部51は、コンテンツ表示プログラムの一例であるブラウジングプログラムを実行するブラウジング部61を含む。
調停部53および操作変換部55は、CPU111が操作受付プログラムを実行するタスクによって実現される機能である。調停部53は、図4に示したソフトウェアアーキテクチャにおいて、アプリケーションPF層に属する。操作変換部55は、図4に示したソフトウェアアーキテクチャにおいて、アプリケーションPF層に属する。なお、操作変換部55が有する機能のすべてをアプリケーションPF層の機能としたが、操作変換部55が有する機能の少なくとも一部をアプリケーションPF層の機能とし、他の部分をMFPプロセス層の機能としてもよい。
調停部53は、アプリケーション部51においてアプリケーションプログラムを実行するタスクが複数の場合、複数のタスクのうちいずれか1つをカレント状態に決定する。以下、調停部53が、カレント状態に決定しているタスクをカレントタスクという。本実施の形態においては、アプリケーション部51がブラウジング部61のみを含ので、ブラウジング部61をカレントタスク状態に決定する。
調停部53は、ブラウジング部61が出力するアプリコマンドが入力され、アプリコマンドを出力したタスクを識別するためのアプリ識別情報とアプリコマンドとを操作変換部55に出力する。
調停部53は、ブラウジング部61から複数のアプリコマンドが出力される場合、それらの順番を決定し、決定された順にアプリコマンドを操作変換部55に出力する。例えば、複数のアプリコマンドを同時に実行できない場合に、一方のアプリコマンドの操作変換部55による実行が終了するのを待って他方のアプリコマンドを操作変換部55に出力する。また、一方のアプリコマンドを実行した後でなければ、他方のアプリコマンドを実行できない場合には、他方のアプリコマンドが一方のアプリコマンドより先に入力される場合であっても、一方のアプリコマンドを先に出力する。
操作変換部55は、調停部53からアプリコマンドが入力され、アプリコマンドをコマンド対応テーブルに従って内部コマンドに変換することにより標準化する。コマンド対応テーブルは、1つのアプリコマンドに1以上の内部コマンドを対応付ける。コマンド対応テーブルに含まれるアプリコマンドは、バージョンの異なる同種類のアプリコマンドを含む場合があり、この場合、異なるバージョンのアプリコマンドそれぞれを1以上の内部コマンドに対応付ける。このため、異なるバージョンのアプリコマンドを記述したアプリケーションプログラムをインストールすることを可能としている。コマンド対応テーブルは、新しいアプリコマンドが登場する場合に、新たに登場したアプリコマンドに1以上の内部コマンドを対応付けたコマンド対応テーブルで更新される。このため、新しいアプリコマンドを記述したアプリケーションプログラムをインストールすることができる。
さらに、操作変換部55は、標準化された内部コマンドを、オペレーティングコマンドに変換し、オペレーティングコマンドをオペレーティング部57に出力する。オペレーティングコマンドは、操作変換部55とオペレーティング部57との間で予め定められた、オペレーティング部57が解釈可能なコマンドである。
オペレーティング部57は、CPU111がOSプログラムを実行するタスクによって実行される機能である。オペレーティング部57は、図4に示したソフトウェアアーキテクチャにおいて、OS層に属する。
オペレーティング部57は、操作変換部55が出力するオペレーティングコマンドが入力され、オペレーティングコマンドに従って、ハードウェア資源を制御する。ハードウェア資源として、ここでは、表示部161、操作部163のタッチパネル165およびHDD115を例に説明する。オペレーティング部57は、表示部161を制御して、表示部161に画像を表示させる。また、オペレーティング部57は、HDD115を制御して、HDD115にデータを記憶させ、また、HDD115に記憶されたデータを読み出す。さらに、オペレーティング部57は、所定時間間隔でタッチパネル165にユーザーにより指示された位置を検出させ、タッチパネル165から所定時間間隔で位置情報を取得する。
タッチパネル165は、操作ユーザーが表示部161の表示面を指示すれば、操作ユーザーにより指示された位置を検出し、表示部161の表示面の位置を示す位置情報をCPU111に出力する。オペレーティング部57は、タッチパネル165から位置情報が入力される場合、位置情報を操作変換部55に出力する。オペレーティング部57は、タッチパネル165から一度に2以上の位置情報が入力される場合がある。例えば、操作ユーザーが、表示部161の表示面の異なる2つの部分を、2つの指で同時に指示する場合、指示された表示面の2つの位置をそれぞれ示す2つの位置情報を受け付ける。オペレーティング部57は、タッチパネル165から一度に2以上の位置情報を受け付ける場合、2以上の位置情報を、操作変換部55に出力する。
操作変換部55は、関連付部81と、ジェスチャーイベント決定部83と、タッチイベント生成部85と、表示部制御部87と、を含む。関連付部81は、ブラウジングプログラムがインストールされる段階で、ブラウジングプログラムが定める複数種類の処理それぞれを、複数のジェスチャーイベントのいずれかと関連付ける。具体的には、関連付部81は、ブラウジングプログラムが定める複数の処理識別情報それぞれに、ブラウジングプログラムが受け付け可能なジェスチャーイベントを関連付けたマスターテーブルを生成し、HDD115に記憶する。
図6は、マスターテーブルの一例を示す図である。図6を参照して、マスターテーブル91は、複数の処理識別情報ごとにマスターレコードを含む。マスターレコードは、処理の項目と、ジェスチャーの項目と、を含む。処理の項目には、処理識別情報が設定され、ジェスチャーの項目には、ジェスチャーイベントを識別するためのジェスチャー識別情報が設定される。
例えば、処理の項目に処理識別情報「ページ送り」が設定されたマスターレコードは、ジェスチャーの項目にジェスチャー識別情報「スワイプ」が設定される。処理識別情報「ページ送り」で特定される処理は、画面を次のページの画面に変更して表示させる処理である。ジェスチャー識別情報「スワイプ」で特定されるジェスチャーイベントは、タッチパネル165を指示しながら、上下左右のいずれかに指を所定の速さより速い速さで移動させるユーザーの操作に対応する。指を所定の速さより速い速さで移動させる操作は、指を移動させる方向が定まるため、ジェスチャー識別情報「スワイプ」で特定されるジェスチャーイベントは、指を移動させる方向をパラメータに含む。
処理の項目に処理識別情報「拡大」が設定されたマスターレコードは、ジェスチャーの項目にジェスチャー識別情報「ピンチアウト」が設定される。処理識別情報「拡大」で特定される処理は、画面を拡大して表示させる処理である。ジェスチャー識別情報「ピンチアウト」で特定されるジェスチャーイベントは、タッチパネル165の2箇所を指示しながら、指示した2個所の少なくとも一方を、2箇所の間隔が長くなるように移動させる操作に対応する。2箇所の間隔が長くなるように移動させる操作は、2箇所の間隔が変化するため、ジェスチャー識別情報「ピンチアウト」で特定されるジェスチャーイベントは、2箇所の間隔の変化の割合を倍率としたパラメータに含む。
処理の項目に処理識別情報「縮小」が設定されたマスターレコードは、ジェスチャーの項目にジェスチャー識別情報「ピンチイン」が設定される。処理識別情報「縮小」で特定される処理は、画面を縮小して表示させる処理である。ジェスチャー識別情報「ピンチイン」で特定されるジェスチャーイベントは、タッチパネル165の2箇所を指示しながら、指示した2個所の少なくとも一方を、2箇所の間隔が短くなるように移動させる操作に対応する。2箇所の間隔が短くなるように移動させる操作は、2箇所の間隔が変化するため、ジェスチャー識別情報「ピンチイン」で特定されるジェスチャーイベントは、2箇所の間隔の変化の割合を倍率としたパラメータに含む。
処理の項目に処理識別情報「回転」が設定されたマスターレコードは、ジェスチャーの項目にジェスチャー識別情報「ローテーション」が設定される。処理識別情報「回転」で特定される処理は、画面を回転して画面の方向を変更する処理である。ジェスチャー識別情報「ローテーション」で特定されるジェスチャーイベントは、タッチパネル165の2箇所を指示しながら、指示した2個所の少なくとも一方を、2箇所を結ぶ直線の向きが変更されるように移動させる操作が入力される場合に検出される。例えば、2箇所の一方を中心に他方で円弧を描く操作である。円弧を描く方向が時計回りと反時計回りとがあるため、ジェスチャー識別情報「ローテーション」で特定されるジェスチャーイベントは、時計回りと反時計回りのいずれかを方向としたパラメータに含む。
処理の項目に処理識別情報「スクロール」が設定されたマスターレコードは、ジェスチャーの項目にジェスチャー識別情報「フリック」が設定される。処理識別情報「スクロール」で特定される処理は、画面を上下左右にスクロールさせる処理である。ジェスチャー識別情報「フリック」で特定されるジェスチャーイベントは、タッチパネル165を指示しながら、上下左右のいずれかに指をスワイプのジェスチャーイベントの操作におけるしきい値より遅い速さで移動させる操作に対応する。指をしきい値より遅い速さで移動させる操作は、指を移動させる方向が定まるため、ジェスチャー識別情報「フリック」で特定されるジェスチャーイベントは、指を移動させる方向をパラメータに含む。
処理の項目に処理識別情報「コンテンツ選択」が設定されたマスターレコードは、ジェスチャーの項目にジェスチャー識別情報「ダブルタップ」が設定される。処理識別情報「コンテンツ選択」で特定される処理は、コンテンツを選択する処理である。
図5に戻って、表示部制御部87は、ブラウジング部61から入力されるアプリコマンドを、表示部161に画像を表示させるためのオペレーティングコマンドに変換し、オペレーティング部57に出力する。これにより、ブラウジング部61によって生成された表示用画像が、表示部161のVRAMに記憶され、表示部161に表示用画像の少なくとも一部が表示される。
タッチイベント生成部85は、オペレーティング部57から位置情報が入力されることに応じてタッチイベントを生成する。さらに、タッチイベント生成部85は、タッチイベントを生成するごとに、生成されたタッチイベントをジェスチャーイベント決定部83に出力する。タッチイベント生成部85は、オペレーティング部57から一度に複数の位置情報が入力される場合、複数の位置情報それぞれに対応する複数のタッチイベントを生成する。タッチイベント生成部85は、1以上のタッチイベントを生成する場合、生成された1以上のタッチイベントをジェスチャーイベント決定部83および調停部53に出力する。位置情報は、操作ユーザーが指示した表示部161の表示面中の位置を示す。
操作ユーザーが表示部161の表示面を指示する操作は、ユーザーが表示部161の表示面の任意の位置を指示する指示開始操作、ユーザーが表示部161の表示面を指示しながら、換言すれば、表示部161の表示面に触れながら指示する位置を移動させる移動操作、ユーザーが表示部161の表示面の指示を終了する終了操作、を含む。タッチイベント生成部85は、オペレーティング部57から位置情報が入力されると、操作ユーザーによる操作が、指示開始操作、移動操作、終了操作のいずれであるかを判断する。上述したように、オペレーティング部57は、タッチパネル165から位置情報が出力されるごとに、その位置情報を出力するので、時間の経過とともに連続して入力される位置情報の連続性に基づいて、操作ユーザーによる操作が、指示開始操作、移動操作、終了操作のいずれであるかを判断する。
タッチイベント生成部85は、オペレーティング部57から位置情報が入力されていない状態が所定時間経過した後に入力される位置情報に対して、操作ユーザーによる操作が指示開始操作と判断し、位置情報と、指示開始操作を識別するための状態識別情報「Press」とを含むタッチイベントを生成する。
タッチイベント生成部85は、状態識別情報「Press」のタッチイベントを検出した後、オペレーティング部57から連続して1以上位置情報が入力される場合、1以上の位置情報それぞれに対して、操作ユーザーによる操作が移動操作と判断する。タッチイベント生成部85は、オペレーティング部57から連続して入力される1以上の位置情報それぞれに対して、その位置情報と移動操作を識別するための状態識別情報「Move」とを含むタッチイベントを生成する。
タッチイベント生成部85は、状態識別情報「Move」のタッチイベントを検出した後、オペレーティング部57から位置情報が入力されなくなる場合、最後に入力された位置情報に対して、操作ユーザーによる操作が終了操作と判断し、最後に入力された位置情報と、終了操作を識別するための状態識別情報「Release」とを含むタッチイベントを生成する。
より具体的には、タッチイベント生成部85は、オペレーティング部57から第1の時に入力される位置情報と、第1の時よりも所定時間後の第2の時に入力される位置情報とに基づいて、タッチイベントの状態を決定する。タッチイベント生成部85は、第1の時に入力される位置情報に対して、第1の時よりも所定時間前に、第1の時に入力される位置情報で特定される位置から所定の距離の範囲内の位置を示す位置情報が入力されていない場合には、第1の時に入力される位置情報に対するタッチイベントの状態を「Press」に決定する。タッチイベント生成部85は、第1の時に入力される位置情報で特定される位置が、第2の時に入力される位置情報で特定される位置から所定の距離の範囲内に存在しない場合には、第2の時に入力される位置情報に対するタッチイベントの状態を「Press」に決定する。
また、タッチイベント生成部85は、第1の時に入力される位置情報で特定される位置が、第2の時に入力される位置情報で特定される位置から所定の距離の範囲内に存在する場合には、第2の時に入力される位置情報に対するタッチイベントの状態を「Move」に決定する。さらに、タッチイベント生成部85は、第1の時に入力される位置情報で特定される位置から所定の距離の範囲内の位置情報が、第2の時に入力されない場合には、第2の時において第1の時に入力されていた位置情報に対するタッチイベントの状態を「Release」に決定する。
ジェスチャーイベント決定部83は、タッチイベント生成部85から連続して入力される複数のタッチイベントに基づいてジェスチャーイベントを決定する。ジェスチャーイベント決定部83は、タッチイベント生成部85から一度に1つのタッチイベントが連続して入力される場合、最初の第1のタッチイベントが入力されてから所定時間経過後に入力される第2のタッチイベントを特定し、第1のタッチイベントで特定される位置と、第2のタッチイベントで特定される位置との間の距離が所定の距離以上の場合に、ジェスチャーイベントを決定するが、2つの位置の間の距離が所定の距離より小さい場合にはジェスチャーイベントを決定しない。所定の時間は、任意に定めることができる。所定の時間は、たとえば、タッチパネル165が位置を検出する間隔の数倍とすることができる。また、所定の距離は、任意に定めることができるが、たとえば、40ピクセルとするのが好ましい。
ジェスチャーイベント決定部83は、タッチイベント生成部85から一度に2以上のタッチイベントが入力される場合、2以上のタッチイベントに基づいてジェスチャーイベントを決定する。したがって、ユーザーが、マルチタッチ操作を入力する場合、ジェスチャーイベント決定部83は、ジェスチャーイベントを決定する。具体的には、ジェスチャーイベント決定部83は、タッチイベント生成部85から第1のタッチイベントと第2のタッチイベントの2つが一度に入力される場合、第1のタッチイベントに対して連続して入力される複数のタッチイベントの組と、第2のタッチイベントに対して連続して入力される複数のタッチイベントの組と、に基づいてジェスチャーイベントを決定する。第1のタッチイベントに対して連続して入力される複数のタッチイベントの組に含まれる複数のタッチイベントは、位置情報が同じか、または位置情報が連続している。連続とは、2つの位置情報が隣接または所定の距離内に位置を示すことをいう。第2のタッチイベントに対して連続して入力される複数のタッチイベントは、位置情報が同じか、または位置情報が連続している。このため、ジェスチャーイベント決定部83は、一度に入力される複数のタッチイベントが、第1のタッチイベントに対して連続して入力される組と第2のタッチイベントに対して連続して入力される組のいずれに属するかを、それらに含まれる位置情報で判断する。
ジェスチャーイベント決定部83は、タッチイベント生成部85から一度に1つのタッチイベントが連続して入力される場合、第1のタッチイベントが入力される後に第2のタッチイベントが入力される。第1のタッチイベントの状態識別情報は「Press」の場合と、「Move」の場合がある。第2のタッチイベントの状態情報は「Move」の場合と、「Release」の場合がある。ジェスチャーイベント決定部83は、第2のタッチイベントが入力されると、第1のタッチイベントの位置情報と、第2のタッチイベントの位置情報とから2点間の距離を指示距離LB1として算出し、指示距離LB1が所定のしきい値TH以上ならばユーザーによるスワイプ操作を検出し、指示距離LB1が所定のしきい値THより短ければユーザーによるフリック操作を検出する。
ジェスチャーイベント決定部83は、スワイプ操作およびフリック操作を検出する場合、第1のタッチイベントの位置情報で特定される位置から第2のタッチイベントの位置情報で特定される位置に向かう方向を算出し、表示部161の表示面を基準に上下左右の4方向のうち算出された方向に最も近い方向を決定する。ジェスチャーイベント決定部83は、スワイプ操作およびフリック操作を検出する場合、方向および指示距離LB1をパラメータに決定する。ジェスチャーイベント決定部83は、スワイプ操作を検出する場合には、ジェスチャー識別情報「スワイプ」と、方向および指示距離LB1を含むパラメータとを含むジェスチャーイベントを決定し、フリック操作を検出する場合には、ジェスチャー識別情報「フリック」と、方向および指示距離LB1を含むパラメータとを含むジェスチャーイベントを決定する。
また、一度に1つのタッチイベントが連続して入力される場合は、最初の複数のタッチイベントによってユーザーによるスワイプ操作が検出され、後の複数のタッチイベントによってユーザーによるフリック操作が検出される場合がある。換言すれば、ジェスチャーイベント決定部83は、状態識別情報「Press」のタッチイベントが入力されてから状態識別情報「Release」のタッチイベントが入力されるまでに、複数種類のジェスチャーイベントを決定する場合がある。
ジェスチャーイベント決定部83は、タッチイベント生成部85から一度に2つのタッチイベントが入力される場合、第1の組の第1のタッチイベントおよび第2のタッチイベントが入力される後に第2の組の第1のタッチイベントおよび第2のタッチイベントが入力される。ここでは、第1の組の第1のタッチイベントと第2の組の第1のタッチイベントが連続した組となり、第1の組の第2のタッチイベントと第2の組の第2のタッチイベントが連続した組としている。この場合、第1の組の第1のタッチイベントおよび第2のタッチイベントそれぞれの状態は「Press」または「Move」である。第2の組の第1のタッチイベントおよび第2のタッチイベントそれぞれの状態は「Move」または「Relese」である。
この場合に、ジェスチャーイベント決定部83は、第1の組の第1のタッチイベントおよび第2のタッチイベントそれぞれに含まれる位置情報に基づいて、2点間の間隔L1および2点間を結ぶ直線の角度R1を算出する。2点間を結ぶ直線の角度は、表示部161の横方向を基準線として、2点間を結ぶ直線が基準線となす角度とすればよい。2点間を結ぶ直線と基準線とのなす角度は、基準線から時計回りになす角度である。また、ジェスチャーイベント決定部83は、第2の組の第1のタッチイベントおよび第2のタッチイベントそれぞれに含まれる位置情報に基づいて、2点間の間隔L2および2点間を結ぶ直線の角度R2を算出する。
ジェスチャーイベント決定部83は、角度R1と角度R2とが同じで、かつ、間隔L1と間隔L2とが異なれば、ユーザーによるピンチアウト操作またはピンチイン操作を検出する。角度R1と角度R2とが同じとは、角度R1と角度R2との差が所定の範囲内の場合を含む。ユーザーの指の動きを検出するために、誤差を含む。ジェスチャーイベント決定部83は、ピンチアウト操作またはピンチイン操作を検出する場合、間隔L1から間隔L2を減算した値を指示距離Dとして算出する。ジェスチャーイベント決定部83は、指示距離Dがプラスならばピンチイン操作を検出し、指示距離Dがマイナスならばピンチアウト操作を検出する。
ジェスチャーイベント決定部83は、ピンチアウト操作またはピンチイン操作を検出する場合、間隔L1と指示距離Dとをパラメータに決定する。ジェスチャーイベント決定部83は、ピンチアウト操作を検出する場合には、ジェスチャー識別情報「ピンチアウト」と、間隔L1および指示距離Dを含むパラメータとを含むジェスチャーイベントを決定し、ピンチイン操作を検出する場合には、ジェスチャー識別情報「ピンチイン」と、間隔L1および指示距離Dを含むパラメータとを含むジェスチャーイベントを決定する。
ジェスチャーイベント決定部83は、角度R1と角度R2とが異なり、かつ、間隔L1と間隔L2とが同じならば、ユーザーによるローテーション操作を検出する。間隔L1と間隔L2とが同じとは、間隔L1と間隔L2との差が所定の範囲内の場合を含む。角度R1と角度R2とが異なるとは、角度R1と角度R2との差が所定の範囲外の場合である。ユーザーの指の動きを検出するために、誤差を含む。ジェスチャーイベント決定部83は、ローテーション操作を検出する場合、角度R1から角度R2を減算した値を指示角度Rとして算出し、間隔L1と指示角度Rとをパラメータに決定する。指示角度Rがマイナスならば回転方向は時計回りであり、指示角度Rがプラスならば回転方向は反時計回りである。ジェスチャーイベント決定部83は、ローテーション操作を検出する場合、ジェスチャー識別情報「ローテーション」と、間隔L1および指示角度Rを含むパラメータとを含むジェスチャーイベントを決定する。
ジェスチャーイベント決定部83は、角度R1と角度R2とが同じで、かつ、間隔L1と間隔L2とが同じならば、ユーザーによるスワイプ操作またはフリック操作を検出する。角度R1と角度R2とが同じとは、角度R1と角度R2との差が所定の範囲内の場合を含む。間隔L2と間隔L1とが同じとは、間隔L2と間隔L1との差が所定の範囲内の場合を含む。ユーザーの指の動きを検出するために、誤差を含む。ジェスチャーイベント決定部83は、第1の組の第1のタッチイベントおよび第2の組の第1のタッチイベントそれぞれに含まれる位置情報に基づいて、2点間の距離を指示距離LB2として算出する。なお、第1の組の第2のタッチイベントおよび第2の組の第2のタッチイベントそれぞれに含まれる位置情報に基づいて、指示距離LB2を算出してもよい。
ジェスチャーイベント決定部83は、指示距離LB2が所定のしきい値TH以上ならばユーザーによるスワイプ操作を検出し、指示距離LB2が所定のしきい値THより短ければユーザーによるフリック操作を検出する。ジェスチャーイベント決定部83は、スワイプ操作およびフリック操作を検出する場合、第1の組の第1のタッチイベントに含まれる位置情報で特定される位置から第2の組の第1のタッチイベントに含まれる位置情報で特定される位置に向かう方向を算出し、表示部161の表示面を基準に上下左右の4方向のうち算出された方向に最も近い方向を決定する。ジェスチャーイベント決定部83は、スワイプ操作およびフリック操作を検出する場合、間隔L1、方向および指示距離LB2をパラメータに決定する。ジェスチャーイベント決定部83は、スワイプ操作を検出する場合には、ジェスチャー識別情報「スワイプ」と、間隔L1、方向および指示距離LB2を含むパラメータとを含むジェスチャーイベントを決定し、フリック操作を検出する場合には、ジェスチャー識別情報「フリック」と、間隔L1、方向および指示距離LB2を含むパラメータとを含むジェスチャーイベントを決定する。
ジェスチャーイベント決定部83は、ジェスチャーイベントを決定する場合、HDD115から、調停部53によって設定されているカレントタスクのアプリ識別情報に対応するマスターテーブル91を読み出す。具体的には、マスターテーブル91を読み出すためのオペレーティングコマンドをオペレーティング部57に出力し、オペレーティング部57がHDD115を制御して読み出すマスターテーブル91を取得する。以下、ブラウジング部61がカレントタスクの場合について説明する。
ジェスチャーイベント決定部83は、ジェスチャーイベントを決定することに応じて、ジェスチャーイベントに基づいて、マスターテーブル91において定められている複数種類の処理のうちから調停部53によってカレント状態に設定されているアプリケーションプログラムに対応して関連付けられた処理を特定する。ここでは、調停部53によってブラウジング部61がカレントタスクに設定されているので、ジェスチャーイベント決定部83は、ジェスチャーイベントと、マスターテーブル91によって関連付けられた処理を特定する。より具体的には、ジェスチャーイベント決定部83は、決定されたジェスチャーイベントのジェスチャー識別情報がジェスチャーの項目に設定されたマスターレコードを、マスターテーブル91から抽出し、抽出されたマスターレコードの処理の項目に設定されている処理識別情報を取得する。ジェスチャーイベント決定部83は、処理識別情報が取得される場合、決定されたジェスチャーイベントを調停部53に出力するが、処理識別情報が取得されない場合、決定されたジェスチャーイベントを調停部53に出力しない。また、ジェスチャーイベント決定部83は、タッチイベント生成部85から一度に1つのタッチイベントが連続して入力される場合であって、ジェスチャーイベントを決定しない場合、ジェスチャーイベントを決定しないことを示す未決定信号を調停部53に出力する。
ジェスチャーイベント決定部83は、調停部53によってカレント状態に設定されているブラウジング部61が実行可能な処理に対応するジェスチャーイベントのみを調停部53に出力し、調停部53は、ジェスチャーイベントをカレントタスクであるブラウジング部61に出力する。このため、タッチパネル165に入力される操作であって、複数のタッチイベントの組で特定されるジェスチャーイベントを、ブラウジングプログラムを実行するブラウジング部61に実行させることができる。換言すれば、ブラウジングプログラムを開発する段階で、MFP100においてタッチパネル165で受け付け可能なジェスチャーイベントを意識することなく開発することができる。例えば、ローテーション操作を受け付けないブラウジングプログラムを開発することができる。
調停部53は、ジェスチャーイベント決定部83からジェスチャーイベントが入力される。調停部53は、ジェスチャーイベントをアプリケーション部51がアプリケーションプログラムを実行する複数のタスクのうちカレントタスクに出力する。ここでは、アプリケーション部51は、ブラウジング部61のみを含むため、調停部53は、ブラウジング部61をカレント状態に設定する。このため、ブラウジング部61がカレントタスクである。調停部53は、ジェスチャーイベント決定部83からジェスチャーイベントが入力されることに応じて、ジェスチャーイベントをブラウジング部61に出力する。
ブラウジング部61は、コンテンツ取得部71と、表示部分決定部72と、ジェスチャー期間検出部73と、キャプチャー部分決定部75と、キャプチャー画像生成部76と、一時記憶制御部77と、表示用画像生成部78と、補正部74と、表示制御部79と、を含む。
コンテンツ取得部71は、インターネットに接続されたサーバーからコンテンツを取得し、取得されたコンテンツを表示部分決定部72、キャプチャー画像生成部76および表示用画像生成部78に出力する。コンテンツは、例えば、HTML(HyperText Markup Language)等のマークアップ言語で記述されたWebページである。コンテンツ取得部71は、Webページを取得し、Webページにリンクされている別のWebページや画像データなどの別のコンテンツは取得しない。なお、コンテンツ取得部71は、Webページにリンクされている別のコンテンツを取得するようにしてもよい。コンテンツ取得部71が取得するコンテンツは、MFP100を操作する操作ユーザーが指定したURL(Uniform Resource Locator)で識別されるWebページであってもよいし、ブラウジング部61において予め定められたURLで識別されるWebページであってもよい。
ジェスチャー期間検出部73は、ジェスチャーイベント決定部83から入力されるジェスチャーイベントに基づいてジェスチャー期間を検出する。ジェスチャー期間検出部73は、ジェスチャー期間の開始を検出すると、開始信号を表示部分決定部72およびキャプチャー部分決定部75に出力し、ジェスチャー期間を検出している間、ジェスチャー期間であることを示すジェスチャー期間信号を表示用画像生成部78に出力する。ジェスチャー期間は、ジェスチャーイベント決定部83によって所定の時間間隔で連続してジェスチャーイベントが決定される期間である。
具体的には、ジェスチャーイベント決定部83は、1以上のタッチイベントに基づいてジェスチャーイベントを決定するが、ジェスチャーイベント決定部83によってジェスチャーイベントが決定された後に、タッチイベント生成部85によって連続してタッチイベントが生成される場合がある。たとえば、ユーザーが、スワイプ操作を入力する場合、ユーザーが指を移動させている途中で、ジェスチャーイベント決定部83によってジェスチャーイベントが決定される場合である。この場合には、ユーザーが指をタッチパネル165から離すまで、タッチイベント生成部85によって状態識別情報「Move」のタッチイベントが生成され、ユーザーが指をタッチパネル165から離すと、タッチイベント生成部85によって状態識別情報「Release」のタッチイベントが生成される。ジェスチャーイベント決定部83は、ジェスチャー識別情報「スワイプ」のジェスチャーイベントを決定した後は、タッチイベント生成部85から状態識別情報「Release」のタッチイベントが入力されるまで、状態識別情報「Move」のタッチイベントが入力されるごとに、ジェスチャー識別情報「スワイプ」のジェスチャーイベントを出力する。ジェスチャーイベント決定部83は、タッチイベント生成部85からタッチイベントが入力されるごとにジェスチャーイベントを決定する。タッチイベント生成部85は、所定の時間間隔でタッチイベントを生成するので、ジェスチャーイベント決定部83は、所定の時間間隔でジェスチャーイベントを決定する。
ジェスチャー期間検出部73は、ジェスチャーイベント決定部83からジェスチャーイベントが所定の時間間隔で連続して入力されている間、ジェスチャー期間を検出する。ジェスチャー期間検出部73は、ジェスチャーイベント決定部83からジェスチャーイベントが入力されるとジェスチャー期間の開始を検出し、ジェスチャーイベント決定部83からジェスチャーイベントが入力されなくなる場合、ジェスチャー期間の終了を検出する。なお、ジェスチャー期間検出部73は、タッチイベント生成部85によって状態識別情報「Press」のタッチイベントが生成されるとジェスチャー期間の開始を検出し、状態識別情報「Release」のタッチイベントが生成されるとジェスチャー期間の終了を検出するようにしてもよい。
表示部分決定部72は、コンテンツ取得部71から入力されるWebページの少なくとも一部を表示部分に決定する。表示部分決定部72は、Webページを解釈して、Webページに対応する画像の少なくとも一部を表示部分に決定する。表示部分決定部72は、コンテンツ取得部71によってコンテンツが取得された時、および、ジェスチャーイベント決定部83からジェスチャーイベントが入力される時に、表示部分を決定する。表示部分決定部72は、コンテンツ取得部71によってコンテンツが取得された時点において、換言すれば、コンテンツ取得部71がWebページをダウンロードした時点において、デフォルトで定められた部分を表示部分に決定する。デフォルトで定められた表示部分は、Webページによって定められていてもよいし、Webページに対応する画像のサイズと表示部161のサイズとから定めるようにしてもよい。表示部分は、矩形の領域であり、2つの対角で特定される。このため表示部分は、コンテンツの画像中で2つの対角の座標を含む。
表示部分決定部72は、ジェスチャーイベント決定部83からジェスチャーイベントが入力される場合、表示部分を決定する。
図7は、表示部分決定部の詳細な構成の一例を示すブロック図である。図7を参照して、表示部分決定部72は、変換部11と、スケール決定部13と、タイミング決定部15と、キャプチャー率決定部17と、を含む。
スケール決定部13は、ジェスチャーイベント決定部83からジェスチャーイベントが入力され、ジェスチャー期間検出部73から開始信号が入力される。スケール決定部13は、移動量決定部31と、拡縮率決定部33と、回転量決定部35と、を含む。移動量決定部31は、ジェスチャー識別情報が「スワイプ」または「フリック」のジェスチャーイベントを処理対象とする。拡縮率決定部33は、ジェスチャー識別情報が「ピンチイン」または「ピンチアウト」のジェスチャーイベントを処理対象とする。回転量決定部35は、ジェスチャー識別情報が「ローテーション」のジェスチャーイベントを処理対象とする。タイミング決定部15およびキャプチャー率決定部17は、ジェスチャー識別情報が「ピンチイン」、「ピンチアウト」または「ローテーション」のジェスチャーイベントを処理対象とする。
移動量決定部31は、開始信号が入力された時点にジェスチャーイベント決定部83から入力されるジェスチャーイベントにパラメータとして含まれる間隔L1に基づいて、移動量を定めるスケールを決定する。移動量を定めるスケールは、表示部分を移動させる距離の度合いを示し、基準移動距離である。基準移動距離は、所定単位の距離に対する移動距離を示す。複数の距離ごとに基準移動距離を定めた移動距離テーブルを予め記憶しており、その移動距離テーブルを参照して、間隔L1に対応して定められた基準移動距離を決定する。基準移動距離は、間隔L1が大きいほど大きな値に設定される。移動量決定部31は、間隔L1に対応する基準移動距離を、変換部11に出力する。
拡縮率決定部33は、開始信号が入力された時点にジェスチャーイベント決定部83から入力されるジェスチャーイベントにパラメータとして含まれる間隔L1に基づいて、倍率を定めるスケールを決定する。倍率を定めるスケールは、倍率の度合いを示し、基準倍率である。拡縮率決定部33は、間隔L1に対応する基準倍率を、変換部11に出力する。基準倍率は、所定単位の距離に対する倍率である。複数の距離ごとに倍率を定めた倍率テーブルを予め記憶しており、その倍率テーブルを参照して、間隔L1に対応して定められた基準倍率を決定する。
基準倍率は、ジェスチャーイベント識別情報が「ピンチイン」の場合は縮小率であり、ジェスチャーイベント識別情報が「ピンチアウト」の場合は拡大率である。このため、倍率テーブルは、ジェスチャー識別情報「ピンチイン」に対応する倍率テーブルと、ジェスチャー識別情報「ピンチアウト」に対応する倍率テーブルと、を含む。ジェスチャー識別情報「ピンチアウト」に対応する倍率テーブルにおいて、基準倍率は「1」より大きく、間隔L1が大きいほど大きな値に設定される。ジェスチャー識別情報「ピンチイン」に対応する倍率テーブルにおいて、基準倍率は「1」より小さく、間隔L1が大きいほど小さな値に設定される。表示部161のサイズは一定であるため、ユーザーが表示部161に2本の指で指示してから間隔を変更する場合、指を移動させる距離には限界がある。例えば、指の間隔を広くして指示した場合、その状態から間隔を狭くする場合は、指の間隔を狭くして指示した場合に比較して、指を移動させることのできる距離(残余距離)が長くなる。また、指の間隔を広くして指示した場合、その状態から間隔を広くする場合は、指の間隔を狭くして指示した場合に比較して、指を移動させることのできる距離(残余距離)が短くなる。このため、ジェスチャー識別情報「ピンチアウト」に対応する倍率テーブルにおいては、基準倍率は、残余距離が長いほど大きな値に設定され、ジェスチャー識別情報「ピンチイン」に対応する倍率テーブルにおいては、基準倍率は残余距離が長いほど小さな値に設定される。
回転量決定部35は、開始信号が入力された時点にジェスチャーイベント決定部83から入力されるジェスチャーイベントにパラメータとして含まれる間隔L1に基づいて、回転量を定めるスケールを決定する。回転量を定めるスケールは、回転量の度合いを示し、基準回転角度を示す。基準回転角度は、所定単位の距離に対する回転角度である。複数の距離ごとに基準回転角度を定めた回転角テーブルを予め記憶しており、その回転角テーブルを参照して、間隔L1に対応して定められた基準回転角度を決定する。基準回転角度は、間隔L1が大きいほど大きな値に設定される。回転量決定部35は、間隔L1に対応する基準回転角度を、変換部11に出力する。
タイミング決定部39は、開始信号が入力された時点にジェスチャーイベント決定部83から入力されるジェスチャーイベントにパラメータとして含まれる間隔L1に基づいて、表示部分を決定するタイミングを決定する。表示部分を決定するタイミングは、デフォルトではジェスチャーイベントが入力されるタイミングである。換言すれば、ジェスチャーイベントは、タッチイベントが生成される時間間隔と同じ時間間隔で入力される。タイミング決定部39は、開始信号が入力された時点にジェスチャーイベント決定部83から入力されるジェスチャーイベントにパラメータとして含まれる間隔L1に基づいて、表示部分を決定する時間間隔を決定する。具体的には、タイミング決定部39は、開始信号が入力された時点にジェスチャーイベント決定部83から入力されるジェスチャーイベントにパラメータとして含まれる間隔L1が所定の値より大きい場合、表示部分を決定する時間間隔をジェスチャーイベントが入力される所定時間間隔よりも長い間隔に決定する。ジェスチャーイベントは、タッチイベントが生成される時間間隔と同じ時間間隔で入力されるので、ここでは、時間間隔をジェスチャーイベントが入力される数で示す。以下、時間間隔を示す値であるジェスチャーイベントが入力される数を間引数という。複数の距離ごとに間引数を定めたタイミングテーブルを予め記憶しており、そのタイミングテーブルを参照して、間隔L1に対応して定められた間引数を決定する。タイミングテーブルは、間隔L1が大きいほど間引数が大きな値に設定される。タイミング決定部39は、間隔L1に対応する間引数を、変換部11に出力する。
キャプチャー率決定部37は、開始信号が入力された時点にジェスチャーイベント決定部83から入力されるジェスチャーイベントにパラメータとして含まれる間隔L1に基づいて、キャプチャー率を決定する。キャプチャー率は、デフォルトで定められたキャプチャーサイズに対する倍率を示す。複数の距離ごとにキャプチャー率を定めたキャプチャーテーブルを予め記憶しており、そのキャプチャーテーブルを参照して、間隔L1に対応して定められたキャプチャー率を決定する。キャプチャーテーブルは、間隔L1が大きいほど大きなキャプチャー率が設定される。キャプチャー率決定部37は、間隔L1に対応するキャプチャー率を、キャプチャー部分決定部75に出力する。
なお、キャプチャー率決定部37は、開始信号が入力された時点にジェスチャーイベント決定部83から入力されるジェスチャーイベントが、ピンチインの場合に限って、キャプチャー率を決定するようにしてもよい。その他のジェスチャーイベントの場合には、キャプチャー部分のサイズをデフォルトのサイズよりも大きくする必要はないからである。この場合、キャプチャー率は、マルチタッチ操作を最初に入力した時点の指の間隔である間隔L1が大きいほど大きな値とすることができ、換言すれば、ユーザーが指示する2本の指の間隔を広くするほど、キャプチャー部分を大きなサイズとすることができる。
変換部11は、移動部21と、変倍部23と、回転部25と、を含む。移動部21は、ジェスチャー識別情報が「スワイプ」または「フリック」のジェスチャーイベントを処理対象とする。変倍部23は、ジェスチャー識別情報が「ピンチイン」または「ピンチアウト」のジェスチャーイベントを処理対象とする。回転部25は、ジェスチャー識別情報が「ローテーション」のジェスチャーイベントを処理対象とする。
移動部21は、ジェスチャー識別情報「フリック」のジェスチャーイベントが入力される場合、それ以前に決定されている表示部分を、パラメータに含まれる方向に、パラメータに含まれる指示距離LB1より特定される距離だけ移動させることによって新たな表示部分に決定する。移動部21が表示部分を移動させる距離は、パラメータに含まれる指示距離LB1に予め定められたデフォルト移動距離を乗算した値である。デフォルト移動距離は、単位距離当たりの移動距離を定める。
移動部21は、移動量決定部31から基準移動距離が入力される場合、換言すれば、マルチタッチ操作の場合、ジェスチャー識別情報「フリック」のジェスチャーイベントに含まれるパラメータに含まれる指示距離LB1に基準移動距離を乗算することにより移動距離を算出し、ジェスチャーイベントが入力される前に決定されている表示部分を、算出された移動距離だけパラメータに含まれる方向に移動することによって表示部分を決定する。
さらに、移動部21は、移動量決定部31から基準移動距離が入力され、かつ、タイミング決定部39から間引数が入力される場合、ジェスチャーイベント決定部83からジェスチャー識別情報「フリック」のジェスチャーイベントが、間引数と同じ数だけ入力されるまで移動距離を算出することなく、ジェスチャー識別情報「フリック」のジェスチャーイベントが入力されるごとに、そのジェスチャーイベントに含まれるパラメータに含まれる指示距離LB2の合計を算出する。そして、移動部21は、間引数と同じ数だけのジェスチャー識別情報「フリック」のジェスチャーイベントが入力されると、指示距離LB2の合計に基準移動距離を乗算することにより移動距離を算出する。移動部21は、パラメータに含まれる指示距離LB2の合計に移動量決定部31から入力される基準移動距離を乗算することにより移動距離を算出し、ジェスチャーイベントが入力される前に決定されている表示部分を、算出された移動距離だけパラメータに含まれる方向に移動することによって表示部分を決定する。
移動部21は、ジェスチャー識別情報「スワイプ」のジェスチャーイベントが入力される場合、それ以前に決定されている表示部分が含まれるページを、パラメータで特定される方向にページ送りし、新たなページ中で表示部分に対応する部分を新たな表示部分に決定する。
変倍部23は、拡縮率決定部33から基準倍率が入力される。変倍部23は、ジェスチャー識別情報「ピンチアウト」または「ピンチイン」のジェスチャーイベントが入力される場合、パラメータに含まれる指示距離Dに基準倍率を乗算することによって倍率を算出し、ジェスチャーイベントが入力される前に決定されている表示部分を算出された倍率の逆数で拡大または縮小することによって新たな表示部分を決定する。後述するように、表示用画像生成部78によって生成される表示用画像は、キャプチャー画像またはコンテンツの画像中の表示部分から生成され、表示用画像のサイズは表示部161のサイズによって定まり、一定である。このため、表示用画像を縮小する場合は表示部分のサイズを拡大し、表示用画像を拡大する場合は表示部分のサイズを縮小することになる。指示距離Dに基準倍率を乗算することによって算出される倍率は、表示用画像に対する値なので、表示部分のサイズを拡大または縮小する場合には、倍率の逆数で算出する。
変倍部23は、拡縮率決定部33から基準倍率が入力され、かつ、タイミング決定部39から間引数が入力される場合、ジェスチャーイベント決定部83からジェスチャー識別情報「ピンチアウト」または「ピンチイン」のジェスチャーイベントが、間引数と同じ数だけ入力されるまで倍率を算出することなく、ジェスチャー識別情報「ピンチアウト」または「ピンチイン」のジェスチャーイベントが入力されるごとに、そのジェスチャーイベントに含まれるパラメータに含まれる指示距離Dの合計を算出する。そして、変倍部23は、間引数と同じ数だけのジェスチャー識別情報「ピンチアウト」または「ピンチイン」のジェスチャーイベントが入力されると、指示距離Dの合計に基準倍率を乗算することにより倍率を算出し、ジェスチャーイベントが入力される前に決定されている表示部分を算出された倍率の逆数で拡大または縮小することによって新たな表示部分を決定する。
回転部25は、回転量決定部35から基準回転角度が入力される。回転部25は、ジェスチャー識別情報「ローテーション」のジェスチャーイベントが入力される場合、パラメータに含まれる指示角度Rに基準回転角度を乗算することによって回転角度を算出し、ジェスチャーイベントが入力される前に決定されている表示部分を、算出された回転角度だけ回転させることによって新たな表示部分に決定する。
さらに、回転部25は、回転量決定部35から基準回転角度が入力され、かつ、タイミング決定部39から間引数が入力される場合、ジェスチャーイベント決定部83からジェスチャー識別情報「ローテーション」のジェスチャーイベントが、間引数と同じ数だけ入力されるまで回転角度を算出することなく、ジェスチャー識別情報「ローテーション」のジェスチャーイベントが入力されるごとに、そのジェスチャーイベントに含まれるパラメータに含まれる指示角度Rの合計を算出する。そして、変倍部23は、間引数と同じ数だけのジェスチャー識別情報「ローテーション」のジェスチャーイベントが入力されると、指示角度Rの合計に基準回転角度を乗算することにより回転角度を算出し、ジェスチャーイベントが入力される前に決定されている表示部分を算出された回転角度だけ回転させることによって新たな表示部分を決定する。
なお、表示部分決定部72は、ジェスチャー識別情報「ダブルタップ」のジェスチャーイベントが入力される場合、それ以前に決定されている表示部分を、そのまま表示部分に決定する。
図5に戻って、キャプチャー部分決定部75は、表示部分決定部72から表示部分が入力され、ジェスチャー期間検出部73から開始信号が入力される。キャプチャー部分決定部75は、ジェスチャー期間が開始する前に決定されている表示部分を含むキャプチャー部分を決定する。ジェスチャー期間が開始する前に決定されている表示部分は、ジェスチャー期間が開始する時点で、表示部161に表示されている表示用画像に対応する表示部分である。キャプチャー部分決定部75は、ジェスチャー期間検出部73から開始信号が入力されると、ジェスチャー期間が開始したと判断する。キャプチャー部分は、コンテンツの画像中の少なくとも一部であって、表示部分を含む。キャプチャー部分は、表示部分よりも面積が大きい。
キャプチャー部分のサイズの決定方法の一例を説明する。キャプチャー部分のデフォルトサイズは、表示部161のサイズ、コンテンツの画像の倍率、およびRAM114の空容量に基づいて定まる。ここでは、画像のサイズを縦方向および横方向それぞれの画素数で示す。また、表示部161のサイズは、表示部161の縦方向および横方向それぞれの画素数で示す。コンテンツの画像の倍率は、コンテンツの画像の表示部分のサイズと、表示部161のサイズとによって定まり、コンテンツの画像の表示部分の横方向の画素数を表示部161の横方向の画素数で除算した値をとしている。本実施の形態において、コンテンツが取得された段階において、コンテンツの画像の倍率を「1」としており、コンテンツの画像の倍率は、ユーザーによるピンチアウト操作またはピンチイン操作が入力される場合に倍率が変動する値である。
キャプチャー部分決定部75は、表示部161のサイズをS(単位:画素数)、コンテンツの画像の倍率をb、およびRAM114の空容量をm(単位:画素数)とする場合、m/(b*S)以下の最大の整数nを求め、表示部161のサイズSにnを乗じた値をキャプチャー部分のデフォルトサイズに決定する。なお、ここでは、RAM114の空容量の単位を画素数としているが、1画素あたりのバイト数がコンテンツの画像によって変動するためである。記憶容量をバイトで示す場合には、記憶容量M(byt)を1画素あたりのバイト数で除算した値を用いればよい。
キャプチャー部分決定部75は、表示部分決定部72からキャプチャー率が入力される場合、キャプチャー部分のサイズを、デフォルトサイズにキャプチャー率を乗算した値に変更する。
キャプチャー部分決定部75は、キャプチャー部分のサイズを決定すると、決定したサイズの領域であって表示部分を中心に含む領域をキャプチャー部分に決定する。また、表示部分がコンテンツの画像の端部に位置する場合は、キャプチャー部分のすべてがコンテンツの画像の少なくとも一部を含み、かつ、表示部分のすべてを含む位置となるようにキャプチャー部分を決定する。キャプチャー部分決定部75は、決定されたキャプチャー部分をキャプチャー画像生成部76に出力する。キャプチャー部分は、矩形の領域であり、2つの対角で特定される。このためキャプチャー部分は、コンテンツの画像中で2つの対角の座標を含む。
キャプチャー画像生成部76は、コンテンツ取得部71からコンテンツであるWebページが入力され、キャプチャー部分決定部75からキャプチャー部分が入力され、Webページに基づいてキャプチャー画像を生成する。具体的には、キャプチャー画像生成部76は、キャプチャー部分決定部75からキャプチャー部分が入力されることに応じて、Webページを解析してWebページのキャプチャー部分に対応する画像を生成する。キャプチャー画像生成部76は、生成された画像をキャプチャー画像として、一時記憶制御部77に出力する。キャプチャー部分決定部75は、ジェスチャー期間の開始時にキャプチャー部分を決定するので、キャプチャー画像生成部76は、ジェスチャー期間の開始時にキャプチャー画像を生成する。
一時記憶制御部77は、キャプチャー画像生成部76からキャプチャー画像が入力されると、キャプチャー画像をRAM114に記憶するとともに、表示用画像生成部78に、キャプチャー画像が記憶されたことを通知する。たとえば、RAM114に記憶されたキャプチャー画像のアドレス、またはファイル名を通知する。ここでは、キャプチャー画像のファイル名を通知する場合を例に説明する。
表示用画像生成部78は、コンテンツ取得部71からコンテンツであるWebページが入力され、表示部分決定部72から表示部分が入力され、ジェスチャー期間検出部73からジェスチャー期間信号が入力され、一時記憶制御部77からキャプチャー画像のファイル名が入力される。表示用画像生成部78は、コンテンツ取得部71によってコンテンツが取得された時、ジェスチャー期間信号が入力されるジェスチャー期間の間はジェスチャーイベントが決定される時、およびジェスチャー期間が終了する時に、表示用画像を生成する。表示用画像生成部78は、生成された表示用画像を補正部74に出力する。
具体的には、表示用画像生成部78は、ジェスチャー期間の間は、RAM114に記憶されたキャプチャー画像に基づいて表示部分に対応する表示用画像を生成する。一時記憶制御部77から入力されるファイル名のキャプチャー画像を、RAM114から読み出し、読み出したキャプチャー画像のうち、ジェスチャー期間に表示部分決定部72から入力される表示部分で特定される領域を表示用画像として抽出する。また、表示用画像生成部78は、コンテンツ取得部71によってWebページが取得された時、またはジェスチャー期間が終了する時は、コンテンツ取得部71から入力されるWebページに基づいて表示用画像を生成する。Webページを解析してWebページの表示部分に対応する画像を表示用画像として生成する。表示用画像生成部78は、ジェスチャー期間検出部73からジェスチャー期間信号が入力されている状態からジェスチャー期間信号が入力されなくなる時を、ジェスチャー期間が終了した時点と判断する。
補正部74は、表示用画像を解析して、表示用画像が表の画像を含むか否かを判断する。例えば、表示用画像を二値化し、2以上の直線を検出するならば表の画像を含むと判断する。補正部74は、表示用画像中の直線が表示用画像の境界と重ならない場合、最も周辺に近い直線が境界と重なるように表示部分のサイズを変更する。表示用画像がキャプチャー画像またはコンテンツの画像に含まれる直線で区切られるサイズとなるまで、表示部分を拡大または縮小することによって、表示部分を変更する。補正部74は、変更後の表示部分を表示用画像生成部78に出力する。
表示用画像生成部78は、補正部74から変更された後の表示部分が入力される場合、ジェスチャー期間の間は、RAM114に記憶されたキャプチャー画像に基づいて変更された後の表示部分に対応する表示用画像を生成する。また、表示用画像生成部78は、コンテンツ取得部71によってWebページが取得された時、またはジェスチャー期間が終了する時は、コンテンツ取得部71から入力されるWebページを解析してWebページの表示部分に対応する画像を表示用画像として生成する。表示用画像生成部78は、生成された表示用画像を表示制御部79に出力する。
表示制御部79は、表示用画像生成部78から表示用画像が入力されることに応じて、表示用画像を表示部161に表示する。具体的には、表示制御部79は、表示用画像を表示部161に表示するために、アプリコマンドを調停部53に出力する。これにより、オペレーティング部57によって、表示部161が備えるVRAM(Video RAM)に表示用画像が記憶され、表示用画像が表示部161に表示される。
次に、キャプチャー画像について説明する。図8は、コンテンツの一例を示す第1の図である。図8を参照して、コンテンツを、サーバーに記憶される地図の画像データとしている。地図の画像401は、点線で示される領域403、領域405および領域407と、を含む。領域403は、表示部分を示し、領域405は、表示部分である領域403に対応する第1のキャプチャー部分を示し、領域407は、表示部分である領域403に対応する第2のキャプチャー部分を示す。第2のキャプチャー部分に対応する領域407は、第1のキャプチャー部分に対応する領域405よりもサイズが大きい。
図9は、表示用画像の一例を示す第1の図である。図9を参照して、表示用画像413は、図8に示した地図の画像401のうち表示部分403に該当する。
再度図8を参照して、表示用画像413が表示部161に表示されている状態で、ユーザーがピンチインのマルチタッチ操作を開始する時点の2本の指の間隔が第1の間隔の場合に、第1のキャプチャー部分の領域405が決定され、2本の指の間隔が第1の間隔より広い第2の間隔の場合に、第2のキャプチャー部分の領域407が決定される。
また、基準倍率は、ピンチインのマルチタッチ操作を開始する時点の2本の指の間隔が第1の間隔の場合の方が第2の間隔の場合よりも小さな値に設定される。このため、日本の指の間隔を狭くする距離が同じであっても、最初の指示時点の2本の指の間隔が第1の間隔の場合の方が第2の間隔の場合よりも表示用画像413の縮小率が小さくなる。このため、ピンチイン操作における最初の指示時点の2本の指の間隔が第1の間隔の場合に、第1のキャプチャー部分の領域405よりサイズの大きな第2のキャプチャー部分の領域407を決定することにより、表示用画像を縮小する場合に、表示部分のサイズを拡大した後の表示部分が第2のキャプチャー部分の領域407のサイズを超えないようにすることができる。また、ピンチイン操作における最初の指示時点の2本の指の間隔が第1の間隔の場合に第2のキャプチャー部分の領域407よりサイズの小さい第1のキャプチャー部分の領域405を決定することにより、キャプチャー部分のサイズをできるだけ小さくすることができる。このため、処理の対象とするデータ量を小さくすることができるので、CPU111の負荷を低減してレスポンスタイムを早くすることができる。
図10は、コンテンツの一例を示す第2の図である。図10に示すコンテンツは、表を含む。図11は、表示用画像の一例を示す第2の図である。図11を参照して、表示用画像は、図10に示したコンテンツである表の一部である。また、表示用画像の境界は、周辺が表を構成する直線と重なる。このため、2つの直線で囲まれた文字が表示されるので、文字を認識しやすくすることができるとともに、ピンチイン操作において、文字が表示される位置に指の間隔を調整する操作を容易にすることができる。
図12は、ジェスチャーイベント決定処理の流れの一例を示す第1のフローチャートである。図13は、ジェスチャーイベント決定処理の流れの一例を示す第2のフローチャートである。ジェスチャーイベント決定処理は、MFP100が備えるCPU111が、ROM113、HDD115またはCD−ROM118に記憶された操作受付プログラムを実行することにより、CPU111により実行される処理である。図12および図13を参照して、CPU111は、タッチイベントを検出したか否かを判断する(ステップS01)。ユーザーがタッチパネル165を指示すれば、タッチパネル165により検出された位置に基づいてタッチイベントを検出する。タッチイベントを検出するまで待機状態となり(ステップS01でNO)、タッチイベントを検出したならば(ステップS01でYES)、処理をステップS02に進める。換言すれば、ジェスチャーイベント決定処理は、ユーザーがタッチパネル165を指示する場合に、タッチイベントを検出することを条件に実行される処理である。
ステップS02においては、検出されたタッチイベントが単数か否かを判断する。単数のタッチイベントが検出されたならば処理をステップS03に進めるが、複数のタッチイベントが検出されたならば処理をステップS17に進める。
ステップS03においてはタッチイベントの状態によって処理を分岐させる。タッチイベントの状態が「Press」ならば処理をステップS04に進め、「Move」ならば処理をステップS09に進め、「Release」ならば処理をステップS05に進める。ステップS04においては、タイマーT1をスタートさせ、処理をステップS01に戻す。タイマーT1は、状態が「Press」のタッチイベントが検出されてからの経過時間を計時する。
ステップS09においては、タイマーT1の値がしきい値TT1以下か否かを判断する。タイマーT1の値がしきい値TT1以下ならば処理をステップS10に進めるが、そうでなければ処理をステップS16に進める。ステップS10においては、指示距離LB1を算出する。処理がステップS10に進む場合、ステップS01において検出されたタッチイベントより前に、状態情報が「Press」または「Move」のタッチイベントが検出されている。ここでは、ステップS01において検出されたタッチイベントより前に検出されたタッチイベントを第1のタッチイベントといい、ステップS01において検出されたタッチイベントを第2のタッチイベントという。ステップS10においては、第1のタッチイベントおよび第2のタッチイベントそれぞれに含まれる位置情報で特定される2つの位置の間の距離を指示距離LB1として算出する。
ステップS11においては、指示距離LB1がしきい値TL以上か否かを判断する。指示距離LB1がしきい値TL以上ならば処理をステップS12に進めるが、そうでなければ処理をステップS16に進める。ステップS16においては、タッチイベントを決定しないことを示す未決定信号を出力し、処理を終了する。状態が「Press」のタッチイベントが検出されてからの経過時間がしきい値TT1以内に、「Press」のタッチイベントで示される位置からしきい値TL以上離れた位置を示すタッチイベントが検出されない場合は、ジェスチャーイベントを決定することなく、処理を終了する。ユーザーが指示してからしきい値TT1の時間が経過しても指示する位置が移動しない場合には、ジェスチャーイベントを決定しないためである。なお、同じ位置を所定時間指示するジェスチャーイベントを決定するようにしてもよい。
処理がステップS12に進む場合、タッチイベントの状態が「Move」の場合であり、そのタッチイベントの直前に別のタッチイベントが入力されている。別のタッチイベントの状態は、「Press」の場合と、「Move」の場合とがある。ステップS12においては、指示方向を決定する。直前に入力された別のタッチイベントに含まれる位置情報で特定される位置からステップS01において検出されたタッチイベントに含まれる位置情報で特定される位置に向かう方向を決定する。ここで決定する方向は、表示部161の表示面を基準にした上下左右の4方向のうち最も近い方向である。
次のステップS13においては、指示距離LB1がしきい値TH以上か否かを判断する。指示距離LB1がしきい値TH以上ならば処理をステップS14に進めるが、そうでなければ処理をステップS15に進める。
ステップS14においては、ジェスチャーイベントをスワイプに決定し、処理をステップS33に進める。ジェスチャーイベントは、ジェスチャー識別情報「スワイプ」と、ステップS12において決定された方向および、ステップS10において算出された指示距離LB1を含むパラメータと、を含む。ステップS15においては、ジェスチャーイベントをフリックに決定し、処理をステップS33に進める。ジェスチャーイベントは、ジェスチャー識別情報「フリック」と、ステップS12において決定された方向および、ステップS10において算出された指示距離LB1を含むパラメータと、を含む。
処理がステップS05に進む場合、ステップS01において検出されたタッチイベントの状態が「Release」である。タッチイベントの状態が「Release」の場合、そのタッチイベントの直前に別のタッチイベントが入力されている。別のタッチイベントの状態は、「Press」の場合と、「Move」の場合とがある。ステップS05においては、直前に入力された別のタッチイベントの状態によって処理を分岐させる。直前に入力された別のタッチイベントの状態が「Press」ならば処理をステップS06に進めるが、そうでなければ処理をステップS01に戻す。
ステップS06においては、ステップS01において検出されたタッチイベントに含まれる位置情報と同じ位置情報がRAM114に記憶されているか否かを判断する。RAM114に記憶されているならば処理をステップS07に進めるが、そうでなければ処理をステップS08に進める。なお、ここでいう同じ位置情報とは、2つの位置情報でそれぞれ特定される2つの位置の間の距離が所定の長さ以内である場合を含む。ユーザーが同じ位置を指示する操作を検出するために、誤差を含む。
ステップS08においては、ステップS01において検出されたタッチイベントに含まれる位置情報をRAM114に一時記憶し、処理をステップS34に進める。処理がステップS08に進む場合は、直前に入力されたタッチイベントの状態が「Press」で、次に入力されるタッチイベントの状態が「Release」の場合であり、かつ、RAM114に同じ位置情報が記憶されていない場合である。換言すれば、ユーザーが最初のタップ操作を入力する場合である。
ステップS07においては、ジェスチャーイベントをダブルタップに決定し、処理をステップS34に進める。処理がステップS07に進む場合は、直前に入力されたタッチイベントの状態が「Press」で、ステップS01において入力されるタッチイベントの状態が「Release」の場合であり、かつ、RAM114に同じ位置情報が記憶されている場合である。換言すれば、ユーザーが最初のタップ操作を入力した後に、最初のタップ操作と同じ位置をタップ操作する場合である。
処理がステップS16に進む場合は、2つのタッチイベントが検出される場合である。ステップS16においては、2つのタッチイベントの少なくとも一方の状態が「Move」か否かを判断する。2つのタッチイベントの少なくとも一方の状態が「Move」ならば処理をステップS17に進めるが、そうでなければ処理をステップS01に戻す。
処理がステップS17に進む場合、ステップS01において検出された2つのタッチイベントより前に、状態情報が「Press」または「Move」の2つのタッチイベントが検出されている。ここでは、ステップS01において検出された2つのタッチイベントより前に検出された2つのタッチイベントを、第1の組の第1のタッチイベントおよび第2のタッチイベントといい、ステップS01において検出された2つのタッチイベントを、第2の組の第1のタッチイベントおよび第2のタッチイベントという。ここでは、第1の組の第1のタッチイベントと第2の組の第1のタッチイベントが連続した組とし、第1の組の第2のタッチイベントと第2の組の第2のタッチイベントが連続した組としている。ステップS18においては、間隔L1を算出する。第1の組の第1のタッチイベントおよび第2のタッチイベントそれぞれに含まれる位置情報で特定される2つの位置の間の距離を間隔L1として算出する。
ステップS19においては、指示角度Rを算出する。第1の組の第1のタッチイベントおよび第2のタッチイベントそれぞれに含まれる位置情報に基づいて、2点間を結ぶ直線の角度R1を算出する。2点間を結ぶ直線の角度は、表示部161の横方向を基準線として、2点間を結ぶ直線が基準線となす角度とすればよい。第2の組の第1のタッチイベントおよび第2のタッチイベントそれぞれに含まれる位置情報に基づいて、2点間を結ぶ直線の角度R2を算出する。そして、角度R1から角度R2を減算した差を指示角度Rとして算出する。
次のステップS20においては、ステップS19において算出された指示角度Rの絶対値が、所定のしきい値TRより大きいか否かを判断する。角度R1が変化したか否かを判断するためである。指示角度Rの絶対値が、所定のしきい値TRより大きいならば処理をステップS21に進めるが、そうでなければ処理をステップS22に進める。ステップS21においては、ジェスチャーイベントをローテーションに決定し、処理をステップS34に進める。ここで生成されるジェスチャーイベントは、ジェスチャー識別情報「ローテーション」と、ステップS18において算出された間隔L1およびステップS19において算出された指示角度Rを含むパラメータと、を含む。
ステップS22においては、指示距離Dを算出する。第2の組の第1のタッチイベントおよび第2のタッチイベントそれぞれに含まれる位置情報に基づいて、2点間の間隔L2を算出し、ステップS18において算出された間隔L1から間隔L2を減算した値を指示距離Dとして算出する。
次のステップS23においては、ステップS22において算出された指示距離Dの絶対値が、所定のしきい値TDより大きいか否かを判断する。間隔L1が変化したか否かを判断するためである。指示距離Dの絶対値が、所定のしきい値TDより大きいならば処理をステップS24に進めるが、そうでなければ処理をステップS27に進める。ステップS24においては、指示距離Dが正の値か否かを判断する。指示距離Dが正の値ならば処理をステップS25に進めるが、そうでなければ処理をステップS26に進める。ステップS25においては、ジェスチャーイベントをピンチインに決定し、処理をステップS34に進める。ジェスチャーイベントは、ジェスチャー識別情報「ピンチイン」と、ステップS18において算出された間隔L1およびステップS22において算出された指示距離Dを含むパラメータと、を含む。ステップS26においては、ジェスチャーイベントをピンチアウトに決定し、処理をステップS34に進める。ジェスチャーイベントは、ジェスチャー識別情報「ピンチアウト」と、ステップS18において算出された間隔L1およびステップS22において算出された指示距離Dを含むパラメータと、を含む。
処理がステップS27に進む場合、ステップS01において検出された2つのタッチイベントより前に、状態情報が「Press」または「Move」の2つのタッチイベントが検出されている。ステップS27においては、指示距離LB2を算出する。第1の組の第1のタッチイベントおよび第2の組の第1のタッチイベントそれぞれに含まれる位置情報で特定される2つの位置の間の距離を指示距離LB2として算出する。なお、第1の組の第2のタッチイベントおよび第2の組の第2のタッチイベントそれぞれに含まれる位置情報で特定される2つの位置の間の距離を指示距離LB2として算出するようにしてもよい。
ステップS28においては、指示距離LB2がしきい値TL以上か否かを判断する。指示距離LB2がしきい値TL以上ならば処理をステップS29に進めるが、そうでなければ処理をステップS33に進める。ステップS33においては、タッチイベントを決定しないことを示す未決定信号を出力し、処理を終了する。しきい値TL以上離れた位置を示す2つのタッチイベントが検出されない場合は、ジェスチャーイベントを決定することなく、処理を終了する。ユーザーが指示する位置が移動しない場合には、ジェスチャーイベントを決定しないためである。なお、同じ位置を所定時間指示するジェスチャーイベントを決定するようにしてもよい。
ステップS29においては、指示方向を決定する。第1の組の第1のタッチイベントに含まれる位置情報で特定される位置から第2の組の第1のタッチイベントに含まれる位置情報で特定される位置に向かう方向を決定する。ここで決定する方向は、表示部161の表示面を基準にした上下左右の4方向のうち最も近い方向である。
次のステップS30においては、指示距離LB2がしきい値TH以上か否かを判断する。指示距離LB2がしきい値TH以上ならば処理をステップS31に進めるが、そうでなければ処理をステップS32に進める。
ステップS31においては、ジェスチャーイベントをスワイプに決定し、処理をステップS34に進める。ジェスチャーイベントは、ジェスチャー識別情報「スワイプ」と、ステップS18において算出された間隔L1およびステップS27において算出された指示距離LB2を含むパラメータと、を含む。ステップS32においては、ジェスチャーイベントをフリックに決定し、処理をステップS34に進める。ジェスチャーイベントは、ジェスチャー識別情報「フリック」と、ステップS18において算出された間隔L1およびステップS27において算出された指示距離LB2を含むパラメータと、を含む。
ステップS34においては、決定されたジェスチャーイベントに対応する処理が定義されているか否かを判断する。HDD115に記憶されているマスターテーブル91において定められている複数種類の処理のうちに、カレント状態に設定されているアプリケーションプログラムに対応してジェスチャーイベントが関連付けられた処理が存在するか否かで判断する。マスターテーブル91において、決定されたジェスチャーイベントに処理が関連付けられていれば、カレント状態に設定されているアプリケーションプログラムに対応して、決定されたジェスチャーイベントに対応する処理が定義されていると判断する。決定されたジェスチャーイベントに対応する処理が定義されていれば処理をステップS35に進めるが、そうでなければ処理をステップS36に進める。ステップS35においては、決定されたジェスチャーイベントを出力し、処理を終了する。ステップS36においては、未決定信号を出力し、処理を終了する。
図14は、コンテンツ表示処理の流れの一例を示すフローチャートである。コンテンツ表示処理は、MFP100が備えるCPU111が、ROM113、HDD115またはCD−ROM118に記憶されたコンテンツ表示プログラムを実行することにより、CPU111により実行される処理である。図14を参照して、CPU111は、コンテンツを取得する(ステップS51)。具体的には、インターネットに接続されたサーバーからWebページをコンテンツとしてダウンロードする。Webページは、MFP100を操作する操作ユーザーが指定したURLで識別されるWebページである。また、予め定められたURLで識別されるWebページであってもよい。また、コンテンツは、Webページに限らず、画像データであってもよい。
ステップS52においては、取得されたWebページ中でデフォルトに定められた表示部分を決定する。ステップS53においては、ステップS51において取得されたWebページに基づいて表示部分に対応する表示用画像を生成する。そして、生成された表示用画像を表示部161に表示し(ステップS54)、処理をステップS55に進める。表示部161のVRAMに表示用画像を格納することによって、表示用画像を表示部161に表示する。
ステップS55においては、ジェスチャーベントが決定されたか否かを判断する。上述したジェスチャーイベント決定処理において、ジェスチャーイベントが出力される場合にジェスチャーイベントが決定されたと判断する。ジェスチャーイベントが決定されたならば処理をステップS56に進めるが、そうでなければ処理をステップS68に進める。
ステップS56においては、ジェスチャーイベントがマルチタッチ操作によるものか否かを判断する。マルチタッチ操作に対応するジェスチャーイベントは、パラメータに間隔L1を含むが、シングルタッチ操作に対応するジェスチャーイベントは、パラメータに間隔L1を含まない。ジェスチャーイベントがマルチタッチ操作に対応するならば処理をステップS62に進めるが、そうでなければ処理をステップS57に進める。ステップS62においては、マルチタッチ対応処理を実行し、処理をステップS63に進める。マルチタッチ対応処理の詳細は後述するが、表示用画像を生成する処理である。ステップS63においては、マルチタッチ対応処理が実行された結果、表示用画像が生成されたか否かを判断する。表示用画像が生成されたならば処理をステップS64に進めるが、そうでなければ処理をステップS55に戻す。
ステップS57においては、ジェスチャーイベントによって処理を分岐させる。ここでは、シングルタッチ操作に対応するジェスチャーイベントは、フリック操作およびスワイプ操作としている。ジェスチャーイベントがフリック操作に対応する場合処理をステップS58に進め、スワイプ操作に対応する場合処理をステップS59に進める。
ステップS58においては、移動距離を算出し、処理をステップS60に進める。ジェスチャーイベントのパラメータに含まれる指示距離LB1にデフォルト移動距離を乗算することにより移動距離を算出する。デフォルト移動距離は、デフォルトに定められた移動距離を示し、単位距離当たりの移動距離を示す。次のステップS60においては、表示部分を、ジェスチャーイベントのパラメータに含まれる方向に、移動距離だけ移動させ、処理をステップS61に進める。ステップS59においては、コンテンツを、次のWebページにページを切り換え、処理をステップS61に進める。
ステップS61においては、ステップS51において取得されたコンテンツであるWebページから表示用画像を生成し、処理をステップS64に進める。処理がステップS60から進む場合は、Webページ中で、ステップS60において移動された後の表示部分に対応する表示用画像を生成する。処理がステップS59から進む場合は、切換後のWebページ中で、切換前のページ中の表示部分の位置と同じ位置の表示部分に対応する表示用画像を生成する。
ステップS64においては、表示用画像が表の画像を含むか否かを判断する。例えば、表示用画像を二値化し、横方向の直線を検出するならば表の画像を含むと判断する。表示用画像が表の画像を含むならば処理をステップS65に進めるが、そうでなければ処理をステップS67に進める。ステップS65においては、表示用画像中の直線が表示用画像の境界か否かを判断する。表示用画像中の直線が表示用画像の境界でなければ処理をステップS66に進めるが、境界ならばステップS66をスキップして処理をステップS67に進める。ステップS66においては、表示用画像中の直線が表示用画像の境界と重なるように表示部分のサイズを変更し、処理をステップS67に進める。表示用画像が後述するキャプチャー画像またはコンテンツの画像に含まれる直線で区切られるサイズとなるまで、表示部分を拡大または縮小することによって、表示部分を変更する。なお、表示部分のサイズを異ならせることなく、表示部分を移動させることによって、表示用画像の境界が表中の直線と重なるようにしてもよい。
ステップS67においては、表示用画像を表示部161に表示し、処理をステップS68に進める。表示部161のVRAMに表示用画像を格納することによって、表示用画像を表示部161に表示する。ステップS68においては、コンテンツの表示を終了する指示を受け付けたか否かを判断する。例えば、ハードキー部167に含まれる複数のキーのうち、コンテンツ表示プログラムを終了する指示が割り当てられたキーが指示されたならばコンテンツの表示を終了する指示を受け付ける。コンテンツンの表示を終了する指示を受け付けたならば処理を終了するが、そうでなければ処理をステップS55に戻す。
図15は、マルチタッチ対応処理の流れの一例を示すフローチャートである。マルチタッチ対応処理は、図14に示したコンテンツ表示処理のステップS62において実行される処理である。ステップS62が実行される前の段階で、表示用画像が表示されており、マルチタッチ操作に対応するジェスチャーイベントが決定されている。図15を参照して、CPU111は、ジェスチャー期間の開始か否かを判断する(ステップS71)。図14のステップS55においてジェスチャーイベントが決定される前の所定時間にジェスチャーイベントが決定されていなければジェスチャー期間の開始と判断する。ジェスチャー期間の開始ならば処理をステップS72に進めるが、そうでなければ処理をステップS78に進める。
ステップS72においては、キャプチャー率を決定する。ジェスチャーイベントのパラメータに含まれる間隔L1に基づいて、キャプチャー率を決定する。キャプチャー率は、デフォルトに定められたキャプチャーサイズに対する倍率を示す。複数の距離ごとにキャプチャー率を定めたキャプチャーテーブルを予め記憶しており、そのキャプチャーテーブルを参照して、間隔L1に対応して定められたキャプチャー率を決定する。キャプチャーテーブルは、間隔L1が大きいほど大きなキャプチャー率が設定される。
ステップS73においては、デフォルトサイズにキャプチャー率を乗算した値のサイズであって、表示用画像に対応する表示部分を含むキャプチャー部分を決定する。次のステップS74においては、ステップS73において決定されたキャプチャー部分に対応するキャプチャー画像を生成する。ステップS51において取得されたWebページのうち、ステップS73において決定されたキャプチャー部分に対応する部分の画像をキャプチャー画像として生成する。そして、生成されたキャプチャー画像をRAM114に一時的に記憶し(ステップS75)、処理をステップS76に進める。
ステップS76においては、間引数Mを決定する。複数の距離ごとに間引数を定めたタイミングテーブルを参照して、間隔L1に対応して定められた間引数を決定する。タイミングテーブルは、間隔L1が大きいほど間引数が大きな値に設定される。
ステップS77においては、変数Cに初期値「1」を設定し、処理をステップS78に進める。変数Cは、決定されるジェスチャーイベントの数をカウントするための変数である。
ステップS78においては、ジェスチャーイベントの種類によって処理を分岐させる。ジェスチャーイベントがイベント識別情報「ローテーション」を含むならば処理をステップS79に進め、ジェスチャーイベントがイベント識別情報「ピンチイン」または「ピンチアウト」を含むならば処理をステップS80に進め、ジェスチャーイベントがイベント識別情報「フリック」を含むならば処理をステップS81に進め、ジェスチャーイベントがイベント識別情報「スワイプ」を含むならば処理をステップS82に進める。
ステップS79においては、回転処理を実行し、処理をコンテンツ表示処理に戻す。ステップS80においては、変倍処理を実行し、処理をコンテンツ表示処理に戻す。ステップS81においては、移動処理を実行し、処理をコンテンツ表示処理に戻す。ステップS82においては、コンテンツのページを切り換え、処理をコンテンツ表示処理に戻す。
図16は、回転処理の流れの一例を示すフローチャートである。回転処理は、図15のステップS79において実行される処理である。図16を参照して、変数である回転角合計の値を、回転角合計にジェスチャーイベントのパラメータに含まれる指示角度Rを加算した値に設定する(ステップS101)。回転角合計の初期値は「0」である。次のステップS102においては、変数Cが間引数Mと等しいか否かを判断する。変数Cが間引数Mと等しいならば処理をステップS103に進めるが、そうでなければ処理をステップS107に進める。ステップS107においては、変数Cに1を加算し、処理をマルチタッチ対応に戻す。
ステップS103においては、ジェスチャーイベントのパラメータに含まれる間隔L1から基準回転角を決定する。複数の距離ごとに基準回転角度を定めた回転角テーブルを参照して、間隔L1に対応して定められた基準回転角度を決定する。基準回転角度は、間隔L1が大きいほど大きな値に設定される。
そして、回転角合計に基準回転角を乗算することにより回転角度を算出する(ステップS104)。次のステップS105においては、表示部分を、ステップS104において算出された回転角度だけ回転させる。次のステップS106においては、RAM114に記憶されたキャプチャー画像の表示部分に対応する画像を表示用画像に設定し、処理をマルチタッチ対応処理に戻す。
図17は、変倍処理の流れの一例を示すフローチャートである。変倍処理は、図15のステップS80において実行される処理である。図17を参照して、変数である距離合計の値を、距離合計にジェスチャーイベントのパラメータに含まれる指示距離Dを加算した値に設定する(ステップS111)。距離合計の初期値は「0」である。次のステップS112においては、変数Cが間引数Mと等しいか否かを判断する。変数Cが間引数Mと等しいならば処理をステップS113に進めるが、そうでなければ処理をステップS117に進める。ステップS117においては、変数Cに1を加算し、処理をマルチタッチ対応に戻す。
ステップS113においては、ジェスチャーイベントのパラメータに含まれる間隔L1から基準倍率を決定する。複数の距離ごとに基準倍率を定めた倍率テーブルを参照して、間隔L1に対応して定められた基準倍率を決定する。ジェスチャー識別情報「ピンチイン」に対応する倍率テーブルにおいて、基準倍率は「1」より小さく、間隔L1が大きいほど小さな値に設定される。間隔L1が大きいほど大きな値に設定される。ジェスチャー識別情報「ピンチアウト」に対応する倍率テーブルにおいて、基準倍率は「1」より大きく、間隔L1が大きいほど大きな値に設定される。
そして、距離合計に基準倍率を乗算することにより倍率を算出する(ステップS114)。次のステップS115においては、表示部分を、ステップS114において算出された倍率で拡大または縮小する。次のステップS116においては、RAM114に記憶されたキャプチャー画像の表示部分に対応する画像を表示用画像に設定し、処理をマルチタッチ対応処理に戻す。
図18は、移動処理の流れの一例を示すフローチャートである。移動処理は、図15のステップS81において実行される処理である。図18を参照して、変数である移動合計の値を、移動合計にジェスチャーイベントのパラメータに含まれる指示距離LB2を加算した値に設定する(ステップS121)。移動合計の初期値は「0」である。次のステップS122においては、変数Cが間引数Mと等しいか否かを判断する。変数Cが間引数Mと等しいならば処理をステップS123に進めるが、そうでなければ処理をステップS127に進める。ステップS127においては、変数Cに1を加算し、処理をマルチタッチ対応に戻す。
ステップS123においては、ジェスチャーイベントのパラメータに含まれる間隔L1から基準移動距離を決定する。複数の距離ごとに基準移動距離を定めた移動距離テーブルを参照して、間隔L1に対応して定められた基準移動距離を決定する。基準移動距離は、間隔L1が大きいほど大きな値に設定される。
そして、移動合計に基準移動距離を乗算することにより移動距離を算出する(ステップS124)。次のステップS125においては、表示部分を、ステップS124において算出された移動距離だけジェスチャーイベントのパラメータに含まれる方向に移動させる。次のステップS126においては、ステップS51において取得されたコンテンツの画像の表示部分に対応する画像を表示用画像に設定し、処理をマルチタッチ対応処理に戻す。
なお、上述した実施の形態においては、ローテーション操作において、最初に指示する2本の指の間隔L1が広いほど、指示角度Rに対して表示部分を回転させる角度を大きくしたが、最初に指示する2本の指の間隔L1が広いほど、指示角度Rに対して表示部分を回転させる角度を小さくするようにしてもよい。この場合には、指の移動距離が長い場合であっても表示部分は少ししか回転しない。このため、回転角度を微調整する場合に有効である。間隔L1が広いほど、指示角度Rに対して表示部分を回転させる角度を大きくするか、または小さくするかを、予め設定しておくようにしてもよい。また、間隔L1をしきい値と比較することによって、間隔L1が広いほど、指示角度Rに対して表示部分を回転させる角度を大きくするか、または小さくするかを決定するようにしてもよい。例えば、間隔L1がしきい値以上の場合に、間隔L1が大きいほど指示角度Rに対して表示部分を回転させる角度を小さくし、間隔L1がしきい値より小さい場合に、間隔L1が大きいほど指示角度Rに対して表示部分を回転させる角度を大きくするようにしてもよい。
また、ピンチイン操作において、最初に指示する2本の指の間隔L1が広いほど、指示距離Dに対して表示部分を拡大する拡大率を大きくしたが、最初に指示する2本の指の間隔L1が広いほど、指示距離Dに対して表示部分を拡大する拡大率を小さくするようにしてもよい。この場合には、指の移動距離が長い場合であっても表示部分は少ししか拡大しない。このため、表示部分のサイズを微調整する場合に有効である。同様に、ピンチアウト操作において、最初に指示する2本の指の間隔L1が狭いほど、指示距離Dに対して表示部分を縮小する縮小率を小さくしたが、最初に指示する2本の指の間隔L1が狭いほど、指示距離Dに対して表示部分を縮小する縮小率を大きくするようにしてもよい。この場合には、指の移動距離が長い場合であっても表示部分は少ししか縮小しない。このため、表示部分のサイズを微調整する場合に有効である。間隔L1が広いほど、指示距離Dに対して拡大率または縮小率を大きくするか、または小さくするかを、予め設定しておくようにしてもよい。また、間隔L1をしきい値と比較することによって、間隔L1が広いほど、指示距離Dに対して表示部分を拡大率または縮小率を大きくするか、または小さくするかを決定するようにしてもよい。例えば、ピンチアウト操作の場合に、間隔L1がしきい値以上の場合に、間隔L1が大きいほど指示距離Dに対する拡大率を小さくし、間隔L1がしきい値より小さい場合に、間隔L1が大きいほど指示距離Dに対する拡大率を大きくするようにしてもよい。間隔L1をしきい値と比較することによって、ピンチイン操作の場合に、間隔L1がしきい値以上の場合に、間隔L1が大きいほど指示距離Dに対する縮小率を大きくし、間隔L1がしきい値より小さい場合に、間隔L1が大きいほど指示距離Dに対する縮小率を小さくするようにしてもよい。
また、フリック操作において、最初に指示する2本の指の間隔L1が広いほど、指示距離LB2に対して表示部分を移動する距離を大きくしたが、最初に指示する2本の指の間隔L1が広いほど、指示距離LB2に対して表示部分を移動する距離を小さくするようにしてもよい。この場合には、指の移動距離が長い場合であっても表示部分は少ししか移動しない。このため、表示部分の位置を微調整する場合に有効である。間隔L1が広いほど、指示距離LB2に対して移動量を大きくするか、または小さくするかを、予め設定しておくようにしてもよい。また、間隔L1をしきい値と比較することによって、間隔L1が広いほど、指示距離LB2に対して表示部分を移動する量を大きくするか、または小さくするかを決定するようにしてもよい。例えば、間隔L1がしきい値以上の場合に、間隔L1が大きいほど指示距離LB2に対して表示部分を移動させる量を小さくし、間隔L1がしきい値より小さい場合に、間隔L1が大きいほど指示距離LB2に対して表示部分を移動させる量を大きくするようにしてもよい。
以上説明したように、本実施の形態におけるMFP100は、データ処理装置として機能し、コンテンツであるWebページの表示部分に対応する表示用画像を表示し、ユーザーにより指示される1以上の位置が検出されることに応じて、ジェスチャーイベントを決定し、2つの位置に基づいて決定される所定のジェスチャーイベントを決定する場合、2つの位置の間隔L1に基づいて表示部分を変更する度合いを示すスケールを決定し、表示用画像に対応する表示部分を決定したケールで変換する。このため、ユーザーが指示する2つの位置の間隔L1を異ならせることによって、コンテンツ中で表示する部分を変更することができる。その結果、マルチタッチ操作が多様化する。
また、ユーザーが指示する2つの位置の間隔L1に基づいて、キャプチャー画像のサイズを定めるキャプチャー率を決定するので、間隔L1に基づいて表示部分の拡大率を決定する場合に、キャプチャー画像のサイズを、拡大率に従って変更することができる。換言すれば、キャプチャー画像のサイズが表示部分のサイズよりも小さくなるのを防止するとともに、キャプチャー画像のサイズが表示部分のサイズに対して大きくなりすぎないようにすることができる。その結果、キャプチャー画像のサイズを適切なサイズにすることができる。
なお、上述した実施の形態においては、データ処理装置の一例としてMFP100について説明したが、図12〜図18に示した処理を、MFP100に実行させる操作受付方法、また、その操作受付方法をCPU111に実行させるためのコンテンツ表示プログラムとして、発明を捉えることができるのは言うまでもない。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
<付記>
(1)前記スケール決定手段は、前記所定のジェスチャーイベントが、前記変換手段に前記表示部分のサイズを拡大させるジェスチャーイベントの場合、前記2つの位置の間隔が変化可能な残余距離が大きな拡大率をスケールとして決定する、請求項5に記載のデータ処理装置。
(2)前記スケール決定手段は、前記所定のジェスチャーイベントが、前記変換手段に前記表示部分のサイズを縮小させるジェスチャーイベントの場合、前記2つの位置の間隔が変化可能な残余距離が大きいほど小さな縮小率をスケールとして決定する、請求項5に記載のデータ処理装置。
(3)(スクロール) 前記スケール決定手段は、前記ジェスチャーイベント決定手段により決定されるジェスチャーイベントが、前記2つの位置が相対的な方向を維持しつつ時間的に位置が変化するジェスチャーイベントの場合、前記2つの位置の間隔が大きいほど大きなスケールに決定する、請求項4〜7のいずれかに記載のデータ処理装置。
(4) 前記表示用画像生成手段は、前記ジェスチャーイベント決定手段によってジェスチャーイベントが決定される前の時、または前記ジェスチャー期間が終了する時は、前記外部に記憶されたコンテンツに基づいて前記表示用画像を生成する、請求項10に記載のデータ処理装置。