矢印の制御

リンクで以下の 4 つのモードのいずれかを設定して矢印を表すことができます。
  • ARROW_FILL モード値 (デフォルト) は、塗りつぶされた三角形の矢印を描画します。
  • ARROW_OPEN モード値は、2 翼の矢印を描画します。
  • ARROW_GRADIENT モード値は、リンクに沿って明度を徐々に変更して、有向リンクを示します。 リンクは、ソース・オブジェクトの近くでは暗く、ターゲット・オブジェクトの近くでは明るくなります。
  • ARROW_DECORATION モード値は、矢印を表示する作業を、リンク装飾の 1 つに委ねます。

矢印の描画

最初の 2 つのモードでは、arrowPosition プロパティーによって、リンクに沿って矢印の位置を制御します。 値は 0 から 1 の浮動小数点値です。値 0 はリンクの先頭を意味し、1 は終端 (デフォルト) を意味します。 矢印の向きは、当然、それが付加されているリンク・セグメントに合わせられます。
プロパティー arrowRatio は、矢印のサイズ (リンク幅に比例) を制御します。 浮動小数点値 0.5 は、矢印がリンクと同じサイズであることを意味します。デフォルト値の 1 は、矢印がリンク幅の 2 倍であることを意味します。 このプロパティーは、最初の 2 つの矢印モードでのみ意味があります。
矢印のデフォルト色は黒色ですが、プロパティー arrowColor を使用して別の色を設定できます。
塗りつぶす色がピンクで、黒色の実線ボーダーで、結合が丸く、終端が切れている、3 つの垂直に位置合わせされたリンクを示す図。
上のリンクは矢印グラデーション・モードに設定されているため、色はリンク・ソースで暗く、リンクのターゲット終端 (ここではリンクの右端) で明るくなっています。
中央のリンクは均一なピンク色で、ターゲット終端が塗りつぶされた黒色の三角形の矢印になっています。
下のリンクには、紫色の開いた矢印 (>) があります。
矢印は、リンクのソース終端から 0.2 単位の距離にあります。
また、リンクのターゲット終端方向を指しています。
矢印および方向
基本リンクのプロパティーおよび方向を示す 3 つの方法
link {
        lineWidth   : 10 ; 
        endCap      : CAP_BUTT ; 
        lineJoin    : JOIN_ROUND ; 
        foreground  : 255,130,171 ; 
        borderWidth : 2 ; 
        oriented    : true ; 
}

link.top { 
        arrowMode : ARROW_GRADIENT ; 
}

link.center { 
        mode          : MODE_UNICOLOR ; 
        arrowPosition : 1f ; 
        arrowMode     : ARROW_FILL ; 
}       

link.bottom { 
        arrowColor    : #A3056E ; 
        arrowPosition : .2 ; 
        arrowMode     : ARROW_OPEN ; 
}       

矢印としての装飾の使用

ARROW_DECORATION モード値は、矢印を表示する役目を装飾に委ねます。
IlvGeneralLink は、特定の種類の矢印 (例えば UML 描画で使用するもの) を表示する上で役立つ場合があります。
矢印は単純な形状 (円、三角形、または菱形など) であり、リンクの終端に配置されます。 リンクは形状に重ならず、形状の中央に到達することもなく、一切変更されません。 ターゲット・ノードに触れる最後のリンク・セグメントの方向に関係なく、形状は常にリンクに向かいます。 装飾は IlvGraphic オブジェクト (つまり、基本的に矩形オブジェクト) であるため、この特殊モードを使用することで、直交リンクの場合に、より優れた結果が得られます。
このモードを使用できるのは、以下の条件が満たされている場合のみです。
  • arrowMode プロパティーが ARROW_DECORATION に設定されている。
  • リンク装飾の 1 つの位置が 1 に設定されている。
  • この装飾でオプション DECORATION_OVER を設定する。
  • この装飾でオプション DECORATION_xxx_RETRACT_AT_END の 1 つを設定する。
    ここで、xxx は、FULLHALFNO のいずれか。
以下の図に、正方形ノードに接続された、ARROW_DECORATION モードの 2 つのリンクの例を示します。 水平のリンクの終端は円になっており、線は円の中心まで続いています。 垂直のリンクの終端は菱形であり、線は菱形の先頭までになっています。
正方形ノードに接続するリンクの矢印の装飾を示す図。
水平のリンクと垂直のリンクは、異なるソース・ノードから同じターゲット・ノードに接続されています。
小さな円の装飾が、水平に位置合わせされたノードを接続するリンクの終端にあり、ターゲット・ノードに隣接しています。
リンク自体は円の装飾の中心まで延びています。中抜きの菱形の装飾が、垂直に位置合わせされたノードを接続するリンクの終端にあり、ターゲット・ノードにも接しています。
このリンクは、菱形矢印装飾の開始部分を越えて延びていません。
2 つの装飾矢印
以下のコード例で、ノード、リンク、および矢印を生成するために使用するスタイル・ルールを示します。
ノードへのリンクでの矢印としての装飾
/////////////
// A very simple node
node {
  class                  : ilog.views.sdm.graphic.IlvGeneralNode
  fillColor1             : pink;
  foreground             : gray;
}

////////////
// Link definition

link {
  class                  : ilog.views.sdm.graphic.IlvGeneralLink;
  oriented               : true;
  decorations[1]         : @=arrow; // see Subobject#arrow
  decorationPositions[1] : 1;
  decorationOptions[1]   : 'DECORATION_OVER|DECORATION_HALF_RETRACT_AT_END';
  arrowMode              : ARROW_DECORATION;
  label                  : @id;
  lineWidth              : 1.5;
  endCap                 : CAP_BUTT;
  foreground             : black;
}

Subobject#arrow {
  class                  : ilog.views.sdm.graphic.IlvGraphicFactories$Ellipse;
  IlvRect                : 0,0,10,10; // a circle
}

///////////////
// The vertical link inherits from "link { ... }" rule, and 
// overwrites some options

#link2 {
  decorations[1]         : @=arrow2; // see Subobject#arrow2
  decorationOptions[1]   : 'DECORATION_OVER|DECORATION_FULL_RETRACT_AT_END';
}

Subobject#arrow2 {
  class                  : ilog.views.sdm.graphic.IlvGraphicFactories$Marker;
  IlvRect                : 5,5,5,5;
  type                   : 2; // a diamond
}