(57)【特許請求の範囲】
【請求項１】
図形編集システムにおいて、
ユーザからの入力を受け取る入力装置、
処理中の文書を表示する出力装置、
前記文書中に表示されており複数個の図形要素と一対の図形要素間の空間関係を制約する少なくとも１個のリンクとを包含している図形の表示状態を制約する制約エンジン、
前記制約エンジンに基づいて図形編集操作を制御する中央処理装置、
前記中央処理装置に接続されており前記文書及び前記制約エンジンを格納している記憶装置、
を有しており、
前記制約エンジンはリンクの制約条件の種類に応じてリンクの優先順位を定めた複数個のリストからなる優先順位リストを有しており、前記入力に基づいて前記図形要素の内の一つの図形要素が編集により修正された場合に、前記中央処理装置が、前記優先順位リストを参照して、前記修正された図形要素に連結されている各リンクを前記優先順位リストにおける対応する一つのリストへ割り当て，前記割り当てられたリストの優先順位に従った順番で前記リンクに連結されている一対の図形要素を修正することを特徴とする図形編集システム。
【請求項２】
請求項１において、前記リンクが、分布リンクと、位置合わせリンクと、サイズリンクと、間隔維持リンクとの内の少なくとも一つを包含していることを特徴とする図形編集システム。
【請求項３】
請求項１又は２において、前記リンクが、単方向リンクか又は双方向リンクかのいずれかに設定されており、
前記単方向リンクは、前記リンクで接続されている一対の図形要素の一方を主要素に設定すると共に他方を従要素に設定し、前記主要素が変化するとそれに従って前記従要素も変化するが、前記従要素は前記リンクに設定されている制約条件に違反して変化することが阻止され、一方
前記双方向リンクは、前記リンクで接続されている一対の図形要素のいずれか一方が変化すると他方の図形要素がその変化を反映するように変化する、
ことを特徴とする図形編集システム。
【請求項４】
請求項１乃至３の内のいずれか１項において、前記リンクを選択的に前記出力装置上に表示させることが可能であることを特徴とする図形編集システム。
【請求項５】
請求項１において、一対の図形要素における図形要素の一つが非印刷図形要素であることを特徴とする図形編集システム。
【請求項６】
請求項１において、前記リンクがカラーリンクと様相属性リンクとの内の少なくとも一つを包含していることを特徴とする図形編集システム。
【請求項７】
請求項１において、リンクの形態で予め設定されている少なくとも一つの制約条件を維持する場合に、前記図形要素を所定の順序に配置させることを特徴とする図形編集システム。
【請求項８】
請求項７において、前記図形要素を所定の順序に配置させる場合に、前記図形要素の順序が変えられないように前記図形要素の順序をロックさせることを特徴とする図形編集システム。
【請求項９】
請求項１において、一対の図形要素間にリンクの形態で予め設定されている制約条件が第１方向における移動に関する制約条件を包含しており、且つ前記一対の図形要素は第２方向における移動によって互いに独立的に編集することが可能であることを特徴とする図形編集システム。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、一般にコンピュータ作図プログラムに関し、さらに詳しくは、表示および／または印刷される図形要素間の図形位置合せおよび分布基準を指定するシステムおよび方法に関する。
【０００２】
【従来の技術】
現在利用可能な多くのデスクトップパブリッシングやその他のコンピュータプログラムは、利用者が文書内で図形要素を描いたり操作することができるようになっている。情報提供者が広範囲に及ぶしばしば詳細な事実や数字、その他の概念を伝えようとするときに、組織的図表や、データ表、棒グラフ、その他の図形的補助手段を利用することが増え続けているので、図形要素を作図および操作する能力はますます重要になってきた。図形要素を作図および操作する能力を備えている現在利用可能なプログラムの例として、シリコン・ビーチ・ソフトウェア社のＳｕｐｅｒＰａｉｎｔ  （Ｒ）、クラリス社のＭａｃＤｒａｗＴＭ、デネバ社のＣａｎｖａｓＴＭ、およびアルダス社のＰａｇｅＭａｋｅｒ  （Ｒ）などがある。
【０００３】
作図および操作機能を有するプログラムの利用者の主な目的は、図形要素をできるだけ効率的に入力、操作、および提示（スクリーン上に、または出力装置を介して）することである。現在利用可能なプログラムは一般に、図形要素を相互に対して正確に位置合せしたり、間隔を置いて配置することを可能にする位置合せ機能を含む。しかし、位置合せコマンドが実行された後で、利用者が図形要素を合せ位置から自由に移動することができる。図形要素の位置合せや間隔配置を編集中に維持したければ、それを確実にするために、利用者が位置合せコマンドを絶えず適用する必要があるので、編集作業中にかなりの不利益をもたらす。そこで、図形要素間の永続的関係を設定し、文書を印刷する前に図形要素やその他の要素をさらに編集したり修正しても、選択された図形要素を位置合せおよび間隔配置した状態に維持する方法があれば、有利である。
【０００４】
【発明の概要】
本発明は、図形環境で要素の空間関係を指定する方法である。この方法は、（ａ）分布フレームを作成する段階と、（ｂ）分布フレームによって連結される１組の要素を指定する段階と、（ｃ）その組の要素と分布フレームの間の空間関係を決定する位置合せおよび分布の基準を選択する段階とを含む。この方法により、各要素間に指定された空間関係が要素の修正および編集作業中も維持される。本発明の別の態様に従って、位置合せおよび分布基準の選択方法は、さらに、縦軸に沿った要素の組の空間関係を選択する段階と、横軸に沿った要素の組の空間関係を選択する段階とを含む。
【０００５】
本発明のさらに別の態様に従って、この方法はさらに、その組の要素に適合するように分布フレームの大きさを決める、サイズ変更オプションを選択する段階を含む。選択できる他のサイズ変更オプションとして、分布フレームに適合するようにその組の中の要素の大きさを決定する機能がある。サイズ変更オプションは、縦横どちらの方向にも実現することができる。さらにスペーシング基準を要素間に指定することができる。本発明の別の特徴は、分布フレーム内の要素の順序をフレーム内で並べ変えることができないようにロックできることである。
【０００６】
本発明のさらに別の態様に従って、図形要素間の制約を解く方法は、（ａ）制約によって対として結合される要素間のリンクを生成する段階と、（ｂ）制約が現在満たされていないリンクのリストを作成する段階と、（ｃ）この汚染リスト内の各リンクに、制約が最初に解かれるリンクを示す優先順位を割り当てる段階と、（ｄ）リンクに取り付けられる図形要素の１つの属性を変更することによって、優先順位が最も高いリンクに接続された図形要素の中の１つの要素の属性を変更することによって、そのリンクに関連する制約を解く段階とを含む。
【０００７】
【実施例】
本発明の上述の特徴および利点は、添付の図面を参照しながら、以下の詳細な説明を読むことによって、いっそうよく理解されるようになるであろう。図形要素間の位置合せおよび分布基準を指定する、図形応用プログラム２０を、概略的に図１に示す。この図形応用プログラム２０は、オペレーティングシステム２４によって制御される中央処理装置（ＣＰＵ）２２で実行される。ＣＰＵには記憶装置２６が接続されており、これは一般に、例えばランダムアクセスメモリ（ＲＡＭ）、読出し専用メモリ（ＲＯＭ）、およびハードドライブやフロッピー（登録商標）ディスクや磁気テープなどの磁気記憶媒体から成る。図形応用プログラム２０の利点および機能性は様々な種類のコンピュータで実現することができるので、ＣＰＵ２２は、パーソナルコンピュータ、マイクロコンピュータ、あるいはメインフレーム（１名以上の利用者を持つ）の内部に収容することができる。この説明を不必要に複雑にするのを避けるために、明細書および図面では、一般にパソコンおよびそのオペレーティングシステムを取り上げる。これに関して、本発明に従って作成された図形応用プログラムは、例えばマッキントッシュＴＭ、ＩＢＭＴＭ、およびＩＢＭ互換性のパーソナルコンピュータで実行することができる。ＩＭＢおよびＩＢＭ互換性パーソナルコンピュータを使用する場合、オペレーティングシステム２４は、マイクロソフト・ウィンドウズ（登録商標）などのウィンドウ環境を利用することができる。
【０００８】
図形応用プログラム２０は、アプリケーションシェル３０を介してオペレーティングシステム２４と対話するユーザインタフェース２８を含む。ユーザインタフェース２８とオペレーティングシステム２４の間には、文書エンジン３２、図形エンジン３４、および制約エンジン３６が結合されている。「エンジン」というソフトウェアプログラムは通常、データをどのように管理および操作するかを決定するプログラム部分と定義される。文書エンジン３２は、文書内の全ての図形要素のリストが含まれる表示リストを管理する。また、図形エンジン３４は、各図形要素の１組の「値」を含む要素データベースを保管し、絶えず更新する。図形要素の値は、形状、大きさ、色などの属性を決定する。本明細書および請求の範囲全体を通じて、「図形要素」という用語は、図形応用プログラムによって操作することのできる表示オブジェクトおよびその他のオブジェクト、例えば非印刷オブジェクトを指すために使用する。図形エンジン３４は、文書エンジンの要素データベース内に保存された値を利用して、ブラウン管またはその他の出力装置に図形要素を描画または表示する。文書エンジン３２および図形エンジン３４は、当業界で周知の技術を用いて実現することができるので、これらのエンジンの詳細は、ここでは説明しない。
【０００９】
図２は、図形応用プログラム２０を用いて作成することができる図形要素の幾つかの部分集合を示す。矩形３８、円４０、線４２、および分布フレーム４４が含まれる。矩形、円、および線は全て印刷可能な表示オブジェクトである。分布フレーム４４は印刷不能な図形要素であり、形状として望ましくは矩形の境界によって囲まれる領域から成る。分布フレームは、利用者が文書を編集するときにだけ表示され、文書を出力装置に送信するときには表示されないので、非印刷図形要素とみなされる。分布フレーム内に配置された図形要素は、そのフレームに設定された位置合わせおよび分布基準によって支配される。
【００１０】
再び図１を参照すると、制約エンジン３６は「リンク」を利用して、図形要素間の空間関係、つまり制約条件を指定する。図形要素間の空間関係は様々な形を取ることができ、ユーザインタフェースを介して利用者がこれを指定する。リンクは一般的に利用者には見えないが、図形要素の間のメッセージキャリアとして機能する。しかし、図形要素間に設定されたリンクを利用者が完全に理解し制御することができるように、リンクは表示したり印刷することができる。リンクは図形要素間の永続性を提供し、リンクによって２つの図形要素に課せられた制約関係は、要素の編集中もずっと維持されなければならない。
【００１１】
図３は、図形応用プログラムで利用可能な様々なリンクの中から、４つの代表例的リンクの部分集合を示す。この部分集合は、左から右の順に、分布リンク４６、位置合せリンク４８、サイズリンク５０、および間隔維持リンク５２を含む。位置合せリンク４８は、２つの図形要素を相互に対してどのように位置合せするかを指定する。例えば、２つの要素の中心が垂直方向に整列するように、位置合せリンクを用いることができる。サイズリンク５０は、１つの図形要素のサイズが変化すると、リンクされた図形要素がそれにならうように、サイズ関係を設定するために使用することができる。間隔維持リンク５２は、２つの図形要素間に特定の距離を維持するように要求する制約条件であるが、この間隔距離以外では、要素は相互に対し自由に移動することができる。
【００１２】
図４ないし図７は、図形応用プログラム２０の制約機能の幾つかを示す、文書内の例示的３要素空間配列を表わす。最初に、Ｎ個の要素を１つに結合するために必要なリンクの最小数が一般にＮ−１であるが、常にそれにより多い数のリンクを利用することができ、それによって対の図形要素の間に追加の制約関係が付加されることを、認識しなければならない。
【００１３】
図４では、１組の３つの図形要素（三角形５８、矩形６０、および長円形６２）を、３つのリンク５６ａ、５６ｂ、および５６ｃで指定された空間関係を介して１つに結合している。各リンク５６は、図形要素の間に伸長する破線の矩形および線で表わされる。リンク５６ａは、三角形５８と矩形６０の中心が垂直方向に整列し続けることを要求する制約によって、これらの図形要素を結合する。したがって、文書の編集作業中に、三角形５８を水平方向に移動すると、矩形６０がその後を追って移動し、逆の場合も同じである。しかし、どちらかの図形要素が垂直方向に移動しても、中心は縦軸に沿って整列し続けるので、他方の要素に影響は無い。リンク５６ｂおよび５６ｃは、矩形６０を長円形６２に結合する。リンク５６ｂによって提供される制約は、矩形および長円形の境界を成すフレームの底部を相互に整列しつづけるというものである。リンク５６ｃによって課せられる制約条件は、長円形６２の高さを矩形６０の高さと同一に維持するというものである。
【００１４】
図５ないし図７は、図４のリンクによって設定された制約条件を満足する要素５４の空間構成を示す。図５を参照すると、（ａ）三角形５８と矩形６０の中心が、線ｌ１で示すように整列しており、（ｂ）矩形と長円形６２のそれぞれの境界を成すフレームの底部が、線ｌ２で示すように整列しており、（ｃ）長円形の高さｈ１と矩形の高さが同一であるということで、リンク５６の制約条件が全部満たされていることが分かる。
【００１５】
図６では、利用者による２つの変更を想定している。第１に、矩形６０の高さがｈ１からｈ２へ増加した。リンク５６ｃによって課せられる制約の結果、長円形６２の高さはその増加を「追跡」し、したがってこれもｈ２になる。第２に、利用者は三角形５８を、線Ｉ３で示すように、矩形から離れるように移動させた。この移動は、垂直方向の制約条件には影響しないので、この移動は他の図形要素に対し影響しない。
【００１６】
図７は、２つの図形要素５８および６２が、他の要素に影響しないように移動した場合を示す。第１に、三角形５８は矩形６０の下から矩形の上の位置へ移動した。第２に、長円形６２の形状が、長円形の短軸（軸ａ１）であったものを短軸が長軸になるように水平方向に伸長することによって変化した。長円形の高さｈ１は、リンク５６ｃを単方向リンク（後述）であると想定して、リンク５６ｃによって作成された禁止条件のために維持される。
【００１７】
図５ないし図７で指定された変化全体を通じて、図形要素の位置合せは、編集作業中もリンク５６によって、（従前の作図プログラムのように）位置合せコマンドを絶えず適用することを必要とせずに、維持される。つまり、例示したそれぞれの変更は一般的な従来の作図プログラムでも利用可能であるが、変更を実施するために必要なプロセスはずっと複雑である。例えば、図６で行ったように、矩形６０の高さを上の方向に伸長し、長円形６２の長さを対応する方法で変更させるだけではなく、第１に図形要素の１つまたは残りを所望の高さに設定しなければならず、第２に非設定要素を同じ高さに設定しなければならず、第３に、２つの要素の底がまだ整列していることを確保するために、再位置合せコマンドを実行しなければならない。同様に、要素の対を相互に近づけるかあるいは遠ざけるように移動する場合でも、例えば、最初に（ａ）距離を変更する段階と、次に（ｂ）図形要素を再位置合せする段階のように、２段階以上が必要になる。当業者には容易に理解されるように、文書に追加の図形要素が付加されると、編集機能を実行するために必要な段階の数および再位置合せコマンドの回数はますます増えていく。
【００１８】
デスクトップパブリッシングや図３には示さなかったその他の図形関係タスクで利用者を補助するために利用することのできる、その他の多数の制約条件が、本発明によって提供される。より多くの便利な制約条件をメニュー項目として組み込むことが望ましい。本発明の実際の実施例では、本発明による多数の制約関係を、図８に示すリンクプルダウンメニュー６６に実現した。
【００１９】
本発明を理解する補助として、選択されたメニュー項目について簡単に説明する。フレーム６８の位置合せコマンドは、利用者によって位置合せされた２つの図形要素の空間関係に基づいて、位置合せオプションを提供する、図形応用プログラムの１つの機能である。位置合せの１例として、第２図形要素の内部に配置した第１図形要素を、第２図形要素で中心位置合せする場合を考える。オプション７０の自動位置合せ機能は、作図および編集作業中に、図形要素を「すばやく動かして」、利用者の所望する知覚される位置合せ状態にするように、図形応用プログラムに指示する。例えば、利用者が１つの図形要素の辺縁を別の図形要素の辺縁と垂直に近い方向に整列するように移動させた場合、図形応用プログラムは、辺縁がプログラムされた許容差の範囲内である限り、自動的に辺縁を垂直に整列させる。位置合せ維持コマンド７１は、図形要素の間のリンクを形成するために、自動位置合せ機能により位置合せされたオブジェクトを利用者に「ロック」させ、それによって編集中も維持される永続的制約関係を形成する。
【００２０】
リンク消去コマンド７２は、設定されたリンクを除去する手段を提供する。整合コマンド７３は、例えば要素の幅、高さ、サイズ、またはテキストを一致させることによって、２つ以上の図形要素の間にリンクを設定する方法である。リンク表示コマンド７４は、１組の図形要素の間に形成されたリンクを利用者に見せ、その上で編集させるコマンドである。図９（後述）は、図４ないし図７に示した図形要素の組にこのコマンドを実行したときに、利用者が実際に見る表示画面を示す。
【００２１】
図９では、図４ないし図７の三角形５８、矩形６０、および長円形６２をそれぞれアイコン７６、７８、および８０で表す。リンク５６ａは、中心が縦方向に整列した２つの方形を含むアイコンで表す。リンク５６ｂのアイコンは、それぞれの底縁部に沿って整列した２つの方形を含む。リンク５６ｃのアイコンは、２つの図形要素の間に「数値」関係が存在し、１つの要素のサイズがもう１つの要素のサイズに影響するかあるいはこれを支配することを、利用者に表示する。このように、図形応用プログラムは簡潔な方法（アイコンの使用）により、図形要素間に設定されたリンクと対話する。さらに、マウスを使用すると、リンクの属性を変更するには、単にリンクを選択（つまりダブルクリック）して対話ボックス（図示せず）を呼び出し、新しい制約基準を入力するだけでよい。別な方法として、適切なキーボードコマンドを使用することもできる。
【００２２】
図形応用プログラムの各リンクは、単方向リンクまたは双方向リンクのいずれかである。単方向リンクは、リンクに接続された第１「主」要素の値または位置の編集が、リンクに接続された第２「従」要素の値または位置をそれぞれ支配するように、２つの図形要素の間の制約を設定する。したがって、リンクされた属性（制約）に影響を及ぼす主要素が変化すると、従要素も変化する。リンクされた属性に影響するような方法で、従要素を変化しようとすることは禁止される。単方向リンクの一例は、図４に示したリンク５６ｃである。リンク５６ｃは、第１要素（矩形６０）が第２要素（長円形６２）の高さを支配するように要求する。したがって、編集作業中に、矩形６０の高さが利用者によって変更されると、長円形６２の高さはその変更に追随する。しかし、長円形６２の高さを変更する試みは、制約によって阻止される。
【００２３】
双方向リンクとは、２つの要素の空間関係が相互に依存し合うリンクである。つまり、関係のある要素のどちらかが変化すると、もう一方の要素がその変化を反映するように変化する。要素の相互依存性は、リンクによって設定される特定の制約に基づく。図４では、リンク５６ａおよび５６ｂが関係する図形要素のどちらからも独立しているので、これらのリンクは両方とも、双方向リンクの例である。リンク５６ａについて考えると、要素の中心を整列するという制約を満足するために、三角形が水平方向に移動すると矩形６０も同方向に移動し、逆の場合も同じである。反対に、三角形５８を垂直方向に移動しても、三角形５８の垂直移動は要素の中心の位置合わせに影響を及ぼさないので、矩形６０の位置は変わらない。つまり、垂直方向には制約が存在せず、水平方向のみに存在する。
【００２４】
以上の説明は、対になった図形要素間のリンク設定についてであった。大グループの図形要素を要素−リンク−要素レベルで相互接続することができるが、グループ内の各リンクを個別に編集しなければならない場合、このレベルでリンクされた要素グループに複数の変更を行うことは大きな負担でなる。これを避けるために、図形応用プログラム２０は、単独の非印刷図形要素の特徴を変更することによって、多数の図形要素の空間関係を操作することのできるユーザインタフェースツールを含む。この図形要素が分布フレームであり、これを図２に関連させながら簡単に説明する。
【００２５】
分布フレームは、図形要素の位置合せおよび分布が分布フレームによって制御されるように、フレーム内の図形要素をリンクするために使用することのできる矩形の領域を定義し、これにより、利用者は要素−リンク−要素レベルの図形要素を取り扱う必要が無くなる。分布フレームのサイズは利用者によって選択され、また、いつでも編集することができる。フレームを先に形成し、その後で図形要素をそれに追加するか、あるいは既存の図形要素を取り囲むようにフレームを形成することができる。分布フレームを１組の図形要素の周囲に形成する場合には、フレームに指定された位置合せおよび分布関係を満足するように、要素はフレーム内でその現在の位置にできるだけ近くに配置する。
【００２６】
図１０は、分布フレーム内に取り囲まれた図形要素の空間基準を設定するために使用される、図形応用プログラムの実際の実施例における位置合せ／分布フレーム（ＡＤＦ）対話ボックス８４である。ＡＤＦ対話ボックス８４は、図形応用プログラムで利用可能な、例示的「位置合せ」および「分布」関係を示す。位置合せ（Ａｌｉｇｎ）とは、１組の要素をどのように配列または順序付けるかを指定する１組の要素間の図形関係を表す。分布（Ｄｉｓｔｒｉｂｕｔｅ）とは、１組の要素を最終的に間隔を置いて配置するように指定する１組の要素間の図形関係を表す。
【００２７】
ＡＤＦ対話ボックス８４には、分布フレーム内の図形要素間の空間関係を指定するために、８つの水平基準がある。これらの基準は、水平空白アイコン８５、上列の水平位置合わせアイコン８６、および下列の水平分布アイコン８７を含むアイコンによって示される。さらに、垂直空白アイコン８８、１列の垂直位置合せアイコン８９、および１列の垂直分布アイコン９０を含む８個の垂直基準もある。ＡＤＦ対話ボックス内のプレビューボックス９１は、位置合せおよび分布の選択の効果を示す。表１に、ＡＤＦ対話ボックス８４内にあるアイコンの説明を提示する。
【００２８】
【表１】
0003634323.tif 000002
【００２９】
また、ＡＤＦ対話ボックスには、垂直サイズ変更オプション９２および水平サイズ変更オプション９３も含まれる。各サイズ変更オプション９２および９３は、相互に排他的な３つのオプション、つまり（１）無変更（その方向のサイズ変更を希望しない）、（２）オブジェクト（図形要素）に適合するためのフレームサイズ変更機能、および（３）フレームに適合するためのオブジェクトサイズ変更機能がある。どのサイズ変更オプションでも、間隔を均一にするために、フレーム内の図形要素間の間隔距離を入力することができる。サイズ変更オプションは、多くの観点から便利である。例えば、利用者は図形要素を配置する領域を予め設定しておく場合がしばしばある。この場合、利用者は分布フレームをその事前設定領域に等しくなるように調整しておき、オブジェクトサイズ変更コマンドを用いて、図形要素をその領域に満たすことができる。ＡＤＦ対話ボックス８４にはまた、順序付けロックオプション９４が含まれ、これが起動すると、図形要素の順序変更ができなくなる。
【００３０】
図１１ないし図１３は、本発明に係る分布フレーム９６を用いて作成された棒グラフを示す。分布フレームには、１月から６月までの期間の異なる月をそれぞれ表す６つの矩形要素９７が含まれる。図１１では、オブジェクトに適合するためのフレームサイズ変更オプション（水平方向）が選択され、図形要素間に所定の間隔、例えば、（４分の１インチ）が設けてられている。
【００３１】
空間関係基準の場合と同様に、サイズ変更オプションは、文書編集作業中もそれが維持され、図形要素や分布フレームが自動的に調整されるという点で、永続的である。図１２は、この概念を示している。特に、図１２では、５月および６月が削除されている。これに応答して、図形応用プログラムは、残りの図形要素だけを取り囲むように、分布フレーム９６を自動的にサイズ変更した。図１３では、利用者が、最初は図１１の分布フレーム９６の状態から、今度だけフレームに適合するためのオブジェクトサイズ変更オプション（水平方向）を選択した場合を想定している。その後、５月と６月を再び削除する。その結果、図形応用プログラムは、分布フレームを（水平方向に）満たすように、自動的に矩形要素９７のサイズを変更する。事前に決定された図形要素間の間隔は変化しないことに注目されたい。
【００３２】
分布フレームは多数の内在的な特徴を有しており、それがこれを図形環境で極めて有利なものにする。分布フレームの１つの特徴は、利用者が図形要素間の位置合せ／分布関係を変更することが非常に簡単であるということである。例えば、ある実施例では、分布フレーム上で（マウスを用いて）ダブルクリックするだけで、図１０に示すＡＤＦ対話ボックスが表示され、空間関係を定義し直すオプションが提示される。また、分布フレームを移動またはサイズ変更すると、フレーム内の全ての要素が、分布フレームに対する要素の関係を維持するように、移動またはサイズ変更する。分布フレームの別の特徴は、利用者が、フレーム上の１つのオブジェクトでクリックし、新しい位置へそれをドラッグするだけで、図形要素の分布順序を高速で変更することができることである。ドラッグされた要素の新しい位置のために場所を明けるために、全ての要素が再配列される。この機能は、順序ロックオプションを選択することによって、作動不能にすることができる。
【００３３】
再び図１を参照すると、制約エンジン３６は、文書内で様々なリンクおよび／または分布フレームを設定し、操作することによって、図形要素間の空間関係を解く手段を提供する。図形応用プログラム２０で使用される制約エンジンは、オブジェクト指向プログラミング言語を用いて実現することが望ましい。オブジェクト指向プログラミング言語は、オブジェクトクラスを効率的に定義し、これらのオブジェクトを使用して、アプリケーションの開発・実行・保守の効率を改善することができる。１つの実施例では、制約エンジンは多数のＣ＋＋クラスから成るが、他のプログラミング言語を使用して制約エンジンを実現することもできる。
【００３４】
制約エンジンを構成するオブジェクトのクラスは主として３種類ある。これらは、表２の最上部にリストされており、（１）ソルバクラス、（２）リンククラス、および（３）図形要素クラスを含む。各クラスは、クラス属性および制約エンジンの残りのクラスと対話するために用いられる方法を含む。表２に、各クラスの属性および方法を、対応するクラスの見出しの下にリストする。
【００３５】
【表２】
0003634323.tif 000003
【００３６】
以上の説明を理解するための一助として、表２の用語に関し、次のように定義する。
【００３７】
汚染リスト：  制約を満足していない全てのリンクのリスト。図形要素を追加、削除、移動、またはその他の方法で編集するたびに、汚染リストが作成される。図１４を参照のこと。
【００３８】
優先順位リスト：  汚染リスト内で最初に満足させるべきリンクをソルバに示す４つのリスト（リスト１−４）の集合。リスト１のリンクは優先順位が最も高く、最初に解決すべきである。リスト４のリンクは、リスト１−３に解決すべき残りのリンクが無くなった後で初めて解決すべきである。
【００３９】
単方向リンク：  特定の図形要素を変化させるために、リンクによって課せられる制約を必ず解決しなければならないリンク。例えばＡ→Ｂリンクは、制約を満足させるために、必ずノードＢを変化させる。
【００４０】
双方向リンク：  リンクによって課せられる制約を満足するために、どちらかのノードを変化させればよいリンク。
【００４１】
ソースノード：図形応用プログラム内でリンク解決によって変更された図形要素とは異なり、利用者の編集操作によって変更された図形要素。
【００４２】
現在の距離：  どのリンクを最初に解決すべきかを決定するのに役立つ、解決法で使用される変数。
【００４３】
解決（Ｓｏｌｖｅ）：  （ａ）どのリンクを解決する必要があるかを決定し、（ｂ）解決方向を決定し、かつ（ｃ）リンク解決法を呼び出す方法。
【００４４】
フラグ：  各リンクは、リンク方向を決定するために用いられるソースＡおよびソースＢと表示されたフラグを各端部に有する。リンクを汚染リストに追加する原因がＡ（Ｂ）の図形要素にある場合に、ソースＡ（Ｂ）フラグがセットされる。
【００４５】
リンク方向：  制約を満足させるために、リンクに接続されたどちらの図形要素を変化させることができるかを指定する。
【００４６】
解決方向：  リンクの制約を指定するために、どちらの図形要素を変化させるべきかを指定する。この方向は、解決法（Ｓｏｌｖｅ  ｍｅｔｈｏｄ）によって設定される。
【００４７】
リンク解決：  汚染リスト上のリンクに接続された図形要素の１つを、リンクに結合された制約が満たされるように変化させる方法。
【００４８】
リンク汚染設定：  リンクを汚染リストに追加する方法。この方法は、リンクの属性を編集するときに呼び出される。
【００４９】
要素距離：  ソースノードを基点とする図形要素の距離。
【００５０】
値設定：  値設定は２つの機能を有する。第１に、これは図形要素の属性の値を変更する方向である。第２に、これは編集された図形要素に結合されたリンクを汚染リストに追加する要素汚染設定法を呼び出す。
【００５１】
値獲得：  図形要素の属性の値を見つける方法である。設定（Ｓｅｔ）法および獲得（Ｇｅｔ）法は、リンク解決法が図形要素の内部に対して有する唯一のアクセスである。分離により、応用プログラムは図形要素の実現を制約エンジンから隠蔽することができる。
【００５２】
要素汚染設定：  図形要素が編集された結果、その図形要素に結合されたリンクによって課せられる制約が有効でなくなったことを示す方法。
【００５３】
図形応用プログラムは、文書内の図形要素に対して行われた変更を連続的に検査し識別する大域ルーチンである。一般に、大域ルーチンの流れは次の通りである。（ａ）図形要素に対し編集が行われ、その中で要素汚染設定が呼び出され、それにより、編集された図形要素に連結されたリンクが汚染リストに追加される。（ｂ）解決法（Ｓｏｌｖｅ  ｍｅｔｈｏｄ）が呼び出される。（ｃ）解決（Ｓｏｌｖｅ）によって実現した変化および解決によって呼び出された方法を反映するように、スクリーンが更新される。
【００５４】
制約エンジンによって使用されるデータ構造を図１４に示す。４つの図形要素１００がリンク１０２によって１つに結合されている状態が示されている。一番右側の図形要素１００ａは何らかの点で利用者によって、例えば図形要素を移動するか大きさを変更することによって編集されることが想定されている。編集の結果、リンク１０２ａおよび１０２ｂが要素汚染設定法によって汚染リスト１０４に追加される。リンクが汚染リストに追加された後、大域ルーチンによってソルバクラス１０６の解決法が呼び出される。図形応用プログラムの解決法サブルーチンについては流れ図（図１５）に図示し、以下で説明する。
【００５５】
ブロック１１０で、汚染リストおよび優先順位リストが空か否かを決定するために試験が行われる。リストが空ならば、解決法サブルーチンを通過する必要はない。その結果、ブロック１１２で現在の距離の変数がゼロに設定され、サブルーチンは終了する。汚染リストおよび優先順位リストが空でなければ、サブルーチンはブロック１１４へ進み、現在の距離が増分される。ブロック１１５で、汚染リストが空か否かを決定する試験が行われる。空でなければ、ブロック１１８，１２０および１２２によって形成されるループが開始される。ループは（ａ）汚染リスト内のリンクに４つの優先順位リストの１つに割り当て、（ｂ）リンクに解決方向を割り当て（図１６）、その後（ｃ）割り当てられたリンクを汚染リストから除去する。リンクは、表２に示した定義に従って、優先順位リストに割り当てられる。単方向リンクは常にリスト１に割り当てられる。双方向リンクは、リンクに結合された２つの図形要素の要素の距離に基づいて、残りの３つのリストに割り当てられる。要素の距離は、利用者によって編集された図形要素であるソースノードを基点にして測定される。汚染リストの全てのリンクが４つの優先順位リストの１つに配置されるまで、試験ブロック１１６およびブロック１１８−１２２から成るループ内でパスが行われる。その結果、汚染リストは空になる。
【００５６】
ループ内を必要な回数のパスが行われた後、ブロック１２６で、現在の優先順位リストが空か否かを決定する試験が行われる。空でなければ、ブロック１３０でリンク解決サブルーチンにパスが行われる。リンク解決サブルーチンについては図１７に示し、以下で説明する。リンク解決サブルーチンを通過した後、ブロック１３２で、解決法プログラムが制約を解決するのに時間が掛りすぎるか否かを決定する試験が行われる。ブロック１３２は、制約が非可解である場合や、あるいは解がおそらく数画素ずれており、単に解くのに時間が掛りすぎる場合があるので、ブロック１３２が含まれている。割り当てられた時間が過ぎると、プログラムはブロック１２８に戻る。割り当てられた時間が切れると、優先順位リスト内に残ったリンクは、ブロック１３４の汚染リストに戻される。次に、ブロック１３６で現在の距離がゼロに設定される。そのあと、プログラムは解決法サブルーチンを終了する。
【００５７】
図１６は、解決法サブルーチンの割当て解決方向部（ブロック１２０）について詳細に示す。ブロック１４０で、リンクが単方向リンクか否かを決定する試験が行われる。リンクが単方向リンクであるならば、ブロック１４２でそのリンクの方向に解決方向が設定され、プログラムはブロック１２２へ移動する（図１５）。単方向リンクでなければ、リンクのソースＡを設定し、ソースＢを設定しないか否かの決定が行われる（ブロック１４４）。ソースＡが設定され、ソースＢが設定されなければ、ブロック１４６で解決方向はＡ→Ｂと設定され、プログラムはブロック１２２へ移動する。そうでなければ、ソースＢを設定し、ソースＡを設定しないか否かの決定が行われる。ソースＢが設定され、ソースＡが設定されなければ、ブロック１５０で解決方向はＢ→Ａと設定され、プログラムはブロック１２２へ移動する。そうでなければ、ブロック１５２で、一方の図形要素の要素距離が他方より低いか否かを決定する試験が行われる。決定が肯定的ならば、ブロック１５４で、要素距離が低い方の図形要素から要素距離が高い方の図形要素へ向かう解決方向が設定される（つまり、ソースノードから遠い方の図形要素が変化する）。次に、プログラムはブロック１２２へ移動する。両方の図形要素の距離が等しい場合は、ブロック１５６で無作為解決方向が選択され、プログラムはブロック１２２へ移動する。
【００５８】
図１７は、図１５に示す解決法サブルーチンのリンク解決部を示す流れ図である。リンク解決は、リンクのソースＡまたはリンクのソースＢの図形オブジェクトのいずれかの値を、そのリンクによって指定される制約が満足されるように、変化させる。解決法サブルーチンは、各リンクの解決方向を、リンクによって課せられる制約を満足させるために２つの図形要素のうちのどちらを変化させるべきかを示すリンク解決のパラメータとして提供する。ブロック１８０で、値獲得手続きはリンクのソースＡの図形要素の値を検索する。ブロック１８２で、値獲得手続きは、リンクのソースＢの図形要素の値を検索する。ブロック１８４で、ソースＡの図形要素の値をソースＢの図形要素の値と比較することによって、リンクによって課せられた制約が満足されるか否かを決定する試験が行われる。制約が満足されると、リンク解決が終了し、プログラムはブロック１３２へ移動する（図１５）。制約が満足されなければ、リンク解決はブロック１８６へ進む。ブロック１８６で、解決方向がＡ→Ｂか否かを決定する試験が行われる。解決方向がＡ→Ｂでなければ（つまり方向がＢ→Ａ）ならば、ブロック１８８でソースＡの図形要素の値が、制約およびプログラムの目的に照らして、ソースＢの図形要素の値に基づいて設定される。解決方向がＡ→Ｂならば、ブロック１９０で、ソースＢの図形要素の値が、ソースＡの図形要素の値に基づいて設定される。解決方向が設定された後、プログラムは解決法サブルーチンのブロック１３２（図１５）へ移動する。
【００５９】
図１８は、図形応用プログラムの汚染設定法を実行するのに適したサブルーチンを示す流れ図である。ブロック１９２で、編集された図形要素に連結されたリンクが汚染リストに追加される。ブロック１９４で、各接続リンクに関連するソースフラッグ（つまりＡまたはＢ）が設定される。ブロック１９６で、要素距離が設定されたか否かを決定する試験が行われる。要素距離が設定された場合には、サブルーチンは終了する。これは、リンクに接続された図形要素がすでに、ソースノードから要素距離を指定されていることを示す。要素距離が設定されていなければ、要素距離が現在の距離に等しい値に設定され（ブロック１９８）、サブルーチンは終了する。
【００６０】
図１９は、分布フレームに接続されたリンクを解決するためのサブルーチンを示す。この方法は、分布フレームが作成または変更されるたびに呼び出される。この方法は、大域ルーチンから、あるいは解決法サブルーチンからも呼び出すことができるが、この呼出しについては図１５に示されていない。ブロック２００では、編集された図形要素、例えば新規に追加された要素または修正された図形要素が、分布フレーム要素位置リスト（フレーム位置リスト）内にあるか否かを決定する試験が行われる。編集された図形要素がフレーム位置リストになければ、プログラムはブロック２０４へ進む。図形要素がフレーム位置リストにある場合は、図形要素の値がそのリストによって指定される位置と一致するか否かを決定する試験が行われる。値と位置が一致すれば、サブルーチンは終了する。一致しなければ、プログラムはブロック２０４へ進む。
【００６１】
ブロック２０４で、分布フレームに接続された各図形要素を含めることによって、新しいフレーム位置リストが形成される。次に、ブロック２０６で、分布フレームに設定された基準に基づいて、図形要素が配列される。次に、ブロック２０８で、位置リスト内の各図形要素の値が設定される。こうして、各図形要素が適切な位置に配置され、位置リストによって指定された大きさを持つ。これで、このサブルーチンは終了する。
【００６２】
図２０に、図１９をさらに詳しく示す。分布フレーム内の図形要素の配列の基礎となる概念は、一般に図１０および表１に示す垂直および水平方向の位置合わせおよび分布基準に由来する。配列の一般規則として、図形要素の位置は、要素の元の位置からの移動が最小限となるように選択される。
【００６３】
図２０は、水平軸上の図形要素の配列を取り扱う階層ブロック図である。理解されるように、垂直方向の要素配列も同様である。配列ブロック２１０から下に伸びているのは、それぞれブロック２１２およびブロック２１４の分布オプションおよび位置合せオプションである。要素の分布は２つのカテゴリーつまり（ａ）ブロック２１６に示すような大きさによる分布、および（ｂ）ブロック２１８に示すように図形要素の辺縁による分布に分割される。大きさによる分布は、個々の要素の大きさに関係なく、図形要素を均等間隔に配置する。ブロック２１８の図形要素の辺縁は、３つの属性つまり要素の左縁（ブロック２２０）、要素の中心（ブロック２２２）および要素の右縁（ブロック２２６）に従って位置合せすることができる。
【００６４】
大きさおよび辺縁による分布配列の他に、サイズ変更オプションを図形要素配列に影響するように選択することもできる。これらはブロック２２８に示されており、ブロック２３０にはサイズ無変更オプションが含まれ、ブロック２３２には要素に適合するようにフレームのサイズを変更するオプションが含まれ、ブロック２３４にはフレームに適合するように要素のサイズを変更するオプションが含まれる。利用者が、フレームに含まれる要素に適合するようにフレームのサイズを変更するオプションを選択すると、分布フレームの幅が、ブロック２３６に示すように、要素の幅と各図形要素間の所望の間隔の総和に等しくなる。フレームに適合するように要素のサイズを変更するオプションを選択すると、各要素の幅は、（フレームの幅を要素の数で割った値）から各要素間の間隔を引いた値に等しく設定される。ブロック２１８の辺縁の左側、中央、および右側の分岐は、ブロック２２８−２３８に記述したものと同じサイズ変更オプションを含む。
【００６５】
位置合せブロック２１４もまた、それぞれブロック２４０、３４３、および２４４に左側、中央、および右側の位置合せオプションを含む。位置合せ分岐のサイズ変更オプションは、ブロック２４６に示されている。これらはまた、ブロック２４８のサイズ無変更オプション、ブロック２５０の要素に適合するようにフレームのサイズを変更するオプション、およびブロック２５２のフレームに適合するように要素のサイズを変更するオプションをも含む。要素に適合するようにフレームのサイズを変更する場合、フレーム幅は、ブロック２５４に示すように、最も幅の広い要素の幅に等しくなるように設定される。フレームに適合するように要素のサイズを変更する場合には、全てのオブジェクトの幅は、ブロック２５６に示すように、フレームの幅に等しくなるように設定される。このように、図２０は一般に、ＡＤＦ対話ツールで設定された基準に基づいて、図形要素を配列するために使用できる流れを示している。
【００６６】
図２１は、以上の説明と関連して制約エンジンの動作を説明するために使用される１組の３つの図形要素２７０、２７２、および２７４のブロック図である。図形要素２７０は、要素２７２にソースＡを持ち要素２７４にソースＢを持つリンクＬ１によって、図形要素２７２に結合されている。リンクＬ１は、符号２７８で示すように双方向リンクと仮定する。単方向リンクＬ２は、図形要素２７２を図形要素２７４と結合する。リンクの方向は、矢印２８２で示すように、図形要素２７２の方向に向かっている。第３のリンクＬ３も図形要素２７２と２７４を結合する。リンクＬ３は、ソースＡが図形要素２７２に連結され、ソースＢが図形要素２７４に連結された双方向リンクである（符号２９２で示すように）。
【００６７】
この例は、図１５ないし図１８に示した流れ図に関連している。先に述べた通り、この図形応用プログラムは、文書内の図形要素に行われる変更を絶えず検査し、識別することのできる大域ルーチンを含む。これに関連して、図２１では、図形要素２７０が編集されたと仮定する。この大域ルーチンは、次の段階を実行する。つまり、（１）利用者が図形要素を変更したことを知覚し、要素汚染設定を呼び出し（図１８）、（２）制約エンジン内で解決法サブルーチンの呼出しを行い、（３）スクリーンを更新し、それによって、文書に行われた修正を表示する。この例では、解決法のブロック１２６（図１５）の直後にスナップショットが行われ、（ａ）４つの優先順位リストに１つにあるリンクの解決方向を示し、（ｂ）それがどの優先順位リストに入っているかを示し、（ｃ）可変現在距離の値を示す。これらのスナップショットを、表３に示す。
【００６８】
【表３】
0003634323.tif 000004
【００６９】
要素汚染設定手続きを呼出した後、そのルーチンのブロック１９２および１９４で、リンクＬ１が汚染リストに追加され、リンクＬ１のソースＡが設定される。次に、解決法が呼び出され、ブロック１１４で現在の距離が１に設定され、リンクＬ１が優先順位リストＬ２に追加され、ブロック１２０でリンクＬ１の解決方向がＡ→Ｂに設定される。これにより、表３のスナップショット１に見られるデータが生じる。
【００７０】
ブロック１２８では、リンク解決法が呼び出され、リンクＬ１の制約が満たされるか否かを見るために、図形要素２７０と図形要素２７２が比較される。リンクＬ１の制約が満足されないと仮定した場合、ブロック１９０で値設定法が呼び出され、図形要素２７２が図形要素２７０の値に基づいて設定される。その後、ブロック１９２で値設定法が要素汚染設定を呼び出し、リンクＬ１およびリンクＬ３が汚染リストに追加され、図形要素２７２（どちらの場合もＡ）に連結されたソースフラッグが設定される。次に、制御は解決法に戻り、ブロック１１０にループバックする。ループ１１６−１２２において、リンクＬ２はリスト１に割り当てられ、解決方向Ｂ→Ａが設定される。またこのループでは、リンクＬ３がリスト２に追加され、その解決方向はＡ→Ｂに設定される。ブロック１２６で、現在のリストはリスト１に設定される。表３のスナップショット２は、優先順位リストに存在するリンクの現状を示す。
【００７１】
ブロック１３０でリンク解決ルーチンが呼び出され、図形要素２７２と２７４の間の制約がブロック１８４で試験される。制約が満たされていない場合、要素２７２の値はブロック１８８で要素２７４の値に等しくなるように設定される。値設定法が再び要素汚染設定を呼び出し、図形要素２７２が変更されたので、これはリンクＬ１を汚染リストに追加する。制御は解決法に戻り、現在の距離は３に増分され、リンクＬ１がリスト４に追加される。さらに、ブロック１２０で、リンクＬ１に対しＢ→Ａの解決方向が設定される。ブロック１２６では、リスト２が空でない最も優先順の高いリストであるので、現在のリストがリスト２に設定される。この例の現在の状態を、表３のスナップショット３に示す。
【００７２】
この時点で、現在のリスト（リスト２）は空でなく、ブロック１３０でリンク解決が呼び出される。リンク解決法のブロック１８４で、図形要素２７２を図形要素２７４と比較することによって、リンクＬ３の制約が満足されているか否かが決定される。制約が満足されていない場合、図形要素２７４の値は、要素２７２の値に基づいて変更される。その後、要素汚染設定が呼び出され、リンクＬ２が汚染リストに追加される。次に、制御はブロック１２８に戻され、これはブロック１１０に分岐する。現在の距離はブロック１１４で４に増分され、ブロック１１６−１２２でリンクＬ２がリスト１に追加される。次に、ブロック１２６で現在のリストはリスト１に設定される。当該変数の現在の状態は、表３のスナップショット４に示す。ブロック１３０でリンク解決が呼び出される。
【００７３】
リンク解決ルーチンにおいて、この例では、制約が満足され、制御が解決法に戻されたと仮定する。この時点で汚染リスト内にはリンクが無いので、リンクＬ１はまだリスト４であり、したがってプログラムはブロック１１４に続き、現在の距離が５に増分される。流れはブロック１２６に続き、現在のリストがリスト４に設定される。この時点で、スナップショット５は、解決方向、優先順位リストおよび現在の距離の現在の状態を示す。プログラムはブロック１３０に続き、リンク解決法が呼び出される。ブロック１８４で、図形要素２７２の値が図形要素２７０の値と比較される。この時点で、リンクＬ１の制約が満足され、制御が解決法へ戻されたと仮定する。解決法はブロック１１０へループバックし、汚染リストおよび優先順位リストは空になる。したがってプログラムはブロック１１２へ続き、ここで現在の距離がゼロに設定され、プログラムは終了する。
【００７４】
制約エンジンは、制約を解決するために非常に効率的な手段である。一般に他の技術で用いられる制約ソルバは、様々な値で指定された制約を参照することによって、制約の順序付けを予め計画するプランニング段階を含んでいる。したがって、制約の評価順序を設定するのはプリプランニング段階である。それとは対照的に、本発明の制約エンジンは、優先順位リスト、要素距離値、およびリンク方向を使用して基本的に制約を解決しながら「計画」を立てていく方式である。制約エンジンはまた、制約問題の増分解や部分解を提供するという利点もある。増分的解決は、汚染リストを実現する方法で提供することができ、また解決法をいつでも停止することによって、制約問題の部分解決を提供することができる。解決法を始動または停止するために、セットアップ時間やクリーンアップ時間のオーバヘッドは不用である。解決法が解を見つけるのに時間がかかりすぎる場合、あるいは解が無い場合には、利用者に部分解決を提示するという意味で、部分解決が得られる。制約エンジンのさらに別の利点は、図形要素の内部が制約から隠蔽されるということである。これは、図形要素の内部への唯一のアクセスが値設定法および値獲得法を用いるためである。最後に、解決法による制約への唯一のアクセスがリンク解決法を用いるという意味で、制約の内部は隠蔽される。これにより、制約の実現が非常に柔軟になる。
【００７５】
本発明の好適実施例を図に照らしながら説明したが、本発明の精神および請求の範囲から逸脱することなく、様々な変化例を作成できることは理解されよう。
【図面の簡単な説明】
【図１】本発明に従って作成された図形応用プログラムのブロック図である。
【図２】典型的な図形要素例を示す階層図である。
【図３】本開示全体を通じてリンクと称する、代表的な制約例を示す階層図である。
【図４】１組の図形要素に課すことのできる制約例を示す絵解き図である。
【図５】図４の図形要素に課せられた制約の結果起きることを示す絵解き図である。
【図６】図４の図形要素に課せられた制約の結果起きることを示す絵解き図である。
【図７】図４の図形要素に課せられた制約の結果起きることを示す絵解き図である。
【図８】本発明に従って実現することのできる典型的制約機能例を示すリンクプルダウンメニューの画面表示図である。
【図９】図４に示した制約関係を有するリンク走査機能の画面表示図である。
【図１０】本発明に従って図形オブジェクト間に制約関係を形成するために使用することのできる位置合せ／分布フレーム対話ツールの画面表示図である。
【図１１】本発明に従って分布フレームを利用して作成および編集することのできる一連の棒グラフの画面表示図である。
【図１２】本発明に従って分布フレームを利用して作成および編集することのできる一連の棒グラフの画面表示図である。
【図１３】本発明に従って分布フレームを利用して作成および編集することのできる一連の棒グラフの画面表示図である。
【図１４】図形要素が編集された後の汚染リストへのリンクの追加を示す制約エンジンによって使用されるデータ構造の説明図である。
【図１５】本発明に従って制約条件を解くルーチンの流れ図である。
【図１６】特定のリンクの解決方向を決定するルーチンの流れ図である。
【図１７】リンクの制約条件を満足するために、リンクに結合された２つの図形要素のうち、どちらの要素を修正するべきかを決定するルーチンの流れ図である。
【図１８】汚染リストに図形要素を付加するルーチンの流れ図である。
【図１９】分布フレームに結合されたリンクを解決するルーチンの流れ図である。
【図２０】分布フレームに連結された図形要素を配列するために使用されるデータ流を示す階層図である。
【図２１】制約エンジンの動作を説明するときに用いられる１組の図形要素のブロック図である。
【符号の説明】
２０図形応用プログラム
２２中央処理装置（ＣＰＵ）
２４オペレーティングシステム
２８ユーザインタフェース
３０アプリケーションシェル
３２文書エンジン
３４図形エンジン
３６制約エンジン
４４分布フレーム
４６分布リンク
４８位置合せリンク
５０サイズリンク
５２間隔維持リンク
１００図形要素
１０２リンク
１０４汚染リスト
１０６ソルバ
【図１】
0003634323.tif 000005
【図２】
0003634323.tif 000006
【図３】
0003634323.tif 000007
【図４】
0003634323.tif 000008
【図５】
0003634323.tif 000009
【図６】
0003634323.tif 000010
【図７】
0003634323.tif 000011
【図８】
0003634323.tif 000012
【図９】
0003634323.tif 000013
【図１０】
0003634323.tif 000014
【図１１】
0003634323.tif 000015
【図１２】
0003634323.tif 000016
【図１３】
0003634323.tif 000017
【図１４】
0003634323.tif 000018
【図１５】
0003634323.tif 000019
【図１６】
0003634323.tif 000020
【図１７】
0003634323.tif 000021
【図１８】
0003634323.tif 000022
【図１９】
0003634323.tif 000023
【図２０】
0003634323.tif 000024
【図２１】
0003634323.tif 000025