文書表示装置、文書表示方法およびそのプログラムならびに記憶媒体
【課題】ドラッグスクロール機能を有する任意のアプリケーションプログラムが表示する文書の文書位置を正確に検出できるようにする。
【解決手段】文書上でドラッグスクロール操作をエミュレートすることにより汎用OS上で動作する任意の文書アプリケーションプログラムが表示する文書をスクロール表示する文書表示装置であって、元の文書画像の一部領域を除く文書画像を取得する画像取得手段と、取得した文書画像を元の文書画像に重ねて表示手段に表示する第1の表示制御手段と、前記表示手段に表示されたスクロールバーのドラッグによる移動量を基にスクロール時の元の文書画像の表示文書位置を検出する位置検出手段と、重ねて表示した前記文書画像を消去し、検出された前記表示文書位置の元の文書を前記表示手段に表示する第2の表示制御手段とを備える。
【解決手段】文書上でドラッグスクロール操作をエミュレートすることにより汎用OS上で動作する任意の文書アプリケーションプログラムが表示する文書をスクロール表示する文書表示装置であって、元の文書画像の一部領域を除く文書画像を取得する画像取得手段と、取得した文書画像を元の文書画像に重ねて表示手段に表示する第1の表示制御手段と、前記表示手段に表示されたスクロールバーのドラッグによる移動量を基にスクロール時の元の文書画像の表示文書位置を検出する位置検出手段と、重ねて表示した前記文書画像を消去し、検出された前記表示文書位置の元の文書を前記表示手段に表示する第2の表示制御手段とを備える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、文書画像のページ位置を検出する文書表示装置、文書表示方法およびそのプログラムならびに記憶媒体に関する。
【背景技術】
【0002】
文書表示プログラムが表示する文書上へ上書きすることにより、説明箇所の明示や補足説明等を行うことができるソフトウェアがある。これは文書画像上へ描画しているだけで、文書位置との関連付けはなく上書きデータのみ保存した場合、必ず上書き時と同一の文書位置で表示がされていないと再描画しても意味を持たず逆に誤解を招くことになる。従って、元の文書と上書きされたものの表示位置を正確に検出できる必要がある。
【0003】
従来より、ドラッグスクロール機能を有するアプリケーションにおいて、文書の表示位置を検出する技術が提案されている。例えば、特許文献1では、文書にページ情報を付加して印刷し、このページ情報を自動検知し、上書き部分とページの整合を図る技術が提案されている。また、特許文献2では、画像メモリ上に直接上書きデータを描画する方法が提案されている。また、特許文献3では、上書き時のPC画像と手書き情報を分離保存し、表示時に、これらを重ねて表示する技術が提案されている。この技術では、画像と上書きの位置関係は不明で、画像の表示位置と上書きを関連付けて管理する必要がある。
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、特許文献1の技術では、一度ページ情報を付加印刷し、さらにページ情報を識別する特別な装置が必要である。また、特許文献2の技術では、拡大・縮小表示時や、スクロール表示時も、上書き位置情報が保持され表示されるが、APLが一度表示変更をするとこの情報は消えてなくなる。また、APLにより同一画像が再表示されたことや、表示位置、表示倍率などの情報を持っておらず、上書きデータを位置合わせして表示することができない。また、特許文献3の技術では、画像と上書きの位置関係は不明で、画像の表示位置と上書きを関連付けて管理する必要がある。このように、様々な技術が提案されているが、上記の問題点がある。
【0005】
ところで、汎用OS(MS Windows(登録商標),MAC OS,Linux(登録商標)等)上で動作する文書プログラムが表示する文書を別のアノテーション(上書き)プログラムが文書をスクロール表示させる方法として、文書プログラムへOSが提供するAPI(アプリケーションプログラムインターフェース)により、スクロールメッセージ(例えばWindows(登録商標)環境では、SendMessage(WM_VSCROLL, SB_LINEUP, (LPARAM)hScroll))を送信することにより行うことが一般的である。しかし、スクロール長を取得するAPIは一般に提供されておらず、文書表示位置を知るため、文書をスクロール表示させた際のスクロール長を取得するには、特別な方法を用いる必要がある。
【0006】
一般的に、スクロール後に表示が残る部分は再描画が行われず、スクロール方向へ残る部分の画像移動が行われる。このとき直線も一緒に移動することになる。このため、文書上へ透明ウィンドウを表示し、この透明ウィンドウ上へ直線を描画してスクロール表示すると、直線も文書と同じ量だけ移動することになる。したがって、この手法では、移動後の直線の位置を検出することによりスクロール長を取得することができる。
【0007】
しかし、中には上記とは異なり表示領域全体を再描画するものもある。この場合直線は消去されスクロール長の取得ができない。この場合、画像中の特定文書画像を検出し、スクロール実行後にこの特定文書画像の移動量を検出することによりスクロール長の取得が可能である。
【0008】
しかし、一般の文書の中には、表示部分に何も描画されない文書構成が存在する。このような白紙となるページが存在し、スクロール時に表示領域全体の再描画が行われる場合、スクロール長を検出することができないことになる。従って、任意のアプリケーションに対して、文書の表示位置を正確にしる方法が必要とされた。また、スクロール時に画面表示が大きく流れると、見ている者の気分を害することになる、といった問題があった。
【0009】
本発明は、上記に鑑みてなされたものであって、ドラッグスクロール機能を有する任意のアプリケーションプログラムが表示する文書の文書位置を正確に検出できるようにするとともに、スクロール時に大きく流れる画面の表示状態を改善することを目的とする。
【課題を解決するための手段】
【0010】
上述した課題を解決し、目的を達成するために、本発明の文書表示装置は、文書上でドラッグスクロール操作をエミュレートすることにより汎用OS上で動作する任意の文書アプリケーションプログラムが表示する文書をスクロール表示する文書表示装置であって、元の文書画像の一部領域を除く文書画像を取得する画像取得手段と、取得した文書画像を元の文書画像に重ねて表示手段に表示する第1の表示制御手段と、前記表示手段に表示されたスクロールバーのドラッグによる移動量を基にスクロール時の元の文書画像の表示文書位置を検出する位置検出手段と、重ねて表示した前記文書画像を消去し、検出された前記表示文書位置の元の文書を前記表示手段に表示する第2の表示制御手段とを備えることを特徴とする。
【0011】
また、本発明の文書表示方法は、文書上でドラッグスクロール操作をエミュレートすることにより汎用OS上で動作する任意の文書アプリケーションプログラムが表示する文書をスクロール表示する文書表示方法であって、元の文書画像の一部領域を除く文書画像を取得する画像取得工程と、取得した文書画像を元の文書画像に重ねて表示手段に表示する第1の表示制御工程と、前記表示手段に表示されたスクロールバーのドラッグによる移動量を基にスクロール時の元の文書画像の表示文書位置を検出する位置検出工程と、重ねて表示した前記文書画像を消去し、検出された前記表示文書位置の元の文書を前記表示手段に表示する第2の表示制御工程とを含むことを特徴とする。
【発明の効果】
【0012】
本発明によれば、スクロールバーのドラッグによる移動量を基に表示文書位置を検出するので、ドラッグスクロール機能を有する任意のアプリケーションプログラムが表示する文書の文書位置を正確に検出できる。また、元の文書画像の一部領域を除く文書画像を元の画像に重ねて表示するので、スクロール時に大きく流れる画面の表示状態を改善することができる。
【図面の簡単な説明】
【0013】
【図1】図1は、本発明の一実施の形態にかかる文書表示装置の構成を示すブロック図である。
【図2】図2は、文書表示装置の利用形態を示す図である。
【図3】図3は、本実施形態における文書位置検出の手法が効果を奏する文書表示の応用例について説明する図である。
【図4】図4は、ドラッグスクロールエミュレーション方法を説明する図である。
【図5】図5は、スクロールバー情報を説明するための図である。
【図6】図6は、文書位置取得手順を説明するための図である。
【図7】図7は、文書位置検出制御フローを示すフローチャートである。
【図8】図8は、位置検出制御テーブルの一例を示す図である。
【図9】図9は、文書位置検出時の初期化制御フローを示すフローチャートである。
【図10】図10は、文書垂直位置検出制御フローを示すフローチャートである。
【図11】図11は、文書水平位置検出制御フローを示すフローチャートである。
【発明を実施するための形態】
【0014】
以下に添付図面を参照して、この発明にかかる文書表示装置の実施の形態を詳細に説明する。
【0015】
(実施の形態)
図1は、本発明の一実施の形態にかかる文書表示装置100の構成を示すブロック図である。同図に示すように文書表示装置100のハードウェア構成としては、CPUおよびメモリ等(いずれも図示せず)を備える制御部110と、各種データを記憶するためのメモリやHDD(Hard Disk Drive)からなる記憶部120と、ユーザーによる操作入力を受け付ける入力部130と、文書等がその画面に表示される表示手段としての表示部140とを主に備えている。
【0016】
アプリケーション111は、文書を表示部140に表示したり、文書を表示部140に表示しながらその作成をしたりするためのソフトウェアであり、例えば、Microsoft社(R)のWord(R)や、Adobe(R)社のAcrobat Reader(R)等が該当する。ここで、文書画像とは、文字等も画像として表された文書画像や文書作成アプリケーションで作成された電子文書などの文書データも含むものとする。また、文書画像は、一般に、1以上のページからなる。
【0017】
本実施形態の核となる文書表示プログラムは、画像取得部112、表示制御部1 113、位置検出部114、表示制御部2 115を備えている。画像取得部112は、アプリケーション111が表示する文書画像から一部領域(いずれかの端部、特に、右端または下端)を除いた文書画像を取得する機能を有する。表示制御部1 113は、アプリケーション111によって表示部140に表示される文書画像(元の文書画像)に、画像取得部112が取得した文書画像を、元の文書画像が隠れるように重ねて表示する制御を行う。位置検出部114は、ドラッグスクロールがなされるときの文書表示位置を検出する。その際、位置検出制御テーブルを作成し記憶部120に保存する。位置検出部114による文書表示位置検出のための処理の詳細は、後述する。表示制御部2 115は、ドラッグスクロール終了後、表示制御部1 113によって重ねて表示された文書画像を消去し、ドラッグスクロール後のアプリケーション111による元の文書画像を表示部140に表示する制御を行う。
【0018】
このように構成される文書表示装置100の利用形態として、図2に示すような形態を挙げることができる。
【0019】
同図(A)に示すものは、マウス/タブレット、キーボード、ディスプレイを含む一般的なPC(パーソナルコンピュータ)を用いた形態である。この形態では、Officeソフト等の一般的な文書作成アプリケーションにより作成された文書上へ、修正内容を描画しそれを文書位置と関連付けて保存する。そして、文書修正時や描画時の文書表示状態に設定・修正内容を表示し参照することにより文書修正を行う。
【0020】
また、同図(B)に示すものは、ノートPCやタブレットPCの画面をプロジェクタ表示できるようにした形態である。この形態では、プロジェクタ表示時の発言者の音声や文書上へのメモ描画を文書位置と関連付け時系列に保存する。そして、会議不参加者による確認や、当事者による再確認等の目的により、任意のPC上で文書表示状態を同一にし再生する。
【0021】
また、同図(C)に示すものは、ネットワークを介して複数のPCを接続した形態である。この形態では、他のPCの表示状態を同一にすることにより、画面上で文書内容を共有し、会議を行う。
【0022】
ここで、図3を用いて、後述する文書位置検出の手法が効果を奏する文書表示の応用例について説明する。図3は、本実施形態における文書位置検出の手法が効果を奏する文書表示の応用例について説明する図である。
【0023】
任意のアプリケーションが表示する文書上へ全画面サイズの、背景が透けて見える透明ウィンドウを重ねて表示する。
【0024】
そして、文書上の任意の位置へ描画をする(図3:(2)部分)。このとき、表示されている文書の文書位置(DY:先頭ページ上端原点,DX:ページ左端原点)を検出し、描画位置(DX+X−WX,DY+Y−WY)を関連付けアノテーションデータ(上書きデータ)として保存する。なお、文書領域左上端座標(WX,WY)、文書領域幅(WW)、文書領域高さ(WH)はOSが提供するAPIにより取得される。また、描画位置はマウスから座標(X,Y)により取得される。
【0025】
次いで、描画領域と関連付けられる付箋ウィンドウを表示し、補足説明等を入力する。
【0026】
アノテーションが実行された文書の表示位置を自動検出し、表示文書へのアノテーション(図3:(4)部分)が存在する場合、描画した文書位置へ再描画する。
【0027】
描画上でのダブルクリックにより付箋ウィンドウ(図3:(5)部分)を表示し、補足説明文書を表示する。
【0028】
以上の手順により、元の文書を変更することなく,作成した文書の修正指示,マニュアル等の文書へ補助解説等を擬似的に書き込むことが可能となる。このような文書表示に対し、ドラッグスクロールを行う場合、以下のようにする。
【0029】
(ドラッグスクロールエミュレーション)
以下では、文書位置検出の際実行するドラッグスクロールエミュレーション方法を、MS Windows(登録商標)のAPIを用いたものを例に、図4を用いて説明する。ここでは、右端1ラインおよび下端1ラインをスクロール領域(実際にスクロール表示する領域)として実施する場合を説明する。
【0030】
(1)ドラッグスクロール操作(すなわち、マウス左ボタンON→スクロールバードラッグ→左ボタンOFFする操作)が連続して実行される場合、画面表示が大きく流れると、見ている者の気分を害することになる。これを避けるためドラッグスクロール実行前に、文書領域の右端垂直方向1ラインを除く領域の文書画像を取得し、同じ位置へ重ねて表示する(図4(A):(1)部分)。これにより、ドラッグスクロールエミュレーション時右端1ラインのみスクロール表示させるようにする。
【0031】
(2)次に、マウスカーソルを右端1ライン上(X0,Y0)へ移動させ,マウス左ボタンON操作をエミュレートする(図4(A):(2))。このとき、下記のAPIを使用する。
::SetCursor( X0,Y0 ); (移動API)
::mouse_event( MOUSEEVENT_LEFTDOWN,0,0,0,0 ); (左ボタンON API)
【0032】
(3)次に、(X0,Y0)から(X1,Y1)への左ボタンONドラッグ操作をエミュレートする(図4(A):(3))。このとき、下記のAPIを使用する。
::mouse_event( MOUSEEVENT_MOVE,0,X1−X0,0,0 ); (ドラッグAPI)
::mouse_event( MOUSEEVENT_LEFTUP,0,0,0,0 ); (左ボタンOFF API)
【0033】
(4)上記ドラッグスクロールエミュレーション完了後、(1)で重ねた表示画像を消去すると移動後の文書画像が表示される(図4(B):(4)部分)。このときの垂直スクロール長は、(Y0 − Y1)となる。
【0034】
(5)同様に、文書表示領域下端1ラインを除く領域の文書画像を取得し、同じ位置へ重ねて表示する。そして、上述と同様の手法で、(X2,Y2)から(X3,Y3)への左ボタンONドラッグ操作をエミュレートすることにより水平方向へスクロール表示する(図4(C):(5))。このときの水平スクロール長は、(X3 − X2)となる。
【0035】
(スクロールバー情報)
ここで、図5を用いてスクロールバー情報について説明する。図5は、スクロールバー情報を説明するための図である。
【0036】
(1)図5(A)において、OSが提供するAPIにより任意のアプリケーションプログラムにおける垂直スクロールバー(図5(A):(1))の垂直スクロールバー情報(vMax,vBox,vPage)が取得される。
【0037】
(2)図5(A)において、OSが提供するAPIにより任意のアプリケーションプログラムにおける水平スクロールバー(図5(A):(2))の水平スクロールバー情報(hMax,hBox,hPage)が取得される。
【0038】
図5(B)に、スクロールバー情報が示す値の関係を示す。具体的には、以下の表のとおりである。
【0039】
【表1】
【0040】
(文書位置情報取得手順)
次に、図6を用いて文書位置取得手順を説明する。図6は、文書位置取得手順を説明するための図である。
【0041】
表示文書の文書位置を検出するためには、先頭ページ上端まで移動して、表示位置までドラッグスクロールエミュレーションを繰り返す必要がある。しかし、文書がスクロールされる度にこれが実行されると検出に時間をとられ、実用性に欠けることになる。これを避けるために、アノテーション開始時文書位置を検出して、垂直位置情報テーブルを作成し,これを元に文書位置を算出する。文書水平位置はページ幅に依存し、ページ幅に変化あった時に検出して、水平位置情報テーブルを作成する。
【0042】
(1)OSが提供するAPIにより「vBox = 0」の位置へ移動する(図6(A):(1))。これにより先頭ページ上端(P1)が文書領域上端へ表示される。
【0043】
(2)文書先頭位置を文書垂直位置「0」として下方向ドラッグスクロールエミュレーションを繰り返し、ドラッグによるマウス移動量(Y1−Y0)(図6(A):(2))を文書垂直位置へ加算する。そして、この時の垂直スクロールバー情報「垂直スクロールボックス位置(vBox)」を取得し、下記の垂直位置情報テーブルを作成する。
【0044】
【表2】
【0045】
(3)そして、(vBox+vPage) > vMaxとなった時点(このとき最終ページまで移動し、下方向に文書がない状態)(図6(B):(3))で、上記処理を終了する。
【0046】
(4)同様に、文書水平位置検出のため、OSが提供するAPIにより「hBox = 0」の位置へ移動する。これによりページ左端が表示される。
【0047】
(5)文書左端位置を文書水平位置「0」として右方向ドラッグスクロールエミュレーションを繰り返し、ドラッグによるマウス移動量を文書水平位置へ加算する。そして、この時の水平スクロールバー情報「水平スクロールボックス位置(hBox)」を取得し、下記の水平位置情報テーブルを作成する。
【0048】
【表3】
【0049】
(6)そして、(hBox+hPage) > hMaxとなった時点で上記処理を終了する。
【0050】
(7)垂直スクロールボックス位置として「24」が取得される場合の表示領域上端の垂直文書位置は、以下により算出される。
【0051】
文書垂直位置 = (256−128)*(24−16)÷(32−16)
【0052】
(文書位置検出制御フロー)
次に、図7、図8を用いて、文書位置検出制御について説明する。図7は、文書位置検出制御フローを示すフローチャートである。また、図8は、位置検出制御テーブルの一例を示す図である。
【0053】
文書位置検出制御は、文書位置検出が効果を奏するアプリケーションプログラムの一機能として実行され、ここでは先頭ページ上端を文書垂直位置原点とし、ページ左端を文書水平位置原点とする文書表示領域左上端の文書位置を検出する。以下で作成される位置検出制御テーブル(図8)は全てのモジュールからアクセス可能な場所に作成される。
【0054】
文書位置検出開始時に1回「初期化制御」を実行し(このときステップS701の初期化判定でYesと判定される)、初期化された垂直位置情報テーブルおよび水平位置情報テーブルを作成する(ステップS702)。2回目以降の文書位置検出開始時には(このときステップS701の初期化判定でNoと判定される)、「初期化制御」はスキップし、次の「水平スクロールバー情報取得」へ移行する。
【0055】
「水平スクロールバー識別」(MS Windows(登録商標)の場合ウィンドウハンドル)によりOSが提供するAPIにより水平スクロールバー情報(hBox,hPage,hMax)を取得する(ステップS703)。
【0056】
位置検出制御テーブルの「水平スクロール幅」と取得値「hMax」が異なる場合(ステップS704でYes)、ページサイズに変更があったとして「文書水平位置検出制御」を実行し、水平位置情報テーブルを作成する(ステップS705)。一方、「水平スクロール幅」と取得値「hMax」が同一である場合(ステップS704でNo)、「文書水平位置検出制御」をスキップし、次の「文書水平位置算出」へ移行する。
【0057】
「文書水平位置算出」では、取得した「hBox」から水平位置情報テーブルを検索し、文書水平位置を算出する(文書位置情報取得手順(7)の垂直文書位置の算出と同様の手法による)(ステップS706)。
【0058】
次いで、「垂直スクロールバー識別」(Windows(登録商標)環境の場合ウィンドウハンドル)によりOSが提供するAPIにより垂直スクロールバー情報(vBox,vPage,vMax)を取得する(ステップS707)。
【0059】
そして、取得した「vBox」から垂直位置情報テーブルを検索し、文書垂直位置を算出する(文書位置情報取得手順(7)の垂直文書位置の算出の手法による)(ステップS708)。
【0060】
上記のようにして取得した垂直文書位置および水平文書位置を呼び出し元へ通知する。
【0061】
(初期化制御フロー)
【0062】
ここで、図9の文書位置検出制御フローにおける文書位置検出時の初期化制御を、図9、図3を用いて説明する。
【0063】
OSが提供するAPIにより文書を表示するアプリケーションプログラムのウィンドウを検索し、ウィンドウ左上端座標(WX,WY)、ウィンドウ幅(WW)、ウィンドウ高さ(WH)を検索し、面積(WW × WH)が最大となるウィンドウを文書領域ウィンドウとする(図3(A)(1)部分参照)(ステップS901)。
【0064】
そして、検出した文書領域ウィンドウ識別(MS Windows(登録商標)の場合:ウィンドウハンドル)を位置検出制御テーブルへ保存する(ステップS902)。
【0065】
次いで、OSが提供するAPIにより垂直スクロールバーを検索し、文書領域に最も近いものを文書の垂直スクロールバーとする(ステップS903)。
【0066】
そして、検出した垂直スクロールバー識別(MS Windows(登録商標)の場合ウィンドウハンドル)を位置検出制御テーブルへ保存する(ステップS904)。
【0067】
次いで、OSが提供するAPIにより水平スクロールバーを検索し、文書領域に最も近いものを文書の水平スクロールバーとする(ステップS905)。
【0068】
そして、検出した水平スクロールバー識別(MS Windows(登録商標)の場合ウィンドウハンドル)を位置検出制御テーブルへ保存する(ステップS906)。
【0069】
次いで、水平スクロールバー情報(hBox,hPage,hMax)を取得する(ステップS907)。
【0070】
そして、表示ページの水平スクロール幅(hMax)を位置情報制御テーブルへ保存する(ステップS908)。
【0071】
次に、下記の「文書垂直位置検出制御」を実行し、文書垂直位置と垂直スクロールボックス位置を関連付け垂直位置情報テーブル(表2)を作成する(ステップS909)。
【0072】
さらに、後述の「文書水平位置検出制御」を実行し、文書水平位置と水平スクロールボックス位置を関連付け水平位置情報テーブル(表3)を作成する(ステップS910)。
【0073】
(文書垂直位置検出制御)
次に、図10を用いて文書垂直位置検出制御について説明する。図10は、文書垂直位置検出制御フローを示すフローチャートである。ここでは、スクロール領域を文書領域右端として説明する。
【0074】
はじめに、文書領域識別から文書領域左上端(WX,WY)、幅(WW)、高さ(WH)を取得し、文書領域右端1ラインを除く領域の画像を取得する(図3(B)参照)(ステップS1001)。
【0075】
そして、取得した画像を元の文書上へ重ねて表示する(ステップS1002)。
【0076】
次に、垂直スクロールバー識別(Windows(登録商標)環境の場合ウィンドウハンドル)から垂直スクロールバー情報(vBox,vPage,vMax)を取得する(ステップS1003)。
【0077】
そして、現在の垂直方向表示位置を示す垂直スクロールボックス位置(vBox)を保存する(ステップS1004)。
【0078】
次いで、OSが提供するAPIにより垂直スクロールボックス位置「0」の位置に移動することにより文書先頭ページを表示する(ステップS1005)。
【0079】
そして、垂直位置数「0」、垂直スクロールボックス位置「0」および垂直文書位置「0」を垂直位置情報テーブルへ設定し(ステップS1006〜ステップS1008)、垂直位置情報として保存する(ステップS1009)。
【0080】
そして、垂直位置数に1加算する(ステップS1010)。
【0081】
次に、垂直スクロールバー識別(Windows(登録商標)環境の場合ウィンドウハンドル)から垂直スクロールバー情報(vBox,vPage,vMax)を取得する(ステップS1011)。
【0082】
このとき、下方向の文書がない場合(すなわち、vBox + vPage > vMax)(ステップS1012でNo)、ステップS1021へ移行する。
【0083】
一方、下方向の文書がある場合、OSが提供する下記のAPIによりカーソルをドラッグスクロール開始位置(X,Y)へ移動する(ステップS1013)。
【0084】
X = WX + WW − 1
Y = WY + WH − 1
::SetCursorPos( X,Y );
【0085】
次いで、OSが提供する下記のAPIによりマウス左ボタンONを文書アプリケーションへ通知する(ステップS1014)。
::mouse_event( MOUSEEVENT_LEFTDOWN,0,0,0,0 );
【0086】
そして、OSが提供する下記のAPIにより文書アプリケーションへ左ボタンONドラッグを通知する(ステップS1015)。なお、ドラッグ長は「256」程度とする(+値:上方向スクロール,−値:上方向スクロール)。
::mouse_event( MOUSEEVENT_MOVE,0,−ドラッグ長,0,0 );
【0087】
さらに、OSが提供する下記のAPIにより左ボタンOFFを文書アプリケーションへ通知する(ステップS1016)。
::mouse_event( MOUSEEVENT_LEFTUP,0,0,0,0 );
【0088】
そして、垂直文書位置へドラッグ長を加算する(ステップS1017)。
【0089】
次いで、ドラッグスクロール後の垂直スクロールバー情報(vBox,vPage,vMax)を取得する(ステップS1018)。
【0090】
そして、垂直スクロールボックス位置を「vBox」に設定する(ステップS1019)。
【0091】
文書垂直位置および垂直スクロールボックス位置を垂直位置情報として垂直位置情報テーブルの垂直位置数に相当する領域へ保存する(ステップS1020)。そして、ステップS1010〜S1020までの処理を、下方向の文書がなくなるまで繰り返す。
【0092】
下方向の文書がなくなると(ステップS1012でYes)、OSが提供するAPIにより垂直スクロールボックス位置をステップS1004で取得した位置へ移動し、文書を元の位置へ戻す(ステップS1021)。
【0093】
最後に、ステップS1002で重ねて表示した文書画像を消去し、垂直スクロールボックス位置の元の文書を表示する(ステップS1022)。
【0094】
(文書水平位置検出制御)
次に、図11を用いて文書水平位置検出制御について説明する。図11は、文書水平位置検出制御フローを示すフローチャートである。なお、ここでは、スクロール領域を文書領域下端として説明する。
【0095】
はじめに、文書領域識別から文書領域左上端(WX,WY)、幅(WW)、高さ(WH)を取得,文書領域下端1ラインを除く領域の画像を取得する(ステップS1101)。
【0096】
そして、取得画像を文書上へ重ねて表示する(ステップS1102)。
【0097】
次に、水平スクロールバー識別(Windows(登録商標)環境の場合ウィンドウハンドル)から水平スクロールバー情報(hBox,hPage,hMax)を取得する(ステップS1103)。
【0098】
そして、現在の水平方向表示位置を示す水平スクロールボックス位置(hBox)を保存する(ステップS1104)。
【0099】
次いで、OSが提供するAPIにより水平スクロールボックス位置「0」に移動することによりページ左端を表示する(ステップS1105)。
【0100】
そして、水平位置数「0」、水平スクロールボックス位置「0」および水平文書位置「0」を水平位置情報テーブルへ設定し(ステップS1106〜S1108)、水平位置情報として保存する(ステップS1109)。
【0101】
そして、平位置数に1加算する(ステップS1110)。
【0102】
次に、水平スクロールバー識別(Windows(登録商標)環境の場合ウィンドウハンドル)から水平スクロールバー情報(hBox,hPage,hMax)を取得する(ステップS1111)。
【0103】
このとき、右方向に文書がない場合(すなわち、hBox + hPage > hMax)、ステップS1121へ移行する。
【0104】
一方、右方向に文書がある場合、OSが提供する下記のAPIによりカーソルをドラッグスクロール開始位置(X,Y)へ移動する(ステップS1113)。
【0105】
X = WX + WW − 1
Y = WY + WH − 1
::SetCursorPos( X,Y );
【0106】
次いで、OSが提供するAPIによりマウス左ボタンONを文書アプリケーションへ通知する(ステップS1114)。
::mouse_event( MOUSEEVENT_LEFTDOWN,0,0,0,0 );
【0107】
次いで、OSが提供する下記のAPIにより文書アプリケーションへ左ボタンONドラッグを通知する(ステップS1115)。なお、ドラッグ長は「256」程度とする(+値:左方向スクロール,−値:右方向スクロール)。
::mouse_event( MOUSEEVENT_MOVE,−ドラッグ長,0,0,0 );
【0108】
さらに、OSが提供する下記のAPIにより左ボタンOFFを文書アプリケーションへ通知する(ステップS1116)。
::mouse_event( MOUSEEVENT_LEFTUP,0,0,0,0 );
【0109】
そして、水平文書位置へドラッグ長を加算する(ステップS1117)。
【0110】
次いで、ドラッグスクロール後の水平スクロールバー情報(hBox,hPage,hMax)を取得する(ステップS1118)。
【0111】
そして、水平スクロールボックス位置を「hBox」に設定する(ステップS1119)。
【0112】
次いで、文書水平位置および水平スクロールボックス位置を水平位置情報として水平位置情報テーブルの「水平位置数」に相当する領域へ保存する(ステップS1120)。そして、ステップS1110〜S1120までの処理を右方向の文書がなくなるまで繰り返す。
【0113】
右方向の文書がなくなると、OSが提供するAPIにより水平スクロールボックス位置をステップS1104で取得した位置へ移動し、文書を元の位置へ戻す(ステップS1121)。
【0114】
最後に、重ねて表示した文書画像を消去し、水平スクロールボックス位置の元の文書を表示する(ステップS1122)。
【0115】
本実施形態の文書表示装置100では、任意アプリケーションが表示する文書の文書位置を正確に検出することが可能となるので、ドラッグスクロールなどを伴う文書表示の際の文書位置検知の有効活用が可能となる。また、連続文書スクロール時に、画面表示が文書画像の一部(端部)であるスクロール領域を除いて固定されるので、見ている者の不快感を解消することができる。また、スクロール表示により文書位置が変更になっても遅延なく文書位置が検出できる。
【0116】
なお、本実施形態の文書表示装置は、図1に示したCPUなどの制御装置と、ROM(Read Only Memory)やRAMなどの記憶装置などからなる制御部と、HDD、CDドライブ装置などの外部記憶装置と、ディスプレイ装置などの表示装置と、キーボードやマウスなどの入力装置を備えており、通常のコンピュータを利用したハードウェア構成となっている。
【0117】
本実施形態の文書表装置で実行される文書表示プログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【0118】
また、本実施形態の文書表示装置で実行される文書表示プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施形態の文書表装置で実行される文書表示プログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【0119】
本実施形態の文書表示装置で実行される文書表示プログラムは、上述した各部(画像取得部、表示制御部1,2、位置検出部)を含むモジュール構成となっており、実際のハードウェアとしてはCPU(プロセッサ)が上記記憶媒体から文書表示プログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、画像取得部、表示制御部1,2、位置検出部が主記憶装置上に生成されるようになっている。
【符号の説明】
【0120】
100 文書表示装置
110 制御部
111 アプリケーション
112 画像取得部
113 表示制御部1
114 位置検出部
115 表示制御部2
120 記憶部
121 位置検出制御テーブル
130 入力部
140 表示部
【先行技術文献】
【特許文献】
【0121】
【特許文献1】特開2000−215000号公報
【特許文献2】特開2001−312264号公報
【特許文献3】特開2001−016384号公報
【技術分野】
【0001】
本発明は、文書画像のページ位置を検出する文書表示装置、文書表示方法およびそのプログラムならびに記憶媒体に関する。
【背景技術】
【0002】
文書表示プログラムが表示する文書上へ上書きすることにより、説明箇所の明示や補足説明等を行うことができるソフトウェアがある。これは文書画像上へ描画しているだけで、文書位置との関連付けはなく上書きデータのみ保存した場合、必ず上書き時と同一の文書位置で表示がされていないと再描画しても意味を持たず逆に誤解を招くことになる。従って、元の文書と上書きされたものの表示位置を正確に検出できる必要がある。
【0003】
従来より、ドラッグスクロール機能を有するアプリケーションにおいて、文書の表示位置を検出する技術が提案されている。例えば、特許文献1では、文書にページ情報を付加して印刷し、このページ情報を自動検知し、上書き部分とページの整合を図る技術が提案されている。また、特許文献2では、画像メモリ上に直接上書きデータを描画する方法が提案されている。また、特許文献3では、上書き時のPC画像と手書き情報を分離保存し、表示時に、これらを重ねて表示する技術が提案されている。この技術では、画像と上書きの位置関係は不明で、画像の表示位置と上書きを関連付けて管理する必要がある。
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、特許文献1の技術では、一度ページ情報を付加印刷し、さらにページ情報を識別する特別な装置が必要である。また、特許文献2の技術では、拡大・縮小表示時や、スクロール表示時も、上書き位置情報が保持され表示されるが、APLが一度表示変更をするとこの情報は消えてなくなる。また、APLにより同一画像が再表示されたことや、表示位置、表示倍率などの情報を持っておらず、上書きデータを位置合わせして表示することができない。また、特許文献3の技術では、画像と上書きの位置関係は不明で、画像の表示位置と上書きを関連付けて管理する必要がある。このように、様々な技術が提案されているが、上記の問題点がある。
【0005】
ところで、汎用OS(MS Windows(登録商標),MAC OS,Linux(登録商標)等)上で動作する文書プログラムが表示する文書を別のアノテーション(上書き)プログラムが文書をスクロール表示させる方法として、文書プログラムへOSが提供するAPI(アプリケーションプログラムインターフェース)により、スクロールメッセージ(例えばWindows(登録商標)環境では、SendMessage(WM_VSCROLL, SB_LINEUP, (LPARAM)hScroll))を送信することにより行うことが一般的である。しかし、スクロール長を取得するAPIは一般に提供されておらず、文書表示位置を知るため、文書をスクロール表示させた際のスクロール長を取得するには、特別な方法を用いる必要がある。
【0006】
一般的に、スクロール後に表示が残る部分は再描画が行われず、スクロール方向へ残る部分の画像移動が行われる。このとき直線も一緒に移動することになる。このため、文書上へ透明ウィンドウを表示し、この透明ウィンドウ上へ直線を描画してスクロール表示すると、直線も文書と同じ量だけ移動することになる。したがって、この手法では、移動後の直線の位置を検出することによりスクロール長を取得することができる。
【0007】
しかし、中には上記とは異なり表示領域全体を再描画するものもある。この場合直線は消去されスクロール長の取得ができない。この場合、画像中の特定文書画像を検出し、スクロール実行後にこの特定文書画像の移動量を検出することによりスクロール長の取得が可能である。
【0008】
しかし、一般の文書の中には、表示部分に何も描画されない文書構成が存在する。このような白紙となるページが存在し、スクロール時に表示領域全体の再描画が行われる場合、スクロール長を検出することができないことになる。従って、任意のアプリケーションに対して、文書の表示位置を正確にしる方法が必要とされた。また、スクロール時に画面表示が大きく流れると、見ている者の気分を害することになる、といった問題があった。
【0009】
本発明は、上記に鑑みてなされたものであって、ドラッグスクロール機能を有する任意のアプリケーションプログラムが表示する文書の文書位置を正確に検出できるようにするとともに、スクロール時に大きく流れる画面の表示状態を改善することを目的とする。
【課題を解決するための手段】
【0010】
上述した課題を解決し、目的を達成するために、本発明の文書表示装置は、文書上でドラッグスクロール操作をエミュレートすることにより汎用OS上で動作する任意の文書アプリケーションプログラムが表示する文書をスクロール表示する文書表示装置であって、元の文書画像の一部領域を除く文書画像を取得する画像取得手段と、取得した文書画像を元の文書画像に重ねて表示手段に表示する第1の表示制御手段と、前記表示手段に表示されたスクロールバーのドラッグによる移動量を基にスクロール時の元の文書画像の表示文書位置を検出する位置検出手段と、重ねて表示した前記文書画像を消去し、検出された前記表示文書位置の元の文書を前記表示手段に表示する第2の表示制御手段とを備えることを特徴とする。
【0011】
また、本発明の文書表示方法は、文書上でドラッグスクロール操作をエミュレートすることにより汎用OS上で動作する任意の文書アプリケーションプログラムが表示する文書をスクロール表示する文書表示方法であって、元の文書画像の一部領域を除く文書画像を取得する画像取得工程と、取得した文書画像を元の文書画像に重ねて表示手段に表示する第1の表示制御工程と、前記表示手段に表示されたスクロールバーのドラッグによる移動量を基にスクロール時の元の文書画像の表示文書位置を検出する位置検出工程と、重ねて表示した前記文書画像を消去し、検出された前記表示文書位置の元の文書を前記表示手段に表示する第2の表示制御工程とを含むことを特徴とする。
【発明の効果】
【0012】
本発明によれば、スクロールバーのドラッグによる移動量を基に表示文書位置を検出するので、ドラッグスクロール機能を有する任意のアプリケーションプログラムが表示する文書の文書位置を正確に検出できる。また、元の文書画像の一部領域を除く文書画像を元の画像に重ねて表示するので、スクロール時に大きく流れる画面の表示状態を改善することができる。
【図面の簡単な説明】
【0013】
【図1】図1は、本発明の一実施の形態にかかる文書表示装置の構成を示すブロック図である。
【図2】図2は、文書表示装置の利用形態を示す図である。
【図3】図3は、本実施形態における文書位置検出の手法が効果を奏する文書表示の応用例について説明する図である。
【図4】図4は、ドラッグスクロールエミュレーション方法を説明する図である。
【図5】図5は、スクロールバー情報を説明するための図である。
【図6】図6は、文書位置取得手順を説明するための図である。
【図7】図7は、文書位置検出制御フローを示すフローチャートである。
【図8】図8は、位置検出制御テーブルの一例を示す図である。
【図9】図9は、文書位置検出時の初期化制御フローを示すフローチャートである。
【図10】図10は、文書垂直位置検出制御フローを示すフローチャートである。
【図11】図11は、文書水平位置検出制御フローを示すフローチャートである。
【発明を実施するための形態】
【0014】
以下に添付図面を参照して、この発明にかかる文書表示装置の実施の形態を詳細に説明する。
【0015】
(実施の形態)
図1は、本発明の一実施の形態にかかる文書表示装置100の構成を示すブロック図である。同図に示すように文書表示装置100のハードウェア構成としては、CPUおよびメモリ等(いずれも図示せず)を備える制御部110と、各種データを記憶するためのメモリやHDD(Hard Disk Drive)からなる記憶部120と、ユーザーによる操作入力を受け付ける入力部130と、文書等がその画面に表示される表示手段としての表示部140とを主に備えている。
【0016】
アプリケーション111は、文書を表示部140に表示したり、文書を表示部140に表示しながらその作成をしたりするためのソフトウェアであり、例えば、Microsoft社(R)のWord(R)や、Adobe(R)社のAcrobat Reader(R)等が該当する。ここで、文書画像とは、文字等も画像として表された文書画像や文書作成アプリケーションで作成された電子文書などの文書データも含むものとする。また、文書画像は、一般に、1以上のページからなる。
【0017】
本実施形態の核となる文書表示プログラムは、画像取得部112、表示制御部1 113、位置検出部114、表示制御部2 115を備えている。画像取得部112は、アプリケーション111が表示する文書画像から一部領域(いずれかの端部、特に、右端または下端)を除いた文書画像を取得する機能を有する。表示制御部1 113は、アプリケーション111によって表示部140に表示される文書画像(元の文書画像)に、画像取得部112が取得した文書画像を、元の文書画像が隠れるように重ねて表示する制御を行う。位置検出部114は、ドラッグスクロールがなされるときの文書表示位置を検出する。その際、位置検出制御テーブルを作成し記憶部120に保存する。位置検出部114による文書表示位置検出のための処理の詳細は、後述する。表示制御部2 115は、ドラッグスクロール終了後、表示制御部1 113によって重ねて表示された文書画像を消去し、ドラッグスクロール後のアプリケーション111による元の文書画像を表示部140に表示する制御を行う。
【0018】
このように構成される文書表示装置100の利用形態として、図2に示すような形態を挙げることができる。
【0019】
同図(A)に示すものは、マウス/タブレット、キーボード、ディスプレイを含む一般的なPC(パーソナルコンピュータ)を用いた形態である。この形態では、Officeソフト等の一般的な文書作成アプリケーションにより作成された文書上へ、修正内容を描画しそれを文書位置と関連付けて保存する。そして、文書修正時や描画時の文書表示状態に設定・修正内容を表示し参照することにより文書修正を行う。
【0020】
また、同図(B)に示すものは、ノートPCやタブレットPCの画面をプロジェクタ表示できるようにした形態である。この形態では、プロジェクタ表示時の発言者の音声や文書上へのメモ描画を文書位置と関連付け時系列に保存する。そして、会議不参加者による確認や、当事者による再確認等の目的により、任意のPC上で文書表示状態を同一にし再生する。
【0021】
また、同図(C)に示すものは、ネットワークを介して複数のPCを接続した形態である。この形態では、他のPCの表示状態を同一にすることにより、画面上で文書内容を共有し、会議を行う。
【0022】
ここで、図3を用いて、後述する文書位置検出の手法が効果を奏する文書表示の応用例について説明する。図3は、本実施形態における文書位置検出の手法が効果を奏する文書表示の応用例について説明する図である。
【0023】
任意のアプリケーションが表示する文書上へ全画面サイズの、背景が透けて見える透明ウィンドウを重ねて表示する。
【0024】
そして、文書上の任意の位置へ描画をする(図3:(2)部分)。このとき、表示されている文書の文書位置(DY:先頭ページ上端原点,DX:ページ左端原点)を検出し、描画位置(DX+X−WX,DY+Y−WY)を関連付けアノテーションデータ(上書きデータ)として保存する。なお、文書領域左上端座標(WX,WY)、文書領域幅(WW)、文書領域高さ(WH)はOSが提供するAPIにより取得される。また、描画位置はマウスから座標(X,Y)により取得される。
【0025】
次いで、描画領域と関連付けられる付箋ウィンドウを表示し、補足説明等を入力する。
【0026】
アノテーションが実行された文書の表示位置を自動検出し、表示文書へのアノテーション(図3:(4)部分)が存在する場合、描画した文書位置へ再描画する。
【0027】
描画上でのダブルクリックにより付箋ウィンドウ(図3:(5)部分)を表示し、補足説明文書を表示する。
【0028】
以上の手順により、元の文書を変更することなく,作成した文書の修正指示,マニュアル等の文書へ補助解説等を擬似的に書き込むことが可能となる。このような文書表示に対し、ドラッグスクロールを行う場合、以下のようにする。
【0029】
(ドラッグスクロールエミュレーション)
以下では、文書位置検出の際実行するドラッグスクロールエミュレーション方法を、MS Windows(登録商標)のAPIを用いたものを例に、図4を用いて説明する。ここでは、右端1ラインおよび下端1ラインをスクロール領域(実際にスクロール表示する領域)として実施する場合を説明する。
【0030】
(1)ドラッグスクロール操作(すなわち、マウス左ボタンON→スクロールバードラッグ→左ボタンOFFする操作)が連続して実行される場合、画面表示が大きく流れると、見ている者の気分を害することになる。これを避けるためドラッグスクロール実行前に、文書領域の右端垂直方向1ラインを除く領域の文書画像を取得し、同じ位置へ重ねて表示する(図4(A):(1)部分)。これにより、ドラッグスクロールエミュレーション時右端1ラインのみスクロール表示させるようにする。
【0031】
(2)次に、マウスカーソルを右端1ライン上(X0,Y0)へ移動させ,マウス左ボタンON操作をエミュレートする(図4(A):(2))。このとき、下記のAPIを使用する。
::SetCursor( X0,Y0 ); (移動API)
::mouse_event( MOUSEEVENT_LEFTDOWN,0,0,0,0 ); (左ボタンON API)
【0032】
(3)次に、(X0,Y0)から(X1,Y1)への左ボタンONドラッグ操作をエミュレートする(図4(A):(3))。このとき、下記のAPIを使用する。
::mouse_event( MOUSEEVENT_MOVE,0,X1−X0,0,0 ); (ドラッグAPI)
::mouse_event( MOUSEEVENT_LEFTUP,0,0,0,0 ); (左ボタンOFF API)
【0033】
(4)上記ドラッグスクロールエミュレーション完了後、(1)で重ねた表示画像を消去すると移動後の文書画像が表示される(図4(B):(4)部分)。このときの垂直スクロール長は、(Y0 − Y1)となる。
【0034】
(5)同様に、文書表示領域下端1ラインを除く領域の文書画像を取得し、同じ位置へ重ねて表示する。そして、上述と同様の手法で、(X2,Y2)から(X3,Y3)への左ボタンONドラッグ操作をエミュレートすることにより水平方向へスクロール表示する(図4(C):(5))。このときの水平スクロール長は、(X3 − X2)となる。
【0035】
(スクロールバー情報)
ここで、図5を用いてスクロールバー情報について説明する。図5は、スクロールバー情報を説明するための図である。
【0036】
(1)図5(A)において、OSが提供するAPIにより任意のアプリケーションプログラムにおける垂直スクロールバー(図5(A):(1))の垂直スクロールバー情報(vMax,vBox,vPage)が取得される。
【0037】
(2)図5(A)において、OSが提供するAPIにより任意のアプリケーションプログラムにおける水平スクロールバー(図5(A):(2))の水平スクロールバー情報(hMax,hBox,hPage)が取得される。
【0038】
図5(B)に、スクロールバー情報が示す値の関係を示す。具体的には、以下の表のとおりである。
【0039】
【表1】
【0040】
(文書位置情報取得手順)
次に、図6を用いて文書位置取得手順を説明する。図6は、文書位置取得手順を説明するための図である。
【0041】
表示文書の文書位置を検出するためには、先頭ページ上端まで移動して、表示位置までドラッグスクロールエミュレーションを繰り返す必要がある。しかし、文書がスクロールされる度にこれが実行されると検出に時間をとられ、実用性に欠けることになる。これを避けるために、アノテーション開始時文書位置を検出して、垂直位置情報テーブルを作成し,これを元に文書位置を算出する。文書水平位置はページ幅に依存し、ページ幅に変化あった時に検出して、水平位置情報テーブルを作成する。
【0042】
(1)OSが提供するAPIにより「vBox = 0」の位置へ移動する(図6(A):(1))。これにより先頭ページ上端(P1)が文書領域上端へ表示される。
【0043】
(2)文書先頭位置を文書垂直位置「0」として下方向ドラッグスクロールエミュレーションを繰り返し、ドラッグによるマウス移動量(Y1−Y0)(図6(A):(2))を文書垂直位置へ加算する。そして、この時の垂直スクロールバー情報「垂直スクロールボックス位置(vBox)」を取得し、下記の垂直位置情報テーブルを作成する。
【0044】
【表2】
【0045】
(3)そして、(vBox+vPage) > vMaxとなった時点(このとき最終ページまで移動し、下方向に文書がない状態)(図6(B):(3))で、上記処理を終了する。
【0046】
(4)同様に、文書水平位置検出のため、OSが提供するAPIにより「hBox = 0」の位置へ移動する。これによりページ左端が表示される。
【0047】
(5)文書左端位置を文書水平位置「0」として右方向ドラッグスクロールエミュレーションを繰り返し、ドラッグによるマウス移動量を文書水平位置へ加算する。そして、この時の水平スクロールバー情報「水平スクロールボックス位置(hBox)」を取得し、下記の水平位置情報テーブルを作成する。
【0048】
【表3】
【0049】
(6)そして、(hBox+hPage) > hMaxとなった時点で上記処理を終了する。
【0050】
(7)垂直スクロールボックス位置として「24」が取得される場合の表示領域上端の垂直文書位置は、以下により算出される。
【0051】
文書垂直位置 = (256−128)*(24−16)÷(32−16)
【0052】
(文書位置検出制御フロー)
次に、図7、図8を用いて、文書位置検出制御について説明する。図7は、文書位置検出制御フローを示すフローチャートである。また、図8は、位置検出制御テーブルの一例を示す図である。
【0053】
文書位置検出制御は、文書位置検出が効果を奏するアプリケーションプログラムの一機能として実行され、ここでは先頭ページ上端を文書垂直位置原点とし、ページ左端を文書水平位置原点とする文書表示領域左上端の文書位置を検出する。以下で作成される位置検出制御テーブル(図8)は全てのモジュールからアクセス可能な場所に作成される。
【0054】
文書位置検出開始時に1回「初期化制御」を実行し(このときステップS701の初期化判定でYesと判定される)、初期化された垂直位置情報テーブルおよび水平位置情報テーブルを作成する(ステップS702)。2回目以降の文書位置検出開始時には(このときステップS701の初期化判定でNoと判定される)、「初期化制御」はスキップし、次の「水平スクロールバー情報取得」へ移行する。
【0055】
「水平スクロールバー識別」(MS Windows(登録商標)の場合ウィンドウハンドル)によりOSが提供するAPIにより水平スクロールバー情報(hBox,hPage,hMax)を取得する(ステップS703)。
【0056】
位置検出制御テーブルの「水平スクロール幅」と取得値「hMax」が異なる場合(ステップS704でYes)、ページサイズに変更があったとして「文書水平位置検出制御」を実行し、水平位置情報テーブルを作成する(ステップS705)。一方、「水平スクロール幅」と取得値「hMax」が同一である場合(ステップS704でNo)、「文書水平位置検出制御」をスキップし、次の「文書水平位置算出」へ移行する。
【0057】
「文書水平位置算出」では、取得した「hBox」から水平位置情報テーブルを検索し、文書水平位置を算出する(文書位置情報取得手順(7)の垂直文書位置の算出と同様の手法による)(ステップS706)。
【0058】
次いで、「垂直スクロールバー識別」(Windows(登録商標)環境の場合ウィンドウハンドル)によりOSが提供するAPIにより垂直スクロールバー情報(vBox,vPage,vMax)を取得する(ステップS707)。
【0059】
そして、取得した「vBox」から垂直位置情報テーブルを検索し、文書垂直位置を算出する(文書位置情報取得手順(7)の垂直文書位置の算出の手法による)(ステップS708)。
【0060】
上記のようにして取得した垂直文書位置および水平文書位置を呼び出し元へ通知する。
【0061】
(初期化制御フロー)
【0062】
ここで、図9の文書位置検出制御フローにおける文書位置検出時の初期化制御を、図9、図3を用いて説明する。
【0063】
OSが提供するAPIにより文書を表示するアプリケーションプログラムのウィンドウを検索し、ウィンドウ左上端座標(WX,WY)、ウィンドウ幅(WW)、ウィンドウ高さ(WH)を検索し、面積(WW × WH)が最大となるウィンドウを文書領域ウィンドウとする(図3(A)(1)部分参照)(ステップS901)。
【0064】
そして、検出した文書領域ウィンドウ識別(MS Windows(登録商標)の場合:ウィンドウハンドル)を位置検出制御テーブルへ保存する(ステップS902)。
【0065】
次いで、OSが提供するAPIにより垂直スクロールバーを検索し、文書領域に最も近いものを文書の垂直スクロールバーとする(ステップS903)。
【0066】
そして、検出した垂直スクロールバー識別(MS Windows(登録商標)の場合ウィンドウハンドル)を位置検出制御テーブルへ保存する(ステップS904)。
【0067】
次いで、OSが提供するAPIにより水平スクロールバーを検索し、文書領域に最も近いものを文書の水平スクロールバーとする(ステップS905)。
【0068】
そして、検出した水平スクロールバー識別(MS Windows(登録商標)の場合ウィンドウハンドル)を位置検出制御テーブルへ保存する(ステップS906)。
【0069】
次いで、水平スクロールバー情報(hBox,hPage,hMax)を取得する(ステップS907)。
【0070】
そして、表示ページの水平スクロール幅(hMax)を位置情報制御テーブルへ保存する(ステップS908)。
【0071】
次に、下記の「文書垂直位置検出制御」を実行し、文書垂直位置と垂直スクロールボックス位置を関連付け垂直位置情報テーブル(表2)を作成する(ステップS909)。
【0072】
さらに、後述の「文書水平位置検出制御」を実行し、文書水平位置と水平スクロールボックス位置を関連付け水平位置情報テーブル(表3)を作成する(ステップS910)。
【0073】
(文書垂直位置検出制御)
次に、図10を用いて文書垂直位置検出制御について説明する。図10は、文書垂直位置検出制御フローを示すフローチャートである。ここでは、スクロール領域を文書領域右端として説明する。
【0074】
はじめに、文書領域識別から文書領域左上端(WX,WY)、幅(WW)、高さ(WH)を取得し、文書領域右端1ラインを除く領域の画像を取得する(図3(B)参照)(ステップS1001)。
【0075】
そして、取得した画像を元の文書上へ重ねて表示する(ステップS1002)。
【0076】
次に、垂直スクロールバー識別(Windows(登録商標)環境の場合ウィンドウハンドル)から垂直スクロールバー情報(vBox,vPage,vMax)を取得する(ステップS1003)。
【0077】
そして、現在の垂直方向表示位置を示す垂直スクロールボックス位置(vBox)を保存する(ステップS1004)。
【0078】
次いで、OSが提供するAPIにより垂直スクロールボックス位置「0」の位置に移動することにより文書先頭ページを表示する(ステップS1005)。
【0079】
そして、垂直位置数「0」、垂直スクロールボックス位置「0」および垂直文書位置「0」を垂直位置情報テーブルへ設定し(ステップS1006〜ステップS1008)、垂直位置情報として保存する(ステップS1009)。
【0080】
そして、垂直位置数に1加算する(ステップS1010)。
【0081】
次に、垂直スクロールバー識別(Windows(登録商標)環境の場合ウィンドウハンドル)から垂直スクロールバー情報(vBox,vPage,vMax)を取得する(ステップS1011)。
【0082】
このとき、下方向の文書がない場合(すなわち、vBox + vPage > vMax)(ステップS1012でNo)、ステップS1021へ移行する。
【0083】
一方、下方向の文書がある場合、OSが提供する下記のAPIによりカーソルをドラッグスクロール開始位置(X,Y)へ移動する(ステップS1013)。
【0084】
X = WX + WW − 1
Y = WY + WH − 1
::SetCursorPos( X,Y );
【0085】
次いで、OSが提供する下記のAPIによりマウス左ボタンONを文書アプリケーションへ通知する(ステップS1014)。
::mouse_event( MOUSEEVENT_LEFTDOWN,0,0,0,0 );
【0086】
そして、OSが提供する下記のAPIにより文書アプリケーションへ左ボタンONドラッグを通知する(ステップS1015)。なお、ドラッグ長は「256」程度とする(+値:上方向スクロール,−値:上方向スクロール)。
::mouse_event( MOUSEEVENT_MOVE,0,−ドラッグ長,0,0 );
【0087】
さらに、OSが提供する下記のAPIにより左ボタンOFFを文書アプリケーションへ通知する(ステップS1016)。
::mouse_event( MOUSEEVENT_LEFTUP,0,0,0,0 );
【0088】
そして、垂直文書位置へドラッグ長を加算する(ステップS1017)。
【0089】
次いで、ドラッグスクロール後の垂直スクロールバー情報(vBox,vPage,vMax)を取得する(ステップS1018)。
【0090】
そして、垂直スクロールボックス位置を「vBox」に設定する(ステップS1019)。
【0091】
文書垂直位置および垂直スクロールボックス位置を垂直位置情報として垂直位置情報テーブルの垂直位置数に相当する領域へ保存する(ステップS1020)。そして、ステップS1010〜S1020までの処理を、下方向の文書がなくなるまで繰り返す。
【0092】
下方向の文書がなくなると(ステップS1012でYes)、OSが提供するAPIにより垂直スクロールボックス位置をステップS1004で取得した位置へ移動し、文書を元の位置へ戻す(ステップS1021)。
【0093】
最後に、ステップS1002で重ねて表示した文書画像を消去し、垂直スクロールボックス位置の元の文書を表示する(ステップS1022)。
【0094】
(文書水平位置検出制御)
次に、図11を用いて文書水平位置検出制御について説明する。図11は、文書水平位置検出制御フローを示すフローチャートである。なお、ここでは、スクロール領域を文書領域下端として説明する。
【0095】
はじめに、文書領域識別から文書領域左上端(WX,WY)、幅(WW)、高さ(WH)を取得,文書領域下端1ラインを除く領域の画像を取得する(ステップS1101)。
【0096】
そして、取得画像を文書上へ重ねて表示する(ステップS1102)。
【0097】
次に、水平スクロールバー識別(Windows(登録商標)環境の場合ウィンドウハンドル)から水平スクロールバー情報(hBox,hPage,hMax)を取得する(ステップS1103)。
【0098】
そして、現在の水平方向表示位置を示す水平スクロールボックス位置(hBox)を保存する(ステップS1104)。
【0099】
次いで、OSが提供するAPIにより水平スクロールボックス位置「0」に移動することによりページ左端を表示する(ステップS1105)。
【0100】
そして、水平位置数「0」、水平スクロールボックス位置「0」および水平文書位置「0」を水平位置情報テーブルへ設定し(ステップS1106〜S1108)、水平位置情報として保存する(ステップS1109)。
【0101】
そして、平位置数に1加算する(ステップS1110)。
【0102】
次に、水平スクロールバー識別(Windows(登録商標)環境の場合ウィンドウハンドル)から水平スクロールバー情報(hBox,hPage,hMax)を取得する(ステップS1111)。
【0103】
このとき、右方向に文書がない場合(すなわち、hBox + hPage > hMax)、ステップS1121へ移行する。
【0104】
一方、右方向に文書がある場合、OSが提供する下記のAPIによりカーソルをドラッグスクロール開始位置(X,Y)へ移動する(ステップS1113)。
【0105】
X = WX + WW − 1
Y = WY + WH − 1
::SetCursorPos( X,Y );
【0106】
次いで、OSが提供するAPIによりマウス左ボタンONを文書アプリケーションへ通知する(ステップS1114)。
::mouse_event( MOUSEEVENT_LEFTDOWN,0,0,0,0 );
【0107】
次いで、OSが提供する下記のAPIにより文書アプリケーションへ左ボタンONドラッグを通知する(ステップS1115)。なお、ドラッグ長は「256」程度とする(+値:左方向スクロール,−値:右方向スクロール)。
::mouse_event( MOUSEEVENT_MOVE,−ドラッグ長,0,0,0 );
【0108】
さらに、OSが提供する下記のAPIにより左ボタンOFFを文書アプリケーションへ通知する(ステップS1116)。
::mouse_event( MOUSEEVENT_LEFTUP,0,0,0,0 );
【0109】
そして、水平文書位置へドラッグ長を加算する(ステップS1117)。
【0110】
次いで、ドラッグスクロール後の水平スクロールバー情報(hBox,hPage,hMax)を取得する(ステップS1118)。
【0111】
そして、水平スクロールボックス位置を「hBox」に設定する(ステップS1119)。
【0112】
次いで、文書水平位置および水平スクロールボックス位置を水平位置情報として水平位置情報テーブルの「水平位置数」に相当する領域へ保存する(ステップS1120)。そして、ステップS1110〜S1120までの処理を右方向の文書がなくなるまで繰り返す。
【0113】
右方向の文書がなくなると、OSが提供するAPIにより水平スクロールボックス位置をステップS1104で取得した位置へ移動し、文書を元の位置へ戻す(ステップS1121)。
【0114】
最後に、重ねて表示した文書画像を消去し、水平スクロールボックス位置の元の文書を表示する(ステップS1122)。
【0115】
本実施形態の文書表示装置100では、任意アプリケーションが表示する文書の文書位置を正確に検出することが可能となるので、ドラッグスクロールなどを伴う文書表示の際の文書位置検知の有効活用が可能となる。また、連続文書スクロール時に、画面表示が文書画像の一部(端部)であるスクロール領域を除いて固定されるので、見ている者の不快感を解消することができる。また、スクロール表示により文書位置が変更になっても遅延なく文書位置が検出できる。
【0116】
なお、本実施形態の文書表示装置は、図1に示したCPUなどの制御装置と、ROM(Read Only Memory)やRAMなどの記憶装置などからなる制御部と、HDD、CDドライブ装置などの外部記憶装置と、ディスプレイ装置などの表示装置と、キーボードやマウスなどの入力装置を備えており、通常のコンピュータを利用したハードウェア構成となっている。
【0117】
本実施形態の文書表装置で実行される文書表示プログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【0118】
また、本実施形態の文書表示装置で実行される文書表示プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施形態の文書表装置で実行される文書表示プログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【0119】
本実施形態の文書表示装置で実行される文書表示プログラムは、上述した各部(画像取得部、表示制御部1,2、位置検出部)を含むモジュール構成となっており、実際のハードウェアとしてはCPU(プロセッサ)が上記記憶媒体から文書表示プログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、画像取得部、表示制御部1,2、位置検出部が主記憶装置上に生成されるようになっている。
【符号の説明】
【0120】
100 文書表示装置
110 制御部
111 アプリケーション
112 画像取得部
113 表示制御部1
114 位置検出部
115 表示制御部2
120 記憶部
121 位置検出制御テーブル
130 入力部
140 表示部
【先行技術文献】
【特許文献】
【0121】
【特許文献1】特開2000−215000号公報
【特許文献2】特開2001−312264号公報
【特許文献3】特開2001−016384号公報
【特許請求の範囲】
【請求項1】
文書上でドラッグスクロール操作をエミュレートすることにより汎用OS上で動作する任意の文書アプリケーションプログラムが表示する文書をスクロール表示する文書表示装置であって、
元の文書画像の一部領域を除く文書画像を取得する画像取得手段と、
取得した文書画像を元の文書画像に重ねて表示手段に表示する第1の表示制御手段と、
前記表示手段に表示されたスクロールバーのドラッグによる移動量を基にスクロール時の元の文書画像の表示文書位置を検出する位置検出手段と、
重ねて表示した前記文書画像を消去し、検出された前記表示文書位置の元の文書を前記表示手段に表示する第2の表示制御手段と
を備えることを特徴とする文書表示装置。
【請求項2】
前記位置検出手段は、文書先頭ページ上端を原点とする文書垂直位置と垂直スクロールボックス位置とを関連付け、該情報に基づいて表示文書の文書垂直位置を取得することを特徴とする請求項1に記載の文書表示装置。
【請求項3】
前記位置検出手段は、ページ左端を原点とする文書水平位置と水平スクロールボックス位置を関連付け、該情報に基づいて表示文書の文書水平位置を取得することを特徴とする請求項1または請求項2に記載の文書表示装置。
【請求項4】
前記画像取得手段が前記文書画像を取得する際除外する元の文書画像の一部領域とは、元の文書画像のいずれかの端部であることを特徴とする請求項1乃至請求項3のいずれか1項に記載の文書表示装置。
【請求項5】
文書上でドラッグスクロール操作をエミュレートすることにより汎用OS上で動作する任意の文書アプリケーションプログラムが表示する文書をスクロール表示する文書表示方法であって、
元の文書画像の一部領域を除く文書画像を取得する画像取得工程と、
取得した文書画像を元の文書画像に重ねて表示手段に表示する第1の表示制御工程と、
前記表示手段に表示されたスクロールバーのドラッグによる移動量を基にスクロール時の元の文書画像の表示文書位置を検出する位置検出工程と、
重ねて表示した前記文書画像を消去し、検出された前記表示文書位置の元の文書を前記表示手段に表示する第2の表示制御工程と
を含むことを特徴とする文書表示方法。
【請求項6】
請求項5に記載の文書表示方法をコンピュータに実行させるためのプログラム。
【請求項7】
請求項6に記載のプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
【請求項1】
文書上でドラッグスクロール操作をエミュレートすることにより汎用OS上で動作する任意の文書アプリケーションプログラムが表示する文書をスクロール表示する文書表示装置であって、
元の文書画像の一部領域を除く文書画像を取得する画像取得手段と、
取得した文書画像を元の文書画像に重ねて表示手段に表示する第1の表示制御手段と、
前記表示手段に表示されたスクロールバーのドラッグによる移動量を基にスクロール時の元の文書画像の表示文書位置を検出する位置検出手段と、
重ねて表示した前記文書画像を消去し、検出された前記表示文書位置の元の文書を前記表示手段に表示する第2の表示制御手段と
を備えることを特徴とする文書表示装置。
【請求項2】
前記位置検出手段は、文書先頭ページ上端を原点とする文書垂直位置と垂直スクロールボックス位置とを関連付け、該情報に基づいて表示文書の文書垂直位置を取得することを特徴とする請求項1に記載の文書表示装置。
【請求項3】
前記位置検出手段は、ページ左端を原点とする文書水平位置と水平スクロールボックス位置を関連付け、該情報に基づいて表示文書の文書水平位置を取得することを特徴とする請求項1または請求項2に記載の文書表示装置。
【請求項4】
前記画像取得手段が前記文書画像を取得する際除外する元の文書画像の一部領域とは、元の文書画像のいずれかの端部であることを特徴とする請求項1乃至請求項3のいずれか1項に記載の文書表示装置。
【請求項5】
文書上でドラッグスクロール操作をエミュレートすることにより汎用OS上で動作する任意の文書アプリケーションプログラムが表示する文書をスクロール表示する文書表示方法であって、
元の文書画像の一部領域を除く文書画像を取得する画像取得工程と、
取得した文書画像を元の文書画像に重ねて表示手段に表示する第1の表示制御工程と、
前記表示手段に表示されたスクロールバーのドラッグによる移動量を基にスクロール時の元の文書画像の表示文書位置を検出する位置検出工程と、
重ねて表示した前記文書画像を消去し、検出された前記表示文書位置の元の文書を前記表示手段に表示する第2の表示制御工程と
を含むことを特徴とする文書表示方法。
【請求項6】
請求項5に記載の文書表示方法をコンピュータに実行させるためのプログラム。
【請求項7】
請求項6に記載のプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2010−211727(P2010−211727A)
【公開日】平成22年9月24日(2010.9.24)
【国際特許分類】
【出願番号】特願2009−59696(P2009−59696)
【出願日】平成21年3月12日(2009.3.12)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】
【公開日】平成22年9月24日(2010.9.24)
【国際特許分類】
【出願日】平成21年3月12日(2009.3.12)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】
[ Back to top ]