(実施例1)
図1は、本実施形態に係る画像処理システムの構成を示すブロック図である。図1において、オフィス内に構築されたLAN102には、複数種類の機能(複写機能、印刷機能、送信機能等)を実現する複合機であるMFP100と、クライアントPC101が接続されている。さらにLAN102には、プロキシサーバ103と、文書管理サーバ106、文書管理サーバ106のためのデータベース105、携帯情報端末107が、無線または有線で接続されている。LAN102は、プロキシサーバ103を介してネットワーク104に接続されている。クライアントPC101では、例えば、印刷データをMFP100へ送信することで、その印刷データに基づく印刷物をMFP100で印刷することが可能である。なお、図1の構成は一例であり、同様の構成要素を有する複数のオフィスがネットワーク104上に接続されていても良い。
クライアントPC101、プロキシサーバ103の各種端末はそれぞれ、汎用コンピュータに搭載される標準的な構成要素(例えば、CPU、RAM、ROM、ハードディスク、ネットワークI/F、ディスプレイ、キーボード、マウス等)を有している。また、ネットワーク104は、典型的にはインターネットやLANやWANや電話回線、専用デジタル回線、ATMやフレームリレー回線、通信衛星回線、ケーブルテレビ回線、データ放送用無線回線等のいずれかで実現されている。もちろん、それらの組み合わせにより実現されるいわゆる通信ネットワークであっても良いことは言うまでもなく、データの送受信が可能であれば良い。
図2は、図1におけるMFP100の機能構成を示すブロック図である。図2において、MFP100は、画像読み取り部110、記憶装置(以下、BOX)111、記録装置112、データ処理装置115、入力装置113、表示装置116、ネットワークI/F114で構成される。画像読み取り部110は、図示しないAuto Document Feeder(以下、ADF)を有し、束状の或いは1枚の原稿の画像を光源で照射し、反射画像をレンズで固体撮像素子上に結像する。固体撮像素子は所定解像度(例えば600dpi)および所定輝度レベル(例えば8ビット)の画像読み取り信号を生成し、画像読み取り信号からラスターデータよりなる画像データが構成される。通常の複写機能を実行する際には、画像読み取り部110で得たビットマップ画像データをデータ処理装置115によって、後述するスキャン画像処理して記録信号に変換し、記録装置112で画像形成(印刷出力)する。複数枚複写の場合には、1頁分の記録信号を一旦BOX111に記憶保持した後、記録装置112に順次出力して、記録紙上に記録画像を形成する。MFP100は、クライアントPC101(もしくは他の汎用PC(不図示))からドライバを利用して出力されてくるPDLデータを、LAN102とネットワークI/F114を介して受信し、当該受信したPDLデータに基づく画像を、記録装置112によって記録し得る。すなわち、クライアントPC101からドライバを経由して出力されるPDLデータは、LAN107からネットワークI/F114を経てデータ処理装置115に入力される。そこで言語を解釈・処理することで記録可能な記録信号に変換された後、MFP100において、記録紙上に記録画像として記録される。
BOX111は、画像読み取り部110からのデータやクライアントPC101からドライバを経由して出力されるPDLデータをレンダリングしたデータを保存できる機能を有している。また、MFP100は、MFP100に設けられたキー操作部(入力装置113)を通じて操作され、操作入力の状態を表示装置116によって表示し得る。
図3は、MFP100のデータ処理装置115が、ビットマップ画像データを携帯情報端末107で表示するのに適した所定フォーマットのデータ(以下ではアプリケーション画像データと呼ぶこととする)へと変換する処理を説明するためのフローチャートである。なお、ビットマップ画像データは、MFP100の画像読み取り部110により文書をスキャンすることにより取得、または、クライアントPC101上においてアプリケーションソフトで作成されたドキュメントをMFP100内部でレンダリングして生成される。
まず、ステップS301において、データ処理装置115は、処理対象として入力されたビットマップ画像データを属性毎のオブジェクト(属性毎の領域)に分割するオブジェクト分割処理(領域特定処理)を行う。オブジェクト分割時に分類される各オブジェクトの属性種類は、文字、写真、グラフィック(図面、線画、表、ライン)がある。オブジェクト分割処理では、画像データを解析して各オブジェクトの領域を特定する。次に、ステップS302において、ステップS301で分割したオブジェクトのうち未処理のオブジェクトがあるか判定し、未処理のオブジェクトがあればそのオブジェクトを処理対象の着目オブジェクトとしてステップS303へ進む。一方、全てのオブジェクトの処理が終了していればステップS305へ進む。
ステップS303において、S302で処理対象とした着目オブジェクトの属性が文字であるか判定し、文字の場合には、ステップS304に進み、OCR処理を施し、文字コード化されたデータ(OCR結果の文字コードデータ)を取得する。一方、S303において、着目オブジェクトの属性が文字以外であると判定した場合は、次の未処理のオブジェクトを処理対象とするためにステップS302へ戻る。
ステップS305において、データ処理装置115は、ステップS301で分割した各オブジェクトに対して、後述するオブジェクト画像生成処理を行う。次に、ステップS306において、S301で処理対象として入力されたビットマップ画像データ全体を解像度変換して、該ビットマップ画像データよりも解像度の低い背景画像を生成する。本実施例においては、ニアレストネイバー法を用いて1/4の解像度の背景画像(例えば、ビットマップ画像データが600dpiである場合は、150dpiの背景画像)を生成する。なお、解像度変換の方法は、ニアレストネイバー法に限るものではなく、例えば、バイリニア法やバイキュービック法といった高精度な補間方法を用いても良いことは言うまでもない。
ステップS307において、データ処理装置115は、ステップS306で生成された背景画像を用いてJPEG圧縮することにより、圧縮された背景画像を生成する。
ステップS308において、データ処理装置115は、S305で得た各オブジェクトのデータと、S307で得た背景画像のデータと、S304で得た文字コードデータとを一つのファイルにまとめ、携帯情報端末107が表示可能なアプリケーション画像データ(すなわち、各オブジェクトを構造化した文書ファイル)を生成する。最後に、ステップS309において、データ処理装置115は、生成したアプリケーション画像データのファイルを携帯情報端末107に送信する。
図4と図5を用いて、S301で処理対象として入力されるビットマップ画像データがどのように作成されたものかについて説明する。図4は、MFP100の画像読み取り部110を使用した場合のビットマップ画像データ作成のフローチャート、図5は、PC101上のアプリケーションを使用した場合のフローチャートである。すなわち、図4または図5で生成されたビットマップ画像データに対して、上述した図3の処理が実行される。
MFP100の画像読み取り部(スキャナ)110を使用した場合には、図4のステップS401において、文書(紙原稿)をスキャンして画像を得る。次に、ステップS402において、S401で得られた画像に対して、画像読み取り部110の特性に依存するスキャナ画像処理を行うことにより、ビットマップ画像データを生成する。ここで言うスキャナ画像処理とは、例えば、色処理やフィルタ処理を指す。
PC101上のアプリケーションから得られるデータに基づいて処理対象のビットマップ画像を生成する場合は以下のようになる。まず、図5のステップS501において、PC101上のアプリケーションを使用して作成したデータが、PC101上にあるプリントドライバを介してプリントデータに変換され、MFP100に送信される。ここで言うプリントデータとは、PDLを意味し、例えば、LIPS(商標)、PostScript(商標)等のページ記述言語を指す。次にステップS502において、MFP100内部に存在するインタープリタは、受信したPDLを解釈してディスプレイリストを生成する。さらに、ステップS503において、MFP100に存在するレンダラが、当該生成されたディスプレイリストをレンダリングすることにより、ビットマップ画像データを生成する。
次に、図7と図8を用いて、ステップS301のオブジェクト分割処理で得られるデータの詳細を説明する。図7は、オブジェクト分割処理によって、ビットマップ画像データを複数のオブジェクトに分割した結果の一例である。図8は、オブジェクト分割したときの各オブジェクトのブロック情報および入力ファイル情報を表す。
図7の左のような入力画像に対してオブジェクト分割処理を行うと、図7の右のように、属性ごとの矩形ブロックに分割される。前述したように、矩形ブロックの属性としては、文字、写真、グラフィック(図面、線画、表、ライン)がある。オブジェクト分割処理の手法としては、例えば以下のような手法がある。まず、MFP100内のRAM(不図示)に格納されたイメージデータを白黒に2値化し、黒画素輪郭で囲まれる画素塊を抽出する。さらに、このように抽出された黒画素塊の大きさを評価し、大きさが所定値以上の黒画素塊については内部に文字を含むもの(表領域など)である可能性があるので、その黒画素塊の内部にある白画素塊に対する輪郭追跡を行う。白画素塊に対する大きさ評価、内部黒画素塊の追跡というように、内部の画素塊が所定値以上である限り、再帰的に内部画素塊の抽出、輪郭追跡を行う。画素塊の大きさは、例えば画素塊の面積によって評価される。このようにして得られた画素塊に外接する矩形ブロックを生成し、矩形ブロックの大きさ、形状に基づき属性を判定する。例えば、縦横比が1に近く、且つ大きさが一定の範囲(文字として通常使用されるサイズ)の矩形ブロックは、文字領域矩形ブロックの可能性がある文字相当ブロックとする。また、近接する文字相当ブロックが規則正しく整列しているときに、これら文字相当ブロックを纏めた新たな矩形ブロックを生成し、新たな矩形ブロックを文字領域矩形ブロックとする。また扁平な画素塊、もしくは、一定大きさ以上でかつ四角形の白画素塊を整列よく内包する黒画素塊をグラフィック領域矩形ブロック、それ以外の不定形の画素塊を写真領域矩形ブロックとする。
このようにして生成された矩形ブロックのそれぞれについて、図8に示すように、属性等のブロック情報および入力ファイル情報を生成する。図8において、ブロック情報には各ブロックの属性、位置の座標X、座標Y、幅W、高さH、OCR情報が含まれる。属性は1〜3の数値で与えられ、1は文字領域矩形ブロック、2は写真領域矩形ブロック、3はグラフィック領域矩形ブロックを示す。座標X、座標Yは入力画像における各矩形ブロックの始点のX、Y座標(左上角の座標)である。幅W、高さHは矩形ブロックのX座標方向の幅、Y座標方向の高さである。OCR情報は、ステップS304のOCR処理で文字コード化されたデータへのポインタ情報の有無を示す。さらに入力ファイル情報として矩形ブロックの個数を示すブロック総数Nも保存しておく。
これらの矩形ブロックごとのブロック情報は、後述のOCR処理やアプリケーション画像データ生成処理に利用される。またブロック情報によって、特定領域とその他の領域を重ねる際の相対位置関係を特定でき、入力画像のレイアウトを損なわずに各領域を重ねることが可能となる。
次に、図9のフローチャートを用いて、図3のステップS304のOCR処理について詳細に説明する。
ステップS901において、データ処理装置115は、特定領域(処理対象の着目オブジェクト)が文字領域矩形ブロックであるか否か判断し、文字領域の矩形ブロックであればステップS902以下のステップに進む。一方、特定領域が文字領域矩形ブロックでないときは、OCR処理を終了する。
ステップS902〜S907では、パターンマッチング等の手法を用いて文字認識処理を行い、対応する文字コードを得る。例えば、ステップS902において、データ処理装置115は、特定領域に対し横書き、縦書きの判定(組み方向判定)を行うために、特定領域内で画素値に対する水平・垂直の射影を取る。次に、ステップS903において、ステップS902の射影の分散を評価する。水平射影の分散が大きい場合は横書き、垂直射影の分散が大きい場合は縦書きと判断する。ステップS904において、ステップS903の評価結果に基づき、組み方向を判定し、行の切り出しを行い、その後文字を切り出して文字画像を得る。文字列および文字への分解は、横書きならば水平方向の射影を利用して行を切り出し、切り出された行に対する垂直方向の射影から、文字を切り出す。縦書きの文字領域に対しては、水平と垂直について逆の処理を行う。行、文字切り出しに際して、文字のサイズも検出し得る。次に、ステップS905において、ステップS904で切り出された各文字について、文字画像から得られる特徴を数十次元の数値列に変換した観測特徴ベクトルを生成する。特徴ベクトルの抽出には種々の公知手法があり、例えば、文字をメッシュ状に分割し、各メッシュ内の文字線を方向別に線素としてカウントしたメッシュ数次元ベクトルを特徴ベクトルとする方法がある。ステップS906において、ステップS905で得られた観測特徴ベクトルと、あらかじめフォントの種類ごとに求められている辞書特徴ベクトルとを比較し、観測特徴ベクトルと辞書特徴ベクトルとの距離を算出する。ステップS907において、ステップS906で算出された距離を評価し、最も距離の近い文字を認識結果とする。次に、ステップS908において、ステップS907における距離評価の最短距離が所定値よりも大きいか否か、類似度を判断する。最短距離が所定値以上の(類似度が低い)場合は、辞書特徴ベクトルにおいて、形状が類似する他の文字に誤認識している可能性が高い。そこで最短距離が所定値以上の文字の(類似度が低い)場合は、ステップS907の認識結果を採用しない。最短距離が所定値より小さい文字の(類似度が高い)場合は、ステップS907の認識結果を採用し、ステップ909に進む。ステップS909では、文字フォントの種類を認識する。文字認識の際に用いる、フォントの種類数分の辞書特徴ベクトルを、文字形状種すなわちフォント種に対して複数用意しておく。これを、パターンマッチングの際に、文字コードとともにフォント種を出力することで、文字フォントを認識し得る。以上の処理により、文字領域矩形ブロックに属するイメージ情報から文字コードデータを得る。
図6は、データ処理装置115で行うステップS305のオブジェクト画像生成処理についての詳細を示すフローチャートである。
まず、ステップS600において、ステップS301で分割したすべてのオブジェクトの処理が終了したか判定し、未処理のオブジェクトがあれば、その中の1つを処理対象としてステップS601以降の処理を行う。ステップS601において、処理対象オブジェクトの位置情報に基づいて、入力ビットマップ画像から処理対象オブジェクトの領域の画像を抽出して、オブジェクト画像を生成する。S602において、該オブジェクトの属性種類が文字であるか否かを判定し、文字である場合にはステップS604へ進み、それ以外である場合にはステップS603へ進む。ステップS603において、ステップS601で生成したオブジェクト画像に解像度変換を施して、ビットマップ画像データよりも解像度の低いオブジェクト画像に変換する。本実施例においては、ニアレストネイバー法を用いて幅、高さ共に1/2の解像度、すなわち、ビットマップ画像データが600dpiである場合に、300dpiのオブジェクト画像を生成する。このようにして、本実施例のオブジェクト画像生成処理では、拡大して閲覧することが多い文字属性のオブジェクトには解像度変換を行わず、拡大することの比較的少ない写真属性などのオブジェクトには解像度変換を行う。それにより、オブジェクトの属性に応じて好適な画質を維持しながら、より少ないデータ量に抑えてアプリケーション画像データを生成することが出来る。ステップS604において、文字属性のオブジェクトについてはステップS601で得たオブジェクト画像をJPEG圧縮し、文字以外の属性のオブジェクトについてはステップS603で解像度変換されたオブジェクト画像をJPEG圧縮する。なお、本実施例において、文字属性を除外し、文字属性以外のオブジェクトを解像度変換すると説明したが、それに限るものではなく、例えば、ラインといったより滑らかさが求められるオブジェクトに対しても解像度変換を行わないように制御しても良いことは言うまでもない。また、本実施例のように文字と文字以外の二段階ではなく、オブジェクトの属性に応じて、より段階的に解像度を制御しても良いことは言うまでもない。
次に、図13と図14を用いて、ステップS308のアプリケーション画像データ生成について詳細に説明する。図13は、本実施例に係る図3のアプリケーション画像データを生成する過程で生まれる中間データのデータ構成を示すマップである。図14は、アプリケーション画像データ生成処理の詳細を示すフローチャートである。
まず、ステップS1401において、ステップS301〜S307の処理で生成された中間データを取得する。本実施形態において、中間データは、以下のようなドキュメント・アナリシス・アウトプット・フォーマット(以下、DAOF)と呼ぶ形式で保存されているものとする。図13に示すように、DAOFは、ヘッダ1301、レイアウト記述データ部1302、文字認識記述データ部1303、表記述データ部1304、画像記述データ部1305よりなる。ヘッダ1301には、処理対象の入力画像に関する情報が保持される。レイアウト記述データ部1302には、入力画像中の矩形ブロックの属性である文字、グラフィック(線画、図面 、表、ライン)、写真等の情報と、これら属性が認識された各矩形ブロックの位置情報が保持される。文字認識記述データ部1303には、文字領域矩形ブロックのうち、文字認識して得られる文字認識結果が保持される。表記述データ部1304には、表の属性を持つグラフィック領域矩形ブロックの表構造の詳細が格納される。画像記述データ部1305には、ステップS307で生成した背景画像と、オブジェクトに分割され前記オブジェクト画像生成処理で生成したデータが保持される。次に、ステップS1402において、後述する文書構造ツリー生成を行う。ステップS1403において、文書構造ツリーを元に、DAOF内の実データを取得し、後述するアプリケーション画像データを生成する。
図15〜17を用いて、ステップS1402の文書構造ツリー生成処理の詳細について説明する。図15は、文書構造ツリー生成処理を示すフローチャートである。図16は、文書構造ツリー生成処理の対象となる文書において、S301で得た各オブジェクトの位置を示す模式図である。図17は、文書構造ツリー生成の処理によって生成される文書構造ツリーを示す図である。
図15に示す文書構造ツリー生成の処理における全体制御の基本ルールとして、処理の流れはミクロブロック(各オブジェクトを示す単一矩形ブロック)からマクロブロック(矩形ブロックの集合体)へ移行する。以後「矩形ブロック」は、ミクロブロックおよびマクロブロック両者を意味するものとする。
まず、ステップS1501において、データ処理装置115は、矩形ブロック単位で、縦方向の関連性に基づいて、矩形ブロックをグループ化する。S1501の処理は繰り返し実行されることがあるが、処理開始直後はミクロブロック単位での判定となる。ここで、関連性とは、距離が近い、ブロック幅(横方向の場合は高さ)がほぼ同一であることなどの特徴によって定義される。また、距離、幅、高さなどの情報はDAOFを参照し、抽出する。例えば、図16の文書では、最上部で、矩形ブロックT1、T2が横方向に並列されている。矩形ブロックT1、T2の下には横方向セパレータS1が存在し、横方向セパレータS1の下に矩形ブロックT3、T4、T5、T6、T7が存在する。矩形ブロックT3、T4、T5は、横方向セパレータS1下側の領域における左半部において上から下に、縦方向に配列され、矩形ブロックT6、T7は、横方向セパレータS1下側の領域における右半部において上下に配列されている。ステップS1501の縦方向の関連性に基づくグルーピングの処理を実行すると、矩形ブロックT3、T4、T5が1個のグループ(矩形ブロック)V1にまとめられ、矩形ブロックT6、T7が1個のグループ(矩形ブロック)V2にまとめられる。グループV1、V2は同一階層となる。次に、ステップS1502において、縦方向のセパレータの有無をチェックする。セパレータは、DAOF中でライン属性を持つオブジェクトであり、明示的にブロックを分割する機能をもつ。セパレータを検出すると、処理対象の階層において、入力画像の領域を、セパレータを境界として左右に分割する。図16では縦方向のセパレータは存在しない。次に、ステップS1503において、全ての矩形ブロックが1つのマクロブロックにグルーピングされたか判定することで、処理の終了判断を行う。グルーピングが終了したときはそのまま処理終了し、グルーピングが終了していなかったときはステップS1504に進む。次に、ステップS1504において、横方向の関連性に基づくグルーピングの処理を実行する。これによって、例えば図16の矩形ブロックT1、T2が1個のグループ(矩形ブロック)H1にまとめられ、矩形ブロックV1、V2が1個のグループ(矩形ブロック)H2にまとめられる。グループH1、H2は同一階層となる。次に、ステップS1505において、横方向のセパレータの有無をチェックする。セパレータを検出すると、処理対象の階層において、入力画像の領域を、セパレータを境界として上下に分割する。図16では横方向のセパレータS1が存在する。次に、ステップS1506において、全ての矩形ブロックが1つのマクロブロックにグルーピングされたか判定することで、処理の終了判断を行う。グルーピングが終了したときはそのまま処理終了し、グルーピングが終了していなかったときはステップS1501に戻る。図16の例では、S1501に戻って矩形ブロックH1、S1、H2が1個のグループ(矩形ブロック)V0にまとめられる。
以上の処理結果は図17のツリーとして登録される。図17において、入力された1ページのビットマップ画像データV0は、最上位階層にグループH1、H2、セパレータS1を有し、グループH1には第2階層の矩形ブロックT1、T2が属する。グループH2には、第2階層のグループV1、V2が属し、グループV1には、第3階層の矩形ブロックT3、T4、T5が属し、グループV2には、第3階層の矩形ブロックT6、T7が属する。本実施例において、V0はページ全体を表し、V0の下位階層にあるものがオブジェクトとなる。
次に、図18を用いて、本実施例におけるアプリケーション画像データの生成と、フォーマットの一例を示す。本実施例では、アプリケーション画像データのフォーマットとして、Scalable Vector Graphics(以下、SVG)形式を用いて説明する。
図18では説明のため、ページの背景と各オブジェクトの表記を、枠1801と1802、及び1804で囲って示している。ページの背景と各オブジェクトは、それらの領域を示す領域情報と、DAOF内の実データから取得する描画要素を持つ。
まず、DAOF内のページV0から背景を取得する。1801はページの背景を示し、そこには、背景の領域を示す領域情報と、描画要素として前記ステップS308で生成される背景画像のリンクが示されている。次に、DAOF内のV0の下位階層にある各オブジェクトを、背景1801と同階層にグループを生成し、その下位階層に各オブジェクトを生成していく。1802は、文字属性を示し、文字オブジェクトの領域情報と、描画要素としてステップS305で生成されるオブジェクト画像へのリンクが示されている。文字オブジェクトには、更に、1803にステップS304のOCR処理で得られる文字コードデータ及びステップS304のOCR処理で得られる文字サイズが示される。また、ステップS304のOCR処理で得られる文字領域の組み方向(縦書き、もしくは横書き)についても記すことが可能である。1804は、写真属性であり、写真オブジェクトの領域情報と描画要素が示されている。また、例えば図17のH1、H2、V1、V2など下位階層にあるオブジェクトは、オブジェクトの上位階層にグループを生成し、そのグループの下位階層に生成する。
なお、本実施例ではアプリケーション画像データ(構造化文書)をSVG形式で表記しているが、文書の意味や構造を記述・保持できる画像フォーマットであれば良く、これに限定されるものではない。
図19は、本実施例における携帯情報端末107の構成例を示すブロック図である。携帯情報端末107は、メインボード1900、LCD1901、タッチパネル1902、ボタンデバイス1903から構成される。また、LCD1901とタッチパネル1902をまとめてタッチUI1904と呼ぶこととする。
メインボード1900の主な構成要素は以下である。CPU1905、無線LANモジュール1906、電源コントローラ1907、ディスプレイコントローラ(DISPC)1908、パネルコントローラ(PANELC)1909、ROM1910、RAM1911、二次電池1912、タイマー1913。それぞれのモジュール1905〜1913は、バス(不図示)によって接続されている。
CPU1905は、バスに接続される各デバイスを制御すると共に、ROM1910に記憶された後述のソフトウェアモジュール2000を、RAM1911に展開して実行するプロセッサである。RAM1911は、CPU1905のメインメモリ、ワークエリア、LCD1901に表示するビデオイメージ用エリア、およびMFP100から送信される前記アプリケーション画像データの保存領域として機能する。
ディスプレイコントローラ(DISPC)1908は、CPU1905の要求に応じて、RAM1911に展開されたビデオイメージ出力を高速に切り替えるとともに、LCD1901に同期信号を出力する。結果として、RAM1911のビデオイメージが、DISPC1908の同期信号に同期してLCD1901に出力され、LCD1901上にイメージが表示される。
パネルコントローラ(PANELC)1909は、CPU1905の要求に応じて、タッチパネル1902およびボタンデバイス1903を制御する。その制御によって、ユーザの指又はスタイラスペンなどの指示物によりタッチされたタッチパネル1902上の押下位置や、押下されたボタンデバイス1903のキーコードなどが、CPU1905に通知される。押下位置情報は、タッチパネル1902の横方向の絶対位置を示す座標値(以下x座標)と、縦方向の絶対位置を示す座標値(以下y座標)から成る。タッチパネル1902は複数ポイントの押下を検知することが可能で、その場合CPU1905には押下点数分の押下位置情報が通知される。
電源コントローラ1907は、外部電源(不図示)と接続され電力の供給を受ける。これによって、電源コントローラ1907に接続された二次電池1912を充電しながら、且つ、携帯情報端末107全体に電力を供給する。外部電源から電力が供給されないときは、二次電池1912からの電力を携帯情報端末107全体に供給する。
無線LANモジュール1906は、CPU1905の制御に基づいて、前記LAN102に接続された無線アクセスポイント(不図示)上の無線LANモジュールとの無線通信を確立し、携帯情報端末107との通信を仲介する。無線LANモジュール1906には、例えばIEEE802.11bなどがある。
タイマー1913は、CPU1905の制御に基づいて、ジェスチャイベント発生部2001へのタイマー割込を発生させる。ジェスチャイベント発生部2001については後述する。また、携帯情報端末107には地磁気センサ(不図示)や加速度センサ(不図示)がバス(不図示)に接続されている。タイマー1913は、CPU1905の制御に基づいて、携帯情報端末107の傾きを検知し、携帯情報端末107が所定以上の傾きを得ると、携帯情報端末107の向きを変更し、描画部2003にLCD1901への描画の指示を送る。CPU1905は、前記携帯情報端末107の向きが変更されるとき、LCD1901の幅および高さを入れ替えて、以降の処理を行う。
図20は、携帯情報端末107のCPU1905で実行処理されるソフトウェアモジュール2000の構成を示すブロック図である。CPU1905は、コンピュータプログラムを実行することにより、後述するフローチャートの処理を実行する各処理部として機能する。ソフトウェアモジュール2000を構成する各モジュールについて説明する。
ジェスチャイベント発生部2001は、ユーザのタッチ入力を受けて、後述する各種ジェスチャイベントを発生させる。ジェスチャイベント発生部2001は、発生したジェスチャイベントを、ジェスチャイベント処理部2002へ送信する。ジェスチャイベント処理部2002は、ジェスチャイベント発生部2001で発生したジェスチャイベントを受信して、各ジェスチャイベントと、前記アプリケーション画像データに記述された文書構造に応じた処理を実行する。描画部2003は、ジェスチャイベント処理部2002の実行結果に応じて、MFP100から送信される前記アプリケーション画像データをLCD1901へ描画する。アプリケーション画像データの表示の方法については後述する。
次に、図21を用いて、ジェスチャイベント発生部2001で発生するジェスチャイベント名の一覧と、各イベントが発生したときに、ジェスチャイベント処理部2200へ送信する情報を示している。
図21(a)は、タッチ押下イベントであり、最新のタッチ座標の座標値とタッチ座標数が送信される。タッチ座標とは、タッチパネル1902にユーザの指が触れている1点の座標のことで、x座標とy座標で表される1組の座標値を持つ。また、タッチ座標数とは、タッチパネル1902にユーザの指が接触したタッチ座標の数を示している。なお、タッチ座標は、タッチパネル1902へユーザの指が触れたとき、指が移動したとき、指が離れたとき、タイマー1913からの割り込みが発生したときに更新される。
図21(b)は、スワイプイベントであり、最新のタッチ座標の座標値と、最新と直前の座標値の差分から計算した移動距離が送信される。ここで、スワイプとは、指先をタッチパネル1902に接触させたまま、1方向に移動(滑らすような)動作のことをいう。
図21(c)は、ピンチインイベントであり、ユーザが同時にタッチした2本の指に対応する最新の2点のタッチ座標の中心座標値、及び、2点のタッチ座標を結ぶ直線の縮小距離から計算したピンチインの縮小率が送信される。ここで、ピンチインとは、ユーザが2つの指先をタッチパネル1902に接触させたまま、互いに近づける(つまむような)動作のことをいう。
図21(d)は、ピンチアウトイベントであり、ユーザが同時にタッチした2本の指に対応する最新の2点のタッチ座標の中心座標値、及び、2点のタッチ座標を結ぶ直線の拡大距離から計算したピンチアウトの拡大率が送信される。ここで、ピンチアウトとは、2つの指先をタッチパネル1902に接触させたまま、互いに遠ざける(指を広げるような)動作のことをいう。
図21(e)は、2点スワイプイベントであり、ユーザが同時にタッチした2本の指に対応する最新の2点のタッチ座標の座標値、及び、2点のタッチ座標の最新と直前の座標値の差分から計算した移動距離が送信される。2点スワイプイベントは、2点のタッチ座標が同じ方向に移動している場合に発生する。
図21(f)は、ローテートイベントであり、最新の2点のタッチ座標の座標値から計算した回転の中心座標値、及び、2点のタッチ座標の最新と直前の座標値から計算した回転角度が送信される。ここで、ローテートとは、2つの指先をタッチパネル1902に接触させたまま、2つの指先をタッチパネル1902に対して回転させる動作のことを言う。
図21(g)は、フリックイベントであり、最新のタッチ座標の座標値、及び、最新と直前の座標値から計算した指の移動速度が送信される。ここで、フリックとは、スワイプ中に指を離す(指をはじくような)動作のことをいう。
図21(h)は、タッチ解除イベントであり、タッチパネル1902からユーザの指が離れたときの最新のタッチ座標の座標値、及び、座標数が送信される。
図21(i)は、ダブルタップイベントであり、最新のタッチ座標の座標値が送信される。ここで、ダブルタップとは、所定の時間内に後述のシングルタップイベントが発生したことを言う。
図21(j)は、シングルタップイベントであり、最新のタッチ座標の座標値が送信される。ここで、シングルタップとは、前述のタッチ押下イベントの後、所定の時間内にタッチ解除イベントが発生したことを言う。
図21(k)は、ロングタップイベントであり、最新のタッチ座標の座標値が送信される。ここで、ロングタップとは、前述のタッチ押下イベントの後、所定の時間以上経過してからタッチ解除イベントが発生したことを言う。
図21(l)は、タッチアンドホールドイベントであり、最新のタッチ座標の座標値が送信される。ここで、タッチアンドホールドイベントとは、タッチパネル1902にユーザの指が触れてから一度も移動することなく所定の時間以上経過したことを言う。
なお、ここでは、ユーザのタッチ入力の例として指を使った場合を示すが、タッチ入力はスタイラスペンなどによる入力でも良い。
次に、図22と図23を用いて、本実施例における携帯情報端末107の前記アプリケーション画像データ受信時の処理について説明する。図22は、携帯情報端末107がアプリケーション画像データを受信した際のフローチャートである。図23は、本実施例における携帯情報端末107のタッチUI1904の画面表示例である。
まず、ステップS2200において、携帯情報端末107は、無線LANモジュール1906を介してMFP100から前記アプリケーション画像データを受信すると、RAM1911に受信したアプリケーション画像データを保存する。次に、ステップS2201において、RAM1911に保存したアプリケーション画像データの構文を解析し、先頭ページを読み込む。次に、ステップS2202において、描画部2003は読み込んだ先頭ページに含まれる背景を、領域情報の始点の座標と幅、高さに応じてレンダリングしてタッチUI1904の表示状態を更新する。このとき、先頭ページは、図23のページ2300に示すように、先頭ページの幅(横の長さ)がタッチUI1904の幅に合うように表示倍率が制御される。また、前記表示倍率で縮小表示したときのページの高さ(縦の長さ)がタッチUI1904の高さよりも小さい場合は、タッチUI1904の中央に表示されるように、タッチUI1904上の座標において、ページ2300の始点が制御される。また、前記表示倍率に縮小したときのページ2300の高さがタッチUI1904の高さよりも大きい場合は、タッチUI1904上の座標において、ページ2300の始点がタッチUI1904の始点(例えば画面の左上)に合うように制御される。このように、タッチUI1904においてページの幅に合わせてページ全体を縮小表示する表示制御方法を、本実施例では「ページ表示モード」と呼ぶこととする。
図24は、携帯情報端末107の前記ジェスチャイベント処理部2002において、アプリケーション画像データの操作制御に係わるソフトウェアモジュールの構成を示すブロック図である。
ジェスチャイベント処理部2002は、ジェスチャイベント発生部2001から、図21に示すジェスチャイベントを受信する。表示変更イベント処理部2400は、ジェスチャイベント処理部2002が受信するジェスチャイベントのうち、シングルタップイベント(図21(j))に対する処理を行う。表示変更イベント処理部2400は、シングルタップイベントを受信すると、シングルタップイベントのタッチ座標の座標値が、図23のページ2300の上にあるかを判定する。そして、シングルタップイベントのタッチ座標がページ2300の上である場合には、後述するモード切替処理を行う。また、表示変更イベント処理部2400内の主オブジェクト推定処理部は、ページ2300への移動や拡大・縮小といった操作に係るイベントを受信した際に後述する処理を実行し、次に主オブジェクトとなるオブジェクトを推定して読み込む。
スワイプイベント処理部2401は、図21(b)のスワイプイベントと、スワイプ操作後に発生する図21(h)のタッチ解除イベントに対する処理を行う。ジェスチャイベント処理部2002がスワイプイベントを受信すると、後述するページ移動処理を行い、スワイプイベントの移動距離に応じて、タッチUI1904上の座標において、ページ2300を移動させる。また、スワイプイベント処理部2401内の表示範囲移動方向判定処理部2402において、後述する表示範囲移動方向判定処理を行って、スワイプ操作が連続して行われる場合に移動させるページの表示範囲移動方向を判定する。さらに、表示範囲移動方向判定処理部2402において、スワイプ操作後にタッチ解除イベントを受信した場合には、後述するページ移動処理および表示範囲移動方向判定処理に用いるスワイプ開始点を未設定の状態に変更する処理を行う。
ページめくりイベント処理部2406は、図21(g)のフリックイベントに対する処理を行う。ジェスチャイベント処理部2002は、フリックイベントを受信すると、前記フリックイベントの移動速度と、直前のタッチ座標および最新のタッチ座標の座標値とに応じて、タッチUI1904に表示されているページ2300を更新する。具体的には、前記移動速度が所定値以上であり、且つ、前記直前のタッチ座標よりも最新のタッチ座標が所定値以上、タッチUI1904上で右側に移動していた場合には、RAM1911に保存したアプリケーション画像データの構文を解析し、前のページを読み込む。なお、このとき現在表示されているページ2300が、RAM1911に保存したアプリケーション画像データの先頭ページが読み込まれている状態である場合には、ページの読み込みは行わない。また、前記移動速度が所定値以上であり、且つ、前記直前のタッチ座標よりも最新のタッチ座標が所定値以上、タッチUI1904上で左側に移動していた場合には、RAM1911に保存したアプリケーション画像データの構文を解析し、次のページを読み込む。なお、このとき現在表示されているページ2300が、RAM1911に保存したアプリケーション画像データの最終ページが読み込まれている状態である場合には、ページの読み込みは行わない。さらに、前述の処理で前もしくは次のページを読み込んだ場合には、前記表示範囲制御部2403が、タッチUI1904の幅に合わせてページの表示倍率を制御すると共に、ページの始点を制御して、ページの表示範囲を決定する。そして、前記決定されたページ表示範囲に基づいてタッチUI1904の表示状態を更新する。
拡大・縮小イベント処理部2405は、図21(c)のピンチインイベントと、図21(d)のピンチアウトイベントに対する処理を行う。ジェスチャイベント処理部2002は、ピンチインイベントやピンチアウトイベントを受信すると、後述するページ倍率変更処理を行う。ページ倍率変更処理では、前記二つのイベントの縮小率もしくは拡大率に応じてページ2300のページ始点および表示倍率を変更するように制御した後、タッチUI1904の表示状態を更新する。
オブジェクト選択処理部2408は、図21(i)のダブルタップイベントに対する処理を行う。ジェスチャイベント処理部2002がダブルタップイベントを受信すると、ダブルタップイベントのタッチ座標の座標値を用いて後述するオブジェクト選択処理を行う。
次に、図23、図25、図26を用いて、表示変更イベント処理部2400において行われるモード切替処理について説明する。図25は、モード切替処理のフローチャートである。図26は、本実施例における携帯情報端末107のタッチUI1904の画面表示例である。
まず、ステップS2500において、表示変更イベント処理部2400は、画面がシングルタップされてモード切替処理が実行された時点における、携帯情報端末107に設定中の表示モードを取得する。そして、表示変更イベント処理部2400は、シングルタップイベントによりモード切替処理が実行されたときに携帯情報端末107に設定中の表示モードが、部分領域表示モードである場合にはステップS2501に進んで、現在の表示モードをページ表示モードへと切り替える。一方、現在設定中の表示モードがページ表示モードであった場合には、処理を終了する。
ここで表示モードとは、携帯情報端末107がアプリケーション画像データをタッチUI1904に表示する方法を示し、本実施例の携帯情報端末107は、次の2つの表示モードを有する。第一に、図23に示したように、ページ全体を表示するのに適した「ページ表示モード」である。第二に、図26に示すように、ページ内の一部の領域(すなわちページ内の各オブジェクト)を拡大表示するのに適した「部分領域表示モード」である。なお、部分領域表示モードで、ユーザが閲覧しているメインのオブジェクト(画面中央に拡大表示されるオブジェクト)を、主オブジェクトと呼ぶこととする。なお、本実施例においては、アプリケーション画像データを携帯情報端末107が受信した直後はページ表示モードが設定されている。部分領域表示モードは、図26(b)に示す通り、ページ2300内の各オブジェクトのうちの少なくとも一つが主オブジェクトとして認識されている表示モードである。オブジェクト2601を主オブジェクトとして読み込んだときに表示される画面を図26(b)に示す。なお、図26(a)および図26(b)のオブジェクトを囲む破線は、説明をわかり易くするために描いたものであり、ページ2300上には存在しないものとする。
表示変更イベント処理部2400は、ステップS2501で表示モードをページ表示モードに切り替える。ステップS2502において、表示変更イベント処理部2400は、表示対象ページ2300の幅がタッチUI1904の幅に合うように表示倍率を制御すると共に、ページ2300の始点を制御して、ページの表示範囲を決定する。次に、ステップS2503において、表示変更イベント処理部2400は、当該決定されたページの表示範囲に基づいて、タッチUI1904の表示状態を更新する。
図10は、拡大・縮小イベント処理部2405により行われるページ倍率変更処理のフローチャートである。
ステップS1000において、拡大・縮小イベント処理部2405は、受信したピンチインイベントによる縮小率もしくはピンチアウトイベントによる拡大率に応じて、ページ2300の始点および拡大率を変更する。次に、ステップS1001において、拡大・縮小イベント処理部2405は、ステップS1000で変更したページ2300の表示倍率が、タッチUI1904にページ2300全体が表示される倍率か否かを判定する。判定の結果、ページ2300全体がタッチUI1904に表示される表示倍率であると判定した場合には、ステップS1002に進んで、表示モードをページ表示モードへと切り替える。
ステップS1003において、ページ2300の幅がタッチUI1904の幅に合うように(もしくはページ2300の高さがタッチUI1904の高さに合うように)表示倍率が制御する。なお、ページ全体が表示される表示倍率に縮小したときに、ページの幅と高さがタッチUI1904よりも小さい場合は、タッチUI1904の中央に表示されるように、タッチUI1904上の座標におけるページ2300の始点が制御される。すなわち、ピンチインイベントによって、タッチUI1904の画面よりもページ2300が小さく表示される倍率にまで縮小されようとした場合には、ステップS1003によってページ2300の幅と高さの少なくともいずれかがタッチUI1904の幅と高さに合い、且つページ全体が表示されるように、ページの始点と表示倍率が制御される。そして、ステップ1004において、タッチUI1904の表示状態を更新して処理を終了する。
また、ステップS1001において、ページ2300の一部がタッチUI1904に拡大表示される表示倍率であると判定した場合には、ステップS1005に進んで、表示モードを部分領域表示モードへと切り替える。そして、ステップS1006において、主オブジェクト推定処理部2404は、後述する「位置に基づく主オブジェクト推定処理」を行い、次に表示すべき主オブジェクトを推定した後、推定した主オブジェクトを次の主オブジェクトとして読み込む。そして、ステップ1004において、タッチUI1904の表示状態を更新して処理を終了する。
図11は、スワイプイベント処理部2401で行われるページ移動処理を説明するためのフローチャートである。この処理は、部分領域表示モードにおいて行われる。
ステップS1100において、スワイプイベント処理部2401は、スワイプ開始点が設定されているか否かを判定し、スワイプ開始点が設定されている場合にはステップS1102へ、未設定の場合にはステップS1101へ進む。ステップS1101において、スワイプイベント処理部2401は、スワイプイベントの最新のタッチ座標と移動距離から、スワイプ操作における最初のタッチUI1904上へのタッチ座標を求め、スワイプ開始点に設定する。ここでスワイプ開始点とは、ユーザによるスワイプ操作の開始点となる座標である。スワイプイベント処理部2401が初めてスワイプイベントを受信した場合には、スワイプ開始点は未設定の状態であるので、最初のスワイプ操作時は、タッチUI1904上への最初のタッチ座標がスワイプ開始点として設定される。なお、本実施形態では、1方向へ指を移動させるスワイプ操作を行った後、指を接触させたまま、次の方向へ指を移動させるスワイプ操作を行うことにより、スワイプ操作を連続して行うことができるものとする。詳しくは後述するが、スワイプ操作を連続して行う場合は、最初のスワイプの終了点が次のスワイプの開始点として設定されることになる。
ステップS1102において、スワイプイベント処理部2401は、スワイプイベントの移動距離に応じて、ページ2300のページ始点(表示位置)を移動するように制御し、当該移動後の画面上に表示されるページ表示範囲を決定する。ステップS1103において、スワイプイベント処理部2401は、スワイプイベントの最新のタッチ座標を、スワイプ終了点に設定する。ここで、スワイプ終了点とは、1つのスワイプ操作の終点を示すタッチ座標である。ステップS1104において、スワイプイベント処理部2401は、S1102で決定されたページ表示範囲に基づいて、タッチUI1904の表示状態を更新する。
ステップS1105において、スワイプイベント処理部2401は、前記スワイプ開始点とスワイプ終了点とに基づいてスワイプ操作のスワイプ量を求め、スワイプ量が所定値以上であるか否かを判定する。前記スワイプ量は、スワイプ開始点とスワイプ終了点との距離から求められる。スワイプ量が所定値以上であると判定した場合には、ステップS1106に進み、前記スワイプ量が所定値未満であると判定した場合には、処理を終了する。これによって、指が微妙にずれた程度のスワイプ操作と、ユーザが明示的に指を動かしたスワイプ操作とを切り分け、後者であった場合にのみ後述する異なる二つの主オブジェクトの推定処理を実行する。
ステップS1106において、スワイプイベント処理部2401は、ステップS1102で決定したページ表示範囲(スワイプ操作で移動させた後の表示範囲)に含まれる表示中オブジェクトの一覧を取得する。前記表示中オブジェクトの一覧とは、部分領域表示モードにおいてタッチUI1904の画面に少なくとも一部が表示されているオブジェクトの一覧である。
ステップS1107において、スワイプイベント処理部2401は、表示中オブジェクトの一覧に、主オブジェクトが含まれているか否かを判定する。主オブジェクトが含まれていると判定した場合にはステップS1108に進んで、後述する「方向に基づく主オブジェクト推定処理」を実行する。一方、含まれていないと判定した場合はステップS1006に進んで、「位置に基づく主オブジェクト推定処理」を実行する(なお、図11のS1006は、図10のS1006と同様の処理である)。
なお、スワイプイベントは、前述の通り、タイマー割り込みによってジェスチャイベント発生部2001から発生される。スワイプイベントの移動距離は、概ねユーザのスワイプ操作の速さと大きさに依存し、すばやく大きく動かしたときに前記移動距離は大きくなる。表示中オブジェクトの一覧に主オブジェクトが含まれない状況とは、前記移動距離が大きく、スワイプ操作前にタッチUI1904に表示されていた主オブジェクトが画面外に移り、主オブジェクトがタッチUI1904に表示されないことを示す。
ステップS1109において、スワイプイベント処理部2401は、ステップS1108もしくはステップS1006において、主オブジェクトが変更されたか否かを判定し、主オブジェクトが変更されていればステップS1110へ進む。また、主オブジェクトが変更されていなければ処理を終了する。
ステップS1110において、表示変更イベント処理部2400は、後述する部分領域表示範囲決定処理を行い、主オブジェクトの始点と幅、高さ、および属性に応じてページ2300の表示範囲を決定する。そして、ステップS1111において、スワイプイベント処理部2401は、スワイプイベントの最新のタッチ座標をスワイプ開始点に設定する。ステップS1112において、表示変更イベント処理部2400は、ステップS1110で決定された表示範囲に基づいてタッチUI1904の表示状態を更新する。S1111においてそれまでの連続的なスワイプ操作の開始点を初期化するので、指を画面にタッチしたまま、主オブジェクトが変更されてタッチUI1904の表示がS1112で更新された後に行われる次のスワイプ操作を認識できるようになる。
次に、ステップS1110の部分領域表示範囲決定処理の詳細について、図27のフローチャートを用いて説明する。
まず、ステップS2700において、表示範囲制御部2403は、主オブジェクトとして設定されたオブジェクトを読み込んで、読み込んだオブジェクトの属性を判定する。属性が文字の場合はステップS2702に進み、それ以外の属性である場合はステップS2712に進む。ステップS2702において、表示範囲制御部2403は、オブジェクトの文字の組み方向を取得する。オブジェクトの組み方向は、ステップS304のOCR処理の過程で得られているものとする。ステップS2703において、表示範囲制御部2403は、文字の組み方向を判定し、組み方向が縦書きである場合にはステップS2704に進み、横書きである場合にはステップS2705に進む。文字の組み方向が縦書きの場合、ステップS2704において、表示範囲制御部2403は、当該オブジェクトの高さがタッチUI1904の高さに入るようにページの表示倍率を設定する。また、文字の組み方向が横書きの場合、ステップS2705において、表示範囲制御部2403は、当該オブジェクトの幅がタッチUI1904の幅に入るようにページの表示倍率を設定する。
次に、ステップS2706において、ステップS2704またはステップS2705で設定した表示倍率に拡縮したオブジェクトの全体がタッチUI1904に表示できるかを判断する。オブジェクト全体がタッチUI1904よりも大きく、全体を表示できない場合にはステップS2707に進み、一方、オブジェクト全体がタッチUI1904よりも小さく、全体を表示できる場合にはステップS2710に進む。ステップS2707において当該オブジェクトにおける文字の組み方向を判定し、縦書きであると判定した場合はステップS2708に進み、横書きであると判定した場合はステップS2709に進む。
ステップS2708において、表示範囲制御部2403は、オブジェクト全体がタッチUI1904に表示できない縦書きの文字領域を表示するので、当該オブジェクトの右上端がタッチUI1904の右上端に合うように、前記ページ2300の始点位置を設定する。すなわち、縦書きの場合の先頭行が表示されるように表示範囲を設定する。また、ステップS2709において、表示範囲制御部2403は、オブジェクト全体がタッチUI1904に表示できない横書きの文字領域を表示するので、当該オブジェクトの左上端がタッチUI1904の左上端に合うように、前記ページ2300の始点を設定する。すなわち、横書きの場合の先頭行が表示されるように表示範囲を設定する。
ステップS2710において、当該表示対象の主オブジェクト全体がタッチUI1904の画面内に収まるので、表示範囲制御部2403は、当該オブジェクトの中央がタッチUI1904の中央に合うようにページ2300の始点を設定する。
なお、ステップS2700でオブジェクトの属性がその他の属性(文字以外の属性)と判定された場合、ステップS2712において、表示範囲制御部2403は、当該オブジェクト全体がタッチUI1904に入るように、ページの表示倍率を設定する。そして、ステップS2710において、当該オブジェクトの中央がタッチUI1904の中央に合うようにページ2300の始点を設定する。
次に、ダブルタップ操作が行われたときに、オブジェクト選択処理部2408で行われるオブジェクト選択処理について、図31のフローチャートを用いて説明する。
まず、ステップS3100において、オブジェクト選択処理部2408は、受信したダブルタップイベントのタッチ座標の座標値を取得する。前記タッチ座標の座標値はタッチUI1904上の座標値であるため、タッチUIに表示しているページの表示倍率と始点に基づいて、ページにおける座標値に換算する。ステップS3101において、タッチUIに表示している現在のページ内の全オブジェクトの中から先頭オブジェクトの情報を読み込む。ステップS3102において、ステップS3100で求めたページにおける座標値が、読み込んだオブジェクトの領域情報内に含まれるか否かを判定する。前記ページにおける座標値が当該読み込んだオブジェクトの領域情報内にある場合には、ステップS3103に進み、そうでない場合にはステップS3107に進む。
ステップS3103において、オブジェクト選択処理部2408は、ユーザにより操作が行われたときの携帯情報端末107に設定されている表示モードを取得する。取得した表示モードがページ表示モードである場合にはステップS3104に進み、部分領域表示モードである場合にはステップS3105に進む。ステップS3104において、携帯情報端末107の表示モードをページ表示モードから部分領域表示モードに切り替える。
ステップS3105において、オブジェクト選択処理部2408は、当該ダブルタップされたオブジェクト(すなわち、ステップS3101またはステップS3107で読み込んだオブジェクト)を主オブジェクトに設定する。そして、ステップS1110において、表示範囲制御部2403は、ステップS3104で主オブジェクトとして設定したオブジェクトに基づいて部分領域表示範囲決定処理を行う。部分領域表示範囲決定処理については前述した通りであるので、ここでの詳細な説明は省くが、当該主オブジェクトが表示されるように表示範囲が決定される。そして、ステップS3106において、表示変更イベント処理部2400は、部分領域表示範囲決定処理で決定したページの表示倍率と始点に応じてタッチUI1904の表示状態を更新する。
また一方、ステップS3107において、オブジェクト選択処理部2408は、現在のページ内の全オブジェクトの中から、現在読み込んでいるオブジェクトの次のオブジェクトの情報を読み込む。ステップS3108において、オブジェクト選択処理部2408は、ステップS3107で次のオブジェクトが読み込めたか否かを判定し、読み込めた場合にはステップS3102に戻り、読み込めなかった場合(すなわち、オブジェクト以外の部分(余白など)がダブルタップされた場合)には何もせずに処理を終了する。
なお、本実施例において、現在タッチUIに表示しているページ内の全オブジェクトを対象に、前記ページにおける座標値がオブジェクトの領域情報内にあるか否かを判定しているが、それに限るものではない。例えば、文字属性のオブジェクトのみなど、特定の属性を持つオブジェクトのみを選択したり、特定の属性のみを除外して選択したりすることも可能である。
次に、図12、図26、図29を用いて、主オブジェクト推定処理部2404で行われる、「方向に基づく主オブジェクト推定処理」について説明する。図12は、方向に基づく主オブジェクト推定処理の詳細を示すフローチャートである。図29は、本実施例における携帯情報端末107のタッチUI1904の画面表示例である。
ステップS1200において、主オブジェクト推定処理部2404内の表示範囲移動方向判定処理部2402において、スワイプ操作によってページ2300の表示範囲が移動した方向(表示範囲移動方向)を判定する。表示範囲移動方向は、前述のページ移動処理のステップS1101またはステップS1111で設定されるスワイプ開始点と、ステップS1103で設定されるスワイプ終了点とに基づいて求められる。図29(a)は、図26(b)のようにオブジェクト2601が主オブジェクトとして表示されている状態において、ユーザの指がタッチ座標2900の位置(スワイプ開始点)に触れ、スワイプ操作を行う直前の状態である。図29(b)は、図29(a)からユーザのスワイプ操作によって、タッチ座標2900からタッチ座標2901(スワイプ終了点)へユーザの指が移動し、スワイプイベント処理部2401がスワイプイベントを受信した状態である。図29(c)は、図29(b)のようにスワイプ操作したときに「方向に基づく主オブジェクト推定処理」によりオブジェクト2602が新たな主オブジェクトとして設定され、ページ移動処理のステップS1110とステップS1112の処理によりページ2300の表示範囲が移った後の状態である。図29(d)は、図29(c)からユーザのスワイプ操作によって、タッチ座標2901(新たなスワイプ開始点)からタッチ座標2902(新たなスワイプ終了点)へユーザの指が移動し、スワイプイベント処理部2401がスワイプイベントを受信した状態である。図29(e)は、図29(d)のようにスワイプ操作したときに「方向に基づく主オブジェクト推定処理」によりオブジェクト2604が新たな主オブジェクトとして設定され、前記ページ移動処理のステップS1110とステップS1112の処理によりページ2300の表示範囲が移った後の状態である。図29の例では、図29(a)から図29(e)までの操作の間にユーザの指はタッチUI1904から離れておらず、その間、タッチ解除イベントは発生していない。なお、図29(b)のとき、前記ページ移動処理のステップS1101においてタッチ座標2900がスワイプ開始点として設定され、ステップS1103においてタッチ座標2901がスワイプ終了点として設定されるので、スワイプ操作は、タッチ座標2900から2901へタッチUI1904に対して左方向になされたことになるが、それに伴いページ2300の表示範囲は右方向に移っているため、前記表示範囲移動方向は右方向となる。すなわち、前記表示範囲移動方向は、連続的なスワイプ操作によってタッチUI1904上で動いたタッチ座標の方向とは180度逆の方向を示す。本実施例において、表示範囲移動方向は、上下左右4方向と、右上・右下・左上・左下の斜め4方向の計8方向のいずれであるかを区別するものとする。この方向は、タッチ座標2900を点A、タッチ座標2901を点Bとしたときの線分BAの角度が、45度刻みの8方向のいずれに近いか判断することによって求めることができる。また、図29(c)のとき、ステップS1111でタッチ座標2901が新たなスワイプ開始点として設定され、図29(d)のとき、ステップS1103においてタッチ座標2902が新たなスワイプ終了点として設定される。このときのスワイプ操作は、タッチ座標2901から2902へ、タッチUI1904に対して右下方向になされたことになるが、ページ2300の表示範囲は左上方向に移っているため、表示範囲移動方向は左上方向となる。このように、ステップS1200で、スワイプ操作に基づいて表示範囲移動方向が判定される。
ステップS1201において、主オブジェクト推定処理部2404は、表示中オブジェクトの一覧から先頭のオブジェクトを読み込む。ステップS1202において、主オブジェクト推定処理部2404は、読み込んだオブジェクトが主オブジェクトであるか否かを判定し、主オブジェクトである場合にはステップS1207へ、そうでない場合にはステップS1203へ進む。
ステップS1203において、主オブジェクト推定処理部2404は、読み込んだ表示中オブジェクトが、主オブジェクトに対して表示範囲移動方向にあるか否かを判定し、ある場合にはステップS1204に進み、ない場合にはステップS1207へ進む。図29(b)の状態において、主オブジェクトは2601であり、ステップS1200で判定した前記表示範囲移動方向は右方向である。また、図29(d)の状態では、主オブジェクトは2602であり、前記表示範囲移動方向は左上方向である。
本実施例において、表示中オブジェクトが主オブジェクトに対して表示範囲移動方向にあるか否かの判断は、上下2方向と、左右2方向、斜め4方向とで条件を分ける。表示範囲移動方向が上下方向(上または下)の場合には、主オブジェクトの表示範囲移動方向の辺(上辺または下辺)よりも表示中オブジェクトが外側にあり、且つ、主オブジェクトの上下辺のX座標と表示中オブジェクトの上下辺のX座標の少なくとも一部が重なる場合に、当該表示中オブジェクトは表示範囲移動方向にあると判断する。表示範囲移動方向が左右の場合には、主オブジェクトの表示範囲移動方向の辺(左辺または右辺)よりも表示中オブジェクトが外側にあり、且つ、主オブジェクトの左右辺のY座標と表示中オブジェクトの左右辺のY座標の少なくとも一部が重なる場合に、当該表示中オブジェクトは表示範囲移動方向にあると判断する。また、表示範囲移動方向が斜めの4方向のいずれかの場合は、表示中オブジェクトの四隅の座標が、主オブジェクトの中心座標から表示範囲移動方向を中心とする45度の範囲内にある場合に、当該表示中オブジェクトが表示範囲移動方向にあると判断する。
なお、表示範囲移動方向が斜めの4方向のいずれかの場合は、上記判定方法に限るものではなく、主オブジェクトの上下辺のX座標と表示中オブジェクトの上下辺のX座標とに重なりがなく、かつ主オブジェクトの左右辺のY座標と表示中オブジェクトの左右辺のY座標とに重なりがない表示中オブジェクトのうち、当該斜めの表示範囲移動方向にある表示中オブジェクトを判定するようにしてもよい。例えば、表示範囲移動方向が左上方向の場合は、表示中オブジェクトの上下辺のX座標が主オブジェクトの上下辺のX座標よりも左にあり、且つ、表示中オブジェクトの左右辺のY座標が主オブジェクトの左右辺のY座標よりも上にあれば、当該表示中オブジェクトは主オブジェクトの左上方向にあると判定するようにする。
図29(b)においては、主オブジェクト2601から表示範囲移動方向の右方向にある表示中オブジェクトは、オブジェクト2602と2603となる。また、図29(d)においては、主オブジェクト2602から表示範囲移動方向の左上方向にある表示中オブジェクトは、オブジェクト2604となる。
ステップS1204において、主オブジェクト推定処理部2404は、読み込んだ表示中オブジェクトが主オブジェクトの表示範囲移動方向にある場合に、主オブジェクトからの距離を求める。本実施例において、主オブジェクトからの距離は、上下左右4方向と、斜め4方向とで算出方法を変える。上下左右の場合には、主オブジェクトの4辺と表示中オブジェクトの4辺とで最も近い辺同士の距離を、斜め4方向の場合には、主オブジェクトの中心座標と表示中オブジェクトの四隅のうちの最も近い座標との距離とする。
ステップS1205において、主オブジェクト推定処理部2404は、主オブジェクトの表示範囲移動方向にある表示中オブジェクトのうち、当該表示中オブジェクトが主オブジェクトに最も近いか否かをステップS1204で求めた距離から判断する。当該判定対象の表示中オブジェクトが主オブジェクトに最も近いと判断した場合にはステップS1206に進み、そうでない場合にはステップS1207へ進む。ステップ1206において、主オブジェクト推定処理部2404は、主オブジェクトに最も近い表示中オブジェクトを、次の主オブジェクトとなる主オブジェクト候補として記憶する。ステップS1207において、主オブジェクト推定処理部2404は、前記表示中オブジェクトの一覧から次の表示中オブジェクトを読み込む。次に、ステップS1208において、主オブジェクト推定処理部2404は、ステップS1207で読み込むべき表示中オブジェクトがあれば、ステップS1202に戻り、ない場合にはステップS1209へ進む。
ステップS1209において、主オブジェクト推定処理部2404は、前記表示中オブジェクトの一覧の中に、主オブジェクト候補があったか否かを判断し、あった場合にはステップS1210へ進み、そうでない場合には処理を終了する。ステップS1210において、主オブジェクト推定処理部2404は、主オブジェクト候補を主オブジェクトに設定する。
図29(b)においては、表示範囲移動方向にある表示中オブジェクト2602と2603のうち、主オブジェクト2601に最も近い表示中オブジェクトは2602となる。また、図29(d)においては、表示範囲移動方向にある表示中オブジェクトは2604のみであるので、主オブジェクト2602に最も近い表示中オブジェクトは2604となる。こうして、図29(c)においては、オブジェクト2602が主オブジェクトとして設定され、前記ページ移動処理が行われて、ページ2300の表示範囲がオブジェクト2602の閲覧に好適な範囲に移る。また、図29(e)においては、オブジェクト2604が主オブジェクトとして設定され、ページ2300の表示範囲がオブジェクト2604の閲覧に好適な範囲に移る。
なお、本実施例における方向に基づく主オブジェクト推定処理において、前記主オブジェクト候補は、表示範囲移動方向にある表示中オブジェクトの中で最も主オブジェクトからの距離が近いものであると説明したが、それに限るものではない。例えば、表示中オブジェクトの一覧の中から、主オブジェクトと同じ属性を持つオブジェクトのみを対象として、表示中オブジェクトの一覧から読み込むようにしても良い。また、オブジェクトの属性に優先順位を設け、表示中オブジェクトの一覧からオブジェクトを読み込む際に、例えば、文字、図形、写真の順番で読み込み、同一属性内で主オブジェクトからの距離が最も近い表示中オブジェクトを優先して主オブジェクト候補としても良い。また、読み込んだ表示中オブジェクトの主オブジェクトからの距離が所定内にある複数の表示中オブジェクトに対して、さらに、オブジェクトの属性に優先順位を設けて、優先順位のより高いオブジェクトを主オブジェクト候補としても良い。また、主オブジェクト候補は、読み込んだ表示中オブジェクトの主オブジェクトからの距離のみで推定するのではなく、例えば、タッチUI1904に表示されているオブジェクトの面積と組み合わせるなどしても良い。また、スワイプ開始点をA、スワイプ終了点をBとしたときの線分BAの延長線上に表示中オブジェクトが複数ある場合、スワイプ終了点Bに最も近い表示中オブジェクトを次の主オブジェクトとして設定しても良い。
次に、図26、図28、図30を用いて、主オブジェクト推定処理部2404で行われる「位置に基づく主オブジェクト推定処理」について説明する。図28は、「位置に基づく主オブジェクト推定処理」の詳細を示すフローチャートである。図30は、本実施例における携帯情報端末107のタッチUI1904の画面表示例である。
ステップS2800において、主オブジェクト推定処理部2404は、前記表示中オブジェクトの一覧から先頭のオブジェクトを読み込む。ステップS2801において、主オブジェクト推定処理部2404は、当該読み込んだオブジェクトが主オブジェクトであるか否かを判定し、主オブジェクトである場合にはステップS2806へ、そうでない場合にはステップS2802へ進む。
ステップS2802において、主オブジェクト推定処理部2404は、当該読み込んだ表示中オブジェクトがタッチUI1904の画面中央を含む位置に表示されているか否かを判断し、画面中央にあればステップS2803に進み、無ければS2806に進む。ここで、画面中央とは画面の中心点を含む所定の小サイズの領域としておき、S2802では表示中オブジェクトがこの画面中央に定義された小領域の少なくとも一部を含むかどうかを判断する。図30(a)は、図26(b)の主オブジェクトとしてオブジェクト2601が表示されている状態で、ユーザの指がタッチ座標3000の位置に触れ、スワイプ操作を開始する直前の状態である。図30(b)は、図30(a)の状態からユーザがすばやく上方向に大きなスワイプ操作を行うことにより、タッチ座標3000からタッチ座標3001へユーザの指が大きく移動し、スワイプイベント処理部2401がスワイプイベントを受信した直後の状態である。大きなスワイプ操作を行ったので、主オブジェクト2601は表示画面外に移動して見えなくなっている。このときの表示範囲移動方向は下方向であるので、表示範囲移動方向(下方向)にある表示中オブジェクト2605と2606のうち、主オブジェクト2601に最も近い表示中オブジェクトは2605である。一方で、タッチUI1904の画面中心を含む位置に表示されている表示中オブジェクトは2606である。
ステップS2803において、主オブジェクト推定処理部2404は、当該読み込んだ表示中オブジェクトのタッチUI1904に表示されている面積を求める。表示されている面積の算出は、ページ2300の表示範囲と、表示中オブジェクトの領域とで重複する領域の面積を求めることで算出できる。次に、ステップS2804において、主オブジェクト推定処理部2404は、S2803で求めた面積に基づいて、タッチUI1904の画面中央の小領域を含む位置に表示されている表示中オブジェクトのうち、当該読み込んだ表示中オブジェクトが画面に最も大きく表示されているか否かを判断する。当該読み込んだ表示中オブジェクトの表示面積が最も大きいと判断した場合はステップS2805に進み、そうでない場合にはステップS2806へ進む。ステップ2805において、主オブジェクト推定処理部2404は、画面に表示されている面積が最も大きい表示中オブジェクトを、次の主オブジェクトの候補(主オブジェクト候補)として更新してメモリに記憶する。図30(b)においては、タッチUI1904の画面中央を含む位置に表示されている表示中オブジェクトは2606のみであり、画面に表示されている面積が最も大きい表示中オブジェクトは2606となる。
ステップS2806において、主オブジェクト推定処理部2404は、前記表示中オブジェクトの一覧から次の表示中オブジェクトを読み込む。ステップS2807において、主オブジェクト推定処理部2404は、ステップS2806で次の表示中オブジェクトがある場合はステップS2801に戻り、ない場合(すなわち全ての表示中オブジェクトが処理済みの場合)にはステップS2808へ進む。
ステップS2808において、主オブジェクト推定処理部2404は、主オブジェクト候補がメモリに記憶されているか否かを判断し、主オブジェクト候補がある場合にはステップS2809へ進み、そうでない場合には処理を終了する。ステップS2809において、主オブジェクト推定処理部2404は、主オブジェクト候補を次の主オブジェクトとして設定する。図30(c)は、図30(b)の状態で「位置に基づく主オブジェクト推定処理」が実行された結果、次の主オブジェクトとしてオブジェクト2606が設定され、前記ページ移動処理のステップS1110とステップS1112が実行されて、ページ2300の表示範囲が移動・更新された状態である。このように、図30(c)においては、新たな主オブジェクトとして設定されたオブジェクト2606が閲覧に好適な位置に表示される。
なお、本実施例における「位置に基づく主オブジェクト推定処理」において、主オブジェクト候補は、画面中央の小領域を含む位置に表示されている表示中オブジェクトのうち、表示面積が最も大きいものであると説明したが、それに限るものではない。例えば、表示中オブジェクトの一覧の中から、主オブジェクトと同じ属性を持つオブジェクトのみを対象として、表示中オブジェクトの一覧から読み込むようにしても良い。例えば最初の主オブジェクトが文字属性の領域である場合、次の主オブジェクトも文字属性の領域となる。また、現在の主オブジェクトの属性から順に優先順位を設けて、表示中オブジェクトのうち、優先順位のより高いオブジェクトを主オブジェクト候補としても良い。
なお、本実施例の図26、図29、図30において、各オブジェクトを囲む破線は、説明のために描いたものでページ2300上には存在しないと説明したが、それに限るものではない。例えば、ユーザが現在の主オブジェクトの領域を特定しやすくするために破線や実線でオブジェクトの周囲を強調表示しても良いし、主オブジェクト候補を同様に強調表示しても良いことは言うまでもない。
以上説明したように、本実施例によれば、複数の領域(複数のオブジェクト)で構成される構造化文書を部分領域表示モードで表示しているときに、ユーザによるスワイプ操作に基づいて、次の主オブジェクトとすべき領域を推定して表示することができる。
(実施例2)
実施例1では、スワイプイベント処理部2401がスワイプイベント操作に応じたページ移動処理において、スワイプ量が所定量以上であれば、次の主オブジェクトを推定する処理を行うことを説明した。これによって、連続的なスワイプ操作の中で主オブジェクトが変更になった場合に、変更された主オブジェクトを閲覧しやすい位置にページの表示範囲を移すことができる。一方で、スワイプイベント処理部2401が所定のスワイプ量以上のスワイプイベントを受信すると直ぐに、次の主オブジェクトを推定してページの表示範囲が移動されるので、従来のスワイプ操作を行っている途中で、ユーザが意図せずに大きめにスワイプ操作を行ってしまうと、次の主オブジェクトが表示されることになる。そこで、本実施例2では、前記ページ移動処理を、「従来のスワイプ操作に追随したページ移動の処理」と「次の主オブジェクトを推定する処理」とに分離し、前者の処理内でイベントタイマーを設定して、一定時間後に後者の処理をイベントとして呼び出す。
図32と図33を用いて、スワイプイベント処理部2401で行われる実施例2のページ移動処理を説明する。なお、実施例1と同様の部分に関しては同一番号を付けて説明を省略し、異なる部分のみを以下に説明する。図32において、実施例1のページ移動処理(図11)とは、ステップS3200とS3201、S3202が異なる。さらに、実施例1のステップS1106以降のステップは、ページ移動処理(図32)とは別の処理(図33)で実行する。
まず、スワイプイベント処理部2401は、ステップS1100でスワイプ開始点が未設定(すなわち、最初のスワイプ操作である)と判断した場合、ステップS1101でタッチ位置をスワイプ開始点として設定し、更に、ステップS3200において、後述する主オブジェクト推定処理のタイマー時間に第一時間を設定する。本実施例において、主オブジェクト推定処理のタイマー時間は、第一時間と第二時間の2種があるものとし、例えば、第一時間は0.3秒、第二時間は0.01秒と、第一時間は第二時間よりも長い時間に設定される。
ステップS3201において、スワイプイベント処理部2401は、ステップS1105でスワイプ量が所定値以上であると判定した場合に、後述する主オブジェクト推定処理のイベントタイマーが既に設定されていれば解除し、ステップS3202に進む。これによって、後述する主オブジェクト推定処理を一定時間後に実行するイベントが重複して発生しないように制御する。次に、ステップS3202において、スワイプイベント処理部2401は、後述する主オブジェクト推定処理を一定時間後に実行するイベントのイベントタイマーに、ステップS3200または後述するS3300で設定されたタイマー時間を設定する。イベントタイマーは、タイマー1913においてジェスチャイベントとは別に管理され、イベントタイマーに設定されたタイマー時間が経過した後に、スワイプイベント処理部2401に主オブジェクト推定処理を実行させるためのイベントを送信し、図33の主オブジェクト推定処理を実行する。
これによって、ユーザは、スワイプ操作を連続的に行っている場合、スワイプ量が一定値以上になるたびにイベントタイマーがリセットされる。したがって、スワイプさせた指をイベントタイマーに設定されたタイマー時間より長く静止させた場合にのみ、後述する図33の主オブジェクト推定処理を実行させることができる。
次に、図33を用いて、スワイプイベント処理部2401で行われる実施例2の主オブジェクト推定処理を説明する。実施例2の主オブジェクト推定処理は、前述の通り、実施例1(図11)のページ移動処理から、ステップS1106以降のステップを分離し、ステップS3300を追加したものである。
スワイプイベント処理部2401は、スワイプさせた指がイベントタイマーに設定された時間より長く静止された場合に送信されてくる「主オブジェクト推定処理を実行させるためのイベント」を受信すると、図33の処理を実行する。図33のステップS1106以降の処理では、表示中オブジェクトと表示範囲移動方向に応じて次の主オブジェクトを推定する(S1108またはS1006)。さらに、主オブジェクトが変更された場合に、ステップS1110とステップS1112により、当該次の主オブジェクトの領域情報と属性に応じて、当該推定された次の主オブジェクトを閲覧しやすいように、ページ2300の表示範囲を移動させる。
ステップS3300において、スワイプイベント処理部2401は、前記タイマー時間に第二時間(例えば、0.01秒)を設定して処理を終了する。したがって、ユーザが指を離さずに次のスワイプ操作を連続的に行った場合は、第二時間以上(0.01秒以上)静止した時点で主オブジェクト推定処理が実行されることになる。
以上説明したように、実施例2では、ユーザはスワイプ操作を行っているときに、指を動かしていれば、従来のスワイプ操作に追随した移動処理を行うことができる。そして、最初のスワイプ操作で、所定のスワイプ量以上スワイプし且つ第一時間以上指を静止させた時点で、主オブジェクト推定処理が実行されて、次の主オブジェクトが見やすい位置に表示されることになる。また、スワイプ操作を連続して行う場合、2回目以降のスワイプ操作では第二時間(第二時間は第一時間より短い)以上、指を静止させた時点で、主オブジェクト推定処理が実行されて、次の主オブジェクトが見やすい位置に表示されることになる。このように、スワイプ操作の中で、一定時間指を静止したときのみ、次にユーザが見るべき主オブジェクトの領域を推定して表示範囲を移動させるため、従来のスワイプ操作に追随した移動と共存することが容易になる。さらに、スワイプ操作が連続して行われる場合において、主オブジェクト推定処理の実行イベントを送信するためのイベントタイマーは、最初のスワイプ操作時は長く(例えば0.3秒)、後続の2回目以降のスワイプ操作時は短く(例えば0.01秒)設定される。したがって、指を接触させたまま連続してスワイプ操作を行うとき、2回目以降のスワイプ操作では長時間指を静止させなくても、主オブジェクト推定処理を実行させることができる。
(実施例3)
実施例1と2では、タッチUI1904の全域において、連続的なスワイプ操作を検出して、主オブジェクトの周囲にある表示中オブジェクトの中から、次の主オブジェクトを推定する処理を行うことを説明した。これによって、タッチUI1904の画面中央付近に位置する表示中オブジェクトを対象に、次の主オブジェクトを推定して、ページの表示範囲を移すことが出来た。一方で、タッチUI1904の外縁付近に表示されているオブジェクトに対しては、ユーザが望むオブジェクトに表示範囲を移すことができない場合がありうる。そこで、実施例3では、前記ページ移動処理において、タッチUI1904の画面中央付近に主オブジェクト推定処理の不感領域を設け、連続的なスワイプ操作の中で不感領域外へタッチ座標が移動した場合にのみ、主オブジェクト推定処理を行う。
図34〜図36を用いて、スワイプイベント処理部2401で行われる実施例3のページ移動処理を説明する。図34は、本実施例3におけるページ移動処理のフローチャートである。なお、実施例1と同様のステップに関しては、同一番号を付けて省略し、異なる部分のみを以下に説明する。図36は、本実施例における携帯情報端末107のタッチUI1904の画面表示例である。
まず、スワイプイベント処理部2401は、スワイプ開始点が未設定であればステップS1101でスワイプ開始点を設定し、受信したスワイプイベントのタッチ座標および移動距離からページ2300の表示範囲を決定し、タッチUI1904の表示を更新する。
次に、ステップS3400において、スワイプイベント処理部2401は、受信したスワイプイベントの最新のタッチ座標が、タッチUI1904の不感領域外か否かを判定する。ここで、不感領域とは、スワイプイベントのタッチ座標がこの領域内にある場合に、後述する方向に基づく主オブジェクト推定処理を行わず、スワイプ操作に追随してページの表示範囲の移動のみを行う領域である。図36(a)は、図26(b)のように主オブジェクトとしてオブジェクト2601が表示されている状態で、ユーザの指がタッチ座標3601の位置に触れ、スワイプ操作を行う直前の状態である。不感領域3600は、タッチUI1904の画面中央の予め定められた位置に設定されているものとする。なお、図36において、オブジェクトを囲む破線、および不感領域は説明のために描いているが、これらは不可視である。
次に、スワイプイベント処理部2401は、スワイプ開始点とスワイプ終了点との距離であるスワイプ量が所定値以上である場合に、ステップS3401に処理を進める。ステップS3401において、スワイプイベント処理部2401は、不感領域外にあり且つ表示画面外に一部がはみ出している表示中オブジェクトの一覧を取得する。図36(b)は、図36(a)の状態からユーザのスワイプ操作によって、不感領域内のタッチ座標3601から不感領域外のタッチ座標3602へユーザの指が移動し、スワイプイベント処理部2401がスワイプイベントを受信した状態である。このとき、不感領域3600の外にあり且つ一部だけが表示画面に表示されている表示中オブジェクトとは、オブジェクト2606となる。次に、スワイプイベント処理部2401は、ステップS1108で本実施例における方向に基づく主オブジェクト推定処理を行い、S1109で主オブジェクトが変更されていると判定した場合は、ステップS3402へ進み、変更されていなければ処理を終了する。
ステップS3402において、スワイプイベント処理部2401は、推定前表示範囲が既に設定されていればステップS1110へ進み、設定されていなければステップS3403へ進んで現時点のページの表示範囲を推定前表示範囲として設定する。すなわち、推定前表示範囲とは、本実施例における「方向に基づく主オブジェクト推定処理」によって主オブジェクトが変更されてページの表示範囲が更新される直前の表示範囲であり、図36(b)のページ2300の表示範囲がそれにあたる。次に、スワイプイベント処理部2401は、S1110で部分領域表示範囲決定処理を行い、主オブジェクトの始点と幅、高さ、および属性に応じてページ2300の表示範囲を決定し、ステップS1112で、タッチUI1904の表示状態を更新する。図36(c)は、図36(b)の状態で「方向に基づく主オブジェクト推定処理」が実行されてオブジェクト2606が次の主オブジェクトとして設定され、ページ移動処理のステップS1110とステップS1112でページ2300の表示範囲が移った状態である。すなわち、タッチ座標が不感領域3600の外にあるとき、ステップS1108で「方向による主オブジェクト推定処理」を実行することにより、主オブジェクトが変更されてページ2300の表示領域が移動される。詳細は後述するが、それによって、ユーザがそれ以上画面外へスワイプ操作できない状況においても、表示範囲移動方向に見切れた表示中オブジェクトを、閲覧するに好適な表示倍率と表示範囲で見ることができる。
また、ステップS3400において、受信したスワイプイベントのタッチ座標が不感領域内にあると判断した場合には、ステップS3404において、スワイプイベント処理部2401は、推定前表示範囲をページ2300の表示範囲に設定する。次に、ステップS3405において、スワイプイベント処理部2401は、ステップS3403で設定した推定前表示範囲の設定を解除し、未設定の状態とした後、ステップS1112において、タッチUI1904の表示状態を更新する。図36(d)は、図36(c)の状態からユーザのスワイプ操作によって、不感領域外のタッチ座標3602から不感領域内のタッチ座標3603へユーザの指が戻り、スワイプイベント処理部2401がスワイプイベントを受信した状態である。図36(e)は、図36(d)の状態から、ページの表示範囲を推定前表示範囲に変更して、ステップS1112でページ2300の表示範囲が移った状態である。図36(d)では、ステップS3400でスワイプイベントのタッチ座標が不感領域3600内にあるため、ステップS3404でページの表示範囲に、前記推定前表示範囲が設定される。その後、ステップS1112でタッチUI1904の表示状態が更新され、図36(e)に示すように、従来のスワイプ操作でページの表示範囲を移動していた状態へと戻る。また、推定前表示範囲の設定解除は、スワイプイベント処理部2401がタッチ解除イベントを受信した際にも行われる。
図35は、スワイプイベント処理部2401で行われる実施例3の「方向に基づく主オブジェクト推定処理(図34のS1108)」の詳細を説明するフローチャートである。図35と実施例1の図12とを比較すると、ステップS1203が、ステップS3500に置き換わった以外は同様である。
ステップS3500において、スワイプイベント処理部2401は、読み込んだ判定対象の表示中オブジェクトが、表示範囲移動方向に対して見切れているか否かを判定し、そうである場合にはステップS1204へ、そうでない場合にはステップS1207へ進む。表示範囲移動方向は、実施例1で説明した通り、上下左右と斜め4方向の計8方向であり、タッチUI1904の当該方向に見切れて表示されているオブジェクトであるとき、ステップS1204へ進む。図36(b)では、タッチ座標3601がスワイプ開始点、タッチ座標3602がスワイプ終了点であり、ステップS1200において表示範囲移動方向は下方向となり、タッチUI1904の下方向に見切れているオブジェクト2606が該当する。
なお、実施例3においては、実施例1のようにスワイプイベントをスワイプイベント処理部2401が受信する度に、次の主オブジェクトを推定する処理を行う構成を説明したが、これに限るものではない。例えば、実施例2で説明したイベントタイマーによって一定時間の指の静止を検知した後に、次の主オブジェクトを推定する処理を行っても良いことは言うまでもない。
以上説明したように、実施例3では、不感領域を設け、不感領域内では従来通りのスワイプ操作でページの表示範囲を移動させ、不感領域外に連続的なスワイプ操作がなされた場合に、表示範囲移動方向にある画面から見切れたオブジェクトに表示を移す。これによって、従来通りのスワイプ操作ではそれ以上画面外へ指が運べず、複数回のスワイプ操作をしなければ閲覧できなかった見切れたオブジェクトに対して、一度のスワイプ操作でユーザが閲覧するために好適な表示範囲でオブジェクトを画面に表示することができる。また、その状態でユーザがタッチUIから指を離せばページの表示領域は維持され、ユーザが指を離さず不感領域内へ指を戻すことによって、表示範囲が主オブジェクトの推定によって移る前の状態へと直観的に戻すことも可能となる。
(その他の実施例)
本発明は、複数の機器(例えばホストコンピュータ、インターフェース機器、リーダ、プリンタなど)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機、ファクシミリ装置など)に適用してもよい。また本発明の目的は、前述の実施例の機能を実現するプログラムコードを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータが記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体およびプログラムコードを記憶した記憶媒体は本発明を構成することになる。
また、本発明には、プログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれる。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた場合についても、本発明は適用される。その場合、書き込まれたプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施例の機能が実現される。
また、上述した実施形態では、コンピュータがプログラムを実行することにより、各処理部として機能するものとしたが、処理の一部または全部を専用の電子回路(ハードウェア)で構成するようにしても構わない。