2010-12-03-01-SVG と UML の話 - 8 - project-enigma

2010-12-03-01-SVG と UML の話 - 8

>> Site top >> weblog >> 月別アーカイブ >> 2010年12月のlog >> 2010-12-03-01-SVG と UML の話 - 8

最終更新日付:2013/12/31 07:35:45


SVG と UML の話 - 8

2010 年 12 月 03 日

煩雑な入力を楽にすることに血道をあげる。建設的な面倒臭がりといえば聞こえはいいが、骨折り損にはならないようにしないと。

前回は要素の位置を他要素との相対位置で指定するという点について書いた。今回は別の省力化について書いてみよう。

前回説明した相対位置指定は、position 指定において名前での参照をするというものだった。しかし、このツールが提供している描画要素の中には名前を持たないものもある。すぐに思いつく例はテキストラベルだ。これは UML のダイアグラム要素ではないが、普通に図面を書いていれば必要になるものなので用意されている。

さて、名前を持たないテキストラベルのような要素を複数並べたいとしよう。この場合、やはり値を個別に指定するしかないのだろうか。だとすれば、きれいに(縦か横に)並んだいくつかのラベルをまとめて移動させたい場合、1つずつ position を修正しなければならない。これは面倒な話だ。

こういう小さなストレスは、それ自体は大したことはなくても、積もり積もってそのツールを使うのを嫌にさせる。だから駆除する必要があるのだ。この問題では、C/C++ 言語で一般的に使用されるプリプロセッサの define ディレクティブのような方法を使用した。多分例を見た方が早いだろう。以下のようになる。

#define LABEL_XPOS  100
#define LABEL_YPOS  200
  
text
description:
1st text label.
position:$LABEL_XPOS $LABEL_YPOS
  
text
description:
2nd text label.
position:$LABEL_XPOS $LABEL_YPOS,50,+
  
text
description:
3rd text label.
position:$LABEL_XPOS $LABEL_YPOS,100,+

#define はシンボルを導入し、$に続けてそのシンボルを書くことでそのシンボルが展開される。これを利用することで複数の個所に設定する値を1個所で制御できるし、position に関して言えば計算式と組み合わせることでその利用価値は上がる。上の例では LABEL_YPOS というシンボルを計算式の中で使用し、3つのテキストラベルを 50 ずつズラしている。

今回は「記述の省力化」という観点から、前回の計算式に続いて #define によるシンボル定義を説明した。しかし、少しばかり急ぎ過ぎたようだ。次回からは、ツールの入出力から仕切り直して書いていくとしよう。

 

コメント

このページにコメントする

 

このページのタグ

Page tag : 開発

 

 


Copyright(C) 2005-2017 project-enigma.
Generated by CL-PREFAB.