以下、本発明の実施の形態について図面を参照して説明する。以下の説明では同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
図1は、本実施の形態の一つにおけるMFPの外観を示す斜視図である。図2は、操作パネルの一例を示す平面図である。図1および図2を参照して、画像表示装置として機能するMFP(Multi Function Peripheral)100は、原稿を読み取るための原稿読取部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に示したソフトウェアアーキテクチャにおいて、アプリケーション層に属し、CPU111がアプリケーションプログラムを実行するタスクである。ここでは、アプリケーション部51は、CPU111がアプリケーションプログラムを実行するタスクとしている。
調停部53および操作変換部55は、CPU111が操作受付プログラムを実行するタスクによって実現される機能である。調停部53は、図4に示したソフトウェアアーキテクチャにおいて、アプリケーションPF層に属する。操作変換部55は、図4に示したソフトウェアアーキテクチャにおいて、アプリケーションPF層に属する。なお、操作変換部55が有する機能のすべてをアプリケーションPF層の機能としたが、操作変換部55が有する機能の少なくとも一部をアプリケーションPF層の機能とし、他の部分をMFPプロセス層の機能としてもよい。
調停部53は、CPU111が複数のアプリケーションプログラムを実行する場合、CPU111が複数のアプリケーションプログラムをそれぞれ実行する複数のタスクのうちいずれか1つをカレント状態に決定する。以下、調停部53が、カレント状態に決定しているタスクをカレントタスクという。本実施の形態においては、CPU111が1つのブラウジングプログラムを実行する場合を示し、そのタスクをアプリケーション部51としているので、アプリケーション部51をカレント状態に決定する。
調停部53は、アプリケーション部51が出力するアプリコマンドが入力され、アプリコマンドを出力したタスクを識別するためのアプリ識別情報とアプリコマンドとを操作変換部55に出力する。
調停部53は、アプリケーション部51から複数のアプリコマンドが出力される場合、それらの順番を決定し、順に操作変換部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は、アプリケーションプログラムがインストールされる段階で、アプリケーションプログラムが定める複数種類の処理それぞれを、複数のジェスチャーイベントのいずれかと関連付ける。ここでは、アプリケーション部51を、CPU111がブラウジングプログラムを実行するタスクとしているので、そのブラウジングプログラムがインストールされる場合を例に説明する。具体的には、関連付部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は、アプリケーション部51から入力されるアプリコマンドを、表示部161に画像を表示させるためのオペレーティングコマンドに変換し、オペレーティング部57に出力する。これにより、アプリケーション部51によって生成されたレンダリング画像またはキャプチャー画像が、表示部161が備えるVRAM(Video RAM)に記憶され、表示部161にレンダリング画像またはキャプチャー画像の少なくとも一部の表示部分の画像が表示される。これについての詳細は後述する。
マウスイベント生成部85は、オペレーティング部57から位置情報が入力される。オペレーティング部57は、タッチパネル165から位置情報を受け付ける場合、位置情報を、マウスイベント生成部85に出力する。マウスイベント生成部85は、オペレーティング部57から位置情報が入力されることに応じてマウスイベントを生成する。換言すれば、マウスイベント生成部85は、ユーザーがタッチパネル165にタッチする場合にマウスイベントを生成する。なお、ここでの、マウスイベントはタッチイベントともいう。さらに、マウスイベント生成部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を取得する。以下、アプリケーション部51がカレントタスクの場合について説明する。
ジェスチャーイベント決定部83は、ジェスチャーイベントを決定することに応じて、ジェスチャーイベントに基づいて、マスターテーブル91において定められている複数種類の処理のうちから調停部53によってカレント状態に設定されているアプリケーションプログラムに対応して関連付けられた処理を特定する。ここでは、調停部53によってアプリケーション部51がカレントタスクに設定されているので、ジェスチャーイベント決定部83は、ジェスチャーイベントと、マスターテーブル91によって関連付けられた処理を特定する。より具体的には、ジェスチャーイベント決定部83は、決定されたジェスチャーイベントのジェスチャー識別情報がジェスチャーの項目に設定されたマスターレコードを、マスターテーブル91から抽出し、抽出されたマスターレコードの処理の項目に設定されている処理識別情報を取得する。ジェスチャーイベント決定部83は、処理識別情報が取得される場合、決定されたジェスチャーイベントを調停部53に出力するが、処理識別情報が取得されない場合、決定されたジェスチャーイベントを調停部53に出力しない。また、ジェスチャーイベント決定部83は、マウスイベント生成部85から一度に1つのマウスイベントが連続して入力される場合であって、ジェスチャーイベントを決定しない場合、ジェスチャーイベントを決定しないことを示す未決定信号を調停部53に出力する。
ジェスチャーイベント決定部83は、調停部53によってカレント状態に設定されているアプリケーション部51が実行可能な処理に対応するジェスチャーイベントのみを調停部53に出力し、調停部53は、ジェスチャーイベントをカレントタスクであるアプリケーション部51に出力する。このため、タッチパネル165に入力される操作であって、複数のマウスイベントの組で特定されるジェスチャーイベントを、ブラウジングプログラムを実行するアプリケーション部51に実行させることができる。換言すれば、ブラウジングプログラムを開発する段階で、MFP100においてタッチパネル165で受け付け可能なジェスチャーイベントを意識することなく開発することができる。例えば、ローテーション操作を受け付けないブラウジングプログラムを開発することができる。
調停部53は、ジェスチャーイベント決定部83からジェスチャーイベントが入力され、ジェスチャーイベントを、CPU111がアプリケーションプログラムを実行する複数のタスクのうちカレントタスクに出力する。ここでは、CPU111がアプリケーションプログラムとして1つのブラウジングプログラムを実行し、そのタスクをアプリケーション部51としているので、調停部53は、アプリケーション部51をカレント状態に設定する。このため、アプリケーション部51がカレントタスクである。調停部53は、ジェスチャーイベント決定部83からジェスチャーイベントが入力されることに応じて、ジェスチャーイベントをアプリケーション部51に出力する。
アプリケーション部51は、コンテンツ取得部11と、レンダリング画像生成部13と、表示部分決定部15と、表示制御部17と、を含む。
コンテンツ取得部11は、インターネットに接続されたサーバーからコンテンツを取得し、取得されたコンテンツをレンダリング画像生成部13に出力する。コンテンツは、例えば、HTML(HyperText Markup Language)、XML(Extensible Markup Language)等のマークアップ言語で記述されたWebページである。コンテンツ取得部71が取得するコンテンツは、MFP100を操作する操作ユーザーが指定したURL(Uniform Resource Locator)で識別されるWebページであってもよいし、アプリケーション部51において予め定められたURLで識別されるWebページであってもよい。Webページは、CSS(Cascading Style Sheets)で記述されたスタイルシートを含む。CSS(Cascading Style Sheets)とは、ウェブページのスタイルを指定するための言語である。
レンダリング画像生成部13は、Webページを解析して、スタイルシートに従ってWebページに含まれる複数の要素を配置したレンダリング画像を生成する。Webページに含まれるスタイルシートが、生成するレンダリング画像のサイズごとに、レンダリング画像のレイアウトおよび/または内容を定める場合がある。具体的には、Webページに含まれるスタイルシートが、生成するレンダリング画像のサイズごとに、Webページに含まれる文字のサイズおよび配置、画像の位置等のレイアウトを定める場合がある。また、Webページに含まれるスタイルシートが、これから生成されるレンダリング画像のサイズごとに、Webページに含まれる複数の要素のうちからレンダリング画像に含める要素を定める場合がある。
レンダリング画像生成部13は、画像サイズ決定部19を含む。画像サイズ決定部19は、レンダリング画像のサイズを決定する。レンダリング画像生成部13は、画像サイズ決定部19により決定されたサイズおよびWebページに含まれるスタイルシートに従って、レンダリング画像に含める1以上の要素を決定し、決定された1以上の要素を含み、画像サイズ決定部19により決定されたサイズのレンダリング画像を生成する。レンダリング画像生成部13は、生成されたレンダリング画像を、表示部161が備えるVRAM(Video RAM)に一時記憶する。
画像サイズ決定部19は、コンテンツ取得部11によってコンテンツが取得された段階では、表示部161の表示面のサイズに基づいて、レンダリング画像のサイズを、スタイルシートによって定められたサイズに決定する。具体的には、表示部161の表示面の横方向の画素数からレンダリング画像の横方向のサイズを決定する。
画像サイズ決定部19は、コンテンツ取得部11によってコンテンツが取得された後の段階では、後述する表示部分決定部15によって定められる表示領域のサイズに基づいて、レンダリング画像のサイズを、スタイルシートによって定められたサイズに決定する。表示部分決定部15は、表示部161の表示面のサイズと表示倍率によって表示領域のサイズを定める。
表示部分決定部15は、表示部161に表示する対象となる対象画像と、その対象画像のうち表示部161に表示する表示領域と、を表示部分として決定する。表示部分決定部15は、通常期間決定部21と、キャプチャー画像取得部23と、対象画像決定部25と、終了時決定部27と、表示領域決定部29と、を含む。
表示領域決定部29は、ジェスチャーイベント決定部83から入力されるジェスチャーイベントに基づいて表示領域を決定する。表示領域決定部29は、移動部31と、変倍部33と、表示倍率決定部35と、回転部37と、ジェスチャー期間検出部39と、を含む。
ジェスチャー期間検出部39は、ジェスチャーイベント決定部83から入力されるジェスチャーイベントに基づいてジェスチャー期間を検出し、ジェスチャー期間を検出している間、ジェスチャーイベントを移動部31、表示倍率決定部35および回転部37に出力する。ジェスチャー期間は、ジェスチャーイベント決定部83によってジェスチャーイベントが連続して決定される期間である。
具体的には、ジェスチャーイベント決定部83は、1以上のマウスイベントに基づいてジェスチャーイベントを決定するが、ジェスチャーイベント決定部83によってジェスチャーイベントが決定された後に、マウスイベント生成部85によって連続してマウスイベントが生成される場合がある。たとえば、ユーザーが、スワイプ操作を入力する場合、ユーザーが指を移動させている途中で、ジェスチャーイベント決定部83によってジェスチャーイベントが決定される場合である。この場合には、ユーザーが指をタッチパネル165から離すまで、マウスイベント生成部85によって状態識別情報「Move」のマウスイベントが生成され、ユーザーが指をタッチパネル165から離すと、マウスイベント生成部85によって状態識別情報「Release」のマウスイベントが生成される。ジェスチャーイベント決定部83は、ジェスチャー識別情報「スワイプ」のジェスチャーイベントを決定した後は、マウスイベント生成部85から状態識別情報「Release」のマウスイベントが入力されるまで、状態識別情報「Move」のマウスイベントが入力されるごとに、ジェスチャー識別情報「スワイプ」のジェスチャーイベントを出力する。ジェスチャー期間検出部39は、ジェスチャーイベント決定部83から同じジェスチャーイベントが連続して入力されている間、ジェスチャー期間を検出する。ジェスチャー期間検出部39は、ジェスチャーイベント決定部83からジェスチャーイベントが入力されるとジェスチャー期間の開始を検出し、ジェスチャーイベント決定部83からジェスチャーイベントが入力されなくなる場合、または、異なるジェスチャーイベントが入力される場合、ジェスチャー期間の終了を検出する。
ジェスチャーイベント決定部83から入力されるジェスチャーイベントは、ジェスチャー識別情報が、「スワイプ」、「フリック」、「ピンチアウト」、「ピンチイン」、「ローテーション」および「ダブルタップ」のいずれかである。
移動部31は、ジェスチャー期間の間、ジェスチャー期間検出部39からジェスチャー識別情報が、「フリック」のジェスチャーイベントが入力される場合、それ以前に決定されている表示領域を、パラメータで特定される方向に所定の距離だけ移動させた部分を、新たな表示領域に決定する。また、移動部31は、ジェスチャー期間の間、ジェスチャー識別情報「スワイプ」のジェスチャーイベントが入力される場合、それ以前に決定されている表示領域を、パラメータで特定される方向にページ送りした部分を、新たな表示領域に決定する。移動部31は、ジェスチャー期間の間、ジェスチャー識別情報「ダブルタップ」のジェスチャーイベントが入力される場合、それ以前に決定されている表示領域を、そのまま表示領域に決定する。移動部31は、決定した表示領域を通常期間決定部21に出力する。
表示倍率決定部35は、ジェスチャー期間の間、ジェスチャー識別情報「ピンチアウト」のジェスチャーイベントが入力される場合、パラメータに基づいて表示倍率を決定する。また、表示倍率決定部35は、ジェスチャー期間の間、ジェスチャー識別情報「ピンチイン」のジェスチャーイベントが入力される場合、パラメータに基づいて表示倍率を決定する。表示倍率決定部35は、決定された表示倍率を変倍部33に出力する。
変倍部33は、ジェスチャー期間の最初に表示倍率決定部35から表示倍率が入力されることに応じて、換言すれば、ジェスチャー識別情報「ピンチアウト」または「ピンチイン」のジェスチャーイベントに基づくジェスチャー期間の開始に応じて、キャプチャー画像取得部23に取得指令を出力する。また、変倍部33は、ジェスチャー期間の間、表示倍率決定部35から表示倍率が入力されるごとに、それ以前に決定されている表示領域を、表示領域の中心を移動させることなく表示倍率で拡大または縮小する。変倍部33は、ジェスチャー期間の間、拡大または縮小した後の表示領域を対象画像決定部25に出力する。
回転部37は、ジェスチャー期間の最初にジェスチャー識別情報「ローテーション」のジェスチャーイベントが入力される場合、換言すれば、ジェスチャー識別情報「ローテーション」のジェスチャーイベントに基づくジェスチャー期間の開始に応じて、キャプチャー画像取得部23に取得指令を出力する。また、回転部37は、ジェスチャー期間の間、ジェスチャー識別情報「ローテーション」のジェスチャーイベントが入力されるごとに、パラメータに基づいて表示領域を回転させ、回転させた後の表示領域を新たな表示領域に決定する。回転部37は、ジェスチャー期間の間、決定した表示領域を、対象画像決定部25に出力する。
通常期間決定部21は、移動部31から表示領域が入力されているジェスチャー期間の間は、レンダリング画像を対象画像に設定し、レンダリング画像中で移動部31から入力される表示領域で特定される領域を表示部161に表示する指示を表示制御部17に出力する。また、通常期間決定部21は、ジェスチャー期間以外の間は、レンダリング画像を対象画像に設定し、レンダリング画像中でその時点で決定されている表示領域を表示部161に表示する指示を表示制御部17に出力する。
キャプチャー画像取得部23は、変倍部33または回転部37から取得指令が入力されることに応じて、レンダリング画像生成部13により生成され、表示部161のVRAMに記憶されているレンダリング画像の一部をキャプチャー画像として取得する。キャプチャー画像取得部23は、取得されたキャプチャー画像を、表示部161のVRAMに記憶する。
キャプチャー画像取得部23に変倍部33または回転部37から取得指令が入力される段階では、レンダリング画像生成部13によって表示部161のVRAMにレンダリング画像が記憶されており、表示領域決定部29によって表示領域が決定されている。キャプチャー画像取得部23は、レンダリング画像中の表示領域を基準領域とし、基準領域によって定まる複数の位置に、表示領域のサイズを変更することなく表示領域を順に移動させることにより、レンダリング画像中で、複数の位置それぞれに移動後の表示領域の画像を取得する。
具体的には、取得指令が入力される段階における基準領域の4倍のサイズのキャプチャー画像を生成するために、基準領域を基準に定まる4つの位置を決定する。4つの位置は、基準領域から表示領域の横方向のサイズの半分の長さだけ左で、かつ、縦方向に表示領域の縦方向のサイズの半分の長さだけ上の第1の位置と、基準領域から表示領域の横方向のサイズの半分の長さだけ右で、かつ、縦方向に表示領域の縦方向のサイズの半分の長さだけ上の第2の位置と、基準領域から表示領域の横方向のサイズの半分の長さだけ左で、かつ、縦方向に表示領域の縦方向のサイズの半分の長さだけ下の第3の位置と、基準領域から表示領域の横方向のサイズの半分の長さだけ右で、かつ、縦方向に表示領域の縦方向のサイズの半分の長さだけ下の第4の位置である。なお、第1〜4の位置を、表示領域の一部が重なるよう定めるようにしてもよい。
キャプチャー画像取得部23は、表示領域をそのサイズを変更することなく第1の位置に移動させることにより、レンダリング画像の第1の位置における表示領域の画像を第1の画像として取得し、表示領域をそのサイズを変更することなく第2の位置に移動させることにより、レンダリング画像の第2の位置における表示領域の画像を第2の画像として取得し、表示領域をそのサイズを変更することなく第3の位置に移動させることにより、レンダリング画像の第3の位置における表示領域の画像を第3の画像として取得し、表示領域をそのサイズを変更することなく第4の位置に移動させることにより、レンダリング画像の第4の位置における表示領域の画像を第4の画像として取得する。キャプチャー画像取得部23は、取得された第1〜第4の画像を、表示領域の第1〜第4の位置の相対的な位置関係と同じになるように配置することのよりキャプチャー画像を生成する。キャプチャー画像取得部23は、生成されたキャプチャー画像を表示部161のVRAMに記憶するとともに、キャプチャー画像がVRAMに記憶されている位置を示すアドレスを対象画像決定部25に出力する。
図7は、表示領域とキャプチャー画像との関係を説明する第1の図である。図7を参照して、レンダリング画像400中に、表示領域401を示している。レンダリング画像400中で、表示領域401を基準領域に設定する。表示領域401を、基準領域から表示領域401の横方向のサイズの半分の長さだけ左で、かつ、縦方向に表示領域の縦方向のサイズの半分の長さだけ上の第1の位置にスクロールさせることにより第1の画像402を取得する。次に、表示領域401を、基準領域から表示領域の横方向のサイズの半分の長さだけ右で、かつ、縦方向に表示領域の縦方向のサイズの半分の長さだけ上の第2の位置にスクロールさせることにより第2の画像403を取得する。表示領域401を、基準領域から表示領域の横方向のサイズの半分の長さだけ左で、かつ、縦方向に表示領域の縦方向のサイズの半分の長さだけ下の第3の位置にスクロールさせることにより第3の画像404を取得する。さらに、表示領域401を、基準領域から表示領域の横方向のサイズの半分の長さだけ右で、かつ、縦方向に表示領域の縦方向のサイズの半分の長さだけ下の第4の位置にスクロールさせることにより第4の画像405を取得する。
第1〜第4の画像402〜405を、第1〜第4の位置と相対的位置が同じになるように合成することにより、レンダリング画像400中のキャプチャー画像406を生成する。
キャプチャー画像取得部23は、表示領域をそのサイズを変更することなく第1〜第4の位置にスクロールさせることにより、レンダリング画像の第1〜第4の位置それぞれにおける表示領域の第1〜第4の画像を取得するが、表示領域が、レンダリング画像の端部に位置する場合には、表示領域を第1〜第4の位置にスクロールさせることができない場合がある。この場合には、表示領域を第1〜第4の位置に最も近くなるまでスクロールして、第1〜第4の画像を取得する。
図8は、表示領域とキャプチャー画像との関係を説明する第2の図である。図8を参照して、レンダリング画像500中に、表示領域501を示している。レンダリング画像400中の表示領域501を基準領域に設定する。基準領域を基準に、第1〜第4の位置を特定すれば、第1の位置における表示領域502、第2の位置における表示領域503、第3の位置における表示領域504、第4の位置における表示領域505が定まる。しかしながら、第2の位置における表示領域503、第3の位置における表示領域504、第4の位置における表示領域505それぞれは、レンダリング画像500の外の領域を含む。このため、表示領域501を、第2の位置における表示領域503、第3の位置における表示領域504、第4の位置における表示領域505にスクロールさせることができない。
図9は、第1の位置にスクロールした後の表示領域を示す図である。基準領域から表示領域501の横方向のサイズの半分の長さだけ左で、かつ、縦方向に表示領域の縦方向のサイズの半分の長さだけ上の第1の位置に表示領域501をスクロールさせることにより第1の画像502を取得する。
図10は、第2の位置にできるだけ近い位置にスクロールした後の表示領域を示す図である。基準領域から表示領域501が移動可能な距離だけ右で、かつ、縦方向に表示領域の縦方向のサイズの半分の長さだけ上に表示領域501をスクロールさせることにより第2の画像503Aを取得する。第2の画像503Aは、右斜め下方向のハッチングが付された表示領域501と、左下方向ハッチングが付された第2の位置における表示領域503とが重なる部分である。
図11は、第3の位置にできるだけ近い位置にスクロールした後の表示領域を示す図である。基準領域から表示領域501の横方向のサイズの半分の長さだけ左で、かつ、縦方向に表示領域が移動可能な距離だけ下に表示領域501をスクロールさせることにより第3の画像504Aを取得する。第3の画像504Aは、右斜め下方向のハッチングが付された表示領域501と、左下方向ハッチングが付された第3の位置における表示領域504とが重なる部分である。
図12は、第4の位置にできるだけ近い位置にスクロールした後の表示領域を示す図である。基準領域から表示領域501が横方向に移動可能な距離だけ右で、かつ、縦方向に移動可能な距離だけ下に表示領域501をスクロールさせることにより第4の画像505Aを取得する。第4の画像505Aは、右斜め下方向のハッチングが付された表示領域501と、左下方向ハッチングが付された第4の位置における表示領域504とが重なる部分である。
第1の画像502A、第2の画像503A、第3の画像504A、第4の画像505Aを、基準領域からのスクロールした長さにより定まる位置に配置することによってレンダリング画像400中のキャプチャー画像506を生成する。
図13は、キャプチャー画像の一例を示す図である。図13を参照して、キャプチャー画像506Aは、第1の画像502Aと、第2の画像503Aと、第3の画像504Aと、第4の画像505Aとを含む。表示領域がレンダリング画像の端部の近傍に存在している場合は、キャプチャー画像506Aは、表示領域の4倍のサイズにはならない。
なお、表示領域が第1〜第4の位置にスクロール可能な場合を仮定した場合におけるキャプチャー画像506は、第1の画像502と、第2の画像503と、第3の画像504と、第4の画像505とを含む。
なお、レンダリング画像400中でキャプチャー画像を生成する前の表示領域501を基準領域に設定するようにし、表示領域501を第1〜第4の位置にサイズを変更することなく移動させることによって、キャプチャー画像を生成するようにしたが、レンダリング画像400中でユーザーによりピンチイン操作またはピンチアウト操作が指示された位置を基準位置として、その基準位置を基準にして表示領域501を移動させる第1〜第4の位置を定めるようにしてもよい。基準位置は、例えば、ピンチイン操作またはピンチアウト操作における2本の指でそれぞれ指示された2つの位置の中点とすることができる。
図5に戻って、対象画像決定部25は、キャプチャー画像取得部23から表示部161が備えるVRAM中で、キャプチャー画像が記憶されている位置を示すアドレスが入力され、変倍部33または回転部37から表示領域が入力される。対象画像決定部25は、変倍部33または回転部37から表示領域が入力されているジェスチャー期間の間は、キャプチャー画像を対象画像に設定し、キャプチャー画像中で変倍部33または回転部37から入力される表示領域を表示部161に表示する指示を表示制御部17に出力する。キャプチャー画像中の表示領域は、変倍部33または回転部37から表示領域が入力される前の段階では、キャプチャー画像の中心を中心とし、縦横のサイズがキャプチャー画像の半分のサイズの領域である。
対象画像決定部25は、変倍部33または回転部37から表示領域が入力されなくなるジェスチャー期間の終了時点で、変倍部33または回転部37から最後に入力された表示領域を、終了時決定部27に出力する。
終了時決定部27は、対象画像決定部25から表示領域が入力されることに応じて、表示領域のサイズを算出し、決定された表示領域のサイズを、画像サイズ決定部19に出力する。表示領域のサイズは、表示領域の横方向のサイズである。変倍部33によって、表示領域が決定される場合には、表示領域の方向は変更されることなく、表示領域のサイズが拡大または縮小される。このため、表示領域の横方向のサイズが変更されている。また、回転部37によって表示領域が決定される場合には、表示領域の大きさは変更されることなく、表示領域の方向が変更されるので、横長の形状の表示領域が縦長の形状に変更になり、縦長の形状の表示領域が横長の形状に変更になる。このため、表示領域が長方形であれば、表示領域の横方向のサイズが変更されている。
画像サイズ決定部19は、終了時決定部27から表示領域のサイズが入力されることに応じて、表示領域のサイズに基づいて、レンダリング画像のサイズを、スタイルシートによって定められたサイズに決定する。レンダリング画像生成部13は、Webページに含まれるスタイルシートに従って、レンダリング画像に含める1以上の要素を決定し、決定された1以上の要素を含み、画像サイズ決定部19により決定されたサイズのレンダリング画像を生成する。レンダリング画像生成部13は、生成されたレンダリング画像を、表示部161が備えるVRAMに一時記憶するとともに、終了時決定部27に生成完了信号を出力する。
終了時決定部27は、画像サイズ決定部19から生成完了信号が入力されると、レンダリング画像を対象画像に設定し、対象画像決定部25から入力される表示領域に対応する部分を新たな表示領域に設定し、レンダリング画像中で新たに設定した表示領域を表示部161に表示する指示を表示制御部17に出力する。
表示制御部17は、通常期間決定部21、対象画像決定部25および終了時決定部27のいずれかから対象画像の表示領域を表示部161に表示する指示が入力される。表示制御部17は、対象画像がレンダリング画像の場合、表示部161のVRAMに記憶されているレンダリング画像の表示領域を表示部161に表示させる。具体的には、表示制御部17は、アプリコマンドを調停部53に出力する。これにより、オペレーティング部57によって、表示部161が備えるVRAMに記憶されているレンダリング画像の表示領域が表示部161に表示される。
表示制御部17は、対象画像がキャプチャー画像の場合、表示部161のVRAMに記憶されているキャプチャー画像の表示領域を表示部161に表示させる。具体的には、表示制御部17は、アプリコマンドを調停部53に出力する。これにより、オペレーティング部57によって、表示部161が備えるVRAMに記憶されているキャプチャー画像の表示領域が表示部161に表示される。
図14は、ジェスチャーイベント決定処理の流れの一例を示すフローチャートである。ジェスチャーイベント決定処理は、MFP100が備えるCPU111が、ROM113、HDD115またはCD−ROM118に記憶された操作受付プログラムを実行することにより、CPU111により実行される処理である。図14を参照して、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」のマウスイベントが検出されてからの経過時間がしきい値TT1以内に、「Press」のマウスイベントで示される位置からしきい値TL以上離れた位置を示すマウスイベントが検出されない場合は、ジェスチャーイベントを決定することなく、処理を終了する。ユーザーが指示してからしきい値TT1の時間が経過しても指示する位置が移動しない場合には、ジェスチャーイベントを決定しないためである。なお、同じ位置を所定時間指示するジェスチャーイベントを決定するようにしてもよい。
処理がステップ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点間の間の距離をパラメータに含む。ジェスチャー識別情報「ローテーション」のジェスチャーイベントは、角度をパラメータに含む。
図15は、画像表示処理の流れの一例を示すフローチャートである。画像表示処理は、MFP100が備えるCPU111が、ROM113、HDD115またはCD−ROM118に記憶された画像表示プログラムを実行することにより、CPU111により実行される処理である。図15を参照して、CPU111は、コンテンツを取得する(ステップS51)。具体的には、インターネットに接続されたサーバーからWebページをコンテンツとしてダウンロードする。Webページは、MFP100を操作する操作ユーザーが指定したURLで識別されるWebページである。また、予め定められたURLで識別されるWebページであってもよい。また、コンテンツは、Webページに限らず、画像データであってもよい。また、Webページは、スタイルシートを含む。
ステップS52においては、表示領域のサイズをデフォルト値に決定する。デフォルト値は、表示部161の表示面の横方向のサイズに対応して予め定められている。次のステップS53においては、表示領域のサイズが変更されたか否かを判断する。表示領域のサイズが変更されたならば処理をステップS54に進めるが、そうでなければ処理をステップS57に進める。表示領域のサイズは、後述するステップS63において変更されるが、処理がステップS52から進む場合は、表示領域のサイズが変更されたとみなし、処理をステップS54に進める。
ステップS54においては、レンダリング画像のサイズを決定する。ステップS51において取得されたWebページに含まれるスタイルシートに従って、レンダリング画像のサイズを決定する。次のステップS55においては、レンダリング画像を生成する。ステップS51において取得されたWebページに含まれるスタイルシートに従って、ステップS54において決定されたサイズのレンダリング画像を生成する。また、また、Webページが複数の要素を含む場合には、Webページに含まれるスタイルシートに従って、ステップS54において決定されたレンダリング画像のサイズに基づいて、レンダリング画像に含める1以上の要素を決定し、決定された1以上の要素を含むレンダリング画像を生成する。
次のステップS56においては、レンダリング画像を対象画像に設定する。具体的には、レンダリング画像を表示部161のVRAMに記憶する。そして、レンダリング画像中の表示領域を表示部161に表示させ(ステップS57)、処理をステップS58に進める。表示領域は、ステップS52でデフォルトのサイズに決定される場合、レンダリング画像の全体を含む。また、後述するステップS63およびステップS65において、表示領域が決定される場合があり、この場合における表示領域のサイズは、デフォルトのサイズとは異なる場合がある。
ステップS58においては、ジェスチャーベントが決定されたか否かを判断する。CPU111が上述したジェスチャーイベント決定処理を実行するタスクが、ジェスチャーイベントを出力する場合にジェスチャーイベントが決定されたと判断する。ジェスチャーイベントが決定されたならば処理をステップS59に進めるが、そうでなければ処理をステップS67に進める。
ステップS67においては、ジェスチャー期間が終了したか否かを判断する。ジェスチャーイベントが所定期間決定されない場合には、ジェスチャー期間が終了したと判断する。ジェスチャー期間が終了したならば処理をステップS53に戻すが、そうでなければ処理をステップS68に進める。
ステップS59においては、ジェスチャーイベントの種類によって処理を分岐させる。ステップS58において決定されたジェスチャーイベントのジェスチャー識別情報が、「ピンチイン」、「ピンチアウト」および「ローテーション」のいずれかであれば処理をステップS60に進めるが、ジェスチャー識別情報が、「スワイプ」、「フリック」および「ダブルタップ」のいずれかであれば処理をステップS65に進める。
ステップS60においては、ジェスチャー期間の開始か否かを判断する。ステップS58においてジェスチャーイベントが決定される前の所定時間にジェスチャーイベントが決定されていなければジェスチャー期間の開始と判断する。ジェスチャー期間の開始ならば処理をステップS61に進めるが、そうでなければ処理をステップS63に進める。
ステップS61においては、キャプチャー画像を取得する。表示部161のVRAMに記憶されているレンダリング画像の一部をキャプチャー画像として取得する。具体的には、レンダリング画像中の表示領域を基準領域とし、基準領域によって定まる第1〜第4の位置に、表示領域のサイズを変更することなく表示領域を順に移動させることにより、レンダリング画像中の第1〜第4の位置それぞれにおける表示領域の画像を第1〜第4の画像として取得する。そして、取得された第1〜第4の画像を、表示領域の第1〜第4の位置の相対的な位置関係と同じになるように配置することのよりキャプチャー画像を生成する。4つの位置は、基準領域から表示領域の横方向のサイズの半分の長さだけ左で、かつ、縦方向に表示領域の縦方向のサイズの半分の長さだけ上の第1の位置と、基準領域から表示領域の横方向のサイズの半分の長さだけ右で、かつ、縦方向に表示領域の縦方向のサイズの半分の長さだけ上の第2の位置と、基準領域から表示領域の横方向のサイズの半分の長さだけ左で、かつ、縦方向に表示領域の縦方向のサイズの半分の長さだけ下の第3の位置と、基準領域から表示領域の横方向のサイズの半分の長さだけ右で、かつ、縦方向に表示領域の縦方向のサイズの半分の長さだけ下の第4の位置である。
次のステップS62においては、キャプチャー画像を対象画像に設定し、処理をステップS63に進める。具体的には、キャプチャー画像を表示部161のVRAMに記憶する。
ステップS63においては、表示領域を決定し、処理をステップS64に進める。ステップS58において決定されたジェスチャーイベントに基づいて表示領域を決定する。ステップS63が実行される前の段階においては、表示領域が決定されている。このため、ステップS63においては、既に決定されている表示領域を、ジェスチャーイベントに基づいて変更した後の表示領域で更新する。たとえば、ステップS58において決定されるジェスチャーイベントがジェスチャー識別情報「ピンチアウト」のジェスチャーイベントまたはジェスチャー識別情報「ピンチイン」のジェスチャーイベントの場合は、表示領域を縮小または拡大する。ジェスチャー識別情報「ローテーション」のジェスチャーイベントの場合は、表示領域を回転させる。
ステップS64においては、て、キャプチャー画像のうちステップS63で決定される表示領域を表示部161に表示させ、処理をステップS68に進める。
一方、ステップS65においては、表示領域を決定し、処理をステップS66に進める。ステップS58において決定されたジェスチャーイベントに基づいて表示領域を決定する。ステップS65が実行される前の段階においては、表示領域が決定されている。このため、ステップS65においては、既に決定されている表示領域を、ジェスチャーイベントに基づいて変更した後の表示領域で更新する。たとえば、ステップS58において決定されるジェスチャーイベントがジェスチャー識別情報「スワイプ」のジェスチャーイベントまたはジェスチャー識別情報「フリック」のジェスチャーイベントの場合は、表示領域を上下左右のいずれかに平行移動させる。ステップS58において決定されるジェスチャーイベントがジェスチャー識別情報「ダブルタップ」のジェスチャーイベントの場合は、表示領域を移動させない。
ステップS66においては、レンダリング画像のうちステップS65で決定される表示領域を表示部161に表示させ、処理をステップS68に進める。
ステップS68においては、コンテンツの表示を終了する指示を受け付けたか否かを判断する。例えば、ハードキー部167に含まれる複数のキーのうち、画像表示プログラムを終了する指示が割り当てられたキーが指示されたならばコンテンツの表示を終了する指示を受け付ける。コンテンツンの表示を終了する指示を受け付けたならば処理を終了するが、そうでなければ処理をステップS58に戻す。
次に、3つの要素を含むWebページを例にMFP100でWebページを表示する動作を具体的に説明する。ここでは、Webページに含まれるスタイルシートによって、サイズが大の第1のレンダリング画像と、サイズが中の第2のレンダリング画像と、サイズが小の第3のレンダリング画像と、が定められているものとする。
図16は、Webページの第1のレンダリング画像の一例を示す図である。図16を参照して、Webページの第1のレンダリング画像300は、第1の要素が配置された領域301と、第2の要素が配置された領域302と、第3の要素が配置された領域303と、を含む。第1のレンダリング画像300の横方向のサイズは、表示部161の表示面の横方向のサイズの1.2倍である。
図17は、Webページの第2のレンダリング画像の一例を示す図である。図17を参照して、Webページの第2のレンダリング画像310は、第2の要素が配置された領域312と、第3の要素313が配置された領域313と、を含む。第2のレンダリング画像310の横方向のサイズは、表示部161の表示面の横方向のサイズの1倍である。
図18は、Webページの第3のレンダリング画像の一例を示す図である。図18を参照して、Webページの第3のレンダリング画像320は、第2の要素が配置された領域322を含む。第3のレンダリング画像320の横方向のサイズは、表示部161の表示面の横方向のサイズの0.8倍である。
MFP100において、Webページをダウンロードした段階においては、図17に示した第2のレンダリング画像310の全体が表示部161に表示される。換言すれば、表示領域の横方向のサイズは、表示部161の表示面の横方向のサイズおよび第2のレンダリング画像310の横方向のサイズと同じである。
表示領域の横方向のサイズが表示部161の表示面の横方向のサイズの1.2倍になると、図16に示した第1のレンダリング画像300の全体が表示部161に表示される。また、表示領域の横方向のサイズが表示部161の表示面の横方向のサイズの0.8倍になると、図18に示した第3のレンダリング画像320の全体が表示部161に表示される。
したがって、ユーザーがピンチイン操作またはピンチアウト操作を入力しているジェスチャー期間の間に、表示領域の横方向のサイズが表示部161の表示面の横方向のサイズの0.8倍より大きなサイズから0.8倍以下のサイズに変動するとき、第2のレンダリング画像から第3のレンダリング画像に切り換えられ、表示領域の横方向のサイズが表示部161の表示面の横方向のサイズの0.8倍以下のサイズから0.8倍より大きなサイズに変動するとき、第3のレンダリング画像から第2のレンダリング画像に切り換えられる。
また、表示領域の横方向のサイズが表示部161の表示面の横方向のサイズの1.2倍より小さなサイズから1.2倍以上のサイズに変動するとき、第2のレンダリング画像から第1のレンダリング画像に切り換えられ、表示領域の横方向のサイズが表示部161の表示面の横方向のサイズの1.2倍以上のサイズから1.2倍より小さなサイズに変動するとき、第1のレンダリング画像から第2のレンダリング画像に切り換えられる。このため、MFP100は、レンダリング画像を切り換える都度、Webページから第1〜第3のレンダリング画像のいずれかを生成しなければならない。
本実施の形態におけるMFP100は、ユーザーがピンチイン操作またはピンチアウト操作を入力する場合、ジェスチャー期間の開始時に表示部161のVRAMに記憶されているレンダリング画像からキャプチャー画像を取得し、ジェスチャー期間の間はキャプチャー画像中の表示領域を表示部161に表示させる。このため、表示領域の横方向のサイズが表示部161の表示面の横方向のサイズの0.8倍より大きなサイズから0.8倍以下のサイズに変動するとき、第3のレンダリング画像を生成する必要がなく、表示領域の横方向のサイズが表示部161の表示面の横方向のサイズの0.8倍以下のサイズから0.8倍より大きなサイズに変動するとき、第2のレンダリング画像を生成する必要がない。また、表示領域の横方向のサイズが表示部161の表示面の横方向のサイズの1.2倍より小さなサイズから1.2倍以上のサイズに変動するとき、第1のレンダリング画像を生成する必要がなく、表示領域の横方向のサイズが表示部161の表示面の横方向のサイズの1.2倍以上のサイズから1.2倍より小さなサイズに変動するとき、第2のレンダリング画像を生成する必要がない。このため、ジェスチャー期間の間は、レンダリング画像を生成する必要がないので、CPU111の負荷を低減することができ、表示部161に表示する画像の変化をスムーズにすることができる。
また、表示部161の表示面のサイズを、縦対横の比が、1対2とする場合、ユーザーがローテーション操作を入力しているジェスチャー期間の間に、表示領域が90度回転すると、表示領域の横方向のサイズが2倍または1/2倍に変動する。表示領域の横方向のサイズがサイズの2倍に変動するとき、表示領域の横方向のサイズが表示部161の表示面の横方向のサイズの1.2倍より小さなサイズから1.2倍以上のサイズに変動する場合、また、表示領域の横方向のサイズが表示部161の表示面の横方向のサイズの0.8倍以下のサイズから0.8倍より大きなサイズに変動する場合がある。
また、表示領域の横方向のサイズがサイズの1/2倍に変動するとき、表示領域の横方向のサイズが表示部161の表示面の横方向のサイズの0.8倍以下のサイズから0.8倍より大きなサイズに変動する場合、また、表示領域の横方向のサイズが表示部161の表示面の横方向のサイズの1.2倍より小さなサイズから1.2倍以上のサイズに変動する場合がある。
本実施の形態におけるMFP100は、ユーザーがローテーション操作を入力する場合、ジェスチャー期間の開始時に表示部161のVRAMに記憶されているレンダリング画像からキャプチャー画像を取得し、ジェスチャー期間の間はキャプチャー画像中の表示領域を表示部161に表示させる。このため、表示領域の横方向のサイズが2倍または1/2倍に変動するとき、レンダリング画像を生成する必要がない。レンダリング画像を生成する必要がないので、CPU111の負荷を低減することができ、表示部161に表示する画像の変化をスムーズにすることができる。
このため、ユーザーが操作を入力している最中に変動する表示領域の画像を表示する際のレスポンスタイムを短くすることができる。特に、ジェスチャー期間においては、マウスイベントが生成されるごとに、ジェスチャーイベントが決定されるので、表示領域のサイズが変化する回数が多いので、ジェスチャー期間における上記レスポンスタイムを短くすることができる。
また、キャプチャー画像のサイズは、表示領域のサイズよりも大きくしているので、ピンチイン操作で表示領域のサイズが拡大される場合であっても表示部161に変更前の表示領域に存在しなかった画像を表示することができる。
また、キャプチャー画像のサイズは、表示領域のサイズよりも大きくしているので、ローテーション操作で表示領域が回転される場合であっても表示部161に回転前の表示領域に存在しなかった画像を表示することができる。なお、ここでは、キャプチャー画像のサイズは、表示領域のサイズの4倍としたが、これに限定されるものではなく、表示領域のサイズの整数倍であればよい。
以上説明したように、本実施の携帯におけるMFP100は、ユーザーにより指示される1以上の位置の変化に基づいて、複数のジェスチャーイベントのいずれか1つを決定し、ジェスチャーイベントに従って、対象画像と表示領域とを表示部分として決定し、表示領域のサイズに基づいて、コンテンツのレンダリング画像のサイズを決定し、決定されたサイズのレンダリング画像を生成し、表示部分の画像を表示部161に表示する。レンダリング画像を対象画像に決定している状態で、ジェスチャーイベントが決定されることに応じて、新たなレンダリング画像が生成される前の段階で、レンダリング画像中で、ジェスチャーイベントが決定される時点における表示領域である基準領域の位置を基準に定まる複数の位置に表示領域をサイズを変更することなく順に移動させ、レンダリング画像中の複数の位置それぞれにおける表示領域の画像を取得し、取得される複数の画像を含むキャプチャー画像を取得し、ジェスチャー期間の間は、キャプチャー画像を対象画像に決定する。このため、ジェスチャー期間の間は、キャプチャー画像を対象画像に決定するので、新たなレンダリング画像を生成しないようにして、レンダリング画像を生成するための負荷を低減することができる。その結果、ユーザーが操作を入力している間における画像の表示をスムーズにすることが可能な画像表示装置を提供することができる。
また、ジェスチャー期間が終了した後は、外部に記憶されたコンテンツと、ジェスチャー期間の最後に決定された表示領域のサイズとに基づいて、コンテンツのレンダリング画像を生成し、ジェスチャー期間が終了した後に生成されたレンダリング画像を対象画像に決定し、レンダリング画像中でジェスチャー期間の最後に決定された表示領域に対応する領域を新たな表示領域に決定する。このため、ジェスチャー期間が終了した時点において、新たなレンダリング画像が生成され、表示領域の画像が表示されるので、ジェスチャー期間にレンダリング画像を生成する場合と同様の画像を表示することができる。
さらに、ジェスチャー識別情報「ピンチアウト」、「ピンチイン」または「ローテーション」のジェスチャーイベントが決定される場合、キャプチャー画像を対象画像に決定し、ジェスチャー識別情報「フリック」、「スワイプ」または「ダブルタップ」のジェスチャーイベントが決定される場合、レンダリング画像を対象画像に決定する。このため、新たなレンダリング画像が生成される場合のあるジェスチャーイベントが決定される場合に限って、キャプチャー画像を生成するようにし、新たなレンダリング画像が生成されることのないジェスチャーイベントが決定される場合は、キャプチャー画像を生成しないようにすることができる。
また、タッチパネル165により検出される1以上の位置の変化を示すパラメータを決定し、決定されたパラメータに従って表示領域を変更する。このため、ユーザーは1本以上の指でタッチパネルを指示するだめでよく、操作が容易である。
また、表示領域のサイズは、表示部161の表示面の解像度、レンダリング画像の解像度、および表示倍率により定まる。
また、キャプチャー画像は、レンダリング画像中で表示領域のサイズの整数倍のサイズである。好ましくは、4倍である。また、表示領域がレンダリング画像中で周辺近辺にあり、キャプチャー画像を生成するための位置まで並行移動できない場合には、キャプチャー画像のサイズを表示領域の整数倍ではなく、表示領域が並行移動可能な位置で定まるサイズにする。このため、表示領域をサイズを変更することなくレンダリング画像中で移動させることによってキャプチャー画像を取得することができる。
また、ウェブページが複数の部分コンテンツを含む場合、複数の部分コンテンツの一部または全部を含むレンダリング画像を生成する。このため、表示領域のサイズに応じてレンダリング画像に含まれる部分コンテンツが異なる場合であっても、レンダリング画像中の表示領域の画像をスムーズに表示することができる。
なお、上述した実施の形態においては、画像表示装置の一例としてMFP100について説明したが、図14および図15に示した処理を、MFP100を制御するCPU111に実行させる画像表示方法、また、その画像表示方法をCPU111に実行させるための画像表示プログラムとして、発明を捉えることができるのは言うまでもない。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
<付記>
(1) 前記表示領域決定手段は、前記決定されたジェスチャーイベントに従って表示倍率を決定する表示倍率決定手段と、
前記決定された表示倍率と、前記表示手段の表示面のサイズと、に基づいて、前記表示領域のサイズを決定する変倍サイズ決定手段と、を含む、請求項1〜10のいずれかに記載の画像表示装置。
(2) 前記表示領域のサイズは、前記表示領域の所定方向の長さであり、
前記表示領域決定手段は、前記決定されたジェスチャーイベントに従って表示領域を回転させる表示領域回転手段と、
前記表示領域回転手段により前記表示領域が回転される場合、前記回転された後の表示領域の前記所定方向のサイズを決定する回転動作サイズ決定手段と、を含む請求項1〜10のいずれかに記載の画像表示装置。
(3) 前記レンダリング画像生成手段は、前記表示領域のサイズが決定されるごとに、外部に記憶されたコンテンツと、前記表示手段の表示面のサイズと、前記決定された表示領域のサイズに基づき定まる表示倍率とに基づいて、前記コンテンツのレンダリング画像のサイズを決定する画像サイズ決定手段を、含む、請求項1〜10のいずれかに記載の画像表示装置。
(4) 前記対象画像決定手段は、前記キャプチャー画像を対象画像に決定した段階において、前記取得されたキャプチャー画像中で前記レンダリング画像中の前記基準領域に対応する領域を前記表示領域に決定し、前記ジェスチャー期間の間は、前記ジェスチャーイベント決定手段により決定されるジェスチャーイベントに従って表示領域を決定する、請求項1〜10のいずれかに記載の画像表示装置。