(57)【要約】【課題】  ノードとそれを接続するエッジからなるグラフ構造の図形をページ単位で分割表示または印刷する際に生じるページ区切り位置におけるノードの重なりを調整する技術を提供する。【解決手段】  本発明は、ノードとエッジからなるグラフ構造図を処理する装置において、グラフ構造図を表示または印刷する際に、ページ区切り位置において重なるノードに接続するエッジの有無を判定し、接続するエッジがある場合に、該エッジが接続された方向に重なりノードを移動し、接続するエッジがない場合には、重なりノードを内側のページに移動することを特徴とする。【選択図】図１
2010113422.tif 000002
【特許請求の範囲】
【請求項１】
ノードとエッジからなるグラフ構造図を処理するグラフ構造図処理装置においてページ区切りで重なったノードの位置を調整するノード位置調整プログラムであって、
前記グラフ構造図を表示または印刷する際に、ページ区切り位置において重なるノードに接続するエッジの有無を判定するエッジ判定ステップと、
前記エッジ判定ステップにおいて、接続するエッジがある場合、該エッジが接続された方向に前記重なりノードを移動し、接続するエッジがない場合、重なりノードを内側のページに移動するノード移動ステップと、
をコンピュータに実行させるノード位置調整プログラム。
【請求項２】
前記ノード移動ステップは、ページ区切り上の前記重なりノードが複数のページに向けて接続するエッジを持つ場合に、同一の前記重なりノードを当該複数のページに移動して表示または印刷させることを特徴とする請求項１に記載のノード位置調整プログラム。
【請求項３】
前記ノード移動ステップは、前記同一の重なりノードに接続する複数のページに向けて接続するエッジにつき、前記ページの外に伸びているエッジの一部のみを表示または印刷させることを特徴とする請求項２に記載のノード位置調整プログラム。
【請求項４】
前記ノード移動ステップは、前記重なりノードに接続するエッジの種別に応じてノードを移動する方向を調整することを特徴とする請求項１乃至３のいずれかに記載のノード位置調整プログラム。
【請求項５】
ノードとエッジからなるグラフ構造図を処理するグラフ構造図処理装置においてページ区切りで重なったノードの位置を調整するノード位置調整装置であって、
前記グラフ構造図を表示または印刷する際に、ページ区切り位置において重なるノードに接続するエッジの有無を判定するエッジ判定手段と、
前記エッジ判定手段において、接続するエッジがある場合、該エッジが接続された方向に前記重なりノードを移動し、接続するエッジがない場合、重なりノードを内側のページに移動するノード移動手段と、
を有することを特徴とするノード位置調整装置。
【請求項６】
ノードとエッジからなるグラフ構造図を処理するグラフ構造図処理装置においてページ区切りで重なったノードの位置を調整するノード位置調整方法であって、
前記グラフ構造図を表示または印刷する際に、ページ区切り位置において重なったノードに接続するエッジの有無を判定するエッジ判定ステップと、
前記エッジ判定ステップにおいて、接続するエッジがある場合、該エッジが接続された方向に前記重なりノードを移動し、接続するエッジがない場合、前記重なりノードを内側のページに移動するノード移動ステップと、
を有することを特徴とするノード位置調整方法。
【請求項７】
ノードとエッジからなるグラフ構造図のグラフ構造図処理装置においてページ区切りで重なったノードの位置を調整するノード位置調整プログラムであって、
前記ページ区切り位置の重なりノードにおける他ページへのはみ出し量のページ幅に対する割合を算出するステップと、
前記割合にしたがって、重なりノードを含むページ内の全てのノードの位置を調整するステップと、
をコンピュータに実行させるノード位置調整プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ノード（画像要素）とそれを接続するエッジ（接続要素）からなるグラフ構造の図形をページ単位で分割表示または印刷する際に生じるページ区切り位置におけるノードの重なりを調整する技術に関する。
【背景技術】
【０００２】
従来、モデリングツールや描画ソフトなどにおいて、図形の整列機能によってページ単位で図形をレイアウトする技術が提案され、一般に提供されている。しかしながら、描画ソフトなどにおける従来の図形整列機能は、ページ区切りを意識した処理を行わないため、整列操作を実行した後にページ区切り位置に図形が重なることがある。その場合、紙面に印刷を行った場合、ある１つの図形が途中で分割されて複数のページに印刷されてしまい、図の内容を理解することが困難になるという問題があった。
【０００３】
これに対し、図形全体を１ページに縮小印刷するレイアウト処理の技術が提案されている（例えば、特許文献１参照）。その場合は、図形が縮小されることにより、図中の文字がつぶれて見づらくなるなどの問題が生じる。
【特許文献１】特開２００７−１８４１３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
そこで、上述した問題を解決するため、本発明では、ノードとそれを接続するエッジからなるグラフ構造の図形をページ単位で分割表示または印刷する際に、ページ区切り位置において重なったノードを左右上下のページに移動することによって個々のノードの大きさを変えずに見やすくするようなグラフ構造図の処理技術を提供する。
【課題を解決するための手段】
【０００５】
一つの実施形態は、ノードとエッジからなるグラフ構造図を処理するグラフ構造図処理装置においてページ区切りで重なったノードの位置を調整するノード位置調整プログラムに関し、グラフ構造図を表示または印刷する際に、ページ区切り位置において重なるノードに接続するエッジの有無を判定するエッジ判定ステップと、該エッジ判定ステップにおいて、接続するエッジがある場合、該エッジが接続された方向に重なりノードを移動し、接続するエッジがない場合、重なりノードを内側のページに移動するノード移動ステップとをコンピュータに実行させる構成とすることによって、従来のようにグラフ構造図が縮小して表示させるのではなく、グラフ構造図の内のページ区切り位置に重なったノードがそのままのページ内に移動させるため、１ページ内に同じ大きさで表示されることとなり、見易さが大きく改善される。
【発明の効果】
【０００６】
以上、上述した本発明によって、１つのノードが複数ページに分割されることが少なくなるため、図形が大変見やすくなる。また、１つのノードが複数ページに分割されると、一方のページを確認するだけでは、そのノードが本来表す内容全体を理解することができず、もう一方のページの内容を補完して理解する必要があるという従来の欠点を解消することができる。
【発明を実施するための最良の形態】
【０００７】
以下、図面にもとづいて本発明の実施形態を説明する。本発明では、対象の図がノード（図形要素）とそれを接続するエッジ（ノード間を繋ぐ接続線）からなるグラフ構造であることを前提とし、ページ区切り位置において図形が重ならないようにノードの位置を移動することを特徴としている。そして、図形を移動する際に、グラフ構造の特徴に応じて移動処理を実行するものである。
【０００８】
移動方法として、実施例１において、ページ区切りに重なっているノードを１つずつ移動し、ノードの移動方向をノード間の接続に基づいて決定する例を示し、実施例２において、ページ区切りにノードが重ならないようにページ内の全てのノードを移動する例を示す。
（実施例１）
図１は、本発明の実施の形態になるグラフ構造図処理装置の基本構成を示す。本システムは、グラフ構造図のページ区切り位置において重なるノードの位置を移動して重なりを解消するグラフ構造図処理装置１と、その処理結果を表示あるいは印刷するディスプレイ装置／印刷装置２から構成され、また、グラフ構造図処理装置１は、ＯＳ（オペレーティングシステム）１０、そのＯＳ１０上で動作し、ノード位置調整プログラム１００によってページ区切り部分の重なりノードの位置の変更を接続するエッジなどグラフ構造の特徴に応じて移動処理が行われ、ディスプレイ装置／印刷装置２への結果の出力を制御するユーザインタフェース処理部１１、およびページ区切り部におけるノード情報、ノードに接続するエッジ情報などグラフ構造の特徴を表す情報が格納されたテーブルを管理するグラフデータ管理部１２から構成されている。
【０００９】
なお、グラフ構造図処理装置１は、図示していないが、ＣＰＵ（Central Processing Unit ）およびメモリを備えたコンピュータであり、ハードディスク等の補助記憶装置に記録されたノード位置調整プログラム１００は、起動時に、メモリに展開され、ＣＰＵによって処理される。
【００１０】
図２、図３は、本発明の実施の形態になるページ区切り位置におけるノードの移動処理パターンを示す。ページ区切り位置の重なりノードの移動処理について、以下、５つのパターンを適用する。図２にパターン１〜３、図３にパターン４、５を示す。
パターン１（基本処理）：ページ区切りの上に重なっているノードは、（ａ）エッジが接続されている場合、エッジが接続されている方向に、また、（ｂ）エッジが接続されていない場合、内側のページに移動する。上図は移動処理の考え方を示し、処理によって得られる印刷結果を示している。パターン２以下のパターンは、パターン１に追加されるオプションとしての移動処理パターンである。
パターン２（オプション１）：重なりノードに２方向( 例えば右方向と左方向) にエッジが接続されていた場合、重なりノードを両方向( 例えば、右方向と左方向) に移動し、エッジは同一ページ内のノード間のみ接続する。この例では、ノード１とノード３、ノード１とノード２の接続が左右の両方のページで確認できるようにするものである。
パターン３（オプション２）：オプション１と同様、重なりノードを2 方向( 例えば、右方向と左方向) に移動し、エッジは同一ページ内の範囲のみ表示する。例えば、ノード１からノード３へ伸びているエッジの一部を表示することにより、ノード１に、ノード２以外にも、ノードが接続されていることが右ページだけで確認できるようにする。
パターン４（オプション３）：重なりノードに接続されているエッジの種類を調べ、エッジ種別に応じて優先的に移動する。例えば、点線と実線で実線を優先するならば、点線で接続されたノード１とノード３よりも、実線で接続されたノード１とノード２の方が、同一ページに表示することが望ましいと判断して、ノード１を右に移動する。
パターン５（オプション４）：重なりノードの情報（例: ノード名の文字列) が、ページ区切りと重ならないようになる最小限の量だけノードを移動する。最小限の量だけノードを移動することにより、図全体の外観をあまり変えずに移動可能とするものである。
【００１１】
図４は、本発明の実施の形態になるページ区切り位置の座標を示す。本例は、ページ区切り位置の座標を定義したものである。縦向きのページ区切りは、ｘ座標＝０，２５０，５００，７５０，・・・（２５０間隔で区切り）、横向きのページ区切りは、ｙ座標＝０，２００，４００，６００，・・・（２００間隔で区切り）と設定している。
【００１２】
図５は、本発明の実施の形態になるノード情報テーブルのデータ構成例を示す。ノード情報テーブルは、ノードの「名前」、「ｘ座標」、「ｙ座標」、ノードの「幅」、「高さ」、ノードに接続する「エッジ」、および「その他」の項目からなる複数のレコードから構成されている。例えば、第一のレコードには、ノードＡは、座標（１００, ５０）の位置にある幅５０、高さ５０の大きさの図形であり、接続するエッジはエッジａ、その他はノード種別などが示されている。
【００１３】
図６は、本発明の実施の形態になるエッジ情報テーブルのデータ構成例を示す。エッジ情報テーブルは、エッジの「名前」、エッジの「種別」、片側端点の「ｘ１座標」、「ｙ１座標」、それに接続する「接続ノード１」、他側端点の「ｘ２座標」、「ｙ２座標」、それに接続する「接続ノード２」、および「その他」の項目からなる複数のレコードで構成されている。例えば、第一のレコードでは、エッジａは、種別が汎化であり、座標（１５０，７５）でノード１と、座標（２００，８５）でノード２に接続しており、折曲点情報などの接続情報が付加されていることが分かる。
【００１４】
なお、エッジの「種別」は、ノード移動処理のパターン４（オプション３）を有効とした場合にのみ利用可能な情報となる。
【００１５】
図７は、本発明の実施の形態になるエッジ種別毎の重み情報テーブルのデータ構成例を示す。エッジ種別の重み情報テーブルは、オプション3 を有効にしたときに利用するデータであり、ＵＭＬ（Unified Modeling Language ：統一モデリング言語）クラス図を対象とした場合を例としている。
【００１６】
各「エッジ種別」に対する「重み情報」が設定され、例えば、各種別の重みは、汎化→３、実現→２、添付ノート→５、関連→１、依存→１となっている。オプション３を有効にすると、2 つのノード間のエッジの種類に応じて、より近傍に表示した方が好ましいノード同士が近づく方向にノードが移動処理される。
【００１７】
図８は、本発明の実施の形態になるノード移動処理の全体フローを示す。まず、第一のループにおいて、ページ区切り位置で図全体を分割し、ｘ軸方向にＮｘ個、ｙ軸方向にＮｙ個の升目状にする。左上のページをＰ（１，１）、右下のページをＰ（Ｎｘ，Ｎｙ）と表現すると、Ｐ（１，１）、Ｐ（２，１）、・・・、Ｐ（Ｎｘ，１）、・・・、Ｐ（１，２）、・・・、Ｐ（Ｎｘ，Ｎｙ）のように左上から右下の方向に順番に1 ページずつ選択する。
【００１８】
つぎに、第二のループにおいて、選択中のページ領域に存在するノード（一部でもページ領域と重なりがあるノード）全てについて、ｘ座標の値が小さい順番に1 つずつ選択する。ｘ座標が等しい場合、ｙ座標の値が小さい順番に選択する。
【００１９】
ステップＳ１１において、上下左右の４方向のページ区切り線（禁止領域）のいずれかと選択中のノードとが重なっているかどうか判定する。
【００２０】
禁止領域であるページ区切り線とノード( 図形要素) が重なっている場合には、ステップＳ１２において、重なったノードについてページ区切り位置から移動し、かつページ内の他のノードとの重なりをなくすようなノードの移動処理を行う。以下、図９〜１４を用いて、ページ区切り位置にあるノードの重なり状態に応じた移動処理の詳細を説明する。
【００２１】
図９、１０は、本発明の実施の形態になるノードの移動処理の詳細フロー（その１：ノードが右のページ区切りと重なる場合）を示す。本例では、右のページ区切り上にあるノードの位置を変更する処理を行う。
【００２２】
まず、図９のステップＳ２１において、ノードに接続する左右のエッジの重み値ｅｌ、ｅｒ（ｅｌ、ｅｒは、それぞれ左方向、右方向に伸びるエッジの重みの合計値を表す）を初期化（ゼロセット）する。
【００２３】
ステップＳ２２において、ノードに接続されているエッジが１本以上存在するか否かを判定する。エッジが１本以上存在する場合、接続されているエッジを１つ選択するループ処理を行う。
【００２４】
ステップＳ２３において、エッジの選択ノード側の端点のｘ座標値をｘａ、接続先ノード側の端点のｘ座標値をｘｂ、エッジの重み情報をαとしたときに、ｘａ＞ｘｂであればｅｌにαを加え、また、ｘｂ＞ｘａであればｅｒにαを加える。つまり、エッジが左に伸びているならば左向きの重みが増し、右に伸びているならば右向きの重みが増すこととなる。このことは、オプション３をＯＮにすると、エッジの種類に応じて、右向きまたは左向きに移動させる重みの大きさが異なることを意味する。また、オプション３がＯＦＦの場合には、常にα＝１となる。
【００２５】
なお、ｘａ＝ｘｂ、または、エッジの両端が同じノードに接続されているならば何も処理しないこととする。
【００２６】
つぎに、図１０のステップＳ２４において、追加のオプション１としてページ区切りの上に重なっているノードについて、複数のページに向けてエッジが接続されている場合、同一のノードをそれらの複数のページに表示させるかどうかを判定する。
【００２７】
オプション１がＯＮであれば、ステップＳ２５において、重なりノードに接続する左右エッジの重みを表すｅｌ、ｅｒの値を判定する。
【００２８】
判定の結果、ノードが左右エッジを持つ場合（ｅｌ＞０かつｅｒ＞０）、ステップＳ２６において、左側ページへの移動処理を行う。重なりノードを複製して、ノードがページ区切りから右方向にはみ出ている分だけ左方向にノードを移動し、他のノードと重なる場合は、上または下方向に、定数値Ｄだけさらに移動する。それでも他のノードと重なる場合は，複製したノードを削除する。
【００２９】
同様に、ステップＳ２７において、右側ページへの移動処理を行う。重なりノードを複製して、ノードがページ区切りから左方向にはみ出ている分だけ右方向にノードを移動し、他のノードと重なる場合は、上または下方向に、定数値Ｄだけさらに移動する。それでも他のノードと重なる場合は，複製したノードを削除する。
【００３０】
なお、上記ステップＳ２６、２７における重なりノードのページ区切り位置からの移動量は、例えば、ノード名が見える程度に最小限に抑えるようにしてもよい（図３のオプション４参照）。
【００３１】
ステップＳ２８において、上記左右の移動処理で、いずれかが成功（ノードが削除されないで処理終了) していたら、元のノードを削除する。さらに、オプション２のＯＮ／ＯＦＦに応じて、ノードに接続されているエッジを表示する。
【００３２】
つぎに、ステップＳ２５の判定結果から片側にエッジを持つ場合またはエッジを持たない場合には、以降のノード移動処理が実行される。また、ステップS ２４でオプション１がＯＦＦだった場合には、ステップＳ２９以降に進む。
【００３３】
ステップＳ２９において、ｅｌ及びｅｒの値を判定する。ｅｒ≧ｅｌであれば、ステップＳ３０において、移動方向の候補は、変数ｄ１（第一候補）に「右方向」を代入し、変数ｄ２（第二候補）に「左方向」を代入する。また、ｅｒ＜ｅｌであれば、ステップＳ３１において、ｄ１に「左方向」、ｄ２に「右方向」を代入する。
【００３４】
そして、ステップＳ３２において、ノードがページ区切りからｄ２方向にはみ出ている分だけｄ１方向にノードを移動し、他のノードと重なる場合は、上または下方向に定数値Ｄだけさらに移動する。
【００３５】
さらに、ステップＳ３３において、他のノードと重なっている場合、一旦ノードの位置を戻す。ノードがページ区切りからｄ１方向にはみ出ている分だけｄ２方向にノードを移動し、他のノードと重なる場合は、上または下方向に定数値Ｄだけさらに移動する。それでも他のノードと重なる場合は、元の位置に戻す。
【００３６】
なお、上記ステップＳ３２、３３における重なりノードのページ区切り位置からの移動量は、例えば、ノード名が見える程度に最小限に抑えるようにしてもよい（図３のオプション４参照）。
【００３７】
以上、図９、１０では、ノードが右のページ区切りと重なる場合について示してきたが、左のページ区切りと重なる場合についても、同様な移動処理が適用される。
【００３８】
図１１、１２は、本発明の実施の形態になるノードの移動処理の詳細フロー（その２：ノードが下のページ区切りと重なる場合）を示す。本例では、下のページ区切り上にあるノードの位置を変更する処理を行う。
【００３９】
まず、図１１のステップＳ４１において、ノードに接続する上下のエッジの重み値ｅｔ、ｅｂ（ｅｔ、ｅｂは、それぞれ上方向、下方向に伸びるエッジの重みの合計値を表す）を初期化（ゼロセット）する。
【００４０】
ステップＳ４２において、ノードに接続されているエッジが１本以上存在するか否かを判定する。エッジが１本以上存在する場合、接続されているエッジを１つ選択するループ処理を行う。
【００４１】
ステップＳ４３において、エッジの選択ノード側の端点のｙ座標値をｙａ、接続先ノード側の端点のｙ座標値をｙｂ、エッジの重み情報をαとしたときに、ｙａ＞ｙｂであればｅｂにαを加え、また、ｙｂ＞ｙａであればｅｔにαを加える。つまり、エッジが上に伸びているならば上向きの重みが増し、下に伸びているならば下向きの重みが増す。このことは、オプション３をＯＮにすると、エッジの種類に応じて、上向きまたは下向きに移動させる重みの大きさが異なることを意味する。また、オプション３がＯＦＦの場合は、常にα＝１となる。
【００４２】
なお、ｙａ＝ｙｂ、または、エッジの両端が同じノードに接続されているならば何も処理しないこととする。
【００４３】
つぎに、図１２のステップＳ４４において、追加のオプション１としてページ区切りの上に重なっているノードについて、複数のページに向けてエッジが接続されている場合、同一のノードをそれらの複数のページに表示させるかどうかを判定する。
【００４４】
オプション１がＯＮであれば、ステップＳ４５において、重なりノードに接続する上下エッジの重みを表すｅｔ、ｅｂの値を判定する。
【００４５】
判定の結果、ノードが上下にエッジを持つ場合（ｅｔ＞０かつｅｂ＞０）、ステップＳ４６において、下側ページへの移動処理を行う。重なりノードを複製して、ノードがページ区切りから上方向にはみ出ている分だけ下方向にノードを移動し、他のノードと重なる場合は、左または右方向に、定数値Ｄだけさらに移動する。それでも他のノードと重なる場合は，複製したノードを削除する。
【００４６】
同様に、ステップＳ４７において、上側ページへの移動処理を行う。重なりノードを複製して、ノードがページ区切りから下方向にはみ出ている分だけ上方向にノードを移動し、他のノードと重なる場合は、左または右方向に、定数値Ｄだけさらに移動する。それでも他のノードと重なる場合は，複製したノードを削除する。
【００４７】
ステップＳ４８において、上記上下の移動処理で、いずれかが成功（ノードが削除されないで処理終了) していたら、元のノードを削除する。さらに、オプション２のＯＮ／ＯＦＦに応じて、ノードに接続されているエッジを表示する。
【００４８】
つぎに、ステップＳ４５の判定結果から片側にエッジを持つ場合、またはエッジを持たない場合には、以降のノード移動処理が実行される。また、ステップＳ４４でオプション１がＯＦＦだった場合には、ステップＳ４９以降に進む。
【００４９】
ステップＳ４９において、ｅｔ及びｅｂの値を判定する。ｅｔ≧ｅｂであれば、ステップＳ５０において、移動方向の候補は、変数ｄ１（第一候補）に「下方向」を代入し、変数ｄ２（第二候補）に「上方向」を代入する。また、ｅｔ＜ｅｂであれば、ステップＳ５１において、ｄ１に「上方向」、ｄ２に「下方向」を代入する。
【００５０】
そして、ステップＳ５２において、ノードがページ区切りからｄ２方向にはみ出ている分だけｄ１方向にノードを移動し、他のノードと重なる場合は、上または下方向に定数値Ｄだけさらに移動する。
【００５１】
さらに、ステップＳ５３において、他のノードと重なっている場合、一旦ノードの位置を戻す。ノードがページ区切りからｄ１方向にはみ出ている分だけｄ２方向にノードを移動し、他のノードと重なる場合は、左または右方向に定数値Ｄだけさらに移動する。それでも他のノードと重なる場合は、元の位置に戻す。
【００５２】
以上、図１１、１２では、ノードが下のページ区切りと重なる場合について示してきたが、上のページ区切りと重なる場合についても、同様な移動処理が適用される。
【００５３】
図１３、１４は、本発明の実施の形態になるノードの移動処理の詳細フロー（その３：ノードが右下のページ区切りと重なる場合）を示す。本例では、右下隅のページ区切り上にあるノードの位置を変更する処理を行う。
【００５４】
まず、図１３のステップＳ６１において、右下のページ区切り上の重なりノードに接続するエッジの重みの合計値、ｅｘ（右方向）、ｅｙ（下方向）、ｅｒｔ（右上方向）、ｅｒｂ（右下方向）、ｅｌｔ（左上方向）、ｅｌｂ（左下方向）を初期化（ゼロセット）する。
【００５５】
ステップＳ６２において、ノードに接続されているエッジが１本以上存在するか否かを判定する。エッジが１本以上存在する場合、接続されているエッジを１つ選択するループ処理を行う。
【００５６】
ステップＳ６３において、エッジの選択ノード側の端点Ａ（ｘａ，ｙａ）、接続先ノード側の端点Ｂ（ｘｂ，ｙｂ）、及びエッジの重み情報をαとすると、ｘａ＞ｘｂならｅｘからαを引き、ｘｂ＞ｘａならｅｘにαを加える。なお、ｘａ＝ｘｂ、または、エッジの両端が同じノードに接続されているならば何もしない。
【００５７】
また、ｙａ＞ｙｂならｅｙからαを引き、ｙｂ＞ｙａならｅｙにαを加える。なお、ｙａ＝ｙｂ、またはエッジの両端が同じノードに接続されているならば何もしない。
【００５８】
また、Ａから見てＢが右上にあるならｅｒｔにαを加え、右下ならｅｒｂにαを加え、左上ならｅｌｔにαを加え、左下ならｅｌｂにαを加える。
【００５９】
ここで、αは、オプション３がＯＮの場合、エッジの種類に応じて可変となり、オプション３がＯＦＦの場合は、常にα＝１とする。
【００６０】
つぎに、図１４のステップＳ６４において、追加のオプション１としてページ区切りの上に重なっているノードについて、複数のページに向けてエッジが接続されている場合、同一のノードをそれらの複数のページに表示させるかどうかを判定する。
【００６１】
オプション１がＯＮであれば、ステップＳ６５において、重なりノードに接続するエッジの重みを表すｅｒｔ、ｅｒｂ、ｅｌｔ、ｅｌｂの値を判定する。
【００６２】
判定の結果、ノードが２方向以上にエッジを持つ場合（ｅｒｔ、ｅｒｂ、ｅｌｔ、ｅｌｂのいずれか２個以上の値が０でない）、以降の移動処理を行う。
【００６３】
ステップＳ６６において、ｅｒｔ＞０ならノードを複製して、ノードがページ区切りから左下方向にはみ出ている分だけ右上方向にノードを移動する。他のノードと重なる場合は複製したノードを削除する。
【００６４】
ステップＳ６７において、ｅｒｂ＞０ならノードを複製して、ノードがページ区切りから左上方向にはみ出ている分だけ右下方向にノードを移動。他のノードと重なる場合は複製したノードを削除する。
【００６５】
ステップＳ６８において、ｅｌｔ＞０ならノードを複製して、ノードがページ区切りから右下方向にはみ出ている分だけ左上方向にノードを移動。他のノードと重なる場合は複製したノードを削除する。
【００６６】
ステップＳ６９において、ｅｌｂ＞０ならノードを複製して、ノードがページ区切りから右上方向にはみ出ている分だけ左下方向にノードを移動。他のノードと重なる場合は複製したノードを削除する。
【００６７】
ステップＳ７０において、上記Ｓ６６からＳ６９の処理のいずれかが成功（ノードが削除されないで処理終了) していたら、元のノードを削除し、さらに、オプション２のＯＮ／ＯＦＦに応じてノードに接続されているエッジを表示する。
【００６８】
つぎに、ステップＳ６４でオプション１がＯＦＦである場合、または、ステップＳ６５で片側にエッジを持つ場合のノード移動処理が以下のステップで実行される。
【００６９】
ステップＳ７１において、ｅｘの値を判定し、ｅｘの値が０以上（右向きの重みの合計が左向きの重みの合計以上の場合）であれば、ステップＳ７２でｅｙの値を判定し、また、ｅｘの値が０未満（右向きの重みの合計が左向きの重みの合計未満の場合）であれば、ステップＳ７３でｅｙの値を判定する。
【００７０】
ステップＳ７２において、ｅｙの値が０以上であれば、ステップＳ７４において、移動方向の候補として、変数ｄ１に「右下方向」、ｄ２に「左下方向」、ｄ３に「右上方向」、ｄ４に「左上方向」を代入する。また、ｅｙの値が０未満であれば、ステップＳ７５において、ｄ１に「右上方向」、ｄ２に「左上方向」、ｄ３に「左下方向」、ｄ４に「右下方向」を代入する。
【００７１】
また、ステップＳ７３において、ｅｙの値が０以上であれば、ステップＳ７６において、移動方向の候補として、ｄ１に「左下方向」、ｄ２に「右下方向」、ｄ３に「左上方向」、ｄ４に「右上方向」を代入する。また、ｅｙの値が０未満であれば、ステップＳ７７において、ｄ１に「左上方向」、ｄ２に「右上方向」、ｄ３に「右下方向」、ｄ４に「左下方向」を代入する。
【００７２】
そして、ステップＳ７８において、ノードがページ区切りから移動方向ｄ１の反対側にはみ出ている分だけ移動方向ｄ１の向きにノードを移動し、他のノードと重なる場合は、ｄ２、ｄ３、ｄ４順に同様の移動を行う。但し、ｄ４による移動によっても、他のノードと重なる場合は移動しないこととする。
【００７３】
以上、図１３、１４では、ノードが右下のページ区切りと重なる場合について示してきたが、左上、左下、右上のページ区切りと重なる場合についても、同様な移動処理が適用される。
【００７４】
図１５は、本発明の実施の形態になるノード移動処理による表示結果例（複数のエッジを有する場合の例）を示す。実施例は、ＵＭＬのクラス図を対象としたものである。（１）は、ノード移動処理を適用する前の状態を示しており、「Ｃｌａｓｓ１」について、左方向に移動させる原因となるノードは「Ｃｌａｓｓ２」と「Ｃｌａｓｓ３」の２つであり、それらのエッジは「依存」と「関連」であるため、エッジの重み合計値は２である。右方向に移動させる原因となるノードは、「Ｃｌａｓｓ４」の１つであり、そのエッジは汎化であるため、重み値は３となっている。（２）は、右方向に移動させる重みの合計値が大きいため、右方向に移動させる移動処理が適用された結果を示している。
（実施例２）
実施例２では、ページ区切りの上に重なっているすべてのノードをページ内におさめるためにノードを移動する処理を扱う。その際、ノード間の相対的な位置関係をできるだけ維持するために全てのノードの位置を一定の割合で移動することとする。
【００７５】
図１６は、本発明の実施の形態になる全ノードシフトによるノード移動を説明する図である。本例は、ページ区切り（禁止領域）に重なったノード１、ノード３の移動だけでなく、ページ内にある他のノード２、ノード４も移動対象とし、結果的に１つのページ内に全ノードの位置を調整して納めることを目的としている。
【００７６】
図１７は、本発明の実施の形態になるノード移動処理の全体フロー (実施例２：全ノードシフト）を示す。
【００７７】
図８の実施例１における全体フローと同様に、ループ処理名「ページを選択」において、ページ区切り位置で図全体を分割し、ｘ軸方向にＮｘ個、ｙ軸方向にＮｙ個の升目状にする。左上のページをＰ（１，１）、右下のページをＰ（Ｎｘ，Ｎｙ）と表現すると、Ｐ（１，１）、Ｐ（２，１）、・・・、Ｐ（Ｎｘ，１）、・・・、Ｐ（１，２）、・・・、Ｐ（Ｎｘ，Ｎｙ）のように左上から右下の方向に順番に1 ページずつ選択する。
【００７８】
ステップＳ８１において、上下左右の４方向のページ区切り線のいずれかとページ内のノードとが重なっているかどうか判定する。
【００７９】
その結果、重なりノードがあれば、ステップＳ８２において、当該ノードの移動処理を行う。
【００８０】
図１８は、本発明の実施の形態になる全ノードシフトによるノード移動処理フローを示す。まず、ステップＳ９１において、左右のページ区切りとノードが重なっている場合を判定し、重なったノードがあれば、ステップＳ９２において、左右方向のノードの移動処理を行う。
【００８１】
つぎに、ステップＳ９３において、上下のページ区切りとノードが重なっている場合を判定し、重なったノードがあれば、ステップＳ９４において、上下方向のノードの移動処理を行う。
【００８２】
図１９は、本発明の実施の形態になる全ノードシフトによるノード移動処理の詳細フロー（その１）を示す。本フローは、図１８のステップＳ９２の左右方向のノードの移動処理の詳細フローを示している。
【００８３】
まず、ステップＳ１０１において、ページ内の全てのノードの位置を保存する。つぎに、ステップＳ１０２において、ノードの左端のＸ座標値が最小のノードを探す。Ｘ座標が左のページ区切り位置より小さいならば、ページ区切りから左に出ている量ａ（≧０) を算出する。
【００８４】
ステップＳ１０３において、ノードの右端のＸ座標値が最大のノードを探す。Ｘ座標が右のページ区切り位置より大きいならば、ページ区切りから左に出ている量ｂ（≧０) を算出する。
【００８５】
そして、ステップＳ１０４において、ページ内の全てのノードを右方向にａだけ移動する。
【００８６】
つぎに、ループ処理「ノードを選択」において、ページ内の全ノードについて１つずつ選択して、ループ内の処理を行う。
【００８７】
ステップＳ１０５において、ノードを左方向にｘ（ａ＋ｂ）／（Ｌ＋ａ＋ｂ）だけ移動する。ここで、Ｌは、ページの横幅、ｘは、ノードの右端のｘ座標値を示す。但し、ノード左端がページ区切り左端より左になる場合、ノード左端をページ区切り左端に合わせる。
【００８８】
ループ処理後、ステップＳ１０６において、ページ内のノード間に重なりが生じた場合は、ノードの位置を全て元に戻す。
【００８９】
図２０は、本発明の実施の形態になる全ノードシフトによるノード移動処理の詳細フロー（その２）を示す。本フローは、図１８のステップＳ９４の上下方向のノードの移動処理の詳細フローを示している。
【００９０】
まず、ステップＳ１１１において、ページ内の全てのノードの位置を保存する。つぎに、ステップＳ１１２において、ノードの上端のＹ座標値が最小のノードを探す。Ｙ座標が上のページ区切り位置より小さいならば、ページ区切りから上に出ている量ａ（≧０) を算出する。
【００９１】
ステップＳ１１３において、ノードの下端のＸ座標値が最大のノードを探す。Ｘ座標が下のページ区切り位置より大きいならば、ページ区切りから下に出ている量ｂ（≧０) を算出する。
【００９２】
そして、ステップＳ１１４において、ページ内の全てのノードを下方向にａだけ移動する。
【００９３】
つぎに、ループ処理「ノードを選択」において、ページ内の全ノードについて１つずつ選択して、ループ内の処理を行う。
【００９４】
ステップＳ１１５において、ノードを上方向にｙ（ａ＋ｂ）／（Ｌ＋ａ＋ｂ）だけ移動する。ここで、Ｌは、ページの縦幅、ｙは、ノードの下端のｙ座標値を示す。但し、ノード上端がページ区切り上端より上になる場合、ノード上端をページ区切り上端に合わせる。
【００９５】
ループ処理後、ステップＳ１１６において、ページ内のノード間に重なりが生じた場合は、ノードの位置を全て元に戻す。
【図面の簡単な説明】
【００９６】
【図１】本発明の実施の形態になるグラフ構造図処理装置の基本構成を示す図である。
【図２】本発明の実施の形態になるページ区切り位置におけるノードの移動処理パターンを示す図である。
【図３】本発明の実施の形態になるページ区切り重なりノードの移動処理パターン（続き）を示す図である。
【図４】本発明の実施の形態になるページ区切り位置の座標を示す図である。
【図５】本発明の実施の形態になるノード情報テーブルのデータ構成例を示す図である。
【図６】本発明の実施の形態になるエッジ情報テーブルのデータ構成例を示す図である。
【図７】本発明の実施の形態になるエッジ種別毎の重み情報テーブルのデータ構成例を示す図である。
【図８】本発明の実施の形態になるノード移動処理の全体フロー（実施例１）を示す図である。
【図９】本発明の実施の形態になるノードの移動処理の詳細フロー（その１：ノードが右のページ区切りと重なる場合）を示す図である。
【図１０】本発明の実施の形態になるノードの移動処理の詳細フロー（その１−続き）を示す図である。
【図１１】本発明の実施の形態になるノードの移動処理の詳細フロー（その２：ノードが下のページ区切りと重なる場合）示す図である。
【図１２】本発明の実施の形態になるノードの移動処理の詳細フロー（その２−続き）を示す図である。
【図１３】本発明の実施の形態になるノードの移動処理の詳細フロー（その３：ノードが右下のページ区切りと重なる場合）を示す図である。
【図１４】本発明の実施の形態になるノードの移動処理の詳細フロー（その３−続き）を示す図である。
【図１５】本発明の実施の形態になるノード移動処理による結果表示例（複数のエッジを有する場合の例）を示す図である。
【図１６】本発明の実施の形態になる全ノードシフトによるノード移動を説明する図である。
【図１７】本発明の実施の形態になるノード移動処理の全体フロー (実施例２：全ノードシフト）を示す図である。
【図１８】本発明の実施の形態になる全ノードシフトによるノード移動処理フローを示す図である。
【図１９】本発明の実施の形態になる全ノードシフトによるノード移動処理の詳細フロー（その１）を示す図である。
【図２０】本発明の実施の形態になる全ノードシフトによるノード移動処理の詳細フロー（その２）を示す図である。
【符号の説明】
【００９７】
１  グラフ構造図処理装置
２  ディスプレイ装置／印刷装置
１０  ＯＳ（オペレーティングシステム）
１１  ユーザインタフェース処理部
１２  グラフデータ管理部
１００  ノード位置調整プログラム
【図１】
2010113422.tif 000003
【図２】
2010113422.tif 000004
【図３】
2010113422.tif 000005
【図４】
2010113422.tif 000006
【図５】
2010113422.tif 000007
【図６】
2010113422.tif 000008
【図７】
2010113422.tif 000009
【図８】
2010113422.tif 000010
【図９】
2010113422.tif 000011
【図１０】
2010113422.tif 000012
【図１１】
2010113422.tif 000013
【図１２】
2010113422.tif 000014
【図１３】
2010113422.tif 000015
【図１４】
2010113422.tif 000016
【図１５】
2010113422.tif 000017
【図１６】
2010113422.tif 000018
【図１７】
2010113422.tif 000019
【図１８】
2010113422.tif 000020
【図１９】
2010113422.tif 000021
【図２０】
2010113422.tif 000022