2015-01-08-01-SVGのUMLツールを - 5
>> Site top >> weblog >> 月別アーカイブ >> 2015年01月のlog >> 2015-01-08-01-SVGのUMLツールを - 5
最終更新日付:2015/01/08 01:00:00
SVGのUMLツールを - 5
2015 年 01 月 08 日
色々考えているうちに良くわからなくなってきたので、具体的なイメージを掴みに行こう。
とりあえず、複合図形の定義を記述するイメージは以下のような感じだ‥‥‥というか、もう完全に Common Lisp でマクロをがっつり書く気になっているな。
(define-structure uml-class (class-name x y) (rectangle :x x :y y :align :center :valign :center :w (+ 20 (width-of :name)) :h (+ 20 (height-of :name))) (text class-name :key :name :x x :y y :align :center :valign :center))
まだまだタリナイけれども、ひとまずはこのあたりから始めるとしよう。define-structure は複合図形を定義し、第一パラメータのシンボルが指す名前に関連付ける。当然これはマクロだ。どんな展開になるのかはまだ問題にしない。それを問題にする頃には、上記のイメージなど見る影もなく変わっているだろうから。
それはさておき、続く(この例では)3要素のリストは、複合図形に与えるパラメータだ。ここではとりあえず、クラス名と描画する位置を指定するものとしてみた。これらのパラメータはそれより下のコードで使用できる。
それ以降にある rectangle とか text というのは、基本図形の描画指定だ。基本図形それぞれに対して様々な情報をキーワードパラメータとして与える感じになる。rectangle の中に登場する width-of や height-of というのは、同じ複合図形内の他の要素の情報を参照するものだ。これを可能にするために、text では :key パラメータで名前を与えている。
乱暴な説明になってしまうが、上記のサンプルは概ね以下のことをする。
- 座標 (x, y) を中心として、テキスト class-name の描画サイズ(幅と高さ)にそれぞれ +20 した矩形を描画する。
- 同じく座標 (x, y) を中心として、テキスト class-name を描画する。
‥‥‥ひとまず最初のイメージとしてはこんな感じだろうか。現時点でも、「あ、これじゃマズいな」と思うところは沢山ある。少しずつ現実的なものにしていこうか。
コメント
このページのタグ
Page tag : CL-SVG
Copyright(C) 2005-2021 project-enigma.
Generated by CL-PREFAB.