レイアウト制御方法、レイアウト制御装置及びレイアウト制御プログラム
【課題】 複数のコンテナ間に対して、一つの操作でリンクを一括設定することを可能にし、ユーザによる操作を効率化する。
【解決手段】 割り当てられたデータを収め、そのデータをページ上にレイアウトする部分表示領域を相互に連結するリンクを部分表示領域間に設定し、部分表示領域に割り当てられたデータにより部分表示領域の位置を調整するレイアウト制御方法は、複数の部分表示領域に対して複数のリンクを設定し、複数の部分表示領域を指定し、指定した部分表示領域の位置情報を取得する。そして、複数のリンクを設定することが指示された場合、取得した位置情報に基づき、指定された複数の部分表示領域に対して複数のリンクを設定する。
【解決手段】 割り当てられたデータを収め、そのデータをページ上にレイアウトする部分表示領域を相互に連結するリンクを部分表示領域間に設定し、部分表示領域に割り当てられたデータにより部分表示領域の位置を調整するレイアウト制御方法は、複数の部分表示領域に対して複数のリンクを設定し、複数の部分表示領域を指定し、指定した部分表示領域の位置情報を取得する。そして、複数のリンクを設定することが指示された場合、取得した位置情報に基づき、指定された複数の部分表示領域に対して複数のリンクを設定する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、テキストやイメージで構成されたドキュメントの生成、編集、そして印刷のためのレイアウト制御技術に関するものであり、更に詳しくは、バリアブルデータドキュメントの生成、編集、そして印刷に好適なものである。
【背景技術】
【0002】
近年、商品の多品種化で商品ライフサイクルが短くなっていること、インターネットの普及により、これを利用した消費者のカスタマイズサービス指向が強くなっていることなどの要因からCRM(Customer Relationship Management)、One-to-Oneマーケティングの必要性が注目されている。これらの手法は顧客満足度を高め、顧客の開拓や囲い込みを目指すものである。
【0003】
One-to-Oneマーケティングはデータベース・マーケティングの一種で、顧客の年齢、性別、趣味、嗜好、購買履歴等の個人属性情報をデータベース化し、その内容を分析、顧客のニーズに合った提案を行うものであり、その代表的な手法としてバリアブルプリントが挙げられる。ここ最近ではDTP(デスクトップパブリッシング)技術の進展とデジタル印刷装置の普及に伴って、文書を顧客毎にカスタマイズして出力するバリアブルプリントシステムが開発され、顧客毎に異なる情報量のコンテンツを最適にレイアウトして表示することが求められるようになった。
【0004】
従来におけるバリアブルプリントシステムは、ドキュメント上に情報を表示する領域としてコンテナ(帳票フォームではフィールド領域とも呼ばれる)等をレイアウトして、データベースとコンテナとを関連付けることによりレイアウト表示を達成していた。
【0005】
しかし、テキストおよびイメージが貼り付けられる部分表示領域であるコンテナのサイズが固定であったため、データベース内のデータがコンテナに挿入されたときに、データ量がコンテナサイズより多いとテキストのオーバーラップやイメージのクリッピングが発生し、またデータ量がコンテナサイズより小さいとコンテナ内に隙間が空いてしまい、いずれの場合でも表示しようとするテキストやイメージの情報量に応じた最適なレイアウト表示を実現することはできなかった。
【0006】
その問題を解決するために、情報量に応じてコンテナサイズを可変にする自動レイアウトシステムが提案されている。この自動レイアウトシステムはテキストおよびイメージのコンテナサイズを可変に設定することが可能である。この自動レイアウトシステムにおいて、コンテナのサイズを可変とし、差し込まれるデータ量に応じてコンテナのサイズを大きくするよう変更できるものがある。また、テキストの場合において固定のコンテナサイズ内に入りきらないデータが挿入された場合、テキストのフォントサイズを縮小し、コンテナ内に全てのテキストを表示する技術も存在する。
【0007】
しかし、コンテナのサイズを大きくした場合、ドキュメント上の他のコンテナに重なってしまうという問題が生じる。またフォントサイズを調節する場合はテキストの量が大きい場合、フォントサイズが小さくなりすぎるという問題も生じる。これらの問題を解決するために、さらなる自動レイアウトの技術として、あるコンテナのサイズが大きくなった場合、このコンテナに隣接する他のコンテナのサイズを小さくする技術が特許文献1の「レイアウトデザイン装置」に開示されている。
【特許文献1】特開平11−316792号公報
【発明の開示】
【発明が解決しようとする課題】
【0008】
しかしながら、上述の自動レイアウトシステムにおいて、各コンテンツに貼り付けられるデータに合わせてコンテナの1例である可変表の行を増やし、それに応じて他のコンテナが移動する位置合わせの技術についてしか考慮していない。つまり、可変表の行が増えればそれだけ他のコンテナが移動し、改ページが行われる帳票のレイアウトデザインを作成するためのものである。しかしながら、上述したOne-to-oneマーケティングでは、決められた用紙サイズのページにユーザが所望とするコンテナ数をレイアウトすることが望まれている。つまり、従来のような単なる可変表の技術では対応できないという問題がある。そこで、それぞれのコンテナにデータを流し込み、各コンテナのサイズを可変にしつつ、決められた用紙サイズのページに必要な数のコンテナを動的に配置するような、自動レイアウトシステムの需要がある。このような自動レイアウトシステムでは、お互いのコンテナのサイズが可変であるため、各コンテナ同士で押し合いつつレイアウトを動的に変化させなければならない。レイアウトを動的に変化させるためには、各コンテナ間に関連付け(以下、リンク)を設定する必要があるが、リンクはコンテナ間において一つ一つに対して設定する必要があり、ユーザの操作負担を強いるものとなってしまう。すなわち、複数のコンテナをレイアウトして、それぞれのコンテナを動的にレイアウトするように設定するためには、コンテナ間にリンクを設定しなければならないが、コンテナの数が増えると、そのリンクの数も増えることになり、リンクを一つ一つ設定する作業にはコンテナの数に比例して増大し、ユーザの操作負担は大きくなってしまう。
【0009】
本発明は上記の課題に鑑みてなされたものであり、複数のコンテナ間に対して、一つの操作でリンクを一括設定することを可能にし、効率のよい操作を実現することを目的とする。
【課題を解決するための手段】
【0010】
上記目的を達成するために、本発明に係るレイアウト制御方法は主として以下の工程を有することを特徴とする。
【0011】
すなわち、指示手段と、指定手段と、決定手段と、リンク設定手段と、を備え、割り当てられたデータを収める複数の部分表示領域が配置されたテンプレートと、前記データとを用いてレイアウト処理を実行するレイアウト制御装置におけるレイアウト制御方法であって、
前記指示手段が、複数の部分表示領域を関連付けるリンクの設定を指示する指示工程と、
前記指定手段が、前記リンクによって関連付けられる複数の部分表示領域を指定する指定工程と、
前記指示工程によって前記リンクを設定することが指示された場合、前記決定手段が、前記指定工程において指定された前記複数の部分表示領域によって形成される複数の部分表示領域間の中から前記リンクを設定すべき部分表示領域間を、前記複数の部分表示領域の位置情報に基づいて決定する決定工程と、
前記リンク設定手段が、前記決定工程において決定された前記部分表示領域間に前記リンクを設定するリンク設定工程と、を有することを特徴とする。
【0012】
あるいは、上記目的を達成するために本発明に係るレイアウト制御装置は、割り当てられたデータを収める複数の部分表示領域が配置されたテンプレートと、前記データとを用いてレイアウト処理を実行するレイアウト制御装置におけるレイアウト制御装置であって、
複数の部分表示領域を関連付けるリンクの設定を指示する指示手段と、
前記リンクによって関連付けられる複数の部分表示領域を指定する指定手段と、
前記指示手段によって前記リンクを設定することが指示された場合、前記指定手段において指定された前記複数の部分表示領域によって形成される複数の部分表示領域間の中から前記リンクを設定すべき部分表示領域間を、前記複数の部分表示領域の位置情報に基づいて決定する決定手段と、
前記決定手段において決定された前記部分表示領域間に前記リンクを設定するリンク設定手段とを備えることを特徴とする。
【0013】
あるいは、上記目的を達成するために、本発明に係るレイアウト制御プログラムは、割り当てられたデータを収める複数の部分表示領域が配置されたテンプレートと、前記データとを用いてレイアウト処理をコンピュータに実行させるレイアウト制御プログラムであって、当該レイアウト制御プログラムが、コンピュータを
複数の部分表示領域を関連付けるリンクの設定を指示する指示手段と、
前記リンクによって関連付けられる複数の部分表示領域を指定する指定手段と、
前記指示手段によって前記リンクを設定することが指示された場合、前記指定手段において指定された前記複数の部分表示領域によって形成される複数の部分表示領域間の中から前記リンクを設定すべき部分表示領域間を、前記複数の部分表示領域の位置情報に基づいて決定する決定手段と、
前記決定手段において決定された前記部分表示領域間に前記リンクを設定するリンク設定手段として機能させることを特徴とする。
【発明の効果】
【0014】
複数のコンテナ間に対して、一つの操作でリンクを一括設定することを可能にし、効率のよい操作を実現することが可能になる。
【発明を実施するための最良の形態】
【0015】
本発明の好適な実施形態を図面を参照しつつ説明する。
【0016】
(システム構成図)
図1Aはコンテナサイズを可変に設定してドキュメントを印刷するシステム100を図示している。このシステムにおいて実行するコンテナサイズの制御、コンテナ間のリンク設定は図1Bで詳しく説明されるホストコンピュータ101の制御の下に実行される。図6で記述されるプロセスは、レイアウト制御装置であるホストコンピュータ101内で実行され、システム100上で実行可能となるレイアウト編集アプリケーションプログラム121(本発明のレイアウト制御プログラム)のようにソフトウェアの全体、あるいはその一部分で実行される。特にレイアウト編集や印刷のステップはホストコンピュータ101によるソフトウェアによって実行される。
【0017】
ソフトウェアは、例えば、以下に記述されるような記憶装置を含むコンピュータの可読媒体に格納される。ソフトウェアはコンピュータの可読媒体からホストコンピュータにロードされ、実行される。そのようなソフトウェアや媒体に記録されたコンピュータプログラム、あるいはそのプログラムを格納するコンピュータの可読媒体は、コンピュータと協働したドキュメントのレイアウト編集やバリアブルデータ印刷に必要な演算処理や表示制御、レイアウト制御、コンテンツに関する情報処理を実行する手段としてコンピュータの機能を特定する。
【0018】
ホストコンピュータ101はキーボード132やマウス133のようなポインティングデバイスなどの入力装置、ディスプレイ装置144や状況に応じてはローカルプリンタ145を含む出力装置と接続する。入力/出力(I/O)インターフェース138はホストコンピュータ101をネットワーク107に接続してシステム100を他のコンピュータ装置(例えば、データベースサーバ117)に接続することができる。そのネットワーク107の典型はローカルエリアネットワーク(LAN)、あるいはワイドエリアネットワーク(WAN)である。
【0019】
ホストコンピュータ101は典型的に少なくとも1つのプロセッサーユニット135、例えば半導体のランダムアクセスメモリ(RAM)やリードオンリーメモリ(ROM)から構成されるメモリユニット136、ビデオインターフェース137を含むINPUT/OUTPUT(I/O)インターフェース、キーボード132やマウス133のためのI/Oインターフェース143を含んでいる。記憶装置139はハードディスクドライブ140やフロッピー(登録商標)ディスクドライブ141を含んでいる。ここでは図示されていないが磁気テープドライブもまた記憶装置として使用することができる。
【0020】
CD−ROMドライブ142は不揮発性のデータソースとして提供される。ホストコンピュータ101はGNU/LINUXやマイクロソフトウィンドウズ(登録商標)のようなオペレーションシステムや、典型的にはオペレーションシステムに従い形成されたコンピュータシステムのオペレーションによって、相互接続バス134を介して通信を行うホストコンピュータ101のプロセッサユニット135からI/Oインターフェース143を利用することができる。図1Aに示したホストコンピュータ101を含んだシステムの例としては、IBM互換PCやSUN のSparcstation、あるいはそれらを含んだコンピュータシステムが考えられる。
【0021】
レイアウトアプリケーションプログラム121は典型的にはハードディスクドライブ140に常駐し、プロセッサユニット135により読み出され、実行される。プログラム121を記憶する記憶装置139とネットワーク107からフェッチされるデータはハードディスクドライブ140、またはこれに呼応してメモリユニット136が使用され、アプリケーションプログラム121がCD−ROMやフロッピーディスク上でエンコードされ、対応するCD−ROMドライブ142やFDD141を通じて読み込まれユーザに提供される。
【0022】
あるいはもう一つの方法としてアプリケーションプログラム121はネットワーク107からユーザによってインストールするようにしてもよい。さらにソフトウェアは磁気テープまたはROMまたは集積回路、光磁気ディスクまたは無線またはホストコンピュータ101とその他のデバイス間の赤外線通信、PCMCIAカードのようなコンピュータ可読カード、そしてEメール通信やWEBサイト上の記録情報を持つインターネットやイントラネットを含む、他の適当な大きさのコンピュータ可読媒体からホストコンピュータ101内にロードすることもできる。但し、これらのコンピュータ可読媒体は、単に関連するコンピュータ可読媒体の規範であり、媒体の種類がこれらに限定される趣旨ではなく、他のコンピュータ可読媒体も使用することも可能である。
【0023】
また、レイアウト編集と名づけられたアプリケーション121はバリアブルデータ印刷(VDP)を行うためのプログラムモジュールであり、2つのソフトウェアコンポーネントを含んでいる。これらのうち1つめのモジュールは、レイアウトエンジンモジュール105であり、これはデータが流し込まれる部分表示領域であるコンテナ(矩形の範囲)のサイズや位置の制限に従ってデータベース119に格納されているバリアブルデータから1レコードずつ読み込み、読み込んだデータとコンテナの制限とから、読み込んだデータが流し込まれるコンテナの大きさや位置等を計算するためのソフトウェアモジュールである。レイアウトエンジン105は各部分表示領域(コンテナ)のサイズと位置を決定するアプリケーションとして動作し、図示省略したプリンタドライバに描画情報を出力することで、プリンタドライバがバリアブルデータドキュメントのイメージ描画処理を行い、印刷データを生成する。
【0024】
2つめのモジュールであるユーザインターフェースモジュール103はユーザにドキュメントテンプレートを作成させ、ドキュメントテンプレート内でデータソースとコンテナとを関連付けるメカニズムを提供するモジュールである。ユーザインターフェースモジュール103とレイアウトエンジンモジュール105はコミュニケーションチャネル123を介して通信することが可能である。ドキュメント作成のためのデータソースはデータベースアプリケーションを動かしている他のコンピュータによって構成されたデータベースサーバ117上にあるデータベース119に格納されている。ホストコンピュータ101はネットワーク107との接続を介してデータベースサーバ117と通信することができる。バリアブルデータ印刷を実行する場合、レイアウト編集アプリケーション121はホストコンピュータ101か、若しくは他のコンピュータで構成されるファイルサーバ115に保存されるドキュメントテンプレートを生成する。またレイアウト編集アプリケーション121はデータとマージされたドキュメントテンプレートによって構成されたドキュメントを生成する。これらのドキュメントはホストコンピュータ101の記憶装置139に保存されるか、ファイルサーバ115に保存されるか、あるいはプリンタ113に直接印刷される。
【0025】
プリントサーバ109は直接ネットワークに接続していないプリンタ113にネットワーク機能を提供するコンピュータである。プリントサーバ109とプリンタ113は典型的な通信チャネル111を介して接続する。
【0026】
図2はレイアウトエンジンモジュール105をホストコンピュータ101の他にエンジンサーバ227にもレイアウトエンジン225を設けた構成を示す図である。エンジンサーバ227は典型的なコンピュータにより構成され、ファイルサーバ115に保存されたドキュメントテンプレートは印刷や他の目的がある際、レイアウトエンジン225によってドキュメントを生成するためにデータベース119に保存されたデータと結合することができる。そのようなオペレーションはユーザインターフェースモジュール103の制御の下、ユーザインターフェース(UI)画面を介して入力され、特定のレコードのみ印刷するように設定することができる。
【0027】
(アプリケーション構成図)
(メインウインドウ)
図3で示されるアプリケーションウインドウ301は、ユーザインターフェースモジュール103(図1)によって、操作時にディスプレイ装置144に表示される。アプリケーションウインドウ301は、非表示にすることや、スクリーン上の色々な場所に移動することが可能なメニューバー302とツールバー303、そしてマウス133の位置・動作によって場所を移動可能なワークエリア306とオプションのパレット311とカーソル/ポインタデバイス313を有しており、これらにより特徴付けされる。
【0028】
メニューバー302は、周知の技術として知られているように、メニューオプションの階層の下に拡張される多くのメニューアイテム304を有し、ツールバー303は、アプリケーションの特別なモードによって非表示にしたり、または表示することが可能な多くのツールボタン305を有する。オプションのルーラー308はワークエリア内のポインター、ページ、ライン、マージンガイド、コンテナまたはオブジェクトの位置を示すために使われる。パレット311はバリアブルデータライブラリのような追加機能にアクセスするために使われる。パレット311は移動、リサイズ、クローズをするためのウインドウコントロール機能を提供するボタン312を有する。パレット311の表示はオプションで、ワークエリアの前面に表示することもでき、あるいは背面に隠すこともできる。また、このパレット311に対する表示制御は、アプリケーションウインドウ301の範囲内のみに制限したり、あるいはアプリケーションウインドウ301の外側に部分的、あるいはその全体を表示するようにすることもできる。
【0029】
ツールバーエリア303には少なくとも、ユーザによる選択が可能な「ボタン」(403〜406)を備える(例えば、図4を参照)。以下、ボタン403〜406を説明する。
【0030】
選択ツールボタン403は、コンテナの辺を選択、移動、サイズ変更、そしてコンテナのロック(固定)、あるいはロック解除をするために使われる。コンテナは、複数のコンテナの周りをドラッグする、あるいは複数コンテナを選択する間にCTRLキーを押しつづけることによって、複数のコンテナの選択を可能にする。
【0031】
イメージコンテナツールボタン405は、スタティック或いはバリアブルイメージを持つコンテナを作成するために使われる。
【0032】
テキストコンテナツールボタン404は、スタティック或いはバリアブルテキストを持つコンテナを作成するために使われる。
【0033】
リンクツールボタン406は、コンテナ間に関連付けを行うリンクを作成するために使われ、リンクの距離をコントロールするためにも使われる。
【0034】
これらのボタンは、周知の技術であるように操作状況に合わせて変化するアイコンとして実装される。
【0035】
レイアウト編集アプリケーション121の図3に示したアプリケーションウインドウ301は、ページ内に各コンテナやリンクをレイアウトすることで、基本レイアウトを決定することができる。基本レイアウトとは、バリアブルデータプリントで基本となるレイアウトのことである。基本レイアウト内の各コンテナが固定コンテナである場合は、すべてのレコードの印刷結果のレイアウトは同じになる。また、基本レイアウト内の各コンテナが後述する可変コンテナである場合は、レコード単位に読み込まれるデータの量やサイズにより各コンテナのサイズや位置が、後述する制約の範囲内で変動することになる。よって、レイアウト編集アプリケーション121で作成されるドキュメントテンプレートは、あくまで基本レイアウトを決定するものであり、可変コンテナが含まれる場合は、最終的な印刷物のレイアウトは読み込まれるデータによりレイアウト調整されることになる。
【0036】
(ドキュメントテンプレート)
図3に示したワークエリア306はドキュメントテンプレートのデザインを表示・編集するために使用される。これはユーザに下準備で印刷されたドキュメントの概観をデザインすること、そしてマージされたドキュメントが、バリアブルデータの量やサイズに基づいてどのように変化するかを理解することを可能にするものである。外部のデータベースがテンプレートにリンクされている場合には、現在のドキュメントのプレビューができるように、バリアブルテキストとイメージをそれらのコンテナに表示することができる。ドキュメントの構造とバリアブルデータコンテナの表示は、カーソルをコンテナ上に移動させたときや、コンテナを選択したときにいつも表示するようにすることができる。
【0037】
ワークエリア306はスクロールバー307とオプションのルーラー308とドキュメントテンプレート309に特徴付けられる。ドキュメントテンプレート309はページが複数あることを示すことができる。与えられたドキュメントテンプレートのページサイズは、周知の技術としてユーザによって指定される。例えばメニューの「ファイル」から「ページ設定」を選択することでページサイズを設定するダイアログを表示し、そこでユーザが指定したページサイズが反映されることになる。それぞれのドキュメントにおける実際のページ数は、バリアブルデータによって変化する可能性があり、もし1ページ内にバリアブルデータを収めることができず、所定の用紙サイズのページに各コンテナを収めるような制約が基本レイアウトになかった場合には、追加のページは自動的に作成される。所定の用紙サイズのページに各コンテナを収めるように制約(後述するアンカーアイコン等により設定可能である)が基本レイアウトに設定されている場合は、ページ内で各コンテナがお互いに押したり押されたりしながら、各コンテナサイズと位置が決定され、必要に応じて流し込まれるバリアブルデータが縮小され、レコード毎に動的にレイアウトが決定される。
【0038】
図3において破線で示されるページ内の境界線は、ページ上の印刷可能なオブジェクトの最大幅を示すものであり、任意に設定することが可能なページマージン310である。また、図4は1ページのドキュメントテンプレート309上に表示することが可能なオブジェクトの例を示す図であり、図4では複数のコンテナ407及び408が示されており、コンテナの辺414の位置を固定するアンカーアイコン409と固定されていない辺410、リンク412そしてスライダー413によりコンテナ間の相互の関係が規定されている。アンカーアイコン409は、コンテナの矩形の角、辺、またはコンテナの中央に設定することが可能である。アンカーアイコン409が設定されると、設定された個所の位置が固定となる。つまり、図4の例では、アンカーアイコン409は、コンテナ407の左上の角に設定されているため、コンテナ407はバリアブルデータが流し込まれ、バリアブルデータの画像サイズもしくはテキスト量が多い場合に、右方向及び下方向に拡大可能であることを示している。アンカーアイコン409が辺に設定されている場合は、その辺が固定となり、その他の3辺の各方向に拡大可能である。また、アンカーアイコン409がコンテナの中央に設定されている場合は、コンテナの中央位置が固定となり、コンテナ矩形の中央位置が変わらないように、4方向に拡大可能である。リンク412は詳細は後述するが、コンテナ407とコンテナ408が関連付けられていることを示しており、このリンクに設定されている長さ(範囲指定が可能)を保ちつつ、コンテナ408が右方向に移動可能であることを示している。スライダー413は、設定されている辺と水平方向に移動可能であることを示している。
【0039】
(コンテナ)
ここで、コンテナについて説明する。コンテナは、ドキュメントテンプレート内にバリアブルデータファイルから固定あるいは可変のテキスト/イメージがレコード単位に流し込まれ、描画されるスペース(これを部分表示領域と呼ぶ)であり、図4に示されるように他のコンテナやオブジェクトと共にレイアウトされる。ユーザインターフェース画面を介して、ユーザからの操作指示により、コンテナはマウス133の操作により移動、サイズ調整、再作成される。
【0040】
コンテナは、アンカーアイコン409、リンク412、スライダー413によりコンテナの変形に関する拘束条件が規定されている。テキストやイメージデータの情報量に応じてその変形が許容されている方向にコンテナスペースの変形が制御されて、テキストデータやイメージデータがそのコンテナ内にレイアウトされる。2つのコンテナに関して相互に変形が必要となる場合、各コンテナに収納するべきテキストデータやイメージデータの量に応じて、相互のコンテナの変形がバランスするように(各コンテナにストレスの無い状態)に各コンテナの形状が制御される。
【0041】
コンテナはポインティングデバイスとしてのマウス133の動作によりワークエリア306内の位置が特定され(図3の313)、ユーザインターフェースとしての画面内(図3)で移動、サイズ調整が施され、新たなコンテナを追加することも可能である。コンテナは、アンカーアイコンや、リンクそしてスライダーによりコンテナ間の相互の関係等の変形に関する種々の条件が設定され、コンテンツを表示する視覚的表現、そしてコンテナ間のインタラクションとコンテナ内の情報の編集機能を有している。ここで、コンテナを定義すると以下のようになる。
【0042】
(1)コンテナは固定あるいは可変のコンテンツが入力され、可変コンテンツは、データソースからデータをとってきて、異なるドキュメントでは異なるデータに応じてコンテナサイズを可変するという意味でダイナミック(動的)である。可変コンテンツはアニメーション化されたもの、あるいは他の方法で時間を変更するコンテンツを含むことは印刷に適合していないため意図していない。同様に、固定コンテンツはコンテナを使って生成される全てのドキュメントで、同じように表示される。けれども、可変コンテンツとリンクが設定されている場合、可変コンテナの動作によって、固定コンテンツはそれぞれのドキュメントで表示位置が異なるように表示制御される。
【0043】
(2)コンテナは、コンテンツに適用される背景色、ボーダー、フォント・スタイルのようなテキスト設定のような装飾機能を持っている。このような設定をコンテナ属性と呼ぶ。コンテナ属性は、各コンテナごとに設定可能であるが、あるコンテナと同じコンテナ属性であるという設定を行うことも可能である。
【0044】
(3)コンテナはドキュメントを生成したときにデータソースからのデータとマージされる。装飾機能は、どんな固定コンテンツでもそうであるように、典型的に印刷された出力物に対して反映され、装飾が反映された結果は可視化される。可変コンテンツはデータソースから特定のデータの表示をもたらす。すなわち、その特定のデータに対して、コンテナに設定されている条件に従い、コンテナのサイズが可変に設定される。可変に設定されたコンテナのレイアウト、およびコンテナ内の特定のデータ表現は、例えば、プリンタ113を介して印刷されるか、ディスプレイ装置144上で表示されるか、その両方により処理することが可能である。
【0045】
(4)コンテナの設定に関し、システムはユーザインターフェースモジュール103を備え、例えば、コンテナの編集そして表示設定のためのインタラクティブなグラフィカルユーザインターフェース(GUI)を有する。そして、ユーザインターフェースの要素はディスプレイ装置144上に表示される。しかしドキュメントは印刷されない。ユーザインターフェースモジュール103は、背景色やフォントのようなコンテナに関する装飾機能のいくつかをインターフェース画面上に表示させ、これらの装飾機能をコンテナの設定、編集、コンテナ表示に追加することができる。
【0046】
(5)更に、ユーザインターフェースモジュール103による設定の例としては、コンテナ間のボーダー、あるいは、コンテナのサイズや位置を対話的に変更、表示するためにコンテナに設定さするコーナー部のアイコンや、あるいはデータソースからデータをマージしたとき、コンテナの動作(例えば、上塗りした数、線、アイコンの設定、テキストの編集)を設定する。
(コンテナに対する制約)
コンテナはそれぞれのドキュメントにおけるコンテンツの内容を表示するために、コンテナをコンテンツと結びつけて表示制御、レイアウト制御するための制約がある。これらの制約(固定・可変コンテンツをコンテナと結びつけること)は、ユーザが一つのドキュメントテンプレートから多数のドキュメントをコントロールする主要な方法である。制約の例は、たとえば、コンテナのコンテンツの高さは、最大値4インチとするような制約が挙げられる。もうひとつの制約としては、コンテナのコンテンツの左エッジは、それぞれのドキュメントで同じ水平位置で表示しなければならないとするような制約である。ここに記述される内容は、GUIを使ってこのような制約を表示、編集のために設定することが可能である。
【0047】
イメージがページ上に定義された位置を持っているように、コンテンツの配置もその位置が特定される。コンテナは位置とサイズを持ち、それらはバリアブルデータ印刷において、コンテナ内に挿入されるコンテンツの内容に応じてコンテナのレイアウトが設定された条件の下、コンテンツの内容を表示・編集することを可能にする。コンテナは、ユーザにドキュメントのコンテンツのサイズ・位置を指定することを可能にする。いくつかのドキュメントは一つのドキュメントテンプレートから生成されるので、コンテナはユーザインターフェースモジュール103により与えられるコンテナに対する制約を指定することができる。
【0048】
1つのコンテナを構成する辺は、関連付けられたコンテンツがドキュメント内で表示される仮想の境界線を定義する。たとえば、矩形のコンテナの左辺は、関連付けられたコンテンツが配置される左側の位置を与え、同様に、コンテナの高さは生成されたドキュメントに関連付けられたコンテンツの高さの制約を与える。
【0049】
以下の記載において、コンテンツの表示を制限するために使われるある値を定義している用語『固定』は、全てのドキュメントで同じである。
【0050】
(1)コンテナの幅が固定なら、関連付けられたコンテンツに割り当てられる幅は、全てのドキュメントで同じになる。
【0051】
(2)コンテナの高さが固定なら、関連付けられたコンテンツに割り当てられる高さは、全てのドキュメントで同じになる。
【0052】
(3)距離の制約が固定なら、指定された距離は全てのドキュメントの制約となる。
【0053】
(4)コンテナの左右辺が固定の場合、コンテナの高さあるいは垂直方向の位置は、コンテンツを完全にコンテナ内に収容するために、コンテナサイズは変形が許容されている高さ方向あるいは垂直方向に変えることが可能である。
【0054】
(5)コンテナの上下辺が固定の場合、コンテナの幅あるいは水平位置は、コンテンツを完全にコンテナ内に収容するために、コンテナサイズは変形が許容されている幅方向あるいは水平方向に変えることが可能である。
【0055】
(6)コンテナの垂直軸はコンテナの右と左辺の平行で、そして中間に位置される想像上の垂直線である。もしコンテナの垂直軸が固定なら、コンテナの左右辺の水平位置の平均は、すべてのドキュメントで同じである。この制約で、コンテナの幅は変化するかもしれない、左右辺両方が異なったドキュメントで、垂直軸にもっとも遠いかもっとも近いかもしれない、しかし軸は全てのドキュメントで同じ水平位置にある。コンテナの高さと水平位置はこの制約によって影響されない。
【0056】
(7)同様に、もし水平軸が固定なら、コンテナの上そして下辺が垂直に位置されることを制約する、けれども高さは、この制約によって影響されない。
【0057】
(8)水平、垂直軸両方が固定なら、コンテナの中心位置が固定されていることを意味する、しかし、幅・高さはこの制約によって影響されない。
【0058】
(9)コンテナの角、コンテナの辺の中間位置、あるいはコンテナの中心位置が固定なら、すべてのドキュメントで同じ場所で、そしてコンテナに関連付けられた同じ場所で表示される。例えば、もしコンテナの左上角が固定なら、配置されたコンテナの左上位置が全てのドキュメントで同じになることを意味している。
【0059】
(10)垂直辺あるいは垂直軸は、ページの左辺もしくは右辺、あるいは左ページマージンもしくは右ページマージン、あるいは他の水平位置に関連付けされて固定することができる。同様に、水平辺あるいは水平軸はページの上辺もしくは下辺、あるいは上下ページマージン、あるいは他の垂直位置に関連付けされて固定することができる。
【0060】
「固定」の反対は、コンテナの辺、軸、角、中間位置、あるいはドキュメント制約がドキュメント間(レコード間)で変化するかもしれないことを意味する「可変」である。例えば、ページ内では、バリアブルデータのサイズや量により、動的にレイアウトが変更されることを期待するが、特定のコンテナについては、大きさや位置を固定にしたり、また、ページの角のコンテナの四隅は固定にしたいということを所望する場合がある。そのため、本レイアウト編集アプリケーション121では、各コンテナ(部分表示領域)について、辺、軸、角、中間位置等を固定にするか、可変にするかを適宜設定できるようにした。これにより、ユーザはドキュメントテンプレート180の基本レイアウトを決定する場合に、ユーザが所望とするように基本レイアウトを作成することができる。
【0061】
(コンテナ表示・編集)
(新規コンテナの作成方法)
コンテナは、テキストコンテナとイメージコンテナの2種類ある。テキストコンテナはテキスト、そして埋め込みのイメージを持つ。イメージコンテナは、イメージだけを持つ。図4で参照されるように、新規テキストコンテナとイメージコンテナは、テキストコンテナツールボタン404、あるいはイメージコンテナツールボタン405をマウス133でクリックし、テンプレート309に四角形をドラッグすることによって、ドキュメントテンプレート309上に作成される。コンテナは、適切なツール404、405をアクティブにした後に、ドキュメントテンプレート309上でマウス133をクリックすることによって作成される。デフォルトサイズのコンテナが挿入されるか、新規コンテナの寸法を入れるために、ダイアログボックスあるいは他のプロンプトが提供される。コンテナは自動的に前もって定義され、計算されたスキーマによって作成され、ドキュメントテンプレート309上に配置される。ここで生成されたコンテナをマウス等の入力手段により選択し、右クリックでプロパティを指示する等の操作を行うことにより、コンテナのプロパティダイアログが表示され、コンテナの制約を設定することができる。コンテナのプロパティダイアログUI(部分表示領域設定手段に相当する)では、上述した各種の制約を設定することができる。また、コンテナのプロパティダイアログでは、コンテナのサイズ(幅、高さ)や位置を決定することができ、可変サイズにする場合は、コンテナの基本パターン(基本サイズと基準位置)を設定し、更に、最大コンテナサイズ(幅、高さ)と最小コンテナサイズ(幅、高さ)を設定することが可能となっている。
【0062】
(コンテナの表示方法)
図5A〜5Dはコンテナを構成する辺に対するルールを例示的に説明する図である。レイアウト編集アプリケーション121は、辺の状態を表現するために、塗りつぶし線(503)あるいは点線(504)で辺を描き、アンカー(辺の近くに描画された506、507、509によって示されるような線、形状、アイコン)、ハンドル(移動、修正するために辺、形の近くに描画されたコントロール点、502)、スライダー(辺の両サイドに描画された短い並行線、図4の413)、拡縮アイコン(505)、そして色を特徴として持っている。
【0063】
図5A〜5Dに示すコンテナの表示方法のルールは、つぎの通りである。
【0064】
1. それぞれの辺を固定するために、塗りつぶし線で描画する。
【0065】
2. もし幅が固定なら、左と右の辺を塗りつぶし線で描画する。
【0066】
3. もし高さが固定なら、上と下の辺を塗りつぶし線で描画する。
【0067】
4. 軸は描画しない。
【0068】
5. まだ描画されていない全ての辺は、それぞれの辺の近くに拡縮アイコンが描画され、点線になる。
【0069】
6. 垂直辺あるいは軸のそれぞれのペアで、もし両者が固定なら、交差点にアンカーが描画される。
【0070】
7. それぞれの固定辺で、もし辺のどこにもアンカーが描画されていなければ、エッジの中央にスライダーが描画される。
【0071】
8. 垂直辺あるいは軸のそれぞれのペアで、もしアンカーやスライダーが描画されていなければ、交差点にハンドルが描画される。
【0072】
上述のルール1、2、3で定義された線は、前述したように固定あるいは制限されているため、実線で描画される。ルール5のように可変の辺は、点線で描画される。ルール6、7、8で定義された固定された点は、アンカーを表示し、いくつかの固定された辺はスライダーを表示し、他はハンドルを表示する。
【0073】
上記のルールは、ユーザにより後で設定された制約が優先される。つまり、後で別の制約が設定された場合、上記のルールが描画されるべき辺に影響すれば、実線や点線の描画内容が変更されることになる。
【0074】
可変の辺が描画される場所は、コンテナのコンテンツに依存する。後で記述されるように、ドキュメントテンプレートにコンテンツがマージされて、ユーザインターフェースで可視になることを意味する、『動的な校正処理』が使われる。代わりの実行手段としては、すべてのドキュメントで平均化されるコンテナのコンテンツエリア、あるいは可変の辺がユーザインターフェースで、どこにレイアウトされるべきか決定するほかの手段で使われることができる。レイアウト編集アプリケーション121は以上のルールに従って、コンテナの表示制御、レイアウト制御を実行することができる。
【0075】
コンテンツの表現は、コンテナの辺に設定されたアンカーアイコン、スライダーアイコン等の設定に従い、サイズを可変にすることが可能なコンテナに挿入されることにより可視化される。コンテナに設定される具体的なアイコン及びコンテナを構成する辺は、以下に説明するように機能する。
【0076】
図4の辺410のように、点線はコンテナに挿入されるコンテンツに依存して、ドキュメント内の辺の位置が移動可能であることを意味する。そして、実線414は位置が制限された辺を意味する。
【0077】
アンカーは辺または軸が交差した場所が固定されていることを意味する。図4のアイコン409は、交差する辺414が固定されていることを示すアンカーアイコンの例である。
【0078】
スライダーは関係付けられた辺が、その辺の垂直方向に固定されているが、並行移動する可能性があることを意味する。幅・高さのサイズは、レイアウト編集アプリケーション121の制御の下、副次的なダイアログウインドウに表示され、コンテナサイズとして許容される基本値・最小値・最大値の基本パターンを設定することが可能である。
【0079】
図5Aにおいて、コンテナ501を構成する実線で示される辺503は固定であり、点線で示される辺504は幅・高さ両方が可変である。拡縮アイコン505は、隣接する辺504が可変であることを示す。また、図5Bにおいて、コンテナ501を構成する実線で示される辺503は固定であり、同図において、アンカーアイコン506は、辺503が交差する高さ方向および幅方向に変位が拘束されることを示す。
【0080】
図5Cでは、コンテナ501は、コンテナの拡大あるいは縮小が任意のアンカーアイコン507で示されるような中心点の周りに幅方向及び高さ方向に均等に広がるという状態に設定されており、幅・高さ両方が各辺において可変である。また、図5Dにおいて、コンテナ501は、上辺508に対してスライダ−アイコン509が設定されており、固定されているが、点線で示される辺502は幅及び高さの両方が可変である。この場合、アンカーアイコン509を通る中心軸(垂直軸)を基準として、辺502の左右方向、及び上下方向に変位をすることが可能であり、これによりコンテナのサイズを変えることが可能である。ここでの拡大/縮小は、アンカーアイコン507の位置が常にコンテナ501の中心点となるようにレイアウト調整される。
【0081】
(リンクの設定方法)
図6はレイアウト編集アプリケーション121によるリンクの設定方法を示すフローチャートであり、図7はユーザインターフェースの画面表示例を示す図である。以下、図6、図7を用いてコンテナにリンクを設定する操作方法について説明をする。まず、リンクをコンテナに設定するためには、リンク設定の対象となるコンテナ(最低2つ)を作成する(S601)。図7(A)は、2つのコンテナ701、702が作成された状態を示している。
【0082】
次に、前述したリンクツールボタン(図4を参照)を選択した状態にする(S602)。ここで、図7(A)のコンテナ701と702は、前述した図4のコンテナ407と408と同じ内容のものを示しており、固定されている辺(実線で示される)によりコンテナが構成されることを示している。また、アイコン703と704は、図4におけるアイコン409と同じアンカーアイコンであることを示し、705はマウスポインタを意味している。
【0083】
ステップS602において、リンクツールボタン406の選択が完了すると、次に、コンテナを選択する(S603)。この選択は、リンクを設定する対象となるコンテナの片方(たとえば、701)をマウス133によりクリックすることでコンテナは選択される。次に、リンクを設定する他方のコンテナ(たとえば、702)をマウス133によりクリックすることで、リンクを設定する他方のコンテナの選択が完了する(S604)。
【0084】
図7(B)の706はステップS603でマウス133をクリックした位置(P1)とステップS604でマウスをクリックした位置(P2)とを結ぶ、マウスポインタ133の概略的な軌跡を示す線分であり(図6のS605)、この線分が交わるコンテナの辺711及び辺712の間にリンク707が設定され、最終的にリンク707がコンテナ間に設定された状態のインターフェース画面が更新される(S606)。リンク707が設定されたことにより、コンテナを表示するための画面表示も自動的に切り替えられる。切り替えられた画面(図7(C))において、辺708は点線で示されている辺であり、前述した通り可変の辺を示している。固定の辺(リンク設定前の711、712が対応)から可変の辺に708が切り替えられたのは、リンク707を設定したことにより、コンテナ701、702の辺を可変にする必要があるためであり、リンク707を設定したにもかかわらず、全ての辺が固定とすると、コンテナ間の相対的な関係をリンクにより特定するという矛盾を防ぐためであり、レイアウト編集アプリケーション121の制御の下、自動的に行われる処理である。
【0085】
また、709は図5の505と同様に機能し、リンク707を設定したことにより、コンテナ701、702が変位できる方向をユーザに視覚的に示す識別用の表示である。図7(C)の例では、左のコンテナ701の右辺と右のコンテナ702の左辺が可変に変化したが、これは一例であり、左のコンテナ701、右のコンテナ702が、図4の413で示したスライダーを持つ設定により辺708が可変であることを表示するようにすることもできる。以上の処理はレイアウト編集アプリケーションの制御のもとに実行することができる。
【0086】
(可変長のリンク)
図46のインターフェース画面において、一般的な可変リンク4609が示されている。同図においては、図4と同様にアプリケーションウィンドウ301とツールバー303があり、ドキュメントテンプレート309上にコンテナ4603とコンテナ4604が存在する。それぞれのコンテナは典型的にアンカーアイコン4601、アンカーアイコン4602と固定された辺4605、辺4606から成り立つ。各コンテナ4603と4604の間には可変サイズのリンク4609があり、それぞれのコンテナを結んでいる。コンテナ4603とコンテナ4604の間にはリンクが設定されているのでそれぞれの右辺4607と左辺4608は点線で表現されている。このため各コンテナにインジケーター4610、インジケーター4611が表示され、これは辺4607と辺4608が可変であることを示している。
【0087】
また、図48はリンク4609の情報がセットされているダイアログウィンドウ4801の例を示す図である。このダイアログは典型的にタイトルバー4802、ツールボタン4803、ダイアログウィンドウの開閉を行うボタン4804、各種の情報をセットするエリア4809で構成されている。このダイアログウィンドウではリンクタイプが可変長(4807)のリンクであるか、あるいは固定長(4806)のリンクであるかの択一的な選択が行える。可変長の場合、リンクの長さの最大値(4812)そして最小値(4810)、また基準値(4811)が設定できる。ここで各コンテナ間の距離の基準値4811は、データを流し込んだ際に各コンテナのサイズが変更されない場合に用いられるリンクの長さである。
【0088】
図47は自動レイアウトシステムにおける可変リンクを設定するフローチャートである。マウス133によりリンク4609をクリックし、選択する(S4702)。レイアウト編集アプリケーション121は、マウスの右クリックあるいはキーボードの特定のキーにより選択されたリンク4609のプロパティダイアログウィンドウ4801を表示する(S4703)。この状態ではリンクサイズは可変ではなく固定であるため、固定4806がリンクタイプ4805において選択されている。リンクを固定サイズから可変サイズに変更するために、リンクタイプ4805においてリンクサイズを可変に設定する可変4807を選択する(S4704)。これによりリンク間隔4808内に配置されている最大値4812、最小値4810、基準値4811が有効化され、数値の設定が可能となる。ここで、リンクの可変サイズを設定するために、そのリンクの長さの最大値を4812、最小値を4810、基準値を4811において設定する(S4705)。一般的なダイアログウィンドウ開閉ボタン4804によって設定を適用すると図46のリンク4609のような状態にリンクのUI表示が変化する。(S4706)このダイアログウィンドウ4801の設定情報はメモリに格納される。
【0089】
図49は固定サイズのリンクを使用した場合のレイアウト結果を示す図である。レイアウト編集アプリケーション121のレイアウトエンジンモジュール105におけるレイアウト計算方法は前述したとおりに従って行われる。例えば図46においてコンテナ4603とコンテナ4604にそれぞれ違ったサイズのデータが挿入された時、それぞれのコンテナはデータの大きさを最適と考え、コンテナ4603は挿入されたイメージサイズになる枠4904(最適コンテナサイズ)に近づこうと右方向へ大きく、同様にコンテナ4604も挿入されたイメージサイズになる枠4905(最適コンテナサイズ)に近づこうと左方向へやや大きくサイズを変更しようとする。
【0090】
しかしコンテナ4603とコンテナ4604の間には固定サイズのリンク4903が設定されているとすると、コンテナ4603とコンテナ4604はそれぞれアンカー4601とアンカー4602によってそれぞれ左辺4612と右辺4613は移動出来ないため、変更しようとするサイズがリンクサイズを上回ってしまう。そしてこのリンクサイズは固定されているためレイアウト計算時に優先的に計算されるためコンテナ4603(図46)とコンテナ4604(図46)のサイズが変更されることになる。その結果、コンテナ4603とコンテナ4604はデータに合わせた最適なサイズを確保することが出来ず、最終的に図49のコンテナ4901とコンテナ4902のように最適なサイズに比べて枠4904、枠4905分小さくなってしまう。つまり、リンク4903のサイズは固定であるためコンテナ4901とコンテナ4902は最適サイズを達成していない。
【0091】
図50はリンクを可変サイズにした場合を示している。この場合、上記の例でコンテナ4603とコンテナ4604の間には可変サイズのリンク4609(図46)が設定されているとすると、コンテナ4603とコンテナ4604のサイズが変更される際に、リンクサイズが縮まることでコンテナ4603とコンテナ4604のサイズが上記の例より大きくなることができ、挿入されるデータサイズに合わせた最適なサイズを達成し、あるいはより挿入データサイズ(最適サイズ)に近づけてコンテナの枠を計算することが出来る。その結果が、図50のコンテナ5001とコンテナ5002である。可変リンク4609はレイアウト計算の結果、可変リンク5003のサイズとなり、この場合コンテナ5001とコンテナ5002は変形が連動して、それぞれ最適なサイズ(データサイズに合った大きさ)になっている。以上の処理は、プロセッサユニット135、レイアウト編集アプリケーションの制御のもとに実行することができる。
【0092】
(レイアウト計算方法(全体フロー))
本実施形態のレイアウト編集アプリケーションは、ユーザインターフェース103を用いてコンテナを作成し、そのコンテナ間に関連付け(リンク設定)を行ってレイアウトを作成するレイアウトモードと、レイアウトエンジン105により、作成したレイアウトにデータソースの各レコードを挿入して、実際にレコードが挿入された後のレイアウト結果をプレビューするプレビューモードに分けられる。このプレビューモードにおいて、実際のレコードが挿入され、前述した優先順位に従ってレイアウトを計算する。ただし、プレビューモードは、表示上でのレイアウト計算である。実際に印刷する場合においても、レイアウトエンジン105が各コンテナにデータを挿入してレイアウトを計算するが、その際の計算方法はプレビューモードと同じである。図8はレイアウト計算のフローを示している。
【0093】
まず、プレビューモードを選択する(S801)。自動レイアウトシステムでは、コンテナを作成して、そのコンテナ間に関連付けを行い、レイアウトを作成するレイアウトモードと、作成したレイアウトに表示するデータレコード(以下、「レコード」)を挿入して、実際にレコードが挿入された後のレイアウト結果をプレビューするプレビューモードに分けられる。このプレビューモードにおいて、実際のレコードが挿入され、レイアウトを計算する。ただし、プレビューモードは、表示上でのレイアウト計算である。実際に印刷する場合においても、レコードを挿入してレイアウトを計算する。その際の計算方法も同じである。プレビューモードになったら、プレビューするレコードを選択して挿入する(S802)。レコードの挿入を行うと、そのレコードをレイアウトするためにレイアウト計算を行う(S803)。そして、処理ステップS803で計算されたレイアウトを表示し(S804)、他のレコードについてもプレビューを行うかどうかを判断する(S805)。処理ステップS805で、他のレコードについてプレビューを行う必要がないと判断した場合は(S805-No)、処理をステップS807に進め、プレビューモードを終了する。一方、ステップS805の判断で、他のレコードについてプレビューを行うのであれば、他のレコードを選択して再度レイアウト計算を行い(S803)、プレビューを行う(S804)。プレビューモードでなく印刷時においては、印刷するレコード全てについて順にレイアウトの計算を行う。したがって、処理S804は印刷時の処理においては必要がないステップである。ステップS805は印刷するレコードを全て処理したかの判断を行う。ステップS803でレイアウト計算された結果を、描画出力して出力し、プリンタドライバを用いて印刷データとして生成し、プリンタに印刷データが出力される。この場合、全てのレコード(印刷すべく指定された全レコード)について印刷データの出力が終了した時点で本処理を終了することになる。以上の処理は、プロセッサユニット135の制御のもとに実行することができる。
【0094】
(レイアウト計算方法)
図9はレイアウト計算の詳細な処理の流れを説明するフローチャートであり、図10はそのときのユーザインターフェース画面の表示例を示した図である。本図はレイアウト計算の処理方法についてのみ説明するためのフローチャートであるため、バリアブルデータプリントの1レコードの印刷/プレビュー時のレイアウト計算方法に相当する。複数レコードの場合は、下記の処理が繰り返されることになる。
【0095】
まず、レイアウト編集アプリケーション121は、レイアウトを計算するコンテナの集合を求める(S901)。レイアウト計算は、関連付けられたコンテナを一つの集合として計算を行う。例えば、図11を参照すると、ページ上に4つのコンテナA,B、C、Dがレイアウトされており、各コンテナに関連付けが設定されている。この場合、コンテナAとコンテナB、そしてコンテナCとコンテナDがリンクによって関連付けされている。したがって、コンテナA・Bが集合1、コンテナC・Dが集合2となる。そして、1101はアンカー、1102は固定された辺、1103はコントロール点、1104は可変の辺の変化方向を示している矢印、1105は可変の辺、1106はリンク、そして1107はスライダーを示している。
【0096】
次に、レイアウト編集アプリケーション121は、ステップS901で求めたコンテナの集合から、レイアウトを計算するために一つの集合を選択する(S902)。そして、選択したコンテナの集合について、レイアウトの計算を行う。まず、選択したコンテナの集合に含まれる可変要素である2つのコンテナ(A,B)について、流し込まれるデータの画像サイズもしくはテキスト量から各コンテナがなにも制約を受けない場合の大きさを計算する。具体的には、レイアウト編集アプリケーション121は、コンテナAが画像データ用コンテナであるか、テキスト用コンテナであるかを判断する。この判断は、前述したように、コンテナに対して設定されている属性により判断できる。次に、レイアウト編集アプリケーション121は、コンテナAに流し込まれるデータを読み込み、コンテナAが画像データ用コンテナである場合は、その画像データのサイズ(幅、高さのピクセル数、および解像度)がコンテナAの制約を受けない場合の大きさになる。また、コンテナAがテキスト用コンテナである場合は、そのテキストデータも文字数と、コンテナAのコンテナ属性で指定されているフォントタイプ、フォントサイズ、文字ピッチ、行ピッチなどの文字属性に基づいて、コンテナAに流し込まれるべきデータ量が計算できる。ここで、テキスト用コンテナの場合は、コンテナAの縦横比が制約を考えないと決定できないため、制約を当てはめる。図11の例では、コンテナAは、左上および左下の角にアンカーが設定されているため、高さ(縦方向)が固定となる。よって、レイアウト編集アプリケーション121は、コンテナAの基本パターンとして設定されている幅(横方向)のコンテナAに、計算したデータ量(テキスト量)の文字を流し込めるか否かを判断する。すべて流し込めると判断された場合は、コンテナAは、基本パターンで設定されているサイズ(幅、高さ)に変更はない。また、すべて流し込めないと判断された場合は、コンテナAは、アンカー設定により高さが固定であるため、横方向に伸びることになる。ここで、レイアウト編集アプリケーション121は、コンテナAの幅がどれだけになると、計算したデータ量の文字を流し込めるかを計算し、コンテナAのサイズを算出する。
【0097】
次に、レイアウト編集アプリケーション121は、レイアウトされるコンテナのサイズが、実際のコンテンツのサイズとできる限り差が少なくなるように、レイアウトの最適化を行う(S903)。レイアウトの最適化は、動的にサイズを変化することが可能なように関連付けられたコンテナにおいて、それぞれに挿入されるコンテンツのサイズとレイアウトされるサイズとの差が、できる限り同じになるように行われる。レイアウト編集アプリケーション121は、ステップS902で算出したコンテナの集合のサイズ、つまりコンテナAとコンテナBとリンク1506(ここでは固定リンク)の合計サイズを求め、この合計サイズと、基本レイアウトにおける当該コンテナの集合のサイズ(図11の例ではコンテナAとコンテナBのそれぞれのアンカーアイコンの距離に相当する)との差を求める。コンテナAやコンテナBの幅が大きくなると前ステップで計算されている場合は、差分値が発生する。レイアウト編集アプリケーション121は、この差分値をコンテナの集合の各要素に均等に分配することでレイアウト調整を行う。
【0098】
レイアウト編集アプリケーション121は、レイアウトの最適化を行い、最適化の計算において、ルール(コンテナに課せられる制限)に違反する場合は、再度ルールを違反しないようにコンテナサイズの計算をする(S904)。ここで記述したルールとは、レイアウト作成時にユーザによって設定される制限であり、コンテナのサイズと位置、可変リンクの場合はリンクの長さなどである。ルールを違反しないようにレイアウトが計算されたら、ステップS902で選択した集合のレイアウトは完成する。そして、ステップS902〜S904のステップをページ上のすべてのコンテナの集合について施し、ページ全体のレイアウトを計算し(S905)、レイアウト計算の処理を終了する。
【0099】
図10はレイアウト計算時に示されるユーザインターフェース画面を例示する図である。図10の(A)は、あるレコードが挿入されレイアウトが決定されている状態を表している。1001と1002はアンカー、1003と1004は固定された辺、1005は可変の辺、1006は可変の辺の変化方向を示している矢印、1008はリンクをそれぞれ示している。この状態において、レコードを変更し、異なったサイズのコンテンツを挿入すると、図10の(B)の状態になる。図10の(A)の状態から可変の辺がどのように変位したかを2点鎖線で示している。そして、ルールを加味したレイアウト計算が行われる。図10の(C)はレイアウト計算された結果を示している。計算後の各コンテナ1012、1013のサイズは、実際挿入されるコンテンツのサイズと同等に差異があるように(変形が連動するように)計算され、且つ、前述したルールに違反しないように計算される。図10の(C)で示されるように、図10の(B)で示した挿入するコンテンツサイズ(a1b1c1d1,e1f1g1h1)と計算後のコンテンツサイズ(a2b2c2d2,e2f2g2h2)は、左右双方のコンテナにおいて同等な差異をもってコンテナサイズが計算される。以上の処理は、プロセッサユニット135、レイアウトエンジンモジュール105の制御のもとに実行することができる。
【0100】
(コンテナの優先順位)
(設定方法)
図56は、優先順位の設定処理の流れを説明するフローチャートであり、図57〜図60のユーザインターフェース画面の例とともに各ステップの処理を説明する。
【0101】
まず、レイアウト編集アプリケーション121は、図60に示すように、ユーザに対して優先順位を設定するコンテナを選択するためのポップアップメニュー6002を表示させ、優先順位設定が選択されると、優先順位設定画面を表示する(S5601)。図60において、6001はコンテナである、6002はポップアップメニュー、6003はマウスポインターを示している。このとき、図60では、優先順位の設定はポップアップメニューで選択されているが、コンテナのプロパティダイアログなどで選択するようにしてもよい。
【0102】
次に、レイアウト編集アプリケーション121は、ステップS5601で選択したコンテナと関連付けされているコンテナを一つの集合として認識して(S5602)、優先順位を設定していく(S5603)。本自動レイアウトシステムは、関連付けされたコンテナ同士が、相互にコンテンツのサイズに合わせてレイアウトを計算して、最適化が行われる(レイアウト計算方法を参照)。優先順位は、関連し合うコンテナについて、計算する順番を指定していくものであり、関連付けされているコンテナを一つの集合として認識して、優先順位を設定していく。例えば、図57ではテキストコンテナA,D,FとイメージコンテナB,C,Eがレイアウトされている。リンク(5701)によって、コンテナが関連付けられており、コンテナA,B,C,DとE,Fの2つの集合になっている。ここで、マウスポインタ(5702)でコンテナAを選択して優先順位の設定を行うと、コンテナA,B,C,Dについて優先順位を設定することになる。
【0103】
次に、レイアウト編集アプリケーション121は、ステップS5601で表示された優先順位設定画面(図58を参照)で、ユーザが設定した優先順位をコンテナに設定していく(S5604)。図58は優先順位を設定するダイアログユーザインターフェース(UI)画面の例を示す図である。同図において、5801はダイアログ、5802は優先順位を示しているUI,5803は優先順位を設定するコンテナが表示されるリストボックスである。ここには、ステップS5602で一つの集合と認識されたコンテナがすべて表示される。5804は優先順位を変更する矢印ボタン。5805は設定をキャンセルするキャンセルボタン、5806は設定を反映させるOKボタンである。5802のUIで示されるように、リストボックス(5803)で上に表示されているコンテナは優先順位が高く、下に行くにつれて優先順位が低くなる。計算されるレイアウト計算が行われる順番は上から順番になる。図58では、テキストコンテナA、イメージコンテナB、イメージコンテナC、テキストコンテナDの順に計算される。
【0104】
図59は、コンテナに設定する優先順位を変更する手順を説明する図である。例えば、図59(A)の5901で示しているように、マウスポインターなどで優先順位を変更したいコンテナ名を選択し、優先順位を上げるのであれば、5902の上矢印ボタン、下げるのであれば、下矢印ボタンを押下する。ここでは、テキストコンテナDを選択して、優先順位を上げる操作を行ったものとする。すると、図59の(B)で示すように、テキストコンテナDの優先順位が一つ上がり、イメージコンテナCの優先順位が一つ下がる。優先順位の設定方法は、この方法に限らず、ここではコンテナA,B,C,Dと4つのコンテナについて優先順位を設定するので、各コンテナについて優先順位1番、2番と番号で指定する方法でもよい。以上の処理は、プロセッサユニット135の制御のもとに実行することができる。
【0105】
(表示方法)
図61、図62、図63はそれぞれ設定したコンテナに設定した優先順位を視覚的にユーザに示すユーザインターフェース(UI)画面を例示する図である。図61、62はコンテナのレイアウト表示と優先順位の設定を別ウインドウで表示するUI画面を示している。図61、図62において、6101は自動レイアウトアプリケーションウインドウを示している。このウインドウを構成するページエリア、ツールバーなどは図3と同じであり、その他はここでは省略してある。6102はマウスポインタ、6103、6104は優先順位が設定されているコンテナの集合である。そして、6105は優先順位を表示するプロパティパレットであり、6106はコンテナ名が表示されているリストボックスである。図62においても同様に、6201はマウスポインタ、6202はリストボックスを示している。6105と6106および6202によって、コンテナの優先順位をユーザに視覚的に表示することができる。6106・6202には、優先順位の高い順に上からコンテナ名が表示される。図61で示しているように、マウスポインタ(6102)をコンテナの集合(6103)上に置くと、その集合内のコンテナ(コンテナA,B,C,D、E)が、優先順位の高い順位表示される。ここでは、コンテナB,A,E,C,Dの順で優先順位が高いことを示している。図62で示すように、マウスポインタ6201を別のコンテナの集合へ移動させると、リストボックス6202の表示が更新され、コンテナF,G,Hが優先順位の高い順に表示される、ここではコンテナF,H,Gの順に優先順位が高い状態に設定されている。
【0106】
図63は、図61、図62の表示方法とは別の形式によるUI画面を例示する図であり、同図において、6301はページ領域を示しているページマージン、6302はマウスポインタ、6303はコンテナの優先順位を数字により示す表示部、6304は優先順位が設定してあるコンテナの集合である。図63で示しているUI画面は、マウスポインタ6302をコンテナ上に移動させると、そのコンテナと関連付けられている各コンテナに設定されている優先順位が数字6303で表示される。ここでは、マウスポインタをコンテナB上に移動させている、するとコンテナBと関連付けられているコンテナA,C,D,Eに設定されている優先順位が各コンテナ上に表示される、数字が小さいほうが優先順位が高く、(1)が一番優先順位が高く、(5)が最も優先順位が低いコンテナを示す。従って、図63ではコンテナB,A,E,D,Cの順に優先順位が設定されている。以上の処理は、プロセッサユニット135、レイアウト編集アプリケーションの制御のもとに実行することができる。
【0107】
(レイアウト計算方法)
次に、優先順位が設定されたコンテナが含まれる場合のレイアウトの計算処理を図64のレイアウト計算のフローチャートを参照しつつ説明する。
【0108】
まず、ステップS6401において、プレビューモードを選択する。自動レイアウトシステムでは、コンテナを作成して、そのコンテナ間に関連付けを行ってレイアウト作成するレイアウトモードと、作成したレイアウトにレコードを挿入して、実際にレコードが挿入された後のレイアウト結果をプレビューするプレビューモードに分けられる。
【0109】
このプレビューモードにおいて、実際のレコードが挿入され、前述した優先順位に従ってレイアウトを計算する。ただし、プレビューモードは、表示上でのレイアウト計算であるが、実際に印刷する場合においても、レコードを挿入してレイアウトを計算する際の計算方法も同様である。ステップS6401の処理でプレビューモードが起動したら、プレビューするレコードがデータベース119に格納されているデータソースから選択されプレビューが実行される(S6402)。
【0110】
レコードの選択が行われプレビューが実行されると、レイアウト編集アプリケーション121は、そのレコードをレイアウトするために計算を行う。その際に前述した優先順位がコンテナに設定されているかをチェックする(S6403)。ステップS6403のチェックで、優先順位が設定されているコンテナが存在すると判断された場合(S6403-YES)、「優先順位の設定あり」としてレイアウトを計算する(S6404)。この「優先順位あり」の場合のレイアウト計算方法については、後で詳細に記述する。
【0111】
ステップS6403の判断処理で優先順位が設定されているコンテナが存在しなかった場合(S6403-NO)、処理をステップS6405に進めてレイアウト編集アプリケーション121は、「優先順位なし」としてレイアウトを計算する。
【0112】
そしてステップS6406において、レイアウト編集アプリケーション121は、優先順位ありとしてレイアウト計算された結果(S6404)、または、優先順位なしとしてレイアウト計算された結果(S6405)をレイアウト表示する。そして、ステップS6407において、他のレコードについてもプレビューを行うかどうかを判断し、他のレコードについてプレビューを行う必要がないと判断した場合は(S6407-NO)、プレビューモードを終了する(S6409)。他のレコードについてプレビューを行うのであれば(S6407-YES)、他のレコードを選択して再度レイアウト計算を行い(S6404、S6405)、プレビューを行う(S6406)。
【0113】
プレビューモードでなく印刷時におけるレイアウト計算の場合は、印刷するレコード全てについて順にレイアウトの計算を行う。したがって、レコードを移動させてレイアウト計算を行うためのステップS6407、S6408の処理は印刷時におけるレイアウト計算では不要となり、全てのレコードについて印刷が終了した時点で終了する。
【0114】
(優先順位が設定されたコンテナに対する具体的なレイアウト計算方法)
レイアウトの優先順位がコンテナに設定されていた場合のレイアウト計算処理の流れを図65のフローチャートを参照しつつ説明する。また図66、67はそのレイアウト計算処理に従ってユーザに示されるUI画面の表示例を示す図である。
【0115】
ここで、図66の6601はコンテナAを示し、6603はコンテナAに設定されている優先順位を示し、6602はコンテナB(6604)とコンテナC(6605)の間に設定されているリンクを示している。なお、6603で示される優先順位は数が小さいほうが高いものとする。ここでは優先順位(1)、(2)、(3)に従い、コンテナA,B,Cの順にレイアウト計算がされる。図67の(A)の破線で示される領域6701はコンテナAに挿入されるコンテンツのサイズを示している。6702はコンテナAのレイアウト計算後のコンテナA´、破線で示される領域6703はコンテナBに挿入されるコンテンツのサイズを示している。6704はコンテナBのレイアウト計算後のコンテナB´を示し、6605はコンテナCのレイアウト計算後のコンテナC´を示している。
【0116】
まず、図65のステップS6501において、レイアウト計算するコンテナの集合を求める。そして計算を行う一つの集合を選択する(S6502)。この場合、コンテナの集合は各コンテナ間がリンク6602により関連付けされている図66のコンテナA,B,Cが該当する。
【0117】
そして、レイアウト編集アプリケーション121は、レイアウトするコンテンツデータをデータベース119から取得する(S6503)。ここで記述したコンテンツデータは、コンテンツの内容、サイズ、量などである。プロセッサユニット135はI/Oインターフェース138を介してデータベース119より取得したコンテンツデータからコンテンツデータをそのコンテンツを挿入するコンテナに割り当てる(S6504)。
【0118】
次に、ステップS6505において、レイアウト編集アプリケーション121は、優先順位の一番高いコンテナを抽出する。図67の(A)では、コンテナAの優先順位が一番高いので、コンテナAが抽出される。そして、抽出されたコンテナAについて、ステップ6504で割り当てられたコンテンツデータに基づいてレイアウト計算を行う(S6506)。ここで、図67(A)の6701はコンテナAに割り当てられたコンテンツデータのサイズに対応する領域を示す。計算の方法は、現在計算の対象になっているコンテナAより優先順位が低いコンテナ(B、C)にルールが違反しない限り影響を与えることが可能である。その代わり、レイアウト計算の対象となるコンテナより優先順位が高いコンテナ(例えば、コンテナBから見て優先順位の高いコンテナA)には影響を与えることができない。図67(A)の場合、コンテナAのレイアウト計算では、コンテナAより優先順位の低いコンテナB,Cのコンテナサイズに関係なく、計算をすることが可能である。コンテナBについては、コンテナAのレイアウト計算結果の影響を受けることになるが、コンテナBのレイアウト計算結果は、優先順位の低いコンテナCに影響を与えることが可能である。最も優先順位の低いコンテナCは、コンテナA、Bのレイアウト計算結果の影響を受けつつ、自己のコンテナに対するレイアウト計算が実行されることになる。
【0119】
次に処理をステップS6507に進め、レイアウト編集アプリケーション121は、ステップ6506で計算されたレイアウト計算の結果より、コンテナのサイズと位置を決定する。そして、ステップS6507で決定したコンテナのサイズと位置を確定する(S6508)。図67(B)の6702は、コンテナAについて、計算が終了してサイズ・位置が確定された後のコンテナを示している。
【0120】
ステップS6509では、レイアウト編集アプリケーション121は、選択された集合内の全てのコンテナA,B、Cについて計算が終了したかどうかを確認する。全てのコンテナA,B、Cについて終了していなければ(S6509-NO)、計算したコンテナの次に優先度の高いコンテナを抽出し(S6510)、そのコンテナについてステップS6506〜S6508の処理を実行する。図67の(B)の状態では、コンテナAの計算が終了したあと、次に優先順位が高いコンテナBについてコンテナサイズの計算、位置の決定等の処理が実行される。図67の(B)において、6703はコンテナBに割り当てられたコンテンツデータのサイズ(コンテンツサイズ)に対応する領域を示す。このコンテンツサイズに基づいてコンテナBに対するレイアウト計算が行われるが、コンテナBの優先順位はコンテナAより優先順位が低いため、計算結果は、すでに前ステップでコンテナAのサイズと位置は確定されているために、コンテナAのレイアウト結果に影響を与えることができないことになる。
【0121】
したがって、コンテナBのレイアウト計算はコンテナAに影響を与えない範囲でコンテナサイズを計算しなければならないという拘束条件が課せられることになる。図67(B)の6703で示すように、実際コンテナBに挿入されるコンテンツのサイズはコンテナA´と重なってしまっている。そのため、計算結果が確定したコンテナA´に重複しないようにコンテナBのレイアウトは実際のサイズより縮小して計算されることになる。コンテナBについて計算が終了し、サイズと位置が確定したコンテナB´が図67(C)の6704に示される。
【0122】
コンテナBについてレイアウト計算が終了した後、次にコンテナBより優先度が低いコンテナCが抽出され(図65のステップS6510)、コンテナCについてレイアウト計算が行われる(S6506〜S6508)。しかし、図67の例では、コンテナCは集合内で一番優先順位が低いコンテナであり、そのコンテナについて計算するときは、その他全ての優先順位の高いコンテナ(A、B)について、コンテナサイズと位置が確定されているため、コンテナCのレイアウト計算結果を他のコンテナ(A,B)に与えるようにレイアウト計算をすることができない。したがって、一番優先順位が低いコンテナがステップ6510で抽出されたときには、すでにそのコンテナのサイズ・位置も確定されていることになる。一番優先順位が低いコンテナについてもステップ6506〜6508で計算を行うが、他の優先順位の高いコンテナの計算結果に従いに実質的には確定してしまっていることになる。そして、集合内全てのコンテナについて、レイアウト計算が終了したら(S6509-YES)、ページ内にまだ計算していない集合があるかを確認する(6511)。まだ計算していない集合がある場合(S6511-NO)はステップ6502へ処理を戻し、レイアウト編集アプリケーション121は、前述した方法でレイアウト計算を行う。全ての集合について計算が終了しているのであれば、レイアウト編集アプリケーション121は、データベースからバリアブルデータのコンテンツを読み込み、計算されたコンテナに該コンテンツを流し込み(S6512)、処理を終了する。以上の処理は、プロセッサユニット135、レイアウト編集アプリケーション(ユーザインターフェースモジュール103、レイアウトエンジンモジュール105)の制御のもとに実行することができる。
【0123】
(リンクの自動設定)
次に、本発明の特徴であるリンクの自動設定に関する内容について説明する。図12の(A)はリンクの自動設定に関するUI画面を例示する図である。1201はアプリケーションウインドウを示し、1202はコンテナ、1203はコンテナ間に設定されているリンク、1204はマウスポインタを示している。また、本実施形態でコンテナの位置について記述があるが、ドキュメント内左上を原点1205として、X方向は右側へ、Y方向は下側へ増加していくことと定義する(図12の(B)を参照)。コンテナの位置情報はそれぞれコンテナの各コーナー部の位置座標((X1、Y1)、(X2、Y2)(X3、Y3)等)により記述することができ、ドキュメントテンプレート309にレイアウトされている複数のコンテナ間の位置関係は、基準となるコンテナの位置座標情報と、他のコンテナとの位置座標情報と、を求めることにより相対的な位置関係を求めることが可能になる。
【0124】
図16はリンクの自動設定の全体的な流れを説明するフローチャートである。まず、ステップS1601において、レイアウト編集アプリケーション121は、リンク設定を一括に行うコンテナが指定されたかを判断する。コンテナの設定は、ユーザによって任意に指定することが可能であるが、何も指定しなければ(S1601-NO)、ページ上の全コンテナが選択されたことになる(S1603)。一方、レイアウト編集アプリケーション121は、複数のコンテナが指定されたと判断した場合(S1601-YES)、処理をステップS1602に進め、プロセッサユニット135はユーザによって選択された複数のコンテナを認識する(S1603)。
【0125】
そして、プロセッサユニット135及びユーザインターフェースモジュール103による制御の下、認識したコンテナをユーザに視覚的に示すためにUI画面を変更する(1604)。図13は複数のコンテナF,G,Hを選択するUI画面の例を示す図である。マウスポインタ1303等の指示入力手段によって、矩形1302をドラッグして矩形1302内に複数コンテナを入れることによって、矩形内のコンテナを複数個選択することが可能である。また、複数個のコンテナの選択はこの方法に限らず、選択しようとするコンテナを個別にマストポインタ1303によりドラッグして指定するようにしてもよい。
【0126】
図14Aは、図13で説明した操作によりコンテナF,G,Hが選択されたことをユーザに示すためにUI画面が切り替えられた状態を示す図である。図14Aでは、コンテナF,G、Hに対して、選択されたことを示す表示(図14Aの例ではハッチングを付して示している)1402が表示される。
【0127】
図14Bは、図14Aのように矩形領域によりコンテナを複数指定するのではなく、マウスポインタ1303でコンテナを押下する(指定する)ことによる複数のコンテナの選択の例を示している。この方法では、図14Aで説明したように矩形領域による選択するでは選択することができないコンテナの配置(部分的に選択しないコンテナが含まれるような配置)のコンテナを複数選択することができる。
【0128】
選択されたコンテナは図14Aの場合と同様に選択されたことを示す表示5102が表示される。
【0129】
説明を図16に戻し、ステップS1605において、レイアウト編集アプリケーション121は、選択された複数のコンテナ間にリンクを一括に設定する。このステップでは、リンクを一括で設定したことによって、レイアウトがリンクに設定されているルールに違反しないようにコンテナの設定を変更するステップも含まれるものとする。複数のコンテナが選択された状態で、図14Aに示すようなリンクツールボタン1403をマウスポインタで押下することによって、図73のようなリンク作成方向UIが表示される。本実施例では一括にリンクを設定する設定方向モードとして、以下の3つを含む。まず、第1リンク設定方向モードは7302の「X方向にリンク設定」であり、ユーザによって選択されたことを、レイアウト編集アプリケーション121が認識した場合、X方向にリンクが一括設定されることとなる。また、第2リンク設定方向モードは7303の「Y方向にリンク設定」であり、ユーザによって7303が選択されたことを認識した場合、Y方向にリンクが一括設定される。第3リンク設定方法モードは7304の「XおよびY方向にリンク設定」であり、ユーザによって7304が選択されたことを認識した場合、XおよびY方向にリンクを一括設定することとなる。
【0130】
リンクの一括設定は、ダイアログを別途表示して設定の有無をユーザに確認させるようにしてもよい。その場合は、ユーザの確認の入力があったときにリンクの一括設定が行われる。図15は複数選択されたコンテナF,G,H間にリンクが一括で設定された状態を示す図である。リンクの一括設定により、コンテナF,G,Hの間にはリンク1502が設定される。このリンク設定のための具体的な内容は、後の詳述する。つぎに、本処理は、バリアブルデータを読み込んで、各コンテナに流し込み、自動レイアウトした結果をプレビューするプレビュー処理中にレイアウトの編集が行われている場合は、設定されたリンク1502の状態を考慮してレイアウト計算を行う(S1606)。このレイアウト計算については、図9,10で説明した内容と重複するため説明は省略する。また、単に基本レイアウトの編集中であり、プレビュー表示や印刷要求を受けていない場合は、ステップS1606の処理は行われない。
【0131】
(リンクの一括作成)
図17はリンクの一括作成の処理の流れを概略的に説明するフローチャートである。以後の説明では、矩形領域で複数のコンテナが選択された場合を例として処理の内容を説明するが、ただし、ページ内の全コンテナを選択した場合でも、マウスポインタで個別に複数コンテナを選択した場合も同じ手法で処理を行うことは可能である。
【0132】
まず、ステップS1701において、レイアウト編集アプリケーション121は、図16のステップS1602で認識しているユーザにより選択されたコンテナの位置情報及びコンテナの個数(ConNum)を取得する。次に、レイアウト編集アプリケーション121は、選択されたコンテナの個数を記憶装置139(140、141)またはメモリユニット136に格納する(S1702)。そして、レイアウト編集アプリケーション121は、選択されたコンテナに対して、X方向に隣接する位置にコンテナが配置されている場合はX方向のリンクの作成を行う(S1703)。次に、Y方向に隣接する位置にコンテナが配置されている場合は、レイアウト編集アプリケーション121は、Y方向のリンクの作成を行う(S1704)。最後に、レイアウト編集アプリケーション121は、作成されたリンクによって、コンテナのレイアウトに関するルールが違反しないように、コンテナの設定(アンカーの設定等)を自動変更する(1705)。
【0133】
以上の各ステップ(S1701〜S1705)の具体的な処理を、以下図18等の図面を参照しつつ説明する。尚、リンクの一括作成に関する処理は、レイアウト編集アプリケーション121に基づきプロセッサユニット135の全体的な制御の下、実行することが可能である。
【0134】
(コンテナの位置情報取得)
図18はコンテナの位置情報を取得する処理の流れを説明するフローチャートである。まず、レイアウト編集アプリケーション121は、選択したコンテナに任意に順番を設定する(S1801)。この処理は、全てのコンテナについて位置情報を取得するために、順番を設定するものである。次に、レイアウト編集アプリケーション121は、変数iに1を代入して変数の初期化を行う(S1802)。この変数iはコンテナに設定された番号と対応し、この変数iにより各コンテナが対応付けられることになる。そして、i番目のコンテナについて、プロセッサユニット135は、まず、X方向について選択されているコンテナの位置情報を取得し(S1803)、次に、Y方向について位置情報を取得する(S1804)。そしてプロセッサユニット135は、取得した情報を記憶装置139(140、141)またはメモリユニット136に格納する(S1805)。次に、レイアウト編集アプリケーション121は、変数iをインクリメントして、次のコンテナのX方向の位置情報(S1803)、Y方向の位置情報を取得して(S1804)、データを格納し(S1805)、選択した全てのコンテナについてデータの取得と格納が終了するまで、以上の処理を繰り返す。選択した全てのコンテナに対して、処理が終了した場合(S1807-YES)、処理を終了する。
【0135】
(リンクの作成)
図19A,BはX方向のリンクの作成処理の流れを説明するフローチャートである。リンクの作成は、隣接するコンテナを抽出し、そのコンテナ間にリンクを設定する。ここで隣接するコンテナは、コンテナ間の距離が最小であることを意味しており、最小であるコンテナが複数見つかった場合は、リンクを複数設定する。
【0136】
まず、ステップS1901で、レイアウト編集アプリケーション121は、リンク設定の基準となるコンテナを設定し(この場合はコンテナ2104)、このコンテナ2104の左辺のX座標を基準として、コンテナ間の相対的な位置関係を求め、X方向の間隔の小さい順にコンテナの番号をリンク作成用に設定する。この順番の設定は、図21Aの2160に示すように、コンテナ2104の左辺のX座標を基準として、各コンテナのX方向の距離の小さい(X1<X2)、コンテナ2105に順番(2)が設定され、この次にX方向の距離の小さいコンテナである2106に順番(3)が設定される。以下、同様に選択された全てのコンテナに対して、X方向の距離に従い、順番が設定される。この場合、同じX方向の位置に複数のコンテナがレイアウトされる場合は、Y方向の距離の関係を求め、Y方向の距離が小さいコンテナを早い順番に設定する。図21Aの2150は、コンテナに対して、リンク設定のための順番付けが完了した状態を示す図である。
【0137】
なお、本実施例ではコンテナの左辺が左上にあるコンテナに対して1番目と順番が設定されるが、これに限ることはなく、例えば右上、右下方向などから順番を設定するようにしても構わない。
次に、処理をステップS1902に進め、レイアウト編集アプリケーション121は、変数nに1を代入する。ステップS1903で、レイアウト編集アプリケーション121は、X方向に隣接するコンテナの番号(ステップ1901で設定した順番)を格納するContX[ ]を用意し、この値を0で初期化をする。
【0138】
次に、ステップS1904において、レイアウト編集アプリケーション121は、X方向の距離の最小値を格納するDistX_Minを用意し、初期値にページ幅を代入する(1904)。
【0139】
そして、ステップS1905において、レイアウト編集アプリケーション121は、隣接するコンテナをチェックするための変数iにn+1を代入する。これは、ステップS1901でX方向の距離が小さい順に順番を設定しているため、隣接しており、かつ、リンクを設定する必要があるコンテナは、自身コンテナ(図21Aの場合は、コンテナ2104が対応する。)より順番が後のものになる。したがって、ステップS1905の処理は、チェックするコンテナをn+1番目からになるように変数を制御するためである。
【0140】
次に、処理を図19BのフローチャートのステップS1906に移行して、n番目のコンテナとi番目のコンテナのY方向の位置が重なるかどうかをチェックする。本実施形態におけるリンクの一括設定では、作成されるリンクは、コンテナ同士が同じ水平方向または垂直方向にあるということを前提にしている。従って、X方向のリンクについてはステップ1906のチェックを行い、コンテナ同士が水平方向にレイアウトされているかを判断する。例えば、図21Aの2160において、コンテナ2104と、コンテナ2105とのY方向の距離はY1であり、コンテナ2104と、コンテナ2106のY方向の距離はY2である。
【0141】
ステップS1906の判断で、Y方向の位置が重なると判断された場合(S1906-YES)、処理をステップS1907に進め、レイアウト編集アプリケーション121は、n番目のコンテナとi番目のコンテナのX方向の位置の差を計算して、結果をDistXに代入する。
【0142】
次に、処理をステップS1908に進め、レイアウト編集アプリケーション121は、前ステップで計算されたDistXと、最小の距離が格納されているDistX_Minとを比較する。もし、DistXが最小値(DistX_Min)よりも小さいのであれば(S1908-YES)、処理をステップS1909に進め、レイアウト編集アプリケーション121は、ContX[]を0で初期化し、変数kに0を代入する。
【0143】
そして、距離が最小であったコンテナの番号をContX[k]に代入する(1910)。
【0144】
一方、ステップ1908でDistXが最小値よりは小さくなかった場合(S1908-NO)、処理をステップS1911に進め、レイアウト編集アプリケーション121は、さらに比較を行いDistXとDistX_Minが一致するかどうかを判断する(S1911)。もし一致するのであれば(S1911-YES)、そのコンテナ番号をContX[k]に代入して、kに1を加算する。
【0145】
ステップ1910を処理した後、あるいは、S1911でDistXが最小値よりも大きいと判断された場合や、ステップ1906でi番目のコンテナがY方向に重なっていない場合は、レイアウト編集アプリケーション121は、次のコンテナをチェックするために変数iをインクリメントする(S1912)。
【0146】
ステップS1913では、レイアウト編集アプリケーション121は、選択されているコンテナすべてについてチェックを行ったかどうかを判断し、まだ行っていなければ、ステップS1906へ進み処理を繰り返す。全てについてチェックが終了した場合は、検出された隣接するコンテナへリンクを設定する処理を行う(S1914)。この処理については後述する。
【0147】
そして、リンク設定の処理が終了したら、変数nをインクリメントし(S1915)、選択された全てのコンテナについて、これまでの処理が行われたかどうかを判断し、まだ行われていなければ、ステップS1903に進み処理を繰り返す(S1916)。全てについて処理が終了していれば処理を終了する。
【0148】
図20は、図19Bのステップ1914のリンク設定処理の流れを説明するフローチャートである。まず、ステップS2001において、ContX[0]が0であるかどうかを判断する。もし、0であるならば(S2001-YES)、隣接したコンテナが検出されなかったことを意味するので、リンクの設定処理は行わずに終了する。
【0149】
一方、ContX[0]が0でなかった場合は(S2001-NO)、kに0を代入する(S2002)。そして、n番目のコンテナとContX[k]番目のコンテナ間にX方向のリンクを設定する。リンクを設定したら、kをインクリメントして(S2004)、ContX[k]をチェックする(2005)。ContX[k]が0になるまで、格納されている全てのコンテナについてリンクの設定を行う。ContX[k]が0になったら、リンクの設定処理を終了する。
図21A、BはX方向のリンク設定を説明する図である。図21Aにおいて、2101,2102は選択外のコンテナを示し、2103は複数のコンテナを指定する矩形領域、2104〜2111はリンクの一括処理を行うように選択されたコンテナを示し、2112はマウスポインタを示している。コンテナ内の番号は、図19のステップ1901でコンテナに順番を付けられた番号である。番号はX方向の位置の小さい順に設定されており、2104,2105,2106,2107,2108,2109,2110,2111の順に番号が設定されている。ここで、リンク設定ツールボタン2113を押下すると、リンクが設定される。図21Bの2114〜2117は設定されたX方向のリンクを示しており、各コンテナのX方向に対して最小距離にあるコンテナ間にリンクが設定されている。
【0150】
なお、図21A、および図21Bのフローチャートにおいては各コンテナのX方向に対して最小距離にあるコンテナ間にリンクを設定することを記載したが、最小距離に限らない場合の処理の流れについて図68に記載する。なお、基本的な処理の流れは上記した図16とほぼ同様であるので異なる点のみを記載する。
【0151】
まず、図68におけるS6801〜S6804は同様の処理であるため説明を省略する。レイアウト編集アプリケーション121は、マウス等により、ある特定の指示がされた場合(例えば右クリックなど)、図69に示すようなリンク設定UIをディスプレイ装置144に表示する(S6805)。図69はリンク設定モードを選択するためのUI図であり、リンク設定UI6901には図示するように第1設定モードとしての「基準コンテナと最短コンテナにリンク設定」と、第2設定モードとしての「基準コンテナとXまたはY方向に交わるコンテナに設定」とが記載されており、ユーザがどちらかのリンク設定方法を選択したことを認識することにより、次のステップへと進む。「基準コンテナと最短コンテナにリンク設定」は上述したリンク設定方法のことを指すので、「基準コンテナとXまたはY方向に交わるコンテナに設定」が選択された場合の処理について記載する。ここで、「基準コンテナとXまたはY方向に交わるコンテナに設定」について、図72を用いて具体的に説明する。上述した「基準コンテナと最短コンテナにリンク設定」の場合、図72においてコンテナ7201乃至7203がリンク設定対象であり、コンテナ7201を基準としてリンクを生成する場合、コンテナ7203はコンテナ7201との最短距離に位置していないためリンク7205が設定されることがなかったが、「基準コンテナとXまたはY方向に交わるコンテナに設定」が選択された場合、コンテナ7201とY方向で交わるコンテナ7202に対してリンク7204が設定され、7203に対してリンク7205が設定されることとなる。
【0152】
レイアウト編集アプリケーション121は、図69におけるリンク設定UIにおいて設定方法を選択し、「OK」ボタンが押されたことを認識すると、該選択されたコンテナ間にリンクを設定する(S6806)。なお、S6806〜S6809に関しても図16におけるS1605〜S1606の処理と同様であるためここでは説明を省略する。
リンクの一括作成およびコンテナの位置情報取得についての詳細は、上述した図17および図18の処理と同様であるためここでは省略する。
【0153】
続いて、「基準コンテナとXまたはY方向に交わるコンテナに設定」におけるリンク作成フローを図70Aおよび図70Bを用いて説明する。
【0154】
なお、S7001〜S7005は、S1901〜S1903およびS1905〜S1906と同様の処理であるため詳細については省略する。
【0155】
レイアウト編集アプリケーションは、S7005において、i番目のコンテナはn番目のコンテナのY方向の位置と重なると判定した場合、n番目のコンテナとi番目のコンテナの間に他のコンテナがあるか否かを判定する(S7006)。詳細には、図18の処理により各コンテナの位置情報を記憶装置139またはメモリユニット136に格納しているので、レイアウト編集アプリケーション121が参照することにより、判定可能である。
【0156】
S7006の判定の結果、n番目のコンテナとi番目のコンテナの間に他のコンテナがないと判定した場合、n番目のコンテナとリンクを用いて関連付けるためにS7008へ進む。しかし、S7006の判定の結果、間に他のコンテナがあると判定した場合、レイアウト編集アプリケーション121は、レイアウト編集アプリケーション121がi番目のコンテナとn番目のコンテナを直接的にリンクを設定できるか否かを判定する(S7007)。詳細には、各コンテナサイズの情報は図18の処理により各コンテナの位置情報を記憶装置139またはメモリユニット136に格納しているので、レイアウト編集アプリケーション121が参照することにより、判定可能である。
【0157】
S7007は、n番目のコンテナとi番目のコンテナが他のコンテナを介することなく直接的にリンクを設定することができる場合に、S7008へ進むことを指し、具体的には図71において5番目のコンテナと8番目のコンテナはY方向の位置が重なると判定することができるが、5番目のコンテナと8番目のコンテナの間に7番目のコンテナがあり、5番目のコンテナから8番目のコンテナへは7番目のコンテナを介して、間接的にしかリンクを設定することができない。このような場合、5番目のコンテナから8番目のコンテナに対してリンクは設定されない。また、4番目のコンテナと8番目のコンテナはY方向の位置が重なっており、間には7番目のコンテナがある。しかし、8番目のコンテナのY方向は7番目のコンテナに対して垂直方向にはみ出しており、4番目のコンテナから8番目のコンテナに対して、間にある7番目のコンテナを介することなく直接的にリンクを設定することができるためリンク7102が生成されることとなる。
【0158】
なお、S7008からS7013の処理は図19におけるS1910〜S1913の処理と同様であるため詳細については省略し、図70BのS7011の処理については図19BのS1914を説明した図20の処理の流れと同様であるため、ここでは詳細について省略する。
【0159】
図71は、X方向のリンク設定を説明する図である。なお、図71は図21Bと基本的に同じであるため異なる点のみを記載する。図21Bでは5番目のコンテナとX方向の最短距離に位置する6番目のコンテナにのみリンク2116が設定されていたが、図71では、5番目のコンテナと7番目のコンテナはX方向の最短距離に位置されていないが、リンク7101が設定されている。これは、図69のリンク設定UIにより「基準コンテナとXまたはY方向に交わるコンテナに設定」を選択したため、7番目のコンテナは基準コンテナ(5番目のコンテナ)のY方向と交わっていることによりリンク7101が設定されることとなる。さらに、図21Bでは4番目のコンテナと8番目のコンテナはX方向の最短距離に位置していないため、リンクが設定されなかったが、図71では、リンク7202が設定されている。これは、両者の間には7番目のコンテナが存在するが、8番目のコンテナは基準となるコンテナ(4番目のコンテナ)とY方向で交わり、さらに7番目のコンテナのY方向の位置をY方向にはみ出しているため、4番目のコンテナから8番目のコンテナに対して直接的にリンクを設定することが可能である。よってリンク7102が設定されることとなる。
【0160】
図22A,BはY方向のリンクの作成フローを示している。各ステップについては、方向が変化するのみで、X方向の処理(図19A、B)とほぼ同じ処理である。
【0161】
まず、レイアウト編集アプリケーション121は、順番が設定されたコンテナをY方向の位置について小さい順番に、Y方向のリンクを作成するための順番を設定する(S2201)。このとき、同じY方向の位置のコンテナがあった場合は、X方向の距離が小さいコンテナを早い順番に設定する。次に、nに1を代入する(S2202)。そして、レイアウト編集アプリケーション121は、Y方向に隣接するコンテナの番号(ステップS2201で設定した順番)を格納するContY[]を用意し、これを0で初期化をする(S2203)。また、Y方向の距離の最小値を格納するDistY_Minを用意し、初期値にページ幅を代入する(S2204)。次に、隣接するコンテナをチェックするための変数iにn+1を代入する(2205)。
【0162】
次に、処理を図22BのステップS2206に移行して、レイアウト編集アプリケーション121は、n番目のコンテナとi番目のコンテナのX方向の位置が重なるかどうかをチェックする(S2206)。ステップ2206で重なると判断された場合(S2206-YES)、レイアウト編集アプリケーション121は、n番目のコンテナとi番目のコンテナのY方向の位置の差を計算して、その結果をDistYに代入する(S2207)。
【0163】
そして、レイアウト編集アプリケーション121は、前ステップで計算されたDistYと最小の距離が格納されているDistY_Minとを比較する(S2208)。もし、DistYが最小値よりも小さいのであれば、処理をステップS2209に進め、レイアウト編集アプリケーション121は、ContY[]を0で初期化し、変数kに0を代入する。そして、距離が最小であったコンテナの番号をContY[k]に代入する(2210)。
【0164】
一方、ステップS2208でDistYが最小値よりは小さくなかった場合(S2208−NO)、処理をステップS2211に進め、レイアウト編集アプリケーション121は、さらに比較を行いDistYとDistY_Minが一致するかどうかを判断する(S2211)。もし一致するのであれば(S2211-YES)、レイアウト編集アプリケーション121は、そのコンテナ番号をContY[k]に代入して、kに1を加算する(S2210)。
【0165】
ステップ2210を処理した後、あるいは、ステップ2211でDistYが最小値よりも大きいと判断された場合、ステップ2206でi番目のコンテナがX方向に重なっていない場合は、レイアウト編集アプリケーション121は、次のコンテナをチェックするためにiをインクリメントする(S2212)。ステップS2213において、レイアウト編集アプリケーション121は、選択されているコンテナすべてについてチェックを行ったかどうかを判断し、まだ全てのコンテナに対してチェックを行っていなければ、ステップS2206へ進み処理を繰り返す。全てのコンテナに対してチェックが終了した場合は、レイアウト編集アプリケーション121は、検出された隣接するコンテナへリンクを設定する処理を行う(S2214)。この処理については後述する。
【0166】
そして、Y方向のリンク設定の処理が終了したら、ステップS2215において、変数nをインクリメントする。そして、選択された全てのコンテナについて、これまでの処理が行われたかどうかを判断し、まだ、行われていなければ、ステップS2203に進み処理を繰り返す(S2216)。全てについて処理が終了していれば全体の処理を終了する。
【0167】
図23は、図22BのステップS2214におけるY方向のリンクを設定する処理の流れを説明するフローチャートである。まず、ステップS2301において、レイアウト編集アプリケーション121は、ContY[0]が0であるかどうかを判断する。もし0であるならば(S2301-YES)、隣接したコンテナが検出されなかったことを意味するので、リンクの設定処理は行わずに終了する。一方、0でなかった場合は(S2301-NO)、レイアウト編集アプリケーション121は、変数kに0を代入する(S2302)。そして、n番目のコンテナとContY[k]番目のコンテナ間にY方向のリンクを設定する。リンクを設定したら、レイアウト編集アプリケーション121は、変数kをインクリメントして(S2304)、ContY[k]をチェックし、ContY[k]が0になるまで、格納されている全てのコンテナについてリンクの設定を行う(S2303)。ContY[k]が0になったら(S2305-YES)、リンクの設定処理を終了する。
【0168】
図24A、Bはリンク作成の状態を示すUI画面の例を示す図である。図24Aにおいて、2401は複数のコンテナの選択を指定する矩形領域、2402〜2409は選択されたコンテナ、2110はマウスポインタを示している。コンテナ内の番号は、図22のステップS2201でコンテナに順番を付けた番号である。(1)のコンテナからみて、Y方向の距離の小さい順に他のコンテナ((2)〜(8))の順番は設定されており、2402,2403,2404,2405,2406,2407,2408,2409の順に番号が設定されている。ここで、図24Bの2415で示すように、リンク設定ツールボタンを押下すると、リンクが設定される。2411〜2113は作成されたY方向のリンクを示しており、各コンテナのY方向に対して最小距離にあるコンテナ間にリンクが設定されている。また、2113のように、コンテナ(1)からコンテナ(4)コンテナ(5)5間へ2本のリンクが設定されているが、これはY方向の最小距離に2つのコンテナがあったためである。
【0169】
なお、Y方向にリンクを一括設定する場合にも、上述したX方向にリンクを一括設定する場合と同様に、図69のリンク設定UIによる選択により、最小距離に位置しないコンテナに対してもリンクを設定することが可能となる。
【0170】
(コンテナの計算のための優先順位の設定)
コンテナに対してリンクを一括設定する際、コンテナの計算の順番を指定するための優先方向の設定をすることが可能である。この処理を図51、図52、図53を参照しつつ説明する。ここで、図52はリンクの一括設定により作成されたリンクとそのコンテナを示す図である。左右に示される5301はページ幅を示し、5302はリンクの一括設定が行われたコンテナ、5303はリンクを示している。設定される優先順位は、X方向とY方向どちらかの方向を指定して、指定された方向から、コンテナに優先順位が設定される。方向の指定は、図53のようなダイアログで行われ、ユーザによって指定される。5304はダイアログボックスであり、ユーザインターフェースモジュール103により表示制御される。5305は方向指定を行うラジオボタン、5306は設定をキャンセルするボタン、5307はOKボタンを示している。方向を指定して、OKボタンを押下することで優先順位が自動に設定される。
【0171】
図51は優先順位の設定フローの流れを説明するフローチャートである。まず、ステップS5101において、前述した図53のダイアログにより指定された優先方向を判断する。ここで、X方向が指定されていたならば、レイアウト編集アプリケーション121は、コンテナの左辺のX座標の位置について、小さい順にコンテナの順番を設定する(S5102)。もし、同じX座標に複数のコンテナがレイアウトされていた場合、レイアウト編集アプリケーション121は、それらのコンテナの上辺のY座標が小さい順に順番を設定する。
【0172】
一方、優先方向にY方向が指定されていたならば、レイアウト編集アプリケーション121は、コンテナの上辺のY座標について、小さい順にコンテナの順番を設定する(S5103)。もし、同じY座標に複数のコンテナがレイアウトされていた場合、レイアウト編集アプリケーション121は、それらのコンテナの上辺のX座標が小さい順に順番を設定する。順番の設定が終了したら、その順番に沿って優先順位を設定する(S5104)。この優先方向の指定により、コンテナに関する計算の優先順位を設定することができる。
【0173】
図54A、Bは、X方向を優先させてコンテナに優先順位を設定する処理の例を示す図であり、図54Aは優先順位が設定される前のコンテナとリンクを示している。ここで、左右の5401はページ幅を示し、5402はコンテナを示している。そして、5403は全コンテナの左辺のX座標を示している。コンテナの優先順位は、X座標の小さい(ページ上の左から)順番に設定される。図54Bは優先順位が設定された後のコンテナとリンクを示している。各コンテナ内の数字が優先順位を示している。X座標の小さい順に設定されるので、5404,5405,5406,5407,5408,5409,5410,5411の順にコンテナの優先順位が設定される。
【0174】
同様に図55A、Bは、Y方向を優先させてコンテナに優先順位を設定する処理の例を示す図であり、図55Aは優先順位が設定される前のコンテナとリンクを示している。ここで、左右の5501はページ幅を示し、5502はコンテナを示している。そして、5504は全コンテナの上辺のY座標を示している。コンテナの優先順位は、Y座標の小さい(ページ上の上から)順番に設定される。図55Bは優先順位が設定された後のコンテナとリンクを示している。各コンテナ内の数字が優先順位を示している。Y座標の小さい順に設定されるので、5504,5505,5506,5507,5508,5509,5510,5511の順に優先順位が設定される。
【0175】
(リンク設定の修正)
一括設定されたコンテナ間のリンクに関して、ユーザは、例えば、キーボード132、またはマウス133の指示入力手段を介して、修正の指定をすることができる。この場合、指定されたリンクに関して、リンクの属性(可変、固定)の変更や、リンクの設定をキャンセルすることが可能である。この変更や設定のキャンセルはユーザインターフェースモジュール103、プロセッサユニット135の制御の下に実行することが可能である。また、コンテナをそれぞれ指定することにより、個別にリンクの設定を指定することができる。これにより、ユーザは、一括設定されたリンクの他、新たに追加してリンクの設定を行うことが可能になる。
【0176】
(コンテナに関する設定の自動変更(ページ上の一番外側にある辺をロック))
図17のステップ1705にあたる、コンテナのアンカーの設定を変更する処理について説明する。ここで行う処理は、リンクを作成したコンテナの辺が、ページ内にレイアウトされているコンテナの最も外側に位置する辺と同じ位置であったときは、その辺の位置を自動的にロック(固定)するものである。同じコンテナで横方向の辺とこれに交差する縦方向の辺がロックされた場合は、自動的にその辺により形成されるコーナー部にアンカーが設定される。
【0177】
図25は、アンカーの設定に関する全体的な処理の流れを説明するフローチャートである。ステップS2501において、コンテナの左辺をロックして、ステップS2502において、コンテナの右辺をロックする。更に、ステップS2503、ステップS2504において、コンテナの上辺、下辺をロックする。各辺をロックする詳細な処理の流れは図26、図28、図30、図32のフローチャートに基づき説明する。
【0178】
(左辺のロック)
図26は、図25におけるステップS2501のコンテナの左辺をロックする処理の流れを具体的に説明するフローチャートである。まず、ステップS2601において、レイアウト編集アプリケーション121は、レイアウトされている全コンテナの左辺の最小X座標を取得する。そして、取得した最小X座標をMin_Xに代入する(S2602)。次に、ステップS2603において、変数iに1を代入し、ステップ2604において、変数kに0を代入する。
【0179】
さらに、レイアウト編集アプリケーション121は、Lock_Cont[]を用意し、0で初期化をする(S2605)。ここで、変数iはコンテナの番号を示しており、変数kはLock_Cont[]の添字を示す変数であり、Lock_Cont[]は、ロック対象のコンテナの番号を格納する配列である。
【0180】
次に、ステップS2606において、レイアウト編集アプリケーション121は、i番目のコンテナの左辺のX座標とMin_Xが等しいかどうかをチェックする。等しいのであれば、処理をステップS2607に進め、iをLock_Cont[k]に代入する。そして、kおよびiをインクリメントする(S2608,S2609)。
【0181】
ステップ2606で等しくなかった場合は(S2606-NO)、Lock_Contに代入せずに、iをインクリメントする(S2609)。そして、すべてのコンテナについて処理が終了したかどうかを確認し(S2610)、終了していなければ、ステップS2606へ進み処理を繰り返す。終了していれば、処理をステップS2611に進め、kに0を代入する。そして、処理をステップS2612に進め、Lock_Cont[k]の値をチェックする。もし、値が0ならば、ロックを設定せずにこの処理を終了する。値が0でないならば、Lock_Cont[k]番目のコンテナの左辺をロックする(S2613)。そして、変数kをインクリメントする(S2614)。この処理をLock_Cont[k]の値が0になるまで、ステップ2613と2614を繰り返す。この処理により、リンクを設定したコンテナの辺の中で、ページ内に一番左にある辺がロックされる。複数の辺が見つかった場合は、見つかった複数の辺すべてがロックされる。
【0182】
図27はコンテナの左辺のロック状態を示す図であり、2701は複数のコンテナの選択を指定する矩形、2702,2703,2704はリンク、2705はロックされた辺を示し,2706は最小のX座標を示している。この図で示されるように、図26の処理を行うと、最小のX座標にあるコンテナの左辺がロックされる。
【0183】
図28は図25におけるステップ2502の右辺をロックする処理の流れを具体的に説明するフローチャートである。まず、ステップS2801において、レイアウト編集アプリケーション121は、レイアウトされている全コンテナの右辺の最大X座標を取得する。そして、ステップS2802において、取得した最大X座標をMax_Xに代入する。次に、ステップS2803において、変数iに1を代入し、また、ステップS2804において、変数kに0を代入する。さらに、ステップS2805において、Lock_Cont[]を用意し、0で初期化をする。ここで、変数iはコンテナの番号を示しており、kはLock_Cont[]の添字を示す変数であり、Lock_Cont[]は、ロック対象のコンテナの番号を格納する配列である。
【0184】
次に、ステップS2806でレイアウト編集アプリケーション121は、i番目のコンテナの右辺のX座標とMax_Xが等しいかどうかをチェックする。等しいのであれば(S2806−YES)、処理をステップS2807に進め、iをLock_Cont[k]に代入する。そして、変数kおよび変数iをインクリメントする(S2808,S2809)。ステップS2806で等しくなかった場合は(S2806−NO)、Lock_Contに代入せずに、処理をステップS2809に進め、変数iをインクリメントする。
【0185】
そして、すべてのコンテナについて終了したかどうかを確認し(S2810)、終了していなければ(S2810−NO)、ステップS2806へ進み処理を繰り返す。終了していれば(S2810−YES)、処理をステップS2811に進め、変数kに0を代入する。
【0186】
そして、処理をステップS2812に進め、レイアウト編集アプリケーション121は、Lock_Cont[k]の値をチェックする。もし、値が0ならば、ロックを設定せずにこの処理を終了する。一方、値が0でないならば(S2812−NO)、処理をステップS2813に進めLock_Cont[k]番目のコンテナの右辺をロックする。
【0187】
そして、ステップS2814において、変数kをインクリメントし、Lock_Cont[k]の値が0になるまで、ステップS2813とステップS2814の処理を繰り返す。この処理により、リンクを設定したコンテナの辺の中で、ページ内に一番右にある辺がロックされる。複数の辺が見つかった場合は、見つかった複数の辺すべてがロックされる。
【0188】
図29はコンテナの右辺のロック状態を示す図である。同図において、2901は複数のコンテナの選択を指定する矩形、2902,2903はリンク、2904はロック,2905は最大のX座標を示している。図29で示されるように、図28の処理を行うと、最大のX座標にあるコンテナの右辺がロックされる。
【0189】
(上辺のロック)
図30は図25におけるステップ2503の上辺をロックする処理の流れを具体的に説明するフローチャートである。まず、ステップS3001において、レイアウト編集アプリケーション121は、レイアウトされている全コンテナの上辺の最小Y座標を取得する。そして、ステップS3002において、取得した最小Y座標をMin_Yに代入する。次に、ステップS3003において、変数iに1を代入し、ステップS3004において、変数kに0を代入する。さらに、ステップS3005において、レイアウト編集アプリケーション121は、Lock_Cont[]を用意し、0で初期化をする。ここで、変数iはコンテナの番号を示しており、kはLock_Cont[]の添字を示す変数であり、Lock_Cont[]は、ロック対象のコンテナの番号を格納する配列である。
【0190】
次に、処理をステップS3006に進め、レイアウト編集アプリケーション121は、i番目のコンテナの上辺のY座標とMin_Yが等しいかどうかをチェックする。等しいのであれば(S3006−YES)、処理をステップS3007に進め、変数iをLock_Cont[k]に代入する。そして、変数kおよび変数iをインクリメントする(S3008,S3009)。
【0191】
ステップ3006で等しくなかった場合は(S3006−NO)、レイアウト編集アプリケーション121は、Lock_Contに代入せずに、変数iをインクリメントする(S3009)。そして、処理をステップS3010に進め、すべてのコンテナについて処理が終了したかどうかを確認し、終了していなければ(S3010−NO)、ステップ3006へ進み処理を繰り返す。処理が終了していれば(S3010−YES)、処理をステップS3011に進め、変数kに0を代入する。そして、処理をステップS3012に進め、レイアウト編集アプリケーション121は、Lock_Cont[k]の値をチェックする。もし、値が0ならば(S3012−YES)、ロックを設定せずにこの処理を終了する。値が0でないならば(S3012−NO)、処理をステップS3013に進め、Lock_Cont[k]番目のコンテナの上辺をロックする。そして、処理をステップS3014に進め、変数kをインクリメントし(3014)、Lock_Cont[k]の値が0になるまで、ステップS3013とS3014を繰り返す。この処理により、リンクを設定したコンテナの辺の中で、ページ内に一番上にある辺がロックされる。複数の辺が見つかった場合は、見つかった複数の辺すべてがロックされる。
【0192】
図31はコンテナの上辺のロック状態を示す図である。同図において、3101は複数のコンテナの選択を指定する矩形、3102,3103はリンク、3104は最小のY座標を示している。この図で示されるように、図30の処理を行うと、最小のY座標にあるコンテナの上辺がロックされる。
【0193】
図32は図25におけるステップ2504の下辺をロックする処理の流れを具体的に説明するフローチャートである。まず、ステップS3201において、レイアウト編集アプリケーション121は、レイアウトされている全コンテナの下辺の最大Y座標を取得する。そして、ステップS3202において、取得した最大Y座標をMax_Yに代入する。次に、ステップS3203において、変数iに1を代入し、ステップS3204において、変数kに0を代入する。さらに、ステップS3205において、Lock_Cont[]を用意し、0で初期化をする。ここで、iはコンテナの番号を示しており、kはLock_Cont[]の添字を示す変数であり、Lock_Cont[]は、ロック対象のコンテナの番号を格納する配列である。
【0194】
次に、処理をステップS3206に進め、レイアウト編集アプリケーション121は、i番目のコンテナの下辺のY座標とMax_Yが等しいかどうかをチェックする。等しいのであれば、処理をステップS3207に進め、変数iをLock_Cont[k]に代入する。そして、ステップS3208において、変数kおよび変数iをインクリメントする(S3208,S3209)。
【0195】
ステップS3206で等しくなかった場合は(S3206−NO)、Lock_Contに代入せずに、変数iをインクリメントする(S3209)。そして、すべてのコンテナについて処理を終了したかどうかを確認し(S3210)、終了していなければ(S3210−NO)、ステップ3206へ進み処理を繰り返す。終了していれば(S3210−YES)、処理をステップS3211に進め、変数kに0を代入する。そして、処理をステップS3212に進め、レイアウト編集アプリケーション121は、Lock_Cont[k]の値をチェックする。もし、値が0ならば、ロックを設定せずにこの処理を終了する。値が0でないならば(S3212−NO)、Lock_Cont[k]番目のコンテナの下辺をロックする(S3213)。そして、処理をステップS3214に進め、変数kをインクリメントし、Lock_Cont[k]の値が0になるまで、ステップS3213とS3214を繰り返す。この処理により、リンクを設定したコンテナの辺の中で、ページ内に一番下にある辺がロックされる。複数の辺が見つかった場合は、見つかった複数の辺すべてがロックされる。
【0196】
図33はコンテナの下辺のロック状態を示す図である。同図において、3301は複数のコンテナの選択を指定する矩形、3302,3303はリンク,3304は最大のY座標を示している。この図で示されるように、図32の処理を行うと、最大のY座標にあるコンテナの下辺がロックされる。
【0197】
図34はアンカーの設定の状態を示す図である。ここで、3401はページ端を示し、3402はコンテナ、3403,3404はリンク、3405,3506,3407はロックされた辺を示している。上述の処理でページ内の外側に位置する辺3407がロックされたときに、同じコンテナの縦と横の辺がロックされて、コンテナの角が固定になったときは、3408で示されるようにアンカーが自動的に設定される。
【0198】
(フレキシブルなリンクの設定)
図35,36は、上述のリンクの一括作成処理で、作成されるリンクが固定長さではなく、最大・最小値をもつフレキシブルなリンクとして設定するための処理の流れを説明するフローチャートである。ここで、リンクを設定するコンテナを選択する操作は上述の内容と同様なので重複を避けるためここでは説明を省略するが、フレキシブルなリンクの最大、最小値の設定処理は、図20及び図23のフローが変更になることになるので、ここではその変更点のみを説明する。
【0199】
図35は、図20で示したX方向のリンク作成のフローチャートにおいて、作成されるリンク長をフレキシブルに設定するための処理の流れを説明するフローチャートである。まず、ステップS3501において、レイアウト編集アプリケーション121は、変数kに0を代入する。そして、ステップS3502において、ContX[k]の値をチェックする。もし値が0であるならば(S3502−YES)、リンク作成処理は終了する。一方、値が0でなければ(S3502−NO)、処理をステップS3503に進め、n番目のコンテナと、ContX[k]番目のコンテナの間にX方向のリンクを設定する。そして、ステップS3504において、作成されたリンクの長さをLink_Distに代入する。ステップS3505では、Link_Distに係数1.2を乗算し、その値を作成したリンクの最大値に設定する。そして、Link_Distに係数0.8を乗算し、その値を作成したリンクの最小値に設定する(S3506)。ステップS3507において、変数kをインクリメントして、リンクを設定するコンテナがある限り、ステップS3503からS3506までの処理を続ける。
【0200】
同様に図36は、図23で示したY方向のリンク作成のフローチャートにおいて、作成されるリンク長をフレキシブルに設定するための処理の流れを説明するフローチャートである。まず、ステップS3601において、変数kに0を代入する。そして、ステップS3602で、ContY[k]の値をチェックする。もし値が0であるならば、リンク作成処理は終了する。値が0でなければ(S3602−NO)、処理をステップS3603に進め、n番目のコンテナと、ContY[k]番目のコンテナの間にY方向のリンクを設定する。そして、ステップS3604において、作成されたリンクの長さをLink_Distに代入する。ステップS3605では、Link_Distに係数1.2を乗算し、その値を作成したリンクの最大値に設定する。そして、Link_Distに係数0.8を乗算し、その値を作成したリンクの最小値に設定する(S3606)。ステップS3607において、変数kをインクリメントして、リンクを設定するコンテナがある限り、ステップS3603からS3606までの処理を続ける。
【0201】
以上説明した図35、図36の処理により、作成されたリンクの長さの120%を最大値、80%を最小値として設定することが可能になる。ただし、リンク長の最大、最小値は上述の係数に限定されるものではなく、例えば、図48のUI画面を介してユーザによって任意に指定することができるものとする。
【0202】
(コンテナに関する設定の自動変更(ユーザの指定した範囲にある辺をロック))
次に、コンテナに関する設定の自動変更として、ユーザから入力された範囲にある辺をロックする処理について説明する。
【0203】
図37は、本ロック処理の全体的な処理の流れを説明するフローチャートであり、フローを示している。まず、ステップS3701において、レイアウト編集アプリケーション121は、ユーザによるポインティングデバイス(132、133)の入力により指定されたX,Y方向の範囲を、指定範囲情報として保持する変数「Value_X,Value_Y」に代入する。ここでの範囲とは、ページ内の一番外側の辺の座標から、どのくらい内側までをロックの対象とするかを決める値である。そして、ステップS3702〜S3705の処理によりコンテナの各辺をロックする。以下、各辺のロックについて具体的に説明する。
【0204】
(左辺のロック)
図38は、図37におけるステップS3702のコンテナの左辺をロックする処理の流れを具体的に説明するフローチャートである。まず、ステップS3801において、レイアウト編集アプリケーション121は、レイアウトされている全コンテナの左辺の最小X座標を取得する。そして、取得した最小X座標をMin_Xに代入する(S3802)。次に、ステップS3803において、変数iに1を代入し、ステップS3804において、変数kに0を代入する。
【0205】
さらに、レイアウト編集アプリケーション121は、Lock_Cont[]を用意し、0で初期化をする(S3805)。ここで、変数iはコンテナの番号を示しており、変数kはLock_Cont[]の添字を示す変数であり、Lock_Cont[]は、ロック対象のコンテナの番号を格納する配列である。
【0206】
次に、ステップS3806において、レイアウト編集アプリケーション121は、i番目のコンテナの左辺のX座標からMin_Xを減算して、その値が指定範囲情報のX座標であるValue_X以下であるかをチェックする。Value_X以下であれば(S3806-YES)、i番目のコンテナは、ロック対象として指定された範囲内であるので、変数iをLock_Cont[k]に代入する(S3807)。そして、変数kおよび変数iをインクリメントする(S3808,S3809)。
【0207】
ステップ3806でValue_X以下でない場合は(S3806-NO)、Lock_Contに代入せずに、変数iをインクリメントする(S3809)。そして、すべてのコンテナについて処理が終了したかどうかを確認し(S3810)、終了していなければ(S3810−NO)、ステップS3806へ進み処理を繰り返す。終了していれば(S3810-YES)、処理をステップS3811に進め、変数kに0を代入する。そして、処理をステップS3812に進め、Lock_Cont[k]の値をチェックする。もし、値が0ならば、ロックを設定せずにこの処理を終了する。値が0でないならば(S3812−NO)、処理をステップS3813に進め、Lock_Cont[k]番目のコンテナの左辺をロックする。そして、処理をステップS3814に進め、変数kをインクリメントし、Lock_Cont[k]の値が0になるまで、ステップS3813とS3814の処理を繰り返す。この処理により、リンクを設定したコンテナの辺の中で、ページ内に一番左からユーザが指定した範囲内にあるコンテナの左辺はすべてロックされる。
【0208】
図39はコンテナの左辺のロック状態を示す図であり、3901は複数のコンテナの選択を指定する矩形、3902,3903,3904はリンク、3905はロックされたコンテナの辺,3906は最小のX座標、3907はロック対象となる指定範囲の境界線、3908はValue_Xの間隔を示している。この図で示されるように、図38の処理を行うと、最小のX座標3906から、Value_X3908で指定された範囲内にあるコンテナの左辺がロックされる(3905)。この場合、複数の辺が該当する場合は、該当する複数の辺すべてがロックされる。
【0209】
(右辺のロック)
図40は、図37におけるステップS3703のコンテナの右辺をロックする処理の流れを具体的に説明するフローチャートである。まず、ステップS4001において、レイアウト編集アプリケーション121は、レイアウトされている全コンテナの右辺の最大X座標を取得する。そして、取得した最大X座標をMax_Xに代入する(S4002)。次に、ステップS4003において、変数iに1を代入し、ステップS4004において、変数kに0を代入する。
【0210】
さらに、Lock_Cont[]を用意し、0で初期化をする(S4005)。ここで、変数iはコンテナの番号を示しており、変数kはLock_Cont[]の添字を示す変数であり、Lock_Cont[]は、ロック対象のコンテナの番号を格納する配列である。 次に、ステップS4006において、Max_Xからi番目のコンテナの右辺のX座標を減算して、その値が指定範囲情報のX座標であるValue_X以下であるかどうかをチェックする。Value_X以下であれば(S4006-YES)、i番目のコンテナは、ロック対象として指定された範囲内であるので、変数iをLock_Cont[k]に代入する(S4007)。そして、変数kおよび変数iをインクリメントする(S4008,S4009)。
【0211】
ステップS4006でValue_X以下でない場合は(S4006−NO)、Lock_Contに代入せずに、変数iをインクリメントする(S3809)。そして、すべてのコンテナについて処理が終了したかどうかを確認し(S4010)、終了していなければ(S4010−NO)、ステップS4006へ進み処理を繰り返す。終了していれば(S4010−YES)、処理をステップS4011に進め、変数kに0を代入する。そして、処理をステップS4012に進め、Lock_Cont[k]の値をチェックする。もし、値が0ならば、ロックを設定せずにこの処理を終了する。値が0でないならば(S4012−NO)、処理をステップS4013に進め、Lock_Cont[k]番目のコンテナの右辺をロックする。そして、処理をステップS4014に進め、変数kをインクリメントし、Lock_Cont[k]の値が0になるまで、ステップS4013とS4014の処理を繰り返す。この処理により、リンクを設定したコンテナの辺の中で、ページ内に一番右からユーザが指定した範囲内にあるコンテナの右辺はすべてロックされる。
【0212】
図41はコンテナの左辺のロック状態を示す図であり、4101は複数のコンテナの選択を指定する矩形、4102,4103,4104はリンク、4105はロックされたコンテナの辺,4107は最大のX座標、4106はロック対象となる指定範囲の境界線、4108はValue_Xの間隔を示している。この図で示されるように、図40の処理を行うと、最大のX座標から、Value_X4108で指定された範囲内にあるコンテナの右辺がロックされる(4105)。この場合、複数の辺が該当する場合は、該当する複数の辺すべてがロックされる。
【0213】
(上辺のロック)
図42は、図37におけるステップS3704のコンテナの上辺をロックする処理の流れを具体的に説明するフローチャートである。まず、ステップS4201において、レイアウトされている全コンテナの上辺の最小Y座標を取得する。そして、取得した最小Y座標をMin_Yに代入する(S4202)。次に、ステップS4003において、変数iに1を代入し、ステップS4204において、変数kに0を代入する。
【0214】
さらに、Lock_Cont[]を用意し、0で初期化をする(S4205)。ここで、変数iはコンテナの番号を示しており、変数kはLock_Cont[]の添字を示す変数であり、Lock_Cont[]は、ロック対象のコンテナの番号を格納する配列である。 次に、ステップS4206において、i番目のコンテナの上辺のY座標からMin_Yを減算して、その値がValue_Y以下かどうかをチェックする。Value_Y以下であれば(S4206−YES)、i番目のコンテナは、ロック対象として指定された範囲内であるので、変数iをLock_Cont[k]に代入する(S4207)。そして、変数kおよび変数iをインクリメントする(S4208,S4209)。
【0215】
ステップS4206でValue_Y以下でない場合は(S4206−NO)、Lock_Contに代入せずに、変数iをインクリメントする(S4209)。そして、すべてのコンテナについて処理が終了したかどうかを確認し(S4210)、終了していなければ(S4210−NO)、ステップ4206へ進み処理を繰り返す。終了していれば(S4210−YES)、処理をステップS4211に進め、変数kに0を代入する。そして、処理をステップS4212に進め、Lock_Cont[k]の値をチェックする。もし、値が0ならば、ロックを設定せずにこの処理を終了する。値が0でないならば(S4212−NO)、処理をステップS4213に進め、Lock_Cont[k]番目のコンテナの上辺をロックする。そして、処理をステップS4214に進め、変数kをインクリメントし、Lock_Cont[k]の値が0になるまで、ステップS4213とS4214の処理を繰り返す。この処理により、リンクを設定したコンテナの辺の中で、ページ内の一番上からユーザが指定した範囲内にあるコンテナの上辺はすべてロックされる。
【0216】
図43はコンテナの上辺のロック状態を示す図であり、4301は複数のコンテナの選択を指定する矩形、4302,4303はリンク、4304は最小のY座標、4305はロック対象となる指定範囲の境界線、4308はValue_Yの間隔を示している。この図で示されるように、図42の処理を行うと、最小Y座標から、Value_Y4308で指定された範囲内にあるコンテナの上辺がロックされる(4306)。この場合、複数の辺が該当する場合は、該当する複数の辺すべてがロックされる。
【0217】
(下辺のロック)
図44は、図37におけるステップS3705のコンテナの下辺をロックする処理の流れを具体的に説明するフローチャートである。まず、ステップS4401において、レイアウトされている全コンテナの下辺の最大Y座標を取得する。そして、取得した最大Y座標をMax_Yに代入する(S4402)。次に、ステップS4403において、変数iに1を代入し、ステップS4404において、変数kに0を代入する。
【0218】
さらに、Lock_Cont[]を用意し、0で初期化をする(S4405)。ここで、変数iはコンテナの番号を示しており、変数kはLock_Cont[]の添字を示す変数であり、Lock_Cont[]は、ロック対象のコンテナの番号を格納する配列である。 次に、ステップS4406において、Max_Yからi番目のコンテナの下辺のY座標を減算して、その値がValue_Y以下かどうかをチェックする。Value_Y以下であれば(S4206−YES)、i番目のコンテナは、ロック対象として指定された範囲内であるので、変数iをLock_Cont[k]に代入する(S4407)。そして、変数kおよび変数iをインクリメントする(S4408,S4409)。
【0219】
ステップS4406でValue_Y以下でない場合は(S4406−NO)、Lock_Contに代入せずに、変数iをインクリメントする(S4409)。そして、すべてのコンテナについて処理が終了したかどうかを確認し(S4410)、終了していなければ(S4410−NO)、ステップS4406へ進み処理を繰り返す。終了していれば(S4410−YES)、ステップS4411に進め、変数kに0を代入する。そして、処理をステップS4412に進め、Lock_Cont[k]の値をチェックする。もし、値が0ならば、ロックを設定せずにこの処理を終了する。値が0でないならば(S4412−NO)、処理をステップS4413に進め、Lock_Cont[k]番目のコンテナの下辺をロックする。そして、処理をステップS4414に進め、変数kをインクリメントし、Lock_Cont[k]の値が0になるまで、ステップS4413とS4414の処理を繰り返す。この処理により、リンクを設定したコンテナの辺の中で、ページ内の一番下からユーザが指定した範囲内にあるコンテナの辺がすべてロックされる。この場合、複数の辺が該当する場合は、該当する複数の辺すべてがロックされる。
【0220】
図45はコンテナの下辺のロック状態を示す図であり、4501は複数のコンテナの選択を指定する矩形、4502,4503はリンク,4504は最大のY座標、4505はロック対象となる指定範囲の境界線、4508はValue_Yの間隔を示している。この図で示されるように、図44の処理を行うと、最大Y座標から、Value_Yで指定された範囲内にあるコンテナの下辺がロックされることになるが、ここでは、選択した範囲内にロック対象のコンテナがないのでロックはされていない。
【0221】
以上説明したとおり、本実施形態によれば、複数のコンテナ間に対して、一つの操作でリンクを一括設定することが可能になり、効率のよい操作を実現することが可能になる。
【0222】
(他の実施形態)
なお、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
【0223】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【0224】
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD−R,磁気テープ,不揮発性のメモリカード,ROMなどを用いることができる。
【0225】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0226】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【0227】
【図1A】本発明の実施形態にかかるコンピュータシステムの構成を示す図である。
【図1B】ホストコンピュータの具体的な構成を説明する図である。
【図2】レイアウトエンジンモジュールをホストコンピュータ101の他にエンジンサーバ227にもレイアウトエンジン225を設けた構成を示す図である。
【図3】メニューバー、ツールバー、ワークエリア、フローティングパレットを含むユーザインターフェース画面を示す図である。
【図4】コンテナ間のリンク、アンカーやスライダーを持つ典型的なコンテナを示す図である。
【図5A】コンテナを構成する辺に対するルールを例示的に説明する図である。
【図5B】コンテナを構成する辺に対するルールを例示的に説明する図である。
【図5C】コンテナを構成する辺に対するルールを例示的に説明する図である。
【図5D】コンテナを構成する辺に対するルールを例示的に説明する図である。
【図6】リンクの設定方法を示するフローチャートである。
【図7】リンク作成時のユーザインターフェースの画面表示例を示す図である。
【図8】レイアウト計算の処理の流れを説明するフローチャートである。
【図9】レイアウト計算の詳細な処理の流れを説明するフローチャートである。
【図10】図9のフローに対応するユーザインターフェース画面の表示例を示した図である。
【図11】レイアウト計算時におけるコンテナの集合について説明した図である。
【図12】リンクの自動設定に関するUI画面を例示する図である。
【図13】複数のコンテナF,G,Hを選択するUI画面の例を示す図である。
【図14A】図13で説明した操作によりコンテナF,G,Hが選択されたことをユーザに示すためにUI画面が切り替えられた状態を示す図である。
【図14B】マウスポインタ1303でコンテナを押下する(指定する)ことによる複数のコンテナの選択の例を示す図である。
【図15】複数選択されたコンテナF,G,H間にリンクが一括で設定された状態を示す図である。
【図16】リンクの自動設定の全体的な流れを説明するフローチャートである。
【図17】リンクの一括作成の処理の流れを概略的に説明するフローチャートである。
【図18】コンテナの位置情報を取得する処理の流れを説明するフローチャートである。
【図19A】X方向のリンクの作成処理の流れを説明するフローチャートである。
【図19B】X方向のリンクの作成処理の流れを説明するフローチャートである。
【図20】図19BのステップS1914のリンク設定処理の流れを説明するフローチャートである。
【図21A】X方向のリンク設定を説明する図である。
【図21B】X方向のリンク設定を説明する図である。
【図22A】Y方向のリンクの作成処理の流れを説明するフローチャートである。
【図22B】Y方向のリンクの作成処理の流れを説明するフローチャートである。
【図23】図22BのステップS2214のリンク設定処理の流れを説明するフローチャートである。
【図24A】リンク作成の状態を示すUI画面の例を示す図である。
【図24B】リンク作成の状態を示すUI画面の例を示す図である。
【図25】アンカーの設定に関する全体的な処理の流れを説明するフローチャートである。
【図26】図25におけるステップS2501の左辺をロックする処理の流れを具体的に説明するフローチャートである。
【図27】コンテナの左辺のロック状態を示す図である。
【図28】図25におけるステップS2502の右辺をロックする処理の流れを具体的に説明するフローチャートである。
【図29】コンテナの右辺のロック状態を示す図である。
【図30】図25におけるステップS2503の上辺をロックする処理の流れを具体的に説明するフローチャートである。
【図31】コンテナの上辺のロック状態を示す図である。
【図32】図25におけるステップS2504の下辺をロックする処理の流れを具体的に説明するフローチャートである。
【図33】コンテナの下辺のロック状態を示す図である。
【図34】アンカーの設定の状態を示す図である。
【図35】最大・最小値をもつフレキシブルなリンクを設定するための処理の流れを説明するフローチャートである。
【図36】最大・最小値をもつフレキシブルなリンクを設定するための処理の流れを説明するフローチャートである。
【図37】ユーザの指定した範囲にある辺をロックする処理の全体的な処理の流れを説明するフローチャートである。
【図38】図37におけるステップS3702のコンテナの左辺をロックする処理の流れを具体的に説明するフローチャートである。
【図39】コンテナの左辺のロック状態を示す図である。
【図40】図37におけるステップS3703のコンテナの右辺をロックする処理の流れを具体的に説明するフローチャートである。
【図41】コンテナの左辺のロック状態を示す図である。
【図42】図37におけるステップS3704のコンテナの上辺をロックする処理の流れを具体的に説明するフローチャートである。
【図43】コンテナの上辺のロック状態を示す図である。
【図44】図37におけるステップS3705のコンテナの下辺をロックする処理の流れを具体的に説明するフローチャートである。
【図45】コンテナの下辺のロック状態を示す図である。
【図46】自動レイアウトシステムにおける典型的な可変リンクによるコンテナの配置を説明する図である。
【図47】自動レイアウトシステムにおける可変リンクを設定するフローを示している。
【図48】リンク4609の情報がセットされているダイアログウィンドウの例を示す図である。
【図49】自動レイアウトシステムにおける固定リンクによるレイアウト結果を示す図である。
【図50】自動レイアウトシステムにおける可変リンクによるレイアウト結果を示す図である。
【図51】優先順位の設定フローの流れを説明するフローチャートである。
【図52】リンクの一括設定により作成されたリンクとそのコンテナを示す図である。
【図53】自動優先順位設定のダイアログボックスの表示例を示す図である。
【図54A】X方向を優先して優先順位が設定される前のコンテナとリンクを示す図である。
【図54B】X方向を優先して優先順位が設定された後のコンテナとリンクを示す図である。
【図55A】Y方向を優先して優先順位が設定される前のコンテナとリンクを示す図である。
【図55B】Y方向を優先して優先順位が設定された後のコンテナとリンクを示す図である。
【図56】優先順位の設定処理の流れを説明するフローチャートである。
【図57】コンテナの集合を単位として優先順位を設定する内容を説明する図である。
【図58】優先順位を設定するダイアログユーザインターフェース(UI)画面の例を示す図である。
【図59】コンテナに設定する優先順位を変更する手順を説明する図である。
【図60】優先順位を設定するモードへ移行するためのポップアップメニューの例を示す図である。
【図61】優先順位の設定をユーザに示すUI画面の例を示す図である。
【図62】優先順位の設定をユーザに示すUI画面の例を示す図である。
【図63】優先順位の設定をユーザに示すUI画面の例を示す図である。
【図64】優先順位が設定されたコンテナのレイアウトの計算処理の流れを説明するフローチャートである。
【図65】レイアウトの優先順位がコンテナに設定されていた場合のレイアウト計算処理の流れを説明するフローチャートである。
【図66】図65のレイアウト計算処理で表示されるUI画面の例を示す図である。
【図67】図65のレイアウト計算処理で表示されるUI画面の例を示す図である。
【図68】リンクの自動設定において、最小距離に限らない場合の処理の流れを説明するフローチャートである。
【図69】リンクの自動設定方法を選択するためのUI画面の例を示す図である。
【図70A】リンクの自動設定において、最小距離に限らない自動リンク設定方法が選択された場合の、リンク作成処理の流れを説明するフローチャートである。
【図70B】リンクの自動設定において、最小距離に限らない自動リンク設定方法が選択された場合の、リンク作成処理の流れを説明するフローチャートである。
【図71】図70A,Bの処理によるX方向のリンク設定を説明する図である。
【図72】図70A、Bの処理によるリンクの自動設定において、最小距離に限らない自動リンク設定方法が選択された場合の、具体例を示す図である。
【図73】リンクの自動設定処理におけるリンク生成方向を選択するためのUI画面の例を示す図である。
【符号の説明】
【0228】
101 ホストコンピュータ
103 ユーザインターフェースモジュール
105 レイアウトエンジンモジュール
119 データベース
121 レイアウト編集アプリケーションプログラム
132 キーボード
133 マウス
143 I/Oインタフェース
144 ディスプレイ装置
301 アプリケーションウインドウ
303 ツールバー
406 リンクツールボタン
407、408 コンテナ
409 アンカーアイコン
410 固定されていない辺
412 リンク
【技術分野】
【0001】
本発明は、テキストやイメージで構成されたドキュメントの生成、編集、そして印刷のためのレイアウト制御技術に関するものであり、更に詳しくは、バリアブルデータドキュメントの生成、編集、そして印刷に好適なものである。
【背景技術】
【0002】
近年、商品の多品種化で商品ライフサイクルが短くなっていること、インターネットの普及により、これを利用した消費者のカスタマイズサービス指向が強くなっていることなどの要因からCRM(Customer Relationship Management)、One-to-Oneマーケティングの必要性が注目されている。これらの手法は顧客満足度を高め、顧客の開拓や囲い込みを目指すものである。
【0003】
One-to-Oneマーケティングはデータベース・マーケティングの一種で、顧客の年齢、性別、趣味、嗜好、購買履歴等の個人属性情報をデータベース化し、その内容を分析、顧客のニーズに合った提案を行うものであり、その代表的な手法としてバリアブルプリントが挙げられる。ここ最近ではDTP(デスクトップパブリッシング)技術の進展とデジタル印刷装置の普及に伴って、文書を顧客毎にカスタマイズして出力するバリアブルプリントシステムが開発され、顧客毎に異なる情報量のコンテンツを最適にレイアウトして表示することが求められるようになった。
【0004】
従来におけるバリアブルプリントシステムは、ドキュメント上に情報を表示する領域としてコンテナ(帳票フォームではフィールド領域とも呼ばれる)等をレイアウトして、データベースとコンテナとを関連付けることによりレイアウト表示を達成していた。
【0005】
しかし、テキストおよびイメージが貼り付けられる部分表示領域であるコンテナのサイズが固定であったため、データベース内のデータがコンテナに挿入されたときに、データ量がコンテナサイズより多いとテキストのオーバーラップやイメージのクリッピングが発生し、またデータ量がコンテナサイズより小さいとコンテナ内に隙間が空いてしまい、いずれの場合でも表示しようとするテキストやイメージの情報量に応じた最適なレイアウト表示を実現することはできなかった。
【0006】
その問題を解決するために、情報量に応じてコンテナサイズを可変にする自動レイアウトシステムが提案されている。この自動レイアウトシステムはテキストおよびイメージのコンテナサイズを可変に設定することが可能である。この自動レイアウトシステムにおいて、コンテナのサイズを可変とし、差し込まれるデータ量に応じてコンテナのサイズを大きくするよう変更できるものがある。また、テキストの場合において固定のコンテナサイズ内に入りきらないデータが挿入された場合、テキストのフォントサイズを縮小し、コンテナ内に全てのテキストを表示する技術も存在する。
【0007】
しかし、コンテナのサイズを大きくした場合、ドキュメント上の他のコンテナに重なってしまうという問題が生じる。またフォントサイズを調節する場合はテキストの量が大きい場合、フォントサイズが小さくなりすぎるという問題も生じる。これらの問題を解決するために、さらなる自動レイアウトの技術として、あるコンテナのサイズが大きくなった場合、このコンテナに隣接する他のコンテナのサイズを小さくする技術が特許文献1の「レイアウトデザイン装置」に開示されている。
【特許文献1】特開平11−316792号公報
【発明の開示】
【発明が解決しようとする課題】
【0008】
しかしながら、上述の自動レイアウトシステムにおいて、各コンテンツに貼り付けられるデータに合わせてコンテナの1例である可変表の行を増やし、それに応じて他のコンテナが移動する位置合わせの技術についてしか考慮していない。つまり、可変表の行が増えればそれだけ他のコンテナが移動し、改ページが行われる帳票のレイアウトデザインを作成するためのものである。しかしながら、上述したOne-to-oneマーケティングでは、決められた用紙サイズのページにユーザが所望とするコンテナ数をレイアウトすることが望まれている。つまり、従来のような単なる可変表の技術では対応できないという問題がある。そこで、それぞれのコンテナにデータを流し込み、各コンテナのサイズを可変にしつつ、決められた用紙サイズのページに必要な数のコンテナを動的に配置するような、自動レイアウトシステムの需要がある。このような自動レイアウトシステムでは、お互いのコンテナのサイズが可変であるため、各コンテナ同士で押し合いつつレイアウトを動的に変化させなければならない。レイアウトを動的に変化させるためには、各コンテナ間に関連付け(以下、リンク)を設定する必要があるが、リンクはコンテナ間において一つ一つに対して設定する必要があり、ユーザの操作負担を強いるものとなってしまう。すなわち、複数のコンテナをレイアウトして、それぞれのコンテナを動的にレイアウトするように設定するためには、コンテナ間にリンクを設定しなければならないが、コンテナの数が増えると、そのリンクの数も増えることになり、リンクを一つ一つ設定する作業にはコンテナの数に比例して増大し、ユーザの操作負担は大きくなってしまう。
【0009】
本発明は上記の課題に鑑みてなされたものであり、複数のコンテナ間に対して、一つの操作でリンクを一括設定することを可能にし、効率のよい操作を実現することを目的とする。
【課題を解決するための手段】
【0010】
上記目的を達成するために、本発明に係るレイアウト制御方法は主として以下の工程を有することを特徴とする。
【0011】
すなわち、指示手段と、指定手段と、決定手段と、リンク設定手段と、を備え、割り当てられたデータを収める複数の部分表示領域が配置されたテンプレートと、前記データとを用いてレイアウト処理を実行するレイアウト制御装置におけるレイアウト制御方法であって、
前記指示手段が、複数の部分表示領域を関連付けるリンクの設定を指示する指示工程と、
前記指定手段が、前記リンクによって関連付けられる複数の部分表示領域を指定する指定工程と、
前記指示工程によって前記リンクを設定することが指示された場合、前記決定手段が、前記指定工程において指定された前記複数の部分表示領域によって形成される複数の部分表示領域間の中から前記リンクを設定すべき部分表示領域間を、前記複数の部分表示領域の位置情報に基づいて決定する決定工程と、
前記リンク設定手段が、前記決定工程において決定された前記部分表示領域間に前記リンクを設定するリンク設定工程と、を有することを特徴とする。
【0012】
あるいは、上記目的を達成するために本発明に係るレイアウト制御装置は、割り当てられたデータを収める複数の部分表示領域が配置されたテンプレートと、前記データとを用いてレイアウト処理を実行するレイアウト制御装置におけるレイアウト制御装置であって、
複数の部分表示領域を関連付けるリンクの設定を指示する指示手段と、
前記リンクによって関連付けられる複数の部分表示領域を指定する指定手段と、
前記指示手段によって前記リンクを設定することが指示された場合、前記指定手段において指定された前記複数の部分表示領域によって形成される複数の部分表示領域間の中から前記リンクを設定すべき部分表示領域間を、前記複数の部分表示領域の位置情報に基づいて決定する決定手段と、
前記決定手段において決定された前記部分表示領域間に前記リンクを設定するリンク設定手段とを備えることを特徴とする。
【0013】
あるいは、上記目的を達成するために、本発明に係るレイアウト制御プログラムは、割り当てられたデータを収める複数の部分表示領域が配置されたテンプレートと、前記データとを用いてレイアウト処理をコンピュータに実行させるレイアウト制御プログラムであって、当該レイアウト制御プログラムが、コンピュータを
複数の部分表示領域を関連付けるリンクの設定を指示する指示手段と、
前記リンクによって関連付けられる複数の部分表示領域を指定する指定手段と、
前記指示手段によって前記リンクを設定することが指示された場合、前記指定手段において指定された前記複数の部分表示領域によって形成される複数の部分表示領域間の中から前記リンクを設定すべき部分表示領域間を、前記複数の部分表示領域の位置情報に基づいて決定する決定手段と、
前記決定手段において決定された前記部分表示領域間に前記リンクを設定するリンク設定手段として機能させることを特徴とする。
【発明の効果】
【0014】
複数のコンテナ間に対して、一つの操作でリンクを一括設定することを可能にし、効率のよい操作を実現することが可能になる。
【発明を実施するための最良の形態】
【0015】
本発明の好適な実施形態を図面を参照しつつ説明する。
【0016】
(システム構成図)
図1Aはコンテナサイズを可変に設定してドキュメントを印刷するシステム100を図示している。このシステムにおいて実行するコンテナサイズの制御、コンテナ間のリンク設定は図1Bで詳しく説明されるホストコンピュータ101の制御の下に実行される。図6で記述されるプロセスは、レイアウト制御装置であるホストコンピュータ101内で実行され、システム100上で実行可能となるレイアウト編集アプリケーションプログラム121(本発明のレイアウト制御プログラム)のようにソフトウェアの全体、あるいはその一部分で実行される。特にレイアウト編集や印刷のステップはホストコンピュータ101によるソフトウェアによって実行される。
【0017】
ソフトウェアは、例えば、以下に記述されるような記憶装置を含むコンピュータの可読媒体に格納される。ソフトウェアはコンピュータの可読媒体からホストコンピュータにロードされ、実行される。そのようなソフトウェアや媒体に記録されたコンピュータプログラム、あるいはそのプログラムを格納するコンピュータの可読媒体は、コンピュータと協働したドキュメントのレイアウト編集やバリアブルデータ印刷に必要な演算処理や表示制御、レイアウト制御、コンテンツに関する情報処理を実行する手段としてコンピュータの機能を特定する。
【0018】
ホストコンピュータ101はキーボード132やマウス133のようなポインティングデバイスなどの入力装置、ディスプレイ装置144や状況に応じてはローカルプリンタ145を含む出力装置と接続する。入力/出力(I/O)インターフェース138はホストコンピュータ101をネットワーク107に接続してシステム100を他のコンピュータ装置(例えば、データベースサーバ117)に接続することができる。そのネットワーク107の典型はローカルエリアネットワーク(LAN)、あるいはワイドエリアネットワーク(WAN)である。
【0019】
ホストコンピュータ101は典型的に少なくとも1つのプロセッサーユニット135、例えば半導体のランダムアクセスメモリ(RAM)やリードオンリーメモリ(ROM)から構成されるメモリユニット136、ビデオインターフェース137を含むINPUT/OUTPUT(I/O)インターフェース、キーボード132やマウス133のためのI/Oインターフェース143を含んでいる。記憶装置139はハードディスクドライブ140やフロッピー(登録商標)ディスクドライブ141を含んでいる。ここでは図示されていないが磁気テープドライブもまた記憶装置として使用することができる。
【0020】
CD−ROMドライブ142は不揮発性のデータソースとして提供される。ホストコンピュータ101はGNU/LINUXやマイクロソフトウィンドウズ(登録商標)のようなオペレーションシステムや、典型的にはオペレーションシステムに従い形成されたコンピュータシステムのオペレーションによって、相互接続バス134を介して通信を行うホストコンピュータ101のプロセッサユニット135からI/Oインターフェース143を利用することができる。図1Aに示したホストコンピュータ101を含んだシステムの例としては、IBM互換PCやSUN のSparcstation、あるいはそれらを含んだコンピュータシステムが考えられる。
【0021】
レイアウトアプリケーションプログラム121は典型的にはハードディスクドライブ140に常駐し、プロセッサユニット135により読み出され、実行される。プログラム121を記憶する記憶装置139とネットワーク107からフェッチされるデータはハードディスクドライブ140、またはこれに呼応してメモリユニット136が使用され、アプリケーションプログラム121がCD−ROMやフロッピーディスク上でエンコードされ、対応するCD−ROMドライブ142やFDD141を通じて読み込まれユーザに提供される。
【0022】
あるいはもう一つの方法としてアプリケーションプログラム121はネットワーク107からユーザによってインストールするようにしてもよい。さらにソフトウェアは磁気テープまたはROMまたは集積回路、光磁気ディスクまたは無線またはホストコンピュータ101とその他のデバイス間の赤外線通信、PCMCIAカードのようなコンピュータ可読カード、そしてEメール通信やWEBサイト上の記録情報を持つインターネットやイントラネットを含む、他の適当な大きさのコンピュータ可読媒体からホストコンピュータ101内にロードすることもできる。但し、これらのコンピュータ可読媒体は、単に関連するコンピュータ可読媒体の規範であり、媒体の種類がこれらに限定される趣旨ではなく、他のコンピュータ可読媒体も使用することも可能である。
【0023】
また、レイアウト編集と名づけられたアプリケーション121はバリアブルデータ印刷(VDP)を行うためのプログラムモジュールであり、2つのソフトウェアコンポーネントを含んでいる。これらのうち1つめのモジュールは、レイアウトエンジンモジュール105であり、これはデータが流し込まれる部分表示領域であるコンテナ(矩形の範囲)のサイズや位置の制限に従ってデータベース119に格納されているバリアブルデータから1レコードずつ読み込み、読み込んだデータとコンテナの制限とから、読み込んだデータが流し込まれるコンテナの大きさや位置等を計算するためのソフトウェアモジュールである。レイアウトエンジン105は各部分表示領域(コンテナ)のサイズと位置を決定するアプリケーションとして動作し、図示省略したプリンタドライバに描画情報を出力することで、プリンタドライバがバリアブルデータドキュメントのイメージ描画処理を行い、印刷データを生成する。
【0024】
2つめのモジュールであるユーザインターフェースモジュール103はユーザにドキュメントテンプレートを作成させ、ドキュメントテンプレート内でデータソースとコンテナとを関連付けるメカニズムを提供するモジュールである。ユーザインターフェースモジュール103とレイアウトエンジンモジュール105はコミュニケーションチャネル123を介して通信することが可能である。ドキュメント作成のためのデータソースはデータベースアプリケーションを動かしている他のコンピュータによって構成されたデータベースサーバ117上にあるデータベース119に格納されている。ホストコンピュータ101はネットワーク107との接続を介してデータベースサーバ117と通信することができる。バリアブルデータ印刷を実行する場合、レイアウト編集アプリケーション121はホストコンピュータ101か、若しくは他のコンピュータで構成されるファイルサーバ115に保存されるドキュメントテンプレートを生成する。またレイアウト編集アプリケーション121はデータとマージされたドキュメントテンプレートによって構成されたドキュメントを生成する。これらのドキュメントはホストコンピュータ101の記憶装置139に保存されるか、ファイルサーバ115に保存されるか、あるいはプリンタ113に直接印刷される。
【0025】
プリントサーバ109は直接ネットワークに接続していないプリンタ113にネットワーク機能を提供するコンピュータである。プリントサーバ109とプリンタ113は典型的な通信チャネル111を介して接続する。
【0026】
図2はレイアウトエンジンモジュール105をホストコンピュータ101の他にエンジンサーバ227にもレイアウトエンジン225を設けた構成を示す図である。エンジンサーバ227は典型的なコンピュータにより構成され、ファイルサーバ115に保存されたドキュメントテンプレートは印刷や他の目的がある際、レイアウトエンジン225によってドキュメントを生成するためにデータベース119に保存されたデータと結合することができる。そのようなオペレーションはユーザインターフェースモジュール103の制御の下、ユーザインターフェース(UI)画面を介して入力され、特定のレコードのみ印刷するように設定することができる。
【0027】
(アプリケーション構成図)
(メインウインドウ)
図3で示されるアプリケーションウインドウ301は、ユーザインターフェースモジュール103(図1)によって、操作時にディスプレイ装置144に表示される。アプリケーションウインドウ301は、非表示にすることや、スクリーン上の色々な場所に移動することが可能なメニューバー302とツールバー303、そしてマウス133の位置・動作によって場所を移動可能なワークエリア306とオプションのパレット311とカーソル/ポインタデバイス313を有しており、これらにより特徴付けされる。
【0028】
メニューバー302は、周知の技術として知られているように、メニューオプションの階層の下に拡張される多くのメニューアイテム304を有し、ツールバー303は、アプリケーションの特別なモードによって非表示にしたり、または表示することが可能な多くのツールボタン305を有する。オプションのルーラー308はワークエリア内のポインター、ページ、ライン、マージンガイド、コンテナまたはオブジェクトの位置を示すために使われる。パレット311はバリアブルデータライブラリのような追加機能にアクセスするために使われる。パレット311は移動、リサイズ、クローズをするためのウインドウコントロール機能を提供するボタン312を有する。パレット311の表示はオプションで、ワークエリアの前面に表示することもでき、あるいは背面に隠すこともできる。また、このパレット311に対する表示制御は、アプリケーションウインドウ301の範囲内のみに制限したり、あるいはアプリケーションウインドウ301の外側に部分的、あるいはその全体を表示するようにすることもできる。
【0029】
ツールバーエリア303には少なくとも、ユーザによる選択が可能な「ボタン」(403〜406)を備える(例えば、図4を参照)。以下、ボタン403〜406を説明する。
【0030】
選択ツールボタン403は、コンテナの辺を選択、移動、サイズ変更、そしてコンテナのロック(固定)、あるいはロック解除をするために使われる。コンテナは、複数のコンテナの周りをドラッグする、あるいは複数コンテナを選択する間にCTRLキーを押しつづけることによって、複数のコンテナの選択を可能にする。
【0031】
イメージコンテナツールボタン405は、スタティック或いはバリアブルイメージを持つコンテナを作成するために使われる。
【0032】
テキストコンテナツールボタン404は、スタティック或いはバリアブルテキストを持つコンテナを作成するために使われる。
【0033】
リンクツールボタン406は、コンテナ間に関連付けを行うリンクを作成するために使われ、リンクの距離をコントロールするためにも使われる。
【0034】
これらのボタンは、周知の技術であるように操作状況に合わせて変化するアイコンとして実装される。
【0035】
レイアウト編集アプリケーション121の図3に示したアプリケーションウインドウ301は、ページ内に各コンテナやリンクをレイアウトすることで、基本レイアウトを決定することができる。基本レイアウトとは、バリアブルデータプリントで基本となるレイアウトのことである。基本レイアウト内の各コンテナが固定コンテナである場合は、すべてのレコードの印刷結果のレイアウトは同じになる。また、基本レイアウト内の各コンテナが後述する可変コンテナである場合は、レコード単位に読み込まれるデータの量やサイズにより各コンテナのサイズや位置が、後述する制約の範囲内で変動することになる。よって、レイアウト編集アプリケーション121で作成されるドキュメントテンプレートは、あくまで基本レイアウトを決定するものであり、可変コンテナが含まれる場合は、最終的な印刷物のレイアウトは読み込まれるデータによりレイアウト調整されることになる。
【0036】
(ドキュメントテンプレート)
図3に示したワークエリア306はドキュメントテンプレートのデザインを表示・編集するために使用される。これはユーザに下準備で印刷されたドキュメントの概観をデザインすること、そしてマージされたドキュメントが、バリアブルデータの量やサイズに基づいてどのように変化するかを理解することを可能にするものである。外部のデータベースがテンプレートにリンクされている場合には、現在のドキュメントのプレビューができるように、バリアブルテキストとイメージをそれらのコンテナに表示することができる。ドキュメントの構造とバリアブルデータコンテナの表示は、カーソルをコンテナ上に移動させたときや、コンテナを選択したときにいつも表示するようにすることができる。
【0037】
ワークエリア306はスクロールバー307とオプションのルーラー308とドキュメントテンプレート309に特徴付けられる。ドキュメントテンプレート309はページが複数あることを示すことができる。与えられたドキュメントテンプレートのページサイズは、周知の技術としてユーザによって指定される。例えばメニューの「ファイル」から「ページ設定」を選択することでページサイズを設定するダイアログを表示し、そこでユーザが指定したページサイズが反映されることになる。それぞれのドキュメントにおける実際のページ数は、バリアブルデータによって変化する可能性があり、もし1ページ内にバリアブルデータを収めることができず、所定の用紙サイズのページに各コンテナを収めるような制約が基本レイアウトになかった場合には、追加のページは自動的に作成される。所定の用紙サイズのページに各コンテナを収めるように制約(後述するアンカーアイコン等により設定可能である)が基本レイアウトに設定されている場合は、ページ内で各コンテナがお互いに押したり押されたりしながら、各コンテナサイズと位置が決定され、必要に応じて流し込まれるバリアブルデータが縮小され、レコード毎に動的にレイアウトが決定される。
【0038】
図3において破線で示されるページ内の境界線は、ページ上の印刷可能なオブジェクトの最大幅を示すものであり、任意に設定することが可能なページマージン310である。また、図4は1ページのドキュメントテンプレート309上に表示することが可能なオブジェクトの例を示す図であり、図4では複数のコンテナ407及び408が示されており、コンテナの辺414の位置を固定するアンカーアイコン409と固定されていない辺410、リンク412そしてスライダー413によりコンテナ間の相互の関係が規定されている。アンカーアイコン409は、コンテナの矩形の角、辺、またはコンテナの中央に設定することが可能である。アンカーアイコン409が設定されると、設定された個所の位置が固定となる。つまり、図4の例では、アンカーアイコン409は、コンテナ407の左上の角に設定されているため、コンテナ407はバリアブルデータが流し込まれ、バリアブルデータの画像サイズもしくはテキスト量が多い場合に、右方向及び下方向に拡大可能であることを示している。アンカーアイコン409が辺に設定されている場合は、その辺が固定となり、その他の3辺の各方向に拡大可能である。また、アンカーアイコン409がコンテナの中央に設定されている場合は、コンテナの中央位置が固定となり、コンテナ矩形の中央位置が変わらないように、4方向に拡大可能である。リンク412は詳細は後述するが、コンテナ407とコンテナ408が関連付けられていることを示しており、このリンクに設定されている長さ(範囲指定が可能)を保ちつつ、コンテナ408が右方向に移動可能であることを示している。スライダー413は、設定されている辺と水平方向に移動可能であることを示している。
【0039】
(コンテナ)
ここで、コンテナについて説明する。コンテナは、ドキュメントテンプレート内にバリアブルデータファイルから固定あるいは可変のテキスト/イメージがレコード単位に流し込まれ、描画されるスペース(これを部分表示領域と呼ぶ)であり、図4に示されるように他のコンテナやオブジェクトと共にレイアウトされる。ユーザインターフェース画面を介して、ユーザからの操作指示により、コンテナはマウス133の操作により移動、サイズ調整、再作成される。
【0040】
コンテナは、アンカーアイコン409、リンク412、スライダー413によりコンテナの変形に関する拘束条件が規定されている。テキストやイメージデータの情報量に応じてその変形が許容されている方向にコンテナスペースの変形が制御されて、テキストデータやイメージデータがそのコンテナ内にレイアウトされる。2つのコンテナに関して相互に変形が必要となる場合、各コンテナに収納するべきテキストデータやイメージデータの量に応じて、相互のコンテナの変形がバランスするように(各コンテナにストレスの無い状態)に各コンテナの形状が制御される。
【0041】
コンテナはポインティングデバイスとしてのマウス133の動作によりワークエリア306内の位置が特定され(図3の313)、ユーザインターフェースとしての画面内(図3)で移動、サイズ調整が施され、新たなコンテナを追加することも可能である。コンテナは、アンカーアイコンや、リンクそしてスライダーによりコンテナ間の相互の関係等の変形に関する種々の条件が設定され、コンテンツを表示する視覚的表現、そしてコンテナ間のインタラクションとコンテナ内の情報の編集機能を有している。ここで、コンテナを定義すると以下のようになる。
【0042】
(1)コンテナは固定あるいは可変のコンテンツが入力され、可変コンテンツは、データソースからデータをとってきて、異なるドキュメントでは異なるデータに応じてコンテナサイズを可変するという意味でダイナミック(動的)である。可変コンテンツはアニメーション化されたもの、あるいは他の方法で時間を変更するコンテンツを含むことは印刷に適合していないため意図していない。同様に、固定コンテンツはコンテナを使って生成される全てのドキュメントで、同じように表示される。けれども、可変コンテンツとリンクが設定されている場合、可変コンテナの動作によって、固定コンテンツはそれぞれのドキュメントで表示位置が異なるように表示制御される。
【0043】
(2)コンテナは、コンテンツに適用される背景色、ボーダー、フォント・スタイルのようなテキスト設定のような装飾機能を持っている。このような設定をコンテナ属性と呼ぶ。コンテナ属性は、各コンテナごとに設定可能であるが、あるコンテナと同じコンテナ属性であるという設定を行うことも可能である。
【0044】
(3)コンテナはドキュメントを生成したときにデータソースからのデータとマージされる。装飾機能は、どんな固定コンテンツでもそうであるように、典型的に印刷された出力物に対して反映され、装飾が反映された結果は可視化される。可変コンテンツはデータソースから特定のデータの表示をもたらす。すなわち、その特定のデータに対して、コンテナに設定されている条件に従い、コンテナのサイズが可変に設定される。可変に設定されたコンテナのレイアウト、およびコンテナ内の特定のデータ表現は、例えば、プリンタ113を介して印刷されるか、ディスプレイ装置144上で表示されるか、その両方により処理することが可能である。
【0045】
(4)コンテナの設定に関し、システムはユーザインターフェースモジュール103を備え、例えば、コンテナの編集そして表示設定のためのインタラクティブなグラフィカルユーザインターフェース(GUI)を有する。そして、ユーザインターフェースの要素はディスプレイ装置144上に表示される。しかしドキュメントは印刷されない。ユーザインターフェースモジュール103は、背景色やフォントのようなコンテナに関する装飾機能のいくつかをインターフェース画面上に表示させ、これらの装飾機能をコンテナの設定、編集、コンテナ表示に追加することができる。
【0046】
(5)更に、ユーザインターフェースモジュール103による設定の例としては、コンテナ間のボーダー、あるいは、コンテナのサイズや位置を対話的に変更、表示するためにコンテナに設定さするコーナー部のアイコンや、あるいはデータソースからデータをマージしたとき、コンテナの動作(例えば、上塗りした数、線、アイコンの設定、テキストの編集)を設定する。
(コンテナに対する制約)
コンテナはそれぞれのドキュメントにおけるコンテンツの内容を表示するために、コンテナをコンテンツと結びつけて表示制御、レイアウト制御するための制約がある。これらの制約(固定・可変コンテンツをコンテナと結びつけること)は、ユーザが一つのドキュメントテンプレートから多数のドキュメントをコントロールする主要な方法である。制約の例は、たとえば、コンテナのコンテンツの高さは、最大値4インチとするような制約が挙げられる。もうひとつの制約としては、コンテナのコンテンツの左エッジは、それぞれのドキュメントで同じ水平位置で表示しなければならないとするような制約である。ここに記述される内容は、GUIを使ってこのような制約を表示、編集のために設定することが可能である。
【0047】
イメージがページ上に定義された位置を持っているように、コンテンツの配置もその位置が特定される。コンテナは位置とサイズを持ち、それらはバリアブルデータ印刷において、コンテナ内に挿入されるコンテンツの内容に応じてコンテナのレイアウトが設定された条件の下、コンテンツの内容を表示・編集することを可能にする。コンテナは、ユーザにドキュメントのコンテンツのサイズ・位置を指定することを可能にする。いくつかのドキュメントは一つのドキュメントテンプレートから生成されるので、コンテナはユーザインターフェースモジュール103により与えられるコンテナに対する制約を指定することができる。
【0048】
1つのコンテナを構成する辺は、関連付けられたコンテンツがドキュメント内で表示される仮想の境界線を定義する。たとえば、矩形のコンテナの左辺は、関連付けられたコンテンツが配置される左側の位置を与え、同様に、コンテナの高さは生成されたドキュメントに関連付けられたコンテンツの高さの制約を与える。
【0049】
以下の記載において、コンテンツの表示を制限するために使われるある値を定義している用語『固定』は、全てのドキュメントで同じである。
【0050】
(1)コンテナの幅が固定なら、関連付けられたコンテンツに割り当てられる幅は、全てのドキュメントで同じになる。
【0051】
(2)コンテナの高さが固定なら、関連付けられたコンテンツに割り当てられる高さは、全てのドキュメントで同じになる。
【0052】
(3)距離の制約が固定なら、指定された距離は全てのドキュメントの制約となる。
【0053】
(4)コンテナの左右辺が固定の場合、コンテナの高さあるいは垂直方向の位置は、コンテンツを完全にコンテナ内に収容するために、コンテナサイズは変形が許容されている高さ方向あるいは垂直方向に変えることが可能である。
【0054】
(5)コンテナの上下辺が固定の場合、コンテナの幅あるいは水平位置は、コンテンツを完全にコンテナ内に収容するために、コンテナサイズは変形が許容されている幅方向あるいは水平方向に変えることが可能である。
【0055】
(6)コンテナの垂直軸はコンテナの右と左辺の平行で、そして中間に位置される想像上の垂直線である。もしコンテナの垂直軸が固定なら、コンテナの左右辺の水平位置の平均は、すべてのドキュメントで同じである。この制約で、コンテナの幅は変化するかもしれない、左右辺両方が異なったドキュメントで、垂直軸にもっとも遠いかもっとも近いかもしれない、しかし軸は全てのドキュメントで同じ水平位置にある。コンテナの高さと水平位置はこの制約によって影響されない。
【0056】
(7)同様に、もし水平軸が固定なら、コンテナの上そして下辺が垂直に位置されることを制約する、けれども高さは、この制約によって影響されない。
【0057】
(8)水平、垂直軸両方が固定なら、コンテナの中心位置が固定されていることを意味する、しかし、幅・高さはこの制約によって影響されない。
【0058】
(9)コンテナの角、コンテナの辺の中間位置、あるいはコンテナの中心位置が固定なら、すべてのドキュメントで同じ場所で、そしてコンテナに関連付けられた同じ場所で表示される。例えば、もしコンテナの左上角が固定なら、配置されたコンテナの左上位置が全てのドキュメントで同じになることを意味している。
【0059】
(10)垂直辺あるいは垂直軸は、ページの左辺もしくは右辺、あるいは左ページマージンもしくは右ページマージン、あるいは他の水平位置に関連付けされて固定することができる。同様に、水平辺あるいは水平軸はページの上辺もしくは下辺、あるいは上下ページマージン、あるいは他の垂直位置に関連付けされて固定することができる。
【0060】
「固定」の反対は、コンテナの辺、軸、角、中間位置、あるいはドキュメント制約がドキュメント間(レコード間)で変化するかもしれないことを意味する「可変」である。例えば、ページ内では、バリアブルデータのサイズや量により、動的にレイアウトが変更されることを期待するが、特定のコンテナについては、大きさや位置を固定にしたり、また、ページの角のコンテナの四隅は固定にしたいということを所望する場合がある。そのため、本レイアウト編集アプリケーション121では、各コンテナ(部分表示領域)について、辺、軸、角、中間位置等を固定にするか、可変にするかを適宜設定できるようにした。これにより、ユーザはドキュメントテンプレート180の基本レイアウトを決定する場合に、ユーザが所望とするように基本レイアウトを作成することができる。
【0061】
(コンテナ表示・編集)
(新規コンテナの作成方法)
コンテナは、テキストコンテナとイメージコンテナの2種類ある。テキストコンテナはテキスト、そして埋め込みのイメージを持つ。イメージコンテナは、イメージだけを持つ。図4で参照されるように、新規テキストコンテナとイメージコンテナは、テキストコンテナツールボタン404、あるいはイメージコンテナツールボタン405をマウス133でクリックし、テンプレート309に四角形をドラッグすることによって、ドキュメントテンプレート309上に作成される。コンテナは、適切なツール404、405をアクティブにした後に、ドキュメントテンプレート309上でマウス133をクリックすることによって作成される。デフォルトサイズのコンテナが挿入されるか、新規コンテナの寸法を入れるために、ダイアログボックスあるいは他のプロンプトが提供される。コンテナは自動的に前もって定義され、計算されたスキーマによって作成され、ドキュメントテンプレート309上に配置される。ここで生成されたコンテナをマウス等の入力手段により選択し、右クリックでプロパティを指示する等の操作を行うことにより、コンテナのプロパティダイアログが表示され、コンテナの制約を設定することができる。コンテナのプロパティダイアログUI(部分表示領域設定手段に相当する)では、上述した各種の制約を設定することができる。また、コンテナのプロパティダイアログでは、コンテナのサイズ(幅、高さ)や位置を決定することができ、可変サイズにする場合は、コンテナの基本パターン(基本サイズと基準位置)を設定し、更に、最大コンテナサイズ(幅、高さ)と最小コンテナサイズ(幅、高さ)を設定することが可能となっている。
【0062】
(コンテナの表示方法)
図5A〜5Dはコンテナを構成する辺に対するルールを例示的に説明する図である。レイアウト編集アプリケーション121は、辺の状態を表現するために、塗りつぶし線(503)あるいは点線(504)で辺を描き、アンカー(辺の近くに描画された506、507、509によって示されるような線、形状、アイコン)、ハンドル(移動、修正するために辺、形の近くに描画されたコントロール点、502)、スライダー(辺の両サイドに描画された短い並行線、図4の413)、拡縮アイコン(505)、そして色を特徴として持っている。
【0063】
図5A〜5Dに示すコンテナの表示方法のルールは、つぎの通りである。
【0064】
1. それぞれの辺を固定するために、塗りつぶし線で描画する。
【0065】
2. もし幅が固定なら、左と右の辺を塗りつぶし線で描画する。
【0066】
3. もし高さが固定なら、上と下の辺を塗りつぶし線で描画する。
【0067】
4. 軸は描画しない。
【0068】
5. まだ描画されていない全ての辺は、それぞれの辺の近くに拡縮アイコンが描画され、点線になる。
【0069】
6. 垂直辺あるいは軸のそれぞれのペアで、もし両者が固定なら、交差点にアンカーが描画される。
【0070】
7. それぞれの固定辺で、もし辺のどこにもアンカーが描画されていなければ、エッジの中央にスライダーが描画される。
【0071】
8. 垂直辺あるいは軸のそれぞれのペアで、もしアンカーやスライダーが描画されていなければ、交差点にハンドルが描画される。
【0072】
上述のルール1、2、3で定義された線は、前述したように固定あるいは制限されているため、実線で描画される。ルール5のように可変の辺は、点線で描画される。ルール6、7、8で定義された固定された点は、アンカーを表示し、いくつかの固定された辺はスライダーを表示し、他はハンドルを表示する。
【0073】
上記のルールは、ユーザにより後で設定された制約が優先される。つまり、後で別の制約が設定された場合、上記のルールが描画されるべき辺に影響すれば、実線や点線の描画内容が変更されることになる。
【0074】
可変の辺が描画される場所は、コンテナのコンテンツに依存する。後で記述されるように、ドキュメントテンプレートにコンテンツがマージされて、ユーザインターフェースで可視になることを意味する、『動的な校正処理』が使われる。代わりの実行手段としては、すべてのドキュメントで平均化されるコンテナのコンテンツエリア、あるいは可変の辺がユーザインターフェースで、どこにレイアウトされるべきか決定するほかの手段で使われることができる。レイアウト編集アプリケーション121は以上のルールに従って、コンテナの表示制御、レイアウト制御を実行することができる。
【0075】
コンテンツの表現は、コンテナの辺に設定されたアンカーアイコン、スライダーアイコン等の設定に従い、サイズを可変にすることが可能なコンテナに挿入されることにより可視化される。コンテナに設定される具体的なアイコン及びコンテナを構成する辺は、以下に説明するように機能する。
【0076】
図4の辺410のように、点線はコンテナに挿入されるコンテンツに依存して、ドキュメント内の辺の位置が移動可能であることを意味する。そして、実線414は位置が制限された辺を意味する。
【0077】
アンカーは辺または軸が交差した場所が固定されていることを意味する。図4のアイコン409は、交差する辺414が固定されていることを示すアンカーアイコンの例である。
【0078】
スライダーは関係付けられた辺が、その辺の垂直方向に固定されているが、並行移動する可能性があることを意味する。幅・高さのサイズは、レイアウト編集アプリケーション121の制御の下、副次的なダイアログウインドウに表示され、コンテナサイズとして許容される基本値・最小値・最大値の基本パターンを設定することが可能である。
【0079】
図5Aにおいて、コンテナ501を構成する実線で示される辺503は固定であり、点線で示される辺504は幅・高さ両方が可変である。拡縮アイコン505は、隣接する辺504が可変であることを示す。また、図5Bにおいて、コンテナ501を構成する実線で示される辺503は固定であり、同図において、アンカーアイコン506は、辺503が交差する高さ方向および幅方向に変位が拘束されることを示す。
【0080】
図5Cでは、コンテナ501は、コンテナの拡大あるいは縮小が任意のアンカーアイコン507で示されるような中心点の周りに幅方向及び高さ方向に均等に広がるという状態に設定されており、幅・高さ両方が各辺において可変である。また、図5Dにおいて、コンテナ501は、上辺508に対してスライダ−アイコン509が設定されており、固定されているが、点線で示される辺502は幅及び高さの両方が可変である。この場合、アンカーアイコン509を通る中心軸(垂直軸)を基準として、辺502の左右方向、及び上下方向に変位をすることが可能であり、これによりコンテナのサイズを変えることが可能である。ここでの拡大/縮小は、アンカーアイコン507の位置が常にコンテナ501の中心点となるようにレイアウト調整される。
【0081】
(リンクの設定方法)
図6はレイアウト編集アプリケーション121によるリンクの設定方法を示すフローチャートであり、図7はユーザインターフェースの画面表示例を示す図である。以下、図6、図7を用いてコンテナにリンクを設定する操作方法について説明をする。まず、リンクをコンテナに設定するためには、リンク設定の対象となるコンテナ(最低2つ)を作成する(S601)。図7(A)は、2つのコンテナ701、702が作成された状態を示している。
【0082】
次に、前述したリンクツールボタン(図4を参照)を選択した状態にする(S602)。ここで、図7(A)のコンテナ701と702は、前述した図4のコンテナ407と408と同じ内容のものを示しており、固定されている辺(実線で示される)によりコンテナが構成されることを示している。また、アイコン703と704は、図4におけるアイコン409と同じアンカーアイコンであることを示し、705はマウスポインタを意味している。
【0083】
ステップS602において、リンクツールボタン406の選択が完了すると、次に、コンテナを選択する(S603)。この選択は、リンクを設定する対象となるコンテナの片方(たとえば、701)をマウス133によりクリックすることでコンテナは選択される。次に、リンクを設定する他方のコンテナ(たとえば、702)をマウス133によりクリックすることで、リンクを設定する他方のコンテナの選択が完了する(S604)。
【0084】
図7(B)の706はステップS603でマウス133をクリックした位置(P1)とステップS604でマウスをクリックした位置(P2)とを結ぶ、マウスポインタ133の概略的な軌跡を示す線分であり(図6のS605)、この線分が交わるコンテナの辺711及び辺712の間にリンク707が設定され、最終的にリンク707がコンテナ間に設定された状態のインターフェース画面が更新される(S606)。リンク707が設定されたことにより、コンテナを表示するための画面表示も自動的に切り替えられる。切り替えられた画面(図7(C))において、辺708は点線で示されている辺であり、前述した通り可変の辺を示している。固定の辺(リンク設定前の711、712が対応)から可変の辺に708が切り替えられたのは、リンク707を設定したことにより、コンテナ701、702の辺を可変にする必要があるためであり、リンク707を設定したにもかかわらず、全ての辺が固定とすると、コンテナ間の相対的な関係をリンクにより特定するという矛盾を防ぐためであり、レイアウト編集アプリケーション121の制御の下、自動的に行われる処理である。
【0085】
また、709は図5の505と同様に機能し、リンク707を設定したことにより、コンテナ701、702が変位できる方向をユーザに視覚的に示す識別用の表示である。図7(C)の例では、左のコンテナ701の右辺と右のコンテナ702の左辺が可変に変化したが、これは一例であり、左のコンテナ701、右のコンテナ702が、図4の413で示したスライダーを持つ設定により辺708が可変であることを表示するようにすることもできる。以上の処理はレイアウト編集アプリケーションの制御のもとに実行することができる。
【0086】
(可変長のリンク)
図46のインターフェース画面において、一般的な可変リンク4609が示されている。同図においては、図4と同様にアプリケーションウィンドウ301とツールバー303があり、ドキュメントテンプレート309上にコンテナ4603とコンテナ4604が存在する。それぞれのコンテナは典型的にアンカーアイコン4601、アンカーアイコン4602と固定された辺4605、辺4606から成り立つ。各コンテナ4603と4604の間には可変サイズのリンク4609があり、それぞれのコンテナを結んでいる。コンテナ4603とコンテナ4604の間にはリンクが設定されているのでそれぞれの右辺4607と左辺4608は点線で表現されている。このため各コンテナにインジケーター4610、インジケーター4611が表示され、これは辺4607と辺4608が可変であることを示している。
【0087】
また、図48はリンク4609の情報がセットされているダイアログウィンドウ4801の例を示す図である。このダイアログは典型的にタイトルバー4802、ツールボタン4803、ダイアログウィンドウの開閉を行うボタン4804、各種の情報をセットするエリア4809で構成されている。このダイアログウィンドウではリンクタイプが可変長(4807)のリンクであるか、あるいは固定長(4806)のリンクであるかの択一的な選択が行える。可変長の場合、リンクの長さの最大値(4812)そして最小値(4810)、また基準値(4811)が設定できる。ここで各コンテナ間の距離の基準値4811は、データを流し込んだ際に各コンテナのサイズが変更されない場合に用いられるリンクの長さである。
【0088】
図47は自動レイアウトシステムにおける可変リンクを設定するフローチャートである。マウス133によりリンク4609をクリックし、選択する(S4702)。レイアウト編集アプリケーション121は、マウスの右クリックあるいはキーボードの特定のキーにより選択されたリンク4609のプロパティダイアログウィンドウ4801を表示する(S4703)。この状態ではリンクサイズは可変ではなく固定であるため、固定4806がリンクタイプ4805において選択されている。リンクを固定サイズから可変サイズに変更するために、リンクタイプ4805においてリンクサイズを可変に設定する可変4807を選択する(S4704)。これによりリンク間隔4808内に配置されている最大値4812、最小値4810、基準値4811が有効化され、数値の設定が可能となる。ここで、リンクの可変サイズを設定するために、そのリンクの長さの最大値を4812、最小値を4810、基準値を4811において設定する(S4705)。一般的なダイアログウィンドウ開閉ボタン4804によって設定を適用すると図46のリンク4609のような状態にリンクのUI表示が変化する。(S4706)このダイアログウィンドウ4801の設定情報はメモリに格納される。
【0089】
図49は固定サイズのリンクを使用した場合のレイアウト結果を示す図である。レイアウト編集アプリケーション121のレイアウトエンジンモジュール105におけるレイアウト計算方法は前述したとおりに従って行われる。例えば図46においてコンテナ4603とコンテナ4604にそれぞれ違ったサイズのデータが挿入された時、それぞれのコンテナはデータの大きさを最適と考え、コンテナ4603は挿入されたイメージサイズになる枠4904(最適コンテナサイズ)に近づこうと右方向へ大きく、同様にコンテナ4604も挿入されたイメージサイズになる枠4905(最適コンテナサイズ)に近づこうと左方向へやや大きくサイズを変更しようとする。
【0090】
しかしコンテナ4603とコンテナ4604の間には固定サイズのリンク4903が設定されているとすると、コンテナ4603とコンテナ4604はそれぞれアンカー4601とアンカー4602によってそれぞれ左辺4612と右辺4613は移動出来ないため、変更しようとするサイズがリンクサイズを上回ってしまう。そしてこのリンクサイズは固定されているためレイアウト計算時に優先的に計算されるためコンテナ4603(図46)とコンテナ4604(図46)のサイズが変更されることになる。その結果、コンテナ4603とコンテナ4604はデータに合わせた最適なサイズを確保することが出来ず、最終的に図49のコンテナ4901とコンテナ4902のように最適なサイズに比べて枠4904、枠4905分小さくなってしまう。つまり、リンク4903のサイズは固定であるためコンテナ4901とコンテナ4902は最適サイズを達成していない。
【0091】
図50はリンクを可変サイズにした場合を示している。この場合、上記の例でコンテナ4603とコンテナ4604の間には可変サイズのリンク4609(図46)が設定されているとすると、コンテナ4603とコンテナ4604のサイズが変更される際に、リンクサイズが縮まることでコンテナ4603とコンテナ4604のサイズが上記の例より大きくなることができ、挿入されるデータサイズに合わせた最適なサイズを達成し、あるいはより挿入データサイズ(最適サイズ)に近づけてコンテナの枠を計算することが出来る。その結果が、図50のコンテナ5001とコンテナ5002である。可変リンク4609はレイアウト計算の結果、可変リンク5003のサイズとなり、この場合コンテナ5001とコンテナ5002は変形が連動して、それぞれ最適なサイズ(データサイズに合った大きさ)になっている。以上の処理は、プロセッサユニット135、レイアウト編集アプリケーションの制御のもとに実行することができる。
【0092】
(レイアウト計算方法(全体フロー))
本実施形態のレイアウト編集アプリケーションは、ユーザインターフェース103を用いてコンテナを作成し、そのコンテナ間に関連付け(リンク設定)を行ってレイアウトを作成するレイアウトモードと、レイアウトエンジン105により、作成したレイアウトにデータソースの各レコードを挿入して、実際にレコードが挿入された後のレイアウト結果をプレビューするプレビューモードに分けられる。このプレビューモードにおいて、実際のレコードが挿入され、前述した優先順位に従ってレイアウトを計算する。ただし、プレビューモードは、表示上でのレイアウト計算である。実際に印刷する場合においても、レイアウトエンジン105が各コンテナにデータを挿入してレイアウトを計算するが、その際の計算方法はプレビューモードと同じである。図8はレイアウト計算のフローを示している。
【0093】
まず、プレビューモードを選択する(S801)。自動レイアウトシステムでは、コンテナを作成して、そのコンテナ間に関連付けを行い、レイアウトを作成するレイアウトモードと、作成したレイアウトに表示するデータレコード(以下、「レコード」)を挿入して、実際にレコードが挿入された後のレイアウト結果をプレビューするプレビューモードに分けられる。このプレビューモードにおいて、実際のレコードが挿入され、レイアウトを計算する。ただし、プレビューモードは、表示上でのレイアウト計算である。実際に印刷する場合においても、レコードを挿入してレイアウトを計算する。その際の計算方法も同じである。プレビューモードになったら、プレビューするレコードを選択して挿入する(S802)。レコードの挿入を行うと、そのレコードをレイアウトするためにレイアウト計算を行う(S803)。そして、処理ステップS803で計算されたレイアウトを表示し(S804)、他のレコードについてもプレビューを行うかどうかを判断する(S805)。処理ステップS805で、他のレコードについてプレビューを行う必要がないと判断した場合は(S805-No)、処理をステップS807に進め、プレビューモードを終了する。一方、ステップS805の判断で、他のレコードについてプレビューを行うのであれば、他のレコードを選択して再度レイアウト計算を行い(S803)、プレビューを行う(S804)。プレビューモードでなく印刷時においては、印刷するレコード全てについて順にレイアウトの計算を行う。したがって、処理S804は印刷時の処理においては必要がないステップである。ステップS805は印刷するレコードを全て処理したかの判断を行う。ステップS803でレイアウト計算された結果を、描画出力して出力し、プリンタドライバを用いて印刷データとして生成し、プリンタに印刷データが出力される。この場合、全てのレコード(印刷すべく指定された全レコード)について印刷データの出力が終了した時点で本処理を終了することになる。以上の処理は、プロセッサユニット135の制御のもとに実行することができる。
【0094】
(レイアウト計算方法)
図9はレイアウト計算の詳細な処理の流れを説明するフローチャートであり、図10はそのときのユーザインターフェース画面の表示例を示した図である。本図はレイアウト計算の処理方法についてのみ説明するためのフローチャートであるため、バリアブルデータプリントの1レコードの印刷/プレビュー時のレイアウト計算方法に相当する。複数レコードの場合は、下記の処理が繰り返されることになる。
【0095】
まず、レイアウト編集アプリケーション121は、レイアウトを計算するコンテナの集合を求める(S901)。レイアウト計算は、関連付けられたコンテナを一つの集合として計算を行う。例えば、図11を参照すると、ページ上に4つのコンテナA,B、C、Dがレイアウトされており、各コンテナに関連付けが設定されている。この場合、コンテナAとコンテナB、そしてコンテナCとコンテナDがリンクによって関連付けされている。したがって、コンテナA・Bが集合1、コンテナC・Dが集合2となる。そして、1101はアンカー、1102は固定された辺、1103はコントロール点、1104は可変の辺の変化方向を示している矢印、1105は可変の辺、1106はリンク、そして1107はスライダーを示している。
【0096】
次に、レイアウト編集アプリケーション121は、ステップS901で求めたコンテナの集合から、レイアウトを計算するために一つの集合を選択する(S902)。そして、選択したコンテナの集合について、レイアウトの計算を行う。まず、選択したコンテナの集合に含まれる可変要素である2つのコンテナ(A,B)について、流し込まれるデータの画像サイズもしくはテキスト量から各コンテナがなにも制約を受けない場合の大きさを計算する。具体的には、レイアウト編集アプリケーション121は、コンテナAが画像データ用コンテナであるか、テキスト用コンテナであるかを判断する。この判断は、前述したように、コンテナに対して設定されている属性により判断できる。次に、レイアウト編集アプリケーション121は、コンテナAに流し込まれるデータを読み込み、コンテナAが画像データ用コンテナである場合は、その画像データのサイズ(幅、高さのピクセル数、および解像度)がコンテナAの制約を受けない場合の大きさになる。また、コンテナAがテキスト用コンテナである場合は、そのテキストデータも文字数と、コンテナAのコンテナ属性で指定されているフォントタイプ、フォントサイズ、文字ピッチ、行ピッチなどの文字属性に基づいて、コンテナAに流し込まれるべきデータ量が計算できる。ここで、テキスト用コンテナの場合は、コンテナAの縦横比が制約を考えないと決定できないため、制約を当てはめる。図11の例では、コンテナAは、左上および左下の角にアンカーが設定されているため、高さ(縦方向)が固定となる。よって、レイアウト編集アプリケーション121は、コンテナAの基本パターンとして設定されている幅(横方向)のコンテナAに、計算したデータ量(テキスト量)の文字を流し込めるか否かを判断する。すべて流し込めると判断された場合は、コンテナAは、基本パターンで設定されているサイズ(幅、高さ)に変更はない。また、すべて流し込めないと判断された場合は、コンテナAは、アンカー設定により高さが固定であるため、横方向に伸びることになる。ここで、レイアウト編集アプリケーション121は、コンテナAの幅がどれだけになると、計算したデータ量の文字を流し込めるかを計算し、コンテナAのサイズを算出する。
【0097】
次に、レイアウト編集アプリケーション121は、レイアウトされるコンテナのサイズが、実際のコンテンツのサイズとできる限り差が少なくなるように、レイアウトの最適化を行う(S903)。レイアウトの最適化は、動的にサイズを変化することが可能なように関連付けられたコンテナにおいて、それぞれに挿入されるコンテンツのサイズとレイアウトされるサイズとの差が、できる限り同じになるように行われる。レイアウト編集アプリケーション121は、ステップS902で算出したコンテナの集合のサイズ、つまりコンテナAとコンテナBとリンク1506(ここでは固定リンク)の合計サイズを求め、この合計サイズと、基本レイアウトにおける当該コンテナの集合のサイズ(図11の例ではコンテナAとコンテナBのそれぞれのアンカーアイコンの距離に相当する)との差を求める。コンテナAやコンテナBの幅が大きくなると前ステップで計算されている場合は、差分値が発生する。レイアウト編集アプリケーション121は、この差分値をコンテナの集合の各要素に均等に分配することでレイアウト調整を行う。
【0098】
レイアウト編集アプリケーション121は、レイアウトの最適化を行い、最適化の計算において、ルール(コンテナに課せられる制限)に違反する場合は、再度ルールを違反しないようにコンテナサイズの計算をする(S904)。ここで記述したルールとは、レイアウト作成時にユーザによって設定される制限であり、コンテナのサイズと位置、可変リンクの場合はリンクの長さなどである。ルールを違反しないようにレイアウトが計算されたら、ステップS902で選択した集合のレイアウトは完成する。そして、ステップS902〜S904のステップをページ上のすべてのコンテナの集合について施し、ページ全体のレイアウトを計算し(S905)、レイアウト計算の処理を終了する。
【0099】
図10はレイアウト計算時に示されるユーザインターフェース画面を例示する図である。図10の(A)は、あるレコードが挿入されレイアウトが決定されている状態を表している。1001と1002はアンカー、1003と1004は固定された辺、1005は可変の辺、1006は可変の辺の変化方向を示している矢印、1008はリンクをそれぞれ示している。この状態において、レコードを変更し、異なったサイズのコンテンツを挿入すると、図10の(B)の状態になる。図10の(A)の状態から可変の辺がどのように変位したかを2点鎖線で示している。そして、ルールを加味したレイアウト計算が行われる。図10の(C)はレイアウト計算された結果を示している。計算後の各コンテナ1012、1013のサイズは、実際挿入されるコンテンツのサイズと同等に差異があるように(変形が連動するように)計算され、且つ、前述したルールに違反しないように計算される。図10の(C)で示されるように、図10の(B)で示した挿入するコンテンツサイズ(a1b1c1d1,e1f1g1h1)と計算後のコンテンツサイズ(a2b2c2d2,e2f2g2h2)は、左右双方のコンテナにおいて同等な差異をもってコンテナサイズが計算される。以上の処理は、プロセッサユニット135、レイアウトエンジンモジュール105の制御のもとに実行することができる。
【0100】
(コンテナの優先順位)
(設定方法)
図56は、優先順位の設定処理の流れを説明するフローチャートであり、図57〜図60のユーザインターフェース画面の例とともに各ステップの処理を説明する。
【0101】
まず、レイアウト編集アプリケーション121は、図60に示すように、ユーザに対して優先順位を設定するコンテナを選択するためのポップアップメニュー6002を表示させ、優先順位設定が選択されると、優先順位設定画面を表示する(S5601)。図60において、6001はコンテナである、6002はポップアップメニュー、6003はマウスポインターを示している。このとき、図60では、優先順位の設定はポップアップメニューで選択されているが、コンテナのプロパティダイアログなどで選択するようにしてもよい。
【0102】
次に、レイアウト編集アプリケーション121は、ステップS5601で選択したコンテナと関連付けされているコンテナを一つの集合として認識して(S5602)、優先順位を設定していく(S5603)。本自動レイアウトシステムは、関連付けされたコンテナ同士が、相互にコンテンツのサイズに合わせてレイアウトを計算して、最適化が行われる(レイアウト計算方法を参照)。優先順位は、関連し合うコンテナについて、計算する順番を指定していくものであり、関連付けされているコンテナを一つの集合として認識して、優先順位を設定していく。例えば、図57ではテキストコンテナA,D,FとイメージコンテナB,C,Eがレイアウトされている。リンク(5701)によって、コンテナが関連付けられており、コンテナA,B,C,DとE,Fの2つの集合になっている。ここで、マウスポインタ(5702)でコンテナAを選択して優先順位の設定を行うと、コンテナA,B,C,Dについて優先順位を設定することになる。
【0103】
次に、レイアウト編集アプリケーション121は、ステップS5601で表示された優先順位設定画面(図58を参照)で、ユーザが設定した優先順位をコンテナに設定していく(S5604)。図58は優先順位を設定するダイアログユーザインターフェース(UI)画面の例を示す図である。同図において、5801はダイアログ、5802は優先順位を示しているUI,5803は優先順位を設定するコンテナが表示されるリストボックスである。ここには、ステップS5602で一つの集合と認識されたコンテナがすべて表示される。5804は優先順位を変更する矢印ボタン。5805は設定をキャンセルするキャンセルボタン、5806は設定を反映させるOKボタンである。5802のUIで示されるように、リストボックス(5803)で上に表示されているコンテナは優先順位が高く、下に行くにつれて優先順位が低くなる。計算されるレイアウト計算が行われる順番は上から順番になる。図58では、テキストコンテナA、イメージコンテナB、イメージコンテナC、テキストコンテナDの順に計算される。
【0104】
図59は、コンテナに設定する優先順位を変更する手順を説明する図である。例えば、図59(A)の5901で示しているように、マウスポインターなどで優先順位を変更したいコンテナ名を選択し、優先順位を上げるのであれば、5902の上矢印ボタン、下げるのであれば、下矢印ボタンを押下する。ここでは、テキストコンテナDを選択して、優先順位を上げる操作を行ったものとする。すると、図59の(B)で示すように、テキストコンテナDの優先順位が一つ上がり、イメージコンテナCの優先順位が一つ下がる。優先順位の設定方法は、この方法に限らず、ここではコンテナA,B,C,Dと4つのコンテナについて優先順位を設定するので、各コンテナについて優先順位1番、2番と番号で指定する方法でもよい。以上の処理は、プロセッサユニット135の制御のもとに実行することができる。
【0105】
(表示方法)
図61、図62、図63はそれぞれ設定したコンテナに設定した優先順位を視覚的にユーザに示すユーザインターフェース(UI)画面を例示する図である。図61、62はコンテナのレイアウト表示と優先順位の設定を別ウインドウで表示するUI画面を示している。図61、図62において、6101は自動レイアウトアプリケーションウインドウを示している。このウインドウを構成するページエリア、ツールバーなどは図3と同じであり、その他はここでは省略してある。6102はマウスポインタ、6103、6104は優先順位が設定されているコンテナの集合である。そして、6105は優先順位を表示するプロパティパレットであり、6106はコンテナ名が表示されているリストボックスである。図62においても同様に、6201はマウスポインタ、6202はリストボックスを示している。6105と6106および6202によって、コンテナの優先順位をユーザに視覚的に表示することができる。6106・6202には、優先順位の高い順に上からコンテナ名が表示される。図61で示しているように、マウスポインタ(6102)をコンテナの集合(6103)上に置くと、その集合内のコンテナ(コンテナA,B,C,D、E)が、優先順位の高い順位表示される。ここでは、コンテナB,A,E,C,Dの順で優先順位が高いことを示している。図62で示すように、マウスポインタ6201を別のコンテナの集合へ移動させると、リストボックス6202の表示が更新され、コンテナF,G,Hが優先順位の高い順に表示される、ここではコンテナF,H,Gの順に優先順位が高い状態に設定されている。
【0106】
図63は、図61、図62の表示方法とは別の形式によるUI画面を例示する図であり、同図において、6301はページ領域を示しているページマージン、6302はマウスポインタ、6303はコンテナの優先順位を数字により示す表示部、6304は優先順位が設定してあるコンテナの集合である。図63で示しているUI画面は、マウスポインタ6302をコンテナ上に移動させると、そのコンテナと関連付けられている各コンテナに設定されている優先順位が数字6303で表示される。ここでは、マウスポインタをコンテナB上に移動させている、するとコンテナBと関連付けられているコンテナA,C,D,Eに設定されている優先順位が各コンテナ上に表示される、数字が小さいほうが優先順位が高く、(1)が一番優先順位が高く、(5)が最も優先順位が低いコンテナを示す。従って、図63ではコンテナB,A,E,D,Cの順に優先順位が設定されている。以上の処理は、プロセッサユニット135、レイアウト編集アプリケーションの制御のもとに実行することができる。
【0107】
(レイアウト計算方法)
次に、優先順位が設定されたコンテナが含まれる場合のレイアウトの計算処理を図64のレイアウト計算のフローチャートを参照しつつ説明する。
【0108】
まず、ステップS6401において、プレビューモードを選択する。自動レイアウトシステムでは、コンテナを作成して、そのコンテナ間に関連付けを行ってレイアウト作成するレイアウトモードと、作成したレイアウトにレコードを挿入して、実際にレコードが挿入された後のレイアウト結果をプレビューするプレビューモードに分けられる。
【0109】
このプレビューモードにおいて、実際のレコードが挿入され、前述した優先順位に従ってレイアウトを計算する。ただし、プレビューモードは、表示上でのレイアウト計算であるが、実際に印刷する場合においても、レコードを挿入してレイアウトを計算する際の計算方法も同様である。ステップS6401の処理でプレビューモードが起動したら、プレビューするレコードがデータベース119に格納されているデータソースから選択されプレビューが実行される(S6402)。
【0110】
レコードの選択が行われプレビューが実行されると、レイアウト編集アプリケーション121は、そのレコードをレイアウトするために計算を行う。その際に前述した優先順位がコンテナに設定されているかをチェックする(S6403)。ステップS6403のチェックで、優先順位が設定されているコンテナが存在すると判断された場合(S6403-YES)、「優先順位の設定あり」としてレイアウトを計算する(S6404)。この「優先順位あり」の場合のレイアウト計算方法については、後で詳細に記述する。
【0111】
ステップS6403の判断処理で優先順位が設定されているコンテナが存在しなかった場合(S6403-NO)、処理をステップS6405に進めてレイアウト編集アプリケーション121は、「優先順位なし」としてレイアウトを計算する。
【0112】
そしてステップS6406において、レイアウト編集アプリケーション121は、優先順位ありとしてレイアウト計算された結果(S6404)、または、優先順位なしとしてレイアウト計算された結果(S6405)をレイアウト表示する。そして、ステップS6407において、他のレコードについてもプレビューを行うかどうかを判断し、他のレコードについてプレビューを行う必要がないと判断した場合は(S6407-NO)、プレビューモードを終了する(S6409)。他のレコードについてプレビューを行うのであれば(S6407-YES)、他のレコードを選択して再度レイアウト計算を行い(S6404、S6405)、プレビューを行う(S6406)。
【0113】
プレビューモードでなく印刷時におけるレイアウト計算の場合は、印刷するレコード全てについて順にレイアウトの計算を行う。したがって、レコードを移動させてレイアウト計算を行うためのステップS6407、S6408の処理は印刷時におけるレイアウト計算では不要となり、全てのレコードについて印刷が終了した時点で終了する。
【0114】
(優先順位が設定されたコンテナに対する具体的なレイアウト計算方法)
レイアウトの優先順位がコンテナに設定されていた場合のレイアウト計算処理の流れを図65のフローチャートを参照しつつ説明する。また図66、67はそのレイアウト計算処理に従ってユーザに示されるUI画面の表示例を示す図である。
【0115】
ここで、図66の6601はコンテナAを示し、6603はコンテナAに設定されている優先順位を示し、6602はコンテナB(6604)とコンテナC(6605)の間に設定されているリンクを示している。なお、6603で示される優先順位は数が小さいほうが高いものとする。ここでは優先順位(1)、(2)、(3)に従い、コンテナA,B,Cの順にレイアウト計算がされる。図67の(A)の破線で示される領域6701はコンテナAに挿入されるコンテンツのサイズを示している。6702はコンテナAのレイアウト計算後のコンテナA´、破線で示される領域6703はコンテナBに挿入されるコンテンツのサイズを示している。6704はコンテナBのレイアウト計算後のコンテナB´を示し、6605はコンテナCのレイアウト計算後のコンテナC´を示している。
【0116】
まず、図65のステップS6501において、レイアウト計算するコンテナの集合を求める。そして計算を行う一つの集合を選択する(S6502)。この場合、コンテナの集合は各コンテナ間がリンク6602により関連付けされている図66のコンテナA,B,Cが該当する。
【0117】
そして、レイアウト編集アプリケーション121は、レイアウトするコンテンツデータをデータベース119から取得する(S6503)。ここで記述したコンテンツデータは、コンテンツの内容、サイズ、量などである。プロセッサユニット135はI/Oインターフェース138を介してデータベース119より取得したコンテンツデータからコンテンツデータをそのコンテンツを挿入するコンテナに割り当てる(S6504)。
【0118】
次に、ステップS6505において、レイアウト編集アプリケーション121は、優先順位の一番高いコンテナを抽出する。図67の(A)では、コンテナAの優先順位が一番高いので、コンテナAが抽出される。そして、抽出されたコンテナAについて、ステップ6504で割り当てられたコンテンツデータに基づいてレイアウト計算を行う(S6506)。ここで、図67(A)の6701はコンテナAに割り当てられたコンテンツデータのサイズに対応する領域を示す。計算の方法は、現在計算の対象になっているコンテナAより優先順位が低いコンテナ(B、C)にルールが違反しない限り影響を与えることが可能である。その代わり、レイアウト計算の対象となるコンテナより優先順位が高いコンテナ(例えば、コンテナBから見て優先順位の高いコンテナA)には影響を与えることができない。図67(A)の場合、コンテナAのレイアウト計算では、コンテナAより優先順位の低いコンテナB,Cのコンテナサイズに関係なく、計算をすることが可能である。コンテナBについては、コンテナAのレイアウト計算結果の影響を受けることになるが、コンテナBのレイアウト計算結果は、優先順位の低いコンテナCに影響を与えることが可能である。最も優先順位の低いコンテナCは、コンテナA、Bのレイアウト計算結果の影響を受けつつ、自己のコンテナに対するレイアウト計算が実行されることになる。
【0119】
次に処理をステップS6507に進め、レイアウト編集アプリケーション121は、ステップ6506で計算されたレイアウト計算の結果より、コンテナのサイズと位置を決定する。そして、ステップS6507で決定したコンテナのサイズと位置を確定する(S6508)。図67(B)の6702は、コンテナAについて、計算が終了してサイズ・位置が確定された後のコンテナを示している。
【0120】
ステップS6509では、レイアウト編集アプリケーション121は、選択された集合内の全てのコンテナA,B、Cについて計算が終了したかどうかを確認する。全てのコンテナA,B、Cについて終了していなければ(S6509-NO)、計算したコンテナの次に優先度の高いコンテナを抽出し(S6510)、そのコンテナについてステップS6506〜S6508の処理を実行する。図67の(B)の状態では、コンテナAの計算が終了したあと、次に優先順位が高いコンテナBについてコンテナサイズの計算、位置の決定等の処理が実行される。図67の(B)において、6703はコンテナBに割り当てられたコンテンツデータのサイズ(コンテンツサイズ)に対応する領域を示す。このコンテンツサイズに基づいてコンテナBに対するレイアウト計算が行われるが、コンテナBの優先順位はコンテナAより優先順位が低いため、計算結果は、すでに前ステップでコンテナAのサイズと位置は確定されているために、コンテナAのレイアウト結果に影響を与えることができないことになる。
【0121】
したがって、コンテナBのレイアウト計算はコンテナAに影響を与えない範囲でコンテナサイズを計算しなければならないという拘束条件が課せられることになる。図67(B)の6703で示すように、実際コンテナBに挿入されるコンテンツのサイズはコンテナA´と重なってしまっている。そのため、計算結果が確定したコンテナA´に重複しないようにコンテナBのレイアウトは実際のサイズより縮小して計算されることになる。コンテナBについて計算が終了し、サイズと位置が確定したコンテナB´が図67(C)の6704に示される。
【0122】
コンテナBについてレイアウト計算が終了した後、次にコンテナBより優先度が低いコンテナCが抽出され(図65のステップS6510)、コンテナCについてレイアウト計算が行われる(S6506〜S6508)。しかし、図67の例では、コンテナCは集合内で一番優先順位が低いコンテナであり、そのコンテナについて計算するときは、その他全ての優先順位の高いコンテナ(A、B)について、コンテナサイズと位置が確定されているため、コンテナCのレイアウト計算結果を他のコンテナ(A,B)に与えるようにレイアウト計算をすることができない。したがって、一番優先順位が低いコンテナがステップ6510で抽出されたときには、すでにそのコンテナのサイズ・位置も確定されていることになる。一番優先順位が低いコンテナについてもステップ6506〜6508で計算を行うが、他の優先順位の高いコンテナの計算結果に従いに実質的には確定してしまっていることになる。そして、集合内全てのコンテナについて、レイアウト計算が終了したら(S6509-YES)、ページ内にまだ計算していない集合があるかを確認する(6511)。まだ計算していない集合がある場合(S6511-NO)はステップ6502へ処理を戻し、レイアウト編集アプリケーション121は、前述した方法でレイアウト計算を行う。全ての集合について計算が終了しているのであれば、レイアウト編集アプリケーション121は、データベースからバリアブルデータのコンテンツを読み込み、計算されたコンテナに該コンテンツを流し込み(S6512)、処理を終了する。以上の処理は、プロセッサユニット135、レイアウト編集アプリケーション(ユーザインターフェースモジュール103、レイアウトエンジンモジュール105)の制御のもとに実行することができる。
【0123】
(リンクの自動設定)
次に、本発明の特徴であるリンクの自動設定に関する内容について説明する。図12の(A)はリンクの自動設定に関するUI画面を例示する図である。1201はアプリケーションウインドウを示し、1202はコンテナ、1203はコンテナ間に設定されているリンク、1204はマウスポインタを示している。また、本実施形態でコンテナの位置について記述があるが、ドキュメント内左上を原点1205として、X方向は右側へ、Y方向は下側へ増加していくことと定義する(図12の(B)を参照)。コンテナの位置情報はそれぞれコンテナの各コーナー部の位置座標((X1、Y1)、(X2、Y2)(X3、Y3)等)により記述することができ、ドキュメントテンプレート309にレイアウトされている複数のコンテナ間の位置関係は、基準となるコンテナの位置座標情報と、他のコンテナとの位置座標情報と、を求めることにより相対的な位置関係を求めることが可能になる。
【0124】
図16はリンクの自動設定の全体的な流れを説明するフローチャートである。まず、ステップS1601において、レイアウト編集アプリケーション121は、リンク設定を一括に行うコンテナが指定されたかを判断する。コンテナの設定は、ユーザによって任意に指定することが可能であるが、何も指定しなければ(S1601-NO)、ページ上の全コンテナが選択されたことになる(S1603)。一方、レイアウト編集アプリケーション121は、複数のコンテナが指定されたと判断した場合(S1601-YES)、処理をステップS1602に進め、プロセッサユニット135はユーザによって選択された複数のコンテナを認識する(S1603)。
【0125】
そして、プロセッサユニット135及びユーザインターフェースモジュール103による制御の下、認識したコンテナをユーザに視覚的に示すためにUI画面を変更する(1604)。図13は複数のコンテナF,G,Hを選択するUI画面の例を示す図である。マウスポインタ1303等の指示入力手段によって、矩形1302をドラッグして矩形1302内に複数コンテナを入れることによって、矩形内のコンテナを複数個選択することが可能である。また、複数個のコンテナの選択はこの方法に限らず、選択しようとするコンテナを個別にマストポインタ1303によりドラッグして指定するようにしてもよい。
【0126】
図14Aは、図13で説明した操作によりコンテナF,G,Hが選択されたことをユーザに示すためにUI画面が切り替えられた状態を示す図である。図14Aでは、コンテナF,G、Hに対して、選択されたことを示す表示(図14Aの例ではハッチングを付して示している)1402が表示される。
【0127】
図14Bは、図14Aのように矩形領域によりコンテナを複数指定するのではなく、マウスポインタ1303でコンテナを押下する(指定する)ことによる複数のコンテナの選択の例を示している。この方法では、図14Aで説明したように矩形領域による選択するでは選択することができないコンテナの配置(部分的に選択しないコンテナが含まれるような配置)のコンテナを複数選択することができる。
【0128】
選択されたコンテナは図14Aの場合と同様に選択されたことを示す表示5102が表示される。
【0129】
説明を図16に戻し、ステップS1605において、レイアウト編集アプリケーション121は、選択された複数のコンテナ間にリンクを一括に設定する。このステップでは、リンクを一括で設定したことによって、レイアウトがリンクに設定されているルールに違反しないようにコンテナの設定を変更するステップも含まれるものとする。複数のコンテナが選択された状態で、図14Aに示すようなリンクツールボタン1403をマウスポインタで押下することによって、図73のようなリンク作成方向UIが表示される。本実施例では一括にリンクを設定する設定方向モードとして、以下の3つを含む。まず、第1リンク設定方向モードは7302の「X方向にリンク設定」であり、ユーザによって選択されたことを、レイアウト編集アプリケーション121が認識した場合、X方向にリンクが一括設定されることとなる。また、第2リンク設定方向モードは7303の「Y方向にリンク設定」であり、ユーザによって7303が選択されたことを認識した場合、Y方向にリンクが一括設定される。第3リンク設定方法モードは7304の「XおよびY方向にリンク設定」であり、ユーザによって7304が選択されたことを認識した場合、XおよびY方向にリンクを一括設定することとなる。
【0130】
リンクの一括設定は、ダイアログを別途表示して設定の有無をユーザに確認させるようにしてもよい。その場合は、ユーザの確認の入力があったときにリンクの一括設定が行われる。図15は複数選択されたコンテナF,G,H間にリンクが一括で設定された状態を示す図である。リンクの一括設定により、コンテナF,G,Hの間にはリンク1502が設定される。このリンク設定のための具体的な内容は、後の詳述する。つぎに、本処理は、バリアブルデータを読み込んで、各コンテナに流し込み、自動レイアウトした結果をプレビューするプレビュー処理中にレイアウトの編集が行われている場合は、設定されたリンク1502の状態を考慮してレイアウト計算を行う(S1606)。このレイアウト計算については、図9,10で説明した内容と重複するため説明は省略する。また、単に基本レイアウトの編集中であり、プレビュー表示や印刷要求を受けていない場合は、ステップS1606の処理は行われない。
【0131】
(リンクの一括作成)
図17はリンクの一括作成の処理の流れを概略的に説明するフローチャートである。以後の説明では、矩形領域で複数のコンテナが選択された場合を例として処理の内容を説明するが、ただし、ページ内の全コンテナを選択した場合でも、マウスポインタで個別に複数コンテナを選択した場合も同じ手法で処理を行うことは可能である。
【0132】
まず、ステップS1701において、レイアウト編集アプリケーション121は、図16のステップS1602で認識しているユーザにより選択されたコンテナの位置情報及びコンテナの個数(ConNum)を取得する。次に、レイアウト編集アプリケーション121は、選択されたコンテナの個数を記憶装置139(140、141)またはメモリユニット136に格納する(S1702)。そして、レイアウト編集アプリケーション121は、選択されたコンテナに対して、X方向に隣接する位置にコンテナが配置されている場合はX方向のリンクの作成を行う(S1703)。次に、Y方向に隣接する位置にコンテナが配置されている場合は、レイアウト編集アプリケーション121は、Y方向のリンクの作成を行う(S1704)。最後に、レイアウト編集アプリケーション121は、作成されたリンクによって、コンテナのレイアウトに関するルールが違反しないように、コンテナの設定(アンカーの設定等)を自動変更する(1705)。
【0133】
以上の各ステップ(S1701〜S1705)の具体的な処理を、以下図18等の図面を参照しつつ説明する。尚、リンクの一括作成に関する処理は、レイアウト編集アプリケーション121に基づきプロセッサユニット135の全体的な制御の下、実行することが可能である。
【0134】
(コンテナの位置情報取得)
図18はコンテナの位置情報を取得する処理の流れを説明するフローチャートである。まず、レイアウト編集アプリケーション121は、選択したコンテナに任意に順番を設定する(S1801)。この処理は、全てのコンテナについて位置情報を取得するために、順番を設定するものである。次に、レイアウト編集アプリケーション121は、変数iに1を代入して変数の初期化を行う(S1802)。この変数iはコンテナに設定された番号と対応し、この変数iにより各コンテナが対応付けられることになる。そして、i番目のコンテナについて、プロセッサユニット135は、まず、X方向について選択されているコンテナの位置情報を取得し(S1803)、次に、Y方向について位置情報を取得する(S1804)。そしてプロセッサユニット135は、取得した情報を記憶装置139(140、141)またはメモリユニット136に格納する(S1805)。次に、レイアウト編集アプリケーション121は、変数iをインクリメントして、次のコンテナのX方向の位置情報(S1803)、Y方向の位置情報を取得して(S1804)、データを格納し(S1805)、選択した全てのコンテナについてデータの取得と格納が終了するまで、以上の処理を繰り返す。選択した全てのコンテナに対して、処理が終了した場合(S1807-YES)、処理を終了する。
【0135】
(リンクの作成)
図19A,BはX方向のリンクの作成処理の流れを説明するフローチャートである。リンクの作成は、隣接するコンテナを抽出し、そのコンテナ間にリンクを設定する。ここで隣接するコンテナは、コンテナ間の距離が最小であることを意味しており、最小であるコンテナが複数見つかった場合は、リンクを複数設定する。
【0136】
まず、ステップS1901で、レイアウト編集アプリケーション121は、リンク設定の基準となるコンテナを設定し(この場合はコンテナ2104)、このコンテナ2104の左辺のX座標を基準として、コンテナ間の相対的な位置関係を求め、X方向の間隔の小さい順にコンテナの番号をリンク作成用に設定する。この順番の設定は、図21Aの2160に示すように、コンテナ2104の左辺のX座標を基準として、各コンテナのX方向の距離の小さい(X1<X2)、コンテナ2105に順番(2)が設定され、この次にX方向の距離の小さいコンテナである2106に順番(3)が設定される。以下、同様に選択された全てのコンテナに対して、X方向の距離に従い、順番が設定される。この場合、同じX方向の位置に複数のコンテナがレイアウトされる場合は、Y方向の距離の関係を求め、Y方向の距離が小さいコンテナを早い順番に設定する。図21Aの2150は、コンテナに対して、リンク設定のための順番付けが完了した状態を示す図である。
【0137】
なお、本実施例ではコンテナの左辺が左上にあるコンテナに対して1番目と順番が設定されるが、これに限ることはなく、例えば右上、右下方向などから順番を設定するようにしても構わない。
次に、処理をステップS1902に進め、レイアウト編集アプリケーション121は、変数nに1を代入する。ステップS1903で、レイアウト編集アプリケーション121は、X方向に隣接するコンテナの番号(ステップ1901で設定した順番)を格納するContX[ ]を用意し、この値を0で初期化をする。
【0138】
次に、ステップS1904において、レイアウト編集アプリケーション121は、X方向の距離の最小値を格納するDistX_Minを用意し、初期値にページ幅を代入する(1904)。
【0139】
そして、ステップS1905において、レイアウト編集アプリケーション121は、隣接するコンテナをチェックするための変数iにn+1を代入する。これは、ステップS1901でX方向の距離が小さい順に順番を設定しているため、隣接しており、かつ、リンクを設定する必要があるコンテナは、自身コンテナ(図21Aの場合は、コンテナ2104が対応する。)より順番が後のものになる。したがって、ステップS1905の処理は、チェックするコンテナをn+1番目からになるように変数を制御するためである。
【0140】
次に、処理を図19BのフローチャートのステップS1906に移行して、n番目のコンテナとi番目のコンテナのY方向の位置が重なるかどうかをチェックする。本実施形態におけるリンクの一括設定では、作成されるリンクは、コンテナ同士が同じ水平方向または垂直方向にあるということを前提にしている。従って、X方向のリンクについてはステップ1906のチェックを行い、コンテナ同士が水平方向にレイアウトされているかを判断する。例えば、図21Aの2160において、コンテナ2104と、コンテナ2105とのY方向の距離はY1であり、コンテナ2104と、コンテナ2106のY方向の距離はY2である。
【0141】
ステップS1906の判断で、Y方向の位置が重なると判断された場合(S1906-YES)、処理をステップS1907に進め、レイアウト編集アプリケーション121は、n番目のコンテナとi番目のコンテナのX方向の位置の差を計算して、結果をDistXに代入する。
【0142】
次に、処理をステップS1908に進め、レイアウト編集アプリケーション121は、前ステップで計算されたDistXと、最小の距離が格納されているDistX_Minとを比較する。もし、DistXが最小値(DistX_Min)よりも小さいのであれば(S1908-YES)、処理をステップS1909に進め、レイアウト編集アプリケーション121は、ContX[]を0で初期化し、変数kに0を代入する。
【0143】
そして、距離が最小であったコンテナの番号をContX[k]に代入する(1910)。
【0144】
一方、ステップ1908でDistXが最小値よりは小さくなかった場合(S1908-NO)、処理をステップS1911に進め、レイアウト編集アプリケーション121は、さらに比較を行いDistXとDistX_Minが一致するかどうかを判断する(S1911)。もし一致するのであれば(S1911-YES)、そのコンテナ番号をContX[k]に代入して、kに1を加算する。
【0145】
ステップ1910を処理した後、あるいは、S1911でDistXが最小値よりも大きいと判断された場合や、ステップ1906でi番目のコンテナがY方向に重なっていない場合は、レイアウト編集アプリケーション121は、次のコンテナをチェックするために変数iをインクリメントする(S1912)。
【0146】
ステップS1913では、レイアウト編集アプリケーション121は、選択されているコンテナすべてについてチェックを行ったかどうかを判断し、まだ行っていなければ、ステップS1906へ進み処理を繰り返す。全てについてチェックが終了した場合は、検出された隣接するコンテナへリンクを設定する処理を行う(S1914)。この処理については後述する。
【0147】
そして、リンク設定の処理が終了したら、変数nをインクリメントし(S1915)、選択された全てのコンテナについて、これまでの処理が行われたかどうかを判断し、まだ行われていなければ、ステップS1903に進み処理を繰り返す(S1916)。全てについて処理が終了していれば処理を終了する。
【0148】
図20は、図19Bのステップ1914のリンク設定処理の流れを説明するフローチャートである。まず、ステップS2001において、ContX[0]が0であるかどうかを判断する。もし、0であるならば(S2001-YES)、隣接したコンテナが検出されなかったことを意味するので、リンクの設定処理は行わずに終了する。
【0149】
一方、ContX[0]が0でなかった場合は(S2001-NO)、kに0を代入する(S2002)。そして、n番目のコンテナとContX[k]番目のコンテナ間にX方向のリンクを設定する。リンクを設定したら、kをインクリメントして(S2004)、ContX[k]をチェックする(2005)。ContX[k]が0になるまで、格納されている全てのコンテナについてリンクの設定を行う。ContX[k]が0になったら、リンクの設定処理を終了する。
図21A、BはX方向のリンク設定を説明する図である。図21Aにおいて、2101,2102は選択外のコンテナを示し、2103は複数のコンテナを指定する矩形領域、2104〜2111はリンクの一括処理を行うように選択されたコンテナを示し、2112はマウスポインタを示している。コンテナ内の番号は、図19のステップ1901でコンテナに順番を付けられた番号である。番号はX方向の位置の小さい順に設定されており、2104,2105,2106,2107,2108,2109,2110,2111の順に番号が設定されている。ここで、リンク設定ツールボタン2113を押下すると、リンクが設定される。図21Bの2114〜2117は設定されたX方向のリンクを示しており、各コンテナのX方向に対して最小距離にあるコンテナ間にリンクが設定されている。
【0150】
なお、図21A、および図21Bのフローチャートにおいては各コンテナのX方向に対して最小距離にあるコンテナ間にリンクを設定することを記載したが、最小距離に限らない場合の処理の流れについて図68に記載する。なお、基本的な処理の流れは上記した図16とほぼ同様であるので異なる点のみを記載する。
【0151】
まず、図68におけるS6801〜S6804は同様の処理であるため説明を省略する。レイアウト編集アプリケーション121は、マウス等により、ある特定の指示がされた場合(例えば右クリックなど)、図69に示すようなリンク設定UIをディスプレイ装置144に表示する(S6805)。図69はリンク設定モードを選択するためのUI図であり、リンク設定UI6901には図示するように第1設定モードとしての「基準コンテナと最短コンテナにリンク設定」と、第2設定モードとしての「基準コンテナとXまたはY方向に交わるコンテナに設定」とが記載されており、ユーザがどちらかのリンク設定方法を選択したことを認識することにより、次のステップへと進む。「基準コンテナと最短コンテナにリンク設定」は上述したリンク設定方法のことを指すので、「基準コンテナとXまたはY方向に交わるコンテナに設定」が選択された場合の処理について記載する。ここで、「基準コンテナとXまたはY方向に交わるコンテナに設定」について、図72を用いて具体的に説明する。上述した「基準コンテナと最短コンテナにリンク設定」の場合、図72においてコンテナ7201乃至7203がリンク設定対象であり、コンテナ7201を基準としてリンクを生成する場合、コンテナ7203はコンテナ7201との最短距離に位置していないためリンク7205が設定されることがなかったが、「基準コンテナとXまたはY方向に交わるコンテナに設定」が選択された場合、コンテナ7201とY方向で交わるコンテナ7202に対してリンク7204が設定され、7203に対してリンク7205が設定されることとなる。
【0152】
レイアウト編集アプリケーション121は、図69におけるリンク設定UIにおいて設定方法を選択し、「OK」ボタンが押されたことを認識すると、該選択されたコンテナ間にリンクを設定する(S6806)。なお、S6806〜S6809に関しても図16におけるS1605〜S1606の処理と同様であるためここでは説明を省略する。
リンクの一括作成およびコンテナの位置情報取得についての詳細は、上述した図17および図18の処理と同様であるためここでは省略する。
【0153】
続いて、「基準コンテナとXまたはY方向に交わるコンテナに設定」におけるリンク作成フローを図70Aおよび図70Bを用いて説明する。
【0154】
なお、S7001〜S7005は、S1901〜S1903およびS1905〜S1906と同様の処理であるため詳細については省略する。
【0155】
レイアウト編集アプリケーションは、S7005において、i番目のコンテナはn番目のコンテナのY方向の位置と重なると判定した場合、n番目のコンテナとi番目のコンテナの間に他のコンテナがあるか否かを判定する(S7006)。詳細には、図18の処理により各コンテナの位置情報を記憶装置139またはメモリユニット136に格納しているので、レイアウト編集アプリケーション121が参照することにより、判定可能である。
【0156】
S7006の判定の結果、n番目のコンテナとi番目のコンテナの間に他のコンテナがないと判定した場合、n番目のコンテナとリンクを用いて関連付けるためにS7008へ進む。しかし、S7006の判定の結果、間に他のコンテナがあると判定した場合、レイアウト編集アプリケーション121は、レイアウト編集アプリケーション121がi番目のコンテナとn番目のコンテナを直接的にリンクを設定できるか否かを判定する(S7007)。詳細には、各コンテナサイズの情報は図18の処理により各コンテナの位置情報を記憶装置139またはメモリユニット136に格納しているので、レイアウト編集アプリケーション121が参照することにより、判定可能である。
【0157】
S7007は、n番目のコンテナとi番目のコンテナが他のコンテナを介することなく直接的にリンクを設定することができる場合に、S7008へ進むことを指し、具体的には図71において5番目のコンテナと8番目のコンテナはY方向の位置が重なると判定することができるが、5番目のコンテナと8番目のコンテナの間に7番目のコンテナがあり、5番目のコンテナから8番目のコンテナへは7番目のコンテナを介して、間接的にしかリンクを設定することができない。このような場合、5番目のコンテナから8番目のコンテナに対してリンクは設定されない。また、4番目のコンテナと8番目のコンテナはY方向の位置が重なっており、間には7番目のコンテナがある。しかし、8番目のコンテナのY方向は7番目のコンテナに対して垂直方向にはみ出しており、4番目のコンテナから8番目のコンテナに対して、間にある7番目のコンテナを介することなく直接的にリンクを設定することができるためリンク7102が生成されることとなる。
【0158】
なお、S7008からS7013の処理は図19におけるS1910〜S1913の処理と同様であるため詳細については省略し、図70BのS7011の処理については図19BのS1914を説明した図20の処理の流れと同様であるため、ここでは詳細について省略する。
【0159】
図71は、X方向のリンク設定を説明する図である。なお、図71は図21Bと基本的に同じであるため異なる点のみを記載する。図21Bでは5番目のコンテナとX方向の最短距離に位置する6番目のコンテナにのみリンク2116が設定されていたが、図71では、5番目のコンテナと7番目のコンテナはX方向の最短距離に位置されていないが、リンク7101が設定されている。これは、図69のリンク設定UIにより「基準コンテナとXまたはY方向に交わるコンテナに設定」を選択したため、7番目のコンテナは基準コンテナ(5番目のコンテナ)のY方向と交わっていることによりリンク7101が設定されることとなる。さらに、図21Bでは4番目のコンテナと8番目のコンテナはX方向の最短距離に位置していないため、リンクが設定されなかったが、図71では、リンク7202が設定されている。これは、両者の間には7番目のコンテナが存在するが、8番目のコンテナは基準となるコンテナ(4番目のコンテナ)とY方向で交わり、さらに7番目のコンテナのY方向の位置をY方向にはみ出しているため、4番目のコンテナから8番目のコンテナに対して直接的にリンクを設定することが可能である。よってリンク7102が設定されることとなる。
【0160】
図22A,BはY方向のリンクの作成フローを示している。各ステップについては、方向が変化するのみで、X方向の処理(図19A、B)とほぼ同じ処理である。
【0161】
まず、レイアウト編集アプリケーション121は、順番が設定されたコンテナをY方向の位置について小さい順番に、Y方向のリンクを作成するための順番を設定する(S2201)。このとき、同じY方向の位置のコンテナがあった場合は、X方向の距離が小さいコンテナを早い順番に設定する。次に、nに1を代入する(S2202)。そして、レイアウト編集アプリケーション121は、Y方向に隣接するコンテナの番号(ステップS2201で設定した順番)を格納するContY[]を用意し、これを0で初期化をする(S2203)。また、Y方向の距離の最小値を格納するDistY_Minを用意し、初期値にページ幅を代入する(S2204)。次に、隣接するコンテナをチェックするための変数iにn+1を代入する(2205)。
【0162】
次に、処理を図22BのステップS2206に移行して、レイアウト編集アプリケーション121は、n番目のコンテナとi番目のコンテナのX方向の位置が重なるかどうかをチェックする(S2206)。ステップ2206で重なると判断された場合(S2206-YES)、レイアウト編集アプリケーション121は、n番目のコンテナとi番目のコンテナのY方向の位置の差を計算して、その結果をDistYに代入する(S2207)。
【0163】
そして、レイアウト編集アプリケーション121は、前ステップで計算されたDistYと最小の距離が格納されているDistY_Minとを比較する(S2208)。もし、DistYが最小値よりも小さいのであれば、処理をステップS2209に進め、レイアウト編集アプリケーション121は、ContY[]を0で初期化し、変数kに0を代入する。そして、距離が最小であったコンテナの番号をContY[k]に代入する(2210)。
【0164】
一方、ステップS2208でDistYが最小値よりは小さくなかった場合(S2208−NO)、処理をステップS2211に進め、レイアウト編集アプリケーション121は、さらに比較を行いDistYとDistY_Minが一致するかどうかを判断する(S2211)。もし一致するのであれば(S2211-YES)、レイアウト編集アプリケーション121は、そのコンテナ番号をContY[k]に代入して、kに1を加算する(S2210)。
【0165】
ステップ2210を処理した後、あるいは、ステップ2211でDistYが最小値よりも大きいと判断された場合、ステップ2206でi番目のコンテナがX方向に重なっていない場合は、レイアウト編集アプリケーション121は、次のコンテナをチェックするためにiをインクリメントする(S2212)。ステップS2213において、レイアウト編集アプリケーション121は、選択されているコンテナすべてについてチェックを行ったかどうかを判断し、まだ全てのコンテナに対してチェックを行っていなければ、ステップS2206へ進み処理を繰り返す。全てのコンテナに対してチェックが終了した場合は、レイアウト編集アプリケーション121は、検出された隣接するコンテナへリンクを設定する処理を行う(S2214)。この処理については後述する。
【0166】
そして、Y方向のリンク設定の処理が終了したら、ステップS2215において、変数nをインクリメントする。そして、選択された全てのコンテナについて、これまでの処理が行われたかどうかを判断し、まだ、行われていなければ、ステップS2203に進み処理を繰り返す(S2216)。全てについて処理が終了していれば全体の処理を終了する。
【0167】
図23は、図22BのステップS2214におけるY方向のリンクを設定する処理の流れを説明するフローチャートである。まず、ステップS2301において、レイアウト編集アプリケーション121は、ContY[0]が0であるかどうかを判断する。もし0であるならば(S2301-YES)、隣接したコンテナが検出されなかったことを意味するので、リンクの設定処理は行わずに終了する。一方、0でなかった場合は(S2301-NO)、レイアウト編集アプリケーション121は、変数kに0を代入する(S2302)。そして、n番目のコンテナとContY[k]番目のコンテナ間にY方向のリンクを設定する。リンクを設定したら、レイアウト編集アプリケーション121は、変数kをインクリメントして(S2304)、ContY[k]をチェックし、ContY[k]が0になるまで、格納されている全てのコンテナについてリンクの設定を行う(S2303)。ContY[k]が0になったら(S2305-YES)、リンクの設定処理を終了する。
【0168】
図24A、Bはリンク作成の状態を示すUI画面の例を示す図である。図24Aにおいて、2401は複数のコンテナの選択を指定する矩形領域、2402〜2409は選択されたコンテナ、2110はマウスポインタを示している。コンテナ内の番号は、図22のステップS2201でコンテナに順番を付けた番号である。(1)のコンテナからみて、Y方向の距離の小さい順に他のコンテナ((2)〜(8))の順番は設定されており、2402,2403,2404,2405,2406,2407,2408,2409の順に番号が設定されている。ここで、図24Bの2415で示すように、リンク設定ツールボタンを押下すると、リンクが設定される。2411〜2113は作成されたY方向のリンクを示しており、各コンテナのY方向に対して最小距離にあるコンテナ間にリンクが設定されている。また、2113のように、コンテナ(1)からコンテナ(4)コンテナ(5)5間へ2本のリンクが設定されているが、これはY方向の最小距離に2つのコンテナがあったためである。
【0169】
なお、Y方向にリンクを一括設定する場合にも、上述したX方向にリンクを一括設定する場合と同様に、図69のリンク設定UIによる選択により、最小距離に位置しないコンテナに対してもリンクを設定することが可能となる。
【0170】
(コンテナの計算のための優先順位の設定)
コンテナに対してリンクを一括設定する際、コンテナの計算の順番を指定するための優先方向の設定をすることが可能である。この処理を図51、図52、図53を参照しつつ説明する。ここで、図52はリンクの一括設定により作成されたリンクとそのコンテナを示す図である。左右に示される5301はページ幅を示し、5302はリンクの一括設定が行われたコンテナ、5303はリンクを示している。設定される優先順位は、X方向とY方向どちらかの方向を指定して、指定された方向から、コンテナに優先順位が設定される。方向の指定は、図53のようなダイアログで行われ、ユーザによって指定される。5304はダイアログボックスであり、ユーザインターフェースモジュール103により表示制御される。5305は方向指定を行うラジオボタン、5306は設定をキャンセルするボタン、5307はOKボタンを示している。方向を指定して、OKボタンを押下することで優先順位が自動に設定される。
【0171】
図51は優先順位の設定フローの流れを説明するフローチャートである。まず、ステップS5101において、前述した図53のダイアログにより指定された優先方向を判断する。ここで、X方向が指定されていたならば、レイアウト編集アプリケーション121は、コンテナの左辺のX座標の位置について、小さい順にコンテナの順番を設定する(S5102)。もし、同じX座標に複数のコンテナがレイアウトされていた場合、レイアウト編集アプリケーション121は、それらのコンテナの上辺のY座標が小さい順に順番を設定する。
【0172】
一方、優先方向にY方向が指定されていたならば、レイアウト編集アプリケーション121は、コンテナの上辺のY座標について、小さい順にコンテナの順番を設定する(S5103)。もし、同じY座標に複数のコンテナがレイアウトされていた場合、レイアウト編集アプリケーション121は、それらのコンテナの上辺のX座標が小さい順に順番を設定する。順番の設定が終了したら、その順番に沿って優先順位を設定する(S5104)。この優先方向の指定により、コンテナに関する計算の優先順位を設定することができる。
【0173】
図54A、Bは、X方向を優先させてコンテナに優先順位を設定する処理の例を示す図であり、図54Aは優先順位が設定される前のコンテナとリンクを示している。ここで、左右の5401はページ幅を示し、5402はコンテナを示している。そして、5403は全コンテナの左辺のX座標を示している。コンテナの優先順位は、X座標の小さい(ページ上の左から)順番に設定される。図54Bは優先順位が設定された後のコンテナとリンクを示している。各コンテナ内の数字が優先順位を示している。X座標の小さい順に設定されるので、5404,5405,5406,5407,5408,5409,5410,5411の順にコンテナの優先順位が設定される。
【0174】
同様に図55A、Bは、Y方向を優先させてコンテナに優先順位を設定する処理の例を示す図であり、図55Aは優先順位が設定される前のコンテナとリンクを示している。ここで、左右の5501はページ幅を示し、5502はコンテナを示している。そして、5504は全コンテナの上辺のY座標を示している。コンテナの優先順位は、Y座標の小さい(ページ上の上から)順番に設定される。図55Bは優先順位が設定された後のコンテナとリンクを示している。各コンテナ内の数字が優先順位を示している。Y座標の小さい順に設定されるので、5504,5505,5506,5507,5508,5509,5510,5511の順に優先順位が設定される。
【0175】
(リンク設定の修正)
一括設定されたコンテナ間のリンクに関して、ユーザは、例えば、キーボード132、またはマウス133の指示入力手段を介して、修正の指定をすることができる。この場合、指定されたリンクに関して、リンクの属性(可変、固定)の変更や、リンクの設定をキャンセルすることが可能である。この変更や設定のキャンセルはユーザインターフェースモジュール103、プロセッサユニット135の制御の下に実行することが可能である。また、コンテナをそれぞれ指定することにより、個別にリンクの設定を指定することができる。これにより、ユーザは、一括設定されたリンクの他、新たに追加してリンクの設定を行うことが可能になる。
【0176】
(コンテナに関する設定の自動変更(ページ上の一番外側にある辺をロック))
図17のステップ1705にあたる、コンテナのアンカーの設定を変更する処理について説明する。ここで行う処理は、リンクを作成したコンテナの辺が、ページ内にレイアウトされているコンテナの最も外側に位置する辺と同じ位置であったときは、その辺の位置を自動的にロック(固定)するものである。同じコンテナで横方向の辺とこれに交差する縦方向の辺がロックされた場合は、自動的にその辺により形成されるコーナー部にアンカーが設定される。
【0177】
図25は、アンカーの設定に関する全体的な処理の流れを説明するフローチャートである。ステップS2501において、コンテナの左辺をロックして、ステップS2502において、コンテナの右辺をロックする。更に、ステップS2503、ステップS2504において、コンテナの上辺、下辺をロックする。各辺をロックする詳細な処理の流れは図26、図28、図30、図32のフローチャートに基づき説明する。
【0178】
(左辺のロック)
図26は、図25におけるステップS2501のコンテナの左辺をロックする処理の流れを具体的に説明するフローチャートである。まず、ステップS2601において、レイアウト編集アプリケーション121は、レイアウトされている全コンテナの左辺の最小X座標を取得する。そして、取得した最小X座標をMin_Xに代入する(S2602)。次に、ステップS2603において、変数iに1を代入し、ステップ2604において、変数kに0を代入する。
【0179】
さらに、レイアウト編集アプリケーション121は、Lock_Cont[]を用意し、0で初期化をする(S2605)。ここで、変数iはコンテナの番号を示しており、変数kはLock_Cont[]の添字を示す変数であり、Lock_Cont[]は、ロック対象のコンテナの番号を格納する配列である。
【0180】
次に、ステップS2606において、レイアウト編集アプリケーション121は、i番目のコンテナの左辺のX座標とMin_Xが等しいかどうかをチェックする。等しいのであれば、処理をステップS2607に進め、iをLock_Cont[k]に代入する。そして、kおよびiをインクリメントする(S2608,S2609)。
【0181】
ステップ2606で等しくなかった場合は(S2606-NO)、Lock_Contに代入せずに、iをインクリメントする(S2609)。そして、すべてのコンテナについて処理が終了したかどうかを確認し(S2610)、終了していなければ、ステップS2606へ進み処理を繰り返す。終了していれば、処理をステップS2611に進め、kに0を代入する。そして、処理をステップS2612に進め、Lock_Cont[k]の値をチェックする。もし、値が0ならば、ロックを設定せずにこの処理を終了する。値が0でないならば、Lock_Cont[k]番目のコンテナの左辺をロックする(S2613)。そして、変数kをインクリメントする(S2614)。この処理をLock_Cont[k]の値が0になるまで、ステップ2613と2614を繰り返す。この処理により、リンクを設定したコンテナの辺の中で、ページ内に一番左にある辺がロックされる。複数の辺が見つかった場合は、見つかった複数の辺すべてがロックされる。
【0182】
図27はコンテナの左辺のロック状態を示す図であり、2701は複数のコンテナの選択を指定する矩形、2702,2703,2704はリンク、2705はロックされた辺を示し,2706は最小のX座標を示している。この図で示されるように、図26の処理を行うと、最小のX座標にあるコンテナの左辺がロックされる。
【0183】
図28は図25におけるステップ2502の右辺をロックする処理の流れを具体的に説明するフローチャートである。まず、ステップS2801において、レイアウト編集アプリケーション121は、レイアウトされている全コンテナの右辺の最大X座標を取得する。そして、ステップS2802において、取得した最大X座標をMax_Xに代入する。次に、ステップS2803において、変数iに1を代入し、また、ステップS2804において、変数kに0を代入する。さらに、ステップS2805において、Lock_Cont[]を用意し、0で初期化をする。ここで、変数iはコンテナの番号を示しており、kはLock_Cont[]の添字を示す変数であり、Lock_Cont[]は、ロック対象のコンテナの番号を格納する配列である。
【0184】
次に、ステップS2806でレイアウト編集アプリケーション121は、i番目のコンテナの右辺のX座標とMax_Xが等しいかどうかをチェックする。等しいのであれば(S2806−YES)、処理をステップS2807に進め、iをLock_Cont[k]に代入する。そして、変数kおよび変数iをインクリメントする(S2808,S2809)。ステップS2806で等しくなかった場合は(S2806−NO)、Lock_Contに代入せずに、処理をステップS2809に進め、変数iをインクリメントする。
【0185】
そして、すべてのコンテナについて終了したかどうかを確認し(S2810)、終了していなければ(S2810−NO)、ステップS2806へ進み処理を繰り返す。終了していれば(S2810−YES)、処理をステップS2811に進め、変数kに0を代入する。
【0186】
そして、処理をステップS2812に進め、レイアウト編集アプリケーション121は、Lock_Cont[k]の値をチェックする。もし、値が0ならば、ロックを設定せずにこの処理を終了する。一方、値が0でないならば(S2812−NO)、処理をステップS2813に進めLock_Cont[k]番目のコンテナの右辺をロックする。
【0187】
そして、ステップS2814において、変数kをインクリメントし、Lock_Cont[k]の値が0になるまで、ステップS2813とステップS2814の処理を繰り返す。この処理により、リンクを設定したコンテナの辺の中で、ページ内に一番右にある辺がロックされる。複数の辺が見つかった場合は、見つかった複数の辺すべてがロックされる。
【0188】
図29はコンテナの右辺のロック状態を示す図である。同図において、2901は複数のコンテナの選択を指定する矩形、2902,2903はリンク、2904はロック,2905は最大のX座標を示している。図29で示されるように、図28の処理を行うと、最大のX座標にあるコンテナの右辺がロックされる。
【0189】
(上辺のロック)
図30は図25におけるステップ2503の上辺をロックする処理の流れを具体的に説明するフローチャートである。まず、ステップS3001において、レイアウト編集アプリケーション121は、レイアウトされている全コンテナの上辺の最小Y座標を取得する。そして、ステップS3002において、取得した最小Y座標をMin_Yに代入する。次に、ステップS3003において、変数iに1を代入し、ステップS3004において、変数kに0を代入する。さらに、ステップS3005において、レイアウト編集アプリケーション121は、Lock_Cont[]を用意し、0で初期化をする。ここで、変数iはコンテナの番号を示しており、kはLock_Cont[]の添字を示す変数であり、Lock_Cont[]は、ロック対象のコンテナの番号を格納する配列である。
【0190】
次に、処理をステップS3006に進め、レイアウト編集アプリケーション121は、i番目のコンテナの上辺のY座標とMin_Yが等しいかどうかをチェックする。等しいのであれば(S3006−YES)、処理をステップS3007に進め、変数iをLock_Cont[k]に代入する。そして、変数kおよび変数iをインクリメントする(S3008,S3009)。
【0191】
ステップ3006で等しくなかった場合は(S3006−NO)、レイアウト編集アプリケーション121は、Lock_Contに代入せずに、変数iをインクリメントする(S3009)。そして、処理をステップS3010に進め、すべてのコンテナについて処理が終了したかどうかを確認し、終了していなければ(S3010−NO)、ステップ3006へ進み処理を繰り返す。処理が終了していれば(S3010−YES)、処理をステップS3011に進め、変数kに0を代入する。そして、処理をステップS3012に進め、レイアウト編集アプリケーション121は、Lock_Cont[k]の値をチェックする。もし、値が0ならば(S3012−YES)、ロックを設定せずにこの処理を終了する。値が0でないならば(S3012−NO)、処理をステップS3013に進め、Lock_Cont[k]番目のコンテナの上辺をロックする。そして、処理をステップS3014に進め、変数kをインクリメントし(3014)、Lock_Cont[k]の値が0になるまで、ステップS3013とS3014を繰り返す。この処理により、リンクを設定したコンテナの辺の中で、ページ内に一番上にある辺がロックされる。複数の辺が見つかった場合は、見つかった複数の辺すべてがロックされる。
【0192】
図31はコンテナの上辺のロック状態を示す図である。同図において、3101は複数のコンテナの選択を指定する矩形、3102,3103はリンク、3104は最小のY座標を示している。この図で示されるように、図30の処理を行うと、最小のY座標にあるコンテナの上辺がロックされる。
【0193】
図32は図25におけるステップ2504の下辺をロックする処理の流れを具体的に説明するフローチャートである。まず、ステップS3201において、レイアウト編集アプリケーション121は、レイアウトされている全コンテナの下辺の最大Y座標を取得する。そして、ステップS3202において、取得した最大Y座標をMax_Yに代入する。次に、ステップS3203において、変数iに1を代入し、ステップS3204において、変数kに0を代入する。さらに、ステップS3205において、Lock_Cont[]を用意し、0で初期化をする。ここで、iはコンテナの番号を示しており、kはLock_Cont[]の添字を示す変数であり、Lock_Cont[]は、ロック対象のコンテナの番号を格納する配列である。
【0194】
次に、処理をステップS3206に進め、レイアウト編集アプリケーション121は、i番目のコンテナの下辺のY座標とMax_Yが等しいかどうかをチェックする。等しいのであれば、処理をステップS3207に進め、変数iをLock_Cont[k]に代入する。そして、ステップS3208において、変数kおよび変数iをインクリメントする(S3208,S3209)。
【0195】
ステップS3206で等しくなかった場合は(S3206−NO)、Lock_Contに代入せずに、変数iをインクリメントする(S3209)。そして、すべてのコンテナについて処理を終了したかどうかを確認し(S3210)、終了していなければ(S3210−NO)、ステップ3206へ進み処理を繰り返す。終了していれば(S3210−YES)、処理をステップS3211に進め、変数kに0を代入する。そして、処理をステップS3212に進め、レイアウト編集アプリケーション121は、Lock_Cont[k]の値をチェックする。もし、値が0ならば、ロックを設定せずにこの処理を終了する。値が0でないならば(S3212−NO)、Lock_Cont[k]番目のコンテナの下辺をロックする(S3213)。そして、処理をステップS3214に進め、変数kをインクリメントし、Lock_Cont[k]の値が0になるまで、ステップS3213とS3214を繰り返す。この処理により、リンクを設定したコンテナの辺の中で、ページ内に一番下にある辺がロックされる。複数の辺が見つかった場合は、見つかった複数の辺すべてがロックされる。
【0196】
図33はコンテナの下辺のロック状態を示す図である。同図において、3301は複数のコンテナの選択を指定する矩形、3302,3303はリンク,3304は最大のY座標を示している。この図で示されるように、図32の処理を行うと、最大のY座標にあるコンテナの下辺がロックされる。
【0197】
図34はアンカーの設定の状態を示す図である。ここで、3401はページ端を示し、3402はコンテナ、3403,3404はリンク、3405,3506,3407はロックされた辺を示している。上述の処理でページ内の外側に位置する辺3407がロックされたときに、同じコンテナの縦と横の辺がロックされて、コンテナの角が固定になったときは、3408で示されるようにアンカーが自動的に設定される。
【0198】
(フレキシブルなリンクの設定)
図35,36は、上述のリンクの一括作成処理で、作成されるリンクが固定長さではなく、最大・最小値をもつフレキシブルなリンクとして設定するための処理の流れを説明するフローチャートである。ここで、リンクを設定するコンテナを選択する操作は上述の内容と同様なので重複を避けるためここでは説明を省略するが、フレキシブルなリンクの最大、最小値の設定処理は、図20及び図23のフローが変更になることになるので、ここではその変更点のみを説明する。
【0199】
図35は、図20で示したX方向のリンク作成のフローチャートにおいて、作成されるリンク長をフレキシブルに設定するための処理の流れを説明するフローチャートである。まず、ステップS3501において、レイアウト編集アプリケーション121は、変数kに0を代入する。そして、ステップS3502において、ContX[k]の値をチェックする。もし値が0であるならば(S3502−YES)、リンク作成処理は終了する。一方、値が0でなければ(S3502−NO)、処理をステップS3503に進め、n番目のコンテナと、ContX[k]番目のコンテナの間にX方向のリンクを設定する。そして、ステップS3504において、作成されたリンクの長さをLink_Distに代入する。ステップS3505では、Link_Distに係数1.2を乗算し、その値を作成したリンクの最大値に設定する。そして、Link_Distに係数0.8を乗算し、その値を作成したリンクの最小値に設定する(S3506)。ステップS3507において、変数kをインクリメントして、リンクを設定するコンテナがある限り、ステップS3503からS3506までの処理を続ける。
【0200】
同様に図36は、図23で示したY方向のリンク作成のフローチャートにおいて、作成されるリンク長をフレキシブルに設定するための処理の流れを説明するフローチャートである。まず、ステップS3601において、変数kに0を代入する。そして、ステップS3602で、ContY[k]の値をチェックする。もし値が0であるならば、リンク作成処理は終了する。値が0でなければ(S3602−NO)、処理をステップS3603に進め、n番目のコンテナと、ContY[k]番目のコンテナの間にY方向のリンクを設定する。そして、ステップS3604において、作成されたリンクの長さをLink_Distに代入する。ステップS3605では、Link_Distに係数1.2を乗算し、その値を作成したリンクの最大値に設定する。そして、Link_Distに係数0.8を乗算し、その値を作成したリンクの最小値に設定する(S3606)。ステップS3607において、変数kをインクリメントして、リンクを設定するコンテナがある限り、ステップS3603からS3606までの処理を続ける。
【0201】
以上説明した図35、図36の処理により、作成されたリンクの長さの120%を最大値、80%を最小値として設定することが可能になる。ただし、リンク長の最大、最小値は上述の係数に限定されるものではなく、例えば、図48のUI画面を介してユーザによって任意に指定することができるものとする。
【0202】
(コンテナに関する設定の自動変更(ユーザの指定した範囲にある辺をロック))
次に、コンテナに関する設定の自動変更として、ユーザから入力された範囲にある辺をロックする処理について説明する。
【0203】
図37は、本ロック処理の全体的な処理の流れを説明するフローチャートであり、フローを示している。まず、ステップS3701において、レイアウト編集アプリケーション121は、ユーザによるポインティングデバイス(132、133)の入力により指定されたX,Y方向の範囲を、指定範囲情報として保持する変数「Value_X,Value_Y」に代入する。ここでの範囲とは、ページ内の一番外側の辺の座標から、どのくらい内側までをロックの対象とするかを決める値である。そして、ステップS3702〜S3705の処理によりコンテナの各辺をロックする。以下、各辺のロックについて具体的に説明する。
【0204】
(左辺のロック)
図38は、図37におけるステップS3702のコンテナの左辺をロックする処理の流れを具体的に説明するフローチャートである。まず、ステップS3801において、レイアウト編集アプリケーション121は、レイアウトされている全コンテナの左辺の最小X座標を取得する。そして、取得した最小X座標をMin_Xに代入する(S3802)。次に、ステップS3803において、変数iに1を代入し、ステップS3804において、変数kに0を代入する。
【0205】
さらに、レイアウト編集アプリケーション121は、Lock_Cont[]を用意し、0で初期化をする(S3805)。ここで、変数iはコンテナの番号を示しており、変数kはLock_Cont[]の添字を示す変数であり、Lock_Cont[]は、ロック対象のコンテナの番号を格納する配列である。
【0206】
次に、ステップS3806において、レイアウト編集アプリケーション121は、i番目のコンテナの左辺のX座標からMin_Xを減算して、その値が指定範囲情報のX座標であるValue_X以下であるかをチェックする。Value_X以下であれば(S3806-YES)、i番目のコンテナは、ロック対象として指定された範囲内であるので、変数iをLock_Cont[k]に代入する(S3807)。そして、変数kおよび変数iをインクリメントする(S3808,S3809)。
【0207】
ステップ3806でValue_X以下でない場合は(S3806-NO)、Lock_Contに代入せずに、変数iをインクリメントする(S3809)。そして、すべてのコンテナについて処理が終了したかどうかを確認し(S3810)、終了していなければ(S3810−NO)、ステップS3806へ進み処理を繰り返す。終了していれば(S3810-YES)、処理をステップS3811に進め、変数kに0を代入する。そして、処理をステップS3812に進め、Lock_Cont[k]の値をチェックする。もし、値が0ならば、ロックを設定せずにこの処理を終了する。値が0でないならば(S3812−NO)、処理をステップS3813に進め、Lock_Cont[k]番目のコンテナの左辺をロックする。そして、処理をステップS3814に進め、変数kをインクリメントし、Lock_Cont[k]の値が0になるまで、ステップS3813とS3814の処理を繰り返す。この処理により、リンクを設定したコンテナの辺の中で、ページ内に一番左からユーザが指定した範囲内にあるコンテナの左辺はすべてロックされる。
【0208】
図39はコンテナの左辺のロック状態を示す図であり、3901は複数のコンテナの選択を指定する矩形、3902,3903,3904はリンク、3905はロックされたコンテナの辺,3906は最小のX座標、3907はロック対象となる指定範囲の境界線、3908はValue_Xの間隔を示している。この図で示されるように、図38の処理を行うと、最小のX座標3906から、Value_X3908で指定された範囲内にあるコンテナの左辺がロックされる(3905)。この場合、複数の辺が該当する場合は、該当する複数の辺すべてがロックされる。
【0209】
(右辺のロック)
図40は、図37におけるステップS3703のコンテナの右辺をロックする処理の流れを具体的に説明するフローチャートである。まず、ステップS4001において、レイアウト編集アプリケーション121は、レイアウトされている全コンテナの右辺の最大X座標を取得する。そして、取得した最大X座標をMax_Xに代入する(S4002)。次に、ステップS4003において、変数iに1を代入し、ステップS4004において、変数kに0を代入する。
【0210】
さらに、Lock_Cont[]を用意し、0で初期化をする(S4005)。ここで、変数iはコンテナの番号を示しており、変数kはLock_Cont[]の添字を示す変数であり、Lock_Cont[]は、ロック対象のコンテナの番号を格納する配列である。 次に、ステップS4006において、Max_Xからi番目のコンテナの右辺のX座標を減算して、その値が指定範囲情報のX座標であるValue_X以下であるかどうかをチェックする。Value_X以下であれば(S4006-YES)、i番目のコンテナは、ロック対象として指定された範囲内であるので、変数iをLock_Cont[k]に代入する(S4007)。そして、変数kおよび変数iをインクリメントする(S4008,S4009)。
【0211】
ステップS4006でValue_X以下でない場合は(S4006−NO)、Lock_Contに代入せずに、変数iをインクリメントする(S3809)。そして、すべてのコンテナについて処理が終了したかどうかを確認し(S4010)、終了していなければ(S4010−NO)、ステップS4006へ進み処理を繰り返す。終了していれば(S4010−YES)、処理をステップS4011に進め、変数kに0を代入する。そして、処理をステップS4012に進め、Lock_Cont[k]の値をチェックする。もし、値が0ならば、ロックを設定せずにこの処理を終了する。値が0でないならば(S4012−NO)、処理をステップS4013に進め、Lock_Cont[k]番目のコンテナの右辺をロックする。そして、処理をステップS4014に進め、変数kをインクリメントし、Lock_Cont[k]の値が0になるまで、ステップS4013とS4014の処理を繰り返す。この処理により、リンクを設定したコンテナの辺の中で、ページ内に一番右からユーザが指定した範囲内にあるコンテナの右辺はすべてロックされる。
【0212】
図41はコンテナの左辺のロック状態を示す図であり、4101は複数のコンテナの選択を指定する矩形、4102,4103,4104はリンク、4105はロックされたコンテナの辺,4107は最大のX座標、4106はロック対象となる指定範囲の境界線、4108はValue_Xの間隔を示している。この図で示されるように、図40の処理を行うと、最大のX座標から、Value_X4108で指定された範囲内にあるコンテナの右辺がロックされる(4105)。この場合、複数の辺が該当する場合は、該当する複数の辺すべてがロックされる。
【0213】
(上辺のロック)
図42は、図37におけるステップS3704のコンテナの上辺をロックする処理の流れを具体的に説明するフローチャートである。まず、ステップS4201において、レイアウトされている全コンテナの上辺の最小Y座標を取得する。そして、取得した最小Y座標をMin_Yに代入する(S4202)。次に、ステップS4003において、変数iに1を代入し、ステップS4204において、変数kに0を代入する。
【0214】
さらに、Lock_Cont[]を用意し、0で初期化をする(S4205)。ここで、変数iはコンテナの番号を示しており、変数kはLock_Cont[]の添字を示す変数であり、Lock_Cont[]は、ロック対象のコンテナの番号を格納する配列である。 次に、ステップS4206において、i番目のコンテナの上辺のY座標からMin_Yを減算して、その値がValue_Y以下かどうかをチェックする。Value_Y以下であれば(S4206−YES)、i番目のコンテナは、ロック対象として指定された範囲内であるので、変数iをLock_Cont[k]に代入する(S4207)。そして、変数kおよび変数iをインクリメントする(S4208,S4209)。
【0215】
ステップS4206でValue_Y以下でない場合は(S4206−NO)、Lock_Contに代入せずに、変数iをインクリメントする(S4209)。そして、すべてのコンテナについて処理が終了したかどうかを確認し(S4210)、終了していなければ(S4210−NO)、ステップ4206へ進み処理を繰り返す。終了していれば(S4210−YES)、処理をステップS4211に進め、変数kに0を代入する。そして、処理をステップS4212に進め、Lock_Cont[k]の値をチェックする。もし、値が0ならば、ロックを設定せずにこの処理を終了する。値が0でないならば(S4212−NO)、処理をステップS4213に進め、Lock_Cont[k]番目のコンテナの上辺をロックする。そして、処理をステップS4214に進め、変数kをインクリメントし、Lock_Cont[k]の値が0になるまで、ステップS4213とS4214の処理を繰り返す。この処理により、リンクを設定したコンテナの辺の中で、ページ内の一番上からユーザが指定した範囲内にあるコンテナの上辺はすべてロックされる。
【0216】
図43はコンテナの上辺のロック状態を示す図であり、4301は複数のコンテナの選択を指定する矩形、4302,4303はリンク、4304は最小のY座標、4305はロック対象となる指定範囲の境界線、4308はValue_Yの間隔を示している。この図で示されるように、図42の処理を行うと、最小Y座標から、Value_Y4308で指定された範囲内にあるコンテナの上辺がロックされる(4306)。この場合、複数の辺が該当する場合は、該当する複数の辺すべてがロックされる。
【0217】
(下辺のロック)
図44は、図37におけるステップS3705のコンテナの下辺をロックする処理の流れを具体的に説明するフローチャートである。まず、ステップS4401において、レイアウトされている全コンテナの下辺の最大Y座標を取得する。そして、取得した最大Y座標をMax_Yに代入する(S4402)。次に、ステップS4403において、変数iに1を代入し、ステップS4404において、変数kに0を代入する。
【0218】
さらに、Lock_Cont[]を用意し、0で初期化をする(S4405)。ここで、変数iはコンテナの番号を示しており、変数kはLock_Cont[]の添字を示す変数であり、Lock_Cont[]は、ロック対象のコンテナの番号を格納する配列である。 次に、ステップS4406において、Max_Yからi番目のコンテナの下辺のY座標を減算して、その値がValue_Y以下かどうかをチェックする。Value_Y以下であれば(S4206−YES)、i番目のコンテナは、ロック対象として指定された範囲内であるので、変数iをLock_Cont[k]に代入する(S4407)。そして、変数kおよび変数iをインクリメントする(S4408,S4409)。
【0219】
ステップS4406でValue_Y以下でない場合は(S4406−NO)、Lock_Contに代入せずに、変数iをインクリメントする(S4409)。そして、すべてのコンテナについて処理が終了したかどうかを確認し(S4410)、終了していなければ(S4410−NO)、ステップS4406へ進み処理を繰り返す。終了していれば(S4410−YES)、ステップS4411に進め、変数kに0を代入する。そして、処理をステップS4412に進め、Lock_Cont[k]の値をチェックする。もし、値が0ならば、ロックを設定せずにこの処理を終了する。値が0でないならば(S4412−NO)、処理をステップS4413に進め、Lock_Cont[k]番目のコンテナの下辺をロックする。そして、処理をステップS4414に進め、変数kをインクリメントし、Lock_Cont[k]の値が0になるまで、ステップS4413とS4414の処理を繰り返す。この処理により、リンクを設定したコンテナの辺の中で、ページ内の一番下からユーザが指定した範囲内にあるコンテナの辺がすべてロックされる。この場合、複数の辺が該当する場合は、該当する複数の辺すべてがロックされる。
【0220】
図45はコンテナの下辺のロック状態を示す図であり、4501は複数のコンテナの選択を指定する矩形、4502,4503はリンク,4504は最大のY座標、4505はロック対象となる指定範囲の境界線、4508はValue_Yの間隔を示している。この図で示されるように、図44の処理を行うと、最大Y座標から、Value_Yで指定された範囲内にあるコンテナの下辺がロックされることになるが、ここでは、選択した範囲内にロック対象のコンテナがないのでロックはされていない。
【0221】
以上説明したとおり、本実施形態によれば、複数のコンテナ間に対して、一つの操作でリンクを一括設定することが可能になり、効率のよい操作を実現することが可能になる。
【0222】
(他の実施形態)
なお、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
【0223】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【0224】
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD−R,磁気テープ,不揮発性のメモリカード,ROMなどを用いることができる。
【0225】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0226】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【0227】
【図1A】本発明の実施形態にかかるコンピュータシステムの構成を示す図である。
【図1B】ホストコンピュータの具体的な構成を説明する図である。
【図2】レイアウトエンジンモジュールをホストコンピュータ101の他にエンジンサーバ227にもレイアウトエンジン225を設けた構成を示す図である。
【図3】メニューバー、ツールバー、ワークエリア、フローティングパレットを含むユーザインターフェース画面を示す図である。
【図4】コンテナ間のリンク、アンカーやスライダーを持つ典型的なコンテナを示す図である。
【図5A】コンテナを構成する辺に対するルールを例示的に説明する図である。
【図5B】コンテナを構成する辺に対するルールを例示的に説明する図である。
【図5C】コンテナを構成する辺に対するルールを例示的に説明する図である。
【図5D】コンテナを構成する辺に対するルールを例示的に説明する図である。
【図6】リンクの設定方法を示するフローチャートである。
【図7】リンク作成時のユーザインターフェースの画面表示例を示す図である。
【図8】レイアウト計算の処理の流れを説明するフローチャートである。
【図9】レイアウト計算の詳細な処理の流れを説明するフローチャートである。
【図10】図9のフローに対応するユーザインターフェース画面の表示例を示した図である。
【図11】レイアウト計算時におけるコンテナの集合について説明した図である。
【図12】リンクの自動設定に関するUI画面を例示する図である。
【図13】複数のコンテナF,G,Hを選択するUI画面の例を示す図である。
【図14A】図13で説明した操作によりコンテナF,G,Hが選択されたことをユーザに示すためにUI画面が切り替えられた状態を示す図である。
【図14B】マウスポインタ1303でコンテナを押下する(指定する)ことによる複数のコンテナの選択の例を示す図である。
【図15】複数選択されたコンテナF,G,H間にリンクが一括で設定された状態を示す図である。
【図16】リンクの自動設定の全体的な流れを説明するフローチャートである。
【図17】リンクの一括作成の処理の流れを概略的に説明するフローチャートである。
【図18】コンテナの位置情報を取得する処理の流れを説明するフローチャートである。
【図19A】X方向のリンクの作成処理の流れを説明するフローチャートである。
【図19B】X方向のリンクの作成処理の流れを説明するフローチャートである。
【図20】図19BのステップS1914のリンク設定処理の流れを説明するフローチャートである。
【図21A】X方向のリンク設定を説明する図である。
【図21B】X方向のリンク設定を説明する図である。
【図22A】Y方向のリンクの作成処理の流れを説明するフローチャートである。
【図22B】Y方向のリンクの作成処理の流れを説明するフローチャートである。
【図23】図22BのステップS2214のリンク設定処理の流れを説明するフローチャートである。
【図24A】リンク作成の状態を示すUI画面の例を示す図である。
【図24B】リンク作成の状態を示すUI画面の例を示す図である。
【図25】アンカーの設定に関する全体的な処理の流れを説明するフローチャートである。
【図26】図25におけるステップS2501の左辺をロックする処理の流れを具体的に説明するフローチャートである。
【図27】コンテナの左辺のロック状態を示す図である。
【図28】図25におけるステップS2502の右辺をロックする処理の流れを具体的に説明するフローチャートである。
【図29】コンテナの右辺のロック状態を示す図である。
【図30】図25におけるステップS2503の上辺をロックする処理の流れを具体的に説明するフローチャートである。
【図31】コンテナの上辺のロック状態を示す図である。
【図32】図25におけるステップS2504の下辺をロックする処理の流れを具体的に説明するフローチャートである。
【図33】コンテナの下辺のロック状態を示す図である。
【図34】アンカーの設定の状態を示す図である。
【図35】最大・最小値をもつフレキシブルなリンクを設定するための処理の流れを説明するフローチャートである。
【図36】最大・最小値をもつフレキシブルなリンクを設定するための処理の流れを説明するフローチャートである。
【図37】ユーザの指定した範囲にある辺をロックする処理の全体的な処理の流れを説明するフローチャートである。
【図38】図37におけるステップS3702のコンテナの左辺をロックする処理の流れを具体的に説明するフローチャートである。
【図39】コンテナの左辺のロック状態を示す図である。
【図40】図37におけるステップS3703のコンテナの右辺をロックする処理の流れを具体的に説明するフローチャートである。
【図41】コンテナの左辺のロック状態を示す図である。
【図42】図37におけるステップS3704のコンテナの上辺をロックする処理の流れを具体的に説明するフローチャートである。
【図43】コンテナの上辺のロック状態を示す図である。
【図44】図37におけるステップS3705のコンテナの下辺をロックする処理の流れを具体的に説明するフローチャートである。
【図45】コンテナの下辺のロック状態を示す図である。
【図46】自動レイアウトシステムにおける典型的な可変リンクによるコンテナの配置を説明する図である。
【図47】自動レイアウトシステムにおける可変リンクを設定するフローを示している。
【図48】リンク4609の情報がセットされているダイアログウィンドウの例を示す図である。
【図49】自動レイアウトシステムにおける固定リンクによるレイアウト結果を示す図である。
【図50】自動レイアウトシステムにおける可変リンクによるレイアウト結果を示す図である。
【図51】優先順位の設定フローの流れを説明するフローチャートである。
【図52】リンクの一括設定により作成されたリンクとそのコンテナを示す図である。
【図53】自動優先順位設定のダイアログボックスの表示例を示す図である。
【図54A】X方向を優先して優先順位が設定される前のコンテナとリンクを示す図である。
【図54B】X方向を優先して優先順位が設定された後のコンテナとリンクを示す図である。
【図55A】Y方向を優先して優先順位が設定される前のコンテナとリンクを示す図である。
【図55B】Y方向を優先して優先順位が設定された後のコンテナとリンクを示す図である。
【図56】優先順位の設定処理の流れを説明するフローチャートである。
【図57】コンテナの集合を単位として優先順位を設定する内容を説明する図である。
【図58】優先順位を設定するダイアログユーザインターフェース(UI)画面の例を示す図である。
【図59】コンテナに設定する優先順位を変更する手順を説明する図である。
【図60】優先順位を設定するモードへ移行するためのポップアップメニューの例を示す図である。
【図61】優先順位の設定をユーザに示すUI画面の例を示す図である。
【図62】優先順位の設定をユーザに示すUI画面の例を示す図である。
【図63】優先順位の設定をユーザに示すUI画面の例を示す図である。
【図64】優先順位が設定されたコンテナのレイアウトの計算処理の流れを説明するフローチャートである。
【図65】レイアウトの優先順位がコンテナに設定されていた場合のレイアウト計算処理の流れを説明するフローチャートである。
【図66】図65のレイアウト計算処理で表示されるUI画面の例を示す図である。
【図67】図65のレイアウト計算処理で表示されるUI画面の例を示す図である。
【図68】リンクの自動設定において、最小距離に限らない場合の処理の流れを説明するフローチャートである。
【図69】リンクの自動設定方法を選択するためのUI画面の例を示す図である。
【図70A】リンクの自動設定において、最小距離に限らない自動リンク設定方法が選択された場合の、リンク作成処理の流れを説明するフローチャートである。
【図70B】リンクの自動設定において、最小距離に限らない自動リンク設定方法が選択された場合の、リンク作成処理の流れを説明するフローチャートである。
【図71】図70A,Bの処理によるX方向のリンク設定を説明する図である。
【図72】図70A、Bの処理によるリンクの自動設定において、最小距離に限らない自動リンク設定方法が選択された場合の、具体例を示す図である。
【図73】リンクの自動設定処理におけるリンク生成方向を選択するためのUI画面の例を示す図である。
【符号の説明】
【0228】
101 ホストコンピュータ
103 ユーザインターフェースモジュール
105 レイアウトエンジンモジュール
119 データベース
121 レイアウト編集アプリケーションプログラム
132 キーボード
133 マウス
143 I/Oインタフェース
144 ディスプレイ装置
301 アプリケーションウインドウ
303 ツールバー
406 リンクツールボタン
407、408 コンテナ
409 アンカーアイコン
410 固定されていない辺
412 リンク
【特許請求の範囲】
【請求項1】
指示手段と、指定手段と、決定手段と、リンク設定手段と、を備え、割り当てられたデータを収める複数の部分表示領域が配置されたテンプレートと、前記データとを用いてレイアウト処理を実行するレイアウト制御装置におけるレイアウト制御方法であって、
前記指示手段が、複数の部分表示領域を関連付けるリンクの設定を指示する指示工程と、
前記指定手段が、前記リンクによって関連付けられる複数の部分表示領域を指定する指定工程と、
前記指示工程によって前記リンクを設定することが指示された場合、前記決定手段が、前記指定工程において指定された前記複数の部分表示領域によって形成される複数の部分表示領域間の中から前記リンクを設定すべき部分表示領域間を、前記複数の部分表示領域の位置情報に基づいて決定する決定工程と、
前記リンク設定手段が、前記決定工程において決定された前記部分表示領域間に前記リンクを設定するリンク設定工程と、
を有することを特徴とするレイアウト制御方法。
【請求項2】
前記決定工程は、前記指定工程において指定された複数の部分表示領域の中の基準となる部分表示領域と前記基準となる部分表示領域の水平方向または垂直方向に交わる部分表示領域との間を前記リンクが設定される部分表示領域間として決定することを特徴とする請求項1に記載のレイアウト制御方法。
【請求項3】
割り当てられたデータを収める複数の部分表示領域が配置されたテンプレートと、前記データとを用いてレイアウト処理を実行するレイアウト制御装置におけるレイアウト制御装置であって、
複数の部分表示領域を関連付けるリンクの設定を指示する指示手段と、
前記リンクによって関連付けられる複数の部分表示領域を指定する指定手段と、
前記指示手段によって前記リンクを設定することが指示された場合、前記指定手段において指定された前記複数の部分表示領域によって形成される複数の部分表示領域間の中から前記リンクを設定すべき部分表示領域間を、前記複数の部分表示領域の位置情報に基づいて決定する決定手段と、
前記決定手段において決定された前記部分表示領域間に前記リンクを設定するリンク設定手段と、
を備えることを特徴とするレイアウト制御装置。
【請求項4】
前記決定手段は、前記指定手段において指定された複数の部分表示領域の中の基準となる部分表示領域と前記基準となる部分表示領域の水平方向または垂直方向に交わる部分表示領域との間を前記リンクが設定される部分表示領域間として決定することを特徴とする請求項3に記載のレイアウト制御装置。
【請求項5】
割り当てられたデータを収める複数の部分表示領域が配置されたテンプレートと、前記データとを用いてレイアウト処理をコンピュータに実行させるレイアウト制御プログラムであって、当該レイアウト制御プログラムが、コンピュータを
複数の部分表示領域を関連付けるリンクの設定を指示する指示手段と、
前記リンクによって関連付けられる複数の部分表示領域を指定する指定手段と、
前記指示手段によって前記リンクを設定することが指示された場合、前記指定手段において指定された前記複数の部分表示領域によって形成される複数の部分表示領域間の中から前記リンクを設定すべき部分表示領域間を、前記複数の部分表示領域の位置情報に基づいて決定する決定手段と、
前記決定手段において決定された前記部分表示領域間に前記リンクを設定するリンク設定手段として機能させることを特徴とするレイアウト制御プログラム。
【請求項6】
前記決定手段は、前記指定手段において指定された複数の部分表示領域の中の基準となる部分表示領域と前記基準となる部分表示領域の水平方向または垂直方向に交わる部分表示領域との間を前記リンクが設定される部分表示領域間として決定する処理を前記コンピュータに実行させることを特徴とする請求項5に記載のレイアウト制御プログラム。
【請求項1】
指示手段と、指定手段と、決定手段と、リンク設定手段と、を備え、割り当てられたデータを収める複数の部分表示領域が配置されたテンプレートと、前記データとを用いてレイアウト処理を実行するレイアウト制御装置におけるレイアウト制御方法であって、
前記指示手段が、複数の部分表示領域を関連付けるリンクの設定を指示する指示工程と、
前記指定手段が、前記リンクによって関連付けられる複数の部分表示領域を指定する指定工程と、
前記指示工程によって前記リンクを設定することが指示された場合、前記決定手段が、前記指定工程において指定された前記複数の部分表示領域によって形成される複数の部分表示領域間の中から前記リンクを設定すべき部分表示領域間を、前記複数の部分表示領域の位置情報に基づいて決定する決定工程と、
前記リンク設定手段が、前記決定工程において決定された前記部分表示領域間に前記リンクを設定するリンク設定工程と、
を有することを特徴とするレイアウト制御方法。
【請求項2】
前記決定工程は、前記指定工程において指定された複数の部分表示領域の中の基準となる部分表示領域と前記基準となる部分表示領域の水平方向または垂直方向に交わる部分表示領域との間を前記リンクが設定される部分表示領域間として決定することを特徴とする請求項1に記載のレイアウト制御方法。
【請求項3】
割り当てられたデータを収める複数の部分表示領域が配置されたテンプレートと、前記データとを用いてレイアウト処理を実行するレイアウト制御装置におけるレイアウト制御装置であって、
複数の部分表示領域を関連付けるリンクの設定を指示する指示手段と、
前記リンクによって関連付けられる複数の部分表示領域を指定する指定手段と、
前記指示手段によって前記リンクを設定することが指示された場合、前記指定手段において指定された前記複数の部分表示領域によって形成される複数の部分表示領域間の中から前記リンクを設定すべき部分表示領域間を、前記複数の部分表示領域の位置情報に基づいて決定する決定手段と、
前記決定手段において決定された前記部分表示領域間に前記リンクを設定するリンク設定手段と、
を備えることを特徴とするレイアウト制御装置。
【請求項4】
前記決定手段は、前記指定手段において指定された複数の部分表示領域の中の基準となる部分表示領域と前記基準となる部分表示領域の水平方向または垂直方向に交わる部分表示領域との間を前記リンクが設定される部分表示領域間として決定することを特徴とする請求項3に記載のレイアウト制御装置。
【請求項5】
割り当てられたデータを収める複数の部分表示領域が配置されたテンプレートと、前記データとを用いてレイアウト処理をコンピュータに実行させるレイアウト制御プログラムであって、当該レイアウト制御プログラムが、コンピュータを
複数の部分表示領域を関連付けるリンクの設定を指示する指示手段と、
前記リンクによって関連付けられる複数の部分表示領域を指定する指定手段と、
前記指示手段によって前記リンクを設定することが指示された場合、前記指定手段において指定された前記複数の部分表示領域によって形成される複数の部分表示領域間の中から前記リンクを設定すべき部分表示領域間を、前記複数の部分表示領域の位置情報に基づいて決定する決定手段と、
前記決定手段において決定された前記部分表示領域間に前記リンクを設定するリンク設定手段として機能させることを特徴とするレイアウト制御プログラム。
【請求項6】
前記決定手段は、前記指定手段において指定された複数の部分表示領域の中の基準となる部分表示領域と前記基準となる部分表示領域の水平方向または垂直方向に交わる部分表示領域との間を前記リンクが設定される部分表示領域間として決定する処理を前記コンピュータに実行させることを特徴とする請求項5に記載のレイアウト制御プログラム。
【図1A】
【図1B】
【図2】
【図3】
【図4】
【図5A】
【図5B】
【図5C】
【図5D】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14A】
【図14B】
【図15】
【図16】
【図17】
【図18】
【図19A】
【図19B】
【図20】
【図21A】
【図21B】
【図22A】
【図22B】
【図23】
【図24A】
【図24B】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図35】
【図36】
【図37】
【図38】
【図39】
【図40】
【図41】
【図42】
【図43】
【図44】
【図45】
【図46】
【図47】
【図48】
【図49】
【図50】
【図51】
【図52】
【図53】
【図54A】
【図54B】
【図55A】
【図55B】
【図56】
【図57】
【図58】
【図59】
【図60】
【図61】
【図62】
【図63】
【図64】
【図65】
【図66】
【図67】
【図68】
【図69】
【図70A】
【図70B】
【図71】
【図72】
【図73】
【図1B】
【図2】
【図3】
【図4】
【図5A】
【図5B】
【図5C】
【図5D】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14A】
【図14B】
【図15】
【図16】
【図17】
【図18】
【図19A】
【図19B】
【図20】
【図21A】
【図21B】
【図22A】
【図22B】
【図23】
【図24A】
【図24B】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図35】
【図36】
【図37】
【図38】
【図39】
【図40】
【図41】
【図42】
【図43】
【図44】
【図45】
【図46】
【図47】
【図48】
【図49】
【図50】
【図51】
【図52】
【図53】
【図54A】
【図54B】
【図55A】
【図55B】
【図56】
【図57】
【図58】
【図59】
【図60】
【図61】
【図62】
【図63】
【図64】
【図65】
【図66】
【図67】
【図68】
【図69】
【図70A】
【図70B】
【図71】
【図72】
【図73】
【公開番号】特開2008−305414(P2008−305414A)
【公開日】平成20年12月18日(2008.12.18)
【国際特許分類】
【出願番号】特願2008−159549(P2008−159549)
【出願日】平成20年6月18日(2008.6.18)
【分割の表示】特願2004−371886(P2004−371886)の分割
【原出願日】平成16年12月22日(2004.12.22)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Linux
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成20年12月18日(2008.12.18)
【国際特許分類】
【出願日】平成20年6月18日(2008.6.18)
【分割の表示】特願2004−371886(P2004−371886)の分割
【原出願日】平成16年12月22日(2004.12.22)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Linux
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]