Grapher > グラファー・パッケージの機能 > グラファーのリンク > 定義済みグラファー・リンク
 
定義済みグラファー・リンク
定義済みのリンク・クラスはグラファー・ライブラリーにあります。これらのクラスはそれぞれ、IlvLinkImage ベース・クラスに特定の振る舞いや描画機能を追加します。これらのクラスをそのまま使用したり、サブクラス化してカスタマイズされたリンクを作成できます。以下のクラスを使用できます。
*IlvLinkHandle
*IlvLinkLabel
*IlvOneLinkImage
*IlvOneSplineLinkImage
*IlvDoubleLinkImage
*IlvDoubleSplineLinkImage
*IlvArcLinkImage
*IlvPolylineLinkImage
IlvLinkHandle
IlvLinkHandle クラスはリンク・クラスの例で、リンクの形状と振る舞いは IlvLinkImage から直接継承され、リンクの描画のみが再定義されています。
このクラスにより、あらゆるタイプのグラフィック・オブジェクトを参照して、グラファー・リンクとして振る舞うようにできます。また、グラフィック・オブジェクトは複数の IlvLinkHandle インスタンスから参照できます。これにより、形状が複雑でも非常に軽量なリンクを作成することができます。Figure 2.3は、多角形を参照する IlvLinkHandle インスタンスの例を示します。
図 2.3    リンクとして使用されるグラフィック・オブジェクト
このクラスのコンストラクターは以下の通りです。
IlvLinkHandle(IlvDisplay* display,
              IlvGraphic* object,
IlvGraphic* from,
IlvGraphic* to,
IlvDim width = 0,
IlvBoolean owner = IlvTrue
IlvPalette* palette=0);
グラファーに追加されると、このインスタンスは幅 width を使用してノード fromto の間のリンクとしてグラフィック・オブジェクト object を描きます。owner パラメーターはハンドルと被参照オブジェクトの間の関係を示します。ハンドルが被参照オブジェクトを所有している場合、このオブジェクトの削除はハンドルが行います。つまり、いずれのハンドルにも所有されていない被参照オブジェクトは、安全に共有することができます。
IlvLinkHandle クラスの使用方法の例は、<ILVHOME>/samples/grapher/linkhand ディレクトリーにあります。
IlvLinkLabel
IlvLinkLabel クラスはまた、IlvLinkImage クラスの形状と振る舞いを継承します。IlvLinkLabel タイプのリンクは、ユーザー定義の文字列でラベル付けされます。
この文字列は、コンストラクターの label パラメーターによって指定できます。リンクの作成後に IlvLinkLabel::setLabel メソッドを使用して指定することもできます。
Figure 2.4は、次の 2 つの IlvLinkLabel オブジェクトを示しています。
図 2.4    ラベル付けされたリンク
IlvOneLinkImage
IlvOneLinkImage クラスは、IlvLinkImage クラスから派生し、新しい形状と振る舞いを定義します。このクラスのインスタンスは Figure 2.5に図示されているとおり、2 本の直角線から構成されています。
図 2.5    IlvOneLinkImage
リンクの形状は向きプロパティーに応じて変わります。これは、from ノードを出発したリンクが垂直方向 (IlvVerticalLink) に進むか水平方向 (IlvHorizontalLink) に進むかを示します。このプロパティーはコンストラクターで指定することも、リンク作成後に setOrientation メソッドを使用して指定することもできます。
IlvOneSplineLinkImage
このクラスは、リンクをスプラインとして描画する IlvOneLinkImage のサブクラスです。
図 2.6    IlvOneSplineLinkImage
終点の位置は IlvOneLinkImage クラスで計算されたものと同じです。描画されたスプラインの 2 つの制御点は、両方ともリンクの開始接線と終了接線の交差点にあります。setControlPoint メソッドを使用することにより、二重制御点の位置を変更できます。
IlvDoubleLinkImage
IlvDoubleLinkImage クラスは、IlvLinkImage から派生し、新しい形状と振る舞いを定義します。このクラスのインスタンスはFigure 2.7に図示されている通り、直角に交わる 3 本の一続きの線から構成されています。
図 2.7    IlvDoubleLinkImage
3 つの切片のレイアウトは、setFixedOrientation メソッドで設定された 2 つのモードに従います。
*自動 - 切片の方向は、2 つのノードの間の水平と垂直の分離に依存します。切片の中間が最大分離の向きを取ります。
*固定 - リンクの向きが固定され、開始ノードを離れるときのリンクの方向 (水平か垂直) を指定します。
IlvDoubleSplineLinkImage
IlvDoubleSplineLinkImage クラスは IlvDoubleLinkImage のサブクラスであり、Figure 2.8で示すように線分の代わりに滑らかな曲線でリンクを描画します。これらのリンクの振る舞いは IlvDoubleLinkImage クラスの場合と同じです。
図 2.8    IlvDoubleSplineLinkImage
IlvArcLinkImage
IlvArcLinkImage クラスは、新しい形状と振る舞いを定義する IlvLinkImage のサブクラスです。このタイプのリンクは、Figure 2.9で示すように 2 つのノードをつなぐ円弧として描画されます。
図 2.9    3 つのノードをつなぐ IlvArcLinkImage
円弧は 2 つ制御点のあるスプラインとして描画されます。これらの制御点とリンクの終点をつなぐ切片の間の距離 (円弧のオフセットとも呼ばれます) は、以下のいずれかで指定できます。
*固定値。IlvArcLinkImage::setFixedOffset メソッドを使用。
*切片の長さに比例する値。IlvArcLinkImage::setOffsetRatio メソッドを使用。
円弧オフセットはマイナスの値をとることもできます。この場合、制御点は開始点と終点をつなぐ有向切片の右側にあります。このため、異なる円弧オフセットを使用することにより、2 つのノードを重複なしに複数のリンクで接続することができます。
IlvPolylineLinkImage
このクラスを使うと、リンクの中間点を動的に定義することができます。これらの点は各 IlvPolylineLinkImage インスタンスに格納され、複数の方法で指定できます。
*setPoints
*addPoints
*removePoints
*movePoint
すべてのリンク・クラスの場合と同様に、生成される形状は IlvPolylineLinkImage::getLinkPoints メソッドで計算されます。また、リンクを直線の線分で描画するか、または drawSpline メソッドを呼び出して曲線で描画するかを指定することもできます。Figure 2.10 は、IlvPolylineLinkImage インスタンスで作成される自由形式のリンクの例を示しています。
図 2.10    IlvPolylineLinkImage

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