IlvGeneralLink により、IlvGraphic オブジェクトをリンクの相対位置に配置できます。
装飾はリンクの上またはリンクの横 (デフォルト) に配置できます。
なお、
decorationPosition
値を入力する構文は配列です。
値のコンマ区切りリストとしてすべての値を同時に入力するか、配列エレメントを 1 つずつ入力できます。別の配列プロパティー
decorationOptions
は、装飾がどのように表示されるのかを変更します。
このプロパティーは、値のビット・セットであるため、以下のように垂直バー演算子 |
を使用して、複数のオプションを同時に指定できます。DECORATION_NOTHING
: デフォルト値 (ズーム可能、回転なし、アニメーションなし) を意味します。DECORATION_FIXED_SIZE
: これを設定すると、装飾はズームしません。DECORATION_ANIMATE
: これを設定すると、装飾はリンクに沿って移動します。 その速度は、プロパティーanimateSpeed
で定義します。DECORATION_ROTATE
: これを設定すると、装飾はリンク形状に従うように回転します。
オプション
DECORATION_ROTATE
を設定する場合は、垂直バー演算子 (|) を使用して以下のオプションのいずれかと組み合わせて、回転角度の動作を調整できます。DECORATION_PROPORTIONAL_ANGLE
: リンクの傾斜に比例して装飾を回転させます。 これはラベルには適さない可能性があります。リンクが 180 度回転されると、ラベルの装飾が上下逆になって読みにくくなる可能性があるためです。DECORATION_RIGHT_SIDE_UP_ANGLE
: 装飾の上下が正しい状態を保ちながら、装飾を特定の角度回転させます。 これはラベルで有用である可能性がありますが、矢印などの装飾には適さない可能性があります。
装飾をリンクの上に配置するには、オプション
DECORATION_OVER
を設定してから、
リンクの中央に対する装飾の相対位置を制御する追加オプションを設定します。DECORATION_ANCHOR_TOP
: 装飾をリンクの中央下にシフトします。DECORATION_ANCHOR_BOTTOM
: 装飾をリンクの中央上にシフトします。DECORATION_ANCHOR_LEFT
: 装飾をリンクの中央右にシフトします。DECORATION_ANCHOR_RIGHT
: 装飾をリンクの中央左にシフトします。
以下のようにオプションを混用できます。
DECORATION_ANCHOR_TOP|DECORATION_ANCHOR_LEFT
は、
装飾の左上隅をリンクの中央に配置します。デフォルトの動作では、装飾の中央をリンクの中央に配置します。
装飾のバウンディング・ボックスに対して X 値と Y 値を使用してオフセットを適用できます。以下の図に、3 つの装飾を示します。1 つはラベルで、残りの 2 つは同じリンク上のアイコンです。
リンクでの装飾
link { foreground : #55BEF3 ; lineWidth : 10 ; endCap : CAP_ROUND ; lineJoin : JOIN_ROUND ; borderWidth : 2 ; } link.top { decorations[0] : @#label ; decorationPositions : 0.9 ; } link.center { visible : false } link.bottom { decorations[0] : @#smiley ; decorations[1] : @#smiley ; decorationOptions[0] : DECORATION_OVER ; decorationOptions[1] : DECORATION_OVER|DECORATION_ANCHOR_TOP ; decorationPositions : 0.25,0.75 ; }
Subobject#label { class : 'ilog.views.sdm.graphic.IlvGraphicFactories$ZoomableLabel' ; label : "smile!" ; antialiasing : true ; leftMargin : 5 ; rightMargin : 5 ; topMargin : 5 ; bottomMargin : 5 ; foreground : white ; borderOn : true ; stroke : @=stroke ; strokePaint : @=borderPaint ; backgroundOn : true ; backgroundPaint : @=bgPaint ; } // border is cyan Subobject#borderPaint { class : ilog.views.sdm.graphic.IlvPaint ; color : cyan ; } // background is blue Subobject#bgPaint { class : ilog.views.sdm.graphic.IlvPaint ; color : blue ; } // stroke for the text Subobject#stroke { class : ilog.views.sdm.graphic.IlvBasicStroke ; lineWidth : 1 ; } // smiley icon Subobject#smiley { class : "ilog.views.sdm.graphic.IlvGraphicFactories$Icon" IlvRect : 0,0,12,12 ; imageLocation : file:smiley.gif ; }
IlvLabelInterface を実装している最初の装飾に迅速にアクセスする
label
という便利なプロパティーに着目してください。
装飾が見つからない場合は、現在の decorations 配列で使用可能な最初のスロットに単純な IlvZoomableLabel が作成されます。