以下、本発明の実施の形態について図面を参照して説明する。以下の説明では同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
<第1の実施の形態>
図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にファクシミリデータを送信する、または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)、公衆交換電話網(Public Switched Telephone Networks)を用いたネットワーク等であってもよい。さらに、ネットワークは、インターネットに接続されている。このため、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により実現される。ここでは、MFP100に、アプリケーションプログラムとして、ブラウジングプログラムがインストールされている場合における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に出力する。位置情報は、操作ユーザーが指示した表示部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のマウスイベントに対して連続して入力される複数のマウスイベントの第1の組と、第2のマウスイベントに対して連続して入力される複数のマウスイベントの第2の組と、に基づいてジェスチャーイベントを決定する。第1の組に含まれる複数のマウスイベントは、位置情報が同じか、または位置情報が連続している。連続とは、2つの位置情報が隣接する位置を示すことをいう。第2の組に含まれる複数のマウスイベントは、位置情報が同じか、または位置情報が連続している。このため、ジェスチャーイベント決定部83は、同時に入力される複数のマウスイベントが、第1の組と第2の組のいずれに属するかを、それらに含まれる位置情報で判断する。
ジェスチャーイベント決定部83は、マウスイベント生成部85から連続してマウスイベントが入力される場合、最初に入力されるマウスイベントの状態識別情報は「Press」である。そして、ジェスチャーイベント決定部83は、状態識別情報が「Move」のマウスイベントが入力されると、状態識別情報が「Press」のマウスイベントの位置情報と、状態識別情報が「Move」のマウスイベントの位置情報とから2点間の距離を算出し、距離が所定のしきい値TH以上ならばユーザーによるスワイプ操作を検出し、距離が所定のしきい値THより短ければユーザーによるフリック操作を検出する。また、複数のマウスイベントが入力される場合は、最初の複数のマウスイベントによってユーザーによるスワイプ操作が検出され、後の複数のマウスイベントによってユーザーによるフリック操作が検出される場合がある。ジェスチャーイベント決定部83は、スワイプ操作およびフリック操作を検出する場合、最初の位置情報で特定される位置から後の位置情報で特定される位置に向かう方向を算出し、表示部161の表示面を基準に上下左右の4方向のうち算出された方向に最も近い方向をパラメータとして決定し、パラメータを含むジェスチャー識別情報を決定する。スワイプ操作を検出する場合には、ジェスチャー識別情報「スワイプ」のジェスチャーイベントは、方向を示すパラメータを含む。フリック操作を検出する場合には、ジェスチャー識別情報「フリック」のジェスチャーイベントは、方向を示すパラメータを含む。
ジェスチャーイベント決定部83は、マウスイベント生成部85から同時に2つのマウスイベントが入力される場合、最初に入力される2つのマウスイベントそれぞれの状態は「Press」である。この場合に、2つのマウスイベントそれぞれに含まれる位置情報に基づいて、2点間の距離L1および2点間を結ぶ直線の角度R1を算出する。2点間を結ぶ直線の角度は、表示部161の横方向を基準線として、2点間を結ぶ直線が基準線となす角度とすればよい。2点間を結ぶ直線と基準線とのなす角度は、基準線から時計回りになす角度である。そして、ジェスチャーイベント決定部83は、その後に連続して入力される2つのマウスイベントの位置情報に基づいて、2点間の距離L2および2点間を結ぶ直線の角度R2を算出する。
ジェスチャーイベント決定部83は、角度R1と角度R2とが同じで、かつ、距離L2と距離L1と異なれば、ユーザーによるピンチアウト操作またはピンチイン操作を検出する。角度R1と角度R2とが同じとは、角度R1と角度R2との差が所定の範囲内の場合を含む。ユーザーの指の動きを検出するために、誤差を含む。距離L2が距離L1より大きければピンチアウト操作を検出し、距離L2が距離L1より小さければピンチイン操作を検出する。ジェスチャーイベント決定部83は、ピンチアウト操作またはピンチイン操作を検出する場合、距離L2を距離L1で除算することによって倍率を算出し、算出された倍率をパラメータとして決定し、パラメータを含むジェスチャー識別情報を決定する。ピンチアウト操作を検出する場合には、ジェスチャー識別情報「ピンチアウト」のジェスチャーイベントは、倍率を示すパラメータを含み、ピンチイン操作を検出する場合には、ジェスチャー識別情報「ピンチイン」のジェスチャーイベントは、倍率を示すパラメータを含む。
ジェスチャーイベント決定部83は、角度R1と角度R2とが異なる場合、ユーザーによるローテーション操作を検出する。角度R1と角度R2とが異なるとは、角度R1と角度R2との差が所定の範囲外の場合である。ユーザーの指の動きを検出するために、誤差を含む。ジェスチャーイベント決定部83は、ローテーション操作を検出する場合、角度R2から角度R1を減算することによって回転方向を決定し、決定された回転方向をパラメータとして決定し、パラメータを含むジェスチャー識別情報を決定する。角度R2から角度R1を減算した値がプラスならば回転方向は時計回りであり、角度R2から角度R1を減算した値がマイナスならば回転方向は反時計回りである。ジェスチャー識別情報「ローテーション」のジェスチャーイベントは、回転方向を示すパラメータを含む。
ジェスチャーイベント決定部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からジェスチャーイベントが入力され、ジェスチャーイベントをアプリケーション部51がアプリケーションプログラムを実行する複数のタスクのうちカレントタスクに出力する。ここでは、アプリケーション部51は、ブラウジング部61のみを含むため、調停部53は、ブラウジング部61をカレント状態に設定する。このため、ブラウジング部61がカレントタスクである。調停部53は、ジェスチャーイベント決定部83からジェスチャーイベントが入力されることに応じて、ジェスチャーイベントをブラウジング部61に出力する。
ブラウジング部61は、コンテンツ取得部71と、表示部分決定部72と、ジェスチャー期間検出部73と、キャプチャー部分決定部75と、キャプチャー画像生成部76と、一時記憶制御部77と、表示用画像生成部78と、表示制御部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ページであってもよい。
表示部分決定部72は、コンテンツ取得部71から入力されるWebページの少なくとも一部を表示部分に決定する。表示部分決定部72は、Webページを解釈して、Webページに対応する表示画像の少なくとも一部を表示部分に決定する。表示部分決定部72は、コンテンツ取得部71によってコンテンツが取得された時、および、ジェスチャーイベント決定部83からジェスチャーイベントが入力される時に、表示部分を決定する。表示部分決定部72は、コンテンツ取得部71によってコンテンツが取得された時点において、換言すれば、コンテンツ取得部71がWebページをダウンロードした時点において、デフォルトで定められた部分を表示部分に決定する。デフォルトで定められた表示部分は、Webページによって定められていてもよいし、Webページに対応する表示画像のサイズと表示部161のサイズとから定めるようにしてもよい。
表示部分決定部72は、ジェスチャーイベント決定部83からジェスチャーイベントが入力される場合、ジェスチャーイベントが入力されるごとに、表示部分を決定する。表示部分決定部72は、決定された表示部分をキャプチャー部分決定部75および表示用画像生成部78に出力する。表示部分は、矩形の領域であり、2つの対角で特定される。このため表示部分は、コンテンツの画像中で2つの対角の座標を含む。
ジェスチャーイベント決定部83から入力されるジェスチャーイベントは、ジェスチャー識別情報が、「スワイプ」、「フリック」、「ピンチアウト」、「ピンチイン」、「ローテーション」および「ダブルタップ」のいずれかである。表示部分決定部72は、ジェスチャー識別情報「フリック」のジェスチャーイベントが入力される場合、それ以前に決定されている表示部分を、パラメータで特定される方向に所定の距離だけ移動させた部分を、新たな表示部分に決定する。表示部分決定部72は、ジェスチャー識別情報「スワイプ」のジェスチャーイベントが入力される場合、それ以前に決定されている表示部分を、パラメータで特定される方向にページ送りした部分を、新たな表示部分に決定する。表示部分決定部72は、ジェスチャー識別情報「ピンチアウト」のジェスチャーイベントが入力される場合、それ以前に決定されている表示部分を、パラメータで特定される倍率に縮小した部分を、新たな表示部分に決定する。表示部分決定部72は、ジェスチャー識別情報「ピンチイン」のジェスチャーイベントが入力される場合、それ以前に決定されている表示部分を、パラメータで特定される倍率で拡大した部分を、新たな表示部分に決定する。表示部分決定部72は、ジェスチャー識別情報「ローテーション」のジェスチャーイベントが入力される場合、それ以前に決定されている表示部分を、パラメータで特定される回転方向に回転した部分を、新たな表示部分に決定する。表示部分決定部72は、ジェスチャー識別情報「ダブルタップ」のジェスチャーイベントが入力される場合、それ以前に決定されている表示部分を、そのまま表示部分に決定する。
ジェスチャー期間検出部73は、ジェスチャーイベント決定部83から入力されるジェスチャーイベントに基づいてジェスチャー期間を検出し、ジェスチャー期間を検出している間、ジェスチャー期間であることを示すジェスチャー期間信号をキャプチャー部分決定部75および表示用画像生成部78に出力する。ジェスチャー期間は、ジェスチャーイベント決定部83によってジェスチャーイベントが連続して決定される期間である。
具体的には、ジェスチャーイベント決定部83は、1以上のマウスイベントに基づいてジェスチャーイベントを決定するが、ジェスチャーイベント決定部83によってジェスチャーイベントが決定された後に、マウスイベント生成部85によって連続してマウスイベントが生成される場合がある。たとえば、ユーザーが、スワイプ操作を入力する場合、ユーザーが指を移動させている途中で、ジェスチャーイベント決定部83によってジェスチャーイベントが決定される場合である。この場合には、ユーザーが指をタッチパネル165から離すまで、マウスイベント生成部85によって状態識別情報「Move」のマウスイベントが生成され、ユーザーが指をタッチパネル165から離すと、マウスイベント生成部85によって状態識別情報「Release」のマウスイベントが生成される。ジェスチャーイベント決定部83は、ジェスチャー識別情報「スワイプ」のジェスチャーイベントを決定した後は、マウスイベント生成部85から状態識別情報「Release」のマウスイベントが入力されるまで、状態識別情報「Move」のマウスイベントが入力されるごとに、ジェスチャー識別情報「スワイプ」のジェスチャーイベントを出力する。ジェスチャー期間検出部73は、ジェスチャーイベント決定部83から同じジェスチャーイベントが連続して入力されている間、ジェスチャー期間を検出する。ジェスチャー期間検出部73は、ジェスチャーイベント決定部83からジェスチャーイベントが入力されるとジェスチャー期間の開始を検出し、ジェスチャーイベント決定部83からジェスチャーイベントが入力されなくなる場合、または、異なるジェスチャーイベントが入力される場合、ジェスチャー期間の終了を検出する。
キャプチャー部分決定部75は、表示部分決定部72から表示部分が入力され、ジェスチャー期間検出部73からジェスチャー期間信号が入力される。キャプチャー部分決定部75は、ジェスチャー期間が開始した時点で、表示部分決定部72から入力される表示部分を含むキャプチャー部分を決定する。キャプチャー部分決定部75は、ジェスチャー期間検出部73からジェスチャー期間信号が所定期間入力されていない状態からジェスチャー期間信号が入力される時を、ジェスチャー期間が開始した時点と判断する。キャプチャー部分は、コンテンツの画像中の少なくとも一部であって、表示部分を含む。キャプチャー部分は、表示部分よりも面積が大きい。キャプチャー部分の決定方法は、キャプチャー分を任意に定めることができる。ここでは、その一例を説明する。キャプチャー部分決定部75は、表示部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は、キャプチャー部分のサイズを決定すると、決定したサイズの領域であって表示部分を中心に含む領域をキャプチャー部分に決定する。また、表示部分がコンテンツの画像の端部に位置する場合は、キャプチャー部分のすべてがコンテンツの画像の少なくとも一部を含み、かつ、表示部分のすべてを含む位置となるようにキャプチャー部分を決定する。キャプチャー部分決定部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は、生成された表示用画像を表示制御部79に出力する。
具体的には、表示用画像生成部78は、ジェスチャー期間の間は、RAM114に記憶されたキャプチャー画像に基づいて表示部分に対応する表示用画像を生成する。一時記憶制御部77から入力されるファイル名のキャプチャー画像を、RAM114から読み出し、読みだしたキャプチャー画像のうち、ジェスチャー期間に表示部分決定部72から入力される表示部分で特定される領域を表示用画像として抽出する。また、表示用画像生成部78は、コンテンツ取得部71によってWebが取得された時、またはジェスチャー期間が終了する時は、コンテンツ取得部71から入力されるWebページに基づいて表示用画像を生成する。Webページを解析してWebページの表示部分に対応する画像を表示用画像として生成する。表示用画像生成部78は、ジェスチャー期間検出部73からジェスチャー期間信号が入力されている状態からジェスチャー期間信号が入力されなくなる時を、ジェスチャー期間が終了した時点と判断する。
表示制御部79は、表示用画像生成部78から表示用画像が入力されることに応じて、表示用画像を表示部161に表示する。具体的には、表示制御部79は、表示用画像を表示部161に表示するために、アプリコマンドを調停部53に出力する。これにより、オペレーティング部57によって、表示部161が備えるVRAM(Video RAM)に表示用画像が記憶され、表示用画像が表示部161に表示される。
図7は、ジェスチャーイベント決定処理の流れの一例を示すフローチャートである。ジェスチャーイベント決定処理は、MFP100が備えるCPU111が、ROM113、HDD115またはCD−ROM118に記憶された操作受付プログラムを実行することにより、CPU111により実行される処理である。図7を参照して、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に進めるが、そうでなければ処理をステップS11に進める。ステップS10においては、間隔がしきい値TL以上か否かを判断する。間隔がしきい値TL以上ならば処理をステップS12に進めるが、そうでなければ処理をステップS11に進める。間隔は、最初に検出されたマウスイベント、換言すれば状態が「Press」のマウスイベントに含まれる位置情報で特定される位置と、ステップS01において検出されたマウスイベントに含まれる位置情報で特定される位置との間の距離である。ステップS11においては、マウスイベントを決定しないことを示す未決定信号を出力し、処理を終了する。状態が「Press」のマウスイベントが検出されてからの経過時間がしきい値TT以内に、「Press」のマウスイベントで示される位置からしきい値TL以上離れた位置を示すマウスイベントが検出されない場合は、ジェスチャーイベントを決定することなく、処理を終了する。ユーザーが指示してからしきい値TTの時間が経過しても指示する位置が移動しない場合には、ジェスチャーイベントを決定しないためである。なお、同じ位置を所定時間指示するジェスチャーイベントを決定するようにしてもよい。
処理がステップS12に進む場合、マウスイベントの状態が「Move」の場合であり、そのマウスイベントの直前に別のマウスイベントが入力されている。別のマウスイベントの状態は、「Press」の場合と、「Move」の場合とがある。ステップS12においては、指示方向を決定する。直前に入力された別のマウスイベントに含まれる位置情報で特定される位置からステップS01において検出されたマウスイベントに含まれる位置情報で特定される位置に向かう方法を決定する。ここで決定する方向は、表示部161の表示面を基準にした上下左右の4方向のうち最も近い方向である。
次のステップS13においては、指示距離Lを算出する。直前に入力された別のマウスイベントに含まれる位置情報で特定される位置とステップS01において検出されたマウスイベントに含まれる位置情報で特定される位置との間の距離を指示距離Lとして算出する。そして、指示距離Lがしきい値TH以上か否かを判断する(ステップS14)。指示距離Lがしきい値TH以上ならば処理をステップS15に進めるが、そうでなければ処理をステップS16に進める。
ステップS15においては、ジェスチャーイベントをスワイプに決定し、処理をステップS27に進める。ステップS16においては、ジェスチャーイベントをフリックに決定し、処理をステップS27に進める。
処理がステップS05に進む場合、ステップS01において検出されたマウスイベントの状態が「Release」である。マウスイベントの状態が「Release」の場合、そのマウスイベントの直前に別のマウスイベントが入力されている。別のマウスイベントの状態は、「Press」の場合と、「Move」の場合とがある。ステップS05においては、直前に入力された別のマウスイベントの状態によって処理を分岐させる。直前に入力された別のマウスイベントの状態が「Press」ならば処理をステップS06に進めるが、そうでなければ処理をステップS01に戻す。
ステップS06においては、ステップS01において検出されたマウスイベントに含まれる位置情報と同じ位置情報がRAM114に記憶されているか否かを判断する。RAM114に記憶されているならば処理をステップS07に進めるが、そうでなければ処理をステップS08に進める。なお、ここでいう同じ位置情報とは、2つの位置情報でそれぞれ特定される2つの位置の間の距離が所定の長さ以内である場合を含む。ユーザーが同じ位置を指示する操作を検出するために、誤差を含む。
ステップS08においては、ステップS01において検出されたマウスイベントに含まれる位置情報をRAM114に一時記憶し、処理をステップS32に進める。処理がステップS08に進む場合は、直前に入力されたマウスイベントの状態が「Press」で、次に入力されるマウスイベントの状態が「Release」の場合であり、かつ、RAM114に同じ位置情報が記憶されていない場合である。換言すれば、ユーザーが最初のタップ操作を入力する場合である。
ステップS07においては、ジェスチャーイベントをダブルタップに決定し、処理をステップS27に進める。処理がステップS07に進む場合は、直前に入力されたマウスイベントの状態が「Press」で、ステップS01において入力されるマウスイベントの状態が「Release」の場合であり、かつ、RAM114に同じ位置情報が記憶されている場合である。換言すれば、ユーザーが最初のタップ操作を入力した後に、最初のタップ操作と同じ位置をタップ操作する場合である。
処理がステップS17に進む場合は、2つのマウスイベントが検出される場合である。ステップS17においては、2つのマウスイベントの少なくとも一方の状態が「Move」か否かを判断する。2つのマウスイベントの少なくとも一方の状態が「Move」ならば処理をステップS18に進めるが、そうでなければ処理をステップS01に戻す。
ステップS18においては、角度を算出する。表示部161の表示面の所定の基準辺を基準に、2つのマウスイベントそれぞれに含まれる位置情報で特定される2つの位置を結ぶ直線が基準辺となす角度を算出する。次のステップS19においては、ステップS18において算出された角度に変化があるか否かを判断する。ステップS18において算出された角度が、直前に入力された別の2つのマウスイベントに基づいて算出された角度との差が所定の角度以上であれば、角度が変化したと判断する。角度が変化したならば処理をステップS20に進めるが、そうでなければ処理をステップS21に進める。ステップS20においては、ジェスチャーイベントをローテーションに決定し、処理をステップS27に進める。
ステップS21においては、距離を算出する。2つのマウスイベントそれぞれに含まれる位置情報で特定される2つの位置の間の距離を算出する。次のステップS22においては、ステップS21において算出された距離に変化があるか否かを判断する。ステップS21において算出された距離と、直前に入力された別の2つのマウスイベントに基づいて算出された距離との差が所定の長さ以上であれば、距離が変化したと判断する。距離が変化したならば処理をステップS23に進めるが、そうでなければ処理をステップS01に戻す。
ステップS23においては、倍率を決定する。ステップS21において算出された距離を、直前に入力された別の2つのマウスイベントに基づいて算出された距離で除算した値を倍率に決定する。次のステップS24においては、倍率が1よい大きいか否かを判断する。倍率が1より大きければ処理をステップS25に進めるが、そうでなければ処理をステップS26に進める。
ステップS25においては、ジェスチャーイベントをピンチアウトに決定し、処理をステップS27に進める。ステップS26においては、ジェスチャーイベントをピンチインに決定し、処理をステップS27に進める。
ステップS27においては、決定されたジェスチャーイベントに対応する処理が定義されているか否かを判断する。HDD115に記憶されているマスターテーブル91において定められている複数種類の処理のうちに、カレント状態に設定されているアプリケーションプログラムに対応してジェスチャーイベントが関連付けられた処理が存在するか否かで判断する。マスターテーブル91において、決定されたジェスチャーイベントに処理が関連付けられていれば、カレント状態に設定されているアプリケーションプログラムに対応して、決定されたジェスチャーイベントに対応する処理が定義されていると判断する。決定されたジェスチャーイベントに対応する処理が定義されていれば処理をステップS28に進めるが、そうでなければ処理をステップS32に進める。ステップS32においては、未決定信号を出力し、処理を終了する。
ステップS28においては、決定されたジェスチャーイベントを出力し、処理をステップS29に進める。ステップS29においては、タイマーT2をスタートさせる。タイマーT2は、ジェスチャーイベントを出力してからの経過時間を計時する。ステップS30においては、タイマーT2の値がしきい値TT2以上か否かを判断する。タイマーT2の値がしきい値TT2以上ならば処理を終了するが、そうでなければ処理をステップS31に進める。ステップS31においては、マウスイベントが検出されたか否かを判断する。マウスイベントが検出されているならば処理をステップS28に戻し、そうでなければ処理をステップS30に戻す。換言すれば、ジェスチャーイベントが出力されてから所定時間TT2が経過する前にマウスイベントが検出される場合、決定されたジェスチャーイベントに対応する操作をユーザーが継続して入力していると判断する。なお、マウスイベントが所定時間TT2以内に入力されるか否かの判断に代えて、マウスイベントの状態によって判断するようにしてもよい。状態が「Move」のマウスイベントが入力される場合に、処理をステップS28に戻し、状態が「Release」のマウスイベントが入力される場合に、処理を終了する。
なお、ステップS28においては、処理がステップS31から進む場合、ステップS31において検出されたマウスイベントに基づいてパラメータを決定し、決定したパラメーラを含むジェスチャーイベントを出力する。たとえば、ジェスチャー識別情報「スワイプ」のジェスチャーイベントおよびジェスチャー識別情報「フリック」のジェスチャーイベントにおいては、指を移動させる距離をパラメータに含む。ジェスチャー識別情報「ピンチアウト」のジェスチャーイベントおよびジェスチャー識別情報「ピンチイン」のジェスチャーイベントは、2点間の間の距離をパラメータに含む。ジェスチャー識別情報「ローテーション」のジェスチャーイベントは、角度をパラメータに含む。
図8は、第1の実施の形態におけるブラウジング処理の流れの一例を示すフローチャートである。第1の実施の形態におけるブラウジング処理は、MFP100が備えるCPU111が、ROM113、HDD115またはCD−ROM118に記憶されたブラウジングプログラムを実行することにより、CPU111により実行される処理である。図8を参照して、CPU111は、コンテンツを取得する(ステップS51)。具体的には、インターネットに接続されたサーバーからWebページをコンテンツとしてダウンロードする。Webページは、MFP100を操作する操作ユーザーが指定したURLで識別されるWebページである。また、予め定められたURLで識別されるWebページであってもよい。また、コンテンツは、Webページに限らず、画像データであってもよい。
ステップS52においては、取得されたWebページ中でデフォルトで定められた表示部分を決定する。ステップS53においては、ステップS51において取得されたWebページに基づいて表示部分に対応する表示用画像を生成する。そして、生成された表示用画像を表示部161に表示し(ステップS54)、処理をステップS55に進める。表示部161のVRAMに表示用画像を格納することによって、表示用画像を表示部161に表示する。
ステップS55においては、ジェスチャーベントが決定されたか否かを判断する。上述したジェスチャーイベント決定処理において、ジェスチャーイベントが出力される場合にジェスチャーイベントが決定されたと判断する。ジェスチャーイベントが決定されたならば処理をステップS56に進めるが、そうでなければ処理をステップS63に進める。
ステップS56においては、ジェスチャー期間の開始か否かを判断する。ステップS55においてジェスチャーイベントが決定される前の所定時間にジェスチャーイベントが決定されていなければジェスチャー期間の開始と判断する。ジェスチャー期間の開始ならば処理をステップS57に進めるが、そうでなければ処理をステップS60に進める。
ステップS57においては、キャプチャー部分を決定する。ステップS57が実行される前のステップS52、または後述するステップS60において表示部分が決定されている。ステップS57においては、表示部分を含む領域をキャプチャー部分に決定する。次のステップS58においては、ステップS57において決定されたキャプチャー部分に対応するキャプチャー画像を生成する。ステップS51において取得されたWebページのうち、ステップS57において決定されたキャプチャー部分に対応する部分の画像をキャプチャー画像として生成する。そして、生成されたキャプチャー画像をRAM114に一時的に記憶し(ステップS59)、処理をステップS60に進める。
ステップS60においては、ステップS55において決定されたジェスチャーイベントに基づいて表示部分を決定する。ステップS60が実行される前のステップS52において表示部分が決定されており、さらに、ステップS60が実行される前に、既にステップS60が実行されている場合には、既に実行されたステップS60において表示部分が決定されている。このため、ステップS60においては、既に決定されている表示部分を、ジェスチャーイベントに基づいて変更した後の表示部分で更新する。たとえば、ステップS55において決定されるジェスチャーイベントがジェスチャー識別情報「スワイプ」のジェスチャーイベントまたはジェスチャー識別情報「フリック」のジェスチャーイベントの場合は、表示部分を上下左右のいずれかに平行移動させる。ジェスチャー識別情報「ピンチアウト」のジェスチャーイベントまたはジェスチャー識別情報「ピンチイン」のジェスチャーイベントの場合は、表示部分を縮小または拡大する。ジェスチャー識別情報「ローテーション」のジェスチャーイベントの場合は、表示部分を回転させる。
次のステップS61においては、RAM114に記憶されたキャプチャー画像に基づいて表示用画像を生成する。キャプチャー画像のうち表示部分の画像を抽出し、抽出された画像、または抽出された画像を拡大または縮小した画像、または抽出された画像を回転させた画像を、表示用画像に設定する。そして、生成されたキャプチャー画像を表示部161に表示し(ステップS62)、処理をステップS64に進める。
一方、ステップS63においては、ジェスチャー期間が終了したか否かを判断する。ジェスチャーイベントが所定期間決定されない場合には、ジェスチャー期間が終了したと判断する。ジェスチャー期間が終了したならば処理をステップS53に戻すが、そうでなければ処理をステップS64に進める。
ステップS64においては、コンテンツの表示を終了する指示を受け付けたか否かを判断する。例えば、ハードキー部167に含まれる複数のキーのうち、ブラウジングプログラムを終了する指示が割り当てられたキーが指示されたならばコンテンツの表示を終了する指示を受け付ける。コンテンツンの表示を終了する指示を受け付けたならば処理を終了するが、そうでなければ処理をステップS55に戻す。
このため、ジェスチャー期間においては、RAM114に記憶されたキャプチャー画像に基づいて、表示用画像が生成され、表示される。また、ジェスチャー期間が開始するときに、ステップS57〜S59が実行されて、キャプチャー画像がRAM114に記憶される。このため、表示用画像は、Webページが取得された時はその時点で、ジェスチャー期間においてはその前のジェスチャー期間が終了した時点で、それぞれWebページから生成されたキャプチャー画像に基づいて生成される。したがって、表示用画像を生成する前に、RAM114にキャプチャー画像が記憶されているので、ジェスチャー期間においては、Webページを解析して表示用画像をWebページから生成する必要がない。
本実施の形態におけるMFP100は、1回のジェスチャー期間において、Webページを解析してキャプチャー画像を1回生成すればよく、キャプチャー画像が生成された後は、ジェスチャーイベントが決定されるごとに表示用画像をキャプチャー画像から生成すればよい。表示用画像をキャプチャー画像から生成する処理の負荷は、Webページを解析して表示用画像をWebページから生成する処理の負荷に比較して小さい。このため、表示用画像を生成する時間を短くして、ユーザーが操作を入力してから表示用画像が表示されるまでのレスポンスタイムを短くすることができる。特に、ジェスチャー期間においては、マウスイベントが生成されるごとに、ジェスチャーイベントが決定されるので、表示用画像を生成する回数が多いので、ジェスチャー期間における上記レスポンスタイムを短くすることができる。
図9は、Webページ全体の画像の一例を示す図である。図9に示すWebページ全体の画像は、インターネットに接続されたサーバーからダウンロードされたWebページに対応する。ここでは、Webページを、商品を販売する店舗を紹介する内容が記述されている場合を例に説明する。
図9を参照して、Webページ全体の画像300は、Webページにおいて、2つの埋込領域310,311を含む。埋込領域310,311は、ダウンロードされたWebページにリンクされたデータの画像である。
埋込領域310には、その店の場所を示す地図の画像が配置され、埋込領域311には、その店が販売する商品のリストを表示する画像が配置される。点線で示す領域301は、Webページ全体の画像300のうちでデフォルトで定められた表示部分を示し、点線で表された領域303および領域303を合わせた領域305はキャプチャー部分のキャプチャー画像を示す。なお、領域301,303を示す点線は、説明のために付したもので、表示画像300中に実際には存在しない。
この例において、Webページがダウンロードされた段階で、キャプチャー部分である領域301および領域303を合わせたキャプチャー画像がRAM114に記憶される。このため、埋込領域310および埋込領域311の画像の元データもダウンロードされている。
図10は、表示用画像の一例を示す第1の図である。図10を参照して、表示用画像331は、図9に示したWebページ全体の画像300のうち領域301を表示部分とした場合である。表示用画像331は、Webページ全体の画像300に配置された埋込領域310を含む。
図11は、表示用画像の一例を示す第2の図である。表示用画像341は、図9に示したWebページ全体の画像300のうち領域303を表示部分とした場合である。表示用画像341は、Webページ全体の画像300に配置された埋込領域311を含む。図11に示す表示用画像341は、図10に示した表示用画像331が表示部161に表示されている段階で、スワイプ操作が入力した後に表示部161に表示される。図11に示す表示用画像は、図9に示したWebページ全体の画像300のうちキャプチャー部分305から生成される。キャプチャー部分305のキャプチャー画像はRAM114に記憶されているため、埋込領域311の元データをダウンロードする必要がない。このため、表示用画像341を、Webページを解析して生成する場合に比較して、短い時間で生成することができる。
以上説明したように、第1の実施の形態におけるMFP100は、ジェスチャーイベントを決定すると、決定されたジェスチャーイベントに基づいて表示部分を決定し、さらに、表示部分を含むキャプチャー部分を決定し、サーバーに記憶されたWebページを解析して、キャプチャー部分に対応するキャプチャー画像を生成し、RAM114に一時記憶する。そして、ジェスチャーイベントに基づいて表示部分が決定されると、RAM114に一時記憶されたキャプチャー画像に基づいて表示部分に対応する表示用画像を生成し、表示部161に表示する。ジェスチャーイベントに基づいて表示部分を決定し、表示用画像を生成するが、表示用画像をキャプチャー画像に基づいて生成するので、Webページを解析して表示用画像を生成する回数を減らすことができる。このため、表示用画像を生成する処理を実行するCPU111の負荷が小さくなるので、ユーザーが操作を入力してからコンテンツの画像が表示されるまでのレスポンスタイムを短くすることができる。
また、ジェスチャー期間が開始した時点で決定された表示部分を含むキャプチャー部分を決定し、RAM114に一時記憶する。そして、ジェスチャー期間の間は、表示部分を決定するごとに、RAM114に一時記憶されたキャプチャー画像に基づいて表示部分に対応する表示用画像を生成する。一方、ジェスチャーイベントが決定される前のWebページをサーバーから取得した時、またはジェスチャー期間が終了する時は、サーバーに部に記憶されたWebページを解析して表示用画像を生成する。このため、ジェスチャー期間が開始した時点でキャプチャー画像をRAM114に一時記憶し、ジェスチャー期間の間はRAM114に一時記憶されたキャプチャー画像に基づいて表示部分に対応する表示用画像を生成する。したがって、ジェスチャー期間は、ジェスチャー期間が開始する時に生成されたキャプチャー画像に基づいて表示用画像を生成するので、Webページに基づいて表示用画像を生成する回数を減らすことができる。
また、表示部161のサイズ、表示用画像の倍率、RAM114の空容量に基づいて、キャプチャー部分のサイズを決定するので、RAM114の空き領域を有効に利用することができる。
さらに、ブラウジングプログラムにより定められる複数種類の処理のうち入力されたジェスチャーイベントに対応する種類の処理を実行することによって、表示部分を決定するので、ブラウジングプログラムで定められた方法で、表示部分を決定することができる。
<変形例>
上述した第1の実施の形態においては、MFP100は、ジェスチャー期間の開始時点でキャプチャー画像を生成し、ジェスチャー期間の間はキャプチャー画像に基づいて表示用画像を生成し、表示部161に表示する。変形例におけるMFP100Aは、キャプチャー画像を生成するタイミングを、コンテンツが取得された時、またはジェスチャー期間が終了した時とする点で異なる。その他の機能は上述した実施の形態におけるMFP100と同じなので、ここでは異なる部分を主に説明する。
図12は、変形例におけるMFPが備えるCPUが有する機能の一例を、HDDに記憶される情報とともに示すブロック図である。図12を参照して、図5に示した機能と異なる点は、キャプチャー部分決定部75および表示用画像生成部78が、キャプチャー部分決定部75Aおよび表示用画像生成部78Aに変更された点である。その他の機能は、図5に示した機能と同じなので、ここでは説明を繰り返さない。
キャプチャー部分決定部75Aは、表示部分決定部72から表示部分が入力され、ジェスチャー期間検出部73からジェスチャー期間信号が入力される。キャプチャー部分決定部75Aは、コンテンツ取得部71によってコンテンツが取得された時、およびジェスチャー期間が終了した時に、表示部分決定部72から入力される表示部分を含むキャプチャー部分を決定する。表示部分決定部72は、コンテンツ取得部71によってコンテンツが取得された時、および、ジェスチャーイベント決定部83からジェスチャーイベントが入力される時に、表示部分を出力する。キャプチャー部分決定部75Aは、ジェスチャー期間検出部73からジェスチャー期間信号が入力されていない期間に、表示部分決定部72から表示部分が入力される場合、その表示部分を含むキャプチャー部分を決定する。キャプチャー部分決定部75Aは、ジェスチャー期間検出部73からジェスチャー期間信号が入力されている状態からジェスチャー期間信号が入力されなくなる場合、最後にジェスチャー期間信号が入力された時を、ジェスチャー期間が終了した時点と判断する。キャプチャー部分決定部75Aは、ジェスチャー期間が終了した時点で、表示部分決定部72から入力される表示部分を含むキャプチャー部分を決定する。
キャプチャー部分は、コンテンツの画像中の少なくとも一部であって、表示部分を含み、表示部分よりも面積が大きい。キャプチャー部分の決定方法は、キャプチャー分を任意に定めることができる。キャプチャー部分決定部75Aがキャプチャー部分を決定する方法は、上述したキャプチャー部分決定部75がキャプチャー部分を決定する方法と同じである。したがって、ここでは説明を繰り返さない。
表示用画像生成部78Aは、表示部分決定部72から表示部分が入力され、ジェスチャー期間検出部73からジェスチャー期間信号が入力され、一時記憶制御部77からキャプチャー画像のファイル名が入力される。表示用画像生成部78Aは、RAM114に記憶されたキャプチャー画像に基づいて表示部分に対応する表示用画像を生成する。一時記憶制御部77から入力されるファイル名のキャプチャー画像を、RAM114から読み出し、読みだしたキャプチャー画像のうち、ジェスチャー期間に表示部分決定部72から入力される表示部分で特定される領域を表示用画像として抽出する。
表示用画像生成部78Aは、コンテンツ取得部71によってコンテンツが取得された時、ジェスチャー期間の間はジェスチャーイベントが決定される時、およびジェスチャー期間が終了する時に、表示用画像を生成する。表示用画像生成部78Aは、生成された表示用画像を表示制御部79に出力する。コンテンツ取得部71によってコンテンツが取得された時に、RAM114に記憶されているキャプチャー画像は、キャプチャー部分決定部75Aによって、コンテンツ取得部71によってコンテンツが取得された時に決定されたキャプチャー部分に対応する画像である。ジェスチャー期間の間にRAM114に記憶されているキャプチャー画像は、キャプチャー部分決定部75Aによって、そのジェスチャー期間より前のジェスチャー期間が終了した時に決定されたキャプチャー部分に対応する画像である。ジェスチャー期間が終了する時にRAM114に記憶されているキャプチャー画像は、キャプチャー部分決定部75Aによって、そのジェスチャー期間が終了した時に決定されたキャプチャー部分に対応する画像である。
変形例におけるMFP100Aにおいては、Webページが取得された時点、およびジェスチャー期間が終了した時点で、キャプチャー画像生成部76によって生成されたキャプチャー画像が一時記憶制御部77によってRAM114に記憶される。このため、表示用画像生成部78Aは、Webページが取得された時点においては、キャプチャー画像生成部76によってWebページが取得された時点に生成されたキャプチャー画像に基づいて表示用画像を生成する。表示用画像生成部78Aは、ジェスチャーイベントが決定されるごとに、そのジェスチャーイベントが属するジェスチャー期間より前のジェスチャー期間が終了した時点でキャプチャー画像生成部76によって生成されたキャプチャー画像に基づいて表示用画像を生成する。さらに、表示用画像生成部78Aは、ジェスチャー期間が終了する時は、キャプチャー画像生成部76によってそのジェスチャー期間が終了する時点に生成されたキャプチャー画像に基づいて表示用画像を生成する。したがって、表示用画像生成部78Aが表示用画像を生成する前に、RAM114にキャプチャー画像が記憶されているので、キャプチャー部分を決定し、キャプチャー画像を生成する時間が必要ない。
図13は、変形例におけるブラウジング処理の流れの一例を示すフローチャートである。図13を参照して、変形例におけるブラウジング処理が、図8に示した第1の実施の形態におけるブラウジング処理と異なる点は、ステップS53がステップS53Aに変更された点、ステップS52とステップS53Aとの間にステップS71〜S73が追加された点、ステップS56〜ステップS59が削除された点である。その他の処理は、図8に示した処理と同じなのでここでは説明を繰り返さない。
ステップS52において表示部分が決定された後、ステップS71において、キャプチャー部分を決定する。ステップS52において決定された表示部分、後述するステップS60が実行される場合には、ステップS60において決定された表示部分を含む領域をキャプチャー部分に決定する。
次のステップS72においては、ステップS71において決定されたキャプチャー部分に対応するキャプチャー画像を生成する。ステップS51において取得されたWebページのうち、ステップS71において決定されたキャプチャー部分に対応する部分の画像をキャプチャー画像として生成する。そして、生成されたキャプチャー画像をRAM114に一時的に記憶し(ステップS73)、処理をステップS53Aに進める。
ステップS53Aにおいては、ステップS73においてRAM114に記憶されたキャプチャー画像に基づいて表示用画像を生成する。キャプチャー画像のうち表示部分の画像を抽出し、抽出された画像、または抽出された画像を拡大または縮小した画像、または抽出された画像を回転させたが画像を、表示用画像に設定する。そして、生成された表示用画像を表示部161に表示し(ステップS54)、処理をステップS55に進める。
ステップS55においては、ジェスチャーベントが決定されたか否かを判断する。ジェスチャーイベントが決定されたならば処理をステップS60に進めるが、そうでなければ処理をステップS63に進める。
ステップS60においては、ステップS55において決定されたジェスチャーイベントに基づいて表示部分を決定する。次のステップS61においては、RAM114に記憶されたキャプチャー画像に基づいて表示用画像を生成する。そして、生成されたキャプチャー画像を表示部161に表示し(ステップS62)、処理をステップS63に進める。
このため、ジェスチャー期間においては、RAM114に記憶されたキャプチャー画像に基づいて、表示用画像が生成され、表示される。
また、処理がステップS52からステップS71に進む場合には、Webページが取得された時にキャプチャー画像がRAM114に記憶され、処理がステップS63からステップS71に進む場合には、ジェスチャー期間が終了した時にキャプチャー画像がRAM114に記憶される。このため、表示用画像は、Webページが取得された時はその時点で、ジェスチャー期間においては、その前のジェスチャー期間が終了した時点で、Webページから生成されたキャプチャー画像に基づいて生成される。したがって、表示用画像を生成する前に、RAM114にキャプチャー画像が記憶されているので、ジェスチャー期間においては、キャプチャー部分を決定し、キャプチャー画像を生成する必要がない。このため、表示用画像を生成する時間を短くして、ユーザーが操作を入力してから表示用画像が表示されるまでのレスポンスタイムを短くすることができる。
以上説明したように、変形例におけるMFP100Aにおいては、サーバーに記憶されたWebページが取得された時点で、その時に決定された表示部分を含むキャプチャー部分を決定する。また、ジェスチャー期間が終了した時点で、その時に決定された表示部分を含むキャプチャー部分を決定する。このため、Webページが取得された時点またはジェスチャー期間が終了した時点でキャプチャー画像をRAM114に一時記憶し、ジェスチャー期間の間は一時記憶されたキャプチャー画像に基づいて表示部分に対応する表示用画像を生成する。このため、ジェスチャー期間は、ジェスチャー期間が開始する前に生成されたキャプチャー画像に基づいて表示用画像が生成されるので、ジェスチャー期間にコンテンツに基づいて表示用画像を生成する必要がない。
<第2の実施の形態>
上述した第1の実施の形態においては、MFP100は、コンテンツとしてWebページを取得する場合を例に説明した。第2の実施の形態におけるMFP100Bは、地図などの画像をコンテンツとし、コンテンツの一部を取得する点で、Webページの全体を取得する第1の実施の形態におけるMFP100および変形例におけるMFP100Aと異なる。以下、第1の実施の形態の変形例におけるMFP100Aと異なる点を主に説明する。
図14は、第2の実施の形態におけるMFPが備えるCPUが有する機能の一例を、HDDに記憶される情報とともに示すブロック図である。図14を参照して、図12に示した機能と異なる点は、コンテンツ取得部71、表示部分決定部72、キャプチャー部分決定部75A、およびキャプチャー画像生成部76が、コンテンツ取得部71B、表示部分決定部72B、キャプチャー部分決定部75B、およびキャプチャー画像取得部76Bに変更された点である。その他の機能は、図12に示した機能と同じなので、ここでは説明を繰り返さない。
コンテンツ取得部71Bは、インターネットに接続されたサーバーに記憶されたコンテンツの一部を取得する。コンテンツ取得部71Bは、サーバーにコンテンツの一部を特定する位置情報を含む送信要求を送信し、サーバーからコンテンツのうち位置情報で特定される部分を取得する。ここでは、説明のためにサーバーにコンテンツとして地図の画像が記憶されている場合を例に説明する。
表示部分決定部72Bは、サーバーに記憶されたコンテンツの少なくとも一部を表示部分に決定する。表示部分決定部72Bは、ブラウジングプログラムが起動された直後は、サーバーに記憶されているコンテンツのうちデフォルトで定められた部分を表示部分に決定する。また、デフォルトで定められた表示部分は、サーバーによって定められていてもよいし、サーバーに記憶されたコンテンツによって定められてよい。
表示部分決定部72Bは、ジェスチャーイベント決定部83からジェスチャーイベントが入力される場合、ジェスチャーイベントが入力されるごとに、表示部分を決定する。表示部分決定部72Bは、決定された表示部分をキャプチャー部分決定部75Bに出力する。表示部分は、矩形の領域であり、2つの対角で特定される。このため表示部分は、コンテンツの画像中で2つの対角の座標を含む。
キャプチャー部分決定部75Bは、表示部分決定部72Bから表示部分が入力され、ジェスチャー期間検出部73からジェスチャー期間信号が入力される。キャプチャー部分決定部75Bは、ブラウジングプログラムが起動された時、およびジェスチャー期間が終了した時に、表示部分決定部72Bから入力される表示部分を含むキャプチャー部分を決定する。表示部分決定部72Bは、ブラウジングプログラムが起動された直後、および、ジェスチャーイベント決定部83からジェスチャーイベントが入力される時に、表示部分を出力する。キャプチャー部分決定部75Bは、ジェスチャー期間検出部73からジェスチャー期間信号が入力されていない期間に、表示部分決定部72Bから表示部分が入力される場合、その表示部分を含むキャプチャー部分を決定する。キャプチャー部分決定部75Bは、ジェスチャー期間検出部73からジェスチャー期間信号が入力されている状態からジェスチャー期間信号が入力されなくなる場合、最後にジェスチャー期間信号が入力された時を、ジェスチャー期間が終了した時点と判断する。キャプチャー部分決定部75Bは、ジェスチャー期間が終了した時点で、表示部分決定部72Bから入力される表示部分を含むキャプチャー部分を決定する。
キャプチャー部分は、コンテンツの画像中の少なくとも一部であって、表示部分を含み、表示部分よりも面積が大きい。キャプチャー部分の決定方法は、キャプチャー分を任意に定めることができる。キャプチャー部分決定部75Bがキャプチャー部分を決定する方法は、第1の実施の形態におけるキャプチャー部分決定部75がキャプチャー部分を決定する方法と同じである。したがって、ここでは説明を繰り返さない。
キャプチャー画像取得部76Bは、キャプチャー部分決定部75Bからキャプチャー部分が入力され、キャプチャー部分を、コンテンツ取得部71Bに出力し、コンテンツ取得部71Bにコンテンツのキャプチャー部分を取得させる。コンテンツ取得部71Bは、キャプチャー画像取得部76Bからキャプチャー部分が入力されると、キャプチャー部分を特定する位置情報を含む送信要求をサーバーに送信し、サーバーからコンテンツのキャプチャー部分を取得する。コンテンツ取得部71Bは、取得されたコンテンツのキャプチャー部分をキャプチャー画像取得部76Bに出力する。キャプチャー画像取得部76Bは、取得されたキャプチャー画像を一時記憶制御部77に出力する。キャプチャー部分決定部75Bは、ブラウジングプログラムが起動された時、およびジェスチャー期間が終了した時に、キャプチャー部分を決定するので、キャプチャー画像取得部76Bは、ブラウジングプログラムが起動された時、およびジェスチャー期間が終了した時にキャプチャー画像を取得する。
表示用画像生成部78Bは、表示部分決定部72Bから表示部分が入力され、ジェスチャー期間検出部73からジェスチャー期間信号が入力され、一時記憶制御部77からキャプチャー画像のファイル名が入力される。表示用画像生成部78Bは、RAM114に記憶されたキャプチャー画像に基づいて表示部分に対応する表示用画像を生成する。一時記憶制御部77から入力されるファイル名のキャプチャー画像を、RAM114から読み出し、読み出したキャプチャー画像のうち、ジェスチャー期間に表示部分決定部72Bから入力される表示部分で特定される領域を表示用画像として抽出する。
表示用画像生成部78Bは、ブラウジングプログラムが起動された時、ジェスチャー期間の間はジェスチャーイベントが決定される時、およびジェスチャー期間が終了する時に、表示用画像を生成する。表示用画像生成部78Bは、生成された表示用画像を表示制御部79に出力する。ブラウジングプログラムが起動された時に、RAM114に記憶されているキャプチャー画像は、キャプチャー部分決定部75Bによって、ブラウジングプログラムが起動された時に決定されたキャプチャー部分に対応する画像である。ジェスチャー期間の間にRAM114に記憶されているキャプチャー画像は、キャプチャー部分決定部75Bによって、そのジェスチャー期間より前のジェスチャー期間が終了した時に決定されたキャプチャー部分に対応する画像である。ジェスチャー期間が終了する時にRAM114に記憶されているキャプチャー画像は、キャプチャー部分決定部75Bによって、そのジェスチャー期間が終了した時に決定されたキャプチャー部分に対応する画像である。
第2の実施の形態におけるMFP100Bにおいては、ブラウジングプログラムが起動された時点、およびジェスチャー期間が終了した時点で、キャプチャー画像取得部76Bによってサーバーから取得されたキャプチャー画像が一時記憶制御部77によってRAM114に記憶される。このため、表示用画像生成部78Bは、ブラウジングプログラムが起動された時点においては、キャプチャー画像取得部76Bによってサーバーから受信されるキャプチャー画像に基づいて表示用画像を生成する。表示用画像生成部78Bは、ジェスチャーイベントが決定されるごとに、そのジェスチャーイベントが属するジェスチャー期間より前のジェスチャー期間が終了した時点でキャプチャー画像取得部76Bによってサーバーから受信されたキャプチャー画像に基づいて表示用画像を生成する。さらに、表示用画像生成部78Bは、ジェスチャー期間が終了する時は、キャプチャー画像取得部76Bによってそのジェスチャー期間が終了する時点にサーバーから受信されたキャプチャー画像に基づいて表示用画像を生成する。したがって、表示用画像生成部78Bが表示用画像を生成する段階で、サーバーからキャプチャー画像を取得する必要ない。
図15は、第2の実施の形態におけるブラウジング処理の流れの一例を示すフローチャートである。図15を参照して、第2の実施の形態におけるブラウジング処理が、図13に示した第1の実施の形態の変形例におけるブラウジング処理と異なる点は、ステップS51が削除された点、ステップS52およびステップS72とが、ステップS52BおよびステップS72Bにそれぞれ変更された点である。その他の処理は、図13に示した処理と同じなのでここでは説明を繰り返さない。
ステップS52においては、デフォルトの表示部分を決定する。ブラウジングプログラムまたは、サーバーに記憶されているコンテンツによって予め定められている部分を表示部分に決定する。
ステップS52Bにおいて表示部分が決定された後、ステップS71において、キャプチャー部分を決定する。ステップS52Bにおいて決定された表示部分、ステップS60が実行される場合には、ステップS60において決定された表示部分を含む領域をキャプチャー部分に決定する。
次のステップS72Bにおいては、ステップS71において決定されたキャプチャー部分に対応するキャプチャー画像をサーバーから取得する。キャプチャー部分を特定するための位置情報を含む送信要求をサーバーに送信し、サーバーが受信するコンテンツの一部をキャプチャー画像として取得する。そして、ステップS72Bにおいて取得されたキャプチャー画像をRAM114に一時的に記憶し(ステップS73)、処理をステップS53Aに進める。
第2の実施の形態におけるMFP100Bは、第1の実施の形態の変形例におけるMFP100Aと同様に、ジェスチャー期間においては、RAM114に記憶されたキャプチャー画像に基づいて、表示用画像が生成され、表示される。
また、処理がステップS52BからステップS71に進む場合には、ブラウジングプログラムが起動した時にキャプチャー画像がRAM114に記憶され、処理がステップS63からステップS71に進む場合には、ジェスチャー期間が終了した時にキャプチャー画像がRAM114に記憶される。このため、表示用画像は、ブラウジングプログラムが起動した時はその時点で、ジェスチャー期間においては、その前のジェスチャー期間が終了した時点で、サーバーから受信されるキャプチャー画像に基づいて生成される。したがって、表示用画像を生成する前に、RAM114にキャプチャー画像が記憶されているので、ジェスチャー期間においては、キャプチャー部分を決定し、キャプチャー画像を生成する必要がない。このため、表示用画像を生成する時間を短くして、ユーザーが操作を入力してから表示用画像が表示されるまでのレスポンスタイムを短くすることができる。
図16は、サーバーに記憶される地図の画像データの一例を示す図である。図16を参照して、地図の画像401は、点線で示される領域403および領域405と、を含む。領域403は、地図においてデフォルトで定められた表示部分である。領域403は、表示部分である領域403に対応するキャプチャー部分である。この例においては、MFP100でサーバーから地図をダウンロードする時点で、キャプチャー部分の領域405がダウンロードされてRAM114に記憶されるとともに、領域403が表示部161に表示される。
図17は、デフォルトで表示される表示用画像の一例を示す図である。図17を参照して、表示用画像413は、図16に示した地図の画像401のうちデフォルトの表示部分403に該当する。表示用画像413が表示部161に表示されている状態で、ユーザーがピンチイン操作を入力すれば、表示用画像413を縮小した画像が表示部161に表示される。
図18は、ピンチイン操作後の表示用画像の一例を示す図である。この場合、本実施の形態におけるMFP100は、新たな表示用画像を生成する際に、図16に示したキャプチャー画像405がRAM114に記憶されており、そのキャプチャー画像405に基づいて表示用画像を生成するので、それまで表示されていた表示部分403以外の部分をサーバーからダウンロードする必要がない。このため、ピンチイン操作を入力してから新たな表示用画像を表示するまでのレスポンスタイムを短縮することができる。
図19は、キャプチャー画像を生成しない場合におけるピンチイン操作後の表示用画像の一例を示す図である。図19を参照して、ピンチイン操作前に表示部161に表示されていた表示用画像413を縮小した画像413Aが表示部161に表示され、サーバーから表示部分403の周辺の部分の画像をダウンロードするまで、画像413Aの周辺は何も表示されない。
以上説明したように、第2の実施の形態におけるMFP100Bは、サーバーに記憶された地図の一部を取得する前の時点で、表示部分を含むキャプチャー部分を決定し、サーバーに記憶された地図のうちキャプチャー部分に対応するキャプチャー画像を取得し、RAM114に一時記憶する。そして、ジェスチャーイベントが決定されると、決定されたジェスチャーイベントに基づいて表示部分を決定し、ジェスチャー期間の間、RAM114に一時記憶されたキャプチャー画像に基づいて、表示部分に対応する表示用画像を生成し、表示部161に表示する。ジェスチャーイベントに基づいて表示部分を決定し、表示用画像を生成するが、ジェスチャー期間の間は、表示用画像をキャプチャー画像に基づいて生成する。したがって、ジェスチャー期間の間は、表示用画像を生成するために、サーバーから地図の一部を取得する必要ない。このため、ジェスチャー期間の間は、サーバーからコンテンツを取得しないので、ユーザーが操作を入力してからコンテンツの画像が表示されるまでのレスポンスタイムを短くすることができる。
なお、上述した実施の形態においては、データ処理装置の一例としてMFP100,100A,100Bについて説明したが、図8、図13および図15に示した処理を、MFP100を制御するCPU111に実行させるコンテンツ表示方法、また、そのコンテンツ表示方法をCPU111に実行させるためのブラウジングプログラムとして、発明を捉えることができるのは言うまでもない。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
<付記>
(1) 前記サイズ決定手段は、前記表示手段のサイズをS、前記表示画像の倍率をb、前記メモリーの空容量をmの場合、m/(b*S)以下の最大の整数nにSを乗じた値を前記キャプチャー部分のサイズに決定する、請求項7に記載のデータ処理装置。
(2) 前記キャプチャー部分決定手段は、前記表示部分の縦方向が前記コンテンツの画像の縦方向以上の場合、前記キャプチャー部分を前記表示部分を横方向に拡大した形状に決定する第1形状決定手段を、含む、請求項1〜8のいずれかに記載のデータ処理装置。
(3) 前記キャプチャー部分決定手段は、前記表示部分の横方向が前記コンテンツの画像の横方向以上の場合、前記キャプチャー部分を前記表示部分を縦方向に拡大した形状に決定する第2形状決定手段を、含む請求項1〜8、(1)および(2)のいずれかに記載のデータ処理装置。
(4) 前記制御手段は、前記ブラウジングプログラムがインストールされる段階で、前記ブラウジングプログラムに対応して、前記ブラウジングプログラムが定める前記複数種類の処理に対応する複数のジェスチャーイベントを関連付ける関連付手段をさらに含み、
前記ジェスチャーイベント決定手段は、前記マウスイベント生成手段によって生成される1以上のマウスイベントの組に対応するジェスチャーイベントが、前記関連付手段によって前記ブラウジングプログラムに対応して前記複数種類の処理のいずれかと関連付けられていることを条件に、前記ジェスチャーイベントを決定する、請求項8に記載のデータ処理装置。