交差リンク形状ポリシー

交差リンク形状ポリシーは、その他のリンクと交差するリンクの形状を計算します。交差モードは、トンネルまたはブリッジとすることができます。
TunnelCrossingLinks.gif
BridgeCrossingLinks.gif
トンネル交差およびブリッジ交差

リンク形状ポリシーの設定

クラス IlvCrossingAwareLinkImage のリンクに交差リンク形状ポリシーを設定できます。以下のコードを使用します。
IlvCrossingAwareLinkImage link =
    new IlvCrossingAwareLinkImage(node1, node2, true, null);
link.setLinkShapePolicy(new IlvCrossingLinkShapePolicy());
grapher.addLink(link, redraw);
...
このポリシーは、いくつかのリンクの間で共有できます。同じポリシーを共有するすべてのリンクにポリシーのパラメーターが有効です。

交差グラフィック

交差リンク形状ポリシーは交差の位置を計算しますが、実際に交差を描画するのは交差グラフィックです。リンクに関連した交差グラフィックがない場合、交差は表示されず、代わりにギャップが現れます。交差グラフィックは、 IlvCrossingGraphic インターフェースを実装する IlvGraphic のサブクラスのインスタンスです。
パッケージ ilog.views.graphic.linkpolicy には、次の 2 つの定義済み交差グラフィックが含まれています。
形状ポリシー自体とは異なり、交差グラフィックは、複数のリンクで共有することはできません。リンクに関連付けられた後の交差グラフィックは、交差リンク形状ポリシーによって完全に維持されます。 したがって、交差グラフィックを移動したり、形状変更したりする必要はありません。これはすべてリンク形状ポリシーによって自動的に行われます。
トンネル交差グラフィックを設定するには、以下を呼び出します。
link.setCrossingGraphic(new IlvTunnelCrossings(link));
ブリッジ交差グラフィックを設定するには、以下を呼び出します。
link.setCrossingGraphic(new IlvBridgeCrossings(link));

次のコードは、2 つのリンクで交差リンク形状ポリシーおよび交差グラフィックを設定する方法を示しています。
IlvCrossingLinkShapePolicy policy = new IlvCrossingLinkShapePolicy();
IlvCrossingAwareLinkImage link1 =
    new IlvCrossingAwareLinkImage(node1, node2, true, null);
link1.setCrossingGraphic(new IlvTunnelCrossings(link1));
link1.setLinkShapePolicy(policy);
IlvCrossingAwareLinkImage link2 =
    new IlvCrossingAwareLinkImage(node3, node4, true, null);
link2.setCrossingGraphic(new IlvTunnelCrossings(link2));
link2.setLinkShapePolicy(policy);
...
// insert the links into the grapher only AFTER installing the policy
grapher.addLink(link1, redraw);
grapher.addLink(link2, redraw);
...