以下、本発明の実施の形態について図面を参照して説明する。以下の説明では同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
図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に、アプリケーションプログラムとして、第1アプリケーションプログラムおよび第2アプリケーションプログラムが、インストールされている場合におけるCPU111の機能を示している。
図5を参照して、CPU111は、アプリケーション部51と、調停部53と、操作変換部55と、オペレーティング部57と、を含む。アプリケーション部51は、図4に示したソフトウェアアーキテクチャにおいて、アプリケーション層に属する。アプリケーション部51は、第1アプリケーションプログラムであるブラウジングプログラムを実行するブラウジング部61と、ブラウジングプログラムとは別の第2アプリケーションプログラムを実行する副実行部63と、を含む。
ブラウジング部61は、表示画像生成部71と、決定部73と、選択部75と、指示部77と、を含む。表示画像生成部71は、インターネットに接続されたサーバーからHTML(HyperText Markup Language)等のマークアップ言語で記述されたコンテンツであるWebページをダウンロードし、Webページを解釈して、Webページに対応する表示画像を生成し、表示画像の少なくとも一部を表示部161に表示する。Webページは、MFP100を操作する操作ユーザーが指定したURL(Uniform Resource Locator)で識別されるWebページであってもよいし、ブラウジング部61において予め定められたURLで識別されるWebページであってもよい。
具体的には、表示画像生成部71は、Webページに対応する表示画像の少なくとも一部を表示部161に表示するために、アプリコマンドを調停部53に出力する。これにより、後述するオペレーティング部57によって、表示部161が備えるVRAM(Video RAM)に表示画像が記憶され、表示画像の少なくとも一部が表示部161に表示される。表示画像中で、表示部161に表示する部分は、任意に定めることができる。例えば、予め定めておいてもよいし、Webページによって定めるようにしてもよいし、表示画像のサイズと表示部161のサイズとから定めるようにしてもよい。
また、表示画像生成部71は、サーバーから取得されたWebページが、ブラウジングプログラムとは別の第2アプリケーションプログラムが実行されて生成される埋込画像を表示する記述を含んでいる場合、副実行部63に起動指示を出力する。これにより、副実行部63がCPU111に形成される。表示画像生成部71は、Webページが埋込画像を表示する記述を含んでいる場合、表示画像中で、Webページにより定められた埋込領域には、画像を配置しない。埋込領域は、表示画像中で埋込画像を配置する領域である。
起動指示は、表示画像中の埋込領域の位置を示す位置情報を含む。また、起動指示は、Webページとは別の埋込コンテンツを特定するコンテンツ識別情報を含む場合がある。コンテンツ識別情報は、例えば、ネットワークアドレスであり、好ましくは、URLである。
副実行部63は、表示画像生成部71から起動指示が入力されることに応じて起動する。副実行部63は、JAVA(登録商標)、JAVASCRIPT(登録商標)等のオブジェクト指向プログラミング言語で記述されたプログラムを実行する。副実行部63は、ブラウジングプログラムとは別の第2アプリケーションプログラムを実行する場合と、ブラウジングプログラムとは別の第2アプリケーションプログラムを、ネットワークを介して接続された外部のコンピューターであるサーバーに実行させる場合とがある。
副実行部63が、第2アプリケーションプログラムをネットワークに接続されたサーバーに実行させる場合、副実行部63は、ブラウジング部61に含まれる場合と、ブラウジング部61に含まれない場合がある。副実行部63がブラウジング部61に含まれる場合は、例えば、副実行部63が、JAVASCRIPT(登録商標)で記述されたアプリケーションプログラムを実行する場合である。この場合、JAVASCRIPT(登録商標)で記述されたアプリケーションプログラムが、第1アプリケーションプログラムであるブラウジングプログラム中に記述される。副実行部63がブラウジング部61に含まれない場合は、例えば、副実行部63が、JAVA(登録商標)で記述されたアプリケーションプログラムを実行する場合である。この場合、JAVA(登録商標)で記述されたアプリケーションプログラムは、第1アプリケーションプログラムであるブラウジングプログラムとは別のプログラムである。
副実行部63は、サーバーが実行する第2アプリケーションプログラムにより定まるコンテンツの画像を埋込画像として取得する。副実行部63は、サーバーによって第2アプリケーションプログラムによって予め定められた処理を実行させるために処理リクエストをサーバーに送信する。そして、副実行部63は、サーバーが処理リクエストに従って処理を実行することにより生成される画像をサーバーから受信し、受信される画像を埋込画像として取得する。サーバーによって表示するコンテンツが決定される場合には、処理リクエストはコンテンツ識別情報を含む必要はない。逆に、Webページでコンテンツを特定するようにして、サーバーに起動指示に含まれるコンテンツ識別情報を含む処理リクエストを送信し、サーバーにコンテンツ識別情報で特定されるコンテンツを処理させ、コンテンツの画像を返信させるようにしてもよい。なお、副実行部63が処理を実行させるサーバーは、ブラウジング部61がWebページをダウンロードしたサーバーと同じであってもよいし、それとは異なるサーバーであってもよい。
また、副実行部63が、ブラウジングプログラムとは別の第2アプリケーションプログラムを実行する場合、第2アプリケーションプログラムは、ブラウジングプログラムとは別のアプリケーションプログラムであり、例えば、コンテンツである静止画または動画を生成する再生プログラムである。副実行部63は、第2アプリケーションプログラムである再生プログラムを実行し、起動指示に含まれるコンテンツ識別情報で特定されるコンテンツの画像を再生する処理をCPU111に実行させる。
副実行部63は、サーバーから受信されるコンテンツの画像、または、第2アプリケーションプログラムを実行することにより生成されるコンテンツの画像を埋込画像として表示部161に表示する。具体的には、副実行部63は、埋込画像を表示画像の埋込領域に配置するために、アプリコマンドを調停部53に出力する。また、副実行部63は、ブラウジング部61に表示要求を出力する。これにより、後述するオペレーティング部57によって、表示部161が備えるVRAMに記憶された表示画像中の埋込領域に埋込画像が記憶される。アプリコマンドは、実行指示に含まれる位置情報を含む。
なお、ブラウジング部61および副実行部63が実行するアプリケーションプログラムは、これらに限定されることなく、MFP100にコピー処理、スキャン処理、プリント処理、ファクシミリ送受信処理、データ送受信処理等を実行させるために、ユーザーインターフェース等をカスタマイズするためのプログラムであってもよい。
調停部53および操作変換部55は、CPU111が操作受付プログラムを実行するタスクによって実現される機能である。調停部53は、図4に示したソフトウェアアーキテクチャにおいて、アプリケーションPF層に属する。操作変換部55は、図4に示したソフトウェアアーキテクチャにおいて、アプリケーションPF層に属する。なお、操作変換部55が有する機能のすべてをアプリケーションPF層の機能としたが、操作変換部55が有する機能の少なくとも一部をアプリケーションPF層の機能とし、他の部分をMFPプロセス層の機能としてもよい。
調停部53は、アプリケーション部51においてアプリケーションプログラムを実行するタスクが複数の場合、複数のタスクのうちいずれか1つをカレント状態に決定する。以下、調停部53が、カレント状態に決定しているタスクをカレントタスクという。本実施の形態においては、アプリケーション部51がブラウジング部61と副実行部63とを含み、副実行部63は、ブラウジング部61によって起動されるので、ブラウジング部61をカレントタスク状態に決定する。
調停部53は、ブラウジング部61および副実行部63それぞれが出力するアプリコマンドが入力され、アプリコマンドを出力したタスクを識別するためのアプリ識別情報とアプリコマンドとを操作変換部55に出力する。
調停部53は、ブラウジング部61および副実行部63から複数のアプリコマンドが出力される場合、それらの順番を決定し、順に操作変換部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または副実行部63から入力されるアプリコマンドを、表示部161に画像を表示させるためのオペレーティングコマンドに変換し、オペレーティング部57に出力する。これにより、ブラウジング部61によって生成された表示画像および副実行部63により生成される埋込画像が、表示部161のVRAMに記憶され、表示部161に表示画像の少なくとも一部が表示される。
マウスイベント生成部85は、オペレーティング部57から位置情報が入力されることに応じてマウスイベントを生成する。さらに、マウスイベント生成部85は、マウスイベントを生成するごとに、生成されたマウスイベントをジェスチャーイベント決定部83および調停部53を介しておよびブラウジング部61に出力する。マウスイベント生成部85は、オペレーティング部57から複数の位置情報が同時に入力される場合、複数の位置情報それぞれに対応する複数のマウスイベントを生成する。マウスイベント生成部85は、1以上のマウスイベントを生成する場合、生成された1以上のマウスイベントをジェスチャーイベント決定部83およびブラウジング部61に出力する。位置情報は、操作ユーザーが指示した表示部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」に決定する。さらに、状態検出部76は、第1の時に入力される位置情報で特定される位置から所定の距離の範囲内の位置情報が、第2の時に入力されない場合には、第2の時において第1の時に入力されていた位置情報に対するマウスイベントの状態を「Release」に決定する。
ジェスチャーイベント決定部83は、マウスイベント生成部85から連続して入力される複数のマウスイベントに基づいてジェスチャーイベントを決定する。ジェスチャーイベント決定部83は、マウスイベント生成部85から同時に1つのマウスイベントが連続して入力される場合、最初の第1のマウスイベントが入力されてから所定時間経過後に入力される第2のマウスイベントを特定し、第1のマウスイベントで特定される位置と、第2のマウスイベントで特定される位置との間の距離が所定の距離以上の場合に、ジェスチャーイベントを決定するが、2つの位置の間の距離が所定の距離より小さい場合にはジェスチャーイベントを決定しない。所定の時間は、任意に定めることができる。所定の時間は、たとえば、タッチパネル169が位置を検出する間隔の数倍とすることができる。また、所定の距離は、任意に定めることができるが、たとえば、40ピクセルとするのが好ましい。
ジェスチャーイベント決定部83は、マウスイベント生成部85から同時に2以上のマウスイベントが入力される場合、2以上のマウスイベントに基づいてジェスチャーイベントを決定する。したがって、ユーザーが、マルチタッチ操作を入力する場合、ジェスチャーイベント決定部83は、ジェスチャーイベントを決定する。具体的には、ジェスチャーイベント決定部83は、マウスイベント生成部85から第1のマウスイベントと第2のマウスイベントの2つが同時に入力される場合、第1のマウスイベントに対して連続して入力される複数のマウスイベントの第1の組と、第2のマウスイベントに対して連続して入力される複数のマウスイベントの第2の組と、に基づいてジェスチャーイベントを決定する。ジェスチャーイベント決定部83は、決定されたジェスチャーイベントを処理特定部79に出力する。第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は、マウスイベント生成部85からマウスイベントが入力され、ジェスチャーイベント決定部83からジェスチャーイベントが入力され、それらをアプリケーション部51がアプリケーションプログラムを実行する複数のタスクのうちカレントタスクに出力する。ここでは、アプリケーション部51は、ブラウジング部61と、副実行部63とを含み、副実行部63はブラウジング部61によって起動されるため、調停部53は、ブラウジング部61をカレント状態に設定する。このため、ブラウジング部61がカレントタスクである。調停部53は、マウスイベント生成部85からマウスイベントが入力されることに応じて、マウスイベントをブラウジング部61に出力する。調停部53は、ジェスチャーイベント決定部83からジェスチャーイベントが入力されることに応じて、ジェスチャーイベントをブラウジング部61に出力する。
ブラウジング部61は、マウスイベント生成部85が出力するマウスイベントが調停部53から入力され、ジェスチャーイベント決定部83が出力するジェスチャーイベントが調停部53から入力される。ジェスチャーイベントは、1以上のマウスイベントの組から決定されるため、ジェスチャーイベントと、ジェスチャーイベントを決定する1以上のマウスイベントの組とは、操作ユーザーが入力する1回のシングルタッチ操作または1回のマルチタッチ操作に対して、同時に発生する。
ブラウジング部61は、MFP100を操作する操作ユーザーがタッチパネル165に入力するシングルタッチ操作またはマルチタッチ操作のうちジェスチャーイベントが決定されるシングルタッチ操作またはマルチタッチ操作に従って、ブラウジングプログラムによって定められた複数種類の処理のうちから実行する処理を特定し、処理を実行する。
ブラウジング部61が実行する複数種類の処理は、表示部161に表示する画像を変化させる処理を含む。画面を変化させる処理は、例えば、表示する画像を別のコンテンツの画像に変更する処理、表示部161に画像の一部が表示されている場合には、画像のうち表示部161に表示する部分を変更するスクロール処理、ページ送り処理、画像を拡大して表示する拡大処理、画像を縮小して表示する縮小処理、画像の方向を変更する回転処理を含む。
また、副実行部63は、MFP100を操作する操作ユーザーがタッチパネル165に入力するシングルタッチ操作のうち埋込領域内に入力され、かつ、ジェスチャーイベントが決定されないシングルタッチ操作に従って、処理を実行する。具体的には、副実行部63が、ブラウジングプログラムとは別の第2アプリケーションプログラムを実行する場合、ブラウジングプログラムとは別の第2アプリケーションプログラムによって定められた複数種類の処理のうちから実行する処理を特定し、特定された処理を実行する。この場合において、副実行部63が実行する複数種類の処理は、表示部161に表示する画像を変化させる処理を含む。画面を変化させる処理は、例えば、表示する画像を別のコンテンツの画像に変更する処理、表示部161に画像の一部が表示されている場合には、画像のうち表示部161に表示する部分を変更するスクロール処理、ページ送り処理、画像を拡大して表示する拡大処理、画像を縮小して表示する縮小処理、画像の方向を変更する回転処理を含む。
また、副実行部63は、ブラウジングプログラムとは別の第2アプリケーションプログラムを、ネットワークを介して接続された外部のコンピューターであるサーバーに実行させる場合、シングルタッチ操作に対応するマウスイベントを含む処理リクエストを、サーバーに送信する。
ブラウジング部61が備える選択部75は、マウスイベントとジェスチャーイベントとのいずれか一方を選択する。選択部75は、マウスイベントを選択する場合は、マウスイベントを指示部77に出力し、ジェスチャーイベントを選択する場合は、ジェスチャーイベントを決定部73に出力する。
選択部75にジェスチャーイベントが入力される場合には、それ以前にジェスチャーイベントを決定する基になった1以上のマウスイベントが入力される。選択部75は、ジェスチャーイベント決定部83から調停部75を介してジェスチャーイベントが入力されるまで、または、ジェスチャーイベント決定部83からジェスチャーイベントを決定しないことを示す信号が調停部75を介して入力されるまで、マウスイベント生成部81から調停部75を介して入力されるマウスイベントを一時的に記憶する。選択部75は、調停部53から同時に1つのマウスイベントが入力される場合と、同時に2つのマウスイベントが入力される場合と、がある。ユーザーがシングルタッチ操作を入力した場合に、1つのマウスイベントが入力され、ユーザーがマルチタッチ操作を入力した場合に、複数のマウスイベントが入力される。
<シングルタッチ操作の場合>
選択部75は、調停部53からマウスイベントが入力される場合、そのマウスイベントに含まれる位置情報で示される位置が、表示画像生成部71によって生成された表示画像中の埋込領域内か否かを判断する。選択部75は、マウスイベントに含まれる位置情報で示される位置が埋込領域内であって、ジェスチャーイベント決定部83からジェスチャーイベントを決定しないことを示す信号が調停部75を介して入力される場合、マウスイベントを選択する。また、選択部75は、マウスイベントに含まれる位置情報で示される位置が埋込領域内であって、ジェスチャーイベント決定部83からジェスチャーイベントが調停部75を介して入力される場合、ジェスチャーイベントが所定の種類ならばマウスイベントを選択せず、ジェスチャーイベントが所定の種類でなければマウスイベントを選択する。さらに、選択部75は、マウスイベントに含まれる位置情報で示される位置が埋込領域外の場合、マウスイベントを選択しない。
また、選択部75は、マウスイベントに含まれる位置情報で示される位置が埋込領域外ならばジェスチャーイベントを選択する。選択部75は、マウスイベントに含まれる位置情報で示される位置が埋込領域内であって、ジェスチャーイベント決定部83からジェスチャーイベントが調停部75を介して入力される場合、ジェスチャーイベントが所定の種類ならばジェスチャーイベントを選択するが、ジェスチャーイベントが所定の種類でなければジェスチャーイベントを選択しない。 所定の種類のジェスチャーイベントは、ブラウジングプログラムによって、予め定められている。本実施の形態においては、図6に示したマスターテーブル91において、ブラウジングプログラムによって受付可能なジェスチャーイベントとして、スワイプ、ピンチアウト、ピンチイン、ローテーション、フリック、ダブルタップとしている。所定の種類は、ブラウジングプログラムによって受付可能なジェスチャーイベントのうちから任意に定めることができる。たとえば、スワイプ、ピンチアウト、ピンチイン、ローテーションおよびフリックを所定の種類のジェスチャーイベントとすることができる。この場合、ダブルタップは、所定の種類のジェスチャーイベントではない。
<マルチタッチ操作の場合>
選択部75は、調停部53から同時に複数のマウスイベントが入力される場合、マウスイベントを選択しない。また、選択部75は、同時に複数のマウスイベントが入力される場合、複数のマウスイベントそれぞれに含まれる位置情報で示される位置に係らず、ジェスチャーイベント決定部83からジェスチャーイベントが調停部75を介して入力されると、そのジェスチャーイベントを選択する。さらに、選択部75は、マウスイベントに含まれる位置情報で示される位置が埋込領域外の場合、マウスイベントを選択しない。
また、選択部75は、マウスイベントに含まれる位置情報で示される位置が埋込領域外ならばジェスチャーイベントを選択する。選択部75は、マウスイベントに含まれる位置情報で示される位置が埋込領域内であって、ジェスチャーイベント決定部83からジェスチャーイベントが調停部75を介して入力される場合、ジェスチャーイベントが所定の種類ならばジェスチャーイベントを選択するが、ジェスチャーイベントが所定の種類でなければジェスチャーイベントを選択しない。
指示部77は、選択部75からマウスイベントが入力される場合、マウスイベントを副実行部63に出力する。副実行部63は、ブラウジングプログラムとは別の第2アプリケーションプログラムを、ネットワークを介して接続された外部のコンピューターであるサーバーに実行させる場合、指示部77からマウスイベントが入力されることに応じて、サーバーにマウスイベントを含む処理リクエストを送信し、サーバーから受信される画像で、埋込画像を更新する。具体的には、表示部161が備えるVRAMにサーバーから受信される画像を上書きするアプリコマンドを表示制御部87に出力する。これにより、表示部161が備えるVRAMに記憶されている表示画像の埋込領域が、サーバーから受信される画像で上書きされる。
また、副実行部63が、ブラウジングプログラムとは別の第2アプリケーションプログラムを実行する場合、副実行部63は、第2アプリケーションプログラムによって定められた複数種類の処理のうちから、マウスイベントに基づいて実行する処理を特定し、処理を実行する。例えば、マウスイベントに含まれる位置情報で特定される位置が、埋込画像に含まれるボタンの画像内ならば、そのボタンの画像に対応付けられた処理を特定する。例えば、拡大ボタンの画像ならば画像を拡大する処理を実行し、埋込画像を拡大した後の画像で更新する。具体的には、表示部161が備えるVRAMに更新後の画像を上書きするアプリコマンドを表示制御部87に出力する。これにより、表示部161が備えるVRAMに記憶されている表示画像の埋込領域が、更新後の画像で上書きされる。
決定部73は、選択部75からジェスチャーイベントが入力される場合、ブラウジングプログラムによって定められた複数種類の処理のうちジェスチャーイベントに対応する種類の処理を実行する。具体的には、表示画像のうち表示部161に表示するための表示部分を決定する。決定部73は、決定された表示部分を表示部161に表示させるアプリコマンドを、表示制御部87に出力する。これにより、表示部161が備えるVRAMに記憶されている表示画像のうちから決定部73によって決定された部分の画像が表示部161に表示される。例えば、選択部75から入力されるジェスチャーイベントが処理識別情報「スクロール」に対応するならば、表示画像で表示部161に表示されていた部分を、その部分から上下左右のいずれかにスライドさせた部分が表示部161に表示される。
次に、本実施の形態におけるMFP100において、インターネットに接続されたサーバー300からWebページをダウンロードし、Webページの画像である表示画像を表示する場合を例に、ユーザーの操作とMFP100が実行する処理の流れの一例を説明する。
図7は、ユーザーによる操作とMFPが実行する処理の流れの一例を示す図である。図7を参照して、左から順に、ユーザーによる操作、オペレーティング部57の処理、副実行部63の処理、ブラウジング部61の処理およびサーバー300の処理をそれぞれに対応する軸を示し、それぞれの軸は上から下に時間の流れを示している。
まず、ユーザーが、ブラウジングプログラムを起動する操作を入力すれば、オペレーティング部57によって、その操作が受け付けられる。ここでは、サーバー300に記憶されたWebページのURLが同時に指定される場合を説明する。ユーザーによる操作に従って、オペレーティング部57は、CPU111にブラウジングプログラムを実行させることによって、CPU111がブラウジングプログラムを実行するタスクであるブラウジング部61が起動する。また、オペレーティング部57は、ユーザーにより入力されたURLを、ブラウジング部61に出力する。
ブラウジング部61は、オペレーティング部57から入力されるURLで特定されるWebページを、URLで特定されるサーバー300に送信する要求であるコンテンツリクエストをサーバー300に送信する。サーバー300は、コンテンツリクエストを受信すると、URLで特定されるWebページを返信するので、ブラウジング部61は、サーバー300からWebページを受信する。さらに、ブラウジング部61は、Webページを解析して、Webページに対応する表示画像を生成し、表示画像をVRAMに記憶する指令と、表示部分を表示する指令を、オペレーティング部57に出力する。これに伴い、オペレーティング部57は、表示画像を表示部161のVRAMに記憶するとともに、表示部分を表示部161に表示する。
ここで、WebページがJAVA(登録商標)プログラムを起動するコマンドの記述を含んでいるとする。このため、ブラウジング部61は、CPU111にJAVA(登録商標)プログラムを実行させることによって、CPU111がJAVA(登録商標)プログラムを実行するタスクである副実行部63が起動する。
ここでは、JAVA(登録商標)プログラムにより、サーバー300に、それに記憶されたコンテンツの画像を送信させる処理が定められているとする。副実行部63は、コンテンツの画像を送信させる処理を実行する要求である処理リクエストをサーバーに送信する。これに伴い、サーバー300は、コンテンツの画像を返信するので、副実行部63は、サーバー300から受信するコンテンツの画像を、埋込画像として受信する。さらに、副実行部63は、埋込画像を表示部161のVRAMに記憶するとともに、表示要求をブラウジング部61に出力する。これに伴い、オペレーティング部57は、表示画像を表示部161のVRAMに記憶する。また、ブラウジング部61は、オペレーティング部57に、表示部分を表示する指示を出力し、オペレーティング部57は、埋込領域に埋込画像を配置した表示画像のうち表示部分を表示部161に表示する。したがって、表示部分が埋込領域を含んでいれば、埋込画像が表示部161に表示される。
次に、ユーザーが、シングルタッチ操作またはマルチタッチ操作を入力すれば、オペレーティング部57によって、その操作が受け付けられる。操作変換部55によって、シングルタッチ操作またはマルチタッチ操作に対応するマウスイベントが生成され、1以上のマウスイベントに基づいてジェスチャーイベントが決定される。マウスイベントとジェスチャーイベントとは、ブラウジング部61に入力される。
ブラウジング部61は、マウスイベントに含まれる位置情報で示される位置が、埋込領域内の場合と、埋込領域外の場合とで、処理を異ならせる。ブラウジング部61は、マウスイベントに含まれる位置情報で示される位置が埋込領域内の場合、さらに、ジェスチャーイベントが所定の種類か否かで処理を異ならせる。ジェスチャーイベントが所定の種類でない場合、マウスイベントを副実行部63に出力する。副実行部63は、マウスイベントを含む処理リクエストをサーバー300に送信する。サーバー300は、処理リクエストを受信すると、処理リクエストに含まれるマウスイベントにより特定される埋込画像中の位置に対応して、サーバー300が実行する第2アプリケーションプログラムによって定められた処理を実行し、処理後のコンテンツの画像を返信する。例えば、第2アプリケーションプログラムによって画像を拡大する処理が定められている場合には、コンテンツの画像を拡大した画像を返信する。副実行部63は、サーバー300から受信するコンテンツの画像を、埋込画像として受信する。さらに、副実行部63は、埋込画像を表示部161のVRAMに記憶するとともに、表示要求をブラウジング部61に出力する。これに伴い、オペレーティング部57は、表示画像を表示部161のVRAMに記憶する。また、ブラウジング部61は、オペレーティング部57に、表示部分を表示する指示を出力し、オペレーティング部57は、埋込領域に埋込画像を配置した表示画像のうち表示部分を表示部161に表示する。したがって、表示部分が埋込領域を含んでいれば、サーバー300によって拡大された後の埋込画像が表示部161に表示される。
ブラウジング部61は、マウスイベントに含まれる位置情報で示される位置が埋込領域内の場合で、かつ、ジェスチャーイベントが所定の種類の場合、ジェスチャーイベントに基づく処理を実行する。この場合、マウスイベントを副実行部63に出力しない。ジェスチャーイベントに基づく処理は、ブラウジングプログラムによって定められている。例えば、ジェスチャーイベントに基づく処理が下方向にスクロールする処理ならば、表示画像の表示部分を下方に移動させた後の表示部分を表示する指示をオペレーティング部57に出力する。オペレーティング部57は、表示画像のうち表示部分を表示部161に表示する。したがって、表示画像のうち移動された後の表示部分が表示部161に表示される。
一方、マウスイベントに含まれる位置情報で示される位置が埋込領域外の場合、ジェスチャーイベントに基づく処理を実行する。この場合、マウスイベントを副実行部63に出力しない。
図8は、ジェスチャーイベント決定処理の流れの一例を示すフローチャートである。ジェスチャーイベント決定処理は、MFP100が備えるCPU111が、ROM113、HDD115またはCD−ROM118に記憶された操作受付プログラムを実行することにより、CPU111により実行される処理である。図8を参照して、CPU111は、マウスイベントが検出されたか否かを判断する(ステップS01)。ユーザーがタッチパネル165を指示すれば、タッチパネル165により検出された位置に基づいてマウスイベントが検出される。マウスイベントが検出されるまで待機状態となり(ステップS01でNO)、マウスイベントが検出されたたならば(ステップS01でYES)、処理をステップS02に進める。換言すれば、ジェスチャーイベント決定処理は、ユーザーがタッチパネル165を指示し、タッチイベントが検出されることを条件に実行される処理である。
ステップS02においては、検出されたマウスイベントが単数か否かを判断する。単数のマウスイベントが検出されたならば処理をステップS03に進めるが、複数のマウスイベントが検出されたならば処理をステップS17に進める。
ステップS03においてはマウスイベントの状態によって処理を分岐させる。マウスイベントの状態が「Press」ならば処理をステップS04に進め、「Move」ならば処理をステップS09に進め、「Release」ならば処理をステップS05に進める。ステップS04においては、タイマーTをスタートさせ、処理をステップ01に戻す。タイマーTは、状態が「Press」のマウスイベントが検出されてからの経過時間を計時する。
ステップS09においては、タイマーTの値がしきい値TT以下か否かを判断する。タイマーTの値がしきい値TT以下ならば処理をステップ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に一時記憶し、処理をステップS29に進める。処理がステップ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つのマウスイベントに基づいて算出された距離で除算した値を倍率に決定する。そして、倍率が1より大きければ処理をステップS25に進めるが、そうでなければ処理をステップS26に進める。
ステップS25においては、ジェスチャーイベントをピンチアウトに決定し、処理をステップS27に進める。ステップS26においては、ジェスチャーイベントをピンチインに決定し、処理をステップS27に進める。
ステップS27においては、決定されたジェスチャーイベントに対応する処理が定義されているか否かを判断する。HDD115に記憶されているマスターテーブル91において定められている複数種類の処理のうちに、カレント状態に設定されているアプリケーションプログラムに対応してジェスチャーイベントが関連付けられた処理が存在するか否かで判断する。マスターテーブル91において、決定されたジェスチャーイベントに処理が関連付けられていれば、カレント状態に設定されているアプリケーションプログラムに対応して、決定されたジェスチャーイベントに対応する処理が定義されていると判断する。決定されたジェスチャーイベントに対応する処理が定義されていれば処理をステップS28に進めるが、そうでなければ処理をステップS29に進める。
ステップS28においては、決定されたジェスチャーイベントを出力し、処理を終了する。ステップS29においては、未決定信号を出力し、処理を終了する。
図9は、ブラウジング処理の流れの一例を示すフローチャートである。ブラウジング処理は、MFP100が備えるCPU111が、ROM113、HDD115またはCD−ROM118に記憶されたブラウジングプログラムを実行することにより、CPU111により実行される処理である。図9を参照して、CPU111は、コンテンツを取得する(ステップS31)。具体的には、インターネットに接続されたサーバーからWebページをコンテンツとしてダウンロードする。Webページは、MFP100を操作する操作ユーザーが指定したURLで識別されるWebページである。また、予め定められたURLで識別されるWebページであってもよい。
ステップS32においては、取得されたWebページが埋込画像の記述を含むか否かを判断する(ステップS32)。埋込画像の記述は、ブラウジングプログラムとは別の第2アプリケーションプログラムが実行されて生成される埋込画像を表示する記述である。サーバーから取得されたWebページが、埋込画像の記述を含んでいるならば処理をステップS33に進めるが、そうでなければ処理をステップS35に進める。ステップS35においては、Webページの記述に従って表示画像を生成し、処理をステップS36に進める。具体的には、表示画像を表示部161が備えるVRAMに記憶する。
ステップS33においては、埋込領域を含む表示画像を生成する。具体的には、埋込領域を含む表示画像を表示部161が備えるVRAMに記憶する。これにより、表示部161が備えるVRAMにブラウジングプログラムを実行するタスクが生成する表示画像が記憶される。ただし、表示画像の埋込領域は、ブラウジングプログラムを実行するタスクによっては何も記憶されない。
ステップS34においては、アプリケーションを起動し、処理をステップS36に進める。Webページの記述に従って、ブラウジングプログラムとは別の第2アプリケーションプログラムをCPU111またはサーバーに実行させ、第2アプリケーションプログラムを実行するタスクに埋込画像を生成させる。具体的には、Webページに記述されたJAVA(登録商標)スクリプトによってサーバーによって第2アプリケーションプログラムが実行される場合、サーバーにコンテンツの生成を要求する処理リクエストを送信し、サーバーから返信されるコンテンツの画像を、表示部161が備えるVRAMに記憶された表示画像の埋込領域に記憶させる。これにより、表示部161が備えるVRAMに記憶された表示画像の埋込領域に、サーバーが第2アプリケーションプログラムを実行することによって生成した画像が埋込画像として記憶される。また、Webページが、CPU111が実行可能な再生プログラム等の第2アプリケーションプログラムを起動する指示を含む場合、CPU111に第2アプリケーションプログラムを実行させ、CPU111が第2アプリケーションプログラムを実行するタスクが生成する画像を、表示部161が備えるVRAMに記憶された表示画像の埋込領域に記憶させる。これにより、表示部161が備えるVRAMに記憶された表示画像の埋込領域に、CPU111が第2アプリケーションプログラムを実行するタスクによって生成された埋込画像が記憶される。
このように、ブラウジングプログラムを実行するタスクが表示画像を書き換え、CPU111またはサーバーのいずれかが第2アプリケーションプログラムを実行するタスクによって生成された画像で埋込領域を書き換える。換言すれば、サーバーまたはCPU111のいずれかが第2アプリケーションプログラムを実行するタスクによって生成される画像で、ブラウジングプログラムを実行するタスクとは関係なく、埋込領域を更新することができる。
ステップS36においては、表示画像を表示する。表示部161のVRAMに記憶された表示画像を表示部161に表示する。この際、表示画像を部分的に表示してもよいし、表示画像の全体を表示してもよい。
ステップS37においては、マウスイベントが入力されたか否かを判断する。操作ユーザーが表示部161の表示面を指で指示すれば、タッチパネル165によって指示された位置が検出され、その位置情報を含むマウスイベントが入力される。マウスイベントが入力されたならば(ステップS37でYES)、処理をステップS38に進め、そうでなければ処理をステップS50に進める。
ステップS38においては、マウスイベントが単数か否かを判断する。マウスイベントが単数ならば処理をステップS39に進めるが、複数ならば処理をステップS48に進める。ステップS39においては、マウスイベントが埋込領域に対する操作か否かを判断する。マウスイベントに含まれる位置情報で特定される位置が、表示画像中の埋込領域内ならばマウスイベントが埋込領域に対する操作であると判断する。マウスイベントが埋込領域に対する操作ならば処理をステップS40に進めるが、そうでなければ処理をステップS48に進める。
ステップS40においては未決定信号が入力されたか否かを判断する。上述したジェスチャーイベント決定処理において、ステップS37において入力されたマウスイベントに基づいてジェスチャーイベントが決定されないと判断された場合に、未決定信号が入力される。未決定信号が入力されたならば処理をステップS41に進めるが、そうでなければ処理をステップS43に進める。ステップS41においては、ステップS34において起動した第2アプリケーションプログラムを実行するタスクに、マウスイベントを出力し、処理をステップS42に進める。ここで出力するマウスイベントは、ステップS37において入力されたマウスイベントに加えて、ステップS47において一時記憶されたマウスイベントを含む。複数のマウスイベントを出力する場合には、入力された順にマウスイベントを出力する。具体的には、Webページに記述されたJAVA(登録商標)スクリプトによってサーバーによって第2アプリケーションプログラムが実行される場合、サーバーにマウスイベントを含む処理リクエストを送信し、サーバーから返信されるコンテンツの画像を受信し、受信された画像を、表示部161が備えるVRAMに記憶された表示画像の埋込領域に記憶させる。また、Webページが、CPU111が実行可能な再生プログラム等の第2アプリケーションプログラムを起動する指示を含む場合、CPU111に第2アプリケーションプログラムを実行するタスクが形成されている。このため、CPU111が第2アプリケーションプログラムを実行するタスクに、マウスイベントを出力し、マウスイベントに基づく処理を実行させ、CPU111が第2アプリケーションプログラムを実行するタスクが生成するコンテンツの画像を、表示部161が備えるVRAMに記憶された表示画像の埋込領域に記憶させる。
サーバーまたはCPU111が第2アプリケーションプログラムを実行するタスクは、マウスイベントが入力されると、第2アプリケーションプログラムによって定められた複数の処理のうちからマウスイベントにより特定される処理を実行する。具体的には、第2アプリケーションプログラムによって定められた複数の処理のうち、マウスイベントに含まれる位置情報で特定される位置に割り当てられた処理を実行する。例えば、埋込画像が拡大処理が割り当てられたボタンを含み、マウスイベントに含まれる位置情報で特定される位置が、拡大処理が割り当てられたボタン内ならば拡大処理を実行する。そして、拡大処理後の埋込画像で、表示部161が備えるVRAMに記憶された表示画像中の埋込領域を更新する。このため、表示部161に表示されている表示画像に含まれる埋込領域の画像だけが、拡大して表示される。
次のステップS42においては、ステップS47において一時記憶されたマウスイベントを消去し、処理をステップS50に進める。1つのマウスイベントが第2アプリケーションプログラムを実行するタスクに重複して出力されないようにするためである。 一方、ステップS43においては、ジェスチャーイベントが決定されたか否かを判断する。図8に示したジェスチャーイベント決定処理が実行されて、ステップS37において入力されたマウスイベントに基づいてジェスチャーイベントが決定されたか否かを判断する。ジェスチャーイベントが決定されたならば処理をステップS44に進めるが、そうでなければ処理をステップS47に進める。ステップS47においては、ステップS37において入力されたマウスイベントを保留し、処理をステップS50に進める。
ステップS44においては、ステップS37において入力されたマウスイベントに基づいて決定されたジェスチャーイベントが、所定の種類か否かを判断する。決定されたジェスチャーイベントが所定の種類ならな処理をステップS45に進めるが、そうでなければ処理をステップS41に進める。所定の種類のジェスチャーイベントは、ブラウジングプログラムにおいて予め定められている。
ステップS45においては、ジェスチャーイベントに対応する処理を実行し、処理をステップS46に進める。ブラウジングプログラムによって定められた複数の処理のうち、ジェスチャーイベントにより特定される処理を実行する。具体的には、ジェスチャーイベントがフリックならば表示画像のうち表示部161に表示する部分をジェスチャーイベントにより定められる方向に移動する。より具体的には、表示部161が備えるVRAMに記憶された表示画像のうち表示部161に表示する領域を、ジェスチャーイベントにより定められる方向に移動し、移動後の領域を表示部161に表示する。このため、表示部161に表示されている表示画像の部分が変更される。ステップS46においては、ステップS42と同様に、ステップS47において一時記憶されたマウスイベントを消去し、処理をステップS50に進める。
一方、処理がステップS48に進む場合、ステップS37において複数のマウスイベントが入力される場合である。ステップS48においては、ジェスチャーイベントが決定されたか否かを判断する。図8に示したジェスチャーイベント決定処理が実行されて、ステップS37において入力されたマウスイベントに基づいてジェスチャーイベントが決定されたか否かを判断する。ジェスチャーイベントが決定されたならば処理をステップS49に進めるが、そうでなければ処理をステップS48に進める。ステップS49においては、ジェスチャーイベントに対応する処理を実行し、処理をステップS50に進める。
ステップS50においては、コンテンツの表示を終了する指示を受け付けたか否かを判断する。例えば、ハードキー部167に含まれる複数のキーのうち、ブラウジングプログラムを終了する指示が割り当てられたキーが指示されたならばコンテンツの表示を終了する指示を受け付ける。コンテンツンの表示を終了する指示を受け付けたならば処理を終了するが、そうでなければ処理をステップS37に戻す。
図10は、表示画像の一例を示す図である。図10に示す表示画像は、インターネットに接続されたサーバーからダウンロードされたWebページに対応する。ここでは、Webページを、商品を販売する店舗を紹介する内容が記述されている場合を例に説明する。図10を参照して、表示画像300は、Webページにおいて、ブラウジングプログラムとは別の第2アプリケーションプログラムによって生成される埋込画像を配置する2つの埋込領域310,311を含む。埋込領域310,311に配置される埋込画像は、インターネットに接続されたサーバーが、そのサーバーにインストールされた第2アプリケーションプログラムを実行することにより生成される。
埋込領域310には、その店の場所を示す地図の画像が埋込画像として配置され、埋込領域311には、その店が販売する商品のリストを表示する画像が埋込画像として配置される。点線で示す領域301,303は、表示画像300のうちで、表示部161に表示される表示部分を示している。なお、領域301,303を示す点線は、説明のために付したもので、表示画像300中に実際には存在しない。
図11は、表示画像300中の表示部分の一例を示す第1の図である。図11を参照して、表示部分331は、図10に示した表示画像300のうち領域301で示される部分である。表示部分331は、表示画像300に配置された埋込領域310を含む。埋込領域310は、上下左右の4つの矢印が表されたボタン群313と、「+」および「−」の記号が表されたボタン群315を含む。ボタン群313,315は、それぞれのボタンにサーバーにインストールされた第2アプリケーションプログラムによって処理が割り当てられている。ここで、ユーザーがボタン群315の「+」の記号が表されたボタンを指で指示すれば、「+」の記号が表されたボタン内の位置を示す位置情報を含むマウスイベントが発生する。この場合における図8に示したジェスチャーイベント決定処理および図9に示したブラウジング処理の流れを具体的に説明する。図8に示したジェスチャーイベント決定処理においては、ユーザーがボタン群315の「+」の記号が表されたボタンを指で指示すれば、ステップS03においてマウスイベントの状態「Release」が検出されて処理がステップS06に進むが、同じ位置が記憶されていないと判断されて、ステップS08およびステップS29が実行される。このため、ジェスチャーイベントが検出されることなく、未決定信号が出力される。さらに、図9に示したブラウジング処理においては、ユーザーがボタン群315の「+」の記号が表されたボタンを指で指示すれば、ステップS37においてマウスイベントが入力されると判断され、処理がステップS38に進む。ユーザーがボタン群315の「+」の記号が表されたボタンを指で指示する操作は、指示位置が単数で、埋め込み領域内なので、処理がステップS40に進む。図8に示したジェスチャーイベント決定処理においては、ユーザーがボタン群315の「+」の記号が表されたボタンを指で指示すれば、未決定信号が出力されるので、ブラウジング処理のステップS41が実行され、マウスイベントが出力される。このため、そのマウスイベントは、埋込領域310に配置された画像を生成するサーバーに送信され、サーバーによって、画像を拡大する処理が実行される。そして、埋込領域310が、サーバーによって拡大する処理が実行された後の画像で更新される。
図12は、表示画像300中の表示部分の一例を示す第2の図である。図12を参照して、表示部分331は、図10に示した表示画像300のうち領域301で示される部分である。表示部分331は、表示画像300に配置された埋込領域310を含む。埋込領域310に表示される埋込画像は、図11に示した埋込領域310に配置された画像に比較して、拡大した画像となっている。しかしながら、図12に示す表示画像300の表示部分331のうち埋込領域310以外の部分は、図11に示した表示部分331と同じである。
さらに、操作ユーザーが、図12に示す表示画像300の表示部分331のいずれかに指で触れて、スワイプ操作を入力すれば、ジェスチャーイベントが発生する。この場合における図8に示したジェスチャーイベント決定処理および図9に示したブラウジング処理の流れを具体的に説明する。図8に示したジェスチャーイベント決定処理においては、ユーザーがスワイプ操作を入力すれば、ステップS03においてマウスイベントの状態「Move」が検出されて処理がステップS09に進むが、スワイプ操作は指示する位置が移動し、単位時間当たりの移動距離がしきい値TH以上なので、処理がステップS15に進む。これにより、スワイプのジェスチャーイベントが決定される。さらに、図9に示したブラウジング処理においては、ユーザーがスワイプ操作を入力すれば、ステップS37においてマウスイベントが入力されると判断され、処理がステップS38に進む。スワイプ操作は、1本の指で指示する位置を移動させる操作なので、処理がステップS40またはステップS48に進む。処理がステップS40に進む場合、換言すれば、スワイプ操作がされた位置が埋込領域内の場合、図8に示したジェスチャーイベント決定処理においてスワイプのジェスチャーイベントが決定されるので、処理がステップS45に進む。一方、処理がステップS48に進む場合、換言すれば、スワイプ操作がされた位置が埋込領域以外の場合、図8に示したジェスチャーイベント決定処理においてスワイプのジェスチャーイベントが決定されるので、処理がステップS49に進む。このように、ユーザーが指で触れる位置は、表示部分331内であれば、埋込領域310内であってもよい。ジェスチャーイベントとともにマウスイベントも発生するが、ジェスチャーイベントがブラウジングプログラムによって予め定められた所定の処理なので、マウスイベントは廃棄される。フリックのジェスチャーイベントに対応して、ブラウジングプログラムによって、表示画像の表示部分を変更するスクロール処理が定められている。ここでは、スクロール処理が実行されて、表示画像300のうち領域301が領域303に変更される場合を例に説明する。
図13は、表示画像中300の表示部分の一例を示す第3の図である。図13を参照して、図12に示した表示部分331が表示部161に表示されている段階で、スワイプ操作が入力された後に表示部161に表示される表示画像300の表示部分341を示している。表示部分341は、図10に示した表示画像300のうち領域303で示される部分である。表示部分341は、表示画像300に配置された埋込領域311を含む。埋込領域311に表示される埋込画像は、図11に示した埋込領域311に配置された画像と同じである。
以上説明したように、本実施の形態におけるMFP100は、データ処理装置として機能し、タッチパネル169によってユーザーにより指示された1以上の位置が検出されることに応じて、1以上の位置それぞれを示す位置情報を含むマウスイベントを生成し、生成される1以上のマウスイベントの組に基づいて、複数のジェスチャーイベントのうちからいずれか1つを決定する。一方、外部から受信されるWebページがブラウジングプログラムとは別のアプリケーションプログラムが実行されて生成される埋込画像を表示する記述を含む場合、埋込画像をWebページにより定められた埋込領域に配置した表示画像を生成する。そして、表示画像が埋込領域を含む場合、ジェスチャーイベントを決定する基になった1以上のマウスイベントのいずれか1つのマウスイベントにより示される位置が埋込領域内の場合、ジェスチャーイベントと、当該ジェスチャーイベントを決定する基になった1以上のマウスイベントの組のいずれか一方を選択する。このため、ユーザーが表示部161の表示面を指示する1回の操作を1以上のマウスイベントとジェスチャーイベントとして検出するとともに、検出されたマウスイベントとジェスチャーイベントのうちからブラウジングプログラムおよびアプリケーションプログラムそれぞれに適した一方を受け付けることができる。その結果、Webページがブラウジングプログラムとは別のアプリケーションプログラムを実行する記述を含む場合であってもアプリケーションプログラムを適切に実行することができる。
また、ユーザーが表示部161の表示面を指示する1回の操作を1以上のマウスイベントとジェスチャーイベントとして検出するとともに、ジェスチャーイベントが所定の種類の場合には、ジェスチャーイベントをブラウジングプログラムに対応させ、ジェスチャーイベントが所定の種類でない場合には、1以上のマウスイベントをアプリケーションプログラムに対応させる。このため、ユーザーによる1つの操作を、ブラウジングプログラムおよびアプリケーションプログラムのいずれかに対する操作として受け付けることができる。また、ブラウジングプログラムがジェスチャーイベントに対応し、アプリケーションプログラムがマウスイベントに対応する場合にアプリケーションプログラムを適切に実行することができる。
また、第1のマウスイベントにより示される第1の位置と、第1のマウスイベントが生成されてから所定時間以内に生成される第2のマウスイベントにより生成される第2の位置との間の間隔が所定の距離以上でない場合には、ジェスチャーイベントを決定しない。このため、ユーザーがタッチパネル169を指示したまま移動させる操作をジェスチャーイベントとして検出することができる。
また、生成される1以上のマウスイベントを、ジェスチャーイベントが決定される時、または、ジェスチャーイベントを決定しないと判断される時まで保留し、1以上のマウスイベントの組が選択される場合、保留された1以上のマウスイベントを、アプリケーションプログラムを実行するタスクに出力する。このため、所定の種類でないジェスチャーイベントが決定される時まで、またはジェスチャーイベントを決定しないことが判断される時までに入力されたユーザーによる操作に基づき生成されたマウスイベントを保留するので、ユーザーによる操作を有効にることができ、ユーザーは同じ操作を再度入力する必要はない。
さらに、保留された1以上のマウスイベントを、アプリケーションプログラムを実行するタスクに出力した後に消去し、ジェスチャーイベントが選択される場合は、ジェスチャーイベントが選択された時点で消去する。このため、1つのマウスイベントが複数回出力されるのを防止することができる。
また、マウスイベントを選択する場合、マウスイベントを、アプリケーションプログラムを実行するタスクに出力し、埋込領域に表示される埋込画像を更新させる。このため、アプリケーションプログラムを実行するタスクにマウスイベントに従って処理を実行させることができる。
さらに、ジェスチャーイベントを選択する場合、ブラウジングプログラムが実行可能な複数種類の処理のうち選択されたジェスチャーイベントに対応する種類の処理を実行する。このため、表示画像のうち表示部161に表示するための表示部分を決定する処理を実行させることができる。ブラウジングプログラムを実行するタスクに、ジェスチャーイベントに従って処理を実行させることができる。
さらに、ブラウジングプログラムがインストールされる段階で、ブラウジングプログラムが定める複数種類の処理に対応する複数のジェスチャーイベントを関連付けたマスターデータ91をHDD115に記憶するので、ブラウジングプログラムが定める複数種類の処理それぞれに対応するジェスチャーイベントのみを検出することができる。
なお、上述した実施の形態においては、データ処理装置の一例としてMFP100について説明したが、図8および図9に示した処理を、MFP100を制御するCPU111に実行させる操作受付方法、また、その操作受付方法をCPU111に実行させるためのブラウジングプログラムとして、発明を捉えることができるのは言うまでもない。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。