(57)【要約】【課題】オブジェクト間のリンク情報を生成したり編集したりする際の操作性に優れたリンク生成装置、方法、プログラム及び記録媒体を得る。【解決手段】入力部１００は、マウスやペンなどからの座標点列をストロークとして取得する。形状検出部１０１は、入力部１００で取得したストロークの座標点列から、この座標点列が形成した１つ以上の特定形状を検出する。オブジェクト検出部１０２は、形状検出部１０１で検出した形状を形成するストローク座標点列の連続する２点間を結ぶ線分がオブジェクトに内包されるか交差する場合に、そのオブジェクトを選択状態とする。リンク生成部１０３は、オブジェクト検出部１０２で検出したオブジェクト間に形状検出部１０１で検出したストロークの形状に従ってリンク状態を生成する。【選択図】　　　　図１
2004110584.tif 000002
【特許請求の範囲】
【請求項１】
入力装置からのストローク情報の形状を検出する形状検出手段と、
前記形状検出手段により検出した形状の検出位置にオブジェクトがあるか否かを検出するオブジェクト検出手段と、
前記形状検出手段が検出した形状に従って前記オブジェクト検出手段が検出したオブジェクト間をリンク状態とするリンク生成手段とを有することを特徴とするリンク生成装置。
【請求項２】
前記オブジェクト検出手段は、前記形状検出手段が検出するストロークの形状のうち、ストロークの始点付近に最も近い位置のオブジェクトと、ストロークの終点付近に最も近い位置のオブジェクトを検出することを特徴とする請求項１記載のリンク生成装置。
【請求項３】
前記形状検出手段は、ストローク情報の自己交差点数を検出することを特徴とする請求項１または２記載のリンク生成装置。
【請求項４】
前記リンク生成手段は、前記形状検出手段が検出するストロークの形状に従ってリンクの始点片端、終点片端、あるいは始点と終点両端の表示状態を変更することを特徴とする請求項１から３のいずれか１項に記載のリンク生成装置。
【請求項５】
計算システム用のユーザインタフェース装置で用いられることを特徴とする請求項１から４のいずれか１項に記載のリンク生成装置。
【請求項６】
入力装置からのストローク情報の形状を検出する形状検出ステップと、
前記形状検出ステップで検出した形状の検出位置にオブジェクトがあるか否かを検出するオブジェクト検出ステップと、
前記形状検出ステップで検出した形状に従って前記オブジェクト検出ステップで検出したオブジェクト間をリンク状態とするリンク生成ステップとを有することを特徴とするリンク生成方法。
【請求項７】
前記オブジェクト検出ステップは、前記形状検出ステップで検出するストロークの形状のうち、ストロークの始点付近に最も近い位置のオブジェクトと、ストロークの終点付近に最も近い位置のオブジェクトを検出することを特徴とする請求項６記載のリンク生成方法。
【請求項８】
前記形状検出ステップは、ストローク情報の自己交差点数を検出することを特徴とする請求項６または７記載のリンク生成方法。
【請求項９】
前記リンク生成ステップは、前記形状検出ステップで検出するストロークの形状に従ってリンクの始点片端、終点片端、あるいは始点と終点両端の表示状態を変更することを特徴とする請求項６から８のいずれか１項に記載のリンク生成方法。
【請求項１０】
計算システム用のユーザインタフェース装置で用いられることを特徴とする請求項６から９のいずれか１項に記載のリンク生成方法。
【請求項１１】
入力装置からのストローク情報の形状を検出する形状検出処理と、
前記形状検出処理で検出した形状の検出位置にオブジェクトがあるか否かを検出するオブジェクト検出処理と、
前記形状検出処理で検出した形状に従って前記オブジェクト検出処理で検出したオブジェクト間をリンク状態とするリンク生成処理とをコンピュータに実行させるプログラム。
【請求項１２】
前記オブジェクト検出処理は、前記形状検出処理が検出するストロークの形状のうち、ストロークの始点付近に最も近い位置のオブジェクトと、ストロークの終点付近に最も近い位置のオブジェクトを検出することを特徴とする請求項１１に記載のプログラム。
【請求項１３】
前記形状検出処理は、ストローク情報の自己交差点数を検出することを特徴とする請求項１１または１２記載のプログラム。
【請求項１４】
前記リンク生成処理は、前記形状検出処理が検出するストロークの形状に従ってリンクの始点片端、終点片端、あるいは始点と終点両端の表示状態を変更することを特徴とする請求項１１から１３のいずれか１項に記載のプログラム。
【請求項１５】
請求項１１から１４のいずれか１項に記載のプログラムを記録した記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、計算用のコンピュータのグラフィカルユーザインタフェース（ＧＵＩ）に関し、詳細には、コンピュータのグラフィックオブジェクト間のリンク情報を編集するユーザインタフェース装置で用いて好適なリンク生成装置、方法、プログラム及び記録媒体に関する。
【０００２】
【従来の技術】
マウス、スタイラスペン、タッチパネルなどの入力装置と、ビットマップディスプレイなどの表示装置を用いた計算機用のグラフィカルユーザインタフェースの発達により、視覚的に表現されたグラフィカルオブジェクト（以下オブジェクト）を操作するアプリケーションソフトウェアが数多く開発されている。これらのアプリケーションソフトウェアでは、表示装置に表示されたオブジェクトからマウスなどの入力装置でクリックしたオブジェクトを選択状態として、さまざまな編集操作を行う。
【０００３】
上述のような編集操作のひとつに、少なくとも２つ以上のオブジェクトの間を線分（あるいは線分群）や矢印付の線分（あるいは線分群）で結び、オブジェクト間に何らかの関係性がある状態を持たせる「リンク」の編集がある。
リンク編集操作では、ユーザは複数のオブジェクトを選択状態にする操作と、さらにリンクの編集する操作を行う必要があるため、グラフィカルユーザインタフェースとしての操作性の向上が望まれている。
【０００４】
グラフィカルユーザインタフェースの操作性向上を目的とする従来技術としては、ストローク形状を検出してストロークが交差したオブジェクトを選択状態とする方法が提案されている（例えば、特許文献１）。
【０００５】
【特許文献１】
特開平１０−４９７００号公報
【０００６】
【発明が解決しようとする課題】
しかし、上記従来技術では、複数のオブジェクトを選択したり、選択状態を変更することはできるが、選択したオブジェクト間のリンク情報を生成したり編集したりするには、ユーザはさらに別途リンク情報の編集操作を加える必要があり、操作性が非常に悪くなる恐れがある。
また、リンク情報には、リンクの始点と終点を示す情報が必要であるが、従来技術では、オブジェクトの始点や終点といった概念抜きに選択状態にしてしまうため、選択後のリンク編集が非常に困難である。
さらに、リンクは線分や矢印付き線分といった様々な視覚的属性を持つため、従来技術では上述の操作に加えて、さらにリンクの線分の線種を選択するなどの操作が必要になってしまう。
【０００７】
本発明の目的は上記従来の問題点に鑑み、オブジェクト間のリンク情報を生成したり編集したりする際の操作性の向上を目的とするリンク生成装置、方法、プログラム及び記録媒体を提供することにある。
【０００８】
【課題を解決するための手段】
上記の目的を達成するために本発明によるリンク生成装置は、入力装置からのストローク情報の形状を検出する形状検出手段と、前記形状検出手段により検出した形状の検出位置にオブジェクトがあるか否かを検出するオブジェクト検出手段と、前記形状検出手段が検出した形状に従って前記オブジェクト検出手段が検出したオブジェクト間をリンク状態とするリンク生成手段とを有することを特徴とするものである。
【０００９】
また、本発明によるリンク生成方法は、入力装置からのストローク情報の形状を検出する形状検出ステップと、前記形状検出ステップで検出した形状の検出位置にオブジェクトがあるか否かを検出するオブジェクト検出ステップと、前記形状検出ステップで検出した形状に従って前記オブジェクト検出ステップで検出したオブジェクト間をリンク状態とするリンク生成ステップとを有することを特徴とするものである。
【００１０】
また、本発明によるプログラムは、入力装置からのストローク情報の形状を検出する形状検出処理と、前記形状検出処理で検出した形状の検出位置にオブジェクトがあるか否かを検出するオブジェクト検出処理と、前記形状検出処理で検出した形状に従って前記オブジェクト検出処理で検出したオブジェクト間をリンク状態とするリンク生成処理とをコンピュータに実行させることを特徴とするものである。
さらに、本発明による記録媒体は、上記プログラムを記録したものである。
【００１１】
すなわち、請求項１記載の発明は、入力装置からのストローク情報の形状を検出する形状検出手段と、前記形状検出手段により検出した形状の検出位置にオブジェクトがあるか否かを検出するオブジェクト検出手段と、前記形状検出手段が検出した形状に従って前記オブジェクト検出手段が検出したオブジェクト間をリンク状態とするリンク生成手段とを有することを特徴とするリンク生成装置である。
【００１２】
請求項２記載の発明は、請求項１記載の発明において、前記オブジェクト検出手段は、前記形状検出手段が検出するストロークの形状のうち、ストロークの始点付近に最も近い位置のオブジェクトと、ストロークの終点付近に最も近い位置のオブジェクトを検出することを特徴とするリンク生成装置である。
【００１３】
請求項３記載の発明は、請求項１または２記載の発明において、前記形状検出手段は、ストローク情報の自己交差点数を検出することを特徴とするリンク生成装置である。
【００１４】
請求項４記載の発明は、請求項１から３のいずれか１項に記載の発明において、前記リンク生成手段は、前記形状検出手段が検出するストロークの形状に従ってリンクの始点片端、終点片端、あるいは始点と終点両端の表示状態を変更することを特徴とするリンク生成装置である。
【００１５】
請求項５記載の発明は、請求項１から４のいずれか１項に記載の発明において、計算システム用のユーザインタフェース装置で用いられることを特徴とするリンク生成装置である。
【００１６】
請求項６記載の発明は、入力装置からのストローク情報の形状を検出する形状検出ステップと、前記形状検出ステップで検出した形状の検出位置にオブジェクトがあるか否かを検出するオブジェクト検出ステップと、前記形状検出ステップで検出した形状に従って前記オブジェクト検出ステップで検出したオブジェクト間をリンク状態とするリンク生成ステップとを有することを特徴とするリンク生成方法である。
【００１７】
請求項７記載の発明は、請求項６記載の発明において、前記オブジェクト検出ステップは、前記形状検出ステップで検出するストロークの形状のうち、ストロークの始点付近に最も近い位置のオブジェクトと、ストロークの終点付近に最も近い位置のオブジェクトを検出することを特徴とするリンク生成方法である。
【００１８】
請求項８記載の発明は、請求項６または７記載の発明において、前記形状検出ステップは、ストローク情報の自己交差点数を検出することを特徴とするリンク生成方法である。
【００１９】
請求項９記載の発明は、請求項６から８のいずれか１項に記載の発明において、前記リンク生成ステップは、前記形状検出ステップで検出するストロークの形状に従ってリンクの始点片端、終点片端、あるいは始点と終点両端の表示状態を変更することを特徴とするリンク生成方法である。
【００２０】
請求項１０記載の発明は、請求項６から９のいずれか１項に記載の発明において、計算システム用のユーザインタフェース装置で用いられることを特徴とするリンク生成方法である。
【００２１】
請求項１１記載の発明は、入力装置からのストローク情報の形状を検出する形状検出処理と、前記形状検出処理で検出した形状の検出位置にオブジェクトがあるか否かを検出するオブジェクト検出処理と、前記形状検出処理で検出した形状に従って前記オブジェクト検出処理で検出したオブジェクト間をリンク状態とするリンク生成処理とをコンピュータに実行させるプログラムである。
【００２２】
請求項１２記載の発明は、請求項１１記載の発明において、前記オブジェクト検出処理は、前記形状検出処理が検出するストロークの形状のうち、ストロークの始点付近に最も近い位置のオブジェクトと、ストロークの終点付近に最も近い位置のオブジェクトを検出することを特徴とするプログラムである。
【００２３】
請求項１３記載の発明は、請求項１１または１２記載の発明において、前記形状検出処理は、ストローク情報の自己交差点数を検出することを特徴とするプログラムである。
【００２４】
請求項１４記載の発明は、請求項１１から１３のいずれか１項に記載の発明において、前記リンク生成処理は、前記形状検出処理が検出するストロークの形状に従ってリンクの始点片端、終点片端、あるいは始点と終点両端の表示状態を変更することを特徴とするプログラムである。
【００２５】
請求項１５記載の発明は、請求項１１から１４のいずれか１項に記載のプログラムを記録した記録媒体である。
【００２６】
【発明の実施の形態】
以下、本発明の実施の形態を図面と共に説明する。
まず、図２について本実施の形態で用いるリンクの概念を説明する。
図２（ａ）では、表示装置上に四角１、丸２、三角３の三つのオブジェクトが配置されており、四角１と三角３は線分４、四角１と丸２は矢印付き線分５によって結ばれている。
【００２７】
このように表示装置上に表示されるオブジェクト間に線分４や矢印付き線分５を描画することで、オブジェクト間に何らかの関係付けが成されていることを視覚的にユーザに伝えるものをリンクと定義する。
リンクは、例えば図表用アプリケーションソフトウェアやプレゼンテーションソフトウェアなどに多く見られる機能である。
【００２８】
図２（ｂ）はリンクの他のバリエーションを示している。リンクは「四角１→丸２→五角形６」のように２つ以上のオブジェクトが連なる場合もある。この場合、四角１と丸２は線分７で結ばれているが、丸２と五角形６をつなぐ部分は線分ではなく曲線８である。このように、視覚的にオブジェクト間に関係があることを示すことが分かるものもリンクとして扱うことができる。
【００２９】
また、四角１と三角３の間は点線の線分９で結ばれている。このように、視覚的な属性は単純な実線だけでなく、色属性、線種、線幅など様々な視覚効果属性を持つものもリンクとして扱うことができる。
本実施の形態は、上述のようなリンクを生成したり編集する際の操作性を向上する方法を提供するものである。
【００３０】
図１は本発明の実施の形態によるユーザインタフェース装置に搭載されるリンク生成装置の構成を示すブロック図である。
図１において、入力部１００は、マウス、スタイラスペン、タッチパネルなどからの座標点列（以下ストローク）を取得する。ストロークとは、入力部１００のボタンやペンなどの筆記手段が入力部１００の入力面に接地した状態から離れる状態までの（ｘ，ｙ）　の座標点を所定の時間間隔でサンプリングした座標点の列である。ストロークの詳細については後述する。
【００３１】
形状検出部１０１は、入力部１００で取得したストロークのうちの座標点列から、この座標点列が形成した１つ以上の特定形状を検出する。オブジェクト検出部１０２は、形状検出部１０１で検出した形状を形成するストローク座標点列の連続する２点間を結ぶ線分がオブジェクトに内包されるか交差する場合に、そのオブジェクトを選択状態とする。リンク生成部１０３は、オブジェクト検出部１０２で検出したオブジェクト間に形状検出部１０１で検出したストロークの形状に従ってリンク状態を生成する。
【００３２】
次に、図３を参照してストロークの概念を説明する。
ストロークは手、ペン、ボタンなどの筆記手段が入力面に接地した点から移動した後、筆記手段が接面から離れるまでの０番目からｎ番目までの座標点列をサンプリングしたものである。例えばｉ番目の座標点は、水平方向をｘ、垂直方向をｙとすると（ｘ［ｉ］，ｙ［ｉ］　）のように表すことができる。
【００３３】
以下説明を簡単にするために、コンピュータ言語であるＣ言語の構造体形式の書式を用いて説明する。
オブジェクトのデータ構造を表す構造体ＯＢＪＥＣＴは以下のように定義できる。
2004110584.tif 000003
【００３４】
ここで、ｘ［］，ｙ［］　は、ストロークを構成する水平方向、垂直方向の座標点であり、ＮＭＡＸは配列の最大数を示す所定の定数である。ｎはストロークの座標点数である。
ｉｓＬｉｎｋは、真偽値（真Ｔｒｕｅ，偽Ｆａｌｓｅ　）を持つ変数であり、Ｔｒｕｅの場合はそのオブジェクトがリンクオブジェクトであることを示し、Ｆａｌｓｅ　の場合はリンク以外のオブジェクトであることを示している。
【００３５】
ｌａｒｒａｙ［］は、オブジェクトがリンクオブジェクトの場合、そのリンクオブジェクトがリンクするオブジェクトｏｂｊ［］　のインデックス番号を順次保持する配列であり、ＬＩＮＫＭＡＸ　はその配列の最大数を示す所定の定数である。
１ｎはオブジェクトがリンクオブジェクトの場合に、そのリンクオブジェクトがリンクするオブジェクトの個数を保持するための変数である。
ｏｂｊ［］　はＯＢＪＥＣＴ型の構造体を持つ配列であり、ＯＢＪＭＡＸはｏｂｊ［］　配列の最大数を保持する所定の定数である。ｍａｘ　は現時点でのオブジェクトの個数を保持する変数である。
【００３６】
図４は入力部１００の処理を示すフローチャートである。
ユーザはまずリンクオブジェクトを生成するのか、通常オブジェクトを生成するのかを選択する（ステップＳ１、以下ステップ略）。通常オブジェクトとは、リンクオブジェクト以外のストローク描画物などのことである。次に、筆記手段が入力部１００の入力面の　（ｘ，ｙ　）　の位置に接地すると（Ｓ２）、まずｏｂｊ［］　配列のオブジェクトの個数を保持するｍａｘ　を１インクリメントする（Ｓ３）。次に、ｏｂｊ［ｍａｘ］．ｎを０に初期化する（Ｓ４）。
【００３７】
次に、ユーザが筆記手段を入力面上で（ｘ’，ｙ’　）の位置に移動させたとすると（Ｓ５）、筆記手段が入力面から離れたかどうかを判断する（Ｓ６）。筆記手段が接地したままの場合（Ｓ６、ＮＯ）、ｏｂｊ［ｍａｘ］．ｘ［ｏｂｊ［ｍａｘ］．ｎ］にｘ’を、ｏｂｊ［ｍａｘ］．ｙ［ｏｂｊ［ｍａｘ］．ｎ］にｙ’を代入した後（Ｓ７）、ｏｂｊ［ｍａｘ］．ｎを１インクリメントして（Ｓ８）、次の筆記手段の移動を検出し（Ｓ６）、以後、筆記手段が入力面から離れるまで処理を繰り返す。
筆記手段が入力面から離れたら（Ｓ６、ｙｅｓ）、そのオブジェクトがリンクオブジェクトか否かを調べ（Ｓ９）、リンクオブジェクトの場合はｏｂｊ［ｍａｘ］．ｉｓＬｉｎｋ　をＴｒｕｅに（Ｓ１０）、それ以外の場合はｏｂｊ［ｍａｘ］．ｉｓＬｉｎｋ　をＦａｌｓｅ　にして（Ｓ１１）、処理を終了する。
【００３８】
次に、形状検出部１０１の処理について説明する。
形状検出部１０１では、ｏｂｊ［ｋ］を構成するストロークの自己交差数を検出する（ｋ　は０からｍａｘ　の値をとる任意の変数）。ここで自己交差とは、ｏｂｊ［ｋ］のストロークを構成する座標点を順に結んだ線分同士が交差することを指す。
線分の交差判定処理については、例えば、
ｈｔｔｐ：／／ｗｗｗ．ｗｏｍｂａｔ．ｏｒ．ｊｐ／ｔｏｍｏｙａｓｈｕｔｔｌｅ／ｓｈｔｍｌ／ａｌｇｏｒｉｔｈｍ／Ｉｎｔｅｒｓｅｃｔｉｏｎ．ｈｔｍ
に示されている公知の技術を用いるため、詳細な構成説明は省略するが以下に概略を示す。
【００３９】
図５に自己交差の例を示す。
まず、通常の線分交差判定処理について説明する。座標点Ａ，Ｂ，Ｃ，Ｄ　がある場合、線分ＡＢと線分ＣＤが交差するということは、点Ａ，Ｂ　を通る直線が線分ＣＤと交差し、かつ、点Ｃ，Ｄ　を通る直線が線分ＡＢと交差していることと考えられる。そこで、直線を境界線として、線分を構成する２つの点が直線に対して両側に存在するとき、即ち、ｙ＝ｄｘ＋ｅという直線を考えた場合にｙ−ｄｘ−ｅに対して２つの点の座標値を代入して符号が異なるときに、直線と線分は交差すると考えられる。この処理を直線ＡＢと点Ｃ，Ｄ　、直線ＣＤと点Ａ，Ｂ　に対して計算した結果、双方が交差すると判定された場合、線分ＡＢと線分ＣＤが交差すると判定される。
【００４０】
このような線分交差判定処理を、ｏｂｊ［ｋ］自身を構成する座標点を結んだ線分間に適用することで、自己交差数ｓｃを計算できる。
例えば、ｉ　とｊ　が互いに独立に０からｏｂｊ［ｋ］のストロークの頂点数であるｏｂｊ［ｋ］．ｎまでの値を取る変数であるとすると、座標点Ａ（ｏｂｊ［ｋ］．ｘ［ｉ］，ｏｂｊ［ｋ］．ｙ［ｉ］）、Ｂ（ｏｂｊ［ｋ］．ｘ［ｉ＋１］，ｏｂｊ［ｋ］．ｙ［ｉ＋１］）、Ｃ（ｏｂｊ［ｋ］．ｘ［ｊ］，ｏｂｊ［ｋ］．ｙ［ｊ］）、Ｄ（ｏｂｊ［ｋ］．ｘ［ｊ＋１］，ｏｂｊ［ｋ］．ｙ［ｊ＋１］）によって構成される線分ＡＢ，ＣＤ　のうち、ｉ＝ｊ　、ｉ＝ｊ＋１　、ｊ＝ｉ＋１　の条件を除くすべての場合について、線分の交差を検出する。このとき検出された交差の和を自己交差数とする。
【００４１】
図６はオブジェクト検出部１０２の処理を示すフローチャートである。
オブジェクト検出部１０２では、リンクオブジェクトとして入力したオブジェクトと、他のオブジェクトとが交差するかどうかを検出し（交差の概念は図７を参照）、交差を検出した場合は、その交差したオブジェクト間にリンク関係があるもの検出する。
図７においては、ストローク１０が四角１、三角３、丸２と交差し、五角形６とは交差していない場合を示す。
【００４２】
入力部１００においてリンクオブジェクト、即ち、ｏｂｊ［ｍａｘ］．ｉｓＬｉｎｋ＝Ｔｒｕｅとなった場合に図６の処理が行われる。
まず、テンポラリ変数ｋ　を０，　真偽値を保持する変数ｃＦｌａｇ　をＦａｌｓｅ，ｏｂｊ［ｍａｘ］のリンクするオブジェクト数ｏｂｊ［ｍａｘ］．ｌｎ　を０にそれぞれ初期化する（Ｓ２１）。次に、テンポラリ変数ｉを０に、一時的に交差を検出したオブジェクトの配列のインデックス番号を保持するｓｒｃ　を−１に初期化した後（Ｓ２２）、テンポラリ変数ｊを０に初期化する（Ｓ２３）。
【００４３】
次に順次、テンポラリ変数Ｉ，ｊ，ｋ　を更新しながら、線分（ｏｂｊ［ｍａｘ］．ｘ［ｉ］，ｏｂｊ［ｍａｘ］．ｙ［ｉ］）　−　（ｏｂｊ［ｍａｘ］．ｘ［ｉ＋１］，ｏｂｊ［ｍａｘ］．ｙ［ｉ＋１］）　と線分（ｏｂｊ［ｋ］．ｘ［ｊ］，ｏｂｊ［ｋ］．ｙ［ｊ］）　−　（ｏｂｊ［ｋ］．ｘ［ｊ＋１］，ｏｂｊ［ｋ］．ｙ［ｊ＋１］）　が交差しないかどうかを判断する（Ｓ２４、Ｓ２５、Ｓ２６、Ｓ３３、Ｓ３５）。
交差を検出した場合は、ｃＦｌａｇ　をＴｒｕｅとして、ｓｒｃ　にそのときに交差したｋ　の値を代入しておく（Ｓ２７）。線分交差判定処理については前述の通りであり、ここでは説明を省略する。
【００４４】
次に、ｃＦｌａｇ＝Ｆａｌｓｅ　かどうかを判断し（Ｓ２８）、Ｔｒｕｅの場合にはｓｒｃ　が−１でないことを判断し（Ｓ２９）、ｓｒｃ　が−１でない場合、ｓｒｃ　が過去に検出されていないかどうかを判断する（Ｓ３０）。Ｓｒｃ　が過去に検出されていないかどうかを知るには、既に過去に検出したオブジェクトのインデックス番号を保持するｏｂｊ［ｍａｘ］．ｌａｒｒａｙ［］　配列中にｓｒｃ　の値があるかどうかを照合すればよい。
【００４５】
ｓｒｃ　が過去に検出されていないと判断された場合には、ｏｂｊ［ｍａｘ］．ｌａｒｒａｙ［ｏｂｊ［ｍａｘ］．ｌｎ］にｓｒｃ　の値を代入して、さらに、ｏｂｊ［ｍａｘ］．ｌａｒｒａｙ［］　配列のインデックス値であるｏｂｊ［ｍａｘ］．ｌｎ　を１インクリメントする（Ｓ３１）。
このようにして、ｏｂｊ［ｋ］に関してｋ　を０からｍａｘ−１　番目まで探索して、ｏｂｊ［ｍａｘ］のストロークに交差するｏｂｊ［ｍａｘ］以外のすべてのオブジェクトを検出する（Ｓ３２、Ｓ３３）。尚、Ｓ２８でｃＦｌａｇ＝Ｆａｌｓｅ　でない場合は、Ｓ３４、Ｓ３５でｉ＝ｏｂｊ［ｍａｘ］．　ｎ−１になるまで処理を繰り返す。
【００４６】
図８はリンク生成部１０３の処理を示すフローチャートである。
まず、オブジェクト検出部１０２において、ｏｂｊ［ｍａｘ］．ｌｎ　が２以上であるかを判断し、２より小さい場合にはただちに処理を終了する（Ｓ４１）。
ｏｂｊ［ｍａｘ］．ｌｎ　が２以上の場合には、次にテンポラリ変数ｉを０に初期化する（Ｓ４２）。次に、ｓ１＝ｏｂｊ［ｍａｘ］．ｌａｒｒａｙ［ｉ］　とｓ２＝ｏｂｊ［ｍａｘ］．ｌａｒｒａｙ［ｉ＋１］　として、ｏｂｊ［ｍａｘ］．ｌａｒｒａｙ［］　配列内の検出したオブジェクトの連続したインデックス番号を取得する（Ｓ４３）。
【００４７】
次に、形状検出部１０１で検出したｏｂｊ［ｍａｘ］のストロークにおける自己交差数ｓｃの数に従って生成するリンクオブジェクトの線種Ｌｔｙｐｅ　を決定する（Ｓ４４）。ｓｃ＝０の場合は「線分」、ｓｃ＝１の場合は「矢印（片端）」、ｓｃ＝２の場合は「矢印（両端）」、その他の場合は「線分」としてＬｔｙｐｅ　を決定する（Ｓ４５からＳ５０）。次に、線種をＬｔｙｐに指定する（Ｓ５１）。
【００４８】
次に（ｏｂｊ［ｓ１］．ｘ［０］，ｏｂｊ［ｓ１］．ｙ［０］）−（ｏｂｊ［ｓ２］．ｘ［０］，ｏｂｊ［ｓ２］．ｙ［０］）　間にＬｔｙｐｅに指定した線種で線分を描画する（Ｓ５２）。線種が「線分」の場合は、ｏｂ　ｊ［ｓ１］　とｏｂｊ［ｓ２］　の間に通常の線分を描画する。線種が「矢印（片端）」の場　合は、ｏｂｊ［ｓ１］　とｏｂｊ［ｓ２］　の間にｏｂｊ［ｓ２］　側に矢印のついた線分を描画する。　線種が「矢印（両端）」の場合は、ｏｂｊ［ｓ１］　とｏｂｊ［ｓ２］　の間にｏｂｊ［ｓ１］　側とｏｂ　ｊ［ｓ２］　側の両端に矢印のついた線分を描画する。
【００４９】
次にｉがｏｂｊ［ｍａｘ］．ｌｎ−１　かどうかを判断し（Ｓ５３）、ｉがｏｂｊ［ｍａｘ］．ｌｎ−１　でない場合にはｉを１インクリメントする（Ｓ５４）。
以上の処理をｉがｏｂｊ［ｍａｘ］．ｌｎ−１　になるまで繰り返し行う。
【００５０】
図９はリンク生成部１０３の他の処理を示すフローチャートである。
図９においては、リンクオブジェクトが交差したオブジェクトのうち、始点側に最も近いオブジェクトと、終点側に最も近いオブジェクトとの間にリンク線分を描画する。
【００５１】
まずｏｂｊ［ｍａｘ］．ｌｎ＞＝２かどうかを判断して（Ｓ６１）、ｏｂｊ［ｍａｘ］．ｌｎ　が２より小さい場合には直ちに処理を終了する。それ以外の場合は、次にｓ１＝ｏｂｊ［ｍａｘ］．ｌａｒｒａｙ［０］　，ｓ２＝ｏｂｊ［ｍａｘ］．ｌａｒｒａｙ［ｏｂｊ［ｍａｘ］．ｌｎ−１］　として（Ｓ６２）、オブジェクト検出部１０２において、最初に検出したオブジェクト、即ち、ｏｂｊ［ｍａｘ］の始点（ｏｂｊ［ｍａｘ］．ｘ［０］，ｏｂｊ［ｍａｘ］．ｙ［０］）側に最も近傍のオブジェクトのインデックス番号と、最後に検出したオブジェクト、即ち、ｏｂｊ［ｍａｘ］の終点（ｏｂｊ［ｍａｘ］．ｘ［ｏｂｊ［ｍａｘ］．ｎ］　，ｏｂｊ［ｍａｘ］．ｙ［ｏｂｊ［ｍａｘ］．ｎ］）　側に最も近傍のオブジェクトのインデックス番号を取得する。
その後の処理は図８のＳ４４からＳ５２と同様であるため詳細な説明は割愛するが、ｏｂｊ［ｓ１］　とｏｂｊ［ｓ２］　間にリンク線分を描画する。
【００５２】
図１０はリンク生成部１０３が形状検出部１０１において検出したリンクオブジェクトの自己交差数に従って線種を変更してリンク線分を描画している様子を示す。
図１０（ａ１）のようにリンクオブジェクトのストロークに自己交差数がない場合は、リンク生成部１０３は、図１０（ａ２）のようなリンク線分を生成する。
図１０（ｂ１）のようにリンクオブジェクトのストロークに自己交差数が一つある場合は、リンク生成部１０３は、図１０（ｂ２）のように片端に矢印を持つようなリンク線分を生成する。
図１０（ｃ１）のようにリンクオブジェクトのストロークに自己交差数が二つある場合は、リンク生成部１０３は、図１０（ｃ２）のように両端に矢印を持つようなリンク線分を生成する。
【００５３】
図１１は図８に示したリンク生成部１０３の処理と、図９に示したリンク生成部１０３の他の処理との違いを示す。
図１１（ａ）のようなリンクオブジェクトのストロークを描画すると、図８の処理の場合は、図１１（ｂ１）のようにリンクオブジェクトのストロークが交差する各オブジェクト間にリンク線分が生成される。また、図９の処理の場合には、図１１（ｂ２）のようにリンクオブジェクトのストロークの始点近傍のオブジェクトと終点近傍のオブジェクトの間にリンク線分が生成される。
【００５４】
次に図１２を参照して、上述した一連の処理を実行するプログラムをコンピュータにインストールして実行可能な状態とするために用いられる本発明の実施の形態によるプログラム、及びこのプログラムを記録した記録媒体について説明する。
プログラムは、前述した各フローチャートの処理を実行するものである。
【００５５】
このプログラムは、例えば図１２（ａ）に示すように、本発明によるリンク生成装置を搭載したユーザインタフェース装置を接続したコンピュータに内蔵されている記録媒体としてのハードディスクに予めインストールした状態で提供できる。
また、プログラムは、図１２（ｂ）に示すように、記録媒体に一時的あるいは永続的に格納し、本発明によるリンク生成装置を搭載したユーザインタフェース装置を接続したコンピュータにユニットとして組み込んだり、あるいは着脱式の記録媒体として利用することで、パッケージソフトウェアとして提供できる。
【００５６】
上記プログラムを格納する記録媒体としては、図１２（ｃ）に示すように、例えばフロッピー（登録商標）ディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ　Ｄｉｓｃ　Ｒｅａｄ　Ｏｎｌｙ　Ｍｅｍｏｒｙ　）、ＭＯ（Ｍａｇｎｅｔｏ　ｏｐｔｉｃａｌ　）ディスク、ＤＶＤ　（Ｄｉｇｉｔａｌ　Ｖｅｒｓａｔｉｌｅ　Ｄｉｓｃ）、磁気ディスク、半導体メモリなどを利用できる。
また、プログラムは、図１２（ｄ）に示すように、ダウンロードサイトから、ＬＡＮ　（Ｌｏｃａｌ　Ａｒｅａ　Ｎｅｔｗｏｒｋ）やインターネットといったネットワークを介して、有線または無線により、本発明によるリンク生成装置を搭載したユーザインタフェース装置を接続したコンピュータに転送し、そのコンピュータが内蔵するハードディスクなどにダウンロードさせるようにすることができる。
【００５７】
【発明の効果】
以上説明した発明は以下のような効果を奏する。
従来技術では、オブジェクト間にリンク操作を行う場合には、オブジェクトを選択状態にしておいてリンク編集を行うか、あるいは２つのオブジェクトを意図的に選択してリンク操作を行う必要があったが、本発明によれば、リンクオブジェクトのストロークをオブジェクトに交差するように描画してリンクするオブジェクトを検出し、その交差した順にリンク線分を生成できるようになるため、ＧＵＩ　操作におけるリンク編集操作が簡単になる。
【００５８】
また、リンクは線分や矢印付き線分といった様々な視覚的属性を持つため、従来技術では、リンクの線分の線種を別途選択するなどの操作が必要になってしまうが、本発明によれば、リンクオブジェクトのストロークに含まれる自己交差数を検出して、その自己交差数の違いによってリンク線分の線種を同時に指定できるため、線種を別途選択する手間を軽減できるようになる。
【図面の簡単な説明】
【図１】本発明の実施の形態によるリンク生成装置を示すブロック図である。
【図２】リンクの概念を説明するための構成図である。
【図３】ストロークの概念を説明するための構成図である。
【図４】入力部の処理を示すフローチャートである。
【図５】ストロークの自己交差の例を示す構成図である。
【図６】オブジェクト検出部の処理を示すフローチャートである。
【図７】交差の概念を説明するための構成図である。
【図８】リンク生成部の処理を示すフローチャートである。
【図９】リンク生成部の他の処理を示すフローチャートである。
【図１０】リンク生成部が自己交差数に応じて色々な線種でリンク線分を描画する様子を示す構成図である。
【図１１】リンク生成部の処理の違いによるリンク線分を示す構成図である。
【図１２】本発明によるプログラム及び記録媒体を説明するための構成図である。
【符号の説明】
１、７　四角のオブジェクト
２　丸のオブジェクト
３　三角のオブジェクト
４　線分
５　矢印付き線分
６　五角形のオブジェクト
８　曲線の線分
９　点線の線分
１０　ストローク
１００　入力部
１０１　形状検出部
１０２　オブジェクト検出部
１０３　リンク生成部
【図１】
2004110584.tif 000004
【図２】
2004110584.tif 000005
【図３】
2004110584.tif 000006
【図４】
2004110584.tif 000007
【図５】
2004110584.tif 000008
【図６】
2004110584.tif 000009
【図７】
2004110584.tif 000010
【図８】
2004110584.tif 000011
【図９】
2004110584.tif 000012
【図１０】
2004110584.tif 000013
【図１１】
2004110584.tif 000014
【図１２】
2004110584.tif 000015