以下、本発明の実施の形態を図面を参照して説明する。
まず用語と概念について説明する。
「表示」は、一般には情報を視覚的に知覚できるような形態で表示媒体上に出力することを言う。本発明では、表示媒体に対するレイアウトの「表示」だけに限らず、印刷記録媒体に対するレイアウトの「印刷」や、データ記録媒体に対するレイアウトの「ファイル出力」など、「出力」一般にも適用可能である。説明を分かり易くする為、以降の説明では、「表示」という言葉を用いることが多いが、「出力」の意も含まれているとする。
「表示要素」とは、文字や絵、写真、図形、動画像など、表示することのできるデータ要素を指す。表示する為には、通常、表示位置と表示サイズの他に、外形、表示表現形態などの属性を、表示要素は持っている必要があり、表示装置はそれらの取得手段を持っている必要がある。
但し、表示要素は、表示している状態のデータ要素だけを指すのではなく、主記憶や外部記憶、その他の機器上に、表示/出力に備えて記録/格納されているデータ要素も含む。何かの形に置き換えて出力するという意味では、「出力要素」と言い換えても良いが、上述した様に以降では分かり易くする為に「表示要素」と表現しておく。また、表示は2次元表示だけでなく、3次元表示も含む。
「表示表現形態」は、例えば文字ならば、文字の輪郭および内部を表示装置上の画素位置として計算し、その画素を設定された文字色で塗りつぶすことになる。表示でなくて、印刷の場合も画素で塗りつぶす行為が、紙に点を印刷することに相当するだけで、同様の方法で出力できる。PDFなどに表示要素のデータを出力する場合も、画素情報に展開して出力することもできるし、その手前の輪郭データなどとして出力することもできるし、PDFデータを後でPDF用アプリケーションが解釈する際に、画素情報などに展開できるだけの十分な情報量のデータ(例えば、フォント名と文字コード、位置、文字サイズ、文字色など)として出力することもできる。
「レイアウト」とは、表示要素が2次元または3次元の空間座標上に、位置とサイズ、外形の属性をもって配置されること、あるいは配置されたもののことを言う。位置やサイズは、通常は何らかの単位を使った値として表現される。例えば、画素の集まりからなるディスプレイに表示する場合は、(画素)ドットの単位で表現される。1つないし複数の表示要素がレイアウトされた結果、その表示要素に関して定まる空間座標上の位置のことを「レイアウト位置」、1つないし複数の表示要素がレイアウトされた結果、その表示要素に関して定まる空間座標上のサイズのことを「レイアウトサイズ」と以降では呼ぶ場合もある。
「文書」とは、一つまたは複数の表示要素がレイアウトされたもの、あるいはレイアウトしたり、レイアウトに基づいて表示要素を表示したりすることができるだけの情報量を持ったデータを指す。文書データは、表示要素のデータも含む場合と、レイアウト情報だけ持っていて表示要素のデータの一部を含む場合やあるいはまったく含まない場合もある。いずれにしろ、文書データを使って、レイアウトに従った表示や出力ができる。
図1は、ある文書がレイアウトされた例を示している。図1の110はレイアウト全体を指し、その中のそれぞれの文字や画像がレイアウトされた表示要素にあたる。実際に表示される際は、ここから表示範囲のレイアウトが切り出されて表示される。
文書の「指定範囲」とは、スクロールバーの場合で言えば、その文書中の表示したい範囲を指す。通常は、レイアウトされた文書中での位置とサイズ、外形で指定する。外形は矩形が一般的である。なお、「指定範囲」は、表示したい範囲に限らず、印刷したい範囲の場合もあり、また、PDFなどのデータフォーマット形式で主記憶上や外部記憶上に記録したい範囲の場合もある。
スクロールバーで指定範囲を指定する場合、スクロールボックスのサイズが指定範囲のサイズとなり、スクロールボックスの位置が指定範囲の位置となる。スクロールボックスのサイズはスクロールバーの直接操作では通常は変更できないので、位置を変えるだけになる。スクロールボックスのサイズを変更するには、表示倍率を変える、などの操作を別途行わなければならない。
スクロールボックスの位置の変更操作は、通常、マウスやキーボードなどを使って行われる。例えば、スクロールボックス上にマウスカーソルを移動させ、マウスの左ボタンを押す。そのボタンを押しつづけたまま、スクロールボックスを移動させたい位置までマウスを動かし、移動させたい位置でボタンを離す。スクロールボックスをいわゆる「ドラッグ&ドロップ」することになる。
また、スクロールバー上にスクロールボックスを移動させるスクロールボタン(矢印の表示をしていることが多い)などがある場合、そのスクロールボタンを押すことで、所定の方向に所定量だけスクロールボックスが移動する。スクロールボタンと同様の操作は、キーボード上の方向キーやスペースキーなどを押すことでもできる場合もある。
スクロールバーから指定範囲を得る場合、スクロールバー中でスクロールボックスを配置できる範囲のサイズ、その範囲中でのスクロールボックスの位置、スクロールボックスのサイズが得られれば、スクロールボックスによって指定される範囲が分かる。
スクロールバーやスクロールボックスの位置、サイズは、通常、画面表示のドット数で表される。例えば、スクロールバー中でスクロールボックスを配置できる範囲が250ドットで、スクロールボックスはその配置できる範囲の先頭から100ドットの所に位置し、そこから50ドット分のサイズを占める、などとなる。スクロールバーのどちらの端が先頭かは目的に応じて決めればよい。
スクロールバーを使って指定範囲を得る場合や、現在表示している範囲をスクロールバーで表示する場合、最終的には画面表示のドット数が単位となるのだが、スクロールバー全体の大きさも変わったりするので、以降では説明を汎用的にする為、スクロールボックスの位置、サイズは、ドット数ではなくて割合を使って主に説明する。割合は0.0〜1.0の値となる。
例えば、先の例では、スクロールボックスの位置の割合は、(100/250)=0.4となり、スクロールボックスのサイズの割合は、(50/250)=0.2となる。
指定範囲の指定の仕方としては、文書の全体縮小表示上でマウスドラッグなどにより矩形を指定することで行われることもある。この場合は位置とサイズを同時に指定することができる。
指定範囲の位置とサイズはどんな単位系で表現されても良いのだが、スクロールバーなどで指定される場合は、文書全体の中での割合として得られることが多い。
次に、文書の「分割」とは、レイアウト的な分割とデータ的な分割の2通り考えられるが、本発明ではデータ的な分割を対象とする。
レイアウト的な分割とは、表示要素がレイアウトされた状態で、座標空間上の範囲として分割することである。例えて言えば、印刷された紙を鋏で切るようなものである。
一方、データ的な分割は、バイトやビットなどのデジタル量として表現された文書データを、データ列として分割することである。これは人間が直接知覚することはできないが、表示要素やレイアウト的にきりの良い所(例えば、改行や段落の前後)でデータ列を分割した場合、その分割データの表示や出力はレイアウト的に分割されたように表現されるので、間接的に知覚できる。また、表示要素やレイアウト的にきりの良い所でデータ列を分割した方が後の処理がしやすい。
また、どちらの場合でも、表示要素やレイアウト的にきりの良い所で文書を分割した場合、レイアウト的な分割でもデータ的な分割でもどちらの形でも分割状態として表現できることが多い。
図2は、図1の文書レイアウトの文書データ(HTMLで記述されているとする)を分割した例である。分割文書データ50〜55のように、元の文書データがHTMLソースの文字単位で分割されている。また、レイアウト的に切りが良いように、改行(「<BR/>」)の前後などでできるだけ分割している。この分割の処理は、コンテンツデータが作成される時に行われるとし、コンテンツデータを読み込む段階では、どう分割されたかの情報は入手できるとする。
文書の「データサイズ」とは、データの規模を示す値で、一般には文書データをバイトやビットなどの符号化量(デジタル量)として表現、記録した時のサイズであるが、ここでは後に説明する「意味単位に基づく数」などもデータの規模を示すものとしてデータサイズに含まれるとする。
文書の「意味単位に基づく数」とは、人間に知覚できるような処理単位を意味単位として捉えた時の処理単位の数ということで、文書の場合で言えば、文字(要素)数や行数、改行数などが考えられる。
図26は、本発明の実施の一形態に係り、上述したスクロールバー表示制御方法を実施するスクロールバー表示制御装置を示す構成図である。
すなわち、スクロールバー表示制御装置の要部を、分割データサイズ取得手段1、指定範囲データサイズ取得手段2、割合取得手段3、スクロールバー表示手段4、指定範囲取得手段5、指定範囲レイアウト取得手段6、レイアウト表示手段7、分割文書レイアウト取得手段8に展開して示すことができる。
図27は、図26の各手段1〜8を具体的に実現する装置の構成例である。
CPU(central processing unit)20は、上記分割データサイズ取得手段1、指定範囲データサイズ取得手段2、割合取得手段3、スクロールバー表示手段4、指定範囲取得手段5、指定範囲レイアウト取得手段6、レイアウト表示手段7、分割文書レイアウト取得手段8として機能し、これら各手段1〜8による処理手順が記述されたプログラムを主記憶25、外部記憶26、通信デバイス29を経たネットワーク先などから得る。
また、CPU20は、CPU20を含めてバス30を通じ相互に接続されたグラフィックデバイス21、プリンタ23、スピーカー24、主記憶25、外部記憶26、マウス27、キーボード28、通信デバイス29とデータのやりとりを行ないながら、既に説明した各処理を行なう。
なお、データのやりとりは、バス30を介して行う場合に限らず、データを送受信できるものならば、通信ケーブルや無線通信装置などを介してもよい。また、各手段1〜8の実現手段としては、CPUに限らず、DSP( digital signal processor)や処理手順が回路として組み込まれているロジック回路などを用いることもできる。
主記憶25は、通常はDRAM(dynamic random access memory)やフラッシュメモリなどのメモリデバイスで構成される。外部記憶26は、HDD (hard disk drive)やPC(personal computer) カードなどの装脱着可能な記憶手段である。あるいはCPU20と通信デバイス29を介して有線または無線で接続された他のネットワーク機器に取り付けられたメモリデバイスなどを外部記憶26として用いることもできる。
ユーザの操作を入力する手段として、マウス27やキーボード28、マイク31などがある。この他にもボタンやタッチパネルなど、様々な手段が使用可能である。
グラフィックデバイス21は、通常はグラフィックカードなどによって実現され、VRAM(video random access memory)を有し、VRAM上のデータを表示信号に変換して、グラフィックデバイス21に接続されたモニタ22に送り、モニタ22は表示信号を画像として表示する。
プリンタ23は、バス30を介して得た印刷データを用紙に印刷する。スピーカ24は、バス30を介して得た音データを音として出力する。マウス27やキーボード28、マイク31は、ユーザーによる入力をバス30を介して他の手段に伝える。
通信デバイス29は、ネットワークカードなどにより実現され、無線や有線などによりネットワークを介して接続された他のネットワーク機器とデータをやりとりする。
図26の各手段1〜8について、各手段間のデータの授受という観点も含めて、その実現方法を説明する。
図26の分割データサイズ取得手段1としてのCPU20は、主記憶25、外部記憶26、通信デバイス29などから各分割文書のデータサイズを得る。各分割文書のデータサイズは、文書データ中に既に記述されていたり、文書データを解釈することで得られるとする。各分割文書のデータサイズの形式については、後述するが、例えば図6のような構造が考えられる。
図26の指定範囲データサイズ取得手段2としてのCPU20による処理は、主記憶25、外部記憶26、通信デバイス29などから処理プログラムを読み込み、指定範囲レイアウト取得手段6からデータ位置、サイズ情報を含んだ指定範囲のレイアウトデータを得て、処理プログラムに従い処理し、割合取得手段3に指定範囲のデータサイズを出力することで行なわれる。出力処理プログラムの中身は、フローチャートなどを元に後述する。
なお、CPUやDSPは処理手順をプログラムとして読み込むが、ロジック回路などのように処理手順が回路として組み込まれている場合はプログラムを読み込む必要はなくなる。
図26の割合取得手段3としてのCPU20による処理は、主記憶25、外部記憶26、通信デバイス29などから処理プログラムを読み込み、指定範囲データサイズ取得手段2から指定範囲のデータサイズを得て、分割データサイズ取得手段1から各分割文書のデータサイズを得て、処理プログラムに従い処理し、割合をスクロールバー表示手段4に渡すことで行なわれる。出力処理プログラムの中身は、フローチャートなどを元に後述する。
図26の指定範囲レイアウト取得手段6としてのCPU20による処理は、主記憶25、外部記憶26、通信デバイス29などから処理プログラムを読み込み、指定範囲取得手段5から指定範囲を得て、分割データサイズ取得手段1から各分割文書のデータサイズを得て、分割文書レイアウト取得手段8から分割文書のレイアウトを得て、処理プログラムに従い処理し、指定範囲のレイアウトやデータ位置、サイズなどを指定範囲データサイズ取得手段2やレイアウト表示手段7に渡すことで行なわれる。出力処理プログラムの中身は、フローチャートなどを元に後述する。
図26のレイアウト表示手段7としてのCPU20は、指定範囲の表示要素の出力表現形式を出力先(グラフィックデバイス21およびモニタ22、またはプリンタ23等)に出力する。出力表現形式は用語の説明で説明したように、例えばモニター22に表示する場合、グラフィックデバイス21のVRAM上に画素データとして書き込まれ、モニタ22に表示される。一方、例えば印刷の場合には、プリンタ24に印刷データとして送られ、プリンタ24 が印刷データを解釈して、用紙に印刷する。PDFならば、対応する位置に文字を配置するデータをPDFデータとして書き込み、主記憶25や外部記憶26、通信デバイス29などを通じて記録される。
図26の指定範囲取得手段5としてのCPU20は、指定範囲のデータを主記憶25、外部記憶26、通信デバイス29などから読み取られるプログラムから得たり、ユーザの操作によりマウス27、キーボード28、マイク31などから入力されたデータとして得たり、グラフィックデバイス21、主記憶25、外部記憶26、プリンタ23、通信デバイス29からデータとして得たりする。
例えばモニタ22上に表示されているウィンドウのサイズを指定範囲の大きさとするならば、CPU20は、主記憶25上のウィンドウサイズデータを参照したり、ウィンドウサイズ取得APIを呼び出すなどして指定範囲の大きさのデータを得る。また印刷ならば、プリンタ23、あるいは用紙設定が記録された主記憶25や外部記憶26上などの用紙設定データをCPU20が参照したり、用紙サイズ取得APIを呼び出すなどして用紙サイズを得ればよい。
また、例えばモニタ22上に表示されているスクロールバー上のスクロールボックスの位置を指定範囲の位置とするならば、CPU20は、主記憶25上のスクロールボックス位置を参照したり、スクロールバー情報取得APIを呼び出すなどして指定範囲の位置のデータを得る。
図26のスクロールバー表示手段4としてのCPU20は、割合取得手段3から得た指定範囲の割合に応じて、スクロールバーを出力先(グラフィックデバイス21およびモニタ22、またはプリンタ23等)に出力する。出力の実現方法については、レイアウト表示手段7と同様だが、出力する内容はスクロールバーである。
図26の分割文書レイアウト取得手段8としてのCPU20は、主記憶25、外部記憶26、通信デバイス29などから分割文書のレイアウトデータを得る。レイアウトデータは、WWWブラウザのレイアウト処理など他のプログラムなどによって既に作成されており、それらの他のプログラムや処理ルーチンを呼び出すことで得られるとする。それらのルーチンなどの内部では、既に作成したレイアウトがあればそれを使い、まだ作成していなかったり、表示設定が変わったりした場合は、作成し直される。レイアウトデータの形式については後述するが、図8のような構造が考えられる。
図28は、装置の外観例を示している。本体123上に表示手段122があるが、これはタブレット機能も兼ねており、ペン124によるタブレット操作が可能である。表示手段122中に、指定範囲のレイアウトが表示され、またその横にスクロールバー120が表示されている。スクロールバー120中にスクロールボックス121がある。
ペン124によって、スクロールバー120をタッチしたり、スクロールボックス121をドラッグしたりしてタブレット操作することで、指定範囲を指定できる。表示手段122は、図27では表示機能がグラフィックデバイス21、モニタ22など、ペンと合わせたタブレット機能がマウスやキーボードなどの入力操作手段に相当する。
図3は、本発明の実施の一形態に係るスクロールバー表示制御方法を示すフローチャート図である。
このフローチャート図では、ユーザーがスクロールバーを使う典型的な操作として、
(1)ユーザーが表示させたい範囲をスクロールボックスを用いて指定し、
(2)指定された範囲を表示し、
(3)表示された範囲に相当するスクロールボックスをスクロールバー上に表示し直す、までの全体の一連の処理を説明している。(1)、(2)は「スクロールバーによる制御」、(3)は「スクロールバーの表示」に主に相当する。
まず、これらの処理の概要を一通り説明する。各処理の詳細は後で述べる。
まず、ステップS10(以下、「ステップS」を「S」と略記する)で、指定範囲取得手段5が、前述したように指定範囲を得て、連結点P10(以下、「連結点P」を「P」と略記する)を経て、S11へ進む。
「指定範囲」については、言葉の説明で上述した通りである。例えば、指定範囲は、スクロールバーや全体縮小表示における範囲指定操作などを使って、ユーザーから指示されたとする。スクロールバーによる範囲指定操作は、先に「指定範囲」の定義に関連して説明した通りである。
スクロールバーから得られる範囲は、文書全体に対する割合として得られるとする。
指定範囲のサイズに関しては、スクロールボックスで指定されるサイズの割合でも良いのだが、本発明をスクロールバーと共に用いた場合、表示手段の表示画面のドットサイズを使う方がユーザーにとって自然だと思われるので、その値を使うとしておく。表示手段の表示画面のドットサイズは、この場合、表示されているコンテンツの部分のレイアウトサイズと常に同じである。
一般にスクロールボックスは、「表示されているコンテンツの部分のレイアウト」に対応し、その位置とサイズは、「表示されているコンテンツの部分のレイアウト」の全レイアウト上での位置とサイズで決まる。「表示されているコンテンツの部分のレイアウト」サイズも、全レイアウトのサイズも、コンテンツ全てをレイアウトすれば値は決まるので、スクロールボックスの位置をスクロールバー上でいくら移動させても、スクロールボックスのサイズ(およびスクロールバー上でのサイズの割合)は通常、固定である。
詳しくは後で説明するが、本実施例では、全レイアウトサイズを求めずに、「表示されているコンテンツの部分のレイアウト」の全レイアウト上での位置とサイズを、各種データサイズから推測する。推測なので、スクロールボックスのサイズ(およびそのサイズの割合)は、表示する範囲によって多少変わってくることがある。従って、以前のスクロールボックスのサイズ(およびそのサイズの割合)に相当する部分のコンテンツを表示させようとすると、そのレイアウトサイズは、表示手段の表示画面のドットサイズと一致しない場合が出てくる。その場合、表示に欠けができたり、表示しきれない部分が出てくるかもしれない。これはユーザーにとっては不自然な表示結果となってしまう。
従って、ここでは指定範囲を、スクロールボックスのサイズで指定するのではなく、表示手段の表示画面のドットサイズで指定するとした方が、ユーザーにとって違和感が少なく、望ましい。
なお、指定範囲の外形は矩形としておくが、矩形でなくても原理的にここで説明するのと同様の方法を適用できる。
S10は、先に説明した「(1)ユーザーがスクロールボックスで、表示する範囲を指定する」に相当する。
S11では、指定範囲レイアウト取得手段6が、S10で得た指定範囲のレイアウトを本発明の特徴的な方法に従って得て、P20を経て、S12へ進む。ここでの処理の詳細に関しては、後で図5を参照して説明する。
S12では、レイアウト表示手段7が、S11で得た指定範囲のレイアウトを表示して、P30を経て、S13へ進む。
指定範囲のレイアウトの取得に関しては、後で図11などの説明で出てくるが、レイアウトの上限と下限の表示要素が得られるので、その間の表示要素が指定範囲のレイアウトの表示要素となる。
表示の仕方は、本発明の主旨ではないので詳しくは説明しないが、レイアウトされた文書中での各表示要素の位置とサイズ、外形、表示倍率などに従い、各表示要素の表示表現形態を表示する。表示要素の位置はレイアウト座標系での値なので、表示する際は、通常は表示手段原点からの表示座標系に変換して表示する。
図4は、図1の文書全体のレイアウト110から表示範囲(指定範囲)111の表示要素を抜き出してきて、表示手段122に表示した例である。レイアウト110中の表示要素はレイアウト110の左上隅を原点とし、右方向を+X方向、下方向を+Y方向とする座標系で表されるとする。表示範囲111の開始位置の座標値を各表示要素の位置の座標値から引算することで、表示手段122の左上を原点とした表示座標系に変換され、表示手段122の範囲に収まったものだけが表示される。
S11、S12は、先に説明した「(2)指定された範囲を表示する」処理に相当する。
S13では、割合取得手段3が、指定範囲に基づく表示範囲の全文書内の位置と割合を本発明の特徴的な方法に従って計算して、P40を経て、S14へ進む。ここでの処理の詳細に関しては、後で図14、図19を参照して説明する。
なお、S10の説明で述べた通り、指定範囲の位置は全文書内の割合で指定されるが、サイズは表示サイズ(例えばドットサイズ)で指定される。もし、サイズも全文書内割合で指定するのならば、S13では特に計算する必要はなく、割合で指定された位置とサイズをそのまま使えば良い。
S14では、スクロールバー表示手段4が、S13で得た全文書内の位置とサイズを得て、スクロールバー120を表示して、処理を終了する。
図4では、スクロールバー120上に表示範囲111の位置と大きさを示すスクロールボックス121が黒く示されている。
S13、S14は、先に説明した「(3)表示された範囲に相当するスクロールボックスをスクロールバー上に表示する」処理に相当する。
以上の処理によって、先に説明した番号に則して言えば、(1)ユーザーがスクロールバーなどを操作して指定した指定範囲について、(2)指定範囲に相当する部分のレイアウトを表示し、さらに(3)指定範囲に応じたスクロールバーが表示されることになる。
一般に、コンテンツを見ようとした場合、(1)から(3)の操作を繰り返して様々な場所を見ることになる。(1)のスクロールバーの代わりに、キーボードやマウスなどを使って次に表示する範囲を指定する場合もある。例えば、WWWブラウザではスペースキーを押すと、次の1ページ分が表示指定されたことになる。なお、この繰り返し処理はコンテンツを見るだけに限らず、編集などの操作、処理が間に挟まれることもある。
図5は、本発明の表示制御方法の特徴である図3のS11の処理の詳細を示すフローチャート図である。
処理を具体的に説明する為、図3のS10で得られた指定範囲の位置が0.5、サイズが指定位置を中心に上下100ドット(合わせて200ドット)としておく。
まず、P10を経てS20へ進み、指定範囲レイアウト取得手段6が、分割データサイズ取得手段1から各分割文書のデータサイズを得て、S21へ進む。
各分割文書は予め作成しておく。すなわち、コンテンツをどう分割するかを予め決め、どう分割したかの情報をデータとして記録しておく。例えば後で説明する図6の「データサイズ」の項の値の配列のように記録しておけばよい。これはコンテンツデータと別にファイルなどとして記録メディア上などに記録してもよいし、コンテンツデータの一部としてヘッダ情報などの形で記録しておいてもよい。
各分割文書のデータサイズは、先に説明した「どう分割したかの情報」などから得られる。各分割文書のレイアウトサイズは、可変レイアウトの場合、文字の大きさの設定などによって変わるが、各分割文書のデータサイズは、可変レイアウトであっても変わることはない。本発明でスクロールバーによる制御や表示を高速に行うことが可能となる理由の一つは、データサイズを予め求めておくことができるためである。
図6は、取得した各分割文書のデータサイズの例である。各分割文書のデータサイズ70〜75は値の配列として得られるとする。その下にデータサイズ70〜75の和「604」も示してある。データサイズ比80〜85は、データサイズ70〜75の和を1.00とした時の比率である。データサイズ70〜75の総和は604なので、例えばデータサイズ比80は、126/604=0.21(以降、説明の為、小数点第3位を四捨五入)で得られる。累積データサイズ比90〜96は、データサイズ比80〜85の累積値である(なお、累積誤差を少なくする為、図6の値は、四捨五入された80〜85の和ではなく、データサイズの和から比率を計算している。そのため、データサイズ比の和と一致しない部分が一部ある)。最初の0.00と最後の1.00も含めてある。データサイズ70〜75、データサイズ比80〜85、累積データサイズ比90〜96は0から始まるインデックス番号によってアクセス可能とする。
なお、各分割文書の分割の仕方について簡単に説明しておく。分割の仕方に決まりはないが、表示上、区切りの良い意味単位で分割する方が一般によい。区切りの良い意味単位とは、文字単位などは当然として、ここでは「改行」や「段落」などのもう少し大きな意味単位である。
例えば、図2の例では、改行となる「<BR/>」や「<P/>」の後で分割している所が多い。これは後で説明するようにレイアウトを分割文書単位で行う場合などに、各分割文書のレイアウトが改行などの区切りの良い単位でまとまっていた方が、それぞれの分割文書で独立してレイアウトすることができる利点が出てくるからである。
例えば、図1のレイアウト結果を見ると分かるように、図2の分割文書データ50のレイアウト結果は「<BR/>」が最後にあるので「視野が狭い」の行で終わり、分割文書データ51のレイアウト結果は次の行の行頭から「 人間の視野は」で始まる。行が分かれているので、表示する時は単にそれぞれの行を並べて表示すればよい。従って、分割文書データ51、分割文書データ50の順でレイアウトを作成しても問題ない。
もし区切りの良く無い部分で分割してしまうと、その部分が連続されるように同じ行にレイアウトしないといけない。例えば、図2の分割文書データ54のレイアウト結果は「機能は」で終わるが、「<BR/>」や「<P/>」で終わっていないので、ここでは改行されない。従って、続く分割文書データ55のレイアウト結果は、「機能は」の行に続けて、「人間の視野と」となる。この結果、分割文書データ54と分割文書データ55とで、レイアウト結果の行が同一行にだぶることになる。
このため、分割文書データ54、分割文書データ55の順にレイアウトするのならばよいが、分割文書データ55、分割文書データ54の順に独立してレイアウトしてしまうと、「機能は」の部分が行末にレイアウトされるとは限らず、行の途中にレイアウトされてしまうと、その後に妙な空白部分が続いてしまう。そして次の行の行頭は「人間の視野と」となってしまう。これでは文章としてのつながりがなくなってしまう。
それを回避する為には、例えば、分割文書データ55のレイアウトを一旦破棄して、分割文書データ54、分割文書データ55の順に作成し直すなどの処置が必要となる。これは非常に無駄な処理となってしまう。
従って、文書の分割は、分割文書データ50〜53のように、改行などの区切りの良い部分で行うようにした方がよい。
また、各分割文書のデータサイズやレイアウトサイズの大きさは、大きすぎても小さすぎてもよくない。レイアウトを作成する単位を分割文書とすると、あまり大きな分割文書はレイアウトにかかる時間が大きくなってしまう。逆に小さすぎると、分割文書のデータサイズを記録する部分が多くなり、(レイアウトにかかる時間に比べれば通常たいしたことはないが)割合の計算も多少増えてしまう。
また、あまり細かくしようとしても、改行などのきりの良い所で分割できるとは限らない。分割量の1つの基準としては、標準的な表示設定で1画面に表示されるコンテンツ量が考えられる。例えば、この0.5〜2倍程度に収まる程度にするとよい。
また、各分割文書の分割は、各分割文書のデータサイズやレイアウトサイズに大きな差が出ないようにした方が一般によい。これはレイアウトにかかる時間に大きな差が出てしまうのを防ぐ意味もある。
なお、コンテンツデータが圧縮や暗号化されている場合、各分割文書単位で展開や復号できるようにしておくと、分割文書単位でのレイアウトにかかる時間を小さくすることができるようになる利点が出てくる。
S21では、指定範囲レイアウト取得手段6が、指定位置の分割文書を同定して、S22へ進む。
指定位置を図6の累積データサイズ比90〜96と比較して、指定位置がどの区間に入るかを調べれば、指定位置がどの分割文書内に位置するかが得られる。例では指定位置が0.5なので、累積データサイズ比92の値0.34と93の値0.53の間に位置することが分かる。この区間はデータサイズ比82、データサイズ72に相当するので、指定範囲の分割文書には、少なくとも3番目の分割文書データ52が含まれることが分かる。
図7は、この状態を示したもので、分割文書データ50〜55は、データサイズ70〜75に概ね比例した高さで表現されている。指定中心位置は0.5であり、これが3番目の分割文書データ52内に含まれることが示されている。
S22では、分割文書レイアウト取得手段8が、指定位置が含まれる分割文書のレイアウトを得て、P11を経てS23へ進む。指定位置が含まれる分割文書については、指定範囲レイアウト取得手段6から指定される。
この例では、分割文書レイアウト取得手段8が、分割文書データ52のレイアウトを得ることになる。もし、分割文書データ52のレイアウトデータが主記憶25や外部記憶26、他の機器上などにキャッシュデータなどとして蓄積されているならそれをそのまま使えばよい。もし蓄積されていないのならば、分割文書データ52を読み込んで、レイアウトを作成すればよい。
図8は、レイアウトされた表示要素データのデータ構造例である。ここでは、文書データがHTML形式で、
「<HTML>あいう<BR/><IMG SRC=“img.png”/><BR/>え</HTML>」
と記述されている時に、WWWブラウザなどによってレイアウトされた結果得られたレイアウトデータ例を示している。なお、レイアウト方法自体は、本発明の主旨ではないので、詳細は省略する。WWWブラウザでなくても、レイアウト処理によって図8のようなデータが得られるのならば、ワードプロセッサでも何でも良い。
表示要素40〜44の各行は図8の様に、データ開始位置、データサイズ、レイアウトX位置、レイアウトY位置、レイアウト幅、レイアウト高さ、表示データの情報を持っているとする。
データ開始位置は、この表示要素が文書データ中に記述される最初のデータ位置を意味する。最初の表示要素40は、HTMLデータの最初の「あ」の文字に相当し、7バイト目なので0から始まるとしてデータ開始位置を「6」としている。また、全角文字が2バイトで表現されているとすると、データサイズは「2」、レイアウトX,Y位置は原点とすると「0」、大きさは文字サイズが14ドットとして「14」、表示データとして文字「あ」の文字コードとなる。実際はこの表示データが「文字」であることを何らかの識別子で示す必要があるが、表示要素の表示の仕方自体は本発明の主旨ではないので、ここでは省略して「あ」という文字が表示できるだけの情報を表しているとする。
同様に、表示要素41〜44も図8のようになる。表示要素43は「<IMG…/>」で表される画像要素の例で、画像の大きさ(レイアウトサイズ)は50ドット×100ドットで、表示データは画像ファイル名「img.png」となっている。
S23では、指定範囲レイアウト取得手段6が、指定範囲で指定されたサイズだけのレイアウトが確保できたかどうかを判断して、必要なら周囲の分割文書データのレイアウトを分割文書レイアウト取得手段8から取得して、P15を経て、S24へ進む。ここでの処理の詳細に関しては、後で図9を参照して説明する。
S24では、指定範囲レイアウト取得手段6が、指定範囲の表示要素を取得して、P20へ抜ける。ここでの処理の詳細に関しては、後で図11を参照して説明する。
以上の処理によって、図3のS11の処理が行われ、指定範囲のレイアウトが得られる。
図9は、図5のS23の処理の詳細を示すフローチャート図である。
なお、この例では上下方向のスクロールバーを想定していて、下のレイアウトほど先の文書内容になっているとしておく。その為、以降の説明では、先の内容のレイアウトに関して、「下」という表現をすることにし、指定範囲やレイアウトに関しても、主に上下方向(図8のレイアウトY位置)に関して説明する。
P11からS30へ進み、指定範囲レイアウト取得手段6が、現在、分割文書レイアウト取得手段8から取得済みのレイアウトに関して、指定範囲と比べて上の部分のレイアウトが足りないかどうかを判断し、足りない場合はP12を経てS31へ進み、足りている場合はP13を経てS32へ進む。
図10は、この判断をする為に使うデータの例であり、主記憶25、外部記憶26、または他の機器上に蓄積されている。開始分割文書インデックス100は、既にレイアウトを取得している分割文書データの最初のインデックス番号である。同様に終了分割文書インデックス101は、既にレイアウトを取得している分割文書データの最後のインデックス番号である。ここでは3番目の分割文書データしかレイアウトしておらず、また1番目の分割文書データのインデックス番号を前述のように0とするので、どちらも「2」となっている。
指定位置データ位置102は、指定位置が文書のデータサイズでどの位置を示しているかを表す。これは全データサイズと指定位置(割合)を掛ければ算出される。算出した値をそのまま使っても良いし、その値を含むあるいは最も近いデータ範囲を持つ表示要素のデータ開始位置(あるいはそれプラス(表示要素データサイズ/2))を探して、その値を使っても良い。
図6の例では、中心位置(指定位置)0.5は、
(全分割文書データサイズの和)×(指定位置割合)
=604×0.5=302
より、302バイト目となる。図2の分割文書データ52では、「レンジ」の「ジ」に当たる。図1の表示範囲111で、この指定位置を中心の○印で表している。
上側レイアウトサイズ103、下側レイアウトサイズ104は、指定位置データ位置102(を含む行の中心)の上下にどれだけの大きさ、レイアウトされているかを意味する。ここでは図10の開始分割文書インデックス、終了分割文書インデックスが2なので、図2の分割文書52だけがレイアウトされている状態である。全文書レイアウトを示す図1より、分割文書52のレイアウトは「 人間は」(先頭は全角スペース)から「低い」までの5行分である。1行の高さを16ドット(文字14ドット+行間2ドット)として、「ジ」の行中心で分けて考えると、上に
(4.5行分のレイアウト)=16×4.5=72ドット
下に
(0.5行分のレイアウト)=16×0.5=8ドット
となっている。なお、「4.5」、「0.5」は、「指定位置データ位置102を含む行の中心」で処理している為、その行を上下に0.5行分ずつ分けた為である。
なお図10の夫々の値は、各分割文書のレイアウトを得る度に更新しておくとする。
この例では、指定範囲の大きさが指定位置を中心に上下100ドットなので、上側レイアウトサイズ103の72ドットと比べると足りないので、指定範囲レイアウト取得手段6は上側レイアウトが足りないと判断する。
S31では、指定範囲レイアウト取得手段6が、上の分割文書データ51のレイアウトを分割文書レイアウト取得手段8から取得して、P13を経て、S32へ進む。ここでの処理の詳細に関しては、後で図12を参照して説明する。
S32では、指定範囲レイアウト取得手段6が、現在取得したレイアウトに関して、指定範囲と比べて下の部分のレイアウトが足りないかどうかを判断し、足りない場合はS33へ進み、足りている場合はP15へ抜ける。ここでの処理は、S30の上側レイアウトに関する処理と同様なので、説明は省略する。
S33では、指定範囲レイアウト取得手段6が、下の分割文書データのレイアウトを分割文書レイアウト取得手段8から取得して、P15へ抜ける。ここでの処理も、S31の上側レイアウトに関する処理と同様なので、説明は省略する。
以上の処理によって、図5のS23の処理が行われ、指定範囲のレイアウトが得られる。
図12は、図9のS31の処理の詳細を示すフローチャート図である。
P12からS40へ進み、指定範囲レイアウト取得手段6が、上側に不足するレイアウト量を求めて、S41へ進む。
これは、指定範囲の上側サイズから図10の上側レイアウトサイズ103を引算すればよい。図10の場合、100−72=28ドットという値が得られる。
S41では、指定範囲レイアウト取得手段6が、S40で得られた上側の不足レイアウト量が0かどうかを判断し、0の場合はP13へ抜け、0で無い場合はS42へ進む。
S42では、指定範囲レイアウト取得手段6が、上の分割文書があるかどうかを判断し、ある場合はS43へ進み、無い場合はP13へ抜ける。
上の分割文書があるかどうかは、図10の開始分割文書インデックス100が0でないかどうかを見れば良い。なお、先にS33の説明で、上側レイアウトに関する処理と同様と説明したが、S42での処理のみ、下の分割文書が存在するかどうかの判断が、終了分割文書インデックス101が(分割文書数−1)でないかどうかによる所が異なる。
S43では、指定範囲レイアウト取得手段6が、上の分割文書のレイアウトを分割文書レイアウト取得手段8から取得して、図10のデータを更新し、S40へ進む。
以上の処理によって、図9のS31の処理が行われる。
この例では、分割文書データ51をさらに読み込むことで、図1より、
(3行分のレイアウト)=16×3=48ドット
が上に追加されるので、
(上側レイアウトサイズ103)=72+48=120ドット > 指定100ドット
となるので、上のレイアウトの読み込みはこれで十分である。この場合、開始分割文書インデックス100は1に更新されると共に、上側レイアウトサイズ103は、72から上限の100に更新される。
下は、分割文書データ53を読み込むことで
(8行分のレイアウト)=16×8=128ドット
が下に追加されるので、
(下側レイアウトサイズ104)=8+128=136ドット > 指定100ドット
となるので、下のレイアウトの読み込みもこれで十分である。この場合、終了分割文書インデックス101は3に更新されると共に、下側レイアウトサイズ104は、8から下限の100に更新される。
図11は、図5のS24の処理の詳細を示すフローチャート図である。
P15からS70へ進み、指定範囲レイアウト取得手段6が、上限の表示要素を取得して、P16を経て、S71へ進む。ここでの処理の詳細に関しては、後で図13を参照して説明する。
S71では、同手段6が、下限の表示要素を取得して、P20へ抜ける。ここでの処理は、S70の処理と同様なので、説明は省略する。
以上の処理によって、図5のS24の処理が行われる。
図13は、図11のS70の処理の詳細を示すフローチャート図である。
P15からS80へ進み、指定範囲レイアウト取得手段6が、指定位置の表示要素をカレント要素に設定して、S81へ進む。指定位置の表示要素は、図10の指定位置データ位置102を含む、あるいは最も近いデータ範囲を持つ表示要素を探せば良い。探すには指定位置を含む分割文書のレイアウトデータを順に見ていけば良い。
S81では、同手段6が、カレント要素の前の表示要素を得て、S82へ進む。
S82では、同手段6が、指定位置の表示要素からS81で得た表示要素までのレイアウトサイズが、図10の上側レイアウトサイズ103を超えたかどうかを判断し、超えた場合はS83へ進み、超えない場合はS84へ進む。指定位置の表示要素からS81で得た表示要素までのレイアウトサイズを求めるには、カレント要素のレイアウトY位置(図8)と、S81で得たカレント要素の前の表示要素のレイアウトY位置の差分を取れば良い。
S83では、同手段6が、カレント要素を上限の表示要素として、P16へ抜ける。
S84では、同手段6が、上の表示要素をカレント要素として、S81へ戻る。
以上の処理によって、図11のS70の処理が行われる。
図14は、本発明の表示制御方法の特徴である図3のS13の処理の詳細を示すフローチャート図である。
P30からS50へ進み、指定範囲データサイズ取得手段2が、指定範囲のデータサイズSDを取得し、割合取得手段3に与えて、S51へ進む。
図3のS11で指定範囲の表示要素を取得したが、指定範囲のデータサイズはその時に同時に得ることができる。図5、図11、図13などを使って説明した通り、指定範囲の最初と最後の表示要素を得ることができる。表示要素は図8の通り、データ開始位置やデータサイズの属性を持っているので、最後の表示要素の(データ開始位置+データサイズ)から最初の表示要素のデータ開始位置を引けば、指定範囲のデータサイズを得ることができる。
例として、ここでは指定範囲の位置として、図1の上から12行目の「ジが低い」の行(以下、指定行と呼ぶ)を中心として上下100ドットなので、上下6.25行分(=100/16)の指定範囲のデータサイズを求める。「ジが低い」の指定行の中心から6.25行分上は、図1の上から6行目の「度以上に達する」の行の中心(ここまでで指定行の中心から6行分)からさらに0.25行分上まで含んだ範囲となるので、同じ「度以上に達する」の行の下側0.75行分までが指定範囲に含まれる。下側0.75行分は12ドット(=16×0.75)である。
同様に、指定行の下側は、上から18行目の「 人間は本来並列的に」の行の中心(ここまでで指定行の中心から6行分)からさらに0.25行分下まで含んだ範囲となるので、同じ「 人間は本来並列的に」の行の上側0.75行分(=12ドット分)までとなる。
これら表示範囲の上限および下限によって途中で切れる行を表示に含めるかどうかで判断が分かれるが、ここでは表示に含めるとして考える。従って、上から6行目の最初から18行目の最後までがデータサイズを求める範囲だとする。
すると、最初の表示要素は、上から6行目の最初の文字「度」となり、分割文書データ51内の11番目の文字「度」にあたるので、図8のようなデータ構造からデータ開始位置を得れば良い。本来はレイアウト作成時に同時にデータ開始位置を得られるはずだが、ここでは説明の為、最初の表示要素のデータ開始位置を計算で求めてみると、
(分割文書データ内の開始バイト位置)=(11文字分のバイト数)=11×2=22バイト
より、データ開始位置は、
(前の分割文書データサイズ)+(分割文書データ内の開始バイト位置)=126+22=148バイト
となる。
最後の表示要素のデータ開始位置も同様に計算で求めてみると、最後の表示要素は4番目の分割文書データ53内に含まれ、ここでは、「並列的に」の「に」にあたる。そこで、分割文書データ53内の開始バイト位置は、「に」の後の18文字分などを引いて求めると、
(分割文書データサイズ)−((18文字分のバイト数)+(「<BR/>」のバイト数)+(「<P/>」のバイト数)+(改行コードのバイト数))=161−(18×2+5+4+1)=115
となる。この結果、最後の表示要素のデータ開始位置は、
(前の分割文書データサイズ)+(分割文書データ内の開始バイト位置)=(126+77+117)+115=435バイト
となる。
すると、指定範囲のデータサイズSDは、((最後の表示要素のデータ開始位置)+(最後の表示要素のデータサイズ))−(最初の表示要素のデータ開始位置)の演算によって求まるから、
435+2−148=289
となる。
S51では、割合取得手段3が、分割データサイズ取得手段1から全文書のデータサイズADを取得して、S52へ進む。
全文書のデータサイズは各分割文書のデータサイズの和だから、ここではADは、図6にも示すとおり604となる。あるいは別途、全文書のデータサイズがどこかに記録されていたり、ファイルシステムなどの記録手段から得られるならばそれを使っても良い。
S52では、割合取得手段3が、S50で得た指定範囲のデータサイズSDとS51で得た全文書のデータサイズADとから指定範囲の割合を算出して、P40へ抜ける。
例えば、単純に指定範囲のデータサイズSDを全文書のデータサイズADで割れば指定範囲の大きさの割合が得られる。ここでは、289/604=0.48となる。
これによって、図7の指定範囲データサイズSDが全文書データサイズADの48%の大きさだということが分かり、図4では、スクロールボックス121が、スクロールバー120の48%の大きさ、中心位置50%で表示されている。
以上の処理によって、図3のS13の処理が行われる。
以上、説明してきた方法により、文書を複数の部分に分割した時のデータサイズと、指定範囲の位置およびデータサイズとから、文書中に指定範囲が占める位置およびデータサイズの各割合を得ることができる。
また、指定範囲のレイアウトを表示して、得られた位置と割合でスクロールバーを表示することで、指定範囲に応じたスクロールバーを表示することができるようになる。
さらに、スクロールバー上で指定範囲の位置を指定することで、ユーザーのスクロールバー操作に応じて表示範囲を制御することができるようになる。
一般に、スクロールバーは表示範囲とレイアウトサイズとが、全文書のレイアウトサイズ中に占める割合に基づいて表示されたり、制御されたりしている。その割合を求めるには、本来、表示範囲と全文書とに関するレイアウトサイズが必要である。レイアウトサイズを高速に得るには予め計算しておくなどの方法が考えられるが、可変レイアウトの場合は表示手段の表示サイズや表示時のレイアウト設定などによってレイアウトサイズが変わってしまう為、予め計算しておくことはできない。
全文書のレイアウトサイズを求めずに表示範囲のレイアウト割合を真に正確に求めるのは難しいが、ある程度の精度で「推定」(この言葉の意味については後で説明する)することはできる。そこで、本実施の形態では、指定範囲の表示レイアウトとデータサイズとを得る為に、必要最小限の分割文書だけレイアウトし(図3のS11)、それ以外の分割文書はレイアウトを求めていない。そして、指定範囲のデータサイズからレイアウト割合を推定している(図3のS13、特に図14のS50〜52)。
これによって、可変レイアウトの集まりからなる文書であっても、文書全てをレイアウトするのに比べて高速に指定範囲の割合を得ることができる効果が出てくる。また割合を計算する為に全てのレイアウトを保持する必要もないので、少ないメモリ環境などでも処理できる効果が出てくる。
なお、「推定」という言葉は、データサイズを使って求める割合が誤っていることを意味するものではない。例えば、データサイズを使って求める位置の割合もレイアウトサイズだけを使って求める位置の割合も、どちらも指定範囲の位置が上下すればそれに応じて求められる割合も上下する。従って、位置の割合を求めるどちらの方法を使ってもスクロールバーとしての基本的な機能は満たす。
ただし、レイアウトサイズだけを使って求める割合は、指定範囲の位置の変化量と割合の変化量の比は一定の値になるが、データサイズを使って求める割合の場合、その比は一定とは限らず、指定範囲の位置によってその比は多少変動する。
比が一定であるかどうかがどう違うか分かり易い例で説明すると、レイアウトサイズだけを使って求める割合の場合、ユーザーが表示範囲を一定の速度でスクロールさせると、表示範囲の文書中での位置を示すスクロールボックスもそれに応じて徐々に位置が変わり、その時のスクロールボックスの移動速度も一定となる。しかし、データサイズを使って求める割合の場合、ユーザーが表示範囲を一定の速度でスクロールさせると、表示範囲を示すスクロールボックスもそれに応じて徐々に位置が変わるが、スクロールボックスの移動速度は一定とはならず、場所によって、多少速くなったり遅くなったりする。
また、スクロールボックスの大きさも、レイアウトサイズだけを使って求める割合の場合は一定の大きさだが、データサイズを使って求める割合の場合はスクロールボックスの位置によって大きさが多少変化する。スクロールボックスの移動速度や大きさの多少の変化は、スクロールバーとして使用するには大きな問題とはならないが、多少違和感が感じられるかもしれない。
文書の表示などを行うアプリケーションでは、普通、スクロールバーはレイアウトサイズだけを使って求められており、ユーザーもそのことに慣れている。従って、ユーザーに違和感を抱かせないようにするならば、レイアウトサイズだけを使って求める割合が「理想」であって、データサイズを使って求める割合はその理想の値にできるだけ近いことが望まれる。理想の値にできるだけ近い値を求めたいという意味で、データサイズを使って割合を求めることを「推定」と呼んでいる。後で出てくる「誤差」という言葉も、同様の考え方で、理想の値とデータサイズを使って求めた値との差を「誤差」、「推定誤差」などと呼んでいる。
なお、説明の為、レイアウトサイズだけを使って割合を求める場合を「レイアウトサイズベース」、データサイズを使って割合を求める場合を「データサイズベース」と以降、呼ぶことがある。
ちなみに「誤差」を計算してみると、図4の例では指定範囲の大きさが200ドットで、レイアウト全体のドット単位の大きさが
(27行分の高さ)=16×27=432ドットなので、全ての分割文書でレイアウトを求めた際のドット単位による理想的な表示範囲の大きさの割合は、200/432=0.46より、実際のレイアウトによる指定範囲は46%の大きさとなる。バイト単位でのデータサイズによる推定では、前記のように48%の大きさなので、推定誤差2%となっている。
また、推定した中心位置(12行目の中心なので、11.5行分の位置)のレイアウト上の位置は、
(11.5行分の高さ)/432=(16*11.5)/432=0.43
より、43%の位置になっている。レイアウトサイズベースでは、指定範囲の中心位置は50%なので、推定誤差7%となっている。これを表しているのが図1の表示範囲111(データサイズベース)と表示範囲113(レイアウトサイズベース)であり、表示範囲の中心の○がそれぞれの指定位置を示す。表示範囲113はレイアウト上の理想的な指定位置であり、ここで推定して求めた表示範囲111の指定位置とずれている。
なお、図14のS50の説明では指定範囲が指定位置と表示サイズとで指定されるケースを説明する為、指定範囲のレイアウトを利用しているが、指定範囲の大きさとして表示サイズでなくデータサイズが指定されるのならば、レイアウトからデータサイズを求める必要はなく、そのまま指定されたデータサイズを使えば良いのでより簡単な処理になる。さらに、指定範囲のレイアウトを表示するのではなく、スクロールバーだけを表示するなど、単に割合を得るだけで良いならもっと簡単な処理になり、レイアウトを得る必要もなくなってくる。
図6では、分割文書のデータサイズとしてバイト数を使ったが、他の単位を使う方法も考えられる。例えば意味単位である。
例えば、意味単位として文字数を使った方法について説明する。データ中には、文字の色などの指定やコメントなど、必ずしもレイアウト位置やサイズに直接関係ない情報が含まれていることもある。実際にレイアウトされる文字数を予め勘定しておくことで、バイト数よりレイアウトサイズに近い値が得られる場合も出てくる効果がある。
文字数の数え方は、例えばHTMLのタグなどの表示に直接現れない制御文字列をどう扱うか、全角文字を半角文字2つ分とするかどうか、など色々考えられる。図15は、図2の分割文書データを文字数で数えたデータサイズ例を示している。データサイズ170〜175は、HTMLのタグなどの制御文字を全て無視し、全角は半角2つ分として、半角文字数で数えることにより求められている。
図6と比較すると、データサイズ170〜175が変わったことに伴って、データサイズ比180〜185および累積データサイズ比190〜196も変わっていることがわかる。図15では、指定範囲の中心位置0.5が累積データサイズ比192と累積データサイズ比193の境界に来ているので、表示中心となる表示要素が、図6のデータを基に処理する場合と多少前後する。
元とするデータが図15のものとなる以外は図6の処理と一緒なので詳細な計算過程は省くが、指定範囲の中心位置は、累積データサイズ比192と累積データサイズ比193の境界に来ているので、分割文書データ53の最初の文字「 」(全角スペース)とする。これは図1では上から13行目の先頭文字であり、中心位置は12.5行目の位置となる。
レイアウト上の位置や大きさの計算は、先に説明したバイト単位の場合と同様なので、詳しい説明は省いて式のみ示すが、中心位置の割合は、
(12.5行分の高さ)/432=(16*12.5)/432=0.46
より、46%となり、誤差は4%となる。バイト単位の場合は誤差7%だったので、中心位置の精度が少し良くなっている。
指定範囲はこの中心位置から上下に6.25行分なので、上から7行目の「(2)」から19行目の「する能力」までの範囲となる。「(2)」は、分割文書データ51中の19文字目なのでデータ位置は(62+19×2=100)、「力」は、分割文書データ53中の59文字目なのでデータ位置は(62+54+94+59×2=328)となり、指定範囲のデータサイズSDはその差に、終了文字のデータサイズを加えた230となる。
SD/AD=230/(62+54+94+132+22+60)=0.54より、大きさは54%で誤差8%となる。この場合、図6を元にバイト単位で計算した誤差2%よりもむしろ誤差が大きくなっている。すなわち、誤差は文書データの内容により変わり、全ての場合において、推定精度がよくなる訳ではない。
分割文書のデータサイズとしては、バイト数、文字数以外にも、例えば単語数や行数を使う方法も考えられる。単語数は英語など単語の区切りがはっきりしている場合は意味単位として使いやすい。また、改行の場合、データ記述上の改行コードはレイアウト上の改行とは必ずしも限らないので、一般にレイアウト上の改行数を使った方が精度がよい。改行数だけだと1行の長さがまちまちの場合、精度が良く無いので、文字数と組み合わせるなどすると良い。
図15での誤差は、画像部分に関しての処理を無視した影響が大きい。図6では、画像をあらわす「<IMG>」タグをバイト数で数えてはいるが、画像の大きさを直接表している訳ではないので、やはり正確さに欠ける。これを補正する為、文章中に含まれる文字や画像などの表示要素の表示サイズをデータサイズに換算した値を使う方法が考えられる。
例えば文字の大きさが途中で変わる場合、(文字数)=(データサイズ)、すなわち文字数だけを数えただけではデータサイズの精度が落ちてしまうが、文字の大きさの変化に応じて、(文字数)×(文字サイズ比)=(データサイズ)などと換算してやれば、精度を上げることができるようになる。同様に画像も、画像の表示サイズや面積をデータサイズに換算してやることで精度を上げることができるようになる効果が出てくる。
例えば、図2の分割文書データ54中に出てくるIMGで指定されている画像eye.pngの大きさが、70ドット×35ドットだったとする。14ドット×14ドットの全角文字(文字間1ドット、行間2ドット)を単位とした場合、この画像を、
(文字横サイズ)=(文字幅)+(文字間)=14+1=15
(データ横サイズ)=((画像幅)+(文字サイズ)−1))/(文字サイズ))
=(70+14−1)/14=5.9
(文字縦サイズ)=(文字高さ)+(行間)=14+2=16
(データ縦サイズ)=((画像高さ)+(文字縦サイズ)−1)/(文字縦サイズ)
=(35+16−1)×16=3.2
(データサイズ)=(データ横サイズ)×(データ縦サイズ)=5×3=15文字(全角)=30文字(半角)
分のデータサイズと換算する。なお、ここでは縦横の文字分を整数とする為、(データ横サイズ)、(データ縦サイズ)は、共に少数点以下切り捨てしてある。
図16は図15にこの換算値を追加したものである。図15と比較すると、図15のデータサイズ174に換算値30が加算され、データサイズ270〜275が再定義されたことに伴って、データサイズ比280〜285および累積データサイズ比290〜296も変わっていることがわかる。
元とするデータが図16となる以外は図15の処理と一緒なので詳細な説明は省くが、指定範囲の中心位置は、4番目の分割文書内の「60dB」の「B」の文字になる。これは上から14行目なので、中心位置は13.5行目の所となり (13.5行分の高さ)/432=(16*13.5)/432=0.50
より、中心位置は50%となり、誤差0%となる。図1の理想的な表示範囲113と重なる結果が得られた。
指定範囲はこの中心位置から上下に6.25行分なので、8行目の「 人間は」から20行目の「持っている。」までの範囲となる。「 人間は」のスペース「 」は、分割文書データ52中の最初の文字なのでデータ開始位置は(62+54)となる。また、「持っている。」の終了文字「。」は、分割文書データ53中の最後の文字なのでデータ位置は(62+54+94+132)となり、指定範囲のデータサイズSDはその差の226となる。
SD/AD=226/(62+54+94+132+52+60)=0.50より、大きさは50%となり、レイアウトサイズベースとの誤差は4%である。
図6のバイト単位のものや図15の文字単位のものに比べて、中心位置の誤差と大きさの誤差の和で総合的に比較してみると、図6のバイト単位は2%、図15の文字単位で指定範囲の大きさを求めた場合の誤差は8%であるのに比べて、図16の文字数換算手法を使った場合は4%となり、図15の手法と比べると誤差が小さくなっている。図6の手法に対しても同様に、画像の表示要素をバイトに換算した値を加えれば、誤差2%を更に小さくすることができる。
もちろん、文書の内容によっては、誤差がかえって大きくなることもありえるが、データサイズの計算にレイアウトサイズの要素を考慮した換算値を加えることで、レイアウトベースの値と近い値が得られる可能性が高まると言える。
この様に、文書中に含まれる文字や画像などの表示要素の表示サイズをデータサイズに換算した値を使うことで、推定精度を高くする可能性を大きくする効果がある。
ところで、ここまで説明してきた手法では、例えば図4に示すように、指定範囲の位置(スクロールボックス121の中心位置)が、表示範囲の中心と一致するようにしている。
図17はこの状況を詳細に説明するものである。分かりやすいように、レイアウト全体の中で表示される範囲を枠で囲い、その横にスクロールバーをつけてある。実際に表示されるのは枠の中のレイアウトとスクロールバーだけである。
スクロールバー全体の大きさ(長さ)をSA、スクロールボックスの大きさをSD、スクロールバーの開始位置から基準点SP(後述)までの大きさをSM、スクロールボックス内での基準点SPの上側の大きさをSPD、下側の大きさをSFDとする。
同様に、レイアウト全体の大きさをLA,指定範囲のレイアウトの大きさをLD,先頭から基準点LP(後述)までの大きさをLM、基準点LPより上側の大きさをLPD,下側の大きさをLFDとする。右のスクロールバー側と左のレイアウト側に説明の記号が分けて書いてあるが、同じような意味をもつ記号は、記号名の末尾をそれぞれ同じ文字(列)としてある。
「基準点」とは、スクロールバー上あるいはレイアウト上、指定範囲(表示範囲)の中のどこを指定範囲の「位置」とするか(どこを基準にするか)を意味する。レイアウト基準点LPは、その点の上下LPD、LFDの大きさだけレイアウトを表示することになる。スクロールバー基準点SPは、その点の上下SPD、SFDの大きさだけスクロールボックスを表示することになる。
スクロールバー基準点SPとレイアウト基準点LPは、文書全体の中で割合的に同じ位置を表す。従って、SM/SA=LM/LAとなる。なお、図17ではたまたまSPとLPとが一直線上に並んでいるが、基準点の取り方やスクロールバーの位置によっては、後で説明する図24のように一直線上に並ばない場合もある。
スクロールバー基準点SPとは、分かり易く言えば、指定範囲の位置(指定位置)を意味する。図17では、スクロールボックスはスクロールバーの中心に位置し、SM=SA/2、SPD=SFDとなっている。
一方、レイアウト基準点LPは、スクロールバー基準点SPに対応するレイアウト上の位置である。図17の例では、位置指定は(LM/LA)の割合で示されていることになる。図17ではスクロールバー基準点SPが、スクロールバーの真中を指しているので、レイアウト基準点LPも中央のレイアウト「 人間の受光能力は60」の行の中心に位置している。このとき、LM=LA/2、LPD=LFDである。
スクロールバー基準点SPは、通常、スクロールボックスの中央にとる。すなわち、スクロールボックスによって表示範囲が指定された場合は、スクロールボックスの中央位置に対応するレイアウト上の位置が、表示の中心となるようにレイアウトを表示する。逆にある表示範囲のスクロールバーを表示する時は、表示範囲のレイアウトの中心に対応するスクロールバー上の位置が、スクロールボックスの中央となるようにスクロールバーを表示する。
レイアウトをベースにしたスクロールバーでは、スクロールボックスの大きさと表示範囲の大きさは対応しており、表示範囲の大きさや表示倍率を変えるなどしなければ、スクロールボックスの大きさは変化しない。
しかし、本発明ではスクロールボックスの大きさは推測であり、指定範囲の位置と指定範囲に含まれるデータサイズとに応じて逐次求められるので、例えばスクロールボックスの移動によって変化する。表示される範囲はレイアウトサイズで指定しているので、200ドットなら200ドット分が常に表示されていて、表示倍率が変わる訳ではないのだが、スクロールボックスの大きさが変わってくる。通常のスクロールバーでは、表示倍率を変えない限り、スクロールボックスのサイズは変わらないので、ユーザーは少し違和感があるかもしれない。
しかし、指定範囲の位置として中心位置を使うと、スクロールボックスの伸び縮みが両端に分散されるので、違和感を多少和らげる効果が出てくることがある。
ただし、スクロールボックスの位置が、スクロールバーの最初や最後の端に接する位置付近に指定された場合、基準点としてスクロールボックスの中央位置を取るとうまくいかないことがある。
図18は、スクロールボックス121をスクロールバー120の上端に移動させて表示範囲を指定した時、スクロールボックス121が上端に位置し、表示は最初の行から隙間無く表示され、通常のスクロールバーによる指定と同様に表示された問題の無い例である。しかし、コンテンツやスクロールボックスの状態によっては、図18のようには表示されず、ユーザーの意図と異なる表示のされかたをしてしまうことがある。
例えば、図19は、スクロールボックス121を上端に移動させて表示範囲を指定した時、スクロールボックス121が上端に位置するにも関わらず、最初の行が表示されず、途中から表示されてしまっている例である。図19は実際には処理の途中状態である。
図3のフローチャート図に沿った処理で説明すれば、スクロールボックス121を上端に移動させて表示範囲を指定することがS10に相当し、指定範囲を表示する処理はS12に相当する。S12で指定範囲を表示した結果、図19のように文書の途中から表示される。そして図19の表示範囲にあわせたスクロールバー120を表示させる処理はS14に相当する。S14で図19の表示範囲にあわせたスクロールバー120を表示させた結果が図20である。表示範囲にスクロールバー表示を合わすと、図20のようにスクロールボックス121の上に少し隙間がないといけないはずである。ユーザーは最終的には図20の状態を見ることになる。
図21は、同様にスクロールボックス121を上端に移動させて表示範囲を指定した時、最初の行の前に空白が空いて表示されてしまっている例である。図19同様、図3のフローチャート図の処理を一通り行うのだが、図21は図19と違い、ほぼユーザーが最終的に見る状態である(正確に言えば、図21より若干、スクロールボックスが小さくなるかもしれない)。
表示範囲にスクロールバー表示を無理に合わすなら、このような表示は実際にはありえないが、図22のようにスクロールボックス121がスクロールバー120を上に突き抜けたようになり、これは本来レイアウトがない場所までも表示してしまっていることを表している。(なお、説明の都合上、同じコンテンツを使っているが、スクロールボックスを上端に移動させて表示範囲を指定した時に図19と図21が同時に起こる訳ではなく、コンテンツやスクロールバーの状態によってはどちらも起こりうるという意味で例にあげているだけである)。
このような不具合は、スクロールボックスの大きさが位置によって変わる(大きさが変わる理由は「推測」の言葉の意味について述べた際に説明した)ため、発生する。スクロールボックスの大きさが変わるとは、例えば、図18のようにコンテンツの先頭位置から表示される時のスクロールボックス121の大きさと、図4のようにコンテンツの途中の位置から表示される時のスクロールボックス121の大きさは同じとは限らないということである。
レイアウトサイズベースのスクロールボックスを使って新たな表示範囲を指定する時、普通はスクロールボックスをマウスなどで移動させて指示する。その際、スクロールボックスの大きさは、普通変わらない。しかし、データサイズベースのスクロールボックスを同じ方法で表示範囲指定に使うと問題が発生する。
例えば、図4に示す大きさのスクロールボックス121をマウスなどでスクロールバー120の上端位置に移動させるとする。スクロールボックス121の大きさは図4のままとする。ユーザーの意図としては図18のように表示したい訳だが、場合によっては、図20や図21のような表示になってしまうことがある。直接的な原因は、この時のスクロールボックス121による表示範囲の指定が、コンテンツの先頭からの範囲として指定できていないからである。
なぜコンテンツの先頭からの範囲として指定できないかというと、この時のスクロールボックス121の中心位置の指定が、コンテンツの先頭からの表示範囲の時のスクロールボックス121の位置である図18のスクロールボックス121の中心位置とずれているからである。指定範囲は、スクロールボックスの中心位置から上下に何ドットという指定の仕方をしているので、スクロールボックスの中心位置さえ同じならば、同じ指定範囲になるはずである。しかし、先に説明したように、図18のスクロールボックス121の大きさと図4のスクロールボックス121の大きさは同じとは限らないので、スクロールボックスを上端に移動させた時のスクロールボックスの中心位置は同じとは限らなくなってしまう。これが、図20や図21のような表示になってしまう理由である。
図18の時のスクロールボックス121の大きさはレイアウトしてみないと得られないので事前に得ることは難しい。また、スクロールボックス121の操作中は、通常、スクロールボックス121のサイズは変わらないので、事前に知ることができても、それをスクロールバー120の操作に反映させることが難しい。また反映できたとしても、ユーザーが端に移動したい時のみスクロールボックス121のサイズを変える為には、ユーザーの意向を知らなければいけないが、それはさらに難しい。
これらの不具合を防止する為、ユーザーが指定範囲として端に接するような位置を指定した場合は、スクロールバー基準点SPはスクロールボックスの中心位置を取らず、端を取るようにすれば良い。また、レイアウト基準点LPについても同様に表示範囲の端をとるようにする。
つまり指定範囲の大きさを、今までの例では上下にLPD=LFD=100ドットあわせて200ドットとしていたが、例えば上端を指定された場合は上にLPD=0ドット、下にLFD=200ドット、あわせて200ドットとしてやればよい。下端の場合は逆である。
図23はスクロールバー基準点SPをスクロールボックスの上端に取ると共に、レイアウト基準点LPを表示範囲の上端に取った状態を示したものである。図24では、基準点SP、LPが端に位置しないが、図23では端に位置している。
これらの処理は、具体的には、図3のS10で指定範囲を得る際に、スクロールボックスがスクロールバーの上端または下端に位置しているか否かの判断を加えてやればよい。
このように、スクロールボックスがスクロールバーの最初もしくは最後を含む範囲として指定されている場合は、文書の最初からもしくは最後まで表示するように表示制御することで、端を含む範囲の指定を問題なく行えるようにすることができる効果がある。
ただ、端を含む場合だけに限定してしまうと、端を含む場合と端をわずかに含まない場合で表示される範囲に大きなずれがでてしまうことがあり、スクロールバー操作の連続性が失われてしまうかもしれない。
これはそもそもスクロールバーが端に来た時にだけ急に基準点を変更したのが原因なので、スクロールボックスの位置に応じて、あるいはスクロールボックスが位置する範囲に応じて、基準点を滑らかまたは段階的に変化させることで、不連続性を抑えることができる。
基準点の変化のさせ方としては色々考えられるが、最も単純な方法として、スクロールボックスが中央に位置する時はスクロールボックスの中央にし、端に位置する時はスクロールボックスの端にし、その間は線形に変化させる方法がある。また、レイアウトの基準点も同様にそれに応じて変化させる。
図で具体的に説明すると、スクロールバーが中央の時は図17、スクロールバーが端に来た時は図23、この中間の状態が図25である。以降、説明を一般的にする為、図25を基に説明する。
図25で、スクロールバーによって指定された場合、スクロールバーの開始位置から基準点SPまでの大きさSMは、スクロールボックス内のどこに基準点を取るかによって決まる。スクロールバー内でスクロールボックスより上の空きスペースの大きさをSTとする。STは、スクロールボックスが中央の場合、
SM/SA=0.5、ST=(SA−SD)/2
であり、スクロールボックスが上端の場合、
SM/SA=0.0、ST=0.0
なので、
SM=0.5×ST/((SA−SD)/2)
とすれば、SMを線形に求められる。つまり、スクロールボックスの位置からSMを直接求めるのではなく、スクロールボックス以外の残りの部分の大きさに注目して、SMを求めている。
SMが求まれば、LM/LA=SM/SAより、
LM=LA×(SM/SA)
でLMが求まる。
次に、LPD、LFDだが、LPD/LD=LM/LAとするので、
LPD=LD×(LM/LA)
でLPDが求まる。LFDもLFD=LD−LPDで求まる。これによって、表示すべきレイアウト範囲が求まる。
レイアウト範囲が求まったら、スクロールバーの描画だが、SMは求まっているので、SPD、SFD、SDが求まれば良い。SDは既に説明した本発明の手法により、SMとLPD、LFDが決まればスクロールボックスの割合が求まるのだから、SDは求まる。SPDとSFDについては、SPD/SD=LPD/LDとすればよいので、
SPD=SD×(LPD/LD)でSPDが求まる。SFD=SD−SPDより、SFDも求まる。これによって、スクロールバーを表示させるだけの情報、SM,SPD,SFDが得られる。
なお、これらの計算結果でスクロールバーを再表示させた際、SDやSTはスクロールバーで操作を行った時とは若干変化するかもしれないが、大幅な変化ではないので、違和感は少ない。
以上の処理によって、スクロールバー端でも表示やスクロールバーが不連続に変化することを防ぎつつ、スクロールバーによる指定に応じたレイアウト範囲を表示し、またそのレイアウト範囲に応じたスクロールバーを表示することができるようになる。
また、スクロールボックスの位置を表す割合に応じて基準位置を変化させることで、表示範囲を連続的に変更することができ、ひいてはスクロールバーによる指定を連続的に行えるようにすることができる効果が出てくる。
ちなみに、この手法で表示させた場合、図25のように、基準点の高さ方向はほぼ一致するはずである。
ところで、これまで説明してきた手法では、表示範囲のデータサイズをレイアウトやユーザー指定などから求めているが、精度が粗くてよいなら、表示範囲を含む分割文書を単位としてしまう方法も考えられる。すなわち、図14のS50で指定範囲のデータサイズを取得する際、指定範囲を含む分割文書のデータサイズの和を表示範囲のデータサイズとしてしまうということである。これによって表示範囲のデータサイズを得る処理が省けるので、処理が簡単になるという効果がある。
同様に、指定範囲の位置に関しても、精度が粗くてよいなら、分割文書の単位で計算してしまう方法が考えられる。どの分割文書を指しているかだけを求め、その分割文書の頭や真中などから表示するとしてしまえばよい。これによって処理が簡単になるという効果がある。
また、データサイズとして、分割文書のデータサイズを使った例で説明したが、例えば分割文書がほぼ同じようなデータサイズやレイアウトサイズで分割されているなら、データサイズとして指定範囲を含む分割文書の個数を使ってもその割合はほぼ推定できる。各分割文書のデータサイズの取得や和を求める処理も、数が多くなるとそれなりの処理時間となってしまうが、分割文書数だけで概算できるのならば、これらの処理をさらに省くことができる効果がある。
上記の分割文書を単位とする手法では、分割の仕方を細かくする程、精度を上げることができる。
以上のように、分割データサイズ取得手段1が、文書を複数の部分に分割した分割文書のデータサイズを取得し、指定範囲取得手段5がユーザーによって指定された範囲を得ると、指定範囲レイアウト取得手段6が、その指定範囲を含む分割文書を特定し、指定範囲データサイズ取得手段2が、特定された分割文書のデータサイズを元にして指定範囲のデータサイズを求める。これにより、割合取得手段3は、分割文書の各データサイズの和と上記指定範囲のデータサイズとから、指定範囲のスクロールボックスの位置と割合を算出することができる。
この結果、本発明によれば、文字や表示ウィンドウのサイズ設定などによって、レイアウトが変わる表示システムでも、少ない処理時間およびリソースで、高速かつ精度の良いスクロールバーの表示制御を実現することができる。
なお、特許文献1(特開平5−282255号公報)では、複数のページからなる項目が複数ある時、各項目の区切りをスクロールバー上に表示し、また、表示をページ単位で行い、表示されているページ範囲をスクロールボックスとして表示させている。
一見、各項目や各ページが本発明の分割文書に相当するように見えるが、全く異なる発明である。
そもそも発明の課題が異なる。該公報の課題は「ユーザーの望む個所を簡単かつ確実に表示でき、また、手帳情報が複数の項目を有する場合に、各項目の占める分量を把握できる」ことである。本発明の課題は、可変レイアウトの文書において、高速かつできるだけ正確にスクロールバーの表示や制御を処理すること、少ないメモリ環境などにおいても無駄なく処理を行うことである。
課題が異なる為、課題を解決する為の手段も異なり、該公報では、ユーザーに分かり易いようにスクロールバーを表示、制御する為に各項目のページ数の情報などを使っている。つまり、ページ数の情報の表示の仕方などに発明のポイントがあるのであり、ページ数の情報の求め方自体には発明のポイントはない。
従って、ページ数の情報を可変レイアウトで高速に少ないメモリで算出する方法は請求項では述べられておらず、実施例などでも説明されていない。予め用意されているものとして説明されている。
本発明は、分割文書や指定範囲の「データサイズ」からスクロールボックス位置、サイズを求めるステップ/手段(割合取得ステップ)などを用いることで、可変レイアウトであっても高速に少ないメモリでスクロールバーを表示/制御することができることを示している。つまり、可変レイアウトでスクロールバーの表示/制御を行う為の計算を高速、省メモリで行うことに発明のポイントがあるのであり、計算で得られた後の表示の仕方などに発明のポイントがあるのではない。
従って、可変レイアウトであっても高速に少ないメモリでスクロールバーを表示/制御する方法として、分割文書や指定範囲のデータサイズを利用する方法が請求項で述べられている。
このように両者は、異なる課題を持ち異なる手段を用いた異なる発明である。
また、特許文献2(特開平8−314906号公報)では、文書量に応じたページ区切り幅を計算し、その区切り幅でページ番号を付与したスクロールバーを表示/制御している。ページ区切り幅は、レイアウトサイズから計算している。
これも一見、「文書量に応じたページ区切り幅」が本発明の分割文書のデータサイズから求めるスクロールボックスサイズに相当するように見えるが、全く異なる発明である。
これもそもそも発明の課題が異なる。該公報の課題は「内部の文書量が異なる各ページが均等の幅でスクロールバー上に表示されるために、各ページのおおよその文書量を把握できない」ことである。本発明の課題は、上で説明した通り、可変レイアウトの文書において、高速かつできるだけ正確にスクロールバーの表示や制御を処理すること、少ないメモリ環境などにおいても無駄なく処理を行うことである。
課題が異なる為、課題を解決する為の手段も異なり、該公報では、各ページの文書量がユーザーに分かるようにスクロールバーを表示、制御する為に各ページの文書量を使っている。つまり、各ページの文書量の表示の仕方などに発明のポイントがあるのであり、各ページの文書量の取得の仕方自体には発明のポイントはない。
各ページの文書量はレイアウトサイズを使うことが請求項で述べられているが、そのレイアウトサイズを高速、省メモリで求める方法は述べられていない。全てのレイアウトサイズを求めると説明されているのみである。
本発明は、上で説明した様に、可変レイアウトであっても高速に少ないメモリでスクロールバーを表示/制御する方法として、分割文書や指定範囲のデータサイズを利用する方法が請求項で述べられている。
このように両者は、異なる課題を持ち、異なる手段を用いた異なる発明である。
なお、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体(主記憶25または外部記憶26等)を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
プログラムコードを供給するための記憶媒体としては、例えば、フロッピディスク,ハードディスク,光ディスク,光磁気ディスク,磁気テープ,不揮発性のメモリカード,等を用いることができる。
また、上記プログラムコードは、通信ネットワークのような伝送媒体を介して、他のコンピュータシステムから主記憶25または外部記憶26等へダウンロードされるものであってもよい。
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートに対応するプログラムコードを格納することになる。
本発明は上述した各実施形態に限らず、請求項に示した範囲で種々の変更が可能である。
なお、本発明の表示制御方法は、文書を複数の部分に分割した分割文書の各データサイズを得る分割データサイズ取得ステップと、上記文書に対して指定した指定範囲を含む分割文書を特定すると共に、特定した分割文書の少なくとも一部を、そのときの設定に従ってレイアウトすることにより、指定範囲のデータサイズを求める指定範囲データサイズ取得ステップと、分割データサイズ取得ステップから得た分割文書の各データサイズの和と、指定範囲データサイズ取得ステップから得た前記指定範囲のデータサイズとから、文書中に前記指定範囲が占める割合を求める割合取得ステップと、を有しても良い。
上記の構成において、「レイアウト」とは、表示要素が2次元または3次元の空間座標上に、位置とサイズ、外形の属性をもって配置されること、あるいは配置されたもののことを言う。位置やサイズは、通常は何らかの単位を使った値として表現される。例えば、画素の集まりからなるディスプレイに表示する場合は、(画素)ドットの単位で表現される。
上記の構成によれば、特定した分割文書の少なくとも一部を、可変レイアウトのその時の設定に従ってレイアウトし、表示される部分のデータサイズを求めるので、文書全体をレイアウトする必要が無く、処理が簡便であり、処理に必要なリソースが少なくて済む上に、精度を向上させることができる。
なお、特定した分割文書の少なくとも一部をレイアウトする理由は、指定範囲に完全に含まれる分割文書については、そのデータサイズをそのまま割合算出に使えばよいのでレイアウトする必要が無いためである。すなわち、指定範囲から一部がはみ出す分割文書についてのみ、その時の設定に従ってレイアウトすれば、指定範囲のデータサイズを求めることができる。
また、本発明の表示制御装置は、文書を複数の部分に分割した分割文書の各データサイズを得る分割データサイズ取得手段と、上記文書に対して指定された位置を基準とする指定範囲を含む分割文書を特定すると共に、特定した分割文書を元にして指定範囲のデータサイズを求める指定範囲データサイズ取得手段と、分割データサイズ取得手段から得た分割文書の各データサイズの和と、指定範囲データサイズ取得手段から得た前記指定範囲のデータサイズとから、文書中に前記指定範囲が占める割合を求める割合取得手段と、を有しても良い。
これによる作用、効果は上で説明した方法と同様であるが、作用の説明を補足しておく。
分割データサイズ取得手段は、分割文書の各データサイズを、レイアウト設定とは無関係に得ることができる。例えば、文書をどう分割するかを文書データの作成時に予め決め、どう分割したかの情報をデータとして、文書を配信するサーバのメモリ上、または文書データを記録した記録メディアに別ファイルとして記録しておく。あるいは、文書データの一部としてヘッダ情報などの形で含めておき、文書データを記録媒体または伝送媒体を介して読み込んだときに、分割文書の各データサイズ情報を、主記憶または外部記憶などに格納しておいてもよい。
これにより、分割データサイズ取得手段は、分割文書の各データサイズを入手する必要が生じた時に、上記メモリ、記録メディア、主記憶または外部記憶などにアクセスして、データサイズを入手することができる。
また、文書における指定範囲は、通常、文書に対して例えばユーザが指定した位置と、表示媒体について設定される表示範囲の大きさとによって決まるので、指定範囲データサイズ取得手段は、指定された位置を基準とすることによって、指定範囲を含む分割文書を特定することができ、さらに、指定範囲のデータサイズを、特定した分割文書を元に、既に説明した方法によって求めることができる。
最後に、割合取得手段は、分割データサイズ取得手段から得た分割文書の各データサイズを合算することによって、指定範囲データサイズ取得手段から得た前記指定範囲のデータサイズの割合を算出することができる。
また、本発明に係る表示制御方法は、文書を複数の部分に分割した分割文書の各データサイズを得る分割データサイズ取得ステップと、上記文書に対して指定した位置を基準とする指定範囲を含む分割文書を特定すると共に、特定した分割文書を元にして指定範囲のデータサイズを求める指定範囲データサイズ取得ステップと、分割データサイズ取得ステップから得た分割文書の各データサイズの和と、指定範囲データサイズ取得ステップから得た前記指定範囲のデータサイズとから、文書中に前記指定範囲が占める割合を求める割合取得ステップと、を有しても良い。
データサイズは固定レイアウトでも可変レイアウトでも一定であり、レイアウト処理を行うことなくすぐに得ることができる。表示のためなどに一部のレイアウトが必要だったとしても、全てのレイアウトを得る必要はないので、その分、処理量や処理に必要なリソースが少なくて済む。
これによって、可変レイアウトの集まりからなる文書であっても、高速に指定範囲の割合を得ることができる効果が出てくる。また割合を計算する為にレイアウトをまったく保持する必要が無い、あるいは一部しか保持する必要がないので、少ない処理リソース(CPU処理能力やメモリ環境など)でも処理できる効果が出てくる。
また、本発明に係る表示制御方法は、以上のように、文書を複数の部分に分割した分割文書の各データサイズを得る分割データサイズ取得ステップと、上記文書に対して指定した位置を基準とする指定範囲を含む分割文書を特定すると共に、特定した分割文書の少なくとも一部を、そのときの設定に従ってレイアウトすることにより、指定範囲のデータサイズを求める指定範囲データサイズ取得ステップと、分割データサイズ取得ステップから得た分割文書の各データサイズの和と、指定範囲データサイズ取得ステップから得た前記指定範囲のデータサイズとから、文書中に前記指定範囲が占める割合を求める割合取得ステップと、を有しても良い。
これにより、特定した分割文書の少なくとも一部を、可変レイアウトのその時の設定に従ってレイアウトし、表示される部分のデータサイズを求めるので、文書全体をレイアウトする必要が無く、処理が簡便であり、処理に必要なリソースが少なくて済む上に、精度を向上させることができるという効果を奏する。
また、本発明に係る表示制御方法は、以上のように、前記指定範囲を表示範囲とし、割合取得ステップから得られた割合に応じたスクロールバーを表示し、また、ユーザーのスクロールバー操作に応じて表示範囲の表示内容を制御するスクロールバー表示制御ステップを有しても良い。
これによって、可変レイアウトの表示システムでも、スクロールバーを使った表示や制御が高速に行えるという効果が出てくる。
また、本発明に係る表示制御方法は、以上のように、前記分割文書および前記指定範囲のデータサイズとして、バイト数やビット数などの符号化データサイズを使うことを特徴とする。
これにより、文書データなどをコンピュータ上で扱う場合、データサイズを得やすく、また扱い易くなるという効果が出てくる。ひいては割合を求めるなどの処理も簡単になるという効果を奏する。
また、本発明に係る表示制御方法は、以上のように、前記分割文書のデータサイズとして分割文書の意味単位に基づく数を使っても良い。
これにより、意味単位に基づく数をデータサイズとして使うことで、文書データ中にはレイアウトサイズにあまり関係ないようなデータの影響を少なくすることができる効果が出てくる。
また、これらの意味単位に基づく数は、レイアウト処理によって変わるものではないので、事前に数えておくことが可能であり、レイアウト処理などを最小限に抑えた処理を可能にするという効果を変わりなく得ることができる。
また、本発明に係る表示制御方法は、以上のように、意味単位に基づく数として文字数あるいは単語数を使っても良い。
これにより、意味単位の中でも、単語数を用いれば、表示割合の算出精度を相対的に高めることができ、特に文字数を用いれば、算出精度を更に上げることができるという効果を奏する。
また、本発明に係る表示制御方法は、以上のように、前記分割文書または前記指定範囲のデータサイズを得る際、実際の表示サイズがデータサイズと相関しない表示要素が文書中に含まれている場合、当該表示要素の表示サイズをデータサイズに換算した値を使っても良い。
これにより、文字や画像の大きさは実際にはレイアウトしないと完全に決定しないこともあるが、基準文字サイズを仮決めするなど、何らかの仮定をおいてレイアウトを行っても、ある程度の傾向は出てくる。そこで、実際の表示サイズがデータサイズと相関しない表示要素大きさを、何らかの仮定の元に推定し、それをデータサイズに換算することで、データサイズだけで推定するよりも推定精度が増す可能性が大きくなるという効果が出てくる。
また、本発明に係る表示制御方法は、以上のように、前記スクロールバー表示制御ステップにおいて、表示範囲を指定するためにスクロールバー内に表示されるスクロールボックスの中央位置が、表示範囲の中央位置の表示割合を示すようにしても良い。
これにより、指定範囲の割合をデータサイズを元にして推測する場合の誤差を、スクロールボックスの両端に分散させ、長さの変化に対する視覚的な違和感を軽減することができるという効果を奏する。
また、ユーザーにとって、スクロールバーを操作する際に、視覚上、直感的に表示割合や表示部分の位置を捉えやすくなるという効果も併せて奏する。
また、本発明に係る表示制御方法は、以上のように、前記スクロールバー表示制御ステップにおいて、表示範囲を指定するためにスクロールバー内に表示されるスクロールボックスが、スクロールバーの始端もしくは終端を含む範囲を指定している場合には、文書の最初から、もしくは最後まで表示するようにしても良い。
これにより、スクロールボックスが、スクロールバーの始端もしくは終端を含む範囲として指定している場合には、文書の最初から、もしくは最後までを含むような指定範囲が指定されたとして解釈して、表示を行うことで、推定誤差による不具合を回避し、またユーザーの意図に沿った処理を行うことができるという効果が出てくる。
また、本発明に係る表示制御方法は、以上のように、前記スクロールバー表示制御ステップにおいて、表示範囲を指定するためにスクロールバー内に表示されるスクロールボックスのスクロールバー内の位置に応じて、表示範囲が文書中に占める位置と割合とを表す基準となるスクロールボックス上の基準位置を変更すると共に、その基準位置に対応付けた表示範囲上の基準位置を合わせて変更しても良い。
これによって、スクロールバー末端付近のスクロールボックスのわずかな位置の違いで表示が大きくずれてしまうことを防ぐ効果が出てくる。
また、本発明に係る表示制御装置は、以上のように、文書を複数の部分に分割した分割文書の各データサイズを得る分割データサイズ取得手段と、上記文書に対して指定された位置を基準とする指定範囲を含む分割文書を特定すると共に、特定した分割文書を元にして指定範囲のデータサイズを求める指定範囲データサイズ取得手段と、分割データサイズ取得手段から得た分割文書の各データサイズの和と、指定範囲データサイズ取得手段から得た前記指定範囲のデータサイズとから、文書中に前記指定範囲が占める割合を求める割合取得手段と、を有しても良い。
これによる効果は上で説明した方法と同様である。
また、本発明に係る表示制御プログラムは、上記の課題を解決する為に、上記スクロールバー表示制御方法が備える各ステップをコンピュータに実行させても良い。
これにより、汎用のコンピュータに、本発明の表示制御方法を実行させ、上記の効果を得ることができる。
また、本発明に係る記録媒体は、上記の課題を解決する為に、上記表示制御プログラムを記録しても良い。
これにより、上記記録媒体から汎用のコンピュータに、表示制御プログラムをインストールすることによって、本発明の表示制御方法を実行させ、上記の効果を得ることができる。