(57)【特許請求の範囲】
【請求項１】
第１のコネクタにより互いに接続された第１のオブジェクトおよび第２のオブジェクトを含む図形を表示する表示手段と、
ユーザ操作により上記表示手段の画面上で第３のオブジェクトがドラッグされて上記第１のコネクタに対して予め決められた位置にドロップされたときに、上記第１のオブジェクトと上記第３のオブジェクトとを接続する第２のコネクタおよび上記第３のオブジェクトと上記第２のオブジェクトとを接続する第３のコネクタを生成する編集手段と、
上記第１のオブジェクトと上記第２のオブジェクトとの間の距離が、それらの間に上記第３のオブジェクトを収容するために十分であるか否かを判断する判断手段と、
上記距離が十分であった場合は、上記第１および第２のオブジェクトの位置を移動させず、上記距離が十分でなかった場合に限り、上記第１および第２のオブジェクトの少なくとも一方を移動させる移動手段、
を有する図形編集装置。
【請求項２】
上記編集手段は、上記第１のコネクタと上記第３のオブジェクトとが互いに重なりあったときに、上記第２および第３のコネクタを生成する請求項１に記載の図形編集装置。
【請求項３】
オブジェクトどうしの間の従属関係を管理する管理手段をさらに有し、
その管理手段は、上記第３のオブジェクトが上記第１のオブジェクトと上記第２のオブジェクトとの間に挿入される前に上記第２のオブジェクトが上記第１のオブジェクトに従属していた場合には、上記第３のオブジェクトを上記第１のオブジェクトに従属させ、上記第２のオブジェクトを上記第３のオブジェクトに従属させる請求項１に記載の図形編集装置。
【請求項４】
上記表示手段は、第１のコネクタにより互いに接続された第１のオブジェクトおよび第２のオブジェクトを含む図形を表示し、
上記編集手段は、ユーザ操作により指定された上記表示手段の画面上における領域が上記第１のコネクタと重なることにより上記第１のコネクタが選択されたときに、上記第１のオブジェクトと上記第３のオブジェクトとを接続する第２のコネクタおよび上記第３のオブジェクトと上記第２のオブジェクトとを接続する第３のコネクタを生成する、
ことを特徴とする請求項１に記載の図形編集装置。
【請求項５】
上記編集手段は、上記第１のコネクタが選択される前に上記第２のオブジェクトが表示されていた位置に上記第３のオブジェクトを表示し、上記第２のオブジェクトをシフトする請求項４に記載の図形編集装置。
【請求項６】
各枡目がそれぞれ１つのオブジェクトを表示するための領域として定義された仮想座標系を提供する座標系提供手段をさらに有し、
上記表示手段は、上記仮想座標系を用いて各オブジェクトを表示し、上記編集手段は、上記仮想座標系を用いて各オブジェクトを配置する請求項４に記載の図形編集装置。
【請求項７】
上記表示手段は、第１のオブジェクト、複数の第２のオブジェクト、および上記第１のオブジェクトと上記複数の第２のオブジェクトとをそれぞれ接続する複数の第１のコネクタを表示し、
上記編集手段は、上記複数の第１のコネクタのなかの２以上のコネクタが選択されたときに、上記第１のオブジェクトと上記第３のオブジェクトとを接続する第２のコネクタを生成するとともに、上記選択された２以上の第１のコネクタに接続されていた２以上の第２のオブジェクトがそれぞれ上記第１のオブジェクトに接続することなく上記第３のオブジェクトとそれぞれ接続するための２以上の第３のコネクタを生成する、
ことを特徴とする請求項１に記載の図形編集装置。
【請求項８】
表示手段が、第１のコネクタにより互いに接続された第１のオブジェクトおよび第２のオブジェクトを含む図形を表示し、
編集手段が、ユーザ操作により上記表示手段の画面上で第３のオブジェクトがドラッグされて上記第１のコネクタに対して予め決められた位置にドロップされたときに、上記第１のオブジェクトと上記第３のオブジェクトとを接続する第２のコネクタおよび上記第３のオブジェクトと上記第２のオブジェクトとを接続する第３のコネクタを生成し、
判断手段が、上記第１のオブジェクトと上記第２のオブジェクトとの間の距離が、それらの間に上記第３のオブジェクトを収容するために十分であるか否かを判断し、
移動手段が、上記距離が十分であった場合は、上記第１および第２のオブジェクトの位置を移動させず、上記距離が十分でなかった場合に限り、上記第１および第２のオブジェクトの少なくとも一方を移動させる、
図形編集方法。
【請求項９】
上記表示手段が、第１のコネクタにより互いに接続された第１のオブジェクトおよび第２のオブジェクトを含む図形を表示し、
上記編集手段が、ユーザ操作により指定された上記表示手段の画面上における領域が上記第１のコネクタと重なることにより上記第１のコネクタが選択されたときに、上記第１のオブジェクトと上記第３のオブジェクトとを接続する第２のコネクタおよび上記第３のオブジェクトと上記第２のオブジェクトとを接続する第３のコネクタを生成する
ことを特徴とする請求項８に記載の図形編集方法。
【請求項１０】
コンピュータにより実行されたときに、
表示手段が、第１のコネクタにより互いに接続された第１のオブジェクトおよび第２のオブジェクトを含む図形を表示する手順と、
編集手段が、ユーザ操作により上記表示手段の画面上で第３のオブジェクトがドラッグされて上記第１のコネクタに対して予め決められた位置にドロップされたときに、上記第１のオブジェクトと上記第３のオブジェクトとを接続する第２のコネクタおよび上記第３のオブジェクトと上記第２のオブジェクトとを接続する第３のコネクタを生成する手順と、
判断手段が、上記第１のオブジェクトと上記第２のオブジェクトとの間の距離が、それらの間に上記第３のオブジェクトを収容するために十分であるか否かを判断する手順と、
移動手段が、上記距離が十分であった場合は、上記第１および第２のオブジェクトの位置を移動させず、上記距離が十分でなかった場合に限り、上記第１および第２のオブジェクトの少なくとも一方を移動させる手順、
が提供されるプログラムを格納した記憶媒体。
【請求項１１】
上記表示手段が、第１のコネクタにより互いに接続された第１のオブジェクトおよび第２のオブジェクトを含む図形を表示する手順と、
上記編集手段が、ユーザ操作により指定された上記表示手段の画面上における領域が上記第１のコネクタと重なることにより上記第１のコネクタが選択されたときに、上記第１のオブジェクトと上記第３のオブジェクトとを接続する第２のコネクタおよび上記第３のオブジェクトと上記第２のオブジェクトとを接続する第３のコネクタを生成する手順と、
をさらに提供するプログラムを格納した請求項１０に記載の記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
互いに接続されているオブジェクトどうしの間に他のオブジェクトを挿入する装置および方法に係わる。
【０００２】
【従来の技術】
近年、各種フローチャートは、しばしば、コンピュータを用いて作成される。図形等を作成する機能を持ったソフトウェアとしては、例えば、「Ｐｏｗｅｒ  Ｐｏｉｎｔ  （マイクロソフト社）」や「Ｖｉｓｉｏ  （ビジオ社）」などが知られている。
【０００３】
フローチャートは、たとえば、作業工程の手順やソフトウェアプログラムの処理の手順を表すために用いられており、通常、複数のオブジェクト、及びそれら複数のオブジェクトどうしの間を互いに接続するラインまたはコネクタを含んでいる。
【０００４】
図４７（ａ）  は、コンピュータの表示画面に表示されているフローチャートの一例である。ここでは、３つのオブジェクト（オブジェクトＡ〜オブジェクトＣ）が順番に接続されたフローチャートが示されている。なお、破線の枡目は、仮想座標系における表示領域を表しているが、実際には表示されない。各枡目の内側の長方形は、オブジェクトを表す。実線で描かれているオブジェクトは、データが設定されている状態を表し、破線で描かれているオブジェクトは、データが設定されていない状態を表している。破線のオブジェクトは、実際には表示されない。オブジェクト内の文字は、そのオブジェクトにリンク付けられているデータの内容を表す。オブジェクトどうしを互いに接続するラインは、フローチャートにおけるそれらのオブジェクトの順番あるいは従属関係を表す。たとえば、ラインＡＢ（オブジェクトＡとオブジェクトＢとを接続するライン）は、オブジェクトＡの右上角を起点としているので、この場合、オブジェクトＡがオブジェクトＢに対する先行オブジェクトであり、オブジェクトＢがオブジェクトＡの後続オブジェクトであることを表している。
【０００５】
ところで、フローチャートの作成に際しては、オブジェクトの追加や削除に加えて、先に互いに接続されているオブジェクトどうしの間に新たなオブジェクトを挿入するようなケースがしばしば発生する。例えば、オブジェクトＡとオブジェクトＢとの間に新たなオブジェクトＤを挿入するようなケースが発生する。この場合、まず、図４７（ｂ）  に示すように、オブジェクトＡとオブジェクトＢとを接続するラインＡＢを消去する。ラインを消去する際には、たとえば、そのラインの両端の２つのオブジェクトを指定するか、或いは、メニューから消去処理を呼び出した後に消去すべきラインを指定する。
【０００６】
続いて、図４７（ｃ）  に示すように、新たなオブジェクトを生成し、その新規オブジェクトとデータＤとをリンク付ける。オブジェクトを生成する処理は、例えば、メニューから呼び出される。そして、図４７（ｄ）  に示すように、オブジェクトＡとオブジェクトＤとの間、およびオブジェクトＤとオブジェクトＢとの間をそれぞれ接続する。この後、フローチャートを見やすくするために、図４７（ｅ）  に示すように、各オブジェクトを適切に移動させる。この結果、図４７（ｆ）  に示す状態が得られる。
【０００７】
【発明が解決しようとする課題】
上述のように、フローチャート等の作成に際して、互いに接続されているオブジェクトどうしの間に新たなオブジェクトを挿入する処理は既知の技術である。しかしながら、既存のアプリケーションソフトウェアでは、その操作に手間がかかり、ユーザは煩わしさを感じることが多かった。例えば、図４７（ａ）  〜図４７（ｆ）  を参照しながら説明した例においては、ユーザは、（ａ）  新たなオブジェクトを挿入すべき位置に表示されているラインを消去する操作、（ｂ）  先に表示されているオブジェクトと新たに挿入すべきオブジェクトとを接続する操作、（ｃ）  オブジェクトを再配置する操作、を行わなければならない。
【０００８】
この問題は、特に、オブジェクトどうしの間の接続関係が複雑な図形に対して新たなオブジェクトを挿入する場合に顕著になる。一例として、図４８（ａ）  に示す状態において、オブジェクトＡとオブジェクトＢ〜Ｇとの間にオブジェクトＨを挿入して図４８（ｅ）  に示す状態を作成する場合の手順を説明する。この場合、まず、図４８（ｂ）  に示すように、オブジェクトＡとオブジェクトＢ〜Ｇとをそれぞれ接続するラインを一本ずつ消去する。続いて、図４８（ｃ）  に示すように、オブジェクトＨを生成し、オブジェクトＡとオブジェクトＨとを接続する。更に、図４８（ｄ）  に示すように、オブジェクトＨとオブジェクトＢ〜Ｇとの間を１つずつ接続していく。この後、図を見やすくするために各オブジェクトの座標を１つずつ適切に再配置することにより、図４８（ｅ）  に示す状態が得られる。
【０００９】
このように、消去すべきラインの数または新たに設定すべきラインの数が多くなると、それに伴ってユーザの手間や作業時間も増加する。また、ラインの消去や設定に際して、ミスが発生する確率も増加してしまう。
【００１０】
なお、この問題は、フローチャートを作成するアプリケーションソフトウェアのみに係わるものではなく、たとえば、図形作成用のソフトウェアや、回路図等を作成するためのソフトウェアにおいても発生し得る。
【００１１】
本発明の課題は、互いに接続されているオブジェクトどうしの間に他のオブジェクトを挿入する際の操作を簡単にすることである。
【００１２】
【課題を解決するための手段】
本発明の図形編集装置は、第１のコネクタにより互いに接続された第１のオブジェクトおよび第２のオブジェクトを含む図形を表示する表示手段と、第３のオブジェクトが上記第１のコネクタに対して予め決められた位置に配置されたときに、上記第１のオブジェクトと上記第３のオブジェクトとを接続する第２のコネクタおよび上記第３のオブジェクトと上記第２のオブジェクトとを接続する第３のコネクタを生成する編集手段とを有する。
【００１３】
表示手段は、たとえばコンピュータの表示画面に、第１および第２のオブジェクト、第１のコネクタを表示する。また、第３のオブジェクトは、たとえばユーザの操作により、上記表示画面上の所望の位置に移動される。
【００１４】
編集手段により第２および第３のコネクタが生成されると、第１のオブジェクト、第３のオブジェクト、第２のオブジェクトが順番に接続された状態が生成されることになる。すなわち、第１のオブジェクトと第２のオブジェクトとの間に第３のオブジェクトが挿入された状態が得られる。
【００１５】
したがって、第３のオブジェクトを上記第１のコネクタに対して予め決められた位置に配置することにより、その第３のオブジェクトは、自動的に、第１のオブジェクトと第２のオブジェクトとの間に挿入される。
【００１６】
なお、第２および第３のコネクタは、第１のコネクタとは別に生成されるものであってもよいし、或いは、第１のコネクタを第２または第３のコネクタとして使用するようにしてもよい。
【００１７】
本発明の他の実施形態の図形編集装置は、第１のコネクタにより互いに接続された第１のオブジェクトおよび第２のオブジェクトを含む図形を表示する表示手段と、上記第１のコネクタが選択されたときに、上記第１のオブジェクトと上記第３のオブジェクトとを接続する第２のコネクタおよび上記第３のオブジェクトと上記第２のオブジェクトとを接続する第３のコネクタを生成する編集手段とを有する。
【００１８】
第１のコネクタが、たとえばユーザの操作により、選択されると、その第１のコネクタの両端に接続されている第１および第２のオブジェクトが認識される。そして、編集手段は、その認識結果に従って第２および第３のコネクタを生成する。したがって、上記第１のコネクタを選択することにより、その第３のオブジェクトは、自動的に、第１のオブジェクトと第２のオブジェクトとの間に挿入される。
【００１９】
【発明の実施の形態】
本発明の図形編集方法は、図１に示すように、コンピュータ１の画面に表示された図形等を編集する方法に係わる。図形等は、基本的に、マウス２を用いたユーザによる操作により編集されるが、キーボードから入力する指示により編集することもできる。なお、以下の実施例では、本発明の方法により編集される図形の例としてフローチャートを採り上げて説明する。フローチャートにおいては、各ステップに対応する図形ユニットが、それぞれ１つの「オブジェクト」として扱われる。
第１の実施形態
図２（ａ）  〜図２（ｄ）  は、本発明の第１の実施形態における基本操作を説明する図である。ここでは、オブジェクトＡ、オブジェクトＢ、オブジェクトＣが順番に接続された図形（フローチャート）が表示されている状態において、オブジェクトＡとオブジェクトＢとの間に新たに生成されたオブジェクトＤを挿入する場合を説明する。なお、第１の実施形態の図形編集ソフトウェアは、オブジェクトを表示するための仮想座標系を提供し、各オブジェクトは、その座標系の枡目の中に表示されるものとする。
【００２０】
図２（ａ）  に示す状態において、オブジェクトＡとオブジェクトＢとの間にオブジェクトＤを挿入する場合には、ユーザは、まず、図２（ｂ）  に示すように、ラインＡＢを指定（または選択）する。ラインＡＢは、オブジェクトＡとオブジェクトＢとを接続するラインである。ここで、ラインＡＢは、オブジェクトＡの右上角を起点としているので、この場合、オブジェクトＡがオブジェクトＢに対する先行オブジェクトであり、オブジェクトＢがオブジェクトＡの後続オブジェクトであることを表している。なお、「ライン」は「コネクタ」と呼ばれることもある。
【００２１】
ラインの指定は、たとえば、マウスを用いて所望のラインを直接的にクリックすることにより行ってもよいし、或いは、マウスを用いた範囲指定により行ってもよい。範囲指定によりラインを指定する場合には、その指定された範囲内に存在するラインが指定されることになる。
【００２２】
続いて、ユーザは、オブジェクトＡとオブジェクトＢとの間に挿入すべきオブジェクトを生成する。新たなオブジェクトを生成する処理は、例えば、図形編集ソフトウェアにより提供されている機能を利用する。図形編集ソフトウェアは、通常、ユーザの指示に従って新たなオブジェクトを生成する機能をメニューの中に持っている。
【００２３】
ラインＡＢが指定された状態において新たなオブジェクトが生成されると、そのオブジェクトは、図２（ｃ）  に示すように、オブジェクトＡとオブジェクトＢとの間に自動的に挿入される。このとき、ラインＡＢが消去されると共に、オブジェクトＡとその新規オブジェクトとを接続するラインおよびその新規オブジェクトとオブジェクトＢとを接続するラインが自動的に生成される。これにより、オブジェクトＡ、新規オブジェクト、オブジェクトＢ、オブジェクトＣが順番に接続される。また、新規オブジェクトを含む４つのオブジェクトがそれぞれ仮想座標系の各枡目の中に配置されるように、オブジェクトＢ及びオブジェクトＣは、それぞれ、図中、右方向に移動させられる。
【００２４】
この後、ユーザは、新規オブジェクトに対して情報Ｄを設定する。この結果、図２（ｄ）  に示す状態が得られる。
このように、第１の実施形態の編集方法によれば、互いに接続された第１のオブジェクトと第２のオブジェクトとの間に新たなオブジェクトを挿入しようとする場合には、第１および第２のオブジェクトを互いに接続するラインを指定する操作、および挿入すべきオブジェクトを生成する操作を行うだけでよい。これらの操作により、オブジェクト間の接続が自動的に再設定され、また、各オブジェクトの再配置も自動的に行われる。
【００２５】
次に、第１の実施形態の編集方法を詳しく説明する。以下では、オブジェクトＡとオブジェクトＢとの間に新たなオブジェクトを挿入する例を説明する。オブジェクトＡ及びオブジェクトＢは、図３（ａ）  に示すように、それぞれ（Ｘ，Ｙ）＝（０００，０００）、および（Ｘ，Ｙ）＝（００１，０００）に表示されているものとする。また、オブジェクトＡおよびオブジェクトＢは、ラインＡＢにより互いに接続されている。
【００２６】
図４（ａ）  〜図４（ｄ）  は、第１の実施形態の図形編集ソフトウェアが提供するテーブルの例である。図４（ａ）  に示すオブジェクト情報テーブル、図４（ｂ）  に示すライン情報テーブル、図４（ｄ）  に示すデータテーブルは、第１の実施形態の図形編集ソフトウェアにより描かれている図形の表示状態を表す。換言すれば、図形編集ソフトウェアにより作成される図形は、これらのテーブルに格納されている情報に従って表示される。また、図４（ｃ）  に示す選択インデックステーブルは、作業用のテーブルであり、先に表示されているオブジェクトどうしの間に新たなオブジェクトを挿入する処理に際して使用される。
【００２７】
図４（ａ）  は、オブジェクト情報テーブルの一例を模式的に示す図である。「配列１」は、表示されているオブジェクトを識別するための識別番号である。「表示情報」は、各オブジェクト内に表示される情報である。「位置情報」は、後述するデータテーブルから各オブジェクトに係わる詳細情報を呼び出すための情報である。なお、オブジェクト情報テーブルにおいては、オブジェクトが生成されたときに対応するレコードが追加され、オブジェクトが消去されたときに対応するレコードが削除される。
【００２８】
図４（ｂ）  は、ライン情報テーブルの一例を模式的に示す図である。「配列２」は、表示されているオブジェクトどうしを接続するラインを識別する識別番号である。「前方情報」は、各ラインの前方に配置されているオブジェクトを指示する情報である。また、「後方情報」は、各ラインの後方に配置されているオブジェクトを指示する情報である。なお、「前方情報」および「後方情報」は、オブジェクト情報テーブルの「配列１」の値を用いてオブジェクトを指示する。
【００２９】
図４（ｃ）  は、選択インデックステーブルの一例を模式的に示す図である。「配列３」は、先に表示されているオブジェクト間に新たなオブジェクトを挿入する処理に際して、ユーザにより指定されたラインを識別する識別番号である。「選択情報」は、ユーザにより指定されたラインに係わる情報を呼び出すための情報である。なお、「選択情報」は、ライン情報テーブルの「配列２」の値を用いてラインを識別する。
【００３０】
図４（ｄ）  は、データテーブルの一例を模式的に示す図である。「配列４」は、オブジェクト情報テーブルから各オブジェクトに係わる詳細情報を呼び出すために利用される識別子である。「データ名」は、各オブジェクト内に表示される情報である。「先行情報」は、各オブジェクトに先行するオブジェクトを表す情報である。「Ｘ座標」および「Ｙ座標」は、各オブジェクトが表示される位置の座標であり、この実施例では、仮想座標系を用いて表される。
【００３１】
図４（ａ）  、図４（ｂ）  および図４（ｄ）  に示す各テーブルの内容は、図３（ａ）  に示す図形の表示状態に対応している。すなわち、図４（ａ）  に示すオブジェクト情報テーブルにおいて、「配列１＝００」のレコードには、オブジェクトＡが登録されている。また、このレコードに登録されているオブジェクトの詳細情報は、データテーブルの「配列４＝３１」のレコードに登録されている。したがって、オブジェクトＡを表示すべき座標として、（Ｘ，Ｙ）＝（０００，０００）が得られる。また、オブジェクトＢを表示すべき座標として、（Ｘ，Ｙ）＝（００１，０００）が得られる。
【００３２】
図４（ｂ）  に示すライン情報テーブルには、「配列１＝００」のレコードに登録されているオブジェクトと「配列１＝０１」のレコードに登録されているオブジェクトとを接続するラインが登録されている。ここで、「配列１＝００」のレコードにはオブジェクトＡが登録されており、「配列１＝０１」のレコードにはオブジェクトＢが登録されている。したがって、図４（ｂ）  に示すライン情報テーブルには、オブジェクトＡとオブジェクトＢとを接続するライン（すなわち、ラインＡＢ）が登録されていることになる。なお、図４（ｂ）  に示す「前方情報」および「後方情報」により、オブジェクトＡがオブジェクトＢに対する先行オブジェクトであり、オブジェクトＢがオブジェクトＡの後続オブジェクトであることが表わされている。
【００３３】
次に、図３（ａ）  に示す状態においてオブジェクトＡとオブジェクトＢとの間に新たなオブジェクトを挿入することにより図３（ｂ）  に示す状態を得る際の処理を説明する。
【００３４】
オブジェクトＡとオブジェクトＢとの間に新たなオブジェクトを挿入する場合には、ユーザは、まず、オブジェクトＡとオブジェクトＢとを接続するラインＡＢを指定する。ラインの指定方法について図５を参照しながら説明する。
【００３５】
ユーザは、マウス等を用いて所望の２点（点Ｐおよび点Ｑ）を指示することにより、長方形を指定する。この長方形の各辺は、それぞれ、下記の式により表される。
【００３６】
ｘ＝ｘ１      ・・・（１）
ｘ＝ｘ２      ・・・（２）
ｙ＝ｙ１      ・・・（３）
ｙ＝ｙ２      ・・・（４）
なお、所望の２点を指示することにより長方形を指定する処理は、例えば、ウィンドウズシステム（マイクロソフト社のＯＳ）などにより提供される範囲指定機能を利用する。
【００３７】
上記長方形（以下、この長方形のことを「選択範囲ＰＱ」と呼ぶ。）が指定されると、図形編集ソフトウェアは、その選択範囲ＰＱを通過するラインが存在するか否かを調べる。各ラインを特定する方程式は、たとえば、ユーザにより選択範囲ＰＱが入力されたときに算出してもよいし、或いはライン情報テーブルにおいて付加情報として予め登録しておいてもよい。各ラインの方程式は、一般に、下式で表される。
【００３８】
ｙ＝ａｘ＋ｂ    ・・・（５）
図形編集ソフトウェアは、ライン情報テーブルに登録されている各ラインについて、そのラインと上記（１）  〜（４）  によって表される各直線との交点が存在するか否かを調べる。交点が存在する場合には、その交点のｙ座標の値が、点Ｐのｙ座標の値（ｙ１  ）と点Ｑのｙ座標の値（ｙ２  ）との間であるか否かを調べる。そして、その交点のｙ座標の値が点Ｐのｙ座標の値と点Ｑのｙ座標の値との間であった場合には、当該ラインが選択範囲ＰＱを通過するものとみなし、そのラインを選択インデックステーブルに登録する。したがって、図５に示す例の場合、ラインＡＢが選択インデックステーブルに登録される。なお、図４（ｃ）  に示す選択インデックステーブルは、図３（ａ）  に示す状態においてラインＡＢが指定されたときの状態を示している。
【００３９】
このように、図形編集ソフトウェアは、ユーザにより選択範囲ＰＱが入力されると、その選択範囲ＰＱを通過するラインを検出して選択インデックステーブルに登録する。
【００４０】
続いて、ユーザは、オブジェクトＡとオブジェクトＢとの間に挿入すべきオブジェクトを生成する旨の指示を入力する。この指示が入力されると、図形編集ソフトウェアは、オブジェクト情報テーブルおよびデータテーブルにおいて、新たに生成されるオブジェクトに対応するレコードを追加する。図４に示す例では、オブジェクト情報テーブルにおいて「配列１＝０２」が追加され、データテーブルにおいては「配列４＝３２」が追加されている。
【００４１】
このレコードの追加に続いて、図形編集ソフトウェアは、オブジェクトＢが表示されている位置に新たに生成したオブジェクトが表示されるように、テーブルを更新する。まず、以下の手順によりオブジェクトＢの表示位置を取得する。
【００４２】
選択インデックステーブルの「選択情報＝１０」
↓
ライン情報テーブルの「配列２＝１０」の「後方情報＝０１」
↓
オブジェクト情報テーブルの「配列１＝０１」の「位置情報＝３０」
↓
データテーブルの「配列４＝３０」の「Ｘ座標」および「Ｙ座標」
この手順により、「Ｘ座標＝００１」および「Ｙ座標＝０００」が得られる。そして、この取得した「Ｘ座標」および「Ｙ座標」をデータテーブルの「配列４＝３２」のレコードに書き込む。この結果、データテーブルは、図６（ａ）  に示す状態に更新される。
【００４３】
続いて、図形編集ソフトウェアは、データテーブルにおいて「Ｘ座標」の値が「配列４＝３２」に新たに登録されたレコードの「Ｘ座標」の値よりも大きく、且つ、「Ｙ座標」の値が「配列４＝３２」に新たに登録されたレコードの「Ｙ座標」の値と同じであるレコードを抽出する。そして、抽出した各レコードの「Ｘ座標」の値にそれぞれ「１」を加算する。なお、図３に示す例においては、このようなレコードは抽出されない。
【００４４】
続いて、図形編集ソフトウェアは、オブジェクト間を接続するラインを再設定するためにテーブルを更新する。すなわち、まず、新たに生成するラインのためのレコード（配列２＝１１）をライン情報テーブルに追加する。そして、選択インデックステーブルに登録されているラインの「選択情報（＝１０）」をキーとしてライン情報テーブルにアクセスし、そのアクセスにより得られるレコードの「後方情報（＝０１）」を、ライン情報テーブルにおいて、その新たに追加されたレコードの「後方情報」として書き込む。また、そのアクセスにより得られるレコードの「後方情報」として、オブジェクト情報テーブルに新たに追加されたレコードの「配列１（＝０２）」を書き込む。さらに、ライン情報テーブルに新たに追加されたレコードの「前方情報」として、オブジェクト情報テーブルに新たに追加されたレコードの「配列１（＝０２）」を書き込む。上記処理により、ライン情報テーブルは、図６（ｂ）  に示す状態になる。
【００４５】
上記処理に続いて、オブジェクトＢを右方向に移動させるためにテーブルを更新する。まず、以下の手順により、オブジェクトＢの座標を取得する。
ライン情報テーブルの「配列２＝１１」の「後続情報＝０１」
↓
オブジェクト情報テーブルの「配列１＝０１」の「位置情報＝３０」
↓
データテーブルの「配列４＝３０」の「Ｘ座標」および「Ｙ座標」
この手順により、「Ｘ座標＝００１」および「Ｙ座標＝０００」が得られる。そして、この取得した「Ｘ座標」に「１」を加算する。
【００４６】
上記処理の結果、オブジェクト情報テーブル、ライン情報テーブル、及びデータテーブルは、ぞれぞれ図７（ａ）  、図７（ｂ）  、及び図７（ｃ）  に示す状態になる。そして、これらのテーブルに従ってデータを表示することにより、図３（ｂ）  に示す図形が得られる。なお、選択インデックステーブルは、上記処理が終了したときに削除される。
【００４７】
図８は、オブジェクトどうしの間に新たなオブジェクトを挿入する処理におけるユーザの操作のフローチャートである。ステップＳ１では、ユーザは、ラインを指定（または、選択）する。ステップＳ２では、ユーザは、新規オブジェクトを生成する。ラインを指定する方法、およびオブジェクトを生成する方法については、上述した通りである。ステップＳ３では、ステップＳ２において生成した新規オブジェクトに所望の情報を設定する。この操作は、たとえば、キーボードを用いた文字列等の入力、あるいは予め作成されたデータの貼付けである。
【００４８】
図９は、図形編集ソフトウェアの動作の概略フローチャートである。このフローチャートの処理は、ユーザによりラインが指定されたときに実行される。
ステップＳ１１では、ユーザにより指定されたラインを検出する。ステップＳ１２では、図形データを更新する。図形データとは、少なくとも図４に示したテーブルに登録されている情報を含む。なお、ステップＳ１２は、ユーザにより新たなオブジェクトを生成する旨の指示が入力されたときに実行される。ステップＳ１３では、ステップＳ１２において更新された図形データに従って図形を表示する。
【００４９】
図１０は、「指定されたラインの検出」の詳細フローチャートであり、図９のステップＳ１１の処理に対応する。このフローチャートの処理は、ライン情報テーブルに登録されている各ラインについて順番に実行される。すなわち、この処理は、表示されている各ラインについて実行される。
【００５０】
ステップＳ２１では、ライン情報テーブルに登録されているラインを取得し、そのラインを表す方程式を求める。ラインの方程式を求める方法は、既知の技術により容易に実現される。
【００５１】
ステップＳ２２では、ステップＳ２１で取得したラインがユーザにより入力された選択範囲を通過するか否かを調べる。この判断のための方法は、図５を参照しながら説明した通りである。上記ラインが選択範囲を通過する場合にはステップＳ２３の処理が実行され、そうでない場合にはステップＳ２３はスキップされる。
【００５２】
ステップＳ２３では、上記選択範囲を通過するラインを選択インデックステーブルに登録する。具体的には、選択インデックステーブルに新たなレコードを追加し、そのレコードの「選択情報」として、ステップＳ２１で取得したラインに対応する「配列２」の値を書き込む。ステップＳ２４は、ライン情報テーブル内に未処理のラインが残っていた場合に、ステップＳ２１に戻って次のラインを取得するための処理である。
【００５３】
上記処理により、ユーザにより指定されたラインが選択インデックステーブルに登録される。なお、ユーザが複数のラインを指定したときには、複数のラインが選択インデックステーブルに登録されることになる。
【００５４】
図１１は、「図形データの更新」の詳細フローチャートであり、図９のステップＳ１２の処理に対応する。このフローチャートの処理は、選択インデックステーブルに登録されている各レコードについて順番に実行される。すなわち、この処理は、ユーザにより指定された各ラインについて実行される。
【００５５】
ステップＳ３１では、ユーザの指示により新たに生成されるべきオブジェクトを描画するためのデータをメモリ上の所定の領域にロードする。ステップＳ３２では、新規オブジェクトのためのレコードをオブジェクト情報テーブルおよびデータテーブルに追加する。ステップＳ３３では、選択インデックステーブルからレコードを抽出する。
【００５６】
ステップＳ３４では、ステップＳ３３で抽出したレコードが選択インデックステーブルにおける第１番目のレコードであるか否かを調べる。第１番目のレコードであった場合には、ステップＳ３５の処理が実行され、そうでなかった場合にはステップＳ３５はスキップされる。
【００５７】
ステップＳ３５では、新規オブジェクトを表示するための座標が設定される。ステップＳ３６では、新規オブジェクトを挿入することにより表示位置が変更されるオブジェクトの座標が更新される。ステップＳ３７では、新規オブジェクトを挿入することにより接続関係が変化するラインに係わる情報が変更される。なお、ステップＳ３５〜Ｓ３７の各処理については後述詳しく説明する。ステップＳ３８は、選択インデックステーブルに未処理のレコードが残っていた場合に、ステップＳ３３に戻って次のレコードを取得するための処理である。
【００５８】
上記処理により、新規オブジェクトを表示するためのデータが設定される。また、ユーザにより指定されたラインの後方に接続されているオブジェクトの表示位置の座標が更新される。さらに、オブジェクト間を接続するラインが再設定される。
【００５９】
図１２は、新規オブジェクトを表示する座標を設定する処理の詳細フローチャートであり、図１１のステップＳ３５の処理に対応する。なお、図１２に示すフローチャートの処理は、選択インデックステーブルの第１番目のレコードのみについて実行される。
【００６０】
ステップＳ４１では、選択インデックステーブルの第１番目のレコードの「選択情報」が抽出される。ステップＳ４２では、ステップＳ４１において抽出された「選択情報」をキーとしてライン情報テーブルがアクセスされ、「後方情報」が抽出される。ステップＳ４３では、ステップＳ４２で抽出された「後方情報」をキーとしてオブジェクト情報テーブルがアクセスされ、「位置情報」が抽出される。ステップＳ４４では、ステップＳ４３で抽出された「位置情報」をキーとしてデータテーブルがアクセスされ、「Ｘ座標」及び「Ｙ座標」が抽出される。ステップＳ４５では、データテーブルにおいて、新規オブジェクトの「Ｘ座標」及び「Ｙ座標」として、ステップＳ４４で抽出した「Ｘ座標」及び「Ｙ座標」が設定される。
【００６１】
図１３は、先に表示されているオブジェクトを表示するための座標を必要に応じて変更する処理の詳細フローチャートであり、図１１のステップＳ３６の処理に対応する。なお、図１３に示すフローチャートの処理は、選択インデックステーブルに登録されている各レコードについて実行される。
【００６２】
ステップＳ４１〜Ｓ４４は、図１２を参照しながら説明した通りである。ただし、図１３のフローチャートについての説明においては、ステップＳ４１〜Ｓ４４の処理により得られる「Ｘ座標」および「Ｙ座標」をそれぞれ「Ｘａ  」および「Ｙａ  」と呼ぶことにする。
【００６３】
ステップＳ５１〜Ｓ５４の処理は、データテーブルの各レコードについて実行される。ステップＳ５１では、データテーブルからレコードを取得し、そのレコードから「Ｘ座標」および「Ｙ座標」を抽出する。なお、ステップＳ５１で抽出した「Ｘ座標」および「Ｙ座標」をそれぞれ「Ｘｉ  」および「Ｙｉ  」と呼ぶことにする。
【００６４】
ステップＳ５２では、ステップＳ４４で抽出した「Ｙ座標（Ｙａ  ）」とステップＳ５１で抽出した「Ｙ座標（Ｙｉ  ）」が互いに一致しているか否かを調べる。互いに一致していればステップＳ５３が実行され、そうでない場合にはステップＳ５３およびＳ５４はスキップされる。ステップＳ５３では、ステップＳ５１で抽出した「Ｘ座標（Ｘｉ  ）」がステップＳ４４で抽出した「Ｘ座標（Ｘａ  ）」よりも大きいか否かを調べる。「Ｘ座標（Ｘｉ  ）」が「Ｘ座標（Ｘａ  ）」よりも大きい場合にはステップＳ５４が実行され、そうでない場合にはステップＳ５４はスキップされる。
【００６５】
ステップＳ５４では、ステップＳ５１で抽出した「Ｘ座標（Ｘｉ  ）」に「１」が加算される。ステップＳ５５は、データテーブルに未処理のレコードが残っていた場合に、ステップＳ５１に戻って次のレコードを取得させるための処理である。
【００６６】
上記処理により、ユーザにより選択されたラインの後方に接続されているオブジェクトを表示するためのＸ座標が変更される。この結果、この更新されたデータテーブルに従って図形が描かれる際には、それらのオブジェクトの表示位置がＸ方向にシフトされる。
【００６７】
図１４は、接続関係が変更されるラインに係わる設定を変更する処理の詳細フローチャートであり、図１１のステップＳ３７の処理に対応する。なお、図１４に示すフローチャートの処理は、選択インデックステーブルに登録されている各レコードについて実行される。
【００６８】
図１４のフローチャートの説明においては、図１５に示す例を参照する。図１５に示す例では、図１５（ａ）  に示す状態においてラインＡＢが選択され、オブジェクトＡとオブジェクトＢとの間に新規オブジェクトが挿入される。そして、この結果、図１５（ｂ）  に示す表示状態が得られる。この場合、選択ラインの「後方情報」は、「オブジェクトＢ」から「新規オブジェクト」に変更される。また、新規ラインの「前方情報」および「後方情報」として、それぞれ「新規オブジェクト」および「オブジェクトＢ」が設定される。さらに、オブジェクトＢの表示位置が右方向（Ｘ方向）にシフトされる。
【００６９】
ステップＳ６１では、新規ラインを描画するためのデータをメモリ上の所定の領域にロードする。このとき、ライン情報テーブルにその新規ラインのためのレコードが追加される。
【００７０】
ステップＳ６２では、新規ラインの「後方情報」として選択ラインの「後方情報」を設定する。たとえば、図１５（ａ）  では、選択ラインの後方に「オブジェクトＢ」が接続されている。したがって、この場合、新規ラインの「後方情報」として「オブジェクトＢ」が設定されることになる。
【００７１】
ステップＳ６３では、選択ラインの「後方情報」として新規オブジェクトのインデックスを設定する。また、ステップＳ６４では、新規ラインの「前方情報」として新規オブジェクトのインデックスを設定する。ここで、「インデックス」とは、たとえば、オブジェクトを識別するための識別番号であり、オブジェクト情報テーブルの「配列１」に相当する。
【００７２】
ステップＳ６５〜Ｓ６７は、新規オブジェクトが表示されるべき位置に存在しているオブジェクトを、Ｘ方向に移動させるための処理である。すなわち、ステップＳ６５〜Ｓ６７は、図１５（ａ）  に示す例においては、オブジェクトＢを右方向に移動させるための処理である。
【００７３】
ステップＳ６５では、ライン情報テーブルから新規ラインの「後方情報」が抽出される。ステップＳ６６では、ステップＳ６５で抽出された「後方情報」をキーとしてオブジェクト情報テーブルがアクセスされ、対応する「位置情報」が抽出される。ステップＳ６７では、ステップＳ６６で抽出された「位置情報」をキーとしてデータテーブルがアクセスされ、「Ｘ座標」が抽出される。そして、その抽出した「Ｘ座標」に「１」が加算される。
【００７４】
次に、第１の実施形態の編集方法について他の具体例を説明する。以下では、図１６（ａ）  に示す状態において、オブジェクトＡとオブジェクトＢとの間であって且つオブジェクトＡとオブジェクトＣとの間に新規オブジェクトを挿入することにより、図１６（ｂ）  に示す状態を得る場合の編集方法について説明する。
【００７５】
図１７は、表示画面の説明図であり、図１６（ａ）  に示す状態に対応している。この実施例では、仮想座標系が用いられている。すなわち、図形を構成する各オブジェクトの表示位置は、仮想座標系を用いて表される。たとえば、オブジェクトＡの表示位置は、仮想座標系において、（Ｘ，Ｙ）＝（０，０）として表される。
【００７６】
図１８（ａ）  は、オブジェクト情報テーブルの一例を示す図である。オブジェクト情報テーブルは、表示されている各オブジェクトに係わる情報を格納する。なお、図１８（ａ）  に示すオブジェクト情報テーブルは、図１７に示す表示状態を表している。すなわち、オブジェクトＡ〜オブジェクトＧは、それぞれオブジェクト番号「１」〜「７」が割り当てられている。また、各オブジェクトの表示位置の座標が格納されている。なお、「配列１（インデックス）」がオブジェクト情報テーブルの各レコードを特定する番号であるのに対し、「オブジェクト番号」は表示されているオブジェクトを識別するための番号であるので、それらは必ずしも互いに一致しない。
【００７７】
図１８（ｂ）  は、ライン情報テーブルの一例を示す図である。ライン情報テーブルは、表示されている各ラインに係わる情報を格納する。なお、図１８（ｂ）  に示すライン情報テーブルは、図１７に示す表示状態を表している。すなわち、各ラインに対して、それぞれライン番号（連結線番号）として「１」〜「６」が割り当てられている。また、各ラインの前方に接続されているオブジェクトを特定するための「前方情報」及び各ラインの後方に接続されているオブジェクトを特定するための「後方情報」が格納されている。なお、「配列２（インデックス）」がライン情報テーブルの各レコードを特定する番号であるのに対し、「ライン番号」は表示されているラインを識別するための番号であるので、それらは必ずしも互いに一致しない。
【００７８】
図１７に示す状態において、オブジェクトＡとオブジェクトＢとの間であって且つオブジェクトＡとオブジェクトＣとの間に新規オブジェクトを挿入する場合には、ユーザは、図１９（ａ）  に示すように、マウス等を用いた範囲指定により、オブジェクトＡとオブジェクトＢとを接続するラインおよびオブジェクトＡとオブジェクトＣとを接続するラインを選択する。すなわち、ライン１およびライン３を選択する。
【００７９】
図形編集ソフトウェアは、ユーザにより選択されたラインを検出する。ラインを検出する方法は、図５を参照しながら上述した通りである。そして、ユーザにより選択されたラインは、図１９（ｂ）  に示すように、選択インデックステーブルに登録される。なお、選択インデックステーブルに登録される「登録位置」は、ライン情報テーブルから該当するラインに係わる情報を取り出すための「インデックス（配列２）」である。
【００８０】
続いて、ユーザは、上記の位置に挿入すべき新規オブジェクトを生成する。この指示を受け取ると、図形編集ソフトウェアは、まず、その新規オブジェクトを描くためのデータ、およびその新規オブジェクトの挿入に伴って新たに必要となるラインを描くためのデータをメモリ上の所定の領域にロードする。そして、図２０（ａ）  に示すように、オブジェクト情報テーブルに新規オブジェクトのためのレコードが追加され、また、図２０（ｂ）  に示すように、ライン情報テーブルに新規ラインのためのレコードが追加される。
【００８１】
図形編集ソフトウェアは、選択インデックステーブルの第１番目のレコードに登録されているラインについて以下の処理を行う。
まず、図２１に示すように、選択インデックステーブルの第１番目のレコードから「選択位置」を抽出し、その「選択位置」をキーとしてライン情報テーブルにアクセスする。「選択位置」は、ライン情報テーブルの「インデックス」を表す。したがって、上記アクセスにより、ライン１に係わる情報が得られる。続いて、ライン情報テーブルから、ライン１の「後方情報」を抽出し、その「後方情報」をキーとしてオブジェクト情報テーブルにアクセスする。「後方情報」は、オブジェクト情報テーブルの「インデックス」を表す。したがって、このアクセスにより、オブジェクトＢに係わる情報が得られる。そして、このオブジェクトＢの「Ｘ座標」および「Ｙ座標」が抽出され、新規オブジェクトのためのレコードに書き込まれる。
【００８２】
上記処理により、新規オブジェクトを表示するための座標として、オブジェクトＢの現在の表示位置の座標が得られる。
続いて、図２２に示すように、オブジェクト情報テーブルにおいて、オブジェクトＢおよびオブジェクトＣの「Ｘ座標」にそれぞれ「１」を加算する。オブジェクトＢおよびオブジェクトＣは、ユーザにより選択されたライン１の後方（図１７においては、ライン１の右側）に接続されているオブジェクトである。
【００８３】
この加算処理は、具体的には、まず、ライン情報テーブルに格納されているライン１の「後方情報」として特定されるオブジェクトの「Ｘ座標」および「Ｙ座標」をオブジェクト情報テーブルから抽出する。ここでは、オブジェクトＢの座標として（Ｘ，Ｙ）＝（００１，０００）が得られる。そして、オブジェクト情報テーブルにおいて、「Ｘ座標≧００１」かつ「Ｙ座標＝０００」であるレコードを検索し、抽出されたレコードの「Ｘ座標」に「１」を加算する。この結果、オブジェクトＢの座標が（Ｘ，Ｙ）＝（００２，０００）に変更され、また、オブジェクトＣの座標が（Ｘ，Ｙ）＝（００３，０００）に変更される。なお、新規オブジェクトのためのレコードは、検索対象から外される。
【００８４】
上記処理により、オブジェクトＢおよびオブジェクトＣを表示すべき座標がそれぞれ玉突き的に変更される。
この加算処理の後、オブジェクト情報テーブルにおいて新規オブジェクトのためのレコードを指示するインデックスが、ライン情報テーブルにおいて新規ラインの「後方情報」として書き込まれる。すなわち、新規ラインの「後方情報」として、新規オブジェクトを表すインデックスが設定される。
【００８５】
続いて、図２３（ａ）  に示すように、選択インデックステーブルの第１番目のレコードの「選択位置」により指定されるライン情報テーブルのレコードから「前方情報」を抽出し、それを新規ラインの「前方情報」に書き込む。すなわち、ライン情報テーブルにおいて、ライン１の「前方情報」である「１」が新規ラインの「前方情報」に書き込まれる。
【００８６】
さらに、図２３（ｂ）  に示すように、選択インデックステーブルの第１番目のレコードの「選択位置」により指定されるライン情報テーブルのレコードの「前方情報」として、新規ラインの「後方情報」を書き込む。すなわち、ライン情報テーブルにおいて、新規ラインの「後方情報」である「８」が、ライン１の「前方情報」に書き込まれる。
【００８７】
上記処理により、ライン情報テーブルにおいて、新規ラインの前方にオブジェクトＡが接続される旨の情報、およびユーザにより選択されたライン１の前方に新規オブジェクトが接続される旨の情報が登録される。
【００８８】
次に、図形編集ソフトウェアは、選択インデックステーブルの第２番目以降の各レコードに登録されているラインについて以下の処理を行う。ここでは、第２番目のレコードについての処理を説明する。
【００８９】
まず、図２４に示すように、選択インデックステーブルの第２番目のレコードから「選択位置」を抽出し、その「選択位置」をキーとしてライン情報テーブルにアクセスする。このアクセスにより、ライン３に係わる情報が得られる。続いて、ライン情報テーブルから、ライン３の「後方情報」を抽出し、その「後方情報」をキーとしてオブジェクト情報テーブルにアクセスする。このアクセスにより、オブジェクトＤに係わる情報が得られる。そして、このオブジェクトＤおよびオブジェクトＥの「Ｘ座標」にそれぞれ「１」を加算する。オブジェクトＤおよびオブジェクトＥは、ユーザにより選択されたライン３の後方に接続されているオブジェクトである。
【００９０】
この加算処理は、基本的には、図２２を参照しながら説明した手順と同じであり、具体的には、まず、ライン情報テーブルに格納されているライン３の「後方情報」として特定されるオブジェクトの「Ｘ座標」および「Ｙ座標」をオブジェクト情報テーブルから抽出する。ここでは、オブジェクトＤの座標として（Ｘ，Ｙ）＝（００１，００１）が得られる。そして、オブジェクト情報テーブルにおいて、「Ｘ座標≧００１」かつ「Ｙ座標＝００１」であるレコードを検索し、抽出されたレコードの「Ｘ座標」に「１」を加算する。この結果、オブジェクトＤの座標が（Ｘ，Ｙ）＝（００２，００１）に変更され、また、オブジェクトＥの座標が（Ｘ，Ｙ）＝（００３，００１）に変更される。なお、新規オブジェクトのためのレコードは、検索対象から外される。
【００９１】
更に、図２５に示すように、選択インデックステーブルの第２番目のレコードの「選択位置」により指定されるライン情報テーブルのレコードの「前方情報」として、新規ラインの「後方情報」を書き込む。すなわち、ライン情報テーブルにおいて、新規ラインの「後方情報」である「８」がライン３の「前方情報」に書き込まれる。
【００９２】
上記図２０〜図２５を参照しながら説明した処理により、オブジェクト情報テーブルは、図２６（ａ）  に示す状態に更新され、また、ライン情報テーブルは、図２６（ｂ）  に示す状態に更新される。なお、選択インデックステーブルは、上記処理が終了したときに削除される。
【００９３】
図２７は、図２６（ａ）  および図２６（ｂ）  に示す更新後のテーブルに従って描画される図形を示す図である。
オブジェクトＡは、オブジェクト情報テーブルの第１番目のレコードが更新されていないので、（Ｘ，Ｙ）＝（０００，０００）に表示される。また、新規オブジェクトは、オブジェクト情報テーブルの第８番目のレコードに格納されている情報に従って、（Ｘ，Ｙ）＝（００１，０００）に表示される。さらに、ライン情報テーブルの第７番目のレコードに格納されている情報に従って、オブジェクトＡと新規オブジェクトとを接続する新規ラインが表示される。
【００９４】
オブジェクトＢ〜Ｅは、それぞれオブジェクト情報テーブルにおいて対応する「Ｘ座標」が「１」ずつ増加させられたので、図１７に示した状態と比べて、それぞれ右方向に「１」だけシフトした位置に表示されている。また、ライン情報テーブルにおいて、ライン１およびライン３の「前方情報」がそれぞれ「１」から「８」に更新されたので、ライン１は、新規オブジェクトとオブジェクトＢとを接続するように表示され、ライン３は、新規オブジェクトとオブジェクトＤとを接続するように表示される。この結果、図１６（ｂ）  に示す図形が得られる。
【００９５】
図２８は、表示画面における絶対座標系と図形編集ソフトウェアが使用する仮想座標系との変換関係を説明する図である。仮想座標系の「各枡の高さ」および「各枡の幅」は、それぞれ絶対座標系においては「ａ」および「ｂ」に変換される。また、「各枡の原点からその枡の中に表示されるオブジェクトの左端までのオフセット」および「各枡の原点からその枡の中に表示されるオブジェクトの上端までのオフセット」は、それぞれ絶対座標系においては「ｃ」および「ｄ」に変換される。さらに、「各オブジェクトの幅」は、絶対座標系においては「ｅ」に変換される。
【００９６】
上記変換関係が設定されている場合、仮想座標系における座標が（Ｘ，Ｙ）＝（ｎ，ｍ）であるオブジェクトの表示位置は、絶対座標系においては以下の式で表される。
【００９７】
オブジェクトの左端のｘ座標    ＝    ｎ×ｂ＋ｃ
オブジェクトの上端のｙ座標    ＝    ｍ×ａ＋ｄ
また、ラインの始点は、絶対座標系においては以下の式で表される。
【００９８】
ラインの始点のｘ座標    ＝    ｎ×ｂ＋ｃ＋ｅ
ラインの始点のｙ座標    ＝    ｍ×ａ＋ｄ
次に、フローチャートを参照しながら、図１６〜図２７に示した編集方法についてさらに詳しく説明する。なお、ユーザの操作は、図８に示した手順と同じである。また、概略フローチャートは、図９に示した通りであるので省略する。更に、ユーザにより選択されたラインを検出して選択インデックステーブルに登録する処理は、基本的に、図１０に示したフローチャートの手順と同じである。
【００９９】
図２９は、「図形データの更新」の詳細フローチャートであり、図９のステップＳ１２の処理に対応する。このフローチャートの処理は、選択インデックステーブルに登録されている各レコードについて順番に実行される。すなわち、この処理は、ユーザにより指定された各ラインについて実行される。
【０１００】
ステップＳ７１では、新規オブジェクトおよび新規ラインを描画するためのデータがメモリ上の所定の領域にロードされる。ステップＳ７２では、新規オブジェクトのためのレコードがオブジェクト情報テーブルに追加され、新規ラインのためのレコードがライン情報テーブルに追加される。
【０１０１】
ステップＳ７３およびＳ７７は、選択インデックステーブルから１つずつ順番にレコードを抽出する処理である。ステップＳ７４では、ステップＳ７３で抽出したレコードが選択インデックステーブルにおける第１番目のレコードであるか否かを調べる。第１番目のレコードであった場合には、ステップＳ７５の処理が実行され、そうでなかった場合にはステップＳ７５はスキップされる。
【０１０２】
ステップＳ７５は、新規オブジェクトを表示するためのデータを設定する処理である。ステップＳ７６は、新規オブジェクトを挿入することにより発生する座標変換処理である。なお、ステップＳ７５およびＳ７６の各処理については、後述詳しく説明する。
【０１０３】
上記処理により、新規オブジェクトを表示するためのデータが設定される。また、ユーザにより指定されたラインの後方に接続されているオブジェクトの表示位置の座標が更新される。さらに、オブジェクト間を接続するラインが再設定される。
【０１０４】
図３０は、新規オブジェクトを表示するためのデータを設定する処理の詳細フローチャートであり、図２９のステップＳ７５の処理に対応する。このフローチャートの処理は、選択インデックステーブルの第１番目のレコードのみについて実行される。
【０１０５】
ステップＳ８１は、オブジェクト情報テーブルにおいて、新規オブジェクトの「Ｘ座標」および「Ｙ座標」を設定する。この処理は、図１２に示したフローチャートのステップＳ４１〜Ｓ４５の処理と同じである。
【０１０６】
ステップＳ８２では、新規ラインの「後方情報」として新規オブジェクトを設定する。具体的には、オブジェクト情報テーブルにおいて新規オブジェクトのためのレコードを識別する「インデックス」を、ライン情報テーブルにおいて、新規ラインの「後方情報」として書き込む。
【０１０７】
ステップＳ８３では、新規ラインの「前方情報」として、ユーザにより選択されたラインの前方に接続されているオブジェクトを設定する。具体的には、ライン情報テーブルにおいて、選択インデックステーブルの第１番目のレコードに格納されている「選択位置」により特定されるラインの「前方情報」を、新規ラインの「前方情報」に書き込む。
【０１０８】
ステップＳ８４では、選択インデックステーブルの第１番目のデータに対応するラインの「前方情報」として、新規ラインの「後方情報」を設定する。具体的には、ライン情報テーブルにおいて、選択インデックステーブルの第１番目のレコードに格納されている「選択位置」により特定されるラインの「前方情報」として、新規ラインの「後方情報」に書き込む。
【０１０９】
図３１は、先に表示されているオブジェクトを表示するための座標を必要に応じて変更する処理の詳細フローチャートであり、図２９のステップＳ７６の処理に対応する。なお、このフローチャートの処理は、選択インデックステーブルに登録されている各レコードについてそれぞれ実行される。
【０１１０】
ステップＳ９１では、処理すべきレコードが選択インデックステーブルの第１番目のレコードであるか否かを調べる。第１番目のレコードであれば、ステップＳ９２において、オブジェクト情報テーブルから新規オブジェクトの座標を抽出する。一方、第１番目のレコードでなかった場合は、ステップＳ９３において、当該ラインの後方に接続されているオブジェクトの座標を抽出する。なお、以下では、ステップＳ９２またはＳ９３において抽出した座標を（Ｘａ  ，Ｙａ  ）とする。
【０１１１】
ステップＳ９４およびＳ９９は、オブジェクト情報テーブルに登録されているレコード（新規オブジェクトのためのレコードを除く）を１つずつ取り出してステップＳ９５〜Ｓ９８を実行させるための処理である。
【０１１２】
ステップＳ９５は、ステップＳ９４において取り出されたレコードのオブジェクトの座標を抽出する。以下では、この座標を（Ｘｉ  ，Ｙｉ  ）とする。ステップＳ９６では、「Ｙａ  ＝Ｙｉ  」であるか否かを調べ、条件が満たされていればステップＳ９７が実行され、満たされていなければステップＳ９７およびＳ９８はスキップされる。ステップＳ９７では、「Ｘｉ  ≧Ｘａ  」であるか否かを調べ、条件が満たされていればステップＳ９８が実行され、満たされていなければステップＳ９８はスキップされる。そして、ステップＳ９８では、ステップＳ９５で抽出された「Ｘ座標」に「１」が加算される。
【０１１３】
すべてのレコード（新規オブジェクトのためのレコードを除く）についてステップＳ９５〜Ｓ９８が実行されると、ステップＳ１００へ進む。ステップＳ１００では、選択インデックステーブルにより特定されるラインの「前方情報」として、新規ラインの「後方情報」を設定する。
【０１１４】
なお、上記実施例では、第２のオブジェクトが第１のオブジェクトに従属する場合に、その第２のオブジェクトが第１のオブジェクトの右側に接続されるというルールで描かれた図形を採り上げたので、第１のオブジェクトと第２のオブジェクトとの間に第３のオブジェクトを挿入した際には、第２のオブジェクトが横方向にシフトさせられた。しかしながら、本発明は、この構成に限定されるものではない。たとえば、第２のオブジェクトが第１のオブジェクトに従属する場合に、その第２のオブジェクトが第１のオブジェクトの下側に接続されるというルールで描かれた図形においては、第１のオブジェクトと第２のオブジェクトとの間に第３のオブジェクトを挿入した際に、第２のオブジェクトを下方向にシフトさせてもよい。
【０１１５】
この場合、オブジェクトを移動させる方向は、ユーザにより選択されたラインの前方および後方にそれぞれ接続されているオブジェクトの座標を比較することにより判定される。たとえば、ユーザにより選択されたラインの前方および後方にそれぞれ接続されているオブジェクトのＹ座標が互いに同じであれば、そのラインの後方に接続されているオブジェクトを横方向にシフトし、それらのＸ座標が互いに同じであれば、そのラインの後方に接続されているオブジェクトを下方向にシフトさせる。なお、オブジェクトを縦方向に移動させる処理は、オブジェクト情報テーブルにおいてその「Ｙ座標」を変更すればよい。
第２の実施形態
上述した第１の実施形態の編集方法においては、ユーザは、オブジェクトを挿入しようとする位置に表示されているラインを直接的に指定する手順が必要であった。これに対して、第２の実施形態の編集方法においては、ユーザは、ラインを直接的に指定する必要はなく、挿入しようとするオブジェクトを所定の目標位置に移動させることにより、そのオブジェクトを所望のオブジェクト間に挿入できる。
【０１１６】
図３２（ａ）  〜図３２（ｃ）  は、第２の実施形態の図形編集方法の動作を説明するための図である。ここでは、オブジェクトＡ〜Ｃが直列的に接続されたフローチャートにおいて、オブジェクトＡとオブジェクトＢとの間にオブジェクトＤを挿入する場合の動作を説明する。
【０１１７】
ユーザは、まず、図３２（ａ）  に示すように、マウス等を用いてオブジェクトＤをドラッグし、図３２（ｂ）  に示すように、オブジェクトＡとオブジェクトＢとを接続するラインＡＢに重なるようにそのオブジェクトＤをドロップする。ラインＡＢとオブジェクトＤとが互いに重なり合ったことを検出すると、図形編集ソフトウェアは、図３２（ｃ）  に示すように、オブジェクトＡとオブジェクトＤとを接続するとともに、オブジェクトＤとオブジェクトＢとを接続する。
【０１１８】
接続は、コネクタ・オブジェクトを用いて行われる。この挿入処理は、ラインＢ（コネクタ・オブジェクト）を削除して新たな２つのコネクタ・オブジェクト（オブジェクトＡとオブジェクトＤを接続するコネクタ・オブジェクト、オブジェクトＤとオブジェクトＢを接続するコネクタ・オブジェクト）を生成する。なお、ラインＢを削除せずに、ラインＢを、これら２つのコネクタ・オブジェクトの一に変更してもよい。この場合、コネクタ・オブジェクトは、オブジェクトの外周上のいずれの点を接続するものであってもよい。
【０１１９】
なお、各オブジェクトは、それぞれラインが接続されるべき点が予め決められていることが望ましい。例えば、オブジェクトＡのような長方形のオブジェクトは、ラインは長方形の長辺の中点に接続される。また、オブジェクトＤのような菱形のオブジェクトは、ラインは任意の頂点に接続され得る。
【０１２０】
図３３（ａ）  〜図３３（ｃ）  は、第２の実施形態の図形編集方法の他の動作を説明するための図である。ここでは、図３３（ａ）  に示すように、オブジェクトＡとオブジェクトＢとの間の距離（縦方向の長さ）ａがオブジェクトＤの高さｈに対して十分でないものとする。この場合、図３３（ｂ）  に示すように、オブジェクトＡとオブジェクトＢとを接続するラインＡＢに重なるようにオブジェクトＤがドロップされると、図形編集ソフトウェアは、オブジェクトＡとオブジェクトＢとの間の距離を自動的に大きくし、その間にオブジェクトＤを挿入する。ここでは、オブジェクトＢを下方に移動させることにより、オブジェクトＡとオブジェクトＢとの間の距離が大きくされている。なお、オブジェクトＡとオブジェクトＤとを接続すると共にオブジェクトＤとオブジェクトＢとを接続する処理は、図３２に示した例と同じである。この結果、図３３（ｃ）  に示す状態が得られる。
【０１２１】
このように、第２の実施形態の編集方法においては、互いに接続された第１のオブジェクトと第２のオブジェクトとの間に新たなオブジェクトを挿入しようとする場合には、第１および第２のオブジェクトを互いに接続するラインに重なるように挿入すべきオブジェクトを移動させる操作を行うだけでよい。この操作により、オブジェクト間のラインが自動的に再設定され、また、必要に応じて各オブジェクトは再配置される。
【０１２２】
なお、既存の図形編集ソフトウェアを用いて図３２（ａ）  〜図３２（ｃ）  に示した編集作業と同等の作業を行う場合は、たとえば、図３４（ａ）  〜図３４（ｄ）  に示すように（Ｍｉｃｒｏｓｏｆｔ  社のＰｏｗｅｒ  Ｐｏｉｎｔ  ９７の例）、ラインＡＢを削除する作業、オブジェクトＤを移動する作業、およびオブジェクト間を接続する作業が必要になり、ユーザの負担が大きい。もっとも、既存の図形編集ソフトウェアの中には、図３５（ａ）  及び図３５（ｂ）  に示すように（Ｖｉｓｉｏ  社のＶｉｓｉｏ  Ｐｒｏｆｅｓｓｉｏｎａｌ  ５．０    ｆｏｒ  Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ  の例）、オブジェクトに移動に伴ってラインが変形させられるものも知られている。しかしながら、この場合においても、結局は、ユーザ自身がラインを再設定しなければならず、ユーザの負担が軽減されたとは言えない。
【０１２３】
図３６（ａ）  は、オブジェクト情報テーブルの一例を示す図である。オブジェクト情報テーブルには、各オブジェクトが表示されている位置の座標や、そのオブジェクトの形状を表す情報等が格納される。「座標」としては、たとえば、図３７に示すように、各オブジェクトの左上隅の絶対座標が格納される。また、「形状」としては、基本的に、アプリケーションソフトウェアが提供する図形部品を識別する情報が用いられる。アプリケーションソフトウェアは、たとえば、長方形、菱形、円、などを提供する。さらに、各オブジェクトの形状を表す具体的な情報として、オブジェクトの「高さ」や「幅」などが格納される。
【０１２４】
図３６（ｂ）  は、ライン情報テーブルの一例を示す図である。ライン情報テーブルには、各ラインが表示されている位置およびその形状を特定する情報、並びにオブジェクト間の接続関係を表す情報が格納される。「始点座標」および「終点座標」は、それぞれ各ラインの始点の座標および終点の座標である。また、「前方情報」および「後方情報」は、第１の実施形態において説明したものと同じであり、各ラインの前方に接続されているオブジェクトを特定する情報、および各ラインの後方に接続されているオブジェクトを特定する情報である。なお、各ラインと前方オブジェクトとの接続点が「始点座標」であり、また、各ラインと後方オブジェクトとの接続点が「終点座標」である。さらに、「高さ」は、各ラインの始点のＹ座標と終点のＹ座標との差を表す。
【０１２５】
なお、このライン情報テーブルにより、オブジェクト間の従属関係が管理される。たとえば、図３６（ｂ）  に示すテーブルでは、オブジェクトＢがオブジェクトＡに従属していることが登録されている。
【０１２６】
図３８は、第２の実施形態の編集方法におけるユーザの操作手順を説明するフローチャートである。ステップＳ２０１では、挿入すべき新規オブジェクトを生成する。オブジェクトの生成方法は、たとえば、第１の実施形態において説明した方法と同じである。ステップＳ２０２では、マウス等を用いて、ステップＳ２０１で生成した新規オブジェクトを所望の位置に移動させる。具体的には、たとえば、図３２（ｂ）  に示したように、新規オブジェクトを所望の位置にドロップする。このように、第２の実施形態の編集方法においては、ユーザの負担はさらに軽減されている。
【０１２７】
図３９は、第２の実施形態の図形編集ソフトウェアの動作を説明するフローチャートである。このフローチャートの処理は、ユーザにより新規オブジェクトが生成されたときに実行される。すなわち、この処理は、図３８に示したフローチャートにおけるステップＳ２０１が実行されたときに開始される。以下では、図３６および図３７を参照し、ラインＤにより互いに接続されているオブジェクトＡとオブジェクトＢとの間にオブジェクトＣを挿入する処理を例に採り上げて説明する。
【０１２８】
ステップＳ２１１では、オブジェクト情報テーブルにおいて、ユーザにより生成されたオブジェクトＣのためのレコードを追加する。ステップＳ２１２では、オブジェクトＣに係わる情報をステップＳ２１１において追加したレコードに書き込む。図３６（ａ）  に示す例では、「インデックス＝３」のレコードに「座標＝（Ｍｘ  ，Ｍｙ  ）」「形状＝長方形」「高さ＝ＭＨ」および「幅＝ＭＷ」が書き込まれている。
【０１２９】
ステップＳ２１３では、ユーザがオブジェクトＣを移動させたときに、その移動指示に従ってオブジェクトＣの座標を更新する。ステップＳ２１４では、ユーザにより移動させられたオブジェクトＣとオーバーラップするラインが存在するか否かを調べる。この判断では、オブジェクトＣの「座標」「高さ」「幅」、及びライン情報テーブルに格納されている各ラインについての「始点座標」「終点座標」「高さ」が使用される。
【０１３０】
オブジェクトＣとオーバーラップするラインが存在する場合には、ステップＳ２１５においてオブジェクト挿入処理が実行され、存在しない場合には、ステップＳ２１６において、更新された座標に従ってオブジェクトＣが描画される。
【０１３１】
図４０は、オブジェクト挿入処理の詳細フローチャートである。この処理は、図３９のステップＳ２１５に対応する。
ステップＳ２２１では、ユーザの操作によりオブジェクトＣとオーバーラップすることとなったラインの「高さ」を取得する。実施例では、ライン情報テーブルから「ラインの高さ＝ＬＨ」が得られる。ステップＳ２２２では、オブジェクトＣの「高さ」を取得する。実施例では、オブジェクト情報テーブルから「オブジェクトの高さ＝ＭＨ」が得られる。
【０１３２】
ステップＳ２２３では、ステップＳ２２１で取得したラインの「高さ」がステップＳ２２２で取得したオブジェクトの「高さ」に対して十分に大きいか否かを調べる。具体的には、下式の条件が満たされるか否かを調べる。
【０１３３】
ＬＨ    ＞    ＭＨ＋２×α
ここで、「α」は、ラインの長さの最低値であり、予め決められた値である。
この条件が満たされていないときには、オブジェクトＣを挿入するために十分なスペースが存在しないものとみなし、ステップＳ２２４の処理が実行される。上記条件が満たされている場合には、ステップＳ２２４はスキップされる。
【０１３４】
ステップＳ２２４では、オブジェクトＣを挿入するためのスペースを生成するために、周辺のオブジェクトを移動する。実施例では、オブジェクトＢを表示するための座標が変更される。ステップＳ２２５では、オブジェクトＣに係る情報を更新する。具体的には、オブジェクト情報テーブルにおいてオブジェクトＣのためのレコードを更新する。
【０１３５】
ステップＳ２２６では、新規ラインを生成する。具体的には、まず、ライン情報テーブルに新規ライン（実施例では、オブジェクトＡとオブジェクトＣとを接続するラインＥ）のためのレコードを追加し、そのレコードに各種情報を設定する。ステップＳ２２７では、周辺のラインの設定を更新する。実施例では、オブジェクトＡとオブジェクトＢとを接続していたラインＤを、オブジェクトＣとオブジェクトＢとを接続するように設定を変更する。具体的には、ライン情報テーブルにおいて、「接続情報（前方情報および／または後方情報）」「座標（始点座標および／または終点座標）」および「高さ」を必要に応じて変更する。
【０１３６】
ステップＳ２２８では、ステップＳ２２４〜Ｓ２２７の処理により更新されたオブジェクト情報テーブル及びライン情報テーブルに従って図形を描画する。
次に、図３７に示した表示状態を例として取り上げ、ステップＳ２２４〜Ｓ２２７の処理を具体的に示す。
（１）オブジェクトＢの設定
新Ｑｘ  ＝Ｑｘ
新Ｑｙ  ＝ＬＳｙ  ＋ＭＨ＋２×α
（２ａ）オブジェクトＣの設定（オブジェクトＢを移動していない場合）
Ｍｘ  ＝Ｐｘ  ＋（（Ｑｘ  −Ｐｘ）÷２）
Ｍｙ  ＝ＬＳｙ  ＋（ＬＨ÷２）−（ＭＨ÷２）
（２ｂ）オブジェクトＣの設定（オブジェクトＢを移動した場合）
Ｍｘ  ＝Ｐｘ  ＋（（Ｑｘ  −Ｐｘ）÷２）
Ｍｙ  ＝ＬＳｙ  ＋α
（３ａ）新規ラインＥの設定（オブジェクトＢを移動していない場合）
ＮＳｘ  ＝ＬＳｘ
ＮＳｙ  ＝ＬＳｙ
ＮＨ    ＝（ＬＨ÷２）−（ＭＨ÷２）
ＮＥｘ  ＝Ｍｘ  ＋（ＭＷ÷２）
ＮＥｙ  ＝Ｍｙ
（３ｂ）新規ラインＥの設定（オブジェクトＢを移動した場合）
ＮＳｘ  ＝ＬＳｘ
ＮＳｙ  ＝ＬＳｙ
ＮＨ    ＝α
ＮＥｘ  ＝Ｍｘ  ＋（ＭＷ÷２）
ＮＥｙ  ＝Ｍｙ
（４ａ）新規ラインＤの設定（オブジェクトＢを移動していない場合）
新ＬＳｘ  ＝Ｍｘ  ＋（ＭＷ÷２）
新ＬＳｙ  ＝Ｍｙ  ＋ＭＨ
新ＬＨ    ＝（ＬＨ÷２）−（ＭＨ÷２）
新ＬＥｘ  ＝ＬＥｘ
新ＬＥｙ  ＝ＬＥｙ
（４ｂ）新規ラインＤの設定（オブジェクトＢを移動した場合）
新ＬＳｘ  ＝Ｍｘ  ＋（ＭＷ÷２）
新ＬＳｙ  ＝Ｍｙ  ＋ＭＨ
新ＬＨ    ＝α
新ＬＥｘ  ＝ＬＥｘ
新ＬＥｙ  ＝新Ｑｙ
上記演算により更新されたオブジェクト情報テーブルおよびライン情報テーブルに従って表示される図形を図４１に示す。
【０１３７】
なお、図３６〜図４１に示した実施例では、各オブジェクトの位置はそのオブジェクトの左上隅の座標を用いて表されているが、本発明はこの構成に限定されるものではない。たとえば、図４２に示すように、各オブジェクトの位置をそのオブジェクトの中心の座標を用いて表してもよい。この場合、図４０に示したステップＳ２２４〜Ｓ２２７の演算は、以下のようになる。なお、点Ｐ、点Ｑおよび点Ｍは、それぞれオブジェクトＡ、オブジェクトＢオブジェクトＣの中心点である。
（１）オブジェクトＢの設定
新Ｑｘ  ＝Ｑｘ
新Ｑｙ  ＝ＬＳｙ  ＋ＭＨ＋２×α
（２ａ）オブジェクトＣの設定（オブジェクトＢを移動していない場合）
Ｍｘ  ＝Ｐｘ  ＋（（Ｑｘ  −Ｐｘ）÷２）
Ｍｙ  ＝ＬＳｙ  ＋（ＬＨ÷２）
（２ｂ）オブジェクトＣの設定（オブジェクトＢを移動した場合）
Ｍｘ  ＝Ｐｘ  ＋（（Ｑｘ  −Ｐｘ）÷２）
Ｍｙ  ＝ＬＳｙ  ＋α
（３ａ）新規ラインＥの設定（オブジェクトＢを移動していない場合）
ＮＳｘ  ＝ＬＳｘ
ＮＳｙ  ＝ＬＳｙ
ＮＨ    ＝（ＬＨ÷２）−（ＭＨ÷２）
ＮＥｘ  ＝Ｍｘ
ＮＥｙ  ＝Ｍｙ  −（ＭＨ÷２）
（３ｂ）新規ラインＥの設定（オブジェクトＢを移動した場合）
ＮＳｘ  ＝ＬＳｘ
ＮＳｙ  ＝ＬＳｙ
ＮＨ    ＝α
ＮＥｘ  ＝Ｍｘ
ＮＥｙ  ＝Ｍｙ  −（ＭＨ÷２）
（４ａ）新規ラインＤの設定（オブジェクトＢを移動していない場合）
新ＬＳｘ  ＝Ｍｘ
新ＬＳｙ  ＝Ｍｙ  ＋（ＭＨ÷２）
新ＬＨ    ＝（ＬＨ÷２）−（ＭＨ÷２）
新ＬＥｘ  ＝ＬＥｘ
新ＬＥｙ  ＝ＬＥｙ
（４ｂ）新規ラインＤの設定（オブジェクトＢを移動した場合）
新ＬＳｘ  ＝Ｍｘ
新ＬＳｙ  ＝Ｍｙ  ＋（ＭＨ÷２）
新ＬＨ    ＝α
新ＬＥｘ  ＝ＬＥｘ
新ＬＥｙ  ＝新Ｑｙ
上記演算により更新されたオブジェクト情報テーブルおよびライン情報テーブルに従って表示される図形を図４３に示す。
【０１３８】
なお、上記図３２（ａ）  〜図３２（ｃ）  および図３３（ａ）  〜図３３（ｃ）  に示した実施例では、ライン上にオブジェクトがドロップされたことを検出して、挿入処理が実行されるが、第２の実施形態は、この方法に限定されるものではない。たとえば、図４４（ａ）  〜図４４（ｃ）  に示すように、新規オブジェクト（オブジェクトＤ）がラインＡＢの近傍にドロップされたことを検出したときに、その新規オブジェクトをオブジェクトＡとオブジェクトＢとの間に挿入するような構成であってもよい。また、オブジェクトがライン上またはライン近傍にドラッグされていること（すなわち、オブジェクトはドロップされていない）を検出したときに、上述の挿入処理を実行してもよい。この場合、オブジェクトがライン上またはライン近傍にある間、新たに生成されるライン・オブジェクトの形は、当該オブジェクトの位置に応じて変化する。
【０１３９】
また、上記第１および第２の実施形態の各実施例では、基本的に、先に表示されている図形に対して新たなオブジェクトを挿入する場合を説明したが、本発明はこれに限定されるものではない。例えば、オブジェクトＡ、Ｂ、Ｃが順番に接続された図形において、オブジェクトＣをオブジェクトＡとオブジェクトＢとの間に移動させるような操作も本発明の編集方法に含まれる。
【０１４０】
さらに、上記の実施例では、編集される図形の例としてフローチャートを採り上げて説明したが、本発明は、これに限定されるものではなく、ラインまたはコネクタにより複数のオブジェクトが互いに接続または連携された図形等を編集する方法を含む。たとえば、回路図を作成および編集する方法にも適用される。この場合、回路を構成する各素子が「オブジェクト」であり、各素子間を互いに接続する信号線が「ライン」である。
【０１４１】
また、図３２または図３３においては、挿入されるオブジェクトの前方（オブジェクトＡの前方）または後方（オブジェクトＢの後方）のオブジェクトに一のオブジェクトが連結されている状態を示したが、二以上のオブジェクトが連結されていてもよい。これは、フローチャートの場合はフローの分岐を、回路の場合は２以上の素子が連結していることを意味する。この連結関係は、上述の連結関係と同様に、図３６において例示したオブジェクト情報テーブル、ライン情報テーブルにより管理される。この場合の挿入処理は、当該連結関係を保ったまま実行される。
【０１４２】
本発明の図形編集機能は、コンピュータを用いて上述のフローチャートに示した処理を記述したプログラムを実行することにより実現される。そのプログラムを実行するコンピュータ１０のブロック図を図４５に示す。
【０１４３】
ＣＰＵ１１は、上述のフローチャートに示した処理を記述したプログラムを記憶装置１２からメモリ１３にロードして実行する。記憶装置１２は、例えばハードディスクであり、上記プログラムを格納する。一方、メモリ１３は、例えば半導体メモリであり、ＣＰＵ１１の作業領域として使用される。各種テーブルは、このメモリ１３に作成される。
【０１４４】
記憶媒体ドライバ１４は、ＣＰＵ１１の指示に従って可搬性記憶媒体１５にアクセスする。可搬性記憶媒体１５は、半導体デバイス（ＩＣカード等）、磁気的作用により情報が入出力される媒体（フロッピーディスク、磁気テープなど）、光学的作用により情報が入出力される媒体（光ディスクなど）を含む。通信制御装置１６は、ＣＰＵ１１の指示に従って網との間でデータを送受信する。
【０１４５】
図４６は、本発明に係わるソフトウェアプログラムなどの提供方法を説明する図である。本発明に係わるプログラムは、例えば、以下の３つの方法の中の任意の方法により提供される。
【０１４６】
（ａ）  コンピュータ１０にインストールされて提供される。この場合、プログラム等は、たとえば、出荷前にプレインストールされる。
（ｂ）  可搬性記憶媒体に格納されて提供される。この場合、可搬性記憶媒体１５に格納されているプログラム等は、基本的に、記憶媒体ドライバ１４を介して記憶装置１２にインストールされる。
【０１４７】
（ｃ）  網上のサーバから提供される。この場合、基本的には、コンピュータ１０がサーバに格納されているプログラム等をダウンロードすることによってそのプログラム等を取得する。
【０１４８】
【発明の効果】
コンピュータを用いて図形等を表示しながら作成・編集する処理において、互いに接続されているオブジェクト間に他のオブジェクトを挿入する際の処理が簡単になったので、ユーザの負担が減少し、作業効率が向上する。また、図形等の編集に際してのミスが生じる可能性も減少する。
【図面の簡単な説明】
【図１】本発明が実施される環境の一例を説明する図である。
【図２】第１の実施形態における基本操作を説明する図である。
【図３】第１の実施形態における図形の編集方法を説明するための図である。
【図４】第１の実施形態の図形編集ソフトウェアが提供するテーブルの例である。
【図５】ラインを指定する方法を説明する図である。
【図６】（ａ）  は、更新されたデータテーブルの状態を示す図である。（ｂ）  は、更新されたライン情報テーブルの状態を示す図である。
【図７】オブジェクトを挿入する処理に際して更新されたテーブルの状態を示す図である。
【図８】第１の実施形態におけるユーザの操作のフローチャートである。
【図９】第１の実施形態の図形編集ソフトウェアの動作の概略を説明するフローチャートである。
【図１０】指定されたラインを検出する処理の詳細フローチャートである。
【図１１】図形データを更新する処理のフローチャートである。
【図１２】新規オブジェクトを表示するための座標を設定する処理の詳細フローチャートである。
【図１３】先に表示されているオブジェクトを表示するための座標を変更する処理の詳細フローチャートである。
【図１４】ライン情報テーブルを更新する処理の詳細フローチャートである。
【図１５】図１４に示すフローチャートを説明するための参考図である。
【図１６】第１の実施形態の編集方法の他の具体例を説明するための図である。
【図１７】表示画面の説明図である。
【図１８】（ａ）  は、オブジェクト情報テーブルの一例を示す図であり、（ｂ）  は、ライン情報テーブルの一例を示す図である。
【図１９】（ａ）  は、ラインを選択する方法を説明する図であり、（ｂ）  は、選択インデックステーブルの一例を示す図である。
【図２０】テーブルにレコードを追加する処理を説明する図である。
【図２１】オブジェクト情報テーブルを更新する処理を説明する図（その１）である。
【図２２】オブジェクト情報テーブルを更新する処理を説明する図（その２）である。
【図２３】ライン情報テーブルを更新する処理を説明する図（その１）である。
【図２４】オブジェクト情報テーブルを更新する処理を説明する図（その３）である。
【図２５】ライン情報テーブルを更新する処理を説明する図（その２）である。
【図２６】更新された後のテーブルの状態を示す図である。
【図２７】図２６（ａ）  および図２６（ｂ）  に示す更新後のテーブルに従って描画される図形を示す図である。
【図２８】表示画面における絶対座標系と図形編集ソフトウェアが使用する仮想座標系との関係を説明する図である。
【図２９】図形データを更新する処理のフローチャートである。
【図３０】新規オブジェクトを表示するためのデータを設定する処理のフローチャートである。
【図３１】先に表示されているオブジェクトを表示するための座標を必要に応じて変更する処理の詳細フローチャートである。
【図３２】第２の実施形態の図形編集方法の動作を説明するための図である。
【図３３】第２の実施形態の図形編集方法の他の動作を説明するための図である。
【図３４】既存の編集方法におけるユーザの作業を説明する図（その１）である。
【図３５】既存の編集方法におけるユーザの作業を説明する図（その２）である。
【図３６】（ａ）  は、オブジェクト情報テーブルの一例を示す図であり、（ｂ）  は、ライン情報テーブルの一例を示す図である。
【図３７】オブジェクトおよびラインの表示座標等を説明する図である。
【図３８】第２の実施形態の編集方法におけるユーザの操作手順を説明するフローチャートである。
【図３９】第２の実施形態の図形編集ソフトウェアの動作を説明するフローチャートである。
【図４０】オブジェクト挿入処理の詳細フローチャートであり、
【図４１】オブジェクト挿入処理の結果を示す図である。
【図４２】他の表示方法を説明する図である。
【図４３】他の表示方法におけるオブジェクト挿入処理の結果を示す図である。
【図４４】第２の実施形態の変形例を示す図である。
【図４５】本発明の編集方法の処理を記述したプログラムを実行するコンピュータのブロックである。
【図４６】本発明に係わるソフトウェアプログラム等の提供方法を説明する図である。
【図４７】既存の方法により予め互いに接続されているオブジェクトの間に新たなオブジェクトを挿入する際の手順を説明する図である。
【図４８】従来技術の問題点を説明するための図である。
【符号の説明】
１            コンピュータ
２            マウス
１０        コンピュータ
１１        ＣＰＵ
１２        記憶装置
１３        メモリ
１４        記憶媒体ドライバ
１５        可搬性記憶媒体
１６        通信制御装置
【図１】
0003569153.tif 000002
【図２】
0003569153.tif 000003
【図３】
0003569153.tif 000004
【図４】
0003569153.tif 000005
【図５】
0003569153.tif 000006
【図６】
0003569153.tif 000007
【図７】
0003569153.tif 000008
【図８】
0003569153.tif 000009
【図９】
0003569153.tif 000010
【図１０】
0003569153.tif 000011
【図１１】
0003569153.tif 000012
【図１２】
0003569153.tif 000013
【図１３】
0003569153.tif 000014
【図１４】
0003569153.tif 000015
【図１５】
0003569153.tif 000016
【図１６】
0003569153.tif 000017
【図１７】
0003569153.tif 000018
【図１８】
0003569153.tif 000019
【図１９】
0003569153.tif 000020
【図２０】
0003569153.tif 000021
【図２１】
0003569153.tif 000022
【図２２】
0003569153.tif 000023
【図２３】
0003569153.tif 000024
【図２４】
0003569153.tif 000025
【図２５】
0003569153.tif 000026
【図２６】
0003569153.tif 000027
【図２７】
0003569153.tif 000028
【図２８】
0003569153.tif 000029
【図２９】
0003569153.tif 000030
【図３０】
0003569153.tif 000031
【図３１】
0003569153.tif 000032
【図３２】
0003569153.tif 000033
【図３３】
0003569153.tif 000034
【図３４】
0003569153.tif 000035
【図３５】
0003569153.tif 000036
【図３６】
0003569153.tif 000037
【図３７】
0003569153.tif 000038
【図３８】
0003569153.tif 000039
【図３９】
0003569153.tif 000040
【図４０】
0003569153.tif 000041
【図４１】
0003569153.tif 000042
【図４２】
0003569153.tif 000043
【図４３】
0003569153.tif 000044
【図４４】
0003569153.tif 000045
【図４５】
0003569153.tif 000046
【図４６】
0003569153.tif 000047
【図４７】
0003569153.tif 000048
【図４８】
0003569153.tif 000049