Grapher > グラファー・パッケージの機能 > グラフ管理
 
グラフ管理
このセクションでは、Rogue Wave® Views でのグラフ管理について説明します。説明は、次の 2 つの部分に分かれています。
*IlvGrapher クラスの説明
*グラフ記述の読み込みと保存
IlvGrapher クラスの説明
グラフを表現するグラフィック・オブジェクトは IlvGrapher クラスのインスタンスに格納されます。このクラスは IlvManager クラスから派生し、その機能をすべて継承します。IlvManager (ベース・クラス) のコンストラクターと IlvGrapher のコンストラクターには同じパラメーターがあります。
IlvGrapher(IlvDisplay* display,
int layers = 2,
IlvBoolean useacc = IlvTrue,
IlvUShort maxInList = IlvMaxObjectsInList,
IlvUShort maxInNode = IlvMaxObjectsInList);
IlvManager の概念に加え、IlvGrapher クラスでは次の 3 種類のグラフィック・オブジェクトを区別できます。
*ノード - ノードは情報階層の中の視覚的な参照点です。ノードは、addNode メソッドによりグラファーに追加されると特定の機能を持つグラフィック・オブジェクトで、IlvGraphic クラスのサブタイプです。この機能によって、ノードの移動時にも、リンクとノードの結び付きは解除されません。
*リンク - リンクは、ノード間の接続の視覚的な表現です。リンクは、IlvLinkImage クラスまたはそのいずれかのサブクラスのインスタンスです。これは IlvGrapher::addLink メソッドでグラファーに追加されます。リンクは既存の 2 ノード間でのみ存在できるため、グラファーでノードと呼ばれている 2 つのグラフィック・オブジェクトとともに作成する必要があります。ゴースト・ノード (IlvGrapher::addGhostNode メソッドで追加される) を使用すると、端が接続されていないリンクを作成できます。
*一般グラフィック・オブジェクト- 基本の IlvManager インスタンスの場合と同様に、ノードまたはリンク以外のあらゆる IlvGraphic オブジェクトをグラフに組み込むことができます。
IlvGrapher クラスは、リンクとノードを管理するメンバー関数のセットを提供します。たとえば、changeLink メソッドを呼び出すことにより、あるリンクを他のリンクに置き換えることができます。
また、makeNode メソッドを呼び出すことにより、グラファーに格納されているグラフィック・オブジェクトをノードに変換できます。このメソッドをグラファー・リンクに適用できます。これにより、リンクを他のノードに接続できます。ノードの振る舞いを持つリンクを処理する場合は、このリンクの位置を制御する幾何学的依存関係に閉路がないことを確認する必要があります。同様に、IlvGrapher::makeLink メソッドを使用してグラフィック・オブジェクトをグラファーのリンクに変換できます。作成されたリンクは IlvLinkHandle クラスのインスタンスになります。説明はグラファーのリンクを参照してください。
オブジェクトを IlvGrapher に格納すると、isNode メソッドと isLink メソッドを使用してノード、リンクおよび通常のグラフィック・インスタンスを区別できるようになります。
IlvGrapher API は、グラフの位相を問い合わせる複数のメソッドも提供します。たとえば、isLinkBetween メソッドを使用することにより、指定された 2 つのノードが接続されているかどうかを確認できます。また、getLinks メソッドを使用することにより、ノードのすべての出発リンクまたは到着リンクを取得することもできます。
以下のサンプル・コードは、::mapLinksIlvGrapher::mapLinks メソッドを使用してノードの出発リンクをすべて選択する方法を示します。
static void SelectLink(IlvGraphic* g, IlvAny arg)
{
ILVCAST(IlvGrapher*,arg)->setSelected(g,IlvTrue);
}
 
{
...
IlvGrapher* graph = ....;
IlvGraphic* node = ....; // The node being considered
//== Call the SelectLink function on all outgoing links of <node>
graph->mapLinks(node,SelectLink,graph,IlvLinkFrom);
...
}
最後に、IlvGrapher クラスはノードを垂直または水平なツリー構造に再編成する 2 つの定義済みレイアウト・メソッドを提供します。これらのレイアウトは、nodeXPretty メソッドと nodeYPretty メソッドで実装されています。
シンプルなグラファーの作成方法を示す例が、<ILVHOME>/samples/grapher/simple ディレクトリーにあります。また、IlvGrapher クラスのメンバー関数の詳細については、Rogue Wave Views Grapher リファレンス・マニュアルを参照してください。
グラフ記述の読み込みと保存
IlvGrapher クラスは IlvGraphInputFile クラスを使用してグラフを読み込み、IlvGraphOutputFile クラスを使用してグラフを保存します。
IlvGraphOutputFile
IlvGraphOutputFile クラスは IlvManagerOutputFile のサブクラスです。このサブクラスでは、各オブジェクトの記述ブロックの前にそのオブジェクトの詳細情報を追加するために、仮想メソッド IlvGraphOutputFile::writeObject が再定義されています。ここでは、この情報は、レイヤー・インデックス、オブジェクトのタイプ (ノード、リンク、またはその他のタイプのオブジェクト) および接続ピンです。接続ピンについては、グラファーのリンクに説明があります。
IlvGraphInputFile
IlvGraphInputFile クラスは IlvManagerInputFile のサブクラスです。このサブクラスでは、IlvGraphOutputFile::writeObject メソッドに記述された詳細情報を読み込むために、仮想メソッド IlvGraphInputFile::readObject が再定義されています。

Version 6.0
Copyright © 2015, Rogue Wave Software, Inc. All Rights Reserved.