説明

自動レイアウトシステム

【課題】 コンテナ内に挿入されるデータがある値を含む場合、そのコンテナ自身とそのコンテナに関連するオブジェクトを同時に消すことができず、内容が関連するオブジェクトがドキュメント上に残ってしまっていた。
【解決手段】 あるコンテナに挿入されるデータが、ある値、あるいは空である場合において、そのコンテナと関連性のある別のコンテナ、あるいはオブジェクトを非表示にすることが出来ることを特徴とする自動レイアウトシステム。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は自動レイアウトシステムに関し、特に自動レイアウトシステムにおける装置/媒体、およびレイアウト手法に関するものである。
【背景技術】
【0002】
近年、商品の多品種化で商品ライフが短くなっていること、インターネット利用の普及による消費者のカスタマイズサービス指向などの要因からCRM(Customer Relationship Management)、One−to−Oneマーケティングの必要性が注目されている。これらの手法により顧客満足度を高め、顧客の開拓や囲い込みを目指すものである。
【0003】
One−to−Oneマーケティングはデータベース・マーケティングの一種で、顧客の年齢、性別、趣味、嗜好、購買履歴等の個人属性情報をデータベース化し、その内容を分析、顧客のニーズに合った提案を行うものであり、その代表的な手法としてバリアブルプリントが挙げられる。ここ最近ではDTP(デスクトップパブリッシング)技術の進展とデジタル印刷装置の普及に伴って、文書を顧客毎にカスタマイズして出力するバリアブルプリントシステムが開発され、顧客毎に異なる量のコンテンツを最適にレイアウトすることが求められるようになった。
【0004】
従来、バリアブルプリントシステムは、ドキュメント上にコンテナ等によりレイアウトを作成し、データベースとレイアウトを関連付けることにより達成していた。しかし、テキストおよびイメージのコンテナのサイズが固定であったため、データベース内のデータがコンテナに挿入されたときに、データ量がコンテナサイズより多いとテキストのオーバーラップおよびイメージのクリッピングが発生し、またデータ量がコンテナサイズより小さいと隙間が空いてしまった。
【0005】
その問題を解決するために、自動レイアウトシステムが発明されている。自動レイアウトシステムはテキストおよびイメージのコンテナサイズを可変に設定することが可能である。この自動レイアウトシステムを実現しているソフトウェアとしてはPageflex社のPageflex等があり、コンテナのサイズを可変とし、差し込まれるデータ量に応じてコンテナのサイズを変更する。またテキストの場合において固定のコンテナサイズ内に入りきらないデータが挿入された場合、テキストのフォントサイズを縮小し、コンテナ内に全てのテキストを表示する技術なども存在する。
【0006】
しかしコンテナのサイズが大きくなった場合、同ドキュメント上の他のコンテナに重なってしまう問題が発生する。またフォントサイズを調節する場合はテキストの量が大きい場合、フォントサイズが小さくなりすぎる問題が発生する。
【0007】
それを解決するための更なる自動レイアウトの技術としては、あるコンテナのサイズが大きくなった場合、隣接したコンテナのサイズを小さくする技術が特許文献1の「レイアウトデザイン装置」に開示されている。
【特許文献1】特開平7−129658号公報(0049、図8)
【発明の開示】
【発明が解決しようとする課題】
【0008】
しかしながら、上述した従来の技術ではそうしたドキュメントのレイアウトにおいて、コンテナ内に挿入されるデータがある値を含む場合、そのコンテナ自身とそのコンテナに関連するオブジェクトを同時に消すことができず、内容が関連するオブジェクトがドキュメント上に残ってしまっていた。
【0009】
また上記データ挿入時にデータ自体が空であった場合もケースの1つとして考えられるが、その場合も関連するオブジェクトを非表示にしたい。しかしながら、上述した従来の技術では空のデータが挿入されたコンテナのみが非表示になり、その他の関連するオブジェクトはデータを表示しているため、ドキュメント上に本来表示して欲しくないデータを表示してしまう場合が発生し、ドキュメントの整合性がとれないケースが起きていた。
【0010】
また非表示にしたコンテナの領域を使うことができなかったため、ドキュメントの領域を有効に使用してレイアウトすることができなかった。
【0011】
例えば上下方向に3つのコンテナが並んで配置されている状態で(上からオブジェクトA、コンテナB、オブジェクトCとする)、中央に配置されたコンテナBにある値のデータが挿入された場合、コンテナBを非表示にしたいのだが、そのような設定をすることが現状出来ない。よってコンテナBだけでなく、内容が関連するオブジェクトA、オブジェクトCも非表示にしたいのだが、そのような動作もすることができない。
【0012】
もしコンテナBに空のデータが挿入された場合、内容が関連するオブジェクトA、オブジェクトCも消したいが、そのような動作ができないため、結果としてオブジェクトA、オブジェクトCはドキュメント上に残ってしまう。そうすると、ドキュメント上に整合性の取れないレイアウトが作成されてしまっていた。また非表示にしたオブジェクトのドキュメント上の領域を、他の関連性のないコンテナ、あるいはオブジェクトが使用することが出来なかったため、見栄えの悪いレイアウトが作成されてしまうおそれがあった。
【0013】
本発明は、以上の点に着目して成されたもので、あるコンテナに挿入されるデータが、ある値、あるいは空である場合において、そのコンテナと関連性のある別のコンテナ、あるいはオブジェクトを非表示にすることができる自動レイアウトシステムを提供することを目的とする。
【課題を解決するための手段】
【0014】
上述した課題を解決するために、本発明は以下の構成を備える。
【0015】
パーソナルコンピュータ等の情報処理装置からなるシステムであって、コンテナ領域の中にデータベースあるいはローカルに保存されたデータから、テキストおよびイメージ等のデータを挿入してドキュメントを作成する際に、プレビュー時にテキストおよびイメージのサイズにあわせて、コンテナのサイズを変更することが可能であり、さらにコンテナ間の関連を設定することにより、その間隔をある程度保って変更することが可能である自動レイアウトシステムにおいて、コンテナを作成する手段と、リンクを作成する手段と、データの量によってコンテナのサイズ、位置を変更し最適なレイアウトを計算する手段と、オブジェクトに割り付けられた条件によって自分以外のオブジェクトを非表示にする条件式を作成する手段と、オブジェクトのプロパティでオブジェクト非表示時の原点を指定する手段を有することを特徴とする。
【発明の効果】
【0016】
本発明によって、あるコンテナに挿入されるデータがある値、あるいは空である場合において、そのコンテナと関連性のある別のコンテナ、あるいはオブジェクトを非表示にすることが出来る。これにより、ドキュメント上でのレイアウト内容の整合性をとることができる。
【0017】
またその非表示にしたスペースを別の関係のないコンテナ、あるいはオブジェクトが利用することが可能であり、これによりドキュメント上で無駄なスペースを作ることなくレイアウトでき、より自由度の高い、見栄えを向上させたドキュメントを作成できる。
【0018】
またコンテナサイズの可変領域が広がることで、よりデータ量あるいはサイズに合った最適なコンテナサイズでレイアウトが可能となり、ユーザの望んだレイアウト結果を提供することが出来る。例えば表などにおいて、表内の横に並んだ(行方向の)複数のコンテナに“項目名(固定データ)”とその“実体(実データ)”のDBフィールドが関連付けられている場合、“実データ”が空だった時は“項目名”に内容(コンテンツ)が入っていたとしても、“項目名”を表示せず、“実データ”を割り付けたコンテナと“項目名”を割り付けたコンテナは同時に表示しないことで、表をコンテンツに合わせて動的に作成することが出来る。
【0019】
また上記特価の例のように、あるコンテナに複数の意味的に関連するコンテナがある場合、そのコンテナの“実データ”が空であった場合は、それら関連するコンテナも消すことが出来る。さらにそれによってそれらのコンテナが配置されていた領域を活用することが出来る。
【発明を実施するための最良の形態】
【0020】
本発明の実施例を適用するのに好適である実施例について説明を行う。
【実施例1】
【0021】
本発明の実施例を説明する前に、本発明を適用可能なシステム構成、およびアプリケーション構成について説明する。
【0022】
<システム構成図>
図1Aはバリアブルデータドキュメントを印刷するシステム100を図示している。この中で示された方法は図1Bで詳しく説明される汎用コンピュータモジュール101で実践される。
【0023】
図1Bで記述されるプロセスは、コンピュータモジュール101内で実行され、システム100上で実施可能となるレイアウト編集アプリケーションプログラム121のようにソフトウェアの全体、あるいは一部分で実行される。特にレイアウト編集や必然的に起こる印刷のステップはコンピュータ101によって実行されるソフトウェアの指示によって実施される。
【0024】
ソフトウェアは例えば以下に記述されるような記憶装置を含むコンピュータの可読媒体に格納される。ソフトウェアはコンピュータの可読媒体からコンピュータにロードされ、コンピュータ101によって実行される。そのようなソフトウェアや媒体に記録されたコンピュータプログラムを持つコンピュータの可読媒体はコンピュータプログラム製品である。そのコンピュータでのコンピュータプログラム製品の使用は望ましくもドキュメントのレイアウト編集やバリアブルデータ印刷に有利な装置をもたらす。
【0025】
コンピュータモジュール101はキーボード132やマウス133のようなポインティングデバイスなどの入力装置をつなぎ、ディスプレイ装置144や状況に応じてはローカルプリンタ145を含む出力装置を連結する。入力/出力インターフェース138はコンピュータモジュール101をネットワーク接続107から接続してシステム100の他のコンピュータ装置につなげることができる。そのネットワーク接続107の典型はローカルエリアネットワーク(LAN)、あるいはワイドエリアネットワーク(WAN)である。
【0026】
コンピュータモジュール101は典型的に少なくとも1つのプロセッサーユニット135、例えば半導体のランダムアクセスメモリ(RAM)やリードオンリーメモリ(ROM)から構成されるメモリユニット136、ビデオインタフェース137を含むINPUT/OUTPUT(I/O)インターフェース、キーボード132やマウス133のためのI/Oインターフェース143を含んでいる。
【0027】
記憶装置139は典型的にハードディスクドライブ140やフロッピー(登録商標)ディスクドライブ141を含んでいる。図には示されていないが磁気テープドライブもまた使用される可能性がある。CD−ROMドライブ142は不揮発性のデータソースとして提供される。コンピュータモジュール101はGNU/LINUXやマイクロソフトウィンドウズ(登録商標)のようなオペレーションシステムや、典型的にはオペレーションシステムに従う形で、あるいは関連のある技術で知られているもので形成されたコンピュータシステムの常套的なオペレーションモードによる方法によって、相互接続バス134を介して通信を行うコンピュータモジュール101のコンポーネント135から143を利用する。
【0028】
図に記述した配置コンピュータの例ではIBM互換PCやSUN社のSparc Station、あるいはそれらを含んだコンピュータシステムが考えられる。
【0029】
レイアウトアプリケーションプログラム121は典型的にハードディスクドライブ140に常駐し、プロセッサ135により実行、読み込み、コントロールされる。プログラム121の媒介記憶装置とネットワーク107からフェッチされるデータはハードディスクドライブ140に呼応して半導体メモリ136を使用する。いくつかのインスタンスではアプリケーションプログラム121がCD−ROMやフロッピー(登録商標)ディスク上でエンコードされ、対応するドライブ142や141を通じて読み込まれユーザに提供される。あるいはもう一つの方法としてアプリケーションプログラム121はネットワーク接続107からユーザによって読み込まれるかもしれない。
【0030】
さらにソフトウェアは磁気テープまたはROMまたは集積回路、光磁気ディスクまたは無線またはコンピュータモジュール101とその他のデバイス間の赤外線通信、PCMCIAカードのようなコンピュータ可読カード、そしてEメール通信やWEBサイト上の記録情報を持つインターネットやイントラネットを含む、他の適当な大きさのコンピュータ可読媒体からコンピュータモジュール101内にロードされる可能性もある。前述は単に関連するコンピュータ可読メディアの模範である。他のコンピュータ可読媒体も使用される可能性はある。
【0031】
またレイアウト編集と名づけられたアプリケーション121はバリアブルデータ印刷(VDP)を行うよう指示し、2つのソフトウェアコンポーネントを含んでいる。これらのうち1つめのコンポーネントはレイアウトエンジン105であり、これは長方形の範囲内で与えられた制限やサイズによって矩形と線の位置を計算するためのソフトウェアコンポーネントである。
【0032】
2つめのコンポーネントであるユーザインターフェース103はユーザにドキュメントテンプレートを作成させ、ドキュメントテンプレート内でデータソースと関連付けるメカニズムを提供する。ユーザインターフェース103とレイアウトエンジン105はコミュニケーションチャネル123を介して通信する。
【0033】
ドキュメント生成のためのデータソースは一般的にデータベースアプリケーションを動かしている他のコンピュータによって構成されたデータベースサーバー117上にある典型的なデータベース119である。ホストコンピュータ101はネットワーク接続107の手段によってデータベースサーバー117と通信する。バリアブルデータ印刷アプリケーション121はホストコンピュータ101か一般的に他のコンピュータで構成されるファイルサーバー115に保存されるドキュメントテンプレートを生成する。
【0034】
またバリアブルデータ印刷アプリケーション121はデータとマージされたドキュメントテンプレートによって構成されたドキュメントを生成する。これらのドキュメントはホストコンピュータ101のローカルファイルシステムに保存されるか、ファイルサーバー115に保存されるか、あるいはプリンタ113に直接印刷される。プリントサーバー109は直接ネットワークにつながっていないプリンタにネットワーク機能を提供するコンピュータである。プリントサーバー109とプリンタ113は典型的な通信チャネル111を介して接続される。
【0035】
図2はエンジンサーバー227の追加を除き、レイアウトエンジン105の分離バージョン225を含む図1A・図1Bの類似の図である。
【0036】
エンジンサーバー227は典型的なコンピュータである。ファイルサーバー115に保存されたドキュメントテンプレートは印刷や他の目的がある際、レイアウトエンジン225によってドキュメントを生成するためにデータベース119に保存されたデータと結合することができる。そのようなオペレーションはユーザインターフェース103を介して要求されるか、特定のレコードのみ印刷するように要求される。
【0037】
〔アプリケーション構成図〕
〔メインウインドウ〕
図3で参照されるように、ユーザインターフェース103は、操作時にビデオディスプレイ144に表示されるアプリケーションウィンドウ301によって形成されたユーザインターフェースを含んでいる。ウインドウ301は、非表示にすることや、スクリーン上の色々な場所に移動することが可能なメニューバー302とツールバー303、そしてマウス133の位置・動作によって場所を移動可能なワークエリア306とオプションのパレット311とカーソル/ポインタデバイス313から特徴付けされる。
【0038】
メニューバー302は、周知の技術として知られているように、メニューオプションの階層の下に拡張される多くのメニューアイテム304を持つ。
【0039】
ツールバー303は、アプリケーションの特別なモードによって非表示にする、または表示することが可能な多くのツールボタンとウィジット305を持つ。
【0040】
オプションのルーラー308はワークエリア内のポインタ、ページ、ライン、マージンガイド、コンテナまたはオブジェクトの位置を示すために使われる。
【0041】
パレット311はバリアブルデータライブラリのような追加機能にアクセスするために使われる。パレット311は移動、リサイズ、クローズをするためのウインドウコントロール312を持つ。パレット311はオプションで、ワークエリアの前面に表示される、あるいはオブジェクトの背面に隠される。パレット311はアプリケーションウィンドウ301の範囲内のみに表示されることを制限される、あるいはアプリケーションウィンドウ301の外側に部分的・全体を表示することを許される。
【0042】
ツールバーエリア303は少なくとも、次のユーザ選択可能な『ボタン』を持つ(図4を参照)。選択ツールボタン403は、コンテナの辺を選択、移動、サイズ変更、リサイズそしてロック・ロック解除するために使われる。コンテナは、(複数)コンテナの周りに選択ボックスをドラッグする、あるいは複数コンテナを選択する間にCTRLキーを押しつづけることによって、複数選択を可能にする。イメージコンテナツールボタン405は、スタティックあるいはバリアブルイメージを持つコンテナを作成するために使われる。テキストコンテナツールボタン404は、スタティックあるいはバリアブルテキストを持つコンテナを作成するために使われる。リンクツールボタン406は、コンテナ間の距離をコントロールするリンクを作成するために使われる。
【0043】
これらのボタンは、周知の技術であるように操作状況に合わせて変化するアイコンのツールチップとして実装される。
【0044】
〔ドキュメントテンプレート〕
ワークエリア306はドキュメントテンプレートのデザインを表示・編集するために使われる。これはユーザに下準備で印刷されたドキュメントの概観をデザインすること、そしてマージされたドキュメントが、バリアブルデータの量・サイズに基づいてどのように変化するかを理解することを可能にする。
【0045】
もし外部データソースがテンプレートにリンクされていたら、現在のドキュメントのプレビューができるように、バリアブルテキストとイメージがそれらのコンテナに表示される。
【0046】
ドキュメントの構造とバリアブルデータコンテナの描写をする視覚的な手がかりは、カーソルをコンテナ上に移動させたときや、コンテナを選択したときにいつも表示される。
【0047】
ワークエリア306はスクロールバー307とオプションのルーラー308とドキュメントテンプレート309に特徴付けられる。ドキュメントテンプレート309はページが複数あることを示すことができる。
【0048】
与えられたドキュメントテンプレートのページサイズは、周知の技術としてユーザによって指定される。それぞれのドキュメントでの実際のページ数は、バリアブルデータによって変化するかもしれない。もし1ページ内にフィットできなかった時、追加のページは自動的に作成される。
【0049】
それぞれのページ内の境界線は、ページ上の印刷可能なオブジェクトの最大幅を示す、任意のページマージン310である。
【0050】
また、図4は1ページのドキュメントテンプレート309上に表示することが可能なオブジェクトの例である。それらは、複数のコンテナ407、408と、任意に適用するアンカーアイコン409と固定されていない辺410、リンク412そしてスライダー413を持つ。
【0051】
〔コンテナ〕
コンテナは、ドキュメントテンプレート内の固定あるいは可変テキスト・イメージを持つスペースであり、他のコンテナやオブジェクトとレイアウトされる。コンテナはマウス133動作でポインタ313を使い、ユーザインターフェースで示されるように移動、サイズ調整そして再作成される。
【0052】
より正確にはコンテナは、設定の集まり、視覚的表現そしてインタラクションと編集動作をもっている。下記はコンテナの定義の全部分である。コンテナは固定あるいは可変のコンテンツを持つ。可変コンテンツは、データソースからとってきて、異なるドキュメントでは異なるかもしれない、という意味でダイナミックである。可変コンテンツは印刷されないような時間によって変更されたり、アニメーションするコンテンツを含むことは意図していない。同様に、固定コンテンツはコンテナを使って生成される全てのドキュメントで、同じように表示される。
【0053】
けれども、可変コンテナの動作によって、固定コンテンツはそれぞれのドキュメントで位置が異なるかもしれない。コンテナは、コンテンツに適用される背景色、ボーダー、フォント・スタイルのようなテキスト設定のような装飾機能を持っている。コンテナはドキュメントを生成したときにデータソースからのデータとマージされる。装飾機能は、どんな固定コンテンツでもそうであるように、典型的に印刷された出力物で可視である。可変コンテンツはデータソースから特定のデータの表示をもたらす。コンテナのこの表現は例えば印刷されるか、スクリーン144上で表示されるか、その両方が可能である。
【0054】
コンテナはユーザインターフェースを持つ、例えばコンテナの編集そして表示設定のためのインタラクティブなGUIを持つ。インターフェースの要素は典型的にスクリーン144上に表示される、しかしドキュメントには印刷されない。
【0055】
ユーザインターフェース103は、背景色やフォントのようなコンテナの装飾機能のいくつかを表示する、そしてコンテナの設定の編集や表示を許すための機能を追加する。ユーザインターフェース機能の特別な目的の例としては、ボーダー、あるいは、コンテナのサイズや位置を対話的に変更、表示するための角アイコン、あるいはコンテナがデータソースからデータをマージされたとき、コンテナの動作を示すための上塗りした数、線、アイコン、テキストがある。現在の公表の一つの概観は、新しい直接編集技術とコンテナのGUIコンポーネントに伴う表示方法の集まりである。
【0056】
〔コンテナ制約〕
公知の技術によると、コンテナはそれぞれのドキュメントで表示されるコンテンツを、どのように結びつけるか制御する制約がある。これらの制約(固定・可変コンテンツをコンテナと結びつけると共に)は、ユーザが一つのドキュメントテンプレートから、多数のドキュメントの生成を制御する主要な方法である。制約の例は「このコンテナのコンテンツの高さは、最大値4インチです。」である。もうひとつの制約は「コンテナのコンテンツの左端は、それぞれのドキュメントで同じ水平位置で表示しなければならない。」である。ここに記述される内容は、GUIを使ってこのような制約を表示、編集するためのいろいろな方法である。
【0057】
イメージがページ上に定義された場所を持っているように、固定コンテンツの配置を指定するコンテンツプレイスホルダーは、デジタル印刷技術でよく知られている。下記の検討で、コンテナは位置とサイズを持ち、それらは公知の技術で知られている手法で編集され、表示されると想定されるかもしれない。その代わりに、現在の検討はバリアブルデータ印刷に特化した方法での表示・編集に焦点を合わせる。
【0058】
コンテナは、ユーザにドキュメントのコンテンツのサイズ・位置を指定することを可能にする。いくつかのドキュメントは一つのドキュメントテンプレートから生成されるので、コンテナは多数の可能性と制約を指定・表示するためにユーザインターフェースを使わなければならない。
【0059】
1つのコンテナの辺は、関連付けられたコンテンツがドキュメント内で表示される仮想の境界線を定義する。このように、この発明でコンテナの左辺を論じることは、関連付けられたコンテンツがどんなドキュメント内でも表示可能である最も左の辺を論じることと同じである。同様に、コンテナの高さを論じることは生成されたドキュメントで関連付けられたコンテンツの高さの制約を論じることとして理解される。この明細書では、ユーザインターフェース103を参照してコンテナの辺あるいは大きさを論じるところで、この区別は明らかにされるであろう。
【0060】
下記検討では、コンテンツの表示を制限するために使われるいくつかの値を定義している用語『固定』は、全てのドキュメントで同じである。もしコンテナの幅が固定なら、関連付けられたコンテンツに割り当てられる幅は、全てのドキュメントで同じになるだろう。もしコンテナの高さが固定なら、関連付けられたコンテンツに割り当てられる高さは、全てのドキュメントで同じになるだろう。もし距離の制約が固定なら、指定された距離は全てのドキュメントのための制約である。もしコンテナの左右辺が固定なら、辺の水平位置がページに関して全てのドキュメントで同じであることを意味している、しかしコンテナの高さあるいは垂直方向の位置は、変わるかもしれない。
【0061】
例えば、もしコンテナの左辺が固定なら、関連付けられたコンテンツは、一つのドキュメントでページの上に近く表示され、他のドキュメントでページの下に近く表示される、しかし左辺は全てのケースで同じ水平位置である。もしコンテナの上下辺が固定なら、辺の垂直位置がページに関して全てのドキュメントで同じであることを意味している、しかしコンテナの幅あるいは水平位置は変わるかもしれない。コンテナの垂直軸はコンテナの右と左辺の平行で、そして中間に位置される想像上の垂直線である。もしコンテナの垂直軸が固定なら、コンテナの左右辺の水平位置の平均は、すべてのドキュメントで同じである。この制約で、コンテナの幅は変化するかもしれない、左右辺両方が異なったドキュメントで、垂直軸にもっとも遠いかもっとも近いかもしれない、しかし軸は全てのドキュメントで同じ水平位置にある。コンテナの高さと水平位置はこの制約によって影響されない。
【0062】
同様に、もし水平軸が固定なら、コンテナの上そして下辺が垂直に位置されることを制約する、けれども高さは、この制約によって影響されない。もし水平、垂直軸両方が固定なら、コンテナの中心位置が固定されていることを意味する、しかし、幅・高さはこの制約によって影響されない。もしコンテナの角、コンテナの辺の中間位置、あるいはコンテナの中心位置が固定なら、すべてのドキュメントで同じ場所で、そしてコンテナに関連付けられた同じ場所で表示される。
【0063】
例えば、もしコンテナの左上角が固定なら、配置されたコンテナの左上位置が全てのドキュメントで同じになることを意味している。垂直辺あるいは軸はページの左辺、あるいは右辺、あるいは左ページマージン、あるいは右ページマージン、あるいは他の水平位置に関連付けされて固定になる。同様に、水平辺あるいは軸はページの上あるいは下辺あるいはマージン、あるいは他の垂直位置に関連付けされて固定になる。用語『固定』の改良は、もしページサイズが全てのドキュメントで同じならこれらの可能性はドキュメント生成で相違はないため、ドキュメント間でページサイズが変わるときにのみ重要となる。
【0064】
『固定』の反対は、辺、軸、角、中間位置、あるいはドキュメント制約がドキュメント間で変化するかもしれないことを意味している『可変』である、しかしドキュメントの特定な設定でそうする必要が無いかもしれない。例えば、変更による辺の実際の好ましい位置のような他の外部制約がある、しかし、もし外部制約が適用されないなら、辺は固定されてないものとしてラベル付けされているので辺の位置は変更できる。
【0065】
〔コンテナ表示・編集〕
[新規コンテナの作成方法]
コンテナは、テキストコンテナとイメージコンテナの2種類で記述される。テキストコンテナはテキスト、そして埋め込みのイメージを持つ。イメージコンテナは、イメージだけを持つ。
【0066】
図4で参照されるように、新規テキストコンテナとイメージコンテナは、テキストコンテナツール404、あるいはイメージコンテナツール405をマウス133でクリックし、テンプレート309に四角形をドラッグすることによって、ドキュメントテンプレート309上に作成される。
【0067】
代わりにコンテナは、適切なツール404、405をアクティブにした後に、ドキュメントテンプレート309上でクリックすることによって単純に作成される。デフォルトサイズのコンテナが挿入されるか、新規コンテナの寸法を入れるために、ダイアログボックスあるいは他のプロンプトが提供される。いくつかのコンテナは自動的に前もって定義されたか、計算されたスキーマによって、作成・配置される。また他の案が考えられるかも知れない。
【0068】
[コンテナの表示方法]
以前記述した36の辺の状態それぞれが、グラフィカルな表現で描画されるのが好ましい。いくつかの辺の状態は、いくつかの状況で表現を分け合うため、36のグラフィック表示より少なくなるかもしれない。
【0069】
図5A−5Dはコンテナの模範的な辺ルールを例示している。
【0070】
アプリケーション121は、辺の状態を表現するために、塗りつぶし線(アイテム503)あるいは点線(504)で辺を描き、アンカー(辺の近くに描画された506、507、509によって示されるような線、形状、アイコン)、ハンドル(移動、修正するために辺、形の近くに描画されたコントロール点、502)、スライダー(辺の両サイドに描画された短い並行線、図4の413)、拡縮アイコン(505)、そして色を特徴として持っている。
【0071】
図5A−5Dのコンテナ表示方法のルールは、つぎの通りである。
【0072】
1.それぞれの辺を固定するために、塗りつぶし線で描画する。
【0073】
2.もし幅が固定なら、左と右の辺を塗りつぶし線で描画する。
【0074】
3.もし高さが固定なら、上と下の辺を塗りつぶし線で描画する。
【0075】
4.軸は描画しない。
【0076】
5.まだ描画されていない全ての辺は、それぞれの辺の近くに拡縮アイコンが描画され、点線になる。
【0077】
6.垂直辺あるいは軸のそれぞれのペアで、もし両者が固定なら、交差点にアンカーが描画される。
【0078】
7.それぞれの固定辺で、もし辺のどこにもアンカーが描画されていなければ、エッジの中央にスライダーが描画される。
【0079】
8.垂直辺あるいは軸のそれぞれのペアで、もしアンカーやスライダーが描画されていなければ、交差点にハンドルが描画される。
【0080】
ルール1、2、3で保証した線は、もしそれらが固定あるいは制限されているなら、点線で描画される。ルール5で保証した可変の辺は、点線で描画される。ルール6、7、8で保証した固定された点は、アンカーを表示し、いくつかの固定された辺はスライダーを表示し、他はハンドルを表示する。
【0081】
上記で、辺はただ一度描画されることが必要である、それでもし、ルールが描画されるべき辺に影響すれば、そのとき後のルールはふたたび描画されるべき辺に影響しないだろう。もしそうすることで都合が良いなら、例えばもしコンテナがとても小さくアイコンがお互い重なるか、あるいは他の表示機能を不明瞭にするならば、アイコンは異なって、あるいは省略されて描画されるかもしれない。
【0082】
可変の辺が描画される場所は、コンテナのコンテンツに依存する。後で記述されるように、ドキュメントテンプレートにコンテンツがマージされて、ユーザインターフェースで可視になることを意味する、『動的な校正処理』が使われる。代わりの実行手段としては、すべてのドキュメントで平均化されるコンテナのコンテンツエリア、あるいは可変の辺がユーザインターフェースで、どこにレイアウトされるべきか決定するほかの手段で使われることができる。
【0083】
これらのコンテンツ表現は、コンテナの辺の状態を表示するグラフィカルな手段を提供する。その表現の解釈は下記のとおりである。
【0084】
図4の410の辺のように、点線はコンテナのコンテンツに依存して、ドキュメント内の辺の位置を意味する。
【0085】
塗りつぶし線は制限された辺を意味する、なぜなら、辺は固定されている(辺414)、あるいはコンテナの幅・高さが固定されている(コンテナ408では両方が固定されている)ためである。
【0086】
アンカーは辺そして軸が交差した場所が固定されていることを意味する。それゆえ、アンカー点は、すべてのドキュメントの水平、垂直位置で現れるだろう。当然アンカーは固定される。図4のアイコン409は、交差する辺414が固定されていることを意図している、アンカーアイコンの例である。
【0087】
スライダーは関係付けられた辺が固定されていることを意味する、しかしコンテナは辺に沿って多くの位置『スライドの長さ』で位置を定められる。例えば、図4でスライダー413はコンテナ408のコンテンツが、ドキュメント内で特定のダイアグラムで表される位置の、左あるいは右に表示されるかもしれない。
【0088】
これらのアイコン・辺のいくつかあるいは全ては、どのツール、どのコンテナを選択・ハイライトあるいはアクティブにするかによって、描画されたりされなかったりする。一般的に、コンテナの辺・アイコンはドキュメントテンプレートのデザインの手助けであるため、印刷物には描画されない。
【0089】
幅・高さの最小値・最大値の設定は、副次的なダイアログウィンドウに表示される。
【0090】
図5Aで、コンテナ501は幅・高さ両方が固定されていない。固定された辺503は塗りつぶし線で表現される。可変の辺504は点線で表現される。拡縮アイコン505は、隣接する辺504が可変であることを示す、追加あるいは代わりのインジケーターである。
【0091】
図5Bで、コンテナ501は幅・高さ両方が可変である。アンカーアイコン506は、交差している両方の辺503が固定されていることを、追加であるいは代わりに示している。
【0092】
図5Cで、コンテナ501は、コンテナの拡大あるいは縮小が任意のアンカーアイコン507で示されるような中心点の周りを平等に広がるという状態で、幅・高さ両方が可変である。
【0093】
図5Dで、コンテナ501は、上辺508が固定されていることを除けば、幅・高さ両方が可変である。上辺508の中心に位置付けられて示されるアンカーアイコン509は、固定されている、そしてまたコンテナの左・右辺が、アイコンを通り垂直に描画される中心軸(垂直軸)の周りを、拡大・縮小することを示す。
【0094】
〔リンク〕
リンクは、コンテナとコンテナの関連を示している。関連とはコンテナ間の距離を示しており、リンクによって関連付けられたコンテナ同士は、互いのレイアウト変更の影響を受けてレイアウトを計算する。図4の412で示されているものがリンクであり、この図ではコンテナ407と408とを関連づけている。リンクの設定方法および、リンクで関連付けられたコンテナのレイアウト計算方法については、後述する。
【0095】
〔リンクの設定方法〕
図6はリンクの設定方法を示したフロー図である。また図7A−CはUI例を示している。それらを用いてコンテナにリンクを設定する方法について説明をする。
【0096】
まず、リンクを設定するためには、リンクを設定するためのコンテナ(最低2つ)を作成する(ステップ0601)。図7は、2つのコンテナを作成してリンクを設定する場合の例を示している。次に、前述したリンクツール406を選択した状態にする(ステップ0602)。図7A−Cは、コンテナを作成し、リンクツールが選択されていた状態から、リンクを設定する動作を示している。図7A−Cを順に説明していく。
【0097】
図7−Aの0701と0702は、前述した図4の407と408と同じであり、固定されている辺を意味する。また、0703と0704は、409と同じであり、アンカーを意味する。0705はマウスポインタを意味している。
【0098】
まず、リンクを設定する片方のコンテナをクリックして選択する(ステップ0603)。次に図7−Bで示されるように、もう片方のコンテナまでマウスポインタを移動して、クリックする(ステップ0604)。図7−Bの0706は図7−Aでクリックをした位置と移動したマウスポインタを結んだ線を示しており、どの位置にリンクが設定されるのかをユーザに示すUIである。
【0099】
ステップ0604が終わった後、設定した場所に0707で示されるリンクUIが表示される(ステップ0605)。コンテナは図7−Cの状態になる。また、リンクが設定されたことにより、コンテナのUIも自動的に変更される(ステップ0606)。0708は、点線で示されている辺であり、前述した通り可変の辺を示している。
【0100】
図7−Cのようにコンテナの辺の状態が変化したのは、リンクを設定したことにより、コンテナの辺を可変にする必要があるためであり、リンクを設定したにもかかわらず、全ての辺が固定という矛盾を引き起こすことを防ぐために、自動的に行われる処理である。また、0709は図5の505と同じで、リンクを設定したことにより、コンテナが変化できる方向をユーザに視覚的に示したしるしである。図7−Cの例では、左のコンテナの右辺と右のコンテナの左辺が可変に変化したが、これは一例であり、右コンテナが、図4の413で示したスライダーを持つ設定に変化してもかまわない。
【0101】
〔レイアウト計算方法(全体フロー)〕
図8はレイアウト計算のフローを示している。
【0102】
まず、プレビューモードを選択する(ステップ0801)。前述した自動レイアウトシステムでは、コンテナを作成して、そのコンテナ間に関連付けを行い、レイアウトを作成するレイアウトモードと、作成したレイアウトにレコードを挿入して、実際にレコードが挿入された後のレイアウト結果をプレビューするプレビューモードに分けられる。このプレビューモードにおいて、実際のレコードが挿入され、レイアウトを計算する。ただし、プレビューモードは、表示上でのレイアウト計算である。実際に印刷する場合においても、レコードを挿入してレイアウトを計算する。その際の計算方法も同じである。
【0103】
プレビューモードになったら、プレビューするレコードを選択して挿入する(ステップ0802)。レコードの挿入を行うと、そのレコードをレイアウトするために計算を行う(ステップ0803)。ステップ0803で計算されたレイアウトを表示する(ステップ0804)。他のレコードについてもプレビューを行うかどうかを判断する(ステップ0805)。ステップ0805で、他のレコードについてプレビューを行う必要がないと判断した場合は、プレビューモードを終了する(ステップ0807)。
【0104】
他のレコードについてプレビューを行うのであれば、他のレコードを選択して再度レイアウト計算を行い、プレビューを行う(ステップ0806)。プレビューモードでなく印刷時においては、印刷するレコード全てについて順にレイアウトの計算を行う。したがって、ステップ0805、0807は存在しない。全てのレコードについて印刷が終了した時点で終了する。
【0105】
〔レイアウト計算方法(詳細フロー)〕
図9はレイアウト計算の詳細を示したフロー図である。また、図10はそのときのUI表示例を示した図である。
【0106】
まず、レイアウトを計算するコンテナの集合を求める(ステップ0901)。レイアウト計算は、関連付けられたコンテナを一つの集合として計算を行う。例えば図11を参照すると、ページ上に4つのコンテナがレイアウトされており、各コンテナに関連付けが設定されている。この場合、コンテナAとコンテナB、そしてコンテナCとコンテナDがリンクによって関連付けされている。したがって、コンテナA・Bが集合1、コンテナC・Dが集合2となる。前述した通りであるが、1101はアンカー、1102は固定された辺、1103はコントローラー、1104は可変の辺の変化方向を示している矢印、1105は可変の辺、1106はリンク、そして1107はスライダーを示している。
【0107】
次に、ステップ0901で求めたコンテナの集合から、レイアウトを計算するために一つを選択する(ステップ0902)。そして、選択したコンテナの集合について、レイアウトの計算を行う。ここでは、レイアウトされるコンテナのサイズが、実際のコンテンツのサイズとできる限り差が少なくなるように、レイアウトの最適化を行う(ステップ0903)。レイアウトの最適化は、動的にサイズを変化することが可能なように関連付けられたコンテナにおいて、それぞれに挿入されるコンテンツのサイズとレイアウトされるサイズとの差が、できる限り同じになるように行われる。
【0108】
レイアウトの最適化を行い、ルールに違反していた場合は、再度ルールを違反しないように計算をする(ステップ0904)。ここで記述したルールとは、レイアウト作成時にユーザによって設定される制限であり、コンテナのサイズと位置、リンクの長さなどである。ルールを違反しないようにレイアウトが計算されたら、その集合のレイアウトは完成される。そして、ステップ0902〜ステップ0904のステップをページ上のすべての集合について施し、ページ全体のレイアウトを計算する(ステップ0905)。
【0109】
図10−A〜Cはレイアウト計算時のUI例である。
【0110】
図10−Aは、あるレコードが挿入されレイアウトが決定されている状態を表している。1001と1002はアンカー、1003と1004は固定された辺、1005は可変の辺、1006は可変の辺の変化方向を示している矢印、1008はリンクをそれぞれ示している。
【0111】
この状態において、レコードを変更し、異なったサイズのコンテンツを挿入する。図10−Bは図10−Aの状態に新しいコンテンツのサイズを重ねて示している。1009はそれぞれのコンテナに挿入されるコンテンツのサイズを表している。そして、レイアウト計算が行われる。図10−Cはレイアウト計算された結果を示している。計算後の各コンテナのサイズは、実際挿入されるコンテンツのサイズと同等に差異があるように計算され、且つ前述したルールを違反しないように計算される。図10−Cで示されるように、図10−Bで示した挿入されるコンテンツサイズ(1009)と計算後のコンテンツサイズ(1010)は、双方において同等な差異がある。
【0112】
〔可変リンクの設定〕
図12では一般的な可変リンクの状態を表している。
【0113】
図4と同様にアプリケーションウィンドウ301とツールバー303があり、ドキュメントテンプレート309上にコンテナ1203とコンテナ1204が存在する。それぞれのコンテナは典型的にアンカーアイコン1201、アンカーアイコン1202と固定された辺1205、辺1206から成り立つ。各エッジコンテナ1203と1204の間には可変サイズのリンク1209があり、それぞれのコンテナを結んでいる。コンテナ1203とコンテナ1204の間にはリンクが設定されているのでそれぞれの右辺1207と左辺1208は点線で表現されている。このため各コンテナにインジケーター1210、インジケーター1211が表示され、これは辺1207と辺1208が可変であることを示している。
【0114】
また図14はリンク1209の情報がセットされているダイアログウィンドウ1401の例である。
【0115】
このダイアログは典型的にタイトルバー1402、ツールボタン1403、ダイアログウィンドウの開閉を行うボタン1404、各種の情報をセットするエリア1409で構成されている。このダイアログウィンドウではリンクタイプが可変(1407)あるいは固定(1406)の選択や、可変の場合、リンクの長さの最大値(1412)そして最小値(1410)、また現在の値(1411)が設定できる。
【0116】
図13は前述のリンク設定方法を踏まえ、例えば図15のコンテナAとコンテナB間に張られている固定サイズのリンク1503の状態から可変サイズのリンク1209を示している図12の状態までの操作遷移を表している。
【0117】
マウスによりリンク1503をクリックし、選択する(ステップ1302)。マウスの右クリックあるいはキーボードの特定のキーにより選択したリンク1503のプロパティダイアログウィンドウ1401を表示する(ステップ1303)。この状態ではリンクサイズは可変ではなく固定であるため、Fixed Length1406がLink Type1405において選択されている。
【0118】
リンクを固定サイズから可変サイズに変更するために、Link Type1405においてリンクサイズを可変に設定するFlexible Length1407を選択する(ステップ1304)。これによりLink Distance1408内に配置されているMax.Distance1412、Min.Distance1410、Distance1411が有効化され、数値の設定が可能となる。
【0119】
そこでリンクの可変サイズを設定するために、そのリンクの長さの最大値をMax.Distance1412、最小値をMin.Distance1410、現在の値をDistance1411において設定する(ステップ1305)。一般的なダイアログウィンドウ開閉ボタン1404によって設定を適用すると図12のリンク1209のような状態にリンクのUI表示が変化する(ステップ1306)。このダイアログウィンドウ1401の設定情報はメモリに格納される。
【0120】
図15は固定サイズのリンクを使用した場合のレイアウト結果を示している。
【0121】
レイアウト計算方法は前述したとおりに従って行われる。例えば図12においてコンテナ1203とコンテナ1204にそれぞれ違ったサイズのデータが挿入された時、それぞれのコンテナはデータの大きさを最適と考え、コンテナ1203は挿入されたイメージサイズになる枠1504(最適コンテナサイズ)に近づこうと右方向へ大きく、同様にコンテナ1204も挿入されたイメージサイズになる枠1505(最適コンテナサイズ)に近づこうと左方向へやや大きくサイズを変更しようとする。
【0122】
しかしコンテナ1203とコンテナ1204の間には固定サイズのリンクが設定されているとすると、コンテナ1203とコンテナ1204はそれぞれアンカー1201とアンカー1202によってそれぞれ左辺1212と右辺1213は移動出来ないため、変更しようとするサイズがリンクサイズを上回ってしまう。そしてこのリンクサイズは固定されているためレイアウト計算時に優先的に計算されるためコンテナ1203とコンテナ1204のサイズが変更されることになる。
【0123】
その結果、コンテナ1203とコンテナ1204はデータに合わせた最適なサイズを確保することが出来ず、最終的に図15のコンテナ1501とコンテナ1502のように最適なサイズ(枠1504、枠1505)よりも小さくなってしまう。リンク1503のサイズは固定であるためコンテナ1501とコンテナ1502は最適サイズを達成していない。
【0124】
図16はリンクを可変サイズにした場合を示している。
【0125】
この場合、上記の例でコンテナ1203とコンテナ1204の間には図の通り可変サイズのリンクが設定されているとすると、コンテナ1203とコンテナ1204のサイズが変更される際に、リンクサイズが縮まることでコンテナ1203とコンテナ1204のサイズが上記の例より大きくなることができ、挿入されるデータサイズに合わせた最適なサイズを達成、あるいはより挿入データサイズ(最適サイズ)に近づけてコンテナの枠を計算することが出来る。その結果が、図16のコンテナ1601とコンテナ1602である。可変リンク1209はレイアウト計算の結果、可変リンク1603のサイズ状態となり、この場合コンテナ1601とコンテナ1602はそれぞれ最適なサイズ(データサイズに合った大きさ)になっている。
【0126】
図17は条件式のプロパティを設定するUIダイアログの1例である。
【0127】
プロパティダイアログウィンドウは典型的にキーボード132やマウス133によりコンテナを選択し、マウスの右クリックメニューの選択、あるいはキーボードからのAltキー等により表示する。この実施例では1つの条件式の設定に関してのみ、プロパティダイアログウィンドウ内に表示している。
【0128】
このプロパティダイアログウィンドウ1201は典型的にタイトルバー1202、ツールボタン1203、プロパティダイアログウィンドウのオープン、クローズを行うボタン1204、各種の情報をセットするエリア1205で構成されている。
【0129】
このプロパティダイアログウィンドウ1201には、条件名を決定するコントロール1701があり、エディットボックス1702では条件名を入力、変更することが可能である。条件式は基本的に「もし〜ならば〜する」の形式で作成していく。この条件式用UIプロパティダイアログでは、その作成フローに沿った方法で設定していくことが可能である。もし(If(1703))項目1704が項目1706であったならば(Then(1707))、項目1709を動作1708で操作する。
【0130】
項目1704はドロップダウンリストであり、接続しているデータベース内のDBフィールドのリストが表示され、その中から目的のDBフィールドを選択することができる。項目1706はドロップダウンリスト、あるいは入力可能なエディットボックスであり、項目1704で選択されたDBフィールドのデータ内容が項目1716における設定内容と一致した場合の内容を選択、あるいは入力する。ここでは“Empty”が選択されており、ここまでの文を解釈すると、「もしDBフィールド<Item>がEmpty(データが空)であるならば」という意味となる。
【0131】
項目1708は上記条件に場合にどのような動作をするか、を設定する箇所である。これはドロップダウンリストであり、「隠す」「テンプレートの切り替え」「イメージの切り替え」「フォントの切り替え」など様々な動作を指定することが出来る。ここではHide(隠す)が指定されている。項目1709では項目1708の動作対象を指定するドロップダウンリストであり、「オブジェクト名」「テンプレート名」「イメージファイル名」「フォント名」など様々なアイテムを指定することが出来る。ここでは<Item Name>が指定されており、あるオブジェクトを指していることとする。
【0132】
つまり、このウィンドウダイアログ1201における、条件式を解釈すると「もしDBフィールド<Item>がEmpty(データが空)であるならば、オブジェクト<Item Name>をHideする(隠す)」という意味になる。
【0133】
図18はコンテナのプロパティを設定するUIダイアログの1例である。
【0134】
プロパティダイアログウィンドウは典型的にキーボード132やマウス133によりコンテナを選択し、マウスの右クリックメニューの選択、あるいはキーボードからのAltキー等により表示する。この実施例ではコンテナの原点を指定することに関連するものの設定に関してのみ、プロパティダイアログウィンドウ内に表示している。
【0135】
このプロパティダイアログウィンドウ1201は典型的にタイトルバー1202、ツールボタン1203、プロパティダイアログウィンドウのオープン、クローズを行うボタン1204、各種の情報をセットするエリア1205で構成されている。このプロパティダイアログウィンドウ1201には、大きく、コンテナのエッジ状態を設定する領域1801、図17で作成した条件式をコンテナに割り当てる領域1811、そしてコンテナの原点位置を選択する領域1821が配置されている。
【0136】
領域1801内には各辺のエッジ状態を変更するコントロールが配置されている。Top(上辺)1802、Bottom(下辺)1803、Right(右辺)1804、Left(左辺)1805にはチェックボックスが置かれ、このチェックボックスをチェックすると、その辺が可変となり、チェックを外すと固定となる。
【0137】
領域1811内には条件式を使用するかどうかのチェックボックス1812があり、これをチェックONにすると、下のドロップダウンリストボックス1813がEnableされる。このドロップダウンリストボックスには現在登録されている条件式をリストアップして表示する。ここでは“Condition1”が選択されている状態である。
【0138】
領域1821内にはコンテナの原点位置を指定するコントロールが配置されている。コンテナは典型的に9点の配置可能位置を持ち、それはTop−Left(左上)1822、Top−Center(上中央)1823、Top−Right(右上)1824、Middle−Left(左中央)1825、Middle−Center(中央)1826、Middle−Right(中央右)1827、Bottom−Left(左下)1828、Bottom−Center(下中央)1829、Bottom−Right(右下)1830、の9点のことである。原点は基本的にコンテナで1つしか持つことが出来ないため、それら9点はラジオボタンでグループ化されている。ここではTop−Left1822が選択されている。
【0139】
Hide条件によって非表示になる固定データの入ったオブジェクトでもこの原点の指定は必要となる。非表示になったときにどの位置にマークを集めるのかを決定しておかないと非表示になったときに、例えばリンクされている別のコンテナがその領域を使用することが出来なくなる。これについては後述の図21で説明する。
【0140】
さらに領域1821内には集約点(Share Base Point)の設定をするドロップダウンリストボックスが配置されている。このリストにはこのコンテナにリンクされているオブジェクト一覧が表示され、選択をすることが出来る。これはリンクされている複数のオブジェクトをHideする(非表示にする)時、指定された方のオブジェクトの原点にマークを集約させるために存在する。
【0141】
図23は図18のUIプロパティダイアログウィンドウ上での、原点を選択するときの操作フローを示している。
【0142】
まずコンテナを選択し(ステップ2302)、コンテナのプロパティダイアログを開く(ステップ2303)。そしてHide条件式をそのコンテナに割り当て(ステップ2304)、原点の指定を行う(ステップ2305)。次にHide条件が設定されたコンテナが別コンテナとリンクされている場合は(ステップ2306)、原点の集約点を設定する(ステップ2307)。もし判断2306でリンクされているコンテナが何もない場合は、集約点の設定は必要ない。
【0143】
図24は図18のシステムから見たUIプロパティダイアログウィンドウのコントロールフローである。
【0144】
まず選択されたコンテナを確定し(ステップ2402)、コンテナのプロパティ情報を取得する(ステップ2403)。コンテナのプロパティダイアログを表示して(ステップ2404)、そのコンテナにHide条件式が設定されたかどうかを判断する(ステップ2405)。割り当てられた場合は原点の設定UIコントロールを表示し(ステップ2406)、コンテナのプロパティより原点を自動計算し(ステップ2407)、計算された結果の原点をUIに表示する(ステップ2408)。割り当てがない場合はそのまま終了する。
【0145】
そしてHide条件が設定されたコンテナが別コンテナとリンクされているかどうかを判断し(ステップ2409)、リンクがある場合は原点の集約点の設定コントロールをUI表示する(ステップ2410)。もしリンクがない場合はそのまま終了する(ステップ2411)。
【0146】
図25は図24の原点の自動計算をする典型的な方法のフローを示している。
【0147】
原点の自動計算はエッジ状態によって行っていくが、エッジ状態はユーザが指定したものであり、そのコンテナに挿入されるコンテンツは基本的にその状態によって方向性を持ち、可変に動く。よって原点もその方向性に従って設定することで、ユーザに設定させなくても機能的に高い位置を選択することができる。これによりユーザが機能的に低い位置を選択するミスを未然に防ぐことが出来る。もしユーザが意図的に原点を指定したい場合は、自動計算後UIプロパティダイアログで指定することが出来る。
【0148】
自動計算ではまずコンテナエッジの情報を取得する(ステップ2502)。そして可変エッジがあるかどうかを判断し(ステップ2503)、ある場合はエッジ状態をチェックする(ステップ2504)。可変エッジがない場合はMiddle−Center(中央)を原点に設定する(ステップ2508)。
【0149】
エッジ状態をチェックした後(ステップ2504)、1辺のみが可変であった場合、可変辺の対辺中央点を原点に設定する(ステップ2506)。もし2辺が可変であった場合、その可変辺同士に接点があるかどうかを判断し(ステップ2505)、ある場合は、その接点の対角点を原点に設定する(ステップ2509)。もし接点がない場合はMiddle−Center(中央)を原点に設定する(ステップ2508)。もし3辺が可変であった場合は、固定辺の中央点を原点に設定する(ステップ2507)。もし4辺全てが可変であった場合は、Middle−Center(中央)を原点に設定する(ステップ2508)。
【0150】
図19は本発明が有効的に活用される概念的な1例を示している。
【0151】
図19は一般的なドキュメントにおける表を表している。この表はコンテナの集まりで作成されており、コンテナA(1901)、コンテナB(1903)、コンテナC(1905)、コンテナD(1907)、コンテナE(1902)、コンテナF(1904)、コンテナG(1906)、コンテナH(1908)の8つのコンテナから成り立っている。
【0152】
コンテナA〜Hにはそれぞれデータが入っており、コンテナA〜Dには固定データ、コンテナE〜Hにはデータベースから挿入される可変データが割り当てられている。さらにコンテナGには条件式1909が割り当てられており、この条件式は“もしコンテナGのデータが空だった場合、コンテナCを隠す”という設定がされている。よって本例のようにコンテナGに入るデータが空の場合は、コンテナCも表示から消し、コンテナDとコンテナHが非表示となったコンテナCとコンテナGの領域を埋めるために上方向へ移動し、結果として1911〜1916のような表になる。結果の表ではコンテナCとコンテナGが表から姿を消し、コンテナDとコンテナHがその領域に配置され、表としての完成度を低くしていないことが分かる。
【0153】
図20も本発明が有効的に活用される概念的な別の1例を示している。
【0154】
これは固定データであるObjectA(2001)に重なるように配置されているContainerB(2002)ようなレイアウトがされている状態である。またContainerBには条件式2013が割り当てられており、“もしContainerBのデータが空だった場合、ObjectAを隠す”という設定がされている。よって、ContainerBに空のデータが挿入された場合(2012)は、ContainerB自体もコンテナサイズを0として計算し、ObjectAはContainerBに割り当てられた条件式によって非表示になるため、結果としてObjectAとContainerBは2021、2022のように非表示の状態となる。
【0155】
もしこの場合にObjectAが表示されたままであるとすると、本来は必要のない表示がされてしまうこととなり、レイアウト上見栄えの良くないドキュメントになってしまう。このように非表示にするオブジェクトに関連付けられたオブジェクトは同時にレイアウトから消すことで、レイアウトの整合性を保ち、見栄えの良いドキュメントを作成することができる。
【0156】
図21は条件によってオブジェクトを非表示にし、その領域をその他のオブジェクトが使用する場合の実施例を示している。前述の通り、レイアウトを行う際はマークを使用するが、ここではそのマークを中心に説明をする。
【0157】
まずあるドキュメント上にコンテナA(2101)、オブジェクトB(2102)、コンテナC(2103)、そしてコンテナAとオブジェクトB間にはリンクD(2104)、コンテナCとオブジェクトB間にはリンクE(2105)が配置されている。
【0158】
コンテナAとコンテナCにはDBフィールドが関連付けられており、現在のレコードではそれぞれ“¥5,000”と“¥3,000”のデータが表示されている。それらのテキストはコンテナ内で右寄せに配置されている。オブジェクトBはシェイプの一種であり、固定データである。
【0159】
2111〜2115からはコンテナCに挿入されるデータが空だった場合のレイアウト方法について示している。コンテナCに入るデータは空のため、空白になっている。オブジェクトBはある条件式によって、コンテナCのデータが空の場合はオブジェクトBも非表示にするという設定がされているため、この場合、オブジェクトBも非表示にする。
【0160】
2121〜2127からはマークを使用したレイアウト方法の例を示している。ここでオブジェクトBでは原点が右上、コンテナCも原点が右上に設定されているとする。よってオブジェクトBの右上の点をマークF、コンテナCの右上の点をマークGと呼ぶとする。オブジェクトBは上記の条件式によってマークFにコンテナの各辺(各頂点のマーク)が集まる。またコンテナGもデータが空であるため、マークGに各辺が集まる。そうすると、オブジェクトB、コンテナCが双方共に右方向へ移動しようとする。
【0161】
そのため移動した分の領域をコンテナAが使用することが出来、コンテナAは右方向に拡大する。またHide条件が設定されたコンテナが別コンテナとリンクされているため、マークFとマークGは集約される。ここではコンテナCの原点が集約点と設定されていると仮定すると、オブジェクトBとコンテナCの全てのマークはマークGに集約される。
【0162】
その結果を示したのが2131〜2135の状態である。オブジェクトBとコンテナCのマークは全てマークGに集約されたため、右端までリンク2133が移動している。またそれによってコンテナAの右辺がマークH(2134)まで拡大している。またHide条件が設定されたコンテナが別コンテナとリンクされているため、マークHとマークGは集約される。ここではコンテナCの原点が集約点と設定されていると仮定すると、コンテナAとコンテナCの全てのマークはマークGに集約される。
【0163】
その結果を示したのが2141〜2143の状態である。オブジェクトBとコンテナC、そしてコンテナAの右上のマークが全てマークG(2143)に集約され、結果的にコンテナAはマークが移動した分の領域を使用することが出来る。
【0164】
図22は図21のレイアウトを実際のエディタウィンドウ上で行ったときの状態を示している。
【0165】
図4と同様にアプリケーションウィンドウ301とツールバー303があり、ドキュメントテンプレート709上にコンテナ2201、オブジェクト2203、コンテナ2205が存在する。またコンテナ2201とオブジェクト2203間にはリンク2202、オブジェクト2203とコンテナ2205間にはリンク2204が関連付けられている。
【0166】
図21のコンテナ2113のように、コンテナ2205に挿入されたデータが空だった場合、設定されている条件によってオブジェクト2203も非表示となり、オブジェクト2203とコンテナ2205、またコンテナ2201の右辺、の全てのマークがコンテナ2205の右上頂点に移動することによって、コンテナ2201は右方向に拡大可能となり、結果としてコンテナ2211のような状態になることができる。
【0167】
このようなレイアウトはコンテナ2201が定価、コンテナ2205が特価を示す場合が考えられるが、もし特価がない場合は定価だけを表示したい。その様な場合に定価の表示位置は右隅にもっていきたいことが考えられる。そのような場合に本発明が有効なことがこれにより分かる。
【0168】
図26は図22のドキュメント上におけるプレビュー表示のフローを示している。
【0169】
まずDBよりコンテンツをコンテナに挿入する(ステップ2602)。次に条件式を適用し(ステップ2603)、条件式の値とコンテンツの内容の一部、または全てが一致するか判断をする(ステップ2604)。もし一致した場合は条件式によってHideするコンテナを確定し(ステップ2605)、プロパティに設定された原点で0計算をする(ステップ2606)。そして計算結果をレイアウト表示する(ステップ2607)。もし判断2604で一致しない場合はそのままレイアウト計算を行い、レイアウト結果を表示する(2607ステップ)。
【0170】
図27は図26におけるステップ2606の計算手法についてのフローを述べている。
【0171】
まずコンテナで設定されている原点以外のマークを原点に移動させる(ステップ2702)。そしてHide条件で関連するコンテナ同士がリンクされているかを判断し(ステップ2703)、もしそうならばリンクのマークと関連する原点を集約点に集める(ステップ2704)。もしそうでないならば終了する(ステップ2705)。
【図面の簡単な説明】
【0172】
【図1A】本発明のコンピュータシステム構成図である。
【図1B】本発明の図1Aにおけるコンピュータモジュールの概略図である。
【図2】本発明の、図1Aのコンピュータシステムにエンジンサーバーを追加した構成図である。
【図3】本発明のメニューバー、ツールバー、ワークエリア、フローティングパレットを含む典型的なアプリケーションのメインウインドウを示す図である。
【図4】本発明のコンテナ間のリンク、アンカーやスライダーを持つ典型的なコンテナの一面をスクリーン、ツール、アイコンで示す図である。
【図5】本発明の典型的なコンテナルールを示す図である。
【図6】本発明のリンクを作成するフローを示す図である。
【図7】リンク作成時のUI図例を示す図である。
【図8】本発明におけるレイアウト計算の全体フローを示す図である。
【図9】本発明におけるレイアウト計算の詳細フローを示す図である。
【図10】本発明における図9のフローに対応するUI例を示す図である。
【図11】本発明のレイアウト計算時におけるコンテナの集合について説明した図である。
【図12】本発明の典型的な可変リンクによるコンテナ配置を示す図である。
【図13】本発明の図12の状態までの操作遷移を表す図である。
【図14】本発明の典型的なリンクの設定ダイアログウィンドウを示す図である。
【図15】本発明の固定リンクによるレイアウト結果を示す図である。
【図16】本発明の可変リンクによるレイアウト結果を示す図である。
【図17】本発明の条件式を設定するプロパティダイアログウィンドウを示す図である。
【図18】本発明における条件式の割り当てと、原点及び集約点の設定をするプロパティダイアログウィンドウを示す図である。
【図19】本発明におけるレイアウト動作の一例を示す図である。
【図20】本発明におけるレイアウト動作の別の一例を示す図である。
【図21】本発明におけるレイアウト動作の別の一例を示す図である。
【図22】本発明におけるエディットウィンドウ上での、プレビュー動作の一例を示す図である。
【図23】本発明における原点及び集約点の設定フローを示す図である。
【図24】本発明における原点及び集約点のコントロールフローを示す図である。
【図25】本発明における原点の自動計算のフローを示す図である。
【図26】本発明におけるプレビュー動作のフローを示す図である。
【図27】本発明における原点設定時のマークの移動方法についてのフローを示す図である。
【符号の説明】
【0173】
101 汎用コンピュータモジュール
103 ユーザインターフェース
105 レイアウトエンジン
119 データベース
121 レイアウトアプリケーションプログラム
132 キーボード

【特許請求の範囲】
【請求項1】
パーソナルコンピュータ等の情報処理装置からなるシステムであって、コンテナ領域の中にデータベースあるいはローカルに保存されたデータから、テキストおよびイメージ等のデータを挿入してドキュメントを作成する際に、プレビュー時にテキストおよびイメージのサイズにあわせて、コンテナのサイズを変更することが可能であり、さらにコンテナ間の関連を設定することにより、その間隔をある程度保って変更することが可能である自動レイアウトシステムにおいて、
コンテナを作成する手段と、
リンクを作成する手段と、データの量によってコンテナのサイズ、位置を変更し最適なレイアウトを計算する手段と、
オブジェクトに割り付けられた条件によって自分以外のオブジェクトを非表示にする条件式を作成する手段と、
オブジェクトのプロパティでオブジェクト非表示時の原点を指定する手段を有することを特徴とする自動レイアウトシステム。
【請求項2】
請求項1記載の自動レイアウトシステムにおいて、オブジェクト非表示時の原点を自動的に決定する手段を有することを特徴とする自動レイアウトシステム。
【請求項3】
請求項1記載の自動レイアウトシステムにおいて、原点が設定された複数のコンテナがリンクされている場合に、その集約点を設定する手段を有することを特徴とする自動レイアウトシステム。
【請求項4】
請求項1記載の自動レイアウトシステムにおいて、非表示にしたオブジェクトの領域を他のオブジェクトが使用できる手段を有することを特徴とする自動レイアウトシステム。
【請求項5】
請求項1記載の自動レイアウトシステムにおいて、コンテナ間に張られたリンクの長さを一定量あるいは一定比率でサイズ変更できる手段を有することを特徴とする自動レイアウトシステム。
【請求項6】
請求項1記載の自動レイアウトシステムにおいて、データベースのレコードを選択/変更する手段と各レコード時のレイアウトのプレビューを表示する手段を有することを特徴とする自動レイアウトシステム。

【図1A】
image rotate

【図1B】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate


【公開番号】特開2007−48198(P2007−48198A)
【公開日】平成19年2月22日(2007.2.22)
【国際特許分類】
【出願番号】特願2005−234395(P2005−234395)
【出願日】平成17年8月12日(2005.8.12)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Linux
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】